diff --git a/README.md b/README.md index 0cb55462..baaa7bbd 100644 --- a/README.md +++ b/README.md @@ -155,3 +155,10 @@ Prometheus scrapes. This is partly a philosophical issue, but practical issues a jitter; duplicate data points; or collected but not scraped data points. The control they provide over which labels get applied is limited, and the base label set spammy. And finally, configurations are not easily reused without copy-pasting and editing across jobs and instances. + +## TLS and basic authentication + +SQL Exporter supports TLS and basic authentication. This enables better control of the various HTTP endpoints. + +To use TLS and/or basic authentication, you need to pass a configuration file using the `--web.config.file` parameter. The format of the file is described +[in the exporter-toolkit repository](https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md). diff --git a/cmd/sql_exporter/main.go b/cmd/sql_exporter/main.go index 096c3ea9..924c834d 100644 --- a/cmd/sql_exporter/main.go +++ b/cmd/sql_exporter/main.go @@ -7,12 +7,17 @@ import ( "os" "runtime" + _ "net/http/pprof" + "github.com/free/sql_exporter" log "github.com/golang/glog" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/common/version" - _ "net/http/pprof" + + //"github.com/prometheus/common/log" + "github.com/prometheus/common/promlog" + "github.com/prometheus/exporter-toolkit/web" ) var ( @@ -20,6 +25,7 @@ var ( listenAddress = flag.String("web.listen-address", ":9399", "Address to listen on for web interface and telemetry.") metricsPath = flag.String("web.metrics-path", "/metrics", "Path under which to expose metrics.") configFile = flag.String("config.file", "sql_exporter.yml", "SQL Exporter configuration file name.") + webcfgFile = flag.String("web.config", "", "Path to config yaml file that can enable TLS or authentication.") ) func init() { @@ -64,8 +70,16 @@ func main() { // Expose exporter metrics separately, for debugging purposes. http.Handle("/sql_exporter_metrics", promhttp.Handler()) - log.Infof("Listening on %s", *listenAddress) - log.Fatal(http.ListenAndServe(*listenAddress, nil)) + promlogConfig := &promlog.Config{} + logger := promlog.New(promlogConfig) + log.Infoln("Listening on", *listenAddress) + server := &http.Server{Addr: *listenAddress} + if err := web.Listen(server, *webcfgFile, logger); err != nil { + log.Fatal(err) + } + + //log.Infof("Listening on %s", *listenAddress) + //log.Fatal(http.ListenAndServe(*listenAddress, nil)) } // LogFunc is an adapter to allow the use of any function as a promhttp.Logger. If f is a function, LogFunc(f) is a diff --git a/exporter.go b/exporter.go index 6db1f484..a86508ed 100644 --- a/exporter.go +++ b/exporter.go @@ -7,9 +7,9 @@ import ( "sync" "github.com/free/sql_exporter/config" - "github.com/golang/protobuf/proto" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" + "google.golang.org/protobuf/proto" ) var dsnOverride = flag.String("config.data-source-name", "", "Data source name to override the value in the configuration file with.") diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..b6d7699d --- /dev/null +++ b/go.mod @@ -0,0 +1,38 @@ +module github.com/free/sql_exporter + +go 1.17 + +require ( + github.com/ClickHouse/clickhouse-go v1.5.1 + github.com/denisenkom/go-mssqldb v0.11.0 + github.com/go-sql-driver/mysql v1.6.0 + github.com/golang/glog v1.0.0 + github.com/lib/pq v1.10.4 + github.com/prometheus/client_golang v1.11.0 + github.com/prometheus/client_model v0.2.0 + github.com/prometheus/common v0.32.1 + github.com/prometheus/exporter-toolkit v0.7.1 + google.golang.org/protobuf v1.27.1 + gopkg.in/yaml.v2 v2.4.0 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect + github.com/go-kit/log v0.1.0 // indirect + github.com/go-logfmt/logfmt v0.5.0 // indirect + github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect + github.com/golang/protobuf v1.5.0 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/procfs v0.6.0 // indirect + golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect + golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect + golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c // indirect + golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect + golang.org/x/text v0.3.6 // indirect + google.golang.org/appengine v1.6.6 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..798a4049 --- /dev/null +++ b/go.sum @@ -0,0 +1,503 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ClickHouse/clickhouse-go v1.5.1 h1:I8zVFZTz80crCs0FFEBJooIxsPcV0xfthzK1YrkpJTc= +github.com/ClickHouse/clickhouse-go v1.5.1/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk= +github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= +github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.11.0 h1:9rHa233rhdOyrz2GcP9NM+gi2psgJZ4GWDpL/7ND8HI= +github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= +github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/exporter-toolkit v0.7.1 h1:c6RXaK8xBVercEeUQ4tRNL8UGWzDHfvj9dseo1FcK1Y= +github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/metric.go b/metric.go index fb5856c4..d63f30f6 100644 --- a/metric.go +++ b/metric.go @@ -6,9 +6,9 @@ import ( "github.com/free/sql_exporter/config" "github.com/free/sql_exporter/errors" - "github.com/golang/protobuf/proto" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" + "google.golang.org/protobuf/proto" ) // MetricDesc is a descriptor for a family of metrics, sharing the same name, help, labes, type. diff --git a/target.go b/target.go index 5af92dc5..de66887d 100644 --- a/target.go +++ b/target.go @@ -11,9 +11,9 @@ import ( "github.com/free/sql_exporter/config" "github.com/free/sql_exporter/errors" - "github.com/golang/protobuf/proto" "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" + "google.golang.org/protobuf/proto" ) const ( diff --git a/vendor/github.com/ClickHouse/clickhouse-go/CONTRIBUTING.md b/vendor/github.com/ClickHouse/clickhouse-go/CONTRIBUTING.md deleted file mode 100644 index d6b729c0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/CONTRIBUTING.md +++ /dev/null @@ -1,10 +0,0 @@ -# Contributing notes - -## Local setup - -The easiest way to run tests is to use Docker Compose: - -``` -docker-compose up -make -``` diff --git a/vendor/github.com/ClickHouse/clickhouse-go/LICENSE b/vendor/github.com/ClickHouse/clickhouse-go/LICENSE deleted file mode 100644 index ef5d388d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Kirill Shvakov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/ClickHouse/clickhouse-go/Makefile b/vendor/github.com/ClickHouse/clickhouse-go/Makefile deleted file mode 100644 index 813b3196..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test: - go install -race -v - go test -i -v - go test -race -timeout 30s -v . - -coverage: - go test -coverprofile=coverage.out -v . - go tool cover -html=coverage.out diff --git a/vendor/github.com/ClickHouse/clickhouse-go/README.md b/vendor/github.com/ClickHouse/clickhouse-go/README.md deleted file mode 100644 index c22d4c57..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/README.md +++ /dev/null @@ -1,189 +0,0 @@ -# ClickHouse [![Build Status](https://travis-ci.org/kshvakov/clickhouse.svg?branch=master)](https://travis-ci.org/kshvakov/clickhouse) [![Go Report Card](https://goreportcard.com/badge/github.com/ClickHouse/clickhouse-go)](https://goreportcard.com/report/github.com/ClickHouse/clickhouse-go) [![codecov](https://codecov.io/gh/kshvakov/clickhouse/branch/master/graph/badge.svg)](https://codecov.io/gh/kshvakov/clickhouse) - -Golang SQL database driver for [Yandex ClickHouse](https://clickhouse.yandex/) - -## Key features - -* Uses native ClickHouse tcp client-server protocol -* Compatibility with `database/sql` -* Round Robin load-balancing -* Bulk write support : `begin->prepare->(in loop exec)->commit` -* LZ4 compression support (default to use pure go lz4, switch to use cgo lz4 by turn clz4 build tags on) - -## DSN - -* username/password - auth credentials -* database - select the current default database -* read_timeout/write_timeout - timeout in second -* no_delay - disable/enable the Nagle Algorithm for tcp socket (default is 'true' - disable) -* alt_hosts - comma separated list of single address host for load-balancing -* connection_open_strategy - random/in_order (default random). - * random - choose random server from set - * in_order - first live server is choosen in specified order -* block_size - maximum rows in block (default is 1000000). If the rows are larger then the data will be split into several blocks to send them to the server -* pool size - maximum amount of preallocated byte chunks used in queries (default is 100). Decrease this if you experience memory problems at the expense of more GC pressure and vice versa. -* debug - enable debug output (boolean value) - -SSL/TLS parameters: - -* secure - establish secure connection (default is false) -* skip_verify - skip certificate verification (default is false) -* tls_config - name of a TLS config with client certificates, registered using `clickhouse.RegisterTLSConfig()`; implies secure to be true, unless explicitly specified - -example: -``` -tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000,host3:9000 -``` - -## Supported data types - -* UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64 -* Float32, Float64 -* String -* FixedString(N) -* Date -* DateTime -* IPv4 -* IPv6 -* Enum -* UUID -* Nullable(T) -* [Array(T) (one-dimensional)](https://clickhouse.yandex/reference_en.html#Array(T)) [godoc](https://godoc.org/github.com/ClickHouse/clickhouse-go#Array) - -## TODO - -* Support other compression methods(zstd ...) - -## Install -``` -go get -u github.com/ClickHouse/clickhouse-go -``` - -## Example -```go -package main - -import ( - "database/sql" - "fmt" - "log" - "time" - - "github.com/ClickHouse/clickhouse-go" -) - -func main() { - connect, err := sql.Open("clickhouse", "tcp://127.0.0.1:9000?debug=true") - if err != nil { - log.Fatal(err) - } - if err := connect.Ping(); err != nil { - if exception, ok := err.(*clickhouse.Exception); ok { - fmt.Printf("[%d] %s \n%s\n", exception.Code, exception.Message, exception.StackTrace) - } else { - fmt.Println(err) - } - return - } - - _, err = connect.Exec(` - CREATE TABLE IF NOT EXISTS example ( - country_code FixedString(2), - os_id UInt8, - browser_id UInt8, - categories Array(Int16), - action_day Date, - action_time DateTime - ) engine=Memory - `) - - if err != nil { - log.Fatal(err) - } - var ( - tx, _ = connect.Begin() - stmt, _ = tx.Prepare("INSERT INTO example (country_code, os_id, browser_id, categories, action_day, action_time) VALUES (?, ?, ?, ?, ?, ?)") - ) - defer stmt.Close() - - for i := 0; i < 100; i++ { - if _, err := stmt.Exec( - "RU", - 10+i, - 100+i, - clickhouse.Array([]int16{1, 2, 3}), - time.Now(), - time.Now(), - ); err != nil { - log.Fatal(err) - } - } - - if err := tx.Commit(); err != nil { - log.Fatal(err) - } - - rows, err := connect.Query("SELECT country_code, os_id, browser_id, categories, action_day, action_time FROM example") - if err != nil { - log.Fatal(err) - } - defer rows.Close() - - for rows.Next() { - var ( - country string - os, browser uint8 - categories []int16 - actionDay, actionTime time.Time - ) - if err := rows.Scan(&country, &os, &browser, &categories, &actionDay, &actionTime); err != nil { - log.Fatal(err) - } - log.Printf("country: %s, os: %d, browser: %d, categories: %v, action_day: %s, action_time: %s", country, os, browser, categories, actionDay, actionTime) - } - - if err := rows.Err(); err != nil { - log.Fatal(err) - } - - if _, err := connect.Exec("DROP TABLE example"); err != nil { - log.Fatal(err) - } -} -``` - -Use [sqlx](https://github.com/jmoiron/sqlx) - -```go -package main - -import ( - "log" - "time" - - "github.com/jmoiron/sqlx" - _ "github.com/ClickHouse/clickhouse-go" -) - -func main() { - connect, err := sqlx.Open("clickhouse", "tcp://127.0.0.1:9000?debug=true") - if err != nil { - log.Fatal(err) - } - var items []struct { - CountryCode string `db:"country_code"` - OsID uint8 `db:"os_id"` - BrowserID uint8 `db:"browser_id"` - Categories []int16 `db:"categories"` - ActionTime time.Time `db:"action_time"` - } - - if err := connect.Select(&items, "SELECT country_code, os_id, browser_id, categories, action_time FROM example"); err != nil { - log.Fatal(err) - } - - for _, item := range items { - log.Printf("country: %s, os: %d, browser: %d, categories: %v, action_time: %s", item.CountryCode, item.OsID, item.BrowserID, item.Categories, item.ActionTime) - } -} -``` diff --git a/vendor/github.com/ClickHouse/clickhouse-go/array.go b/vendor/github.com/ClickHouse/clickhouse-go/array.go deleted file mode 100644 index 997b8ab6..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/array.go +++ /dev/null @@ -1,21 +0,0 @@ -package clickhouse - -import ( - "time" -) - -func Array(v interface{}) interface{} { - return v -} - -func ArrayFixedString(len int, v interface{}) interface{} { - return v -} - -func ArrayDate(v []time.Time) interface{} { - return v -} - -func ArrayDateTime(v []time.Time) interface{} { - return v -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/bootstrap.go b/vendor/github.com/ClickHouse/clickhouse-go/bootstrap.go deleted file mode 100644 index 4354a4bd..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/bootstrap.go +++ /dev/null @@ -1,247 +0,0 @@ -package clickhouse - -import ( - "bufio" - "database/sql" - "database/sql/driver" - "fmt" - "io" - "log" - "net/url" - "os" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/leakypool" - - "github.com/ClickHouse/clickhouse-go/lib/binary" - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -const ( - // DefaultDatabase when connecting to ClickHouse - DefaultDatabase = "default" - // DefaultUsername when connecting to ClickHouse - DefaultUsername = "default" - // DefaultConnTimeout when connecting to ClickHouse - DefaultConnTimeout = 5 * time.Second - // DefaultReadTimeout when reading query results - DefaultReadTimeout = time.Minute - // DefaultWriteTimeout when sending queries - DefaultWriteTimeout = time.Minute -) - -var ( - unixtime int64 - logOutput io.Writer = os.Stdout - hostname, _ = os.Hostname() - poolInit sync.Once -) - -func init() { - sql.Register("clickhouse", &bootstrap{}) - go func() { - for tick := time.Tick(time.Second); ; { - select { - case <-tick: - atomic.AddInt64(&unixtime, int64(time.Second)) - } - } - }() -} - -func now() time.Time { - return time.Unix(atomic.LoadInt64(&unixtime), 0) -} - -type bootstrap struct{} - -func (d *bootstrap) Open(dsn string) (driver.Conn, error) { - return Open(dsn) -} - -// SetLogOutput allows to change output of the default logger -func SetLogOutput(output io.Writer) { - logOutput = output -} - -// Open the connection -func Open(dsn string) (driver.Conn, error) { - return open(dsn) -} - -func open(dsn string) (*clickhouse, error) { - url, err := url.Parse(dsn) - if err != nil { - return nil, err - } - var ( - hosts = []string{url.Host} - query = url.Query() - secure = false - skipVerify = false - tlsConfigName = query.Get("tls_config") - noDelay = true - compress = false - database = query.Get("database") - username = query.Get("username") - password = query.Get("password") - blockSize = 1000000 - connTimeout = DefaultConnTimeout - readTimeout = DefaultReadTimeout - writeTimeout = DefaultWriteTimeout - connOpenStrategy = connOpenRandom - poolSize = 100 - ) - if len(database) == 0 { - database = DefaultDatabase - } - if len(username) == 0 { - username = DefaultUsername - } - if v, err := strconv.ParseBool(query.Get("no_delay")); err == nil { - noDelay = v - } - tlsConfig := getTLSConfigClone(tlsConfigName) - if tlsConfigName != "" && tlsConfig == nil { - return nil, fmt.Errorf("invalid tls_config - no config registered under name %s", tlsConfigName) - } - secure = tlsConfig != nil - if v, err := strconv.ParseBool(query.Get("secure")); err == nil { - secure = v - } - if v, err := strconv.ParseBool(query.Get("skip_verify")); err == nil { - skipVerify = v - } - if duration, err := strconv.ParseFloat(query.Get("timeout"), 64); err == nil { - connTimeout = time.Duration(duration * float64(time.Second)) - } - if duration, err := strconv.ParseFloat(query.Get("read_timeout"), 64); err == nil { - readTimeout = time.Duration(duration * float64(time.Second)) - } - if duration, err := strconv.ParseFloat(query.Get("write_timeout"), 64); err == nil { - writeTimeout = time.Duration(duration * float64(time.Second)) - } - if size, err := strconv.ParseInt(query.Get("block_size"), 10, 64); err == nil { - blockSize = int(size) - } - if size, err := strconv.ParseInt(query.Get("pool_size"), 10, 64); err == nil { - poolSize = int(size) - } - poolInit.Do(func() { - leakypool.InitBytePool(poolSize) - }) - if altHosts := strings.Split(query.Get("alt_hosts"), ","); len(altHosts) != 0 { - for _, host := range altHosts { - if len(host) != 0 { - hosts = append(hosts, host) - } - } - } - switch query.Get("connection_open_strategy") { - case "random": - connOpenStrategy = connOpenRandom - case "in_order": - connOpenStrategy = connOpenInOrder - } - - settings, err := makeQuerySettings(query) - if err != nil { - return nil, err - } - - if v, err := strconv.ParseBool(query.Get("compress")); err == nil { - compress = v - } - - var ( - ch = clickhouse{ - logf: func(string, ...interface{}) {}, - settings: settings, - compress: compress, - blockSize: blockSize, - ServerInfo: data.ServerInfo{ - Timezone: time.Local, - }, - } - logger = log.New(logOutput, "[clickhouse]", 0) - ) - if debug, err := strconv.ParseBool(url.Query().Get("debug")); err == nil && debug { - ch.logf = logger.Printf - } - ch.logf("host(s)=%s, database=%s, username=%s", - strings.Join(hosts, ", "), - database, - username, - ) - options := connOptions{ - secure: secure, - tlsConfig: tlsConfig, - skipVerify: skipVerify, - hosts: hosts, - connTimeout: connTimeout, - readTimeout: readTimeout, - writeTimeout: writeTimeout, - noDelay: noDelay, - openStrategy: connOpenStrategy, - logf: ch.logf, - } - if ch.conn, err = dial(options); err != nil { - return nil, err - } - logger.SetPrefix(fmt.Sprintf("[clickhouse][connect=%d]", ch.conn.ident)) - ch.buffer = bufio.NewWriter(ch.conn) - - ch.decoder = binary.NewDecoder(ch.conn) - ch.encoder = binary.NewEncoder(ch.buffer) - - if err := ch.hello(database, username, password); err != nil { - return nil, err - } - return &ch, nil -} - -func (ch *clickhouse) hello(database, username, password string) error { - ch.logf("[hello] -> %s", ch.ClientInfo) - { - ch.encoder.Uvarint(protocol.ClientHello) - if err := ch.ClientInfo.Write(ch.encoder); err != nil { - return err - } - { - ch.encoder.String(database) - ch.encoder.String(username) - ch.encoder.String(password) - } - if err := ch.encoder.Flush(); err != nil { - return err - } - - } - { - packet, err := ch.decoder.Uvarint() - if err != nil { - return err - } - switch packet { - case protocol.ServerException: - return ch.exception() - case protocol.ServerHello: - if err := ch.ServerInfo.Read(ch.decoder); err != nil { - return err - } - case protocol.ServerEndOfStream: - ch.logf("[bootstrap] <- end of stream") - return nil - default: - ch.conn.Close() - return fmt.Errorf("[hello] unexpected packet [%d] from server", packet) - } - } - ch.logf("[hello] <- %s", ch.ServerInfo) - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse.go deleted file mode 100644 index ac3f8d8d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse.go +++ /dev/null @@ -1,320 +0,0 @@ -package clickhouse - -import ( - "bufio" - "context" - "database/sql" - "database/sql/driver" - "errors" - "fmt" - "net" - "reflect" - "regexp" - "sync" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" - "github.com/ClickHouse/clickhouse-go/lib/column" - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" - "github.com/ClickHouse/clickhouse-go/lib/types" -) - -type ( - Date = types.Date - DateTime = types.DateTime - UUID = types.UUID -) - -var ( - ErrInsertInNotBatchMode = errors.New("insert statement supported only in the batch mode (use begin/commit)") - ErrLimitDataRequestInTx = errors.New("data request has already been prepared in transaction") -) - -var ( - splitInsertRe = regexp.MustCompile(`(?i)\sVALUES\s*\(`) -) - -type logger func(format string, v ...interface{}) - -type clickhouse struct { - sync.Mutex - data.ServerInfo - data.ClientInfo - logf logger - conn *connect - block *data.Block - buffer *bufio.Writer - decoder *binary.Decoder - encoder *binary.Encoder - settings *querySettings - compress bool - blockSize int - inTransaction bool -} - -func (ch *clickhouse) Prepare(query string) (driver.Stmt, error) { - return ch.prepareContext(context.Background(), query) -} - -func (ch *clickhouse) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { - return ch.prepareContext(ctx, query) -} - -func (ch *clickhouse) prepareContext(ctx context.Context, query string) (driver.Stmt, error) { - ch.logf("[prepare] %s", query) - switch { - case ch.conn.closed: - return nil, driver.ErrBadConn - case ch.block != nil: - return nil, ErrLimitDataRequestInTx - case isInsert(query): - if !ch.inTransaction { - return nil, ErrInsertInNotBatchMode - } - return ch.insert(query) - } - return &stmt{ - ch: ch, - query: query, - numInput: numInput(query), - }, nil -} - -func (ch *clickhouse) insert(query string) (_ driver.Stmt, err error) { - if err := ch.sendQuery(splitInsertRe.Split(query, -1)[0] + " VALUES "); err != nil { - return nil, err - } - if ch.block, err = ch.readMeta(); err != nil { - return nil, err - } - return &stmt{ - ch: ch, - isInsert: true, - }, nil -} - -func (ch *clickhouse) Begin() (driver.Tx, error) { - return ch.beginTx(context.Background(), txOptions{}) -} - -func (ch *clickhouse) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { - return ch.beginTx(ctx, txOptions{ - Isolation: int(opts.Isolation), - ReadOnly: opts.ReadOnly, - }) -} - -type txOptions struct { - Isolation int - ReadOnly bool -} - -func (ch *clickhouse) beginTx(ctx context.Context, opts txOptions) (*clickhouse, error) { - ch.logf("[begin] tx=%t, data=%t", ch.inTransaction, ch.block != nil) - switch { - case ch.inTransaction: - return nil, sql.ErrTxDone - case ch.conn.closed: - return nil, driver.ErrBadConn - } - if finish := ch.watchCancel(ctx); finish != nil { - defer finish() - } - ch.block = nil - ch.inTransaction = true - return ch, nil -} - -func (ch *clickhouse) Commit() error { - ch.logf("[commit] tx=%t, data=%t", ch.inTransaction, ch.block != nil) - defer func() { - if ch.block != nil { - ch.block.Reset() - ch.block = nil - } - ch.inTransaction = false - }() - switch { - case !ch.inTransaction: - return sql.ErrTxDone - case ch.conn.closed: - return driver.ErrBadConn - } - if ch.block != nil { - if err := ch.writeBlock(ch.block); err != nil { - return err - } - // Send empty block as marker of end of data. - if err := ch.writeBlock(&data.Block{}); err != nil { - return err - } - if err := ch.encoder.Flush(); err != nil { - return err - } - return ch.process() - } - return nil -} - -func (ch *clickhouse) Rollback() error { - ch.logf("[rollback] tx=%t, data=%t", ch.inTransaction, ch.block != nil) - if !ch.inTransaction { - return sql.ErrTxDone - } - if ch.block != nil { - ch.block.Reset() - } - ch.block = nil - ch.buffer = nil - ch.inTransaction = false - return ch.conn.Close() -} - -func (ch *clickhouse) CheckNamedValue(nv *driver.NamedValue) error { - switch nv.Value.(type) { - case column.IP, column.UUID: - return nil - case nil, []byte, int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, float64, string, time.Time: - return nil - } - switch v := nv.Value.(type) { - case - []int, []int8, []int16, []int32, []int64, - []uint, []uint8, []uint16, []uint32, []uint64, - []float32, []float64, - []string: - return nil - case net.IP, *net.IP: - return nil - case driver.Valuer: - value, err := v.Value() - if err != nil { - return err - } - nv.Value = value - default: - switch value := reflect.ValueOf(nv.Value); value.Kind() { - case reflect.Slice: - return nil - case reflect.Bool: - nv.Value = uint8(0) - if value.Bool() { - nv.Value = uint8(1) - } - case reflect.Int8: - nv.Value = int8(value.Int()) - case reflect.Int16: - nv.Value = int16(value.Int()) - case reflect.Int32: - nv.Value = int32(value.Int()) - case reflect.Int64: - nv.Value = value.Int() - case reflect.Uint8: - nv.Value = uint8(value.Uint()) - case reflect.Uint16: - nv.Value = uint16(value.Uint()) - case reflect.Uint32: - nv.Value = uint32(value.Uint()) - case reflect.Uint64: - nv.Value = uint64(value.Uint()) - case reflect.Float32: - nv.Value = float32(value.Float()) - case reflect.Float64: - nv.Value = float64(value.Float()) - case reflect.String: - nv.Value = value.String() - } - } - return nil -} - -func (ch *clickhouse) Close() error { - ch.block = nil - return ch.conn.Close() -} - -func (ch *clickhouse) process() error { - packet, err := ch.decoder.Uvarint() - if err != nil { - return err - } - for { - switch packet { - case protocol.ServerPong: - ch.logf("[process] <- pong") - return nil - case protocol.ServerException: - ch.logf("[process] <- exception") - return ch.exception() - case protocol.ServerProgress: - progress, err := ch.progress() - if err != nil { - return err - } - ch.logf("[process] <- progress: rows=%d, bytes=%d, total rows=%d", - progress.rows, - progress.bytes, - progress.totalRows, - ) - case protocol.ServerProfileInfo: - profileInfo, err := ch.profileInfo() - if err != nil { - return err - } - ch.logf("[process] <- profiling: rows=%d, bytes=%d, blocks=%d", profileInfo.rows, profileInfo.bytes, profileInfo.blocks) - case protocol.ServerData: - block, err := ch.readBlock() - if err != nil { - return err - } - ch.logf("[process] <- data: packet=%d, columns=%d, rows=%d", packet, block.NumColumns, block.NumRows) - case protocol.ServerEndOfStream: - ch.logf("[process] <- end of stream") - return nil - default: - ch.conn.Close() - return fmt.Errorf("[process] unexpected packet [%d] from server", packet) - } - if packet, err = ch.decoder.Uvarint(); err != nil { - return err - } - } -} - -func (ch *clickhouse) cancel() error { - ch.logf("[cancel request]") - // even if we fail to write the cancel, we still need to close - err := ch.encoder.Uvarint(protocol.ClientCancel) - if err == nil { - err = ch.encoder.Flush() - } - // return the close error if there was one, otherwise return the write error - if cerr := ch.conn.Close(); cerr != nil { - return cerr - } - return err -} - -func (ch *clickhouse) watchCancel(ctx context.Context) func() { - if done := ctx.Done(); done != nil { - finished := make(chan struct{}) - go func() { - select { - case <-done: - ch.cancel() - finished <- struct{}{} - ch.logf("[cancel] <- done") - case <-finished: - ch.logf("[cancel] <- finished") - } - }() - return func() { - select { - case <-finished: - case finished <- struct{}{}: - } - } - } - return func() {} -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_exception.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_exception.go deleted file mode 100644 index 3d8d20fd..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_exception.go +++ /dev/null @@ -1,47 +0,0 @@ -package clickhouse - -import ( - "fmt" - "strings" -) - -type Exception struct { - Code int32 - Name string - Message string - StackTrace string - nested error -} - -func (e *Exception) Error() string { - return fmt.Sprintf("code: %d, message: %s", e.Code, e.Message) -} - -func (ch *clickhouse) exception() error { - defer ch.conn.Close() - var ( - e Exception - err error - hasNested bool - ) - if e.Code, err = ch.decoder.Int32(); err != nil { - return err - } - if e.Name, err = ch.decoder.String(); err != nil { - return err - } - if e.Message, err = ch.decoder.String(); err != nil { - return err - } - e.Message = strings.TrimSpace(strings.TrimPrefix(e.Message, e.Name+":")) - if e.StackTrace, err = ch.decoder.String(); err != nil { - return err - } - if hasNested, err = ch.decoder.Bool(); err != nil { - return err - } - if hasNested { - e.nested = ch.exception() - } - return &e -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_ping.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_ping.go deleted file mode 100644 index 9c6b50a2..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_ping.go +++ /dev/null @@ -1,28 +0,0 @@ -package clickhouse - -import ( - "context" - "database/sql/driver" - - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -func (ch *clickhouse) Ping(ctx context.Context) error { - return ch.ping(ctx) -} - -func (ch *clickhouse) ping(ctx context.Context) error { - if ch.conn.closed { - return driver.ErrBadConn - } - ch.logf("-> ping") - finish := ch.watchCancel(ctx) - defer finish() - if err := ch.encoder.Uvarint(protocol.ClientPing); err != nil { - return err - } - if err := ch.encoder.Flush(); err != nil { - return err - } - return ch.process() -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_profile_info.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_profile_info.go deleted file mode 100644 index 97bc9c79..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_profile_info.go +++ /dev/null @@ -1,37 +0,0 @@ -package clickhouse - -type profileInfo struct { - rows uint64 - bytes uint64 - blocks uint64 - appliedLimit bool - rowsBeforeLimit uint64 - calculatedRowsBeforeLimit bool -} - -func (ch *clickhouse) profileInfo() (*profileInfo, error) { - var ( - p profileInfo - err error - ) - if p.rows, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - if p.blocks, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - if p.bytes, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - - if p.appliedLimit, err = ch.decoder.Bool(); err != nil { - return nil, err - } - if p.rowsBeforeLimit, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - if p.calculatedRowsBeforeLimit, err = ch.decoder.Bool(); err != nil { - return nil, err - } - return &p, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_progress.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_progress.go deleted file mode 100644 index 2ccc5fd9..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_progress.go +++ /dev/null @@ -1,26 +0,0 @@ -package clickhouse - -type progress struct { - rows uint64 - bytes uint64 - totalRows uint64 -} - -func (ch *clickhouse) progress() (*progress, error) { - var ( - p progress - err error - ) - if p.rows, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - if p.bytes, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - - if p.totalRows, err = ch.decoder.Uvarint(); err != nil { - return nil, err - } - - return &p, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_block.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_block.go deleted file mode 100644 index e9a3384d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_block.go +++ /dev/null @@ -1,19 +0,0 @@ -package clickhouse - -import ( - "github.com/ClickHouse/clickhouse-go/lib/data" -) - -func (ch *clickhouse) readBlock() (*data.Block, error) { - if _, err := ch.decoder.String(); err != nil { // temporary table - return nil, err - } - - ch.decoder.SelectCompress(ch.compress) - var block data.Block - if err := block.Read(&ch.ServerInfo, ch.decoder); err != nil { - return nil, err - } - ch.decoder.SelectCompress(false) - return &block, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_meta.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_meta.go deleted file mode 100644 index 83e18dc1..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_read_meta.go +++ /dev/null @@ -1,53 +0,0 @@ -package clickhouse - -import ( - "fmt" - - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -func (ch *clickhouse) readMeta() (*data.Block, error) { - for { - packet, err := ch.decoder.Uvarint() - if err != nil { - return nil, err - } - - switch packet { - case protocol.ServerException: - ch.logf("[read meta] <- exception") - return nil, ch.exception() - case protocol.ServerProgress: - progress, err := ch.progress() - if err != nil { - return nil, err - } - ch.logf("[read meta] <- progress: rows=%d, bytes=%d, total rows=%d", - progress.rows, - progress.bytes, - progress.totalRows, - ) - case protocol.ServerProfileInfo: - profileInfo, err := ch.profileInfo() - if err != nil { - return nil, err - } - ch.logf("[read meta] <- profiling: rows=%d, bytes=%d, blocks=%d", profileInfo.rows, profileInfo.bytes, profileInfo.blocks) - case protocol.ServerData: - block, err := ch.readBlock() - if err != nil { - return nil, err - } - ch.logf("[read meta] <- data: packet=%d, columns=%d, rows=%d", packet, block.NumColumns, block.NumRows) - return block, nil - case protocol.ServerEndOfStream: - _, err := ch.readBlock() - ch.logf("[process] <- end of stream") - return nil, err - default: - ch.conn.Close() - return nil, fmt.Errorf("[read meta] unexpected packet [%d] from server", packet) - } - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_send_query.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_send_query.go deleted file mode 100644 index 201330b0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_send_query.go +++ /dev/null @@ -1,60 +0,0 @@ -package clickhouse - -import ( - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -func (ch *clickhouse) sendQuery(query string) error { - ch.logf("[send query] %s", query) - if err := ch.encoder.Uvarint(protocol.ClientQuery); err != nil { - return err - } - if err := ch.encoder.String(""); err != nil { - return err - } - { // client info - ch.encoder.Uvarint(1) - ch.encoder.String("") - ch.encoder.String("") //initial_query_id - ch.encoder.String("[::ffff:127.0.0.1]:0") - ch.encoder.Uvarint(1) // iface type TCP - ch.encoder.String(hostname) - ch.encoder.String(hostname) - } - if err := ch.ClientInfo.Write(ch.encoder); err != nil { - return err - } - if ch.ServerInfo.Revision >= protocol.DBMS_MIN_REVISION_WITH_QUOTA_KEY_IN_CLIENT_INFO { - ch.encoder.String("") - } - - // the settings are written as list of contiguous name-value pairs, finished with empty name - if !ch.settings.IsEmpty() { - ch.logf("[query settings] %s", ch.settings.settingsStr) - if err := ch.settings.Serialize(ch.encoder); err != nil { - return err - } - } - // empty string is a marker of the end of the settings - if err := ch.encoder.String(""); err != nil { - return err - } - if err := ch.encoder.Uvarint(protocol.StateComplete); err != nil { - return err - } - compress := protocol.CompressDisable - if ch.compress { - compress = protocol.CompressEnable - } - if err := ch.encoder.Uvarint(compress); err != nil { - return err - } - if err := ch.encoder.String(query); err != nil { - return err - } - if err := ch.writeBlock(&data.Block{}); err != nil { - return err - } - return ch.encoder.Flush() -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_write_block.go b/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_write_block.go deleted file mode 100644 index f93ad96d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/clickhouse_write_block.go +++ /dev/null @@ -1,40 +0,0 @@ -package clickhouse - -import ( - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -func (ch *clickhouse) writeBlock(block *data.Block) error { - ch.Lock() - defer ch.Unlock() - if err := ch.encoder.Uvarint(protocol.ClientData); err != nil { - return err - } - - if err := ch.encoder.String(""); err != nil { // temporary table - return err - } - - // implement CityHash v 1.0.2 and add LZ4 compression - /* - From Alexey Milovidov - Насколько я помню, сжимаются блоки с данными Native формата, а всё остальное (всякие номера пакетов и т. п.) передаётся без сжатия. - - Сжатые данные устроены так. Они представляют собой набор сжатых фреймов. - Каждый фрейм имеет следующий вид: - чексумма (16 байт), - идентификатор алгоритма сжатия (1 байт), - размер сжатых данных (4 байта, little endian, размер не включает в себя чексумму, но включает в себя остальные 9 байт заголовка), - размер несжатых данных (4 байта, little endian), затем сжатые данные. - Идентификатор алгоритма: 0x82 - lz4, 0x90 - zstd. - Чексумма - CityHash128 из CityHash версии 1.0.2, вычисленный от сжатых данных с учётом 9 байт заголовка. - - См. CompressedReadBufferBase, CompressedWriteBuffer, - utils/compressor, TCPHandler. - */ - ch.encoder.SelectCompress(ch.compress) - err := block.Write(&ch.ServerInfo, ch.encoder) - ch.encoder.SelectCompress(false) - return err -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/connect.go b/vendor/github.com/ClickHouse/clickhouse-go/connect.go deleted file mode 100644 index a6bf3eec..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/connect.go +++ /dev/null @@ -1,180 +0,0 @@ -package clickhouse - -import ( - "bufio" - "crypto/tls" - "database/sql/driver" - "net" - "sync/atomic" - "time" -) - -var tick int32 - -type openStrategy int8 - -func (s openStrategy) String() string { - switch s { - case connOpenInOrder: - return "in_order" - } - return "random" -} - -const ( - connOpenRandom openStrategy = iota + 1 - connOpenInOrder -) - -type connOptions struct { - secure, skipVerify bool - tlsConfig *tls.Config - hosts []string - connTimeout, readTimeout, writeTimeout time.Duration - noDelay bool - openStrategy openStrategy - logf func(string, ...interface{}) -} - -func dial(options connOptions) (*connect, error) { - var ( - err error - abs = func(v int) int { - if v < 0 { - return -1 * v - } - return v - } - conn net.Conn - ident = abs(int(atomic.AddInt32(&tick, 1))) - ) - tlsConfig := options.tlsConfig - if options.secure { - if tlsConfig == nil { - tlsConfig = &tls.Config{} - } - tlsConfig.InsecureSkipVerify = options.skipVerify - } - for i := range options.hosts { - var num int - switch options.openStrategy { - case connOpenInOrder: - num = i - case connOpenRandom: - num = (ident + i) % len(options.hosts) - } - switch { - case options.secure: - conn, err = tls.DialWithDialer( - &net.Dialer{ - Timeout: options.connTimeout, - }, - "tcp", - options.hosts[num], - tlsConfig, - ) - default: - conn, err = net.DialTimeout("tcp", options.hosts[num], options.connTimeout) - } - if err == nil { - options.logf( - "[dial] secure=%t, skip_verify=%t, strategy=%s, ident=%d, server=%d -> %s", - options.secure, - options.skipVerify, - options.openStrategy, - ident, - num, - conn.RemoteAddr(), - ) - if tcp, ok := conn.(*net.TCPConn); ok { - err = tcp.SetNoDelay(options.noDelay) // Disable or enable the Nagle Algorithm for this tcp socket - if err != nil { - return nil, err - } - } - return &connect{ - Conn: conn, - logf: options.logf, - ident: ident, - buffer: bufio.NewReader(conn), - readTimeout: options.readTimeout, - writeTimeout: options.writeTimeout, - }, nil - } else { - options.logf( - "[dial err] secure=%t, skip_verify=%t, strategy=%s, ident=%d, addr=%s\n%#v", - options.secure, - options.skipVerify, - options.openStrategy, - ident, - options.hosts[num], - err, - ) - } - } - return nil, err -} - -type connect struct { - net.Conn - logf func(string, ...interface{}) - ident int - buffer *bufio.Reader - closed bool - readTimeout time.Duration - writeTimeout time.Duration - lastReadDeadlineTime time.Time - lastWriteDeadlineTime time.Time -} - -func (conn *connect) Read(b []byte) (int, error) { - var ( - n int - err error - total int - dstLen = len(b) - ) - if currentTime := now(); conn.readTimeout != 0 && currentTime.Sub(conn.lastReadDeadlineTime) > (conn.readTimeout>>2) { - conn.SetReadDeadline(time.Now().Add(conn.readTimeout)) - conn.lastReadDeadlineTime = currentTime - } - for total < dstLen { - if n, err = conn.buffer.Read(b[total:]); err != nil { - conn.logf("[connect] read error: %v", err) - conn.Close() - return n, driver.ErrBadConn - } - total += n - } - return total, nil -} - -func (conn *connect) Write(b []byte) (int, error) { - var ( - n int - err error - total int - srcLen = len(b) - ) - if currentTime := now(); conn.writeTimeout != 0 && currentTime.Sub(conn.lastWriteDeadlineTime) > (conn.writeTimeout>>2) { - conn.SetWriteDeadline(time.Now().Add(conn.writeTimeout)) - conn.lastWriteDeadlineTime = currentTime - } - for total < srcLen { - if n, err = conn.Conn.Write(b[total:]); err != nil { - conn.logf("[connect] write error: %v", err) - conn.Close() - return n, driver.ErrBadConn - } - total += n - } - return n, nil -} - -func (conn *connect) Close() error { - if !conn.closed { - conn.closed = true - return conn.Conn.Close() - } - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/docker-compose.yml b/vendor/github.com/ClickHouse/clickhouse-go/docker-compose.yml deleted file mode 100644 index 2d03214b..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -version: '3' -services: - clickhouse: - image: yandex/clickhouse-server - ports: - - 127.0.0.1:8123:8123 - - 127.0.0.1:9000:9000 - - 127.0.0.1:9009:9009 diff --git a/vendor/github.com/ClickHouse/clickhouse-go/go.mod b/vendor/github.com/ClickHouse/clickhouse-go/go.mod deleted file mode 100644 index 33116921..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module github.com/ClickHouse/clickhouse-go - -go 1.12 - -require ( - github.com/bkaradzic/go-lz4 v1.0.0 - github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 - github.com/jmoiron/sqlx v1.2.0 - github.com/pierrec/lz4 v2.0.5+incompatible - github.com/stretchr/testify v1.3.0 -) diff --git a/vendor/github.com/ClickHouse/clickhouse-go/go.sum b/vendor/github.com/ClickHouse/clickhouse-go/go.sum deleted file mode 100644 index c3d6a6f6..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/go.sum +++ /dev/null @@ -1,18 +0,0 @@ -github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk= -github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= -github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= -github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/vendor/github.com/ClickHouse/clickhouse-go/go.test.sh b/vendor/github.com/ClickHouse/clickhouse-go/go.test.sh deleted file mode 100755 index 70ffd08c..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/go.test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -e -echo "" > coverage.txt - -for d in $(go list ./... | grep -v vendor | grep -v examples); do - go test -race -coverprofile=profile.out -covermode=atomic $d - if [ -f profile.out ]; then - cat profile.out >> coverage.txt - rm profile.out - fi -done \ No newline at end of file diff --git a/vendor/github.com/ClickHouse/clickhouse-go/helpers.go b/vendor/github.com/ClickHouse/clickhouse-go/helpers.go deleted file mode 100644 index 4dd08c64..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/helpers.go +++ /dev/null @@ -1,129 +0,0 @@ -package clickhouse - -import ( - "bytes" - "database/sql/driver" - "fmt" - "reflect" - "regexp" - "strings" - "time" -) - -func numInput(query string) int { - - var ( - count int - args = make(map[string]struct{}) - reader = bytes.NewReader([]byte(query)) - quote, gravis bool - keyword bool - inBetween bool - like = newMatcher("like") - limit = newMatcher("limit") - between = newMatcher("between") - and = newMatcher("and") - ) - for { - if char, _, err := reader.ReadRune(); err == nil { - switch char { - case '\'': - if !gravis { - quote = !quote - } - case '`': - if !quote { - gravis = !gravis - } - } - if quote || gravis { - continue - } - switch { - case char == '?' && keyword: - count++ - case char == '@': - if param := paramParser(reader); len(param) != 0 { - if _, found := args[param]; !found { - args[param] = struct{}{} - count++ - } - } - case - char == '=', - char == '<', - char == '>', - char == '(', - char == ',', - char == '[': - keyword = true - default: - if limit.matchRune(char) || like.matchRune(char) { - keyword = true - } else if between.matchRune(char) { - keyword = true - inBetween = true - } else if inBetween && and.matchRune(char) { - keyword = true - inBetween = false - } else { - keyword = keyword && (char == ' ' || char == '\t' || char == '\n') - } - } - } else { - break - } - } - return count -} - -func paramParser(reader *bytes.Reader) string { - var name bytes.Buffer - for { - if char, _, err := reader.ReadRune(); err == nil { - if char == '_' || char >= '0' && char <= '9' || 'a' <= char && char <= 'z' || 'A' <= char && char <= 'Z' { - name.WriteRune(char) - } else { - reader.UnreadRune() - break - } - } else { - break - } - } - return name.String() -} - -var selectRe = regexp.MustCompile(`\s+SELECT\s+`) - -func isInsert(query string) bool { - if f := strings.Fields(query); len(f) > 2 { - return strings.EqualFold("INSERT", f[0]) && strings.EqualFold("INTO", f[1]) && !selectRe.MatchString(strings.ToUpper(query)) - } - return false -} - -func quote(v driver.Value) string { - switch v := reflect.ValueOf(v); v.Kind() { - case reflect.Slice: - values := make([]string, 0, v.Len()) - for i := 0; i < v.Len(); i++ { - values = append(values, quote(v.Index(i).Interface())) - } - return strings.Join(values, ", ") - } - switch v := v.(type) { - case string: - return "'" + strings.NewReplacer(`\`, `\\`, `'`, `\'`).Replace(v) + "'" - case time.Time: - return formatTime(v) - } - return fmt.Sprint(v) -} - -func formatTime(value time.Time) string { - if (value.Hour() + value.Minute() + value.Second() + value.Nanosecond()) == 0 { - return fmt.Sprintf("toDate(%d)", int(int16(value.Unix()/24/3600))) - } - return fmt.Sprintf("toDateTime(%d)", int(uint32(value.Unix()))) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader.go deleted file mode 100644 index be428b36..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader.go +++ /dev/null @@ -1,107 +0,0 @@ -// +build !clz4 - -package binary - -import ( - "encoding/binary" - "fmt" - "io" - - "github.com/ClickHouse/clickhouse-go/lib/lz4" -) - -type compressReader struct { - reader io.Reader - // data uncompressed - data []byte - // data position - pos int - // data compressed - zdata []byte - // lz4 headers - header []byte -} - -// NewCompressReader wrap the io.Reader -func NewCompressReader(r io.Reader) *compressReader { - p := &compressReader{ - reader: r, - header: make([]byte, HeaderSize), - } - p.data = make([]byte, BlockMaxSize, BlockMaxSize) - - zlen := lz4.CompressBound(BlockMaxSize) + HeaderSize - p.zdata = make([]byte, zlen, zlen) - - p.pos = len(p.data) - return p -} - -func (cr *compressReader) Read(buf []byte) (n int, err error) { - var bytesRead = 0 - n = len(buf) - - if cr.pos < len(cr.data) { - copyedSize := copy(buf, cr.data[cr.pos:]) - - bytesRead += copyedSize - cr.pos += copyedSize - } - - for bytesRead < n { - if err = cr.readCompressedData(); err != nil { - return bytesRead, err - } - copyedSize := copy(buf[bytesRead:], cr.data) - - bytesRead += copyedSize - cr.pos = copyedSize - } - return n, nil -} - -func (cr *compressReader) readCompressedData() (err error) { - cr.pos = 0 - var n int - n, err = cr.reader.Read(cr.header) - if err != nil { - return - } - if n != len(cr.header) { - return fmt.Errorf("Lz4 decompression header EOF") - } - - compressedSize := int(binary.LittleEndian.Uint32(cr.header[17:])) - 9 - decompressedSize := int(binary.LittleEndian.Uint32(cr.header[21:])) - - if compressedSize > cap(cr.zdata) { - cr.zdata = make([]byte, compressedSize) - } - if decompressedSize > cap(cr.data) { - cr.data = make([]byte, decompressedSize) - } - - cr.zdata = cr.zdata[:compressedSize] - cr.data = cr.data[:decompressedSize] - - // @TODO checksum - if cr.header[16] == LZ4 { - n, err = cr.reader.Read(cr.zdata) - if err != nil { - return - } - - if n != len(cr.zdata) { - return fmt.Errorf("Decompress read size not match") - } - - _, err = lz4.Decode(cr.data, cr.zdata) - if err != nil { - return - } - } else { - return fmt.Errorf("Unknown compression method: 0x%02x ", cr.header[16]) - } - - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader_clz4.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader_clz4.go deleted file mode 100644 index 2845b3b8..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_reader_clz4.go +++ /dev/null @@ -1,107 +0,0 @@ -// +build clz4 - -package binary - -import ( - "encoding/binary" - "fmt" - "io" - - lz4 "github.com/cloudflare/golz4" -) - -type compressReader struct { - reader io.Reader - // data uncompressed - data []byte - // data position - pos int - // data compressed - zdata []byte - // lz4 headers - header []byte -} - -// NewCompressReader wrap the io.Reader -func NewCompressReader(r io.Reader) *compressReader { - p := &compressReader{ - reader: r, - header: make([]byte, HeaderSize), - } - p.data = make([]byte, BlockMaxSize, BlockMaxSize) - - zlen := lz4.CompressBound(p.data) + HeaderSize - p.zdata = make([]byte, zlen, zlen) - - p.pos = len(p.data) - return p -} - -func (cr *compressReader) Read(buf []byte) (n int, err error) { - var bytesRead = 0 - n = len(buf) - - if cr.pos < len(cr.data) { - copyedSize := copy(buf, cr.data[cr.pos:]) - - bytesRead += copyedSize - cr.pos += copyedSize - } - - for bytesRead < n { - if err = cr.readCompressedData(); err != nil { - return bytesRead, err - } - copyedSize := copy(buf[bytesRead:], cr.data) - - bytesRead += copyedSize - cr.pos = copyedSize - } - return n, nil -} - -func (cr *compressReader) readCompressedData() (err error) { - cr.pos = 0 - var n int - n, err = cr.reader.Read(cr.header) - if err != nil { - return - } - if n != len(cr.header) { - return fmt.Errorf("Lz4 decompression header EOF") - } - - compressedSize := int(binary.LittleEndian.Uint32(cr.header[17:])) - 9 - decompressedSize := int(binary.LittleEndian.Uint32(cr.header[21:])) - - if compressedSize > cap(cr.zdata) { - cr.zdata = make([]byte, compressedSize) - } - if decompressedSize > cap(cr.data) { - cr.data = make([]byte, decompressedSize) - } - - cr.zdata = cr.zdata[:compressedSize] - cr.data = cr.data[:decompressedSize] - - // @TODO checksum - if cr.header[16] == LZ4 { - n, err = cr.reader.Read(cr.zdata) - if err != nil { - return - } - - if n != len(cr.zdata) { - return fmt.Errorf("Decompress read size not match") - } - - err = lz4.Uncompress(cr.zdata, cr.data) - if err != nil { - return - } - } else { - return fmt.Errorf("Unknown compression method: 0x%02x ", cr.header[16]) - } - - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_settings.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_settings.go deleted file mode 100644 index ca455997..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_settings.go +++ /dev/null @@ -1,21 +0,0 @@ -package binary - -type CompressionMethodByte byte - -const ( - NONE CompressionMethodByte = 0x02 - LZ4 = 0x82 - ZSTD = 0x90 -) - -const ( - // ChecksumSize is 128bits for cityhash102 checksum - ChecksumSize = 16 - // CompressHeader magic + compressed_size + uncompressed_size - CompressHeaderSize = 1 + 4 + 4 - - // HeaderSize - HeaderSize = ChecksumSize + CompressHeaderSize - // BlockMaxSize 1MB - BlockMaxSize = 1 << 20 -) diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer.go deleted file mode 100644 index e4a73cf0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer.go +++ /dev/null @@ -1,79 +0,0 @@ -// +build !clz4 - -package binary - -import ( - "encoding/binary" - "io" - - "github.com/ClickHouse/clickhouse-go/lib/cityhash102" - "github.com/ClickHouse/clickhouse-go/lib/lz4" -) - -type compressWriter struct { - writer io.Writer - // data uncompressed - data []byte - // data position - pos int - // data compressed - zdata []byte -} - -// NewCompressWriter wrap the io.Writer -func NewCompressWriter(w io.Writer) *compressWriter { - p := &compressWriter{writer: w} - p.data = make([]byte, BlockMaxSize, BlockMaxSize) - - zlen := lz4.CompressBound(BlockMaxSize) + HeaderSize - p.zdata = make([]byte, zlen, zlen) - return p -} - -func (cw *compressWriter) Write(buf []byte) (int, error) { - var n int - for len(buf) > 0 { - // Accumulate the data to be compressed. - m := copy(cw.data[cw.pos:], buf) - cw.pos += m - buf = buf[m:] - - if cw.pos == len(cw.data) { - err := cw.Flush() - if err != nil { - return n, err - } - } - n += m - } - return n, nil -} - -func (cw *compressWriter) Flush() (err error) { - if cw.pos == 0 { - return - } - - // write the headers - compressedSize, err := lz4.Encode(cw.zdata[HeaderSize:], cw.data[:cw.pos]) - if err != nil { - return err - } - compressedSize += CompressHeaderSize - // fill the header, compressed_size_32 + uncompressed_size_32 - cw.zdata[16] = LZ4 - binary.LittleEndian.PutUint32(cw.zdata[17:], uint32(compressedSize)) - binary.LittleEndian.PutUint32(cw.zdata[21:], uint32(cw.pos)) - - // fill the checksum - checkSum := cityhash102.CityHash128(cw.zdata[16:], uint32(compressedSize)) - binary.LittleEndian.PutUint64(cw.zdata[0:], checkSum.Lower64()) - binary.LittleEndian.PutUint64(cw.zdata[8:], checkSum.Higher64()) - - cw.writer.Write(cw.zdata[:compressedSize+ChecksumSize]) - if w, ok := cw.writer.(WriteFlusher); ok { - err = w.Flush() - } - cw.pos = 0 - return -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer_clz4.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer_clz4.go deleted file mode 100644 index 1302e161..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/compress_writer_clz4.go +++ /dev/null @@ -1,78 +0,0 @@ -// +build clz4 - -package binary - -import ( - "encoding/binary" - "io" - - lz4 "github.com/cloudflare/golz4" - "github.com/ClickHouse/clickhouse-go/lib/cityhash102" -) - -type compressWriter struct { - writer io.Writer - // data uncompressed - data []byte - // data position - pos int - // data compressed - zdata []byte -} - -// NewCompressWriter wrap the io.Writer -func NewCompressWriter(w io.Writer) *compressWriter { - p := &compressWriter{writer: w} - p.data = make([]byte, BlockMaxSize, BlockMaxSize) - - zlen := lz4.CompressBound(p.data) + HeaderSize - p.zdata = make([]byte, zlen, zlen) - return p -} - -func (cw *compressWriter) Write(buf []byte) (int, error) { - var n int - for len(buf) > 0 { - // Accumulate the data to be compressed. - m := copy(cw.data[cw.pos:], buf) - cw.pos += m - buf = buf[m:] - - if cw.pos == len(cw.data) { - err := cw.Flush() - if err != nil { - return n, err - } - } - n += m - } - return n, nil -} - -func (cw *compressWriter) Flush() (err error) { - if cw.pos == 0 { - return - } - // write the headers - compressedSize, err := lz4.Compress(cw.data[:cw.pos], cw.zdata[HeaderSize:]) - if err != nil { - return err - } - compressedSize += CompressHeaderSize - // fill the header, compressed_size_32 + uncompressed_size_32 - cw.zdata[16] = LZ4 - binary.LittleEndian.PutUint32(cw.zdata[17:], uint32(compressedSize)) - binary.LittleEndian.PutUint32(cw.zdata[21:], uint32(cw.pos)) - - // fill the checksum - checkSum := cityhash102.CityHash128(cw.zdata[16:], uint32(compressedSize)) - binary.LittleEndian.PutUint64(cw.zdata[0:], checkSum.Lower64()) - binary.LittleEndian.PutUint64(cw.zdata[8:], checkSum.Higher64()) - - cw.writer.Write(cw.zdata[:compressedSize+ChecksumSize]) - if w, ok := cw.writer.(WriteFlusher); ok { - err = w.Flush() - } - cw.pos = 0 - return -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/decoder.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/decoder.go deleted file mode 100644 index 20ac9866..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/decoder.go +++ /dev/null @@ -1,165 +0,0 @@ -package binary - -import ( - "encoding/binary" - "io" - "math" -) - -func NewDecoder(input io.Reader) *Decoder { - return &Decoder{ - input: input, - compressInput: NewCompressReader(input), - } -} - -type Decoder struct { - compress bool - input io.Reader - compressInput io.Reader - scratch [binary.MaxVarintLen64]byte -} - -func (decoder *Decoder) SelectCompress(compress bool) { - decoder.compress = compress -} - -func (decoder *Decoder) Get() io.Reader { - if decoder.compress { - return decoder.compressInput - } - return decoder.input -} - -func (decoder *Decoder) Bool() (bool, error) { - v, err := decoder.ReadByte() - if err != nil { - return false, err - } - return v == 1, nil -} - -func (decoder *Decoder) Uvarint() (uint64, error) { - return binary.ReadUvarint(decoder) -} - -func (decoder *Decoder) Int8() (int8, error) { - v, err := decoder.ReadByte() - if err != nil { - return 0, err - } - return int8(v), nil -} - -func (decoder *Decoder) Int16() (int16, error) { - v, err := decoder.UInt16() - if err != nil { - return 0, err - } - return int16(v), nil -} - -func (decoder *Decoder) Int32() (int32, error) { - v, err := decoder.UInt32() - if err != nil { - return 0, err - } - return int32(v), nil -} - -func (decoder *Decoder) Int64() (int64, error) { - v, err := decoder.UInt64() - if err != nil { - return 0, err - } - return int64(v), nil -} - -func (decoder *Decoder) UInt8() (uint8, error) { - v, err := decoder.ReadByte() - if err != nil { - return 0, err - } - return uint8(v), nil -} - -func (decoder *Decoder) UInt16() (uint16, error) { - if _, err := decoder.Get().Read(decoder.scratch[:2]); err != nil { - return 0, err - } - return uint16(decoder.scratch[0]) | uint16(decoder.scratch[1])<<8, nil -} - -func (decoder *Decoder) UInt32() (uint32, error) { - if _, err := decoder.Get().Read(decoder.scratch[:4]); err != nil { - return 0, err - } - return uint32(decoder.scratch[0]) | - uint32(decoder.scratch[1])<<8 | - uint32(decoder.scratch[2])<<16 | - uint32(decoder.scratch[3])<<24, nil -} - -func (decoder *Decoder) UInt64() (uint64, error) { - if _, err := decoder.Get().Read(decoder.scratch[:8]); err != nil { - return 0, err - } - return uint64(decoder.scratch[0]) | - uint64(decoder.scratch[1])<<8 | - uint64(decoder.scratch[2])<<16 | - uint64(decoder.scratch[3])<<24 | - uint64(decoder.scratch[4])<<32 | - uint64(decoder.scratch[5])<<40 | - uint64(decoder.scratch[6])<<48 | - uint64(decoder.scratch[7])<<56, nil -} - -func (decoder *Decoder) Float32() (float32, error) { - v, err := decoder.UInt32() - if err != nil { - return 0, err - } - return math.Float32frombits(v), nil -} - -func (decoder *Decoder) Float64() (float64, error) { - v, err := decoder.UInt64() - if err != nil { - return 0, err - } - return math.Float64frombits(v), nil -} - -func (decoder *Decoder) Fixed(ln int) ([]byte, error) { - if reader, ok := decoder.Get().(FixedReader); ok { - return reader.Fixed(ln) - } - buf := make([]byte, ln) - if _, err := decoder.Get().Read(buf); err != nil { - return nil, err - } - return buf, nil -} - -func (decoder *Decoder) String() (string, error) { - strlen, err := decoder.Uvarint() - if err != nil { - return "", err - } - str, err := decoder.Fixed(int(strlen)) - if err != nil { - return "", err - } - return string(str), nil -} - -func (decoder *Decoder) ReadByte() (byte, error) { - if _, err := decoder.Get().Read(decoder.scratch[:1]); err != nil { - return 0x0, err - } - return decoder.scratch[0], nil -} - -type FixedReader interface { - Fixed(ln int) ([]byte, error) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/encoder.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/encoder.go deleted file mode 100644 index b2039e2e..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/binary/encoder.go +++ /dev/null @@ -1,162 +0,0 @@ -package binary - -import ( - "encoding/binary" - "io" - "math" - "reflect" - "unsafe" -) - -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{ - output: w, - compressOutput: NewCompressWriter(w), - } -} - -type Encoder struct { - compress bool - output io.Writer - compressOutput io.Writer - scratch [binary.MaxVarintLen64]byte -} - -func (enc *Encoder) SelectCompress(compress bool) { - if enc.compress && !compress { - enc.Flush() - } - enc.compress = compress -} - -func (enc *Encoder) Get() io.Writer { - if enc.compress { - return enc.compressOutput - } - return enc.output -} - -func (enc *Encoder) Uvarint(v uint64) error { - ln := binary.PutUvarint(enc.scratch[:binary.MaxVarintLen64], v) - if _, err := enc.Get().Write(enc.scratch[0:ln]); err != nil { - return err - } - return nil -} - -func (enc *Encoder) Bool(v bool) error { - if v { - return enc.UInt8(1) - } - return enc.UInt8(0) -} - -func (enc *Encoder) Int8(v int8) error { - return enc.UInt8(uint8(v)) -} - -func (enc *Encoder) Int16(v int16) error { - return enc.UInt16(uint16(v)) -} - -func (enc *Encoder) Int32(v int32) error { - return enc.UInt32(uint32(v)) -} - -func (enc *Encoder) Int64(v int64) error { - return enc.UInt64(uint64(v)) -} - -func (enc *Encoder) UInt8(v uint8) error { - enc.scratch[0] = v - if _, err := enc.Get().Write(enc.scratch[:1]); err != nil { - return err - } - return nil -} - -func (enc *Encoder) UInt16(v uint16) error { - enc.scratch[0] = byte(v) - enc.scratch[1] = byte(v >> 8) - if _, err := enc.Get().Write(enc.scratch[:2]); err != nil { - return err - } - return nil -} - -func (enc *Encoder) UInt32(v uint32) error { - enc.scratch[0] = byte(v) - enc.scratch[1] = byte(v >> 8) - enc.scratch[2] = byte(v >> 16) - enc.scratch[3] = byte(v >> 24) - if _, err := enc.Get().Write(enc.scratch[:4]); err != nil { - return err - } - return nil -} - -func (enc *Encoder) UInt64(v uint64) error { - enc.scratch[0] = byte(v) - enc.scratch[1] = byte(v >> 8) - enc.scratch[2] = byte(v >> 16) - enc.scratch[3] = byte(v >> 24) - enc.scratch[4] = byte(v >> 32) - enc.scratch[5] = byte(v >> 40) - enc.scratch[6] = byte(v >> 48) - enc.scratch[7] = byte(v >> 56) - if _, err := enc.Get().Write(enc.scratch[:8]); err != nil { - return err - } - return nil -} - -func (enc *Encoder) Float32(v float32) error { - return enc.UInt32(math.Float32bits(v)) -} - -func (enc *Encoder) Float64(v float64) error { - return enc.UInt64(math.Float64bits(v)) -} - -func (enc *Encoder) String(v string) error { - str := Str2Bytes(v) - if err := enc.Uvarint(uint64(len(str))); err != nil { - return err - } - if _, err := enc.Get().Write(str); err != nil { - return err - } - return nil -} - -func (enc *Encoder) RawString(str []byte) error { - if err := enc.Uvarint(uint64(len(str))); err != nil { - return err - } - if _, err := enc.Get().Write(str); err != nil { - return err - } - return nil -} - -func (enc *Encoder) Write(b []byte) (int, error) { - return enc.Get().Write(b) -} - -func (enc *Encoder) Flush() error { - if w, ok := enc.Get().(WriteFlusher); ok { - return w.Flush() - } - return nil -} - -type WriteFlusher interface { - Flush() error -} - -func Str2Bytes(str string) []byte { - header := (*reflect.SliceHeader)(unsafe.Pointer(&str)) - header.Len = len(str) - header.Cap = header.Len - return *(*[]byte)(unsafe.Pointer(header)) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/city64.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/city64.go deleted file mode 100644 index c410c44d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/city64.go +++ /dev/null @@ -1,45 +0,0 @@ -package cityhash102 - -import ( - "encoding/binary" - "hash" -) - -type City64 struct { - s []byte -} - -var _ hash.Hash64 = (*City64)(nil) -var _ hash.Hash = (*City64)(nil) - -func New64() hash.Hash64 { - return &City64{} -} - -func (this *City64) Sum(b []byte) []byte { - b2 := make([]byte, 8) - binary.BigEndian.PutUint64(b2, this.Sum64()) - b = append(b, b2...) - return b -} - -func (this *City64) Sum64() uint64 { - return CityHash64(this.s, uint32(len(this.s))) -} - -func (this *City64) Reset() { - this.s = this.s[0:0] -} - -func (this *City64) BlockSize() int { - return 1 -} - -func (this *City64) Write(s []byte) (n int, err error) { - this.s = append(this.s, s...) - return len(s), nil -} - -func (this *City64) Size() int { - return 8 -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/cityhash.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/cityhash.go deleted file mode 100644 index dcc666b6..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/cityhash.go +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Go implementation of Google city hash (MIT license) - * https://code.google.com/p/cityhash/ - * - * MIT License http://www.opensource.org/licenses/mit-license.php - * - * I don't even want to pretend to understand the details of city hash. - * I am only reproducing the logic in Go as faithfully as I can. - * - */ - -package cityhash102 - -import ( - "encoding/binary" -) - -const ( - k0 uint64 = 0xc3a5c85c97cb3127 - k1 uint64 = 0xb492b66fbe98f273 - k2 uint64 = 0x9ae16a3b2f90404f - k3 uint64 = 0xc949d7c7509e6557 - - kMul uint64 = 0x9ddfea08eb382d69 -) - -func fetch64(p []byte) uint64 { - return binary.LittleEndian.Uint64(p) - //return uint64InExpectedOrder(unalignedLoad64(p)) -} - -func fetch32(p []byte) uint32 { - return binary.LittleEndian.Uint32(p) - //return uint32InExpectedOrder(unalignedLoad32(p)) -} - -func rotate64(val uint64, shift uint32) uint64 { - if shift != 0 { - return ((val >> shift) | (val << (64 - shift))) - } - - return val -} - -func rotate32(val uint32, shift uint32) uint32 { - if shift != 0 { - return ((val >> shift) | (val << (32 - shift))) - } - - return val -} - -func swap64(a, b *uint64) { - *a, *b = *b, *a -} - -func swap32(a, b *uint32) { - *a, *b = *b, *a -} - -func permute3(a, b, c *uint32) { - swap32(a, b) - swap32(a, c) -} - -func rotate64ByAtLeast1(val uint64, shift uint32) uint64 { - return (val >> shift) | (val << (64 - shift)) -} - -func shiftMix(val uint64) uint64 { - return val ^ (val >> 47) -} - -type Uint128 [2]uint64 - -func (this *Uint128) setLower64(l uint64) { - this[0] = l -} - -func (this *Uint128) setHigher64(h uint64) { - this[1] = h -} - -func (this Uint128) Lower64() uint64 { - return this[0] -} - -func (this Uint128) Higher64() uint64 { - return this[1] -} - -func (this Uint128) Bytes() []byte { - b := make([]byte, 16) - binary.LittleEndian.PutUint64(b, this[0]) - binary.LittleEndian.PutUint64(b[8:], this[1]) - return b -} - -func hash128to64(x Uint128) uint64 { - // Murmur-inspired hashing. - var a = (x.Lower64() ^ x.Higher64()) * kMul - a ^= (a >> 47) - var b = (x.Higher64() ^ a) * kMul - b ^= (b >> 47) - b *= kMul - return b -} - -func hashLen16(u, v uint64) uint64 { - return hash128to64(Uint128{u, v}) -} - -func hashLen16_3(u, v, mul uint64) uint64 { - // Murmur-inspired hashing. - var a = (u ^ v) * mul - a ^= (a >> 47) - var b = (v ^ a) * mul - b ^= (b >> 47) - b *= mul - return b -} - -func hashLen0to16(s []byte, length uint32) uint64 { - if length > 8 { - var a = fetch64(s) - var b = fetch64(s[length-8:]) - - return hashLen16(a, rotate64ByAtLeast1(b+uint64(length), length)) ^ b - } - - if length >= 4 { - var a = fetch32(s) - return hashLen16(uint64(length)+(uint64(a)<<3), uint64(fetch32(s[length-4:]))) - } - - if length > 0 { - var a uint8 = uint8(s[0]) - var b uint8 = uint8(s[length>>1]) - var c uint8 = uint8(s[length-1]) - - var y uint32 = uint32(a) + (uint32(b) << 8) - var z uint32 = length + (uint32(c) << 2) - - return shiftMix(uint64(y)*k2^uint64(z)*k3) * k2 - } - - return k2 -} - -// This probably works well for 16-byte strings as well, but it may be overkill -func hashLen17to32(s []byte, length uint32) uint64 { - var a = fetch64(s) * k1 - var b = fetch64(s[8:]) - var c = fetch64(s[length-8:]) * k2 - var d = fetch64(s[length-16:]) * k0 - - return hashLen16(rotate64(a-b, 43)+rotate64(c, 30)+d, - a+rotate64(b^k3, 20)-c+uint64(length)) -} - -func weakHashLen32WithSeeds(w, x, y, z, a, b uint64) Uint128 { - a += w - b = rotate64(b+a+z, 21) - var c uint64 = a - a += x - a += y - b += rotate64(a, 44) - return Uint128{a + z, b + c} -} - -func weakHashLen32WithSeeds_3(s []byte, a, b uint64) Uint128 { - return weakHashLen32WithSeeds(fetch64(s), fetch64(s[8:]), fetch64(s[16:]), fetch64(s[24:]), a, b) -} - -func hashLen33to64(s []byte, length uint32) uint64 { - var z uint64 = fetch64(s[24:]) - var a uint64 = fetch64(s) + (uint64(length)+fetch64(s[length-16:]))*k0 - var b uint64 = rotate64(a+z, 52) - var c uint64 = rotate64(a, 37) - - a += fetch64(s[8:]) - c += rotate64(a, 7) - a += fetch64(s[16:]) - - var vf uint64 = a + z - var vs = b + rotate64(a, 31) + c - - a = fetch64(s[16:]) + fetch64(s[length-32:]) - z = fetch64(s[length-8:]) - b = rotate64(a+z, 52) - c = rotate64(a, 37) - a += fetch64(s[length-24:]) - c += rotate64(a, 7) - a += fetch64(s[length-16:]) - - wf := a + z - ws := b + rotate64(a, 31) + c - r := shiftMix((vf+ws)*k2 + (wf+vs)*k0) - return shiftMix(r*k0+vs) * k2 -} - -func CityHash64(s []byte, length uint32) uint64 { - if length <= 32 { - if length <= 16 { - return hashLen0to16(s, length) - } else { - return hashLen17to32(s, length) - } - } else if length <= 64 { - return hashLen33to64(s, length) - } - - var x uint64 = fetch64(s) - var y uint64 = fetch64(s[length-16:]) ^ k1 - var z uint64 = fetch64(s[length-56:]) ^ k0 - - var v Uint128 = weakHashLen32WithSeeds_3(s[length-64:], uint64(length), y) - var w Uint128 = weakHashLen32WithSeeds_3(s[length-32:], uint64(length)*k1, k0) - - z += shiftMix(v.Higher64()) * k1 - x = rotate64(z+x, 39) * k1 - y = rotate64(y, 33) * k1 - - length = (length - 1) & ^uint32(63) - for { - x = rotate64(x+y+v.Lower64()+fetch64(s[16:]), 37) * k1 - y = rotate64(y+v.Higher64()+fetch64(s[48:]), 42) * k1 - - x ^= w.Higher64() - y ^= v.Lower64() - - z = rotate64(z^w.Lower64(), 33) - v = weakHashLen32WithSeeds_3(s, v.Higher64()*k1, x+w.Lower64()) - w = weakHashLen32WithSeeds_3(s[32:], z+w.Higher64(), y) - - swap64(&z, &x) - s = s[64:] - length -= 64 - - if length == 0 { - break - } - } - - return hashLen16(hashLen16(v.Lower64(), w.Lower64())+shiftMix(y)*k1+z, hashLen16(v.Higher64(), w.Higher64())+x) -} - -func CityHash64WithSeed(s []byte, length uint32, seed uint64) uint64 { - return CityHash64WithSeeds(s, length, k2, seed) -} - -func CityHash64WithSeeds(s []byte, length uint32, seed0, seed1 uint64) uint64 { - return hashLen16(CityHash64(s, length)-seed0, seed1) -} - -func cityMurmur(s []byte, length uint32, seed Uint128) Uint128 { - var a uint64 = seed.Lower64() - var b uint64 = seed.Higher64() - var c uint64 = 0 - var d uint64 = 0 - var l int32 = int32(length) - 16 - - if l <= 0 { // len <= 16 - a = shiftMix(a*k1) * k1 - c = b*k1 + hashLen0to16(s, length) - - if length >= 8 { - d = shiftMix(a + fetch64(s)) - } else { - d = shiftMix(a + c) - } - - } else { // len > 16 - c = hashLen16(fetch64(s[length-8:])+k1, a) - d = hashLen16(b+uint64(length), c+fetch64(s[length-16:])) - a += d - - for { - a ^= shiftMix(fetch64(s)*k1) * k1 - a *= k1 - b ^= a - c ^= shiftMix(fetch64(s[8:])*k1) * k1 - c *= k1 - d ^= c - s = s[16:] - l -= 16 - - if l <= 0 { - break - } - } - } - a = hashLen16(a, c) - b = hashLen16(d, b) - return Uint128{a ^ b, hashLen16(b, a)} -} - -func CityHash128WithSeed(s []byte, length uint32, seed Uint128) Uint128 { - if length < 128 { - return cityMurmur(s, length, seed) - } - - // We expect length >= 128 to be the common case. Keep 56 bytes of state: - // v, w, x, y, and z. - var v, w Uint128 - var x uint64 = seed.Lower64() - var y uint64 = seed.Higher64() - var z uint64 = uint64(length) * k1 - - var pos uint32 - var t = s - - v.setLower64(rotate64(y^k1, 49)*k1 + fetch64(s)) - v.setHigher64(rotate64(v.Lower64(), 42)*k1 + fetch64(s[8:])) - w.setLower64(rotate64(y+z, 35)*k1 + x) - w.setHigher64(rotate64(x+fetch64(s[88:]), 53) * k1) - - // This is the same inner loop as CityHash64(), manually unrolled. - for { - x = rotate64(x+y+v.Lower64()+fetch64(s[16:]), 37) * k1 - y = rotate64(y+v.Higher64()+fetch64(s[48:]), 42) * k1 - - x ^= w.Higher64() - y ^= v.Lower64() - z = rotate64(z^w.Lower64(), 33) - v = weakHashLen32WithSeeds_3(s, v.Higher64()*k1, x+w.Lower64()) - w = weakHashLen32WithSeeds_3(s[32:], z+w.Higher64(), y) - swap64(&z, &x) - s = s[64:] - pos += 64 - - x = rotate64(x+y+v.Lower64()+fetch64(s[16:]), 37) * k1 - y = rotate64(y+v.Higher64()+fetch64(s[48:]), 42) * k1 - x ^= w.Higher64() - y ^= v.Lower64() - z = rotate64(z^w.Lower64(), 33) - v = weakHashLen32WithSeeds_3(s, v.Higher64()*k1, x+w.Lower64()) - w = weakHashLen32WithSeeds_3(s[32:], z+w.Higher64(), y) - swap64(&z, &x) - s = s[64:] - pos += 64 - length -= 128 - - if length < 128 { - break - } - } - - y += rotate64(w.Lower64(), 37)*k0 + z - x += rotate64(v.Lower64()+z, 49) * k0 - - // If 0 < length < 128, hash up to 4 chunks of 32 bytes each from the end of s. - var tailDone uint32 - for tailDone = 0; tailDone < length; { - tailDone += 32 - y = rotate64(y-x, 42)*k0 + v.Higher64() - - //TODO why not use origin_len ? - w.setLower64(w.Lower64() + fetch64(t[pos+length-tailDone+16:])) - x = rotate64(x, 49)*k0 + w.Lower64() - w.setLower64(w.Lower64() + v.Lower64()) - v = weakHashLen32WithSeeds_3(t[pos+length-tailDone:], v.Lower64(), v.Higher64()) - } - // At this point our 48 bytes of state should contain more than - // enough information for a strong 128-bit hash. We use two - // different 48-byte-to-8-byte hashes to get a 16-byte final result. - x = hashLen16(x, v.Lower64()) - y = hashLen16(y, w.Lower64()) - - return Uint128{hashLen16(x+v.Higher64(), w.Higher64()) + y, - hashLen16(x+w.Higher64(), y+v.Higher64())} -} - -func CityHash128(s []byte, length uint32) (result Uint128) { - if length >= 16 { - result = CityHash128WithSeed(s[16:length], length-16, Uint128{fetch64(s) ^ k3, fetch64(s[8:])}) - } else if length >= 8 { - result = CityHash128WithSeed(nil, 0, Uint128{fetch64(s) ^ (uint64(length) * k0), fetch64(s[length-8:]) ^ k1}) - } else { - result = CityHash128WithSeed(s, length, Uint128{k0, k1}) - } - return -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/doc.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/doc.go deleted file mode 100644 index 01ee5f85..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/cityhash102/doc.go +++ /dev/null @@ -1,5 +0,0 @@ -/** COPY from https://github.com/zentures/cityhash/ - -NOTE: The code is modified to be compatible with CityHash128 used in ClickHouse -*/ -package cityhash102 diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/array.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/array.go deleted file mode 100644 index b1b3c56e..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/array.go +++ /dev/null @@ -1,131 +0,0 @@ -package column - -import ( - "fmt" - "net" - "reflect" - "strings" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Array struct { - base - depth int - column Column -} - -func (array *Array) Read(decoder *binary.Decoder) (interface{}, error) { - return nil, fmt.Errorf("do not use Read method for Array(T) column") -} - -func (array *Array) Write(encoder *binary.Encoder, v interface{}) error { - return array.column.Write(encoder, v) -} - -func (array *Array) ReadArray(decoder *binary.Decoder, rows int) (_ []interface{}, err error) { - var ( - values = make([]interface{}, rows) - offsets = make([]uint64, rows) - ) - for i := 0; i < rows; i++ { - offset, err := decoder.UInt64() - if err != nil { - return nil, err - } - offsets[i] = offset - } - for n, offset := range offsets { - ln := offset - if n != 0 { - ln = ln - offsets[n-1] - } - if values[n], err = array.read(decoder, int(ln)); err != nil { - return nil, err - } - } - return values, nil -} - -func (array *Array) read(decoder *binary.Decoder, ln int) (interface{}, error) { - slice := reflect.MakeSlice(array.valueOf.Type(), 0, ln) - for i := 0; i < ln; i++ { - value, err := array.column.Read(decoder) - if err != nil { - return nil, err - } - slice = reflect.Append(slice, reflect.ValueOf(value)) - } - return slice.Interface(), nil -} - -func (array *Array) Depth() int { - return array.depth -} - -func parseArray(name, chType string, timezone *time.Location) (*Array, error) { - if len(chType) < 11 { - return nil, fmt.Errorf("invalid Array column type: %s", chType) - } - var ( - depth int - columnType = chType - ) - -loop: - for _, str := range strings.Split(chType, "Array(") { - switch { - case len(str) == 0: - depth++ - default: - chType = str[:len(str)-depth] - break loop - } - } - column, err := Factory(name, chType, timezone) - if err != nil { - return nil, fmt.Errorf("Array(T): %v", err) - } - - var scanType interface{} - switch t := column.ScanType(); t { - case arrayBaseTypes[int8(0)]: - scanType = []int8{} - case arrayBaseTypes[int16(0)]: - scanType = []int16{} - case arrayBaseTypes[int32(0)]: - scanType = []int32{} - case arrayBaseTypes[int64(0)]: - scanType = []int64{} - case arrayBaseTypes[uint8(0)]: - scanType = []uint8{} - case arrayBaseTypes[uint16(0)]: - scanType = []uint16{} - case arrayBaseTypes[uint32(0)]: - scanType = []uint32{} - case arrayBaseTypes[uint64(0)]: - scanType = []uint64{} - case arrayBaseTypes[float32(0)]: - scanType = []float32{} - case arrayBaseTypes[float64(0)]: - scanType = []float64{} - case arrayBaseTypes[string("")]: - scanType = []string{} - case arrayBaseTypes[time.Time{}]: - scanType = []time.Time{} - case arrayBaseTypes[IPv4{}], arrayBaseTypes[IPv6{}]: - scanType = []net.IP{} - default: - return nil, fmt.Errorf("unsupported Array type '%s'", column.ScanType().Name()) - } - return &Array{ - base: base{ - name: name, - chType: columnType, - valueOf: reflect.ValueOf(scanType), - }, - depth: depth, - column: column, - }, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/column.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/column.go deleted file mode 100644 index 73157777..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/column.go +++ /dev/null @@ -1,171 +0,0 @@ -package column - -import ( - "fmt" - "reflect" - "strings" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Column interface { - Name() string - CHType() string - ScanType() reflect.Type - Read(*binary.Decoder) (interface{}, error) - Write(*binary.Encoder, interface{}) error - defaultValue() interface{} - Depth() int -} - -func Factory(name, chType string, timezone *time.Location) (Column, error) { - switch chType { - case "Int8": - return &Int8{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[int8(0)], - }, - }, nil - case "Int16": - return &Int16{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[int16(0)], - }, - }, nil - case "Int32": - return &Int32{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[int32(0)], - }, - }, nil - case "Int64": - return &Int64{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[int64(0)], - }, - }, nil - case "UInt8": - return &UInt8{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[uint8(0)], - }, - }, nil - case "UInt16": - return &UInt16{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[uint16(0)], - }, - }, nil - case "UInt32": - return &UInt32{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[uint32(0)], - }, - }, nil - case "UInt64": - return &UInt64{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[uint64(0)], - }, - }, nil - case "Float32": - return &Float32{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[float32(0)], - }, - }, nil - case "Float64": - return &Float64{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[float64(0)], - }, - }, nil - case "String": - return &String{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[string("")], - }, - }, nil - case "UUID": - return &UUID{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[string("")], - }, - }, nil - case "Date": - _, offset := time.Unix(0, 0).In(timezone).Zone() - return &Date{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[time.Time{}], - }, - Timezone: timezone, - offset: int64(offset), - }, nil - case "DateTime": - return &DateTime{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[time.Time{}], - }, - Timezone: timezone, - }, nil - case "IPv4": - return &IPv4{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[IPv4{}], - }, - }, nil - case "IPv6": - return &IPv6{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[IPv6{}], - }, - }, nil - } - - switch { - case strings.HasPrefix(chType, "Array"): - return parseArray(name, chType, timezone) - case strings.HasPrefix(chType, "Nullable"): - return parseNullable(name, chType, timezone) - case strings.HasPrefix(chType, "FixedString"): - return parseFixedString(name, chType) - case strings.HasPrefix(chType, "Enum8"), strings.HasPrefix(chType, "Enum16"): - return parseEnum(name, chType) - case strings.HasPrefix(chType, "Decimal"): - return parseDecimal(name, chType) - } - return nil, fmt.Errorf("column: unhandled type %v", chType) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/common.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/common.go deleted file mode 100644 index 0ab93608..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/common.go +++ /dev/null @@ -1,80 +0,0 @@ -package column - -import ( - "fmt" - "net" - "reflect" - "time" -) - -type ErrUnexpectedType struct { - Column Column - T interface{} -} - -func (err *ErrUnexpectedType) Error() string { - return fmt.Sprintf("%s: unexpected type %T", err.Column, err.T) -} - -var columnBaseTypes = map[interface{}]reflect.Value{ - int8(0): reflect.ValueOf(int8(0)), - int16(0): reflect.ValueOf(int16(0)), - int32(0): reflect.ValueOf(int32(0)), - int64(0): reflect.ValueOf(int64(0)), - uint8(0): reflect.ValueOf(uint8(0)), - uint16(0): reflect.ValueOf(uint16(0)), - uint32(0): reflect.ValueOf(uint32(0)), - uint64(0): reflect.ValueOf(uint64(0)), - float32(0): reflect.ValueOf(float32(0)), - float64(0): reflect.ValueOf(float64(0)), - string(""): reflect.ValueOf(string("")), - time.Time{}: reflect.ValueOf(time.Time{}), - IPv4{}: reflect.ValueOf(net.IP{}), - IPv6{}: reflect.ValueOf(net.IP{}), -} - -var arrayBaseTypes = map[interface{}]reflect.Type{ - int8(0): reflect.ValueOf(int8(0)).Type(), - int16(0): reflect.ValueOf(int16(0)).Type(), - int32(0): reflect.ValueOf(int32(0)).Type(), - int64(0): reflect.ValueOf(int64(0)).Type(), - uint8(0): reflect.ValueOf(uint8(0)).Type(), - uint16(0): reflect.ValueOf(uint16(0)).Type(), - uint32(0): reflect.ValueOf(uint32(0)).Type(), - uint64(0): reflect.ValueOf(uint64(0)).Type(), - float32(0): reflect.ValueOf(float32(0)).Type(), - float64(0): reflect.ValueOf(float64(0)).Type(), - string(""): reflect.ValueOf(string("")).Type(), - time.Time{}: reflect.ValueOf(time.Time{}).Type(), - IPv4{}: reflect.ValueOf(net.IP{}).Type(), - IPv6{}: reflect.ValueOf(net.IP{}).Type(), -} - -type base struct { - name, chType string - valueOf reflect.Value -} - -func (base *base) Name() string { - return base.name -} - -func (base *base) CHType() string { - return base.chType -} - -func (base *base) ScanType() reflect.Type { - return base.valueOf.Type() -} - -func (base *base) defaultValue() interface{} { - return base.valueOf.Interface() -} - -func (base *base) String() string { - return fmt.Sprintf("%s (%s)", base.name, base.chType) -} - -func (base *base) Depth() int { - return 0 -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/date.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/date.go deleted file mode 100644 index 8746edbb..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/date.go +++ /dev/null @@ -1,80 +0,0 @@ -package column - -import ( - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Date struct { - base - Timezone *time.Location - offset int64 -} - -func (dt *Date) Read(decoder *binary.Decoder) (interface{}, error) { - sec, err := decoder.Int16() - if err != nil { - return nil, err - } - return time.Unix(int64(sec)*24*3600-dt.offset, 0).In(dt.Timezone), nil -} - -func (dt *Date) Write(encoder *binary.Encoder, v interface{}) error { - var timestamp int64 - switch value := v.(type) { - case time.Time: - _, offset := value.Zone() - timestamp = value.Unix() + int64(offset) - case int16: - return encoder.Int16(value) - case int32: - timestamp = int64(value) + dt.offset - case int64: - timestamp = value + dt.offset - case string: - var err error - timestamp, err = dt.parse(value) - if err != nil { - return err - } - - // this relies on Nullable never sending nil values through - case *time.Time: - _, offset := value.Zone() - timestamp = (*value).Unix() + int64(offset) - case *int16: - return encoder.Int16(*value) - case *int32: - timestamp = int64(*value) + dt.offset - case *int64: - timestamp = *value + dt.offset - case *string: - var err error - timestamp, err = dt.parse(*value) - if err != nil { - return err - } - - default: - return &ErrUnexpectedType{ - T: v, - Column: dt, - } - } - - return encoder.Int16(int16(timestamp / 24 / 3600)) -} - -func (dt *Date) parse(value string) (int64, error) { - tv, err := time.Parse("2006-01-02", value) - if err != nil { - return 0, err - } - return time.Date( - time.Time(tv).Year(), - time.Time(tv).Month(), - time.Time(tv).Day(), - 0, 0, 0, 0, time.UTC, - ).Unix(), nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/datetime.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/datetime.go deleted file mode 100644 index 6b714564..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/datetime.go +++ /dev/null @@ -1,83 +0,0 @@ -package column - -import ( - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type DateTime struct { - base - Timezone *time.Location -} - -func (dt *DateTime) Read(decoder *binary.Decoder) (interface{}, error) { - sec, err := decoder.Int32() - if err != nil { - return nil, err - } - return time.Unix(int64(sec), 0).In(dt.Timezone), nil -} - -func (dt *DateTime) Write(encoder *binary.Encoder, v interface{}) error { - var timestamp int64 - switch value := v.(type) { - case time.Time: - if !value.IsZero() { - timestamp = value.Unix() - } - case int16: - timestamp = int64(value) - case int32: - timestamp = int64(value) - case int64: - timestamp = value - case string: - var err error - timestamp, err = dt.parse(value) - if err != nil { - return err - } - - case *time.Time: - if value != nil && !(*value).IsZero() { - timestamp = (*value).Unix() - } - case *int16: - timestamp = int64(*value) - case *int32: - timestamp = int64(*value) - case *int64: - timestamp = *value - case *string: - var err error - timestamp, err = dt.parse(*value) - if err != nil { - return err - } - - default: - return &ErrUnexpectedType{ - T: v, - Column: dt, - } - } - - return encoder.Int32(int32(timestamp)) -} - -func (dt *DateTime) parse(value string) (int64, error) { - tv, err := time.Parse("2006-01-02 15:04:05", value) - if err != nil { - return 0, err - } - return time.Date( - time.Time(tv).Year(), - time.Time(tv).Month(), - time.Time(tv).Day(), - time.Time(tv).Hour(), - time.Time(tv).Minute(), - time.Time(tv).Second(), - 0, time.UTC, - ).Unix(), nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/decimal.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/decimal.go deleted file mode 100644 index 8dd97f6b..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/decimal.go +++ /dev/null @@ -1,241 +0,0 @@ -package column - -import ( - "errors" - "fmt" - "strconv" - "strings" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -// Table of powers of 10 for fast casting from floating types to decimal type -// representations. -var factors10 = []float64{ - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, - 1e14, 1e15, 1e16, 1e17, 1e18, -} - -// Decimal represents Decimal(P, S) ClickHouse. Since there is support for -// int128 in Golang, the implementation does not support to 128-bits decimals -// as well. Decimal is represented as integral. Also floating-point types are -// supported for query parameters. -type Decimal struct { - base - nobits int // its domain is {32, 64} - precision int - scale int -} - -func (d *Decimal) Read(decoder *binary.Decoder) (interface{}, error) { - switch d.nobits { - case 32: - return decoder.Int32() - case 64: - return decoder.Int64() - default: - return nil, errors.New("unachievable execution path") - } -} - -func (d *Decimal) Write(encoder *binary.Encoder, v interface{}) error { - switch d.nobits { - case 32: - return d.write32(encoder, v) - case 64: - return d.write64(encoder, v) - default: - return errors.New("unachievable execution path") - } -} - -func (d *Decimal) float2int32(floating float64) int32 { - fixed := int32(floating * factors10[d.scale]) - return fixed -} - -func (d *Decimal) float2int64(floating float64) int64 { - fixed := int64(floating * factors10[d.scale]) - return fixed -} - -func (d *Decimal) write32(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int8: - return encoder.Int32(int32(v)) - case int16: - return encoder.Int32(int32(v)) - case int32: - return encoder.Int32(int32(v)) - case int64: - return errors.New("narrowing type conversion from int64 to int32") - - case uint8: - return encoder.Int32(int32(v)) - case uint16: - return encoder.Int32(int32(v)) - case uint32: - return errors.New("narrowing type conversion from uint32 to int32") - case uint64: - return errors.New("narrowing type conversion from uint64 to int32") - - case float32: - fixed := d.float2int32(float64(v)) - return encoder.Int32(fixed) - case float64: - fixed := d.float2int32(float64(v)) - return encoder.Int32(fixed) - - // this relies on Nullable never sending nil values through - case *int8: - return encoder.Int32(int32(*v)) - case *int16: - return encoder.Int32(int32(*v)) - case *int32: - return encoder.Int32(int32(*v)) - case *int64: - return errors.New("narrowing type conversion from int64 to int32") - - case *uint8: - return encoder.Int32(int32(*v)) - case *uint16: - return encoder.Int32(int32(*v)) - case *uint32: - return errors.New("narrowing type conversion from uint32 to int32") - case *uint64: - return errors.New("narrowing type conversion from uint64 to int32") - - case *float32: - fixed := d.float2int32(float64(*v)) - return encoder.Int32(fixed) - case *float64: - fixed := d.float2int32(float64(*v)) - return encoder.Int32(fixed) - } - - return &ErrUnexpectedType{ - T: v, - Column: d, - } -} - -func (d *Decimal) write64(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int: - return encoder.Int64(int64(v)) - case int8: - return encoder.Int64(int64(v)) - case int16: - return encoder.Int64(int64(v)) - case int32: - return encoder.Int64(int64(v)) - case int64: - return encoder.Int64(int64(v)) - - case uint8: - return encoder.Int64(int64(v)) - case uint16: - return encoder.Int64(int64(v)) - case uint32: - return encoder.Int64(int64(v)) - case uint64: - return errors.New("narrowing type conversion from uint64 to int64") - - case float32: - fixed := d.float2int64(float64(v)) - return encoder.Int64(fixed) - case float64: - fixed := d.float2int64(float64(v)) - return encoder.Int64(fixed) - - // this relies on Nullable never sending nil values through - case *int: - return encoder.Int64(int64(*v)) - case *int8: - return encoder.Int64(int64(*v)) - case *int16: - return encoder.Int64(int64(*v)) - case *int32: - return encoder.Int64(int64(*v)) - case *int64: - return encoder.Int64(int64(*v)) - - case *uint8: - return encoder.Int64(int64(*v)) - case *uint16: - return encoder.Int64(int64(*v)) - case *uint32: - return encoder.Int64(int64(*v)) - case *uint64: - return errors.New("narrowing type conversion from uint64 to int64") - - case *float32: - fixed := d.float2int64(float64(*v)) - return encoder.Int64(fixed) - case *float64: - fixed := d.float2int64(float64(*v)) - return encoder.Int64(fixed) - } - - return &ErrUnexpectedType{ - T: v, - Column: d, - } -} - -func parseDecimal(name, chType string) (Column, error) { - switch { - case len(chType) < 12: - fallthrough - case !strings.HasPrefix(chType, "Decimal"): - fallthrough - case chType[7] != '(': - fallthrough - case chType[len(chType)-1] != ')': - return nil, fmt.Errorf("invalid Decimal format: '%s'", chType) - } - - var params = strings.Split(chType[8:len(chType)-1], ",") - - if len(params) != 2 { - return nil, fmt.Errorf("invalid Decimal format: '%s'", chType) - } - - params[0] = strings.TrimSpace(params[0]) - params[1] = strings.TrimSpace(params[1]) - - var err error - var decimal = &Decimal{ - base: base{ - name: name, - chType: chType, - }, - } - - if decimal.precision, err = strconv.Atoi(params[0]); err != nil { - return nil, fmt.Errorf("'%s' is not Decimal type: %s", chType, err) - } else if decimal.precision < 1 { - return nil, errors.New("wrong precision of Decimal type") - } - - if decimal.scale, err = strconv.Atoi(params[1]); err != nil { - return nil, fmt.Errorf("'%s' is not Decimal type: %s", chType, err) - } else if decimal.scale < 0 || decimal.scale > decimal.precision { - return nil, errors.New("wrong scale of Decimal type") - } - - switch { - case decimal.precision <= 9: - decimal.nobits = 32 - decimal.valueOf = columnBaseTypes[int32(0)] - case decimal.precision <= 18: - decimal.nobits = 64 - decimal.valueOf = columnBaseTypes[int64(0)] - case decimal.precision <= 38: - return nil, errors.New("Decimal128 is not supported") - default: - return nil, errors.New("precision of Decimal exceeds max bound") - } - - return decimal, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/enum.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/enum.go deleted file mode 100644 index e6332771..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/enum.go +++ /dev/null @@ -1,140 +0,0 @@ -package column - -import ( - "fmt" - "strconv" - "strings" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Enum struct { - iv map[string]interface{} - vi map[interface{}]string - base - baseType interface{} -} - -func (enum *Enum) Read(decoder *binary.Decoder) (interface{}, error) { - var ( - err error - ident interface{} - ) - switch enum.baseType.(type) { - case int16: - if ident, err = decoder.Int16(); err != nil { - return nil, err - } - default: - if ident, err = decoder.Int8(); err != nil { - return nil, err - } - } - if ident, found := enum.vi[ident]; found { - return ident, nil - } - return nil, fmt.Errorf("invalid Enum value: %v", ident) -} - -func (enum *Enum) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case string: - ident, found := enum.iv[v] - if !found { - return fmt.Errorf("invalid Enum ident: %s", v) - } - switch ident := ident.(type) { - case int8: - return encoder.Int8(ident) - case int16: - return encoder.Int16(ident) - } - case uint8: - if _, ok := enum.baseType.(int8); ok { - return encoder.Int8(int8(v)) - } - case int8: - if _, ok := enum.baseType.(int8); ok { - return encoder.Int8(v) - } - case uint16: - if _, ok := enum.baseType.(int16); ok { - return encoder.Int16(int16(v)) - } - case int16: - if _, ok := enum.baseType.(int16); ok { - return encoder.Int16(v) - } - case int64: - switch enum.baseType.(type) { - case int8: - return encoder.Int8(int8(v)) - case int16: - return encoder.Int16(int16(v)) - } - } - return &ErrUnexpectedType{ - T: v, - Column: enum, - } -} - -func (enum *Enum) defaultValue() interface{} { - return enum.baseType -} - -func parseEnum(name, chType string) (*Enum, error) { - var ( - data string - isEnum16 bool - ) - if len(chType) < 8 { - return nil, fmt.Errorf("invalid Enum format: %s", chType) - } - switch { - case strings.HasPrefix(chType, "Enum8"): - data = chType[6:] - case strings.HasPrefix(chType, "Enum16"): - data = chType[7:] - isEnum16 = true - default: - return nil, fmt.Errorf("'%s' is not Enum type", chType) - } - enum := Enum{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[string("")], - }, - iv: make(map[string]interface{}), - vi: make(map[interface{}]string), - } - for _, block := range strings.Split(data[:len(data)-1], ",") { - parts := strings.Split(block, "=") - if len(parts) != 2 { - return nil, fmt.Errorf("invalid Enum format: %s", chType) - } - var ( - ident = strings.TrimSpace(parts[0]) - value, err = strconv.ParseInt(strings.TrimSpace(parts[1]), 10, 16) - ) - if err != nil { - return nil, fmt.Errorf("invalid Enum value: %v", chType) - } - { - var ( - ident = ident[1 : len(ident)-1] - value interface{} = int16(value) - ) - if !isEnum16 { - value = int8(value.(int16)) - } - if enum.baseType == nil { - enum.baseType = value - } - enum.iv[ident] = value - enum.vi[value] = ident - } - } - return &enum, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/fixed_string.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/fixed_string.go deleted file mode 100644 index 2c8ac6a0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/fixed_string.go +++ /dev/null @@ -1,71 +0,0 @@ -package column - -import ( - "encoding" - "fmt" - "reflect" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type FixedString struct { - base - len int - scanType reflect.Type -} - -func (str *FixedString) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Fixed(str.len) - if err != nil { - return "", err - } - return string(v), nil -} - -func (str *FixedString) Write(encoder *binary.Encoder, v interface{}) error { - var fixedString []byte - switch v := v.(type) { - case string: - fixedString = binary.Str2Bytes(v) - case []byte: - fixedString = v - case encoding.BinaryMarshaler: - bytes, err := v.MarshalBinary() - if err != nil { - return err - } - fixedString = bytes - default: - return &ErrUnexpectedType{ - T: v, - Column: str, - } - } - switch { - case len(fixedString) > str.len: - return fmt.Errorf("too large value '%s' (expected %d, got %d)", fixedString, str.len, len(fixedString)) - case len(fixedString) < str.len: - tmp := make([]byte, str.len) - copy(tmp, fixedString) - fixedString = tmp - } - if _, err := encoder.Write(fixedString); err != nil { - return err - } - return nil -} - -func parseFixedString(name, chType string) (*FixedString, error) { - var strLen int - if _, err := fmt.Sscanf(chType, "FixedString(%d)", &strLen); err != nil { - return nil, err - } - return &FixedString{ - base: base{ - name: name, - chType: chType, - valueOf: columnBaseTypes[string("")], - }, - len: strLen, - }, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float32.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float32.go deleted file mode 100644 index 5fd475a1..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float32.go +++ /dev/null @@ -1,35 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Float32 struct{ base } - -func (Float32) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Float32() - if err != nil { - return float32(0), err - } - return v, nil -} - -func (float *Float32) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case float32: - return encoder.Float32(v) - case float64: - return encoder.Float32(float32(v)) - - // this relies on Nullable never sending nil values through - case *float32: - return encoder.Float32(*v) - case *float64: - return encoder.Float32(float32(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: float, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float64.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float64.go deleted file mode 100644 index 01290828..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/float64.go +++ /dev/null @@ -1,35 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Float64 struct{ base } - -func (Float64) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Float64() - if err != nil { - return float64(0), err - } - return v, nil -} - -func (float *Float64) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case float32: - return encoder.Float64(float64(v)) - case float64: - return encoder.Float64(v) - - // this relies on Nullable never sending nil values through - case *float32: - return encoder.Float64(float64(*v)) - case *float64: - return encoder.Float64(*v) - } - - return &ErrUnexpectedType{ - T: v, - Column: float, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int16.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int16.go deleted file mode 100644 index dfba30c0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int16.go +++ /dev/null @@ -1,39 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Int16 struct{ base } - -func (Int16) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Int16() - if err != nil { - return int16(0), err - } - return v, nil -} - -func (i *Int16) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int16: - return encoder.Int16(v) - case int64: - return encoder.Int16(int16(v)) - case int: - return encoder.Int16(int16(v)) - - // this relies on Nullable never sending nil values through - case *int16: - return encoder.Int16(*v) - case *int64: - return encoder.Int16(int16(*v)) - case *int: - return encoder.Int16(int16(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: i, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int32.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int32.go deleted file mode 100644 index 38267f48..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int32.go +++ /dev/null @@ -1,39 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Int32 struct{ base } - -func (Int32) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Int32() - if err != nil { - return int32(0), err - } - return v, nil -} - -func (i *Int32) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int32: - return encoder.Int32(v) - case int64: - return encoder.Int32(int32(v)) - case int: - return encoder.Int32(int32(v)) - - // this relies on Nullable never sending nil values through - case *int32: - return encoder.Int32(*v) - case *int64: - return encoder.Int32(int32(*v)) - case *int: - return encoder.Int32(int32(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: i, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int64.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int64.go deleted file mode 100644 index e44985cc..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int64.go +++ /dev/null @@ -1,40 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Int64 struct{ base } - -func (Int64) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Int64() - if err != nil { - return int64(0), err - } - return v, nil -} - -func (i *Int64) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int: - return encoder.Int64(int64(v)) - case int64: - return encoder.Int64(v) - case []byte: - if _, err := encoder.Write(v); err != nil { - return err - } - return nil - - // this relies on Nullable never sending nil values through - case *int: - return encoder.Int64(int64(*v)) - case *int64: - return encoder.Int64(*v) - } - - return &ErrUnexpectedType{ - T: v, - Column: i, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int8.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int8.go deleted file mode 100644 index a90d7111..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/int8.go +++ /dev/null @@ -1,49 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Int8 struct{ base } - -func (Int8) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Int8() - if err != nil { - return int8(0), err - } - return v, nil -} - -func (i *Int8) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case int8: - return encoder.Int8(v) - case int64: - return encoder.Int8(int8(v)) - case int: - return encoder.Int8(int8(v)) - case bool: - if v { - return encoder.Int8(int8(1)) - } - return encoder.Int8(int8(0)) - - // this relies on Nullable never sending nil values through - case *int8: - return encoder.Int8(*v) - case *int64: - return encoder.Int8(int8(*v)) - case *int: - return encoder.Int8(int8(*v)) - case *bool: - if *v { - return encoder.Int8(int8(1)) - } - return encoder.Int8(int8(0)) - } - - return &ErrUnexpectedType{ - T: v, - Column: i, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ip.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ip.go deleted file mode 100644 index 03056d7c..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ip.go +++ /dev/null @@ -1,84 +0,0 @@ -/* -IP type supporting for clickhouse as FixedString(16) -*/ - -package column - -import ( - "database/sql/driver" - "errors" - "net" - "strings" -) - -var ( - errInvalidScanType = errors.New("Invalid scan types") - errInvalidScanValue = errors.New("Invalid scan value") -) - -// IP column type -type IP net.IP - -// Value implements the driver.Valuer interface, json field interface -// Alignment on the right side -func (ip IP) Value() (driver.Value, error) { - return ip.MarshalBinary() -} - -func (ip IP) MarshalBinary() ([]byte, error) { - if len(ip) < 16 { - var ( - buff = make([]byte, 16) - j = 0 - ) - for i := 16 - len(ip); i < 16; i++ { - buff[i] = ip[j] - j++ - } - for i := 0; i < 16-len(ip); i++ { - buff[i] = '\x00' - } - if len(ip) == 4 { - buff[11] = '\xff' - buff[10] = '\xff' - } - return buff, nil - } - return []byte(ip), nil -} - -// Scan implements the driver.Valuer interface, json field interface -func (ip *IP) Scan(value interface{}) (err error) { - switch v := value.(type) { - case []byte: - if len(v) == 4 || len(v) == 16 { - *ip = IP(v) - } else { - err = errInvalidScanValue - } - case string: - if v == "" { - err = errInvalidScanValue - return - } - if (len(v) == 4 || len(v) == 16) && !strings.Contains(v, ".") && !strings.Contains(v, ":"){ - *ip = IP([]byte(v)) - return - } - if strings.Contains(v, ":") { - *ip = IP(net.ParseIP(v)) - return - } - *ip = IP(net.ParseIP(v).To4()) - case net.IP: - *ip = IP(v) - default: - err = errInvalidScanType - } - return -} - -// String implements the fmt.Stringer interface -func (ip IP) String() string { - return net.IP(ip).String() -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv4.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv4.go deleted file mode 100644 index ecf5ba39..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv4.go +++ /dev/null @@ -1,54 +0,0 @@ -package column - -import ( - "net" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type IPv4 struct { - base -} - -func (*IPv4) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Fixed(4) - if err != nil { - return nil, err - } - return net.IPv4(v[3], v[2], v[1], v[0]), nil -} - -func (ip *IPv4) Write(encoder *binary.Encoder, v interface{}) error { - var netIP net.IP - switch v.(type) { - case string: - netIP = net.ParseIP(v.(string)) - case net.IP: - netIP = v.(net.IP) - case *net.IP: - netIP = *(v.(*net.IP)) - default: - return &ErrUnexpectedType{ - T: v, - Column: ip, - } - } - - if netIP == nil { - return &ErrUnexpectedType{ - T: v, - Column: ip, - } - } - ip4 := netIP.To4() - if ip4 == nil { - return &ErrUnexpectedType{ - T: v, - Column: ip, - } - } - if _, err := encoder.Write([]byte{ip4[3], ip4[2], ip4[1], ip4[0]}); err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv6.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv6.go deleted file mode 100644 index 60c492b0..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/ipv6.go +++ /dev/null @@ -1,47 +0,0 @@ -package column - -import ( - "net" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type IPv6 struct { - base -} - -func (*IPv6) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.Fixed(16) - if err != nil { - return nil, err - } - return net.IP(v), nil -} - -func (ip *IPv6) Write(encoder *binary.Encoder, v interface{}) error { - var netIP net.IP - switch v.(type) { - case string: - netIP = net.ParseIP(v.(string)) - case net.IP: - netIP = v.(net.IP) - case *net.IP: - netIP = *(v.(*net.IP)) - default: - return &ErrUnexpectedType{ - T: v, - Column: ip, - } - } - - if netIP == nil { - return &ErrUnexpectedType{ - T: v, - Column: ip, - } - } - if _, err := encoder.Write([]byte(netIP.To16())); err != nil { - return err - } - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/nullable.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/nullable.go deleted file mode 100644 index b28424a5..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/nullable.go +++ /dev/null @@ -1,81 +0,0 @@ -package column - -import ( - "fmt" - "reflect" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type Nullable struct { - base - column Column -} - -func (null *Nullable) ScanType() reflect.Type { - return null.column.ScanType() -} - -func (null *Nullable) Read(decoder *binary.Decoder) (interface{}, error) { - return null.column.Read(decoder) -} - -func (null *Nullable) Write(encoder *binary.Encoder, v interface{}) error { - return nil -} - -func (null *Nullable) ReadNull(decoder *binary.Decoder, rows int) (_ []interface{}, err error) { - var ( - isNull byte - value interface{} - nulls = make([]byte, rows) - values = make([]interface{}, rows) - ) - for i := 0; i < rows; i++ { - if isNull, err = decoder.ReadByte(); err != nil { - return nil, err - } - nulls[i] = isNull - } - for i, isNull := range nulls { - switch value, err = null.column.Read(decoder); true { - case err != nil: - return nil, err - case isNull == 0: - values[i] = value - default: - values[i] = nil - } - } - return values, nil -} -func (null *Nullable) WriteNull(nulls, encoder *binary.Encoder, v interface{}) error { - if value := reflect.ValueOf(v); v == nil || (value.Kind() == reflect.Ptr && value.IsNil()) { - if _, err := nulls.Write([]byte{1}); err != nil { - return err - } - return null.column.Write(encoder, null.column.defaultValue()) - } - if _, err := nulls.Write([]byte{0}); err != nil { - return err - } - return null.column.Write(encoder, v) -} - -func parseNullable(name, chType string, timezone *time.Location) (*Nullable, error) { - if len(chType) < 14 { - return nil, fmt.Errorf("invalid Nullable column type: %s", chType) - } - column, err := Factory(name, chType[9:][:len(chType)-10], timezone) - if err != nil { - return nil, fmt.Errorf("Nullable(T): %v", err) - } - return &Nullable{ - base: base{ - name: name, - chType: chType, - }, - column: column, - }, nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/string.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/string.go deleted file mode 100644 index 6f8469c9..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/string.go +++ /dev/null @@ -1,33 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type String struct{ base } - -func (String) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.String() - if err != nil { - return "", err - } - return v, nil -} - -func (str *String) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case string: - return encoder.String(v) - case []byte: - return encoder.RawString(v) - - // this relies on Nullable never sending nil values through - case *string: - return encoder.String(*v) - } - - return &ErrUnexpectedType{ - T: v, - Column: str, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint16.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint16.go deleted file mode 100644 index 348f265f..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint16.go +++ /dev/null @@ -1,43 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type UInt16 struct{ base } - -func (UInt16) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.UInt16() - if err != nil { - return uint16(0), err - } - return v, nil -} - -func (u *UInt16) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case uint16: - return encoder.UInt16(v) - case int64: - return encoder.UInt16(uint16(v)) - case uint64: - return encoder.UInt16(uint16(v)) - case int: - return encoder.UInt16(uint16(v)) - - // this relies on Nullable never sending nil values through - case *uint16: - return encoder.UInt16(*v) - case *int64: - return encoder.UInt16(uint16(*v)) - case *uint64: - return encoder.UInt16(uint16(*v)) - case *int: - return encoder.UInt16(uint16(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: u, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint32.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint32.go deleted file mode 100644 index e52f775d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint32.go +++ /dev/null @@ -1,43 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type UInt32 struct{ base } - -func (UInt32) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.UInt32() - if err != nil { - return uint32(0), err - } - return v, nil -} - -func (u *UInt32) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case uint32: - return encoder.UInt32(v) - case uint64: - return encoder.UInt32(uint32(v)) - case int64: - return encoder.UInt32(uint32(v)) - case int: - return encoder.UInt32(uint32(v)) - - // this relies on Nullable never sending nil values through - case *uint64: - return encoder.UInt32(uint32(*v)) - case *uint32: - return encoder.UInt32(*v) - case *int64: - return encoder.UInt32(uint32(*v)) - case *int: - return encoder.UInt32(uint32(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: u, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint64.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint64.go deleted file mode 100644 index 70ceb981..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint64.go +++ /dev/null @@ -1,44 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type UInt64 struct{ base } - -func (UInt64) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.UInt64() - if err != nil { - return uint64(0), err - } - return v, nil -} - -func (u *UInt64) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case []byte: - if _, err := encoder.Write(v); err != nil { - return err - } - return nil - case uint64: - return encoder.UInt64(v) - case int64: - return encoder.UInt64(uint64(v)) - case int: - return encoder.UInt64(uint64(v)) - - // this relies on Nullable never sending nil values through - case *uint64: - return encoder.UInt64(*v) - case *int64: - return encoder.UInt64(uint64(*v)) - case *int: - return encoder.UInt64(uint64(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: u, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint8.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint8.go deleted file mode 100644 index 505738f6..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uint8.go +++ /dev/null @@ -1,47 +0,0 @@ -package column - -import ( - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type UInt8 struct{ base } - -func (UInt8) Read(decoder *binary.Decoder) (interface{}, error) { - v, err := decoder.UInt8() - if err != nil { - return uint8(0), err - } - return v, nil -} - -func (u *UInt8) Write(encoder *binary.Encoder, v interface{}) error { - switch v := v.(type) { - case bool: - return encoder.Bool(v) - case uint8: - return encoder.UInt8(v) - case int64: - return encoder.UInt8(uint8(v)) - case uint64: - return encoder.UInt8(uint8(v)) - case int: - return encoder.UInt8(uint8(v)) - - // this relies on Nullable never sending nil values through - case *bool: - return encoder.Bool(*v) - case *uint8: - return encoder.UInt8(*v) - case *int64: - return encoder.UInt8(uint8(*v)) - case *uint64: - return encoder.UInt8(uint8(*v)) - case *int: - return encoder.UInt8(uint8(*v)) - } - - return &ErrUnexpectedType{ - T: v, - Column: u, - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uuid.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uuid.go deleted file mode 100644 index 8d2cb8b2..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/column/uuid.go +++ /dev/null @@ -1,139 +0,0 @@ -package column - -import ( - "encoding/hex" - "errors" - "fmt" - "reflect" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -const ( - UUIDLen = 16 - NullUUID = "00000000-0000-0000-0000-000000000000" -) - -var ErrInvalidUUIDFormat = errors.New("invalid UUID format") - -type UUID struct { - base - scanType reflect.Type -} - -func (*UUID) Read(decoder *binary.Decoder) (interface{}, error) { - src, err := decoder.Fixed(UUIDLen) - if err != nil { - return "", err - } - - src = swap(src) - - var uuid [36]byte - { - hex.Encode(uuid[:], src[:4]) - uuid[8] = '-' - hex.Encode(uuid[9:13], src[4:6]) - uuid[13] = '-' - hex.Encode(uuid[14:18], src[6:8]) - uuid[18] = '-' - hex.Encode(uuid[19:23], src[8:10]) - uuid[23] = '-' - hex.Encode(uuid[24:], src[10:]) - } - return string(uuid[:]), nil -} - -func (u *UUID) Write(encoder *binary.Encoder, v interface{}) (err error) { - var uuid []byte - switch v := v.(type) { - case string: - if uuid, err = uuid2bytes(v); err != nil { - return err - } - case []byte: - if len(v) != UUIDLen { - return fmt.Errorf("invalid raw UUID len '%s' (expected %d, got %d)", uuid, UUIDLen, len(uuid)) - } - uuid = make([]byte, 16) - copy(uuid, v) - default: - return &ErrUnexpectedType{ - T: v, - Column: u, - } - } - - uuid = swap(uuid) - - if _, err := encoder.Write(uuid); err != nil { - return err - } - return nil -} - -func swap(src []byte) []byte { - _ = src[15] - src[0], src[7] = src[7], src[0] - src[1], src[6] = src[6], src[1] - src[2], src[5] = src[5], src[2] - src[3], src[4] = src[4], src[3] - src[8], src[15] = src[15], src[8] - src[9], src[14] = src[14], src[9] - src[10], src[13] = src[13], src[10] - src[11], src[12] = src[12], src[11] - return src -} - -func uuid2bytes(str string) ([]byte, error) { - var uuid [16]byte - strLength := len(str) - if strLength == 0 { - str = NullUUID - } else if strLength != 36 { - return nil, ErrInvalidUUIDFormat - } - if str[8] != '-' || str[13] != '-' || str[18] != '-' || str[23] != '-' { - return nil, ErrInvalidUUIDFormat - } - for i, x := range [16]int{ - 0, 2, 4, 6, - 9, 11, 14, 16, - 19, 21, 24, 26, - 28, 30, 32, 34, - } { - if v, ok := xtob(str[x], str[x+1]); !ok { - return nil, ErrInvalidUUIDFormat - } else { - uuid[i] = v - } - } - return uuid[:], nil -} - -// xvalues returns the value of a byte as a hexadecimal digit or 255. -var xvalues = [256]byte{ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, - 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -} - -// xtob converts hex characters x1 and x2 into a byte. -func xtob(x1, x2 byte) (byte, bool) { - b1 := xvalues[x1] - b2 := xvalues[x2] - return (b1 << 4) | b2, b1 != 255 && b2 != 255 -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block.go deleted file mode 100644 index d2d4f228..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block.go +++ /dev/null @@ -1,297 +0,0 @@ -package data - -import ( - "database/sql/driver" - "fmt" - "io" - "reflect" - "strings" - - "github.com/ClickHouse/clickhouse-go/lib/binary" - "github.com/ClickHouse/clickhouse-go/lib/column" - wb "github.com/ClickHouse/clickhouse-go/lib/writebuffer" -) - -type offset [][]int - -type Block struct { - Values [][]interface{} - Columns []column.Column - NumRows uint64 - NumColumns uint64 - offsets []offset - buffers []*buffer - info blockInfo -} - -func (block *Block) Copy() *Block { - return &Block{ - Columns: block.Columns, - NumColumns: block.NumColumns, - info: block.info, - } -} - -func (block *Block) ColumnNames() []string { - names := make([]string, 0, len(block.Columns)) - for _, column := range block.Columns { - names = append(names, column.Name()) - } - return names -} - -func (block *Block) Read(serverInfo *ServerInfo, decoder *binary.Decoder) (err error) { - if err = block.info.read(decoder); err != nil { - return err - } - - if block.NumColumns, err = decoder.Uvarint(); err != nil { - return err - } - if block.NumRows, err = decoder.Uvarint(); err != nil { - return err - } - block.Values = make([][]interface{}, block.NumColumns) - if block.NumRows > 10 { - for i := 0; i < int(block.NumColumns); i++ { - block.Values[i] = make([]interface{}, 0, block.NumRows) - } - } - for i := 0; i < int(block.NumColumns); i++ { - var ( - value interface{} - columnName string - columnType string - ) - if columnName, err = decoder.String(); err != nil { - return err - } - if columnType, err = decoder.String(); err != nil { - return err - } - c, err := column.Factory(columnName, columnType, serverInfo.Timezone) - if err != nil { - return err - } - block.Columns = append(block.Columns, c) - switch column := c.(type) { - case *column.Array: - if block.Values[i], err = column.ReadArray(decoder, int(block.NumRows)); err != nil { - return err - } - case *column.Nullable: - if block.Values[i], err = column.ReadNull(decoder, int(block.NumRows)); err != nil { - return err - } - default: - for row := 0; row < int(block.NumRows); row++ { - if value, err = column.Read(decoder); err != nil { - return err - } - block.Values[i] = append(block.Values[i], value) - } - } - } - return nil -} - -func (block *Block) writeArray(column column.Column, value Value, num, level int) error { - if level > column.Depth() { - return column.Write(block.buffers[num].Column, value.Interface()) - } - switch { - case value.Kind() == reflect.Slice: - if len(block.offsets[num]) < level { - block.offsets[num] = append(block.offsets[num], []int{value.Len()}) - } else { - block.offsets[num][level-1] = append( - block.offsets[num][level-1], - block.offsets[num][level-1][len(block.offsets[num][level-1])-1]+value.Len(), - ) - } - for i := 0; i < value.Len(); i++ { - if err := block.writeArray(column, value.Index(i), num, level+1); err != nil { - return err - } - } - default: - if err := column.Write(block.buffers[num].Column, value.Interface()); err != nil { - return err - } - } - return nil -} - -func (block *Block) AppendRow(args []driver.Value) error { - if len(block.Columns) != len(args) { - return fmt.Errorf("block: expected %d arguments (columns: %s), got %d", len(block.Columns), strings.Join(block.ColumnNames(), ", "), len(args)) - } - block.Reserve() - { - block.NumRows++ - } - for num, c := range block.Columns { - switch column := c.(type) { - case *column.Array: - value := reflect.ValueOf(args[num]) - if value.Kind() != reflect.Slice { - return fmt.Errorf("unsupported Array(T) type [%T]", value.Interface()) - } - if err := block.writeArray(c, newValue(value), num, 1); err != nil { - return err - } - case *column.Nullable: - if err := column.WriteNull(block.buffers[num].Offset, block.buffers[num].Column, args[num]); err != nil { - return err - } - default: - if err := column.Write(block.buffers[num].Column, args[num]); err != nil { - return err - } - } - } - return nil -} - -func (block *Block) Reserve() { - if len(block.buffers) == 0 { - block.buffers = make([]*buffer, len(block.Columns)) - block.offsets = make([]offset, len(block.Columns)) - for i := 0; i < len(block.Columns); i++ { - var ( - offsetBuffer = wb.New(wb.InitialSize) - columnBuffer = wb.New(wb.InitialSize) - ) - block.buffers[i] = &buffer{ - Offset: binary.NewEncoder(offsetBuffer), - Column: binary.NewEncoder(columnBuffer), - offsetBuffer: offsetBuffer, - columnBuffer: columnBuffer, - } - } - } -} - -func (block *Block) Reset() { - block.NumRows = 0 - block.NumColumns = 0 - for _, buffer := range block.buffers { - buffer.reset() - } - { - block.offsets = nil - block.buffers = nil - } -} - -func (block *Block) Write(serverInfo *ServerInfo, encoder *binary.Encoder) error { - if err := block.info.write(encoder); err != nil { - return err - } - encoder.Uvarint(block.NumColumns) - encoder.Uvarint(block.NumRows) - defer func() { - block.NumRows = 0 - for i := range block.offsets { - block.offsets[i] = offset{} - } - }() - for i, column := range block.Columns { - encoder.String(column.Name()) - encoder.String(column.CHType()) - if len(block.buffers) == len(block.Columns) { - for _, offsets := range block.offsets[i] { - for _, offset := range offsets { - if err := encoder.UInt64(uint64(offset)); err != nil { - return err - } - } - } - if _, err := block.buffers[i].WriteTo(encoder); err != nil { - return err - } - } - } - return nil -} - -type blockInfo struct { - num1 uint64 - isOverflows bool - num2 uint64 - bucketNum int32 - num3 uint64 -} - -func (info *blockInfo) read(decoder *binary.Decoder) error { - var err error - if info.num1, err = decoder.Uvarint(); err != nil { - return err - } - if info.isOverflows, err = decoder.Bool(); err != nil { - return err - } - if info.num2, err = decoder.Uvarint(); err != nil { - return err - } - if info.bucketNum, err = decoder.Int32(); err != nil { - return err - } - if info.num3, err = decoder.Uvarint(); err != nil { - return err - } - return nil -} - -func (info *blockInfo) write(encoder *binary.Encoder) error { - if err := encoder.Uvarint(1); err != nil { - return err - } - if err := encoder.Bool(info.isOverflows); err != nil { - return err - } - if err := encoder.Uvarint(2); err != nil { - return err - } - if info.bucketNum == 0 { - info.bucketNum = -1 - } - if err := encoder.Int32(info.bucketNum); err != nil { - return err - } - if err := encoder.Uvarint(0); err != nil { - return err - } - return nil -} - -type buffer struct { - Offset *binary.Encoder - Column *binary.Encoder - offsetBuffer *wb.WriteBuffer - columnBuffer *wb.WriteBuffer -} - -func (buf *buffer) WriteTo(w io.Writer) (int64, error) { - var size int64 - { - ln, err := buf.offsetBuffer.WriteTo(w) - if err != nil { - return size, err - } - size += ln - } - { - ln, err := buf.columnBuffer.WriteTo(w) - if err != nil { - return size, err - } - size += ln - } - return size, nil -} - -func (buf *buffer) reset() { - buf.offsetBuffer.Reset() - buf.columnBuffer.Reset() -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block_write_column.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block_write_column.go deleted file mode 100644 index efc50930..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/block_write_column.go +++ /dev/null @@ -1,101 +0,0 @@ -package data - -import ( - "fmt" - "reflect" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -func (block *Block) WriteDate(c int, v time.Time) error { - _, offset := v.Zone() - nday := (v.Unix() + int64(offset)) / 24 / 3600 - return block.buffers[c].Column.UInt16(uint16(nday)) -} - -func (block *Block) WriteDateTime(c int, v time.Time) error { - return block.buffers[c].Column.UInt32(uint32(v.Unix())) -} - -func (block *Block) WriteBool(c int, v bool) error { - if v { - return block.buffers[c].Column.UInt8(1) - } - return block.buffers[c].Column.UInt8(0) -} - -func (block *Block) WriteInt8(c int, v int8) error { - return block.buffers[c].Column.Int8(v) -} - -func (block *Block) WriteInt16(c int, v int16) error { - return block.buffers[c].Column.Int16(v) -} - -func (block *Block) WriteInt32(c int, v int32) error { - return block.buffers[c].Column.Int32(v) -} - -func (block *Block) WriteInt64(c int, v int64) error { - return block.buffers[c].Column.Int64(v) -} - -func (block *Block) WriteUInt8(c int, v uint8) error { - return block.buffers[c].Column.UInt8(v) -} - -func (block *Block) WriteUInt16(c int, v uint16) error { - return block.buffers[c].Column.UInt16(v) -} - -func (block *Block) WriteUInt32(c int, v uint32) error { - return block.buffers[c].Column.UInt32(v) -} - -func (block *Block) WriteUInt64(c int, v uint64) error { - return block.buffers[c].Column.UInt64(v) -} - -func (block *Block) WriteFloat32(c int, v float32) error { - return block.buffers[c].Column.Float32(v) -} - -func (block *Block) WriteFloat64(c int, v float64) error { - return block.buffers[c].Column.Float64(v) -} - -func (block *Block) WriteBytes(c int, v []byte) error { - if err := block.buffers[c].Column.Uvarint(uint64(len(v))); err != nil { - return err - } - if _, err := block.buffers[c].Column.Write(v); err != nil { - return err - } - return nil -} - -func (block *Block) WriteString(c int, v string) error { - if err := block.buffers[c].Column.Uvarint(uint64(len(v))); err != nil { - return err - } - if _, err := block.buffers[c].Column.Write(binary.Str2Bytes(v)); err != nil { - return err - } - return nil -} - -func (block *Block) WriteFixedString(c int, v []byte) error { - return block.Columns[c].Write(block.buffers[c].Column, v) -} - -func (block *Block) WriteArray(c int, v interface{}) error { - return block.WriteArrayWithValue(c, newValue(reflect.ValueOf(v))) -} - -func (block *Block) WriteArrayWithValue(c int, value Value) error { - if value.Kind() != reflect.Slice { - return fmt.Errorf("unsupported Array(T) type [%T]", value.Interface()) - } - return block.writeArray(block.Columns[c], value, c, 1) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/client_info.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/data/client_info.go deleted file mode 100644 index 0bff4198..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/client_info.go +++ /dev/null @@ -1,29 +0,0 @@ -package data - -import ( - "fmt" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -const ClientName = "Golang SQLDriver" - -const ( - ClickHouseRevision = 54213 - ClickHouseDBMSVersionMajor = 1 - ClickHouseDBMSVersionMinor = 1 -) - -type ClientInfo struct{} - -func (ClientInfo) Write(encoder *binary.Encoder) error { - encoder.String(ClientName) - encoder.Uvarint(ClickHouseDBMSVersionMajor) - encoder.Uvarint(ClickHouseDBMSVersionMinor) - encoder.Uvarint(ClickHouseRevision) - return nil -} - -func (ClientInfo) String() string { - return fmt.Sprintf("%s %d.%d.%d", ClientName, ClickHouseDBMSVersionMajor, ClickHouseDBMSVersionMinor, ClickHouseRevision) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/server_info.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/data/server_info.go deleted file mode 100644 index a6c90bed..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/server_info.go +++ /dev/null @@ -1,47 +0,0 @@ -package data - -import ( - "fmt" - //"io" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/binary" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -type ServerInfo struct { - Name string - Revision uint64 - MinorVersion uint64 - MajorVersion uint64 - Timezone *time.Location -} - -func (srv *ServerInfo) Read(decoder *binary.Decoder) (err error) { - if srv.Name, err = decoder.String(); err != nil { - return fmt.Errorf("could not read server name: %v", err) - } - if srv.MajorVersion, err = decoder.Uvarint(); err != nil { - return fmt.Errorf("could not read server major version: %v", err) - } - if srv.MinorVersion, err = decoder.Uvarint(); err != nil { - return fmt.Errorf("could not read server minor version: %v", err) - } - if srv.Revision, err = decoder.Uvarint(); err != nil { - return fmt.Errorf("could not read server revision: %v", err) - } - if srv.Revision >= protocol.DBMS_MIN_REVISION_WITH_SERVER_TIMEZONE { - timezone, err := decoder.String() - if err != nil { - return fmt.Errorf("could not read server timezone: %v", err) - } - if srv.Timezone, err = time.LoadLocation(timezone); err != nil { - return fmt.Errorf("could not load time location: %v", err) - } - } - return nil -} - -func (srv ServerInfo) String() string { - return fmt.Sprintf("%s %d.%d.%d (%s)", srv.Name, srv.MajorVersion, srv.MinorVersion, srv.Revision, srv.Timezone) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/value.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/data/value.go deleted file mode 100644 index 3c7e4ede..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/data/value.go +++ /dev/null @@ -1,33 +0,0 @@ -package data - -import "reflect" - -// Value is a writable value. -type Value interface { - // Kind returns value's Kind. - Kind() reflect.Kind - - // Len returns value's length. - // It panics if value's Kind is not Array, Chan, Map, Slice, or String. - Len() int - - // Index returns value's i'th element. - // It panics if value's Kind is not Array, Slice, or String or i is out of range. - Index(i int) Value - - // Interface returns value's current value as an interface{}. - Interface() interface{} -} - -// value is a wrapper that wraps reflect.Value to comply with Value interface. -type value struct { - reflect.Value -} - -func newValue(v reflect.Value) Value { - return value{Value: v} -} - -func (v value) Index(i int) Value { - return newValue(v.Value.Index(i)) -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/leakypool/leaky_pool.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/leakypool/leaky_pool.go deleted file mode 100644 index 8a779d3d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/leakypool/leaky_pool.go +++ /dev/null @@ -1,23 +0,0 @@ -package leakypool - -var pool chan []byte - -func InitBytePool(size int) { - pool = make(chan []byte, size) -} - -func GetBytes(size, capacity int) (b []byte) { - select { - case b = <-pool: - default: - b = make([]byte, size, capacity) - } - return -} - -func PutBytes(b []byte) { - select { - case pool <- b: - default: - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/LICENSE b/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/LICENSE deleted file mode 100644 index 85cbc1df..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2011-2012 Branimir Karadzic. All rights reserved. -Copyright 2013 Damian Gryski. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/doc.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/doc.go deleted file mode 100644 index 091981c8..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2011-2012 Branimir Karadzic. All rights reserved. -// Copyright 2013 Damian Gryski. All rights reserved. - -// @LINK: https://github.com/bkaradzic/go-lz4 -// @NOTE: The code is modified to be high performance and less memory usage - -package lz4 diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/fuzz.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/fuzz.go deleted file mode 100644 index e4989de9..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/fuzz.go +++ /dev/null @@ -1,23 +0,0 @@ -// +build gofuzz - -package lz4 - -import "encoding/binary" - -func Fuzz(data []byte) int { - - if len(data) < 4 { - return 0 - } - - ln := binary.LittleEndian.Uint32(data) - if ln > (1 << 21) { - return 0 - } - - if _, err := Decode(nil, data); err != nil { - return 0 - } - - return 1 -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/reader.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/reader.go deleted file mode 100644 index f8d38ea2..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/reader.go +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2011-2012 Branimir Karadzic. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -package lz4 - -import ( - "errors" - "io" -) - -var ( - // ErrCorrupt indicates the input was corrupt - ErrCorrupt = errors.New("corrupt input") -) - -const ( - mlBits = 4 - mlMask = (1 << mlBits) - 1 - runBits = 8 - mlBits - runMask = (1 << runBits) - 1 -) - -type decoder struct { - src []byte - dst []byte - spos uint32 - dpos uint32 - ref uint32 -} - -func (d *decoder) readByte() (uint8, error) { - if int(d.spos) == len(d.src) { - return 0, io.EOF - } - b := d.src[d.spos] - d.spos++ - return b, nil -} - -func (d *decoder) getLen() (uint32, error) { - - length := uint32(0) - ln, err := d.readByte() - if err != nil { - return 0, ErrCorrupt - } - for ln == 255 { - length += 255 - ln, err = d.readByte() - if err != nil { - return 0, ErrCorrupt - } - } - length += uint32(ln) - - return length, nil -} - -func (d *decoder) cp(length, decr uint32) { - - if int(d.ref+length) < int(d.dpos) { - copy(d.dst[d.dpos:], d.dst[d.ref:d.ref+length]) - } else { - for ii := uint32(0); ii < length; ii++ { - d.dst[d.dpos+ii] = d.dst[d.ref+ii] - } - } - d.dpos += length - d.ref += length - decr -} - -func (d *decoder) finish(err error) error { - if err == io.EOF { - return nil - } - - return err -} - -// Decode returns the decoded form of src. The returned slice may be a -// subslice of dst if it was large enough to hold the entire decoded block. -func Decode(dst, src []byte) (int, error) { - d := decoder{src: src, dst: dst, spos: 0} - - decr := []uint32{0, 3, 2, 3} - - for { - code, err := d.readByte() - if err != nil { - return len(d.dst), d.finish(err) - } - - length := uint32(code >> mlBits) - if length == runMask { - ln, err := d.getLen() - if err != nil { - return 0, ErrCorrupt - } - length += ln - } - - if int(d.spos+length) > len(d.src) || int(d.dpos+length) > len(d.dst) { - return 0, ErrCorrupt - } - - for ii := uint32(0); ii < length; ii++ { - d.dst[d.dpos+ii] = d.src[d.spos+ii] - } - - d.spos += length - d.dpos += length - - if int(d.spos) == len(d.src) { - return len(d.dst), nil - } - - if int(d.spos+2) >= len(d.src) { - return 0, ErrCorrupt - } - - back := uint32(d.src[d.spos]) | uint32(d.src[d.spos+1])<<8 - - if back > d.dpos { - return 0, ErrCorrupt - } - - d.spos += 2 - d.ref = d.dpos - back - - length = uint32(code & mlMask) - if length == mlMask { - ln, err := d.getLen() - if err != nil { - return 0, ErrCorrupt - } - length += ln - } - - literal := d.dpos - d.ref - - if literal < 4 { - if int(d.dpos+4) > len(d.dst) { - return 0, ErrCorrupt - } - - d.cp(4, decr[literal]) - } else { - length += 4 - } - - if int(d.dpos+length) > len(d.dst) { - return 0, ErrCorrupt - } - - d.cp(length, 0) - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/writer.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/writer.go deleted file mode 100644 index 969311be..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/lz4/writer.go +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2011-2012 Branimir Karadzic. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -package lz4 - -import ( - "errors" - "sync" -) - -const ( - minMatch = 4 - hashLog = 16 - hashTableSize = 1 << hashLog - hashShift = (minMatch * 8) - hashLog - incompressible uint32 = 128 - uninitHash = 0x88888888 - - mfLimit = 8 + minMatch // The last match cannot start within the last 12 bytes. - // MaxInputSize is the largest buffer than can be compressed in a single block - MaxInputSize = 0x7E000000 -) - -var ( - // ErrTooLarge indicates the input buffer was too large - ErrTooLarge = errors.New("input too large") - ErrEncodeTooSmall = errors.New("encode buffer too small") - - hashPool = sync.Pool{ - New: func() interface{} { - return make([]uint32, hashTableSize) - }, - } -) - -type encoder struct { - src []byte - dst []byte - hashTable []uint32 - pos uint32 - anchor uint32 - dpos uint32 -} - -// CompressBound returns the maximum length of a lz4 block -func CompressBound(isize int) int { - if isize > MaxInputSize { - return 0 - } - return isize + ((isize) / 255) + 16 -} - -func (e *encoder) writeLiterals(length, mlLen, pos uint32) { - - ln := length - - var code byte - if ln > runMask-1 { - code = runMask - } else { - code = byte(ln) - } - - if mlLen > mlMask-1 { - e.dst[e.dpos] = (code << mlBits) + byte(mlMask) - } else { - e.dst[e.dpos] = (code << mlBits) + byte(mlLen) - } - e.dpos++ - - if code == runMask { - ln -= runMask - for ; ln > 254; ln -= 255 { - e.dst[e.dpos] = 255 - e.dpos++ - } - - e.dst[e.dpos] = byte(ln) - e.dpos++ - } - - for ii := uint32(0); ii < length; ii++ { - e.dst[e.dpos+ii] = e.src[pos+ii] - } - - e.dpos += length -} - -// Encode returns the encoded form of src. The returned array may be a -// sub-slice of dst if it was large enough to hold the entire output. -func Encode(dst, src []byte) (compressedSize int, error error) { - if len(src) >= MaxInputSize { - return 0, ErrTooLarge - } - - if n := CompressBound(len(src)); len(dst) < n { - return 0, ErrEncodeTooSmall - } - - hashTable := hashPool.Get().([]uint32) - for i := range hashTable { - hashTable[i] = 0 - } - e := encoder{src: src, dst: dst, hashTable: hashTable} - defer func() { - hashPool.Put(hashTable) - }() - // binary.LittleEndian.PutUint32(dst, uint32(len(src))) - // e.dpos = 0 - - var ( - step uint32 = 1 - limit = incompressible - ) - - for { - if int(e.pos)+12 >= len(e.src) { - e.writeLiterals(uint32(len(e.src))-e.anchor, 0, e.anchor) - return int(e.dpos), nil - } - - sequence := uint32(e.src[e.pos+3])<<24 | uint32(e.src[e.pos+2])<<16 | uint32(e.src[e.pos+1])<<8 | uint32(e.src[e.pos+0]) - - hash := (sequence * 2654435761) >> hashShift - ref := e.hashTable[hash] + uninitHash - e.hashTable[hash] = e.pos - uninitHash - - if ((e.pos-ref)>>16) != 0 || uint32(e.src[ref+3])<<24|uint32(e.src[ref+2])<<16|uint32(e.src[ref+1])<<8|uint32(e.src[ref+0]) != sequence { - if e.pos-e.anchor > limit { - limit <<= 1 - step += 1 + (step >> 2) - } - e.pos += step - continue - } - - if step > 1 { - e.hashTable[hash] = ref - uninitHash - e.pos -= step - 1 - step = 1 - continue - } - limit = incompressible - - ln := e.pos - e.anchor - back := e.pos - ref - - anchor := e.anchor - - e.pos += minMatch - ref += minMatch - e.anchor = e.pos - - for int(e.pos) < len(e.src)-5 && e.src[e.pos] == e.src[ref] { - e.pos++ - ref++ - } - - mlLen := e.pos - e.anchor - - e.writeLiterals(ln, mlLen, anchor) - e.dst[e.dpos] = uint8(back) - e.dst[e.dpos+1] = uint8(back >> 8) - e.dpos += 2 - - if mlLen > mlMask-1 { - mlLen -= mlMask - for mlLen > 254 { - mlLen -= 255 - - e.dst[e.dpos] = 255 - e.dpos++ - } - - e.dst[e.dpos] = byte(mlLen) - e.dpos++ - } - - e.anchor = e.pos - } -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/README.md b/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/README.md deleted file mode 100644 index 84fdd48c..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# ClickHouse Native protocol - -# Handshake - diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/protocol.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/protocol.go deleted file mode 100644 index ba5fd7c7..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/protocol/protocol.go +++ /dev/null @@ -1,35 +0,0 @@ -package protocol - -const ( - DBMS_MIN_REVISION_WITH_SERVER_TIMEZONE = 54058 - DBMS_MIN_REVISION_WITH_QUOTA_KEY_IN_CLIENT_INFO = 54060 -) - -const ( - ClientHello = 0 - ClientQuery = 1 - ClientData = 2 - ClientCancel = 3 - ClientPing = 4 -) - -const ( - CompressEnable uint64 = 1 - CompressDisable uint64 = 0 -) - -const ( - StateComplete = 2 -) - -const ( - ServerHello = 0 - ServerData = 1 - ServerException = 2 - ServerProgress = 3 - ServerPong = 4 - ServerEndOfStream = 5 - ServerProfileInfo = 6 - ServerTotals = 7 - ServerExtremes = 8 -) diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/types/date.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/types/date.go deleted file mode 100644 index a7d0143b..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/types/date.go +++ /dev/null @@ -1,48 +0,0 @@ -// Timezoneless date/datetime types - -package types - -import ( - "database/sql/driver" - "time" -) - -// Truncate timezone -// -// clickhouse.Date(time.Date(2017, 1, 1, 0, 0, 0, 0, time.Local)) -> time.Date(2017, 1, 1, 0, 0, 0, 0, time.UTC) -type Date time.Time - -func (date Date) Value() (driver.Value, error) { - return date.convert(), nil -} - -func (date Date) convert() time.Time { - return time.Date(time.Time(date).Year(), time.Time(date).Month(), time.Time(date).Day(), 0, 0, 0, 0, time.UTC) -} - -// Truncate timezone -// -// clickhouse.DateTime(time.Date(2017, 1, 1, 0, 0, 0, 0, time.Local)) -> time.Date(2017, 1, 1, 0, 0, 0, 0, time.UTC) -type DateTime time.Time - -func (datetime DateTime) Value() (driver.Value, error) { - return datetime.convert(), nil -} - -func (datetime DateTime) convert() time.Time { - return time.Date( - time.Time(datetime).Year(), - time.Time(datetime).Month(), - time.Time(datetime).Day(), - time.Time(datetime).Hour(), - time.Time(datetime).Minute(), - time.Time(datetime).Second(), - 1, - time.UTC, - ) -} - -var ( - _ driver.Valuer = Date{} - _ driver.Valuer = DateTime{} -) diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/types/uuid.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/types/uuid.go deleted file mode 100644 index dc270a85..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/types/uuid.go +++ /dev/null @@ -1,99 +0,0 @@ -package types - -import ( - "database/sql/driver" - "encoding/hex" - "errors" - "fmt" -) - -var InvalidUUIDFormatError = errors.New("invalid UUID format") - -// this type will be deprecated because the ClickHouse server (>=1.1.54276) has a built-in type UUID -type UUID string - -func (str UUID) Value() (driver.Value, error) { - return uuid2bytes(string(str)) -} - -func (str UUID) MarshalBinary() ([]byte, error) { - return uuid2bytes(string(str)) -} - -func (str *UUID) Scan(v interface{}) error { - var src []byte - switch v := v.(type) { - case string: - src = []byte(v) - case []byte: - src = v - } - - if len(src) != 16 { - return fmt.Errorf("invalid UUID length: %d", len(src)) - } - - var uuid [36]byte - { - hex.Encode(uuid[:], src[:4]) - uuid[8] = '-' - hex.Encode(uuid[9:13], src[4:6]) - uuid[13] = '-' - hex.Encode(uuid[14:18], src[6:8]) - uuid[18] = '-' - hex.Encode(uuid[19:23], src[8:10]) - uuid[23] = '-' - hex.Encode(uuid[24:], src[10:]) - } - *str = UUID(uuid[:]) - return nil -} - -func uuid2bytes(str string) ([]byte, error) { - var uuid [16]byte - if str[8] != '-' || str[13] != '-' || str[18] != '-' || str[23] != '-' { - return nil, InvalidUUIDFormatError - } - for i, x := range [16]int{ - 0, 2, 4, 6, - 9, 11, 14, 16, - 19, 21, 24, 26, - 28, 30, 32, 34, - } { - if v, ok := xtob(str[x], str[x+1]); !ok { - return nil, InvalidUUIDFormatError - } else { - uuid[i] = v - } - } - return uuid[:], nil -} - -// xvalues returns the value of a byte as a hexadecimal digit or 255. -var xvalues = [256]byte{ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, - 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -} - -// xtob converts hex characters x1 and x2 into a byte. -func xtob(x1, x2 byte) (byte, bool) { - b1 := xvalues[x1] - b2 := xvalues[x2] - return (b1 << 4) | b2, b1 != 255 && b2 != 255 -} - -var _ driver.Valuer = UUID("") diff --git a/vendor/github.com/ClickHouse/clickhouse-go/lib/writebuffer/buffer.go b/vendor/github.com/ClickHouse/clickhouse-go/lib/writebuffer/buffer.go deleted file mode 100644 index d4e015ad..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/lib/writebuffer/buffer.go +++ /dev/null @@ -1,113 +0,0 @@ -package writebuffer - -import ( - "io" - - "github.com/ClickHouse/clickhouse-go/lib/leakypool" -) - -const InitialSize = 256 * 1024 - -func New(initSize int) *WriteBuffer { - wb := &WriteBuffer{} - wb.addChunk(0, initSize) - return wb -} - -type WriteBuffer struct { - chunks [][]byte -} - -func (wb *WriteBuffer) Write(data []byte) (int, error) { - var ( - chunkIdx = len(wb.chunks) - 1 - dataSize = len(data) - ) - for { - freeSize := cap(wb.chunks[chunkIdx]) - len(wb.chunks[chunkIdx]) - if freeSize >= len(data) { - wb.chunks[chunkIdx] = append(wb.chunks[chunkIdx], data...) - return dataSize, nil - } - wb.chunks[chunkIdx] = append(wb.chunks[chunkIdx], data[:freeSize]...) - data = data[freeSize:] - wb.addChunk(0, wb.calcCap(len(data))) - chunkIdx++ - } -} - -func (wb *WriteBuffer) WriteTo(w io.Writer) (int64, error) { - var size int64 - for _, chunk := range wb.chunks { - ln, err := w.Write(chunk) - if err != nil { - wb.Reset() - return 0, err - } - size += int64(ln) - } - wb.Reset() - return size, nil -} - -func (wb *WriteBuffer) Bytes() []byte { - if len(wb.chunks) == 1 { - return wb.chunks[0] - } - bytes := make([]byte, 0, wb.len()) - for _, chunk := range wb.chunks { - bytes = append(bytes, chunk...) - } - return bytes -} - -func (wb *WriteBuffer) addChunk(size, capacity int) { - chunk := leakypool.GetBytes(size, capacity) - if cap(chunk) >= size { - chunk = chunk[:size] - } - wb.chunks = append(wb.chunks, chunk) -} - -func (wb *WriteBuffer) len() int { - var v int - for _, chunk := range wb.chunks { - v += len(chunk) - } - return v -} - -func (wb *WriteBuffer) calcCap(dataSize int) int { - dataSize = max(dataSize, 64) - if len(wb.chunks) == 0 { - return dataSize - } - // Always double the size of the last chunk - return max(dataSize, cap(wb.chunks[len(wb.chunks)-1])*2) -} - -func (wb *WriteBuffer) Reset() { - if len(wb.chunks) == 0 { - return - } - // Recycle all chunks except the last one - chunkSizeThreshold := cap(wb.chunks[0]) - for _, chunk := range wb.chunks[:len(wb.chunks)-1] { - // Drain chunks smaller than the initial size - if cap(chunk) >= chunkSizeThreshold { - leakypool.PutBytes(chunk[:0]) - } else { - chunkSizeThreshold = cap(chunk) - } - } - // Keep the largest chunk - wb.chunks[0] = wb.chunks[len(wb.chunks)-1][:0] - wb.chunks = wb.chunks[:1] -} - -func max(a, b int) int { - if b > a { - return b - } - return a -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/query_settings.go b/vendor/github.com/ClickHouse/clickhouse-go/query_settings.go deleted file mode 100644 index 49ab0cf3..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/query_settings.go +++ /dev/null @@ -1,282 +0,0 @@ -package clickhouse - -import ( - "fmt" - "net/url" - "strconv" - - "github.com/ClickHouse/clickhouse-go/lib/binary" -) - -type querySettingType int - -// all possible query setting's data type -const ( - uintQS querySettingType = iota + 1 - intQS - boolQS - timeQS -) - -// description of single query setting -type querySettingInfo struct { - name string - qsType querySettingType -} - -// all possible query settings -var querySettingList = []querySettingInfo{ - {"min_compress_block_size", uintQS}, - {"max_compress_block_size", uintQS}, - {"max_block_size", uintQS}, - {"max_insert_block_size", uintQS}, - {"min_insert_block_size_rows", uintQS}, - {"min_insert_block_size_bytes", uintQS}, - {"max_read_buffer_size", uintQS}, - {"max_distributed_connections", uintQS}, - {"max_query_size", uintQS}, - {"interactive_delay", uintQS}, - {"poll_interval", uintQS}, - {"distributed_connections_pool_size", uintQS}, - {"connections_with_failover_max_tries", uintQS}, - {"background_pool_size", uintQS}, - {"background_schedule_pool_size", uintQS}, - {"replication_alter_partitions_sync", uintQS}, - {"replication_alter_columns_timeout", uintQS}, - {"min_count_to_compile", uintQS}, - {"min_count_to_compile_expression", uintQS}, - {"group_by_two_level_threshold", uintQS}, - {"group_by_two_level_threshold_bytes", uintQS}, - {"aggregation_memory_efficient_merge_threads", uintQS}, - {"max_parallel_replicas", uintQS}, - {"parallel_replicas_count", uintQS}, - {"parallel_replica_offset", uintQS}, - {"merge_tree_min_rows_for_concurrent_read", uintQS}, - {"merge_tree_min_bytes_for_concurrent_read", uintQS}, - {"merge_tree_min_rows_for_seek", uintQS}, - {"merge_tree_min_bytes_for_seek", uintQS}, - {"merge_tree_coarse_index_granularity", uintQS}, - {"merge_tree_max_rows_to_use_cache", uintQS}, - {"merge_tree_max_bytes_to_use_cache", uintQS}, - {"mysql_max_rows_to_insert", uintQS}, - {"optimize_min_equality_disjunction_chain_length", uintQS}, - {"min_bytes_to_use_direct_io", uintQS}, - {"mark_cache_min_lifetime", uintQS}, - {"priority", uintQS}, - {"log_queries_cut_to_length", uintQS}, - {"max_concurrent_queries_for_user", uintQS}, - {"insert_quorum", uintQS}, - {"select_sequential_consistency", uintQS}, - {"table_function_remote_max_addresses", uintQS}, - {"read_backoff_max_throughput", uintQS}, - {"read_backoff_min_events", uintQS}, - {"output_format_pretty_max_rows", uintQS}, - {"output_format_pretty_max_column_pad_width", uintQS}, - {"output_format_parquet_row_group_size", uintQS}, - {"http_headers_progress_interval_ms", uintQS}, - {"input_format_allow_errors_num", uintQS}, - {"preferred_block_size_bytes", uintQS}, - {"max_replica_delay_for_distributed_queries", uintQS}, - {"preferred_max_column_in_block_size_bytes", uintQS}, - {"insert_distributed_timeout", uintQS}, - {"odbc_max_field_size", uintQS}, - {"max_rows_to_read", uintQS}, - {"max_bytes_to_read", uintQS}, - {"max_rows_to_group_by", uintQS}, - {"max_bytes_before_external_group_by", uintQS}, - {"max_rows_to_sort", uintQS}, - {"max_bytes_to_sort", uintQS}, - {"max_bytes_before_external_sort", uintQS}, - {"max_bytes_before_remerge_sort", uintQS}, - {"max_result_rows", uintQS}, - {"max_result_bytes", uintQS}, - {"min_execution_speed", uintQS}, - {"max_execution_speed", uintQS}, - {"min_execution_speed_bytes", uintQS}, - {"max_execution_speed_bytes", uintQS}, - {"max_columns_to_read", uintQS}, - {"max_temporary_columns", uintQS}, - {"max_temporary_non_const_columns", uintQS}, - {"max_subquery_depth", uintQS}, - {"max_pipeline_depth", uintQS}, - {"max_ast_depth", uintQS}, - {"max_ast_elements", uintQS}, - {"max_expanded_ast_elements", uintQS}, - {"readonly", uintQS}, - {"max_rows_in_set", uintQS}, - {"max_bytes_in_set", uintQS}, - {"max_rows_in_join", uintQS}, - {"max_bytes_in_join", uintQS}, - {"max_rows_to_transfer", uintQS}, - {"max_bytes_to_transfer", uintQS}, - {"max_rows_in_distinct", uintQS}, - {"max_bytes_in_distinct", uintQS}, - {"max_memory_usage", uintQS}, - {"max_memory_usage_for_user", uintQS}, - {"max_memory_usage_for_all_queries", uintQS}, - {"max_network_bandwidth", uintQS}, - {"max_network_bytes", uintQS}, - {"max_network_bandwidth_for_user", uintQS}, - {"max_network_bandwidth_for_all_users", uintQS}, - {"low_cardinality_max_dictionary_size", uintQS}, - {"max_fetch_partition_retries_count", uintQS}, - {"http_max_multipart_form_data_size", uintQS}, - {"max_partitions_per_insert_block", uintQS}, - - {"network_zstd_compression_level", intQS}, - {"http_zlib_compression_level", intQS}, - {"distributed_ddl_task_timeout", intQS}, - - {"extremes", boolQS}, - {"use_uncompressed_cache", boolQS}, - {"replace_running_query", boolQS}, - {"distributed_directory_monitor_batch_inserts", boolQS}, - {"optimize_move_to_prewhere", boolQS}, - {"compile", boolQS}, - {"allow_suspicious_low_cardinality_types", boolQS}, - {"compile_expressions", boolQS}, - {"distributed_aggregation_memory_efficient", boolQS}, - {"skip_unavailable_shards", boolQS}, - {"distributed_group_by_no_merge", boolQS}, - {"optimize_skip_unused_shards", boolQS}, - {"merge_tree_uniform_read_distribution", boolQS}, - {"force_index_by_date", boolQS}, - {"force_primary_key", boolQS}, - {"log_queries", boolQS}, - {"insert_deduplicate", boolQS}, - {"enable_http_compression", boolQS}, - {"http_native_compression_disable_checksumming_on_decompress", boolQS}, - {"output_format_write_statistics", boolQS}, - {"add_http_cors_header", boolQS}, - {"input_format_skip_unknown_fields", boolQS}, - {"input_format_with_names_use_header", boolQS}, - {"input_format_import_nested_json", boolQS}, - {"input_format_defaults_for_omitted_fields", boolQS}, - {"input_format_values_interpret_expressions", boolQS}, - {"output_format_json_quote_64bit_integers", boolQS}, - {"output_format_json_quote_denormals", boolQS}, - {"output_format_json_escape_forward_slashes", boolQS}, - {"output_format_pretty_color", boolQS}, - {"use_client_time_zone", boolQS}, - {"send_progress_in_http_headers", boolQS}, - {"fsync_metadata", boolQS}, - {"join_use_nulls", boolQS}, - {"fallback_to_stale_replicas_for_distributed_queries", boolQS}, - {"insert_distributed_sync", boolQS}, - {"insert_allow_materialized_columns", boolQS}, - {"optimize_throw_if_noop", boolQS}, - {"use_index_for_in_with_subqueries", boolQS}, - {"empty_result_for_aggregation_by_empty_set", boolQS}, - {"allow_distributed_ddl", boolQS}, - {"join_any_take_last_row", boolQS}, - {"format_csv_allow_single_quotes", boolQS}, - {"format_csv_allow_double_quotes", boolQS}, - {"log_profile_events", boolQS}, - {"log_query_settings", boolQS}, - {"log_query_threads", boolQS}, - {"enable_optimize_predicate_expression", boolQS}, - {"low_cardinality_use_single_dictionary_for_part", boolQS}, - {"decimal_check_overflow", boolQS}, - {"prefer_localhost_replica", boolQS}, - //{"asterisk_left_columns_only", boolQS}, - {"calculate_text_stack_trace", boolQS}, - {"allow_ddl", boolQS}, - {"parallel_view_processing", boolQS}, - {"enable_debug_queries", boolQS}, - {"enable_unaligned_array_join", boolQS}, - {"low_cardinality_allow_in_native_format", boolQS}, - {"allow_experimental_multiple_joins_emulation", boolQS}, - {"allow_experimental_cross_to_join_conversion", boolQS}, - {"cancel_http_readonly_queries_on_client_close", boolQS}, - {"external_table_functions_use_nulls", boolQS}, - {"allow_experimental_data_skipping_indices", boolQS}, - {"allow_hyperscan", boolQS}, - {"allow_simdjson", boolQS}, - - {"connect_timeout", timeQS}, - {"connect_timeout_with_failover_ms", timeQS}, - {"receive_timeout", timeQS}, - {"send_timeout", timeQS}, - {"tcp_keep_alive_timeout", timeQS}, - {"queue_max_wait_ms", timeQS}, - {"distributed_directory_monitor_sleep_time_ms", timeQS}, - {"insert_quorum_timeout", timeQS}, - {"read_backoff_min_latency_ms", timeQS}, - {"read_backoff_min_interval_between_events_ms", timeQS}, - {"stream_flush_interval_ms", timeQS}, - {"stream_poll_timeout_ms", timeQS}, - {"http_connection_timeout", timeQS}, - {"http_send_timeout", timeQS}, - {"http_receive_timeout", timeQS}, - {"max_execution_time", timeQS}, - {"timeout_before_checking_execution_speed", timeQS}, -} - -type querySettingValueEncoder func(enc *binary.Encoder) error - -type querySettings struct { - settings map[string]querySettingValueEncoder - settingsStr string // used for debug output -} - -func makeQuerySettings(query url.Values) (*querySettings, error) { - qs := &querySettings{ - settings: make(map[string]querySettingValueEncoder), - settingsStr: "", - } - - for _, info := range querySettingList { - valueStr := query.Get(info.name) - if valueStr == "" { - continue - } - - switch info.qsType { - case uintQS, intQS, timeQS: - value, err := strconv.ParseUint(valueStr, 10, 64) - if err != nil { - return nil, err - } - qs.settings[info.name] = func(enc *binary.Encoder) error { return enc.Uvarint(value) } - - case boolQS: - valueBool, err := strconv.ParseBool(valueStr) - if err != nil { - return nil, err - } - value := uint64(0) - if valueBool { - value = 1 - } - qs.settings[info.name] = func(enc *binary.Encoder) error { return enc.Uvarint(value) } - - default: - err := fmt.Errorf("query setting %s has unsupported data type", info.name) - return nil, err - } - - if qs.settingsStr != "" { - qs.settingsStr += "&" - } - qs.settingsStr += info.name + "=" + valueStr - } - - return qs, nil -} - -func (qs *querySettings) IsEmpty() bool { - return len(qs.settings) == 0 -} - -func (qs *querySettings) Serialize(enc *binary.Encoder) error { - for name, fn := range qs.settings { - if err := enc.String(name); err != nil { - return err - } - if err := fn(enc); err != nil { - return err - } - } - - return nil -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/result.go b/vendor/github.com/ClickHouse/clickhouse-go/result.go deleted file mode 100644 index fc08cf4d..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/result.go +++ /dev/null @@ -1,8 +0,0 @@ -package clickhouse - -import "errors" - -type result struct{} - -func (*result) LastInsertId() (int64, error) { return 0, errors.New("LastInsertId is not supported") } -func (*result) RowsAffected() (int64, error) { return 0, errors.New("RowsAffected is not supported") } diff --git a/vendor/github.com/ClickHouse/clickhouse-go/rows.go b/vendor/github.com/ClickHouse/clickhouse-go/rows.go deleted file mode 100644 index 8701794a..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/rows.go +++ /dev/null @@ -1,163 +0,0 @@ -package clickhouse - -import ( - "database/sql/driver" - "fmt" - "io" - "reflect" - "sync" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/column" - "github.com/ClickHouse/clickhouse-go/lib/data" - "github.com/ClickHouse/clickhouse-go/lib/protocol" -) - -type rows struct { - ch *clickhouse - err error - mutex sync.RWMutex - finish func() - offset int - block *data.Block - totals *data.Block - extremes *data.Block - stream chan *data.Block - columns []string - blockColumns []column.Column -} - -func (rows *rows) Columns() []string { - return rows.columns -} - -func (rows *rows) ColumnTypeScanType(idx int) reflect.Type { - return rows.blockColumns[idx].ScanType() -} - -func (rows *rows) ColumnTypeDatabaseTypeName(idx int) string { - return rows.blockColumns[idx].CHType() -} - -func (rows *rows) Next(dest []driver.Value) error { - if rows.block == nil || int(rows.block.NumRows) <= rows.offset { - switch block, ok := <-rows.stream; true { - case !ok: - if err := rows.error(); err != nil { - return err - } - return io.EOF - default: - rows.block = block - rows.offset = 0 - } - } - for i := range dest { - dest[i] = rows.block.Values[i][rows.offset] - } - rows.offset++ - return nil -} - -func (rows *rows) HasNextResultSet() bool { - return rows.totals != nil || rows.extremes != nil -} - -func (rows *rows) NextResultSet() error { - switch { - case rows.totals != nil: - rows.block = rows.totals - rows.offset = 0 - rows.totals = nil - case rows.extremes != nil: - rows.block = rows.extremes - rows.offset = 0 - rows.extremes = nil - default: - return io.EOF - } - return nil -} - -func (rows *rows) receiveData() error { - defer close(rows.stream) - var ( - err error - packet uint64 - progress *progress - profileInfo *profileInfo - ) - for { - if packet, err = rows.ch.decoder.Uvarint(); err != nil { - return rows.setError(err) - } - switch packet { - case protocol.ServerException: - rows.ch.logf("[rows] <- exception") - return rows.setError(rows.ch.exception()) - case protocol.ServerProgress: - if progress, err = rows.ch.progress(); err != nil { - return rows.setError(err) - } - rows.ch.logf("[rows] <- progress: rows=%d, bytes=%d, total rows=%d", - progress.rows, - progress.bytes, - progress.totalRows, - ) - case protocol.ServerProfileInfo: - if profileInfo, err = rows.ch.profileInfo(); err != nil { - return rows.setError(err) - } - rows.ch.logf("[rows] <- profiling: rows=%d, bytes=%d, blocks=%d", profileInfo.rows, profileInfo.bytes, profileInfo.blocks) - case protocol.ServerData, protocol.ServerTotals, protocol.ServerExtremes: - var ( - block *data.Block - begin = time.Now() - ) - if block, err = rows.ch.readBlock(); err != nil { - return rows.setError(err) - } - rows.ch.logf("[rows] <- data: packet=%d, columns=%d, rows=%d, elapsed=%s", packet, block.NumColumns, block.NumRows, time.Since(begin)) - if block.NumRows == 0 { - continue - } - switch packet { - case protocol.ServerData: - rows.stream <- block - case protocol.ServerTotals: - rows.totals = block - case protocol.ServerExtremes: - rows.extremes = block - } - case protocol.ServerEndOfStream: - rows.ch.logf("[rows] <- end of stream") - return nil - default: - rows.ch.conn.Close() - rows.ch.logf("[rows] unexpected packet [%d]", packet) - return rows.setError(fmt.Errorf("[rows] unexpected packet [%d] from server", packet)) - } - } -} - -func (rows *rows) Close() error { - rows.ch.logf("[rows] close") - rows.columns = nil - for range rows.stream { - } - rows.finish() - return nil -} - -func (rows *rows) error() error { - rows.mutex.RLock() - defer rows.mutex.RUnlock() - return rows.err -} - -func (rows *rows) setError(err error) error { - rows.mutex.Lock() - rows.err = err - rows.mutex.Unlock() - return err -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/stmt.go b/vendor/github.com/ClickHouse/clickhouse-go/stmt.go deleted file mode 100644 index 4c3fd1c5..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/stmt.go +++ /dev/null @@ -1,185 +0,0 @@ -package clickhouse - -import ( - "bytes" - "context" - "database/sql/driver" - "unicode" - - "github.com/ClickHouse/clickhouse-go/lib/data" -) - -type stmt struct { - ch *clickhouse - query string - counter int - numInput int - isInsert bool -} - -var emptyResult = &result{} - -func (stmt *stmt) NumInput() int { - switch { - case stmt.ch.block != nil: - return len(stmt.ch.block.Columns) - case stmt.numInput < 0: - return 0 - } - return stmt.numInput -} - -func (stmt *stmt) Exec(args []driver.Value) (driver.Result, error) { - return stmt.execContext(context.Background(), args) -} - -func (stmt *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { - dargs := make([]driver.Value, len(args)) - for i, nv := range args { - dargs[i] = nv.Value - } - return stmt.execContext(ctx, dargs) -} - -func (stmt *stmt) execContext(ctx context.Context, args []driver.Value) (driver.Result, error) { - if stmt.isInsert { - stmt.counter++ - if err := stmt.ch.block.AppendRow(args); err != nil { - return nil, err - } - if (stmt.counter % stmt.ch.blockSize) == 0 { - stmt.ch.logf("[exec] flush block") - if err := stmt.ch.writeBlock(stmt.ch.block); err != nil { - return nil, err - } - if err := stmt.ch.encoder.Flush(); err != nil { - return nil, err - } - } - return emptyResult, nil - } - if err := stmt.ch.sendQuery(stmt.bind(convertOldArgs(args))); err != nil { - return nil, err - } - if err := stmt.ch.process(); err != nil { - return nil, err - } - return emptyResult, nil -} - -func (stmt *stmt) Query(args []driver.Value) (driver.Rows, error) { - return stmt.queryContext(context.Background(), convertOldArgs(args)) -} - -func (stmt *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - return stmt.queryContext(ctx, args) -} - -func (stmt *stmt) queryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - finish := stmt.ch.watchCancel(ctx) - if err := stmt.ch.sendQuery(stmt.bind(args)); err != nil { - finish() - return nil, err - } - meta, err := stmt.ch.readMeta() - if err != nil { - finish() - return nil, err - } - rows := rows{ - ch: stmt.ch, - finish: finish, - stream: make(chan *data.Block, 50), - columns: meta.ColumnNames(), - blockColumns: meta.Columns, - } - go rows.receiveData() - return &rows, nil -} - -func (stmt *stmt) Close() error { - stmt.ch.logf("[stmt] close") - return nil -} - -func (stmt *stmt) bind(args []driver.NamedValue) string { - var ( - buf bytes.Buffer - index int - keyword bool - inBetween bool - like = newMatcher("like") - limit = newMatcher("limit") - between = newMatcher("between") - and = newMatcher("and") - ) - switch { - case stmt.NumInput() != 0: - reader := bytes.NewReader([]byte(stmt.query)) - for { - if char, _, err := reader.ReadRune(); err == nil { - switch char { - case '@': - if param := paramParser(reader); len(param) != 0 { - for _, v := range args { - if len(v.Name) != 0 && v.Name == param { - buf.WriteString(quote(v.Value)) - } - } - } - case '?': - if keyword && index < len(args) && len(args[index].Name) == 0 { - buf.WriteString(quote(args[index].Value)) - index++ - } else { - buf.WriteRune(char) - } - default: - switch { - case - char == '=', - char == '<', - char == '>', - char == '(', - char == ',', - char == '+', - char == '-', - char == '*', - char == '/', - char == '[': - keyword = true - default: - if limit.matchRune(char) || like.matchRune(char) { - keyword = true - } else if between.matchRune(char) { - keyword = true - inBetween = true - } else if inBetween && and.matchRune(char) { - keyword = true - inBetween = false - } else { - keyword = keyword && unicode.IsSpace(char) - } - } - buf.WriteRune(char) - } - } else { - break - } - } - default: - buf.WriteString(stmt.query) - } - return buf.String() -} - -func convertOldArgs(args []driver.Value) []driver.NamedValue { - dargs := make([]driver.NamedValue, len(args)) - for i, v := range args { - dargs[i] = driver.NamedValue{ - Ordinal: i + 1, - Value: v, - } - } - return dargs -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/tls_config.go b/vendor/github.com/ClickHouse/clickhouse-go/tls_config.go deleted file mode 100644 index a61095da..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/tls_config.go +++ /dev/null @@ -1,45 +0,0 @@ -package clickhouse - -import ( - "crypto/tls" - "sync" -) - -// Based on the original implementation in the project go-sql-driver/mysql: -// https://github.com/go-sql-driver/mysql/blob/master/utils.go - -var ( - tlsConfigLock sync.RWMutex - tlsConfigRegistry map[string]*tls.Config -) - -// RegisterTLSConfig registers a custom tls.Config to be used with sql.Open. -func RegisterTLSConfig(key string, config *tls.Config) error { - tlsConfigLock.Lock() - if tlsConfigRegistry == nil { - tlsConfigRegistry = make(map[string]*tls.Config) - } - - tlsConfigRegistry[key] = config - tlsConfigLock.Unlock() - return nil -} - -// DeregisterTLSConfig removes the tls.Config associated with key. -func DeregisterTLSConfig(key string) { - tlsConfigLock.Lock() - if tlsConfigRegistry != nil { - delete(tlsConfigRegistry, key) - } - tlsConfigLock.Unlock() -} - -func getTLSConfigClone(key string) (config *tls.Config) { - tlsConfigLock.RLock() - if v, ok := tlsConfigRegistry[key]; ok { - config = v.Clone() - } - tlsConfigLock.RUnlock() - return -} - diff --git a/vendor/github.com/ClickHouse/clickhouse-go/word_matcher.go b/vendor/github.com/ClickHouse/clickhouse-go/word_matcher.go deleted file mode 100644 index 7cd9dcd7..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/word_matcher.go +++ /dev/null @@ -1,31 +0,0 @@ -package clickhouse - -import ( - "strings" - "unicode" -) - -// wordMatcher is a simple automata to match a single word (case insensitive) -type wordMatcher struct { - word []rune - position uint8 -} - -// newMatcher returns matcher for word needle -func newMatcher(needle string) *wordMatcher { - return &wordMatcher{word: []rune(strings.ToUpper(needle)), - position: 0} -} - -func (m *wordMatcher) matchRune(r rune) bool { - if m.word[m.position] == unicode.ToUpper(r) { - if m.position == uint8(len(m.word)-1) { - m.position = 0 - return true - } - m.position++ - } else { - m.position = 0 - } - return false -} diff --git a/vendor/github.com/ClickHouse/clickhouse-go/write_column.go b/vendor/github.com/ClickHouse/clickhouse-go/write_column.go deleted file mode 100644 index 4ac0819c..00000000 --- a/vendor/github.com/ClickHouse/clickhouse-go/write_column.go +++ /dev/null @@ -1,54 +0,0 @@ -package clickhouse - -import ( - "database/sql" - "database/sql/driver" - "time" - - "github.com/ClickHouse/clickhouse-go/lib/data" -) - -// Interface for Clickhouse driver -type Clickhouse interface { - Block() (*data.Block, error) - Prepare(query string) (driver.Stmt, error) - Begin() (driver.Tx, error) - Commit() error - Rollback() error - Close() error - WriteBlock(block *data.Block) error -} - -// Interface for Block allowing writes to individual columns -type ColumnWriter interface { - WriteDate(c int, v time.Time) error - WriteDateTime(c int, v time.Time) error - WriteUInt8(c int, v uint8) error - WriteUInt16(c int, v uint16) error - WriteUInt32(c int, v uint32) error - WriteUInt64(c int, v uint64) error - WriteFloat32(c int, v float32) error - WriteFloat64(c int, v float64) error - WriteBytes(c int, v []byte) error - WriteArray(c int, v interface{}) error - WriteString(c int, v string) error - WriteFixedString(c int, v []byte) error -} - -func OpenDirect(dsn string) (Clickhouse, error) { - return open(dsn) -} - -func (ch *clickhouse) Block() (*data.Block, error) { - if ch.block == nil { - return nil, sql.ErrTxDone - } - return ch.block, nil -} - -func (ch *clickhouse) WriteBlock(block *data.Block) error { - if block == nil { - return sql.ErrTxDone - } - return ch.writeBlock(block) -} diff --git a/vendor/github.com/beorn7/perks/LICENSE b/vendor/github.com/beorn7/perks/LICENSE deleted file mode 100644 index 339177be..00000000 --- a/vendor/github.com/beorn7/perks/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (C) 2013 Blake Mizerany - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/beorn7/perks/quantile/exampledata.txt b/vendor/github.com/beorn7/perks/quantile/exampledata.txt deleted file mode 100644 index 1602287d..00000000 --- a/vendor/github.com/beorn7/perks/quantile/exampledata.txt +++ /dev/null @@ -1,2388 +0,0 @@ -8 -5 -26 -12 -5 -235 -13 -6 -28 -30 -3 -3 -3 -3 -5 -2 -33 -7 -2 -4 -7 -12 -14 -5 -8 -3 -10 -4 -5 -3 -6 -6 -209 -20 -3 -10 -14 -3 -4 -6 -8 -5 -11 -7 -3 -2 -3 -3 -212 -5 -222 -4 -10 -10 -5 -6 -3 -8 -3 -10 -254 -220 -2 -3 -5 -24 -5 -4 -222 -7 -3 -3 -223 -8 -15 -12 -14 -14 -3 -2 -2 -3 -13 -3 -11 -4 -4 -6 -5 -7 -13 -5 -3 -5 -2 -5 -3 -5 -2 -7 -15 -17 -14 -3 -6 -6 -3 -17 -5 -4 -7 -6 -4 -4 -8 -6 -8 -3 -9 -3 -6 -3 -4 -5 -3 -3 -660 -4 -6 -10 -3 -6 -3 -2 -5 -13 -2 -4 -4 -10 -4 -8 -4 -3 -7 -9 -9 -3 -10 -37 -3 -13 -4 -12 -3 -6 -10 -8 -5 -21 -2 -3 -8 -3 -2 -3 -3 -4 -12 -2 -4 -8 -8 -4 -3 -2 -20 -1 -6 -32 -2 -11 -6 -18 -3 -8 -11 -3 -212 -3 -4 -2 -6 -7 -12 -11 -3 -2 -16 -10 -6 -4 -6 -3 -2 -7 -3 -2 -2 -2 -2 -5 -6 -4 -3 -10 -3 -4 -6 -5 -3 -4 -4 -5 -6 -4 -3 -4 -4 -5 -7 -5 -5 -3 -2 -7 -2 -4 -12 -4 -5 -6 -2 -4 -4 -8 -4 -15 -13 -7 -16 -5 -3 -23 -5 -5 -7 -3 -2 -9 -8 -7 -5 -8 -11 -4 -10 -76 -4 -47 -4 -3 -2 -7 -4 -2 -3 -37 -10 -4 -2 -20 -5 -4 -4 -10 -10 -4 -3 -7 -23 -240 -7 -13 -5 -5 -3 -3 -2 -5 -4 -2 -8 -7 -19 -2 -23 -8 -7 -2 -5 -3 -8 -3 -8 -13 -5 -5 -5 -2 -3 -23 -4 -9 -8 -4 -3 -3 -5 -220 -2 -3 -4 -6 -14 -3 -53 -6 -2 -5 -18 -6 -3 -219 -6 -5 -2 -5 -3 -6 -5 -15 -4 -3 -17 -3 -2 -4 -7 -2 -3 -3 -4 -4 -3 -2 -664 -6 -3 -23 -5 -5 -16 -5 -8 -2 -4 -2 -24 -12 -3 -2 -3 -5 -8 -3 -5 -4 -3 -14 -3 -5 -8 -2 -3 -7 -9 -4 -2 -3 -6 -8 -4 -3 -4 -6 -5 -3 -3 -6 -3 -19 -4 -4 -6 -3 -6 -3 -5 -22 -5 -4 -4 -3 -8 -11 -4 -9 -7 -6 -13 -4 -4 -4 -6 -17 -9 -3 -3 -3 -4 -3 -221 -5 -11 -3 -4 -2 -12 -6 -3 -5 -7 -5 -7 -4 -9 -7 -14 -37 -19 -217 -16 -3 -5 -2 -2 -7 -19 -7 -6 -7 -4 -24 -5 -11 -4 -7 -7 -9 -13 -3 -4 -3 -6 -28 -4 -4 -5 -5 -2 -5 -6 -4 -4 -6 -10 -5 -4 -3 -2 -3 -3 -6 -5 -5 -4 -3 -2 -3 -7 -4 -6 -18 -16 -8 -16 -4 -5 -8 -6 -9 -13 -1545 -6 -215 -6 -5 -6 -3 -45 -31 -5 -2 -2 -4 -3 -3 -2 -5 -4 -3 -5 -7 -7 -4 -5 -8 -5 -4 -749 -2 -31 -9 -11 -2 -11 -5 -4 -4 -7 -9 -11 -4 -5 -4 -7 -3 -4 -6 -2 -15 -3 -4 -3 -4 -3 -5 -2 -13 -5 -5 -3 -3 -23 -4 -4 -5 -7 -4 -13 -2 -4 -3 -4 -2 -6 -2 -7 -3 -5 -5 -3 -29 -5 -4 -4 -3 -10 -2 -3 -79 -16 -6 -6 -7 -7 -3 -5 -5 -7 -4 -3 -7 -9 -5 -6 -5 -9 -6 -3 -6 -4 -17 -2 -10 -9 -3 -6 -2 -3 -21 -22 -5 -11 -4 -2 -17 -2 -224 -2 -14 -3 -4 -4 -2 -4 -4 -4 -4 -5 -3 -4 -4 -10 -2 -6 -3 -3 -5 -7 -2 -7 -5 -6 -3 -218 -2 -2 -5 -2 -6 -3 -5 -222 -14 -6 -33 -3 -2 -5 -3 -3 -3 -9 -5 -3 -3 -2 -7 -4 -3 -4 -3 -5 -6 -5 -26 -4 -13 -9 -7 -3 -221 -3 -3 -4 -4 -4 -4 -2 -18 -5 -3 -7 -9 -6 -8 -3 -10 -3 -11 -9 -5 -4 -17 -5 -5 -6 -6 -3 -2 -4 -12 -17 -6 -7 -218 -4 -2 -4 -10 -3 -5 -15 -3 -9 -4 -3 -3 -6 -29 -3 -3 -4 -5 -5 -3 -8 -5 -6 -6 -7 -5 -3 -5 -3 -29 -2 -31 -5 -15 -24 -16 -5 -207 -4 -3 -3 -2 -15 -4 -4 -13 -5 -5 -4 -6 -10 -2 -7 -8 -4 -6 -20 -5 -3 -4 -3 -12 -12 -5 -17 -7 -3 -3 -3 -6 -10 -3 -5 -25 -80 -4 -9 -3 -2 -11 -3 -3 -2 -3 -8 -7 -5 -5 -19 -5 -3 -3 -12 -11 -2 -6 -5 -5 -5 -3 -3 -3 -4 -209 -14 -3 -2 -5 -19 -4 -4 -3 -4 -14 -5 -6 -4 -13 -9 -7 -4 -7 -10 -2 -9 -5 -7 -2 -8 -4 -6 -5 -5 -222 -8 -7 -12 -5 -216 -3 -4 -4 -6 -3 -14 -8 -7 -13 -4 -3 -3 -3 -3 -17 -5 -4 -3 -33 -6 -6 -33 -7 -5 -3 -8 -7 -5 -2 -9 -4 -2 -233 -24 -7 -4 -8 -10 -3 -4 -15 -2 -16 -3 -3 -13 -12 -7 -5 -4 -207 -4 -2 -4 -27 -15 -2 -5 -2 -25 -6 -5 -5 -6 -13 -6 -18 -6 -4 -12 -225 -10 -7 -5 -2 -2 -11 -4 -14 -21 -8 -10 -3 -5 -4 -232 -2 -5 -5 -3 -7 -17 -11 -6 -6 -23 -4 -6 -3 -5 -4 -2 -17 -3 -6 -5 -8 -3 -2 -2 -14 -9 -4 -4 -2 -5 -5 -3 -7 -6 -12 -6 -10 -3 -6 -2 -2 -19 -5 -4 -4 -9 -2 -4 -13 -3 -5 -6 -3 -6 -5 -4 -9 -6 -3 -5 -7 -3 -6 -6 -4 -3 -10 -6 -3 -221 -3 -5 -3 -6 -4 -8 -5 -3 -6 -4 -4 -2 -54 -5 -6 -11 -3 -3 -4 -4 -4 -3 -7 -3 -11 -11 -7 -10 -6 -13 -223 -213 -15 -231 -7 -3 -7 -228 -2 -3 -4 -4 -5 -6 -7 -4 -13 -3 -4 -5 -3 -6 -4 -6 -7 -2 -4 -3 -4 -3 -3 -6 -3 -7 -3 -5 -18 -5 -6 -8 -10 -3 -3 -3 -2 -4 -2 -4 -4 -5 -6 -6 -4 -10 -13 -3 -12 -5 -12 -16 -8 -4 -19 -11 -2 -4 -5 -6 -8 -5 -6 -4 -18 -10 -4 -2 -216 -6 -6 -6 -2 -4 -12 -8 -3 -11 -5 -6 -14 -5 -3 -13 -4 -5 -4 -5 -3 -28 -6 -3 -7 -219 -3 -9 -7 -3 -10 -6 -3 -4 -19 -5 -7 -11 -6 -15 -19 -4 -13 -11 -3 -7 -5 -10 -2 -8 -11 -2 -6 -4 -6 -24 -6 -3 -3 -3 -3 -6 -18 -4 -11 -4 -2 -5 -10 -8 -3 -9 -5 -3 -4 -5 -6 -2 -5 -7 -4 -4 -14 -6 -4 -4 -5 -5 -7 -2 -4 -3 -7 -3 -3 -6 -4 -5 -4 -4 -4 -3 -3 -3 -3 -8 -14 -2 -3 -5 -3 -2 -4 -5 -3 -7 -3 -3 -18 -3 -4 -4 -5 -7 -3 -3 -3 -13 -5 -4 -8 -211 -5 -5 -3 -5 -2 -5 -4 -2 -655 -6 -3 -5 -11 -2 -5 -3 -12 -9 -15 -11 -5 -12 -217 -2 -6 -17 -3 -3 -207 -5 -5 -4 -5 -9 -3 -2 -8 -5 -4 -3 -2 -5 -12 -4 -14 -5 -4 -2 -13 -5 -8 -4 -225 -4 -3 -4 -5 -4 -3 -3 -6 -23 -9 -2 -6 -7 -233 -4 -4 -6 -18 -3 -4 -6 -3 -4 -4 -2 -3 -7 -4 -13 -227 -4 -3 -5 -4 -2 -12 -9 -17 -3 -7 -14 -6 -4 -5 -21 -4 -8 -9 -2 -9 -25 -16 -3 -6 -4 -7 -8 -5 -2 -3 -5 -4 -3 -3 -5 -3 -3 -3 -2 -3 -19 -2 -4 -3 -4 -2 -3 -4 -4 -2 -4 -3 -3 -3 -2 -6 -3 -17 -5 -6 -4 -3 -13 -5 -3 -3 -3 -4 -9 -4 -2 -14 -12 -4 -5 -24 -4 -3 -37 -12 -11 -21 -3 -4 -3 -13 -4 -2 -3 -15 -4 -11 -4 -4 -3 -8 -3 -4 -4 -12 -8 -5 -3 -3 -4 -2 -220 -3 -5 -223 -3 -3 -3 -10 -3 -15 -4 -241 -9 -7 -3 -6 -6 -23 -4 -13 -7 -3 -4 -7 -4 -9 -3 -3 -4 -10 -5 -5 -1 -5 -24 -2 -4 -5 -5 -6 -14 -3 -8 -2 -3 -5 -13 -13 -3 -5 -2 -3 -15 -3 -4 -2 -10 -4 -4 -4 -5 -5 -3 -5 -3 -4 -7 -4 -27 -3 -6 -4 -15 -3 -5 -6 -6 -5 -4 -8 -3 -9 -2 -6 -3 -4 -3 -7 -4 -18 -3 -11 -3 -3 -8 -9 -7 -24 -3 -219 -7 -10 -4 -5 -9 -12 -2 -5 -4 -4 -4 -3 -3 -19 -5 -8 -16 -8 -6 -22 -3 -23 -3 -242 -9 -4 -3 -3 -5 -7 -3 -3 -5 -8 -3 -7 -5 -14 -8 -10 -3 -4 -3 -7 -4 -6 -7 -4 -10 -4 -3 -11 -3 -7 -10 -3 -13 -6 -8 -12 -10 -5 -7 -9 -3 -4 -7 -7 -10 -8 -30 -9 -19 -4 -3 -19 -15 -4 -13 -3 -215 -223 -4 -7 -4 -8 -17 -16 -3 -7 -6 -5 -5 -4 -12 -3 -7 -4 -4 -13 -4 -5 -2 -5 -6 -5 -6 -6 -7 -10 -18 -23 -9 -3 -3 -6 -5 -2 -4 -2 -7 -3 -3 -2 -5 -5 -14 -10 -224 -6 -3 -4 -3 -7 -5 -9 -3 -6 -4 -2 -5 -11 -4 -3 -3 -2 -8 -4 -7 -4 -10 -7 -3 -3 -18 -18 -17 -3 -3 -3 -4 -5 -3 -3 -4 -12 -7 -3 -11 -13 -5 -4 -7 -13 -5 -4 -11 -3 -12 -3 -6 -4 -4 -21 -4 -6 -9 -5 -3 -10 -8 -4 -6 -4 -4 -6 -5 -4 -8 -6 -4 -6 -4 -4 -5 -9 -6 -3 -4 -2 -9 -3 -18 -2 -4 -3 -13 -3 -6 -6 -8 -7 -9 -3 -2 -16 -3 -4 -6 -3 -2 -33 -22 -14 -4 -9 -12 -4 -5 -6 -3 -23 -9 -4 -3 -5 -5 -3 -4 -5 -3 -5 -3 -10 -4 -5 -5 -8 -4 -4 -6 -8 -5 -4 -3 -4 -6 -3 -3 -3 -5 -9 -12 -6 -5 -9 -3 -5 -3 -2 -2 -2 -18 -3 -2 -21 -2 -5 -4 -6 -4 -5 -10 -3 -9 -3 -2 -10 -7 -3 -6 -6 -4 -4 -8 -12 -7 -3 -7 -3 -3 -9 -3 -4 -5 -4 -4 -5 -5 -10 -15 -4 -4 -14 -6 -227 -3 -14 -5 -216 -22 -5 -4 -2 -2 -6 -3 -4 -2 -9 -9 -4 -3 -28 -13 -11 -4 -5 -3 -3 -2 -3 -3 -5 -3 -4 -3 -5 -23 -26 -3 -4 -5 -6 -4 -6 -3 -5 -5 -3 -4 -3 -2 -2 -2 -7 -14 -3 -6 -7 -17 -2 -2 -15 -14 -16 -4 -6 -7 -13 -6 -4 -5 -6 -16 -3 -3 -28 -3 -6 -15 -3 -9 -2 -4 -6 -3 -3 -22 -4 -12 -6 -7 -2 -5 -4 -10 -3 -16 -6 -9 -2 -5 -12 -7 -5 -5 -5 -5 -2 -11 -9 -17 -4 -3 -11 -7 -3 -5 -15 -4 -3 -4 -211 -8 -7 -5 -4 -7 -6 -7 -6 -3 -6 -5 -6 -5 -3 -4 -4 -26 -4 -6 -10 -4 -4 -3 -2 -3 -3 -4 -5 -9 -3 -9 -4 -4 -5 -5 -8 -2 -4 -2 -3 -8 -4 -11 -19 -5 -8 -6 -3 -5 -6 -12 -3 -2 -4 -16 -12 -3 -4 -4 -8 -6 -5 -6 -6 -219 -8 -222 -6 -16 -3 -13 -19 -5 -4 -3 -11 -6 -10 -4 -7 -7 -12 -5 -3 -3 -5 -6 -10 -3 -8 -2 -5 -4 -7 -2 -4 -4 -2 -12 -9 -6 -4 -2 -40 -2 -4 -10 -4 -223 -4 -2 -20 -6 -7 -24 -5 -4 -5 -2 -20 -16 -6 -5 -13 -2 -3 -3 -19 -3 -2 -4 -5 -6 -7 -11 -12 -5 -6 -7 -7 -3 -5 -3 -5 -3 -14 -3 -4 -4 -2 -11 -1 -7 -3 -9 -6 -11 -12 -5 -8 -6 -221 -4 -2 -12 -4 -3 -15 -4 -5 -226 -7 -218 -7 -5 -4 -5 -18 -4 -5 -9 -4 -4 -2 -9 -18 -18 -9 -5 -6 -6 -3 -3 -7 -3 -5 -4 -4 -4 -12 -3 -6 -31 -5 -4 -7 -3 -6 -5 -6 -5 -11 -2 -2 -11 -11 -6 -7 -5 -8 -7 -10 -5 -23 -7 -4 -3 -5 -34 -2 -5 -23 -7 -3 -6 -8 -4 -4 -4 -2 -5 -3 -8 -5 -4 -8 -25 -2 -3 -17 -8 -3 -4 -8 -7 -3 -15 -6 -5 -7 -21 -9 -5 -6 -6 -5 -3 -2 -3 -10 -3 -6 -3 -14 -7 -4 -4 -8 -7 -8 -2 -6 -12 -4 -213 -6 -5 -21 -8 -2 -5 -23 -3 -11 -2 -3 -6 -25 -2 -3 -6 -7 -6 -6 -4 -4 -6 -3 -17 -9 -7 -6 -4 -3 -10 -7 -2 -3 -3 -3 -11 -8 -3 -7 -6 -4 -14 -36 -3 -4 -3 -3 -22 -13 -21 -4 -2 -7 -4 -4 -17 -15 -3 -7 -11 -2 -4 -7 -6 -209 -6 -3 -2 -2 -24 -4 -9 -4 -3 -3 -3 -29 -2 -2 -4 -3 -3 -5 -4 -6 -3 -3 -2 -4 diff --git a/vendor/github.com/beorn7/perks/quantile/stream.go b/vendor/github.com/beorn7/perks/quantile/stream.go deleted file mode 100644 index d7d14f8e..00000000 --- a/vendor/github.com/beorn7/perks/quantile/stream.go +++ /dev/null @@ -1,316 +0,0 @@ -// Package quantile computes approximate quantiles over an unbounded data -// stream within low memory and CPU bounds. -// -// A small amount of accuracy is traded to achieve the above properties. -// -// Multiple streams can be merged before calling Query to generate a single set -// of results. This is meaningful when the streams represent the same type of -// data. See Merge and Samples. -// -// For more detailed information about the algorithm used, see: -// -// Effective Computation of Biased Quantiles over Data Streams -// -// http://www.cs.rutgers.edu/~muthu/bquant.pdf -package quantile - -import ( - "math" - "sort" -) - -// Sample holds an observed value and meta information for compression. JSON -// tags have been added for convenience. -type Sample struct { - Value float64 `json:",string"` - Width float64 `json:",string"` - Delta float64 `json:",string"` -} - -// Samples represents a slice of samples. It implements sort.Interface. -type Samples []Sample - -func (a Samples) Len() int { return len(a) } -func (a Samples) Less(i, j int) bool { return a[i].Value < a[j].Value } -func (a Samples) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type invariant func(s *stream, r float64) float64 - -// NewLowBiased returns an initialized Stream for low-biased quantiles -// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but -// error guarantees can still be given even for the lower ranks of the data -// distribution. -// -// The provided epsilon is a relative error, i.e. the true quantile of a value -// returned by a query is guaranteed to be within (1±Epsilon)*Quantile. -// -// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error -// properties. -func NewLowBiased(epsilon float64) *Stream { - ƒ := func(s *stream, r float64) float64 { - return 2 * epsilon * r - } - return newStream(ƒ) -} - -// NewHighBiased returns an initialized Stream for high-biased quantiles -// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but -// error guarantees can still be given even for the higher ranks of the data -// distribution. -// -// The provided epsilon is a relative error, i.e. the true quantile of a value -// returned by a query is guaranteed to be within 1-(1±Epsilon)*(1-Quantile). -// -// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error -// properties. -func NewHighBiased(epsilon float64) *Stream { - ƒ := func(s *stream, r float64) float64 { - return 2 * epsilon * (s.n - r) - } - return newStream(ƒ) -} - -// NewTargeted returns an initialized Stream concerned with a particular set of -// quantile values that are supplied a priori. Knowing these a priori reduces -// space and computation time. The targets map maps the desired quantiles to -// their absolute errors, i.e. the true quantile of a value returned by a query -// is guaranteed to be within (Quantile±Epsilon). -// -// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error properties. -func NewTargeted(targetMap map[float64]float64) *Stream { - // Convert map to slice to avoid slow iterations on a map. - // ƒ is called on the hot path, so converting the map to a slice - // beforehand results in significant CPU savings. - targets := targetMapToSlice(targetMap) - - ƒ := func(s *stream, r float64) float64 { - var m = math.MaxFloat64 - var f float64 - for _, t := range targets { - if t.quantile*s.n <= r { - f = (2 * t.epsilon * r) / t.quantile - } else { - f = (2 * t.epsilon * (s.n - r)) / (1 - t.quantile) - } - if f < m { - m = f - } - } - return m - } - return newStream(ƒ) -} - -type target struct { - quantile float64 - epsilon float64 -} - -func targetMapToSlice(targetMap map[float64]float64) []target { - targets := make([]target, 0, len(targetMap)) - - for quantile, epsilon := range targetMap { - t := target{ - quantile: quantile, - epsilon: epsilon, - } - targets = append(targets, t) - } - - return targets -} - -// Stream computes quantiles for a stream of float64s. It is not thread-safe by -// design. Take care when using across multiple goroutines. -type Stream struct { - *stream - b Samples - sorted bool -} - -func newStream(ƒ invariant) *Stream { - x := &stream{ƒ: ƒ} - return &Stream{x, make(Samples, 0, 500), true} -} - -// Insert inserts v into the stream. -func (s *Stream) Insert(v float64) { - s.insert(Sample{Value: v, Width: 1}) -} - -func (s *Stream) insert(sample Sample) { - s.b = append(s.b, sample) - s.sorted = false - if len(s.b) == cap(s.b) { - s.flush() - } -} - -// Query returns the computed qth percentiles value. If s was created with -// NewTargeted, and q is not in the set of quantiles provided a priori, Query -// will return an unspecified result. -func (s *Stream) Query(q float64) float64 { - if !s.flushed() { - // Fast path when there hasn't been enough data for a flush; - // this also yields better accuracy for small sets of data. - l := len(s.b) - if l == 0 { - return 0 - } - i := int(math.Ceil(float64(l) * q)) - if i > 0 { - i -= 1 - } - s.maybeSort() - return s.b[i].Value - } - s.flush() - return s.stream.query(q) -} - -// Merge merges samples into the underlying streams samples. This is handy when -// merging multiple streams from separate threads, database shards, etc. -// -// ATTENTION: This method is broken and does not yield correct results. The -// underlying algorithm is not capable of merging streams correctly. -func (s *Stream) Merge(samples Samples) { - sort.Sort(samples) - s.stream.merge(samples) -} - -// Reset reinitializes and clears the list reusing the samples buffer memory. -func (s *Stream) Reset() { - s.stream.reset() - s.b = s.b[:0] -} - -// Samples returns stream samples held by s. -func (s *Stream) Samples() Samples { - if !s.flushed() { - return s.b - } - s.flush() - return s.stream.samples() -} - -// Count returns the total number of samples observed in the stream -// since initialization. -func (s *Stream) Count() int { - return len(s.b) + s.stream.count() -} - -func (s *Stream) flush() { - s.maybeSort() - s.stream.merge(s.b) - s.b = s.b[:0] -} - -func (s *Stream) maybeSort() { - if !s.sorted { - s.sorted = true - sort.Sort(s.b) - } -} - -func (s *Stream) flushed() bool { - return len(s.stream.l) > 0 -} - -type stream struct { - n float64 - l []Sample - ƒ invariant -} - -func (s *stream) reset() { - s.l = s.l[:0] - s.n = 0 -} - -func (s *stream) insert(v float64) { - s.merge(Samples{{v, 1, 0}}) -} - -func (s *stream) merge(samples Samples) { - // TODO(beorn7): This tries to merge not only individual samples, but - // whole summaries. The paper doesn't mention merging summaries at - // all. Unittests show that the merging is inaccurate. Find out how to - // do merges properly. - var r float64 - i := 0 - for _, sample := range samples { - for ; i < len(s.l); i++ { - c := s.l[i] - if c.Value > sample.Value { - // Insert at position i. - s.l = append(s.l, Sample{}) - copy(s.l[i+1:], s.l[i:]) - s.l[i] = Sample{ - sample.Value, - sample.Width, - math.Max(sample.Delta, math.Floor(s.ƒ(s, r))-1), - // TODO(beorn7): How to calculate delta correctly? - } - i++ - goto inserted - } - r += c.Width - } - s.l = append(s.l, Sample{sample.Value, sample.Width, 0}) - i++ - inserted: - s.n += sample.Width - r += sample.Width - } - s.compress() -} - -func (s *stream) count() int { - return int(s.n) -} - -func (s *stream) query(q float64) float64 { - t := math.Ceil(q * s.n) - t += math.Ceil(s.ƒ(s, t) / 2) - p := s.l[0] - var r float64 - for _, c := range s.l[1:] { - r += p.Width - if r+c.Width+c.Delta > t { - return p.Value - } - p = c - } - return p.Value -} - -func (s *stream) compress() { - if len(s.l) < 2 { - return - } - x := s.l[len(s.l)-1] - xi := len(s.l) - 1 - r := s.n - 1 - x.Width - - for i := len(s.l) - 2; i >= 0; i-- { - c := s.l[i] - if c.Width+x.Width+x.Delta <= s.ƒ(s, r) { - x.Width += c.Width - s.l[xi] = x - // Remove element at i. - copy(s.l[i:], s.l[i+1:]) - s.l = s.l[:len(s.l)-1] - xi -= 1 - } else { - x = c - xi = i - } - r -= c.Width - } -} - -func (s *stream) samples() Samples { - samples := make(Samples, len(s.l)) - copy(samples, s.l) - return samples -} diff --git a/vendor/github.com/cespare/xxhash/v2/LICENSE.txt b/vendor/github.com/cespare/xxhash/v2/LICENSE.txt deleted file mode 100644 index 24b53065..00000000 --- a/vendor/github.com/cespare/xxhash/v2/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2016 Caleb Spare - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/cespare/xxhash/v2/README.md b/vendor/github.com/cespare/xxhash/v2/README.md deleted file mode 100644 index 2fd8693c..00000000 --- a/vendor/github.com/cespare/xxhash/v2/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# xxhash - -[![GoDoc](https://godoc.org/github.com/cespare/xxhash?status.svg)](https://godoc.org/github.com/cespare/xxhash) -[![Build Status](https://travis-ci.org/cespare/xxhash.svg?branch=master)](https://travis-ci.org/cespare/xxhash) - -xxhash is a Go implementation of the 64-bit -[xxHash](http://cyan4973.github.io/xxHash/) algorithm, XXH64. This is a -high-quality hashing algorithm that is much faster than anything in the Go -standard library. - -This package provides a straightforward API: - -``` -func Sum64(b []byte) uint64 -func Sum64String(s string) uint64 -type Digest struct{ ... } - func New() *Digest -``` - -The `Digest` type implements hash.Hash64. Its key methods are: - -``` -func (*Digest) Write([]byte) (int, error) -func (*Digest) WriteString(string) (int, error) -func (*Digest) Sum64() uint64 -``` - -This implementation provides a fast pure-Go implementation and an even faster -assembly implementation for amd64. - -## Compatibility - -This package is in a module and the latest code is in version 2 of the module. -You need a version of Go with at least "minimal module compatibility" to use -github.com/cespare/xxhash/v2: - -* 1.9.7+ for Go 1.9 -* 1.10.3+ for Go 1.10 -* Go 1.11 or later - -I recommend using the latest release of Go. - -## Benchmarks - -Here are some quick benchmarks comparing the pure-Go and assembly -implementations of Sum64. - -| input size | purego | asm | -| --- | --- | --- | -| 5 B | 979.66 MB/s | 1291.17 MB/s | -| 100 B | 7475.26 MB/s | 7973.40 MB/s | -| 4 KB | 17573.46 MB/s | 17602.65 MB/s | -| 10 MB | 17131.46 MB/s | 17142.16 MB/s | - -These numbers were generated on Ubuntu 18.04 with an Intel i7-8700K CPU using -the following commands under Go 1.11.2: - -``` -$ go test -tags purego -benchtime 10s -bench '/xxhash,direct,bytes' -$ go test -benchtime 10s -bench '/xxhash,direct,bytes' -``` - -## Projects using this package - -- [InfluxDB](https://github.com/influxdata/influxdb) -- [Prometheus](https://github.com/prometheus/prometheus) -- [FreeCache](https://github.com/coocood/freecache) diff --git a/vendor/github.com/cespare/xxhash/v2/go.mod b/vendor/github.com/cespare/xxhash/v2/go.mod deleted file mode 100644 index 49f67608..00000000 --- a/vendor/github.com/cespare/xxhash/v2/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/cespare/xxhash/v2 - -go 1.11 diff --git a/vendor/github.com/cespare/xxhash/v2/go.sum b/vendor/github.com/cespare/xxhash/v2/go.sum deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash.go b/vendor/github.com/cespare/xxhash/v2/xxhash.go deleted file mode 100644 index db0b35fb..00000000 --- a/vendor/github.com/cespare/xxhash/v2/xxhash.go +++ /dev/null @@ -1,236 +0,0 @@ -// Package xxhash implements the 64-bit variant of xxHash (XXH64) as described -// at http://cyan4973.github.io/xxHash/. -package xxhash - -import ( - "encoding/binary" - "errors" - "math/bits" -) - -const ( - prime1 uint64 = 11400714785074694791 - prime2 uint64 = 14029467366897019727 - prime3 uint64 = 1609587929392839161 - prime4 uint64 = 9650029242287828579 - prime5 uint64 = 2870177450012600261 -) - -// NOTE(caleb): I'm using both consts and vars of the primes. Using consts where -// possible in the Go code is worth a small (but measurable) performance boost -// by avoiding some MOVQs. Vars are needed for the asm and also are useful for -// convenience in the Go code in a few places where we need to intentionally -// avoid constant arithmetic (e.g., v1 := prime1 + prime2 fails because the -// result overflows a uint64). -var ( - prime1v = prime1 - prime2v = prime2 - prime3v = prime3 - prime4v = prime4 - prime5v = prime5 -) - -// Digest implements hash.Hash64. -type Digest struct { - v1 uint64 - v2 uint64 - v3 uint64 - v4 uint64 - total uint64 - mem [32]byte - n int // how much of mem is used -} - -// New creates a new Digest that computes the 64-bit xxHash algorithm. -func New() *Digest { - var d Digest - d.Reset() - return &d -} - -// Reset clears the Digest's state so that it can be reused. -func (d *Digest) Reset() { - d.v1 = prime1v + prime2 - d.v2 = prime2 - d.v3 = 0 - d.v4 = -prime1v - d.total = 0 - d.n = 0 -} - -// Size always returns 8 bytes. -func (d *Digest) Size() int { return 8 } - -// BlockSize always returns 32 bytes. -func (d *Digest) BlockSize() int { return 32 } - -// Write adds more data to d. It always returns len(b), nil. -func (d *Digest) Write(b []byte) (n int, err error) { - n = len(b) - d.total += uint64(n) - - if d.n+n < 32 { - // This new data doesn't even fill the current block. - copy(d.mem[d.n:], b) - d.n += n - return - } - - if d.n > 0 { - // Finish off the partial block. - copy(d.mem[d.n:], b) - d.v1 = round(d.v1, u64(d.mem[0:8])) - d.v2 = round(d.v2, u64(d.mem[8:16])) - d.v3 = round(d.v3, u64(d.mem[16:24])) - d.v4 = round(d.v4, u64(d.mem[24:32])) - b = b[32-d.n:] - d.n = 0 - } - - if len(b) >= 32 { - // One or more full blocks left. - nw := writeBlocks(d, b) - b = b[nw:] - } - - // Store any remaining partial block. - copy(d.mem[:], b) - d.n = len(b) - - return -} - -// Sum appends the current hash to b and returns the resulting slice. -func (d *Digest) Sum(b []byte) []byte { - s := d.Sum64() - return append( - b, - byte(s>>56), - byte(s>>48), - byte(s>>40), - byte(s>>32), - byte(s>>24), - byte(s>>16), - byte(s>>8), - byte(s), - ) -} - -// Sum64 returns the current hash. -func (d *Digest) Sum64() uint64 { - var h uint64 - - if d.total >= 32 { - v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 - h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) - h = mergeRound(h, v1) - h = mergeRound(h, v2) - h = mergeRound(h, v3) - h = mergeRound(h, v4) - } else { - h = d.v3 + prime5 - } - - h += d.total - - i, end := 0, d.n - for ; i+8 <= end; i += 8 { - k1 := round(0, u64(d.mem[i:i+8])) - h ^= k1 - h = rol27(h)*prime1 + prime4 - } - if i+4 <= end { - h ^= uint64(u32(d.mem[i:i+4])) * prime1 - h = rol23(h)*prime2 + prime3 - i += 4 - } - for i < end { - h ^= uint64(d.mem[i]) * prime5 - h = rol11(h) * prime1 - i++ - } - - h ^= h >> 33 - h *= prime2 - h ^= h >> 29 - h *= prime3 - h ^= h >> 32 - - return h -} - -const ( - magic = "xxh\x06" - marshaledSize = len(magic) + 8*5 + 32 -) - -// MarshalBinary implements the encoding.BinaryMarshaler interface. -func (d *Digest) MarshalBinary() ([]byte, error) { - b := make([]byte, 0, marshaledSize) - b = append(b, magic...) - b = appendUint64(b, d.v1) - b = appendUint64(b, d.v2) - b = appendUint64(b, d.v3) - b = appendUint64(b, d.v4) - b = appendUint64(b, d.total) - b = append(b, d.mem[:d.n]...) - b = b[:len(b)+len(d.mem)-d.n] - return b, nil -} - -// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. -func (d *Digest) UnmarshalBinary(b []byte) error { - if len(b) < len(magic) || string(b[:len(magic)]) != magic { - return errors.New("xxhash: invalid hash state identifier") - } - if len(b) != marshaledSize { - return errors.New("xxhash: invalid hash state size") - } - b = b[len(magic):] - b, d.v1 = consumeUint64(b) - b, d.v2 = consumeUint64(b) - b, d.v3 = consumeUint64(b) - b, d.v4 = consumeUint64(b) - b, d.total = consumeUint64(b) - copy(d.mem[:], b) - b = b[len(d.mem):] - d.n = int(d.total % uint64(len(d.mem))) - return nil -} - -func appendUint64(b []byte, x uint64) []byte { - var a [8]byte - binary.LittleEndian.PutUint64(a[:], x) - return append(b, a[:]...) -} - -func consumeUint64(b []byte) ([]byte, uint64) { - x := u64(b) - return b[8:], x -} - -func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) } -func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) } - -func round(acc, input uint64) uint64 { - acc += input * prime2 - acc = rol31(acc) - acc *= prime1 - return acc -} - -func mergeRound(acc, val uint64) uint64 { - val = round(0, val) - acc ^= val - acc = acc*prime1 + prime4 - return acc -} - -func rol1(x uint64) uint64 { return bits.RotateLeft64(x, 1) } -func rol7(x uint64) uint64 { return bits.RotateLeft64(x, 7) } -func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) } -func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) } -func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) } -func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) } -func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) } -func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) } diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go deleted file mode 100644 index ad14b807..00000000 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !appengine -// +build gc -// +build !purego - -package xxhash - -// Sum64 computes the 64-bit xxHash digest of b. -// -//go:noescape -func Sum64(b []byte) uint64 - -//go:noescape -func writeBlocks(d *Digest, b []byte) int diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s b/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s deleted file mode 100644 index d580e32a..00000000 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s +++ /dev/null @@ -1,215 +0,0 @@ -// +build !appengine -// +build gc -// +build !purego - -#include "textflag.h" - -// Register allocation: -// AX h -// CX pointer to advance through b -// DX n -// BX loop end -// R8 v1, k1 -// R9 v2 -// R10 v3 -// R11 v4 -// R12 tmp -// R13 prime1v -// R14 prime2v -// R15 prime4v - -// round reads from and advances the buffer pointer in CX. -// It assumes that R13 has prime1v and R14 has prime2v. -#define round(r) \ - MOVQ (CX), R12 \ - ADDQ $8, CX \ - IMULQ R14, R12 \ - ADDQ R12, r \ - ROLQ $31, r \ - IMULQ R13, r - -// mergeRound applies a merge round on the two registers acc and val. -// It assumes that R13 has prime1v, R14 has prime2v, and R15 has prime4v. -#define mergeRound(acc, val) \ - IMULQ R14, val \ - ROLQ $31, val \ - IMULQ R13, val \ - XORQ val, acc \ - IMULQ R13, acc \ - ADDQ R15, acc - -// func Sum64(b []byte) uint64 -TEXT ·Sum64(SB), NOSPLIT, $0-32 - // Load fixed primes. - MOVQ ·prime1v(SB), R13 - MOVQ ·prime2v(SB), R14 - MOVQ ·prime4v(SB), R15 - - // Load slice. - MOVQ b_base+0(FP), CX - MOVQ b_len+8(FP), DX - LEAQ (CX)(DX*1), BX - - // The first loop limit will be len(b)-32. - SUBQ $32, BX - - // Check whether we have at least one block. - CMPQ DX, $32 - JLT noBlocks - - // Set up initial state (v1, v2, v3, v4). - MOVQ R13, R8 - ADDQ R14, R8 - MOVQ R14, R9 - XORQ R10, R10 - XORQ R11, R11 - SUBQ R13, R11 - - // Loop until CX > BX. -blockLoop: - round(R8) - round(R9) - round(R10) - round(R11) - - CMPQ CX, BX - JLE blockLoop - - MOVQ R8, AX - ROLQ $1, AX - MOVQ R9, R12 - ROLQ $7, R12 - ADDQ R12, AX - MOVQ R10, R12 - ROLQ $12, R12 - ADDQ R12, AX - MOVQ R11, R12 - ROLQ $18, R12 - ADDQ R12, AX - - mergeRound(AX, R8) - mergeRound(AX, R9) - mergeRound(AX, R10) - mergeRound(AX, R11) - - JMP afterBlocks - -noBlocks: - MOVQ ·prime5v(SB), AX - -afterBlocks: - ADDQ DX, AX - - // Right now BX has len(b)-32, and we want to loop until CX > len(b)-8. - ADDQ $24, BX - - CMPQ CX, BX - JG fourByte - -wordLoop: - // Calculate k1. - MOVQ (CX), R8 - ADDQ $8, CX - IMULQ R14, R8 - ROLQ $31, R8 - IMULQ R13, R8 - - XORQ R8, AX - ROLQ $27, AX - IMULQ R13, AX - ADDQ R15, AX - - CMPQ CX, BX - JLE wordLoop - -fourByte: - ADDQ $4, BX - CMPQ CX, BX - JG singles - - MOVL (CX), R8 - ADDQ $4, CX - IMULQ R13, R8 - XORQ R8, AX - - ROLQ $23, AX - IMULQ R14, AX - ADDQ ·prime3v(SB), AX - -singles: - ADDQ $4, BX - CMPQ CX, BX - JGE finalize - -singlesLoop: - MOVBQZX (CX), R12 - ADDQ $1, CX - IMULQ ·prime5v(SB), R12 - XORQ R12, AX - - ROLQ $11, AX - IMULQ R13, AX - - CMPQ CX, BX - JL singlesLoop - -finalize: - MOVQ AX, R12 - SHRQ $33, R12 - XORQ R12, AX - IMULQ R14, AX - MOVQ AX, R12 - SHRQ $29, R12 - XORQ R12, AX - IMULQ ·prime3v(SB), AX - MOVQ AX, R12 - SHRQ $32, R12 - XORQ R12, AX - - MOVQ AX, ret+24(FP) - RET - -// writeBlocks uses the same registers as above except that it uses AX to store -// the d pointer. - -// func writeBlocks(d *Digest, b []byte) int -TEXT ·writeBlocks(SB), NOSPLIT, $0-40 - // Load fixed primes needed for round. - MOVQ ·prime1v(SB), R13 - MOVQ ·prime2v(SB), R14 - - // Load slice. - MOVQ b_base+8(FP), CX - MOVQ b_len+16(FP), DX - LEAQ (CX)(DX*1), BX - SUBQ $32, BX - - // Load vN from d. - MOVQ d+0(FP), AX - MOVQ 0(AX), R8 // v1 - MOVQ 8(AX), R9 // v2 - MOVQ 16(AX), R10 // v3 - MOVQ 24(AX), R11 // v4 - - // We don't need to check the loop condition here; this function is - // always called with at least one block of data to process. -blockLoop: - round(R8) - round(R9) - round(R10) - round(R11) - - CMPQ CX, BX - JLE blockLoop - - // Copy vN back to d. - MOVQ R8, 0(AX) - MOVQ R9, 8(AX) - MOVQ R10, 16(AX) - MOVQ R11, 24(AX) - - // The number of bytes written is CX minus the old base pointer. - SUBQ b_base+8(FP), CX - MOVQ CX, ret+32(FP) - - RET diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go deleted file mode 100644 index 4a5a8216..00000000 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go +++ /dev/null @@ -1,76 +0,0 @@ -// +build !amd64 appengine !gc purego - -package xxhash - -// Sum64 computes the 64-bit xxHash digest of b. -func Sum64(b []byte) uint64 { - // A simpler version would be - // d := New() - // d.Write(b) - // return d.Sum64() - // but this is faster, particularly for small inputs. - - n := len(b) - var h uint64 - - if n >= 32 { - v1 := prime1v + prime2 - v2 := prime2 - v3 := uint64(0) - v4 := -prime1v - for len(b) >= 32 { - v1 = round(v1, u64(b[0:8:len(b)])) - v2 = round(v2, u64(b[8:16:len(b)])) - v3 = round(v3, u64(b[16:24:len(b)])) - v4 = round(v4, u64(b[24:32:len(b)])) - b = b[32:len(b):len(b)] - } - h = rol1(v1) + rol7(v2) + rol12(v3) + rol18(v4) - h = mergeRound(h, v1) - h = mergeRound(h, v2) - h = mergeRound(h, v3) - h = mergeRound(h, v4) - } else { - h = prime5 - } - - h += uint64(n) - - i, end := 0, len(b) - for ; i+8 <= end; i += 8 { - k1 := round(0, u64(b[i:i+8:len(b)])) - h ^= k1 - h = rol27(h)*prime1 + prime4 - } - if i+4 <= end { - h ^= uint64(u32(b[i:i+4:len(b)])) * prime1 - h = rol23(h)*prime2 + prime3 - i += 4 - } - for ; i < end; i++ { - h ^= uint64(b[i]) * prime5 - h = rol11(h) * prime1 - } - - h ^= h >> 33 - h *= prime2 - h ^= h >> 29 - h *= prime3 - h ^= h >> 32 - - return h -} - -func writeBlocks(d *Digest, b []byte) int { - v1, v2, v3, v4 := d.v1, d.v2, d.v3, d.v4 - n := len(b) - for len(b) >= 32 { - v1 = round(v1, u64(b[0:8:len(b)])) - v2 = round(v2, u64(b[8:16:len(b)])) - v3 = round(v3, u64(b[16:24:len(b)])) - v4 = round(v4, u64(b[24:32:len(b)])) - b = b[32:len(b):len(b)] - } - d.v1, d.v2, d.v3, d.v4 = v1, v2, v3, v4 - return n - len(b) -} diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go deleted file mode 100644 index 53bf76ef..00000000 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build !appengine - -// This file encapsulates usage of unsafe. -// xxhash_safe.go contains the safe implementations. - -package xxhash - -import ( - "reflect" - "unsafe" -) - -// Notes: -// -// See https://groups.google.com/d/msg/golang-nuts/dcjzJy-bSpw/tcZYBzQqAQAJ -// for some discussion about these unsafe conversions. -// -// In the future it's possible that compiler optimizations will make these -// unsafe operations unnecessary: https://golang.org/issue/2205. -// -// Both of these wrapper functions still incur function call overhead since they -// will not be inlined. We could write Go/asm copies of Sum64 and Digest.Write -// for strings to squeeze out a bit more speed. Mid-stack inlining should -// eventually fix this. - -// Sum64String computes the 64-bit xxHash digest of s. -// It may be faster than Sum64([]byte(s)) by avoiding a copy. -func Sum64String(s string) uint64 { - var b []byte - bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data - bh.Len = len(s) - bh.Cap = len(s) - return Sum64(b) -} - -// WriteString adds more data to d. It always returns len(s), nil. -// It may be faster than Write([]byte(s)) by avoiding a copy. -func (d *Digest) WriteString(s string) (n int, err error) { - var b []byte - bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bh.Data = (*reflect.StringHeader)(unsafe.Pointer(&s)).Data - bh.Len = len(s) - bh.Cap = len(s) - return d.Write(b) -} diff --git a/vendor/github.com/cloudflare/golz4/LICENSE b/vendor/github.com/cloudflare/golz4/LICENSE deleted file mode 100644 index 1579e81a..00000000 --- a/vendor/github.com/cloudflare/golz4/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013 CloudFlare, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -* Neither the name of the CloudFlare, Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/cloudflare/golz4/Makefile b/vendor/github.com/cloudflare/golz4/Makefile deleted file mode 100644 index 2296d80e..00000000 --- a/vendor/github.com/cloudflare/golz4/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -GCFLAGS := -LDFLAGS := - -.PHONY: install -install: - @go install -v . - -.PHONY: test -test: - @go test -gcflags='$(GCFLAGS)' -ldflags='$(LDFLAGS)' . - -.PHONY: bench -bench: - @go test -gcflags='$(GCFLAGS)' -ldflags='$(LDFLAGS)' -bench . diff --git a/vendor/github.com/cloudflare/golz4/README.md b/vendor/github.com/cloudflare/golz4/README.md deleted file mode 100644 index e1bdb26e..00000000 --- a/vendor/github.com/cloudflare/golz4/README.md +++ /dev/null @@ -1,4 +0,0 @@ -golz4 -===== - -Golang interface to LZ4 compression diff --git a/vendor/github.com/cloudflare/golz4/doc.go b/vendor/github.com/cloudflare/golz4/doc.go deleted file mode 100644 index 4876be87..00000000 --- a/vendor/github.com/cloudflare/golz4/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -// Package lz4 implements compression using lz4.c and lz4hc.c -// -// Copyright (c) 2013 CloudFlare, Inc. -package lz4 diff --git a/vendor/github.com/cloudflare/golz4/lz4.go b/vendor/github.com/cloudflare/golz4/lz4.go deleted file mode 100644 index f9abcb2d..00000000 --- a/vendor/github.com/cloudflare/golz4/lz4.go +++ /dev/null @@ -1,55 +0,0 @@ -package lz4 - -// #cgo CFLAGS: -O3 -// #include "src/lz4.h" -// #include "src/lz4.c" -import "C" - -import ( - "errors" - "fmt" - "unsafe" -) - -// p gets a char pointer to the first byte of a []byte slice -func p(in []byte) *C.char { - if len(in) == 0 { - return (*C.char)(unsafe.Pointer(nil)) - } - return (*C.char)(unsafe.Pointer(&in[0])) -} - -// clen gets the length of a []byte slice as a char * -func clen(s []byte) C.int { - return C.int(len(s)) -} - -// Uncompress with a known output size. len(out) should be equal to -// the length of the uncompressed out. -func Uncompress(in, out []byte) (error) { - if int(C.LZ4_decompress_safe(p(in), p(out), clen(in), clen(out))) < 0 { - return errors.New("Malformed compression stream") - } - - return nil -} - -// CompressBound calculates the size of the output buffer needed by -// Compress. This is based on the following macro: -// -// #define LZ4_COMPRESSBOUND(isize) -// ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) -func CompressBound(in []byte) int { - return len(in) + ((len(in) / 255) + 16) -} - -// Compress compresses in and puts the content in out. len(out) -// should have enough space for the compressed data (use CompressBound -// to calculate). Returns the number of bytes in the out slice. -func Compress(in, out []byte) (outSize int, err error) { - outSize = int(C.LZ4_compress_limitedOutput(p(in), p(out), clen(in), clen(out))) - if outSize == 0 { - err = fmt.Errorf("insufficient space for compression") - } - return -} diff --git a/vendor/github.com/cloudflare/golz4/lz4_hc.go b/vendor/github.com/cloudflare/golz4/lz4_hc.go deleted file mode 100644 index 9779352c..00000000 --- a/vendor/github.com/cloudflare/golz4/lz4_hc.go +++ /dev/null @@ -1,38 +0,0 @@ -package lz4 - -// #cgo CFLAGS: -O3 -// #include "src/lz4hc.h" -// #include "src/lz4hc.c" -import "C" - -import ( - "fmt" -) - -// CompressHC compresses in and puts the content in out. len(out) -// should have enough space for the compressed data (use CompressBound -// to calculate). Returns the number of bytes in the out slice. Determines -// the compression level automatically. -func CompressHC(in, out []byte) (int, error) { - // 0 automatically sets the compression level. - return CompressHCLevel(in, out, 0) -} - -// CompressHCLevel compresses in at the given compression level and puts the -// content in out. len(out) should have enough space for the compressed data -// (use CompressBound to calculate). Returns the number of bytes in the out -// slice. To automatically choose the compression level, use 0. Otherwise, use -// any value in the inclusive range 1 (worst) through 16 (best). Most -// applications will prefer CompressHC. -func CompressHCLevel(in, out []byte, level int) (outSize int, err error) { - // LZ4HC does not handle empty buffers. Pass through to Compress. - if len(in) == 0 || len(out) == 0 { - return Compress(in, out) - } - - outSize = int(C.LZ4_compressHC2_limitedOutput(p(in), p(out), clen(in), clen(out), C.int(level))) - if outSize == 0 { - err = fmt.Errorf("insufficient space for compression") - } - return -} diff --git a/vendor/github.com/cloudflare/golz4/sample.txt b/vendor/github.com/cloudflare/golz4/sample.txt deleted file mode 100644 index 3bb27fb7..00000000 --- a/vendor/github.com/cloudflare/golz4/sample.txt +++ /dev/null @@ -1,143 +0,0 @@ -CANTO I - - -IN the midway of this our mortal life, -I found me in a gloomy wood, astray -Gone from the path direct: and e'en to tell -It were no easy task, how savage wild -That forest, how robust and rough its growth, -Which to remember only, my dismay -Renews, in bitterness not far from death. -Yet to discourse of what there good befell, -All else will I relate discover'd there. -How first I enter'd it I scarce can say, -Such sleepy dullness in that instant weigh'd -My senses down, when the true path I left, -But when a mountain's foot I reach'd, where clos'd -The valley, that had pierc'd my heart with dread, -I look'd aloft, and saw his shoulders broad -Already vested with that planet's beam, -Who leads all wanderers safe through every way. - -Then was a little respite to the fear, -That in my heart's recesses deep had lain, -All of that night, so pitifully pass'd: -And as a man, with difficult short breath, -Forespent with toiling, 'scap'd from sea to shore, -Turns to the perilous wide waste, and stands -At gaze; e'en so my spirit, that yet fail'd -Struggling with terror, turn'd to view the straits, -That none hath pass'd and liv'd. My weary frame -After short pause recomforted, again -I journey'd on over that lonely steep, - -The hinder foot still firmer. Scarce the ascent -Began, when, lo! a panther, nimble, light, -And cover'd with a speckled skin, appear'd, -Nor, when it saw me, vanish'd, rather strove -To check my onward going; that ofttimes -With purpose to retrace my steps I turn'd. - -The hour was morning's prime, and on his way -Aloft the sun ascended with those stars, -That with him rose, when Love divine first mov'd -Those its fair works: so that with joyous hope -All things conspir'd to fill me, the gay skin -Of that swift animal, the matin dawn -And the sweet season. Soon that joy was chas'd, -And by new dread succeeded, when in view -A lion came, 'gainst me, as it appear'd, - -With his head held aloft and hunger-mad, -That e'en the air was fear-struck. A she-wolf -Was at his heels, who in her leanness seem'd -Full of all wants, and many a land hath made -Disconsolate ere now. She with such fear -O'erwhelmed me, at the sight of her appall'd, -That of the height all hope I lost. As one, -Who with his gain elated, sees the time -When all unwares is gone, he inwardly -Mourns with heart-griping anguish; such was I, -Haunted by that fell beast, never at peace, -Who coming o'er against me, by degrees -Impell'd me where the sun in silence rests. - -While to the lower space with backward step -I fell, my ken discern'd the form one of one, -Whose voice seem'd faint through long disuse of speech. -When him in that great desert I espied, -"Have mercy on me!" cried I out aloud, -"Spirit! or living man! what e'er thou be!" - -He answer'd: "Now not man, man once I was, -And born of Lombard parents, Mantuana both -By country, when the power of Julius yet -Was scarcely firm. At Rome my life was past -Beneath the mild Augustus, in the time -Of fabled deities and false. A bard -Was I, and made Anchises' upright son -The subject of my song, who came from Troy, -When the flames prey'd on Ilium's haughty towers. -But thou, say wherefore to such perils past -Return'st thou? wherefore not this pleasant mount -Ascendest, cause and source of all delight?" -"And art thou then that Virgil, that well-spring, -From which such copious floods of eloquence -Have issued?" I with front abash'd replied. -"Glory and light of all the tuneful train! -May it avail me that I long with zeal -Have sought thy volume, and with love immense -Have conn'd it o'er. My master thou and guide! -Thou he from whom alone I have deriv'd -That style, which for its beauty into fame -Exalts me. See the beast, from whom I fled. -O save me from her, thou illustrious sage!" - -"For every vein and pulse throughout my frame -She hath made tremble." He, soon as he saw -That I was weeping, answer'd, "Thou must needs -Another way pursue, if thou wouldst 'scape -From out that savage wilderness. This beast, -At whom thou criest, her way will suffer none -To pass, and no less hindrance makes than death: -So bad and so accursed in her kind, -That never sated is her ravenous will, -Still after food more craving than before. -To many an animal in wedlock vile -She fastens, and shall yet to many more, -Until that greyhound come, who shall destroy -Her with sharp pain. He will not life support -By earth nor its base metals, but by love, -Wisdom, and virtue, and his land shall be -The land 'twixt either Feltro. In his might -Shall safety to Italia's plains arise, -For whose fair realm, Camilla, virgin pure, -Nisus, Euryalus, and Turnus fell. -He with incessant chase through every town -Shall worry, until he to hell at length -Restore her, thence by envy first let loose. -I for thy profit pond'ring now devise, -That thou mayst follow me, and I thy guide -Will lead thee hence through an eternal space, -Where thou shalt hear despairing shrieks, and see -Spirits of old tormented, who invoke -A second death; and those next view, who dwell -Content in fire, for that they hope to come, -Whene'er the time may be, among the blest, -Into whose regions if thou then desire -T' ascend, a spirit worthier then I -Must lead thee, in whose charge, when I depart, -Thou shalt be left: for that Almighty King, -Who reigns above, a rebel to his law, -Adjudges me, and therefore hath decreed, -That to his city none through me should come. -He in all parts hath sway; there rules, there holds -His citadel and throne. O happy those, -Whom there he chooses!" I to him in few: -"Bard! by that God, whom thou didst not adore, -I do beseech thee (that this ill and worse -I may escape) to lead me, where thou saidst, -That I Saint Peter's gate may view, and those -Who as thou tell'st, are in such dismal plight." - -Onward he mov'd, I close his steps pursu'd. diff --git a/vendor/github.com/denisenkom/go-mssqldb/LICENSE.txt b/vendor/github.com/denisenkom/go-mssqldb/LICENSE.txt deleted file mode 100644 index 74487567..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/LICENSE.txt +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/denisenkom/go-mssqldb/README.md b/vendor/github.com/denisenkom/go-mssqldb/README.md deleted file mode 100644 index b655176b..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/README.md +++ /dev/null @@ -1,289 +0,0 @@ -# A pure Go MSSQL driver for Go's database/sql package - -[![GoDoc](https://godoc.org/github.com/denisenkom/go-mssqldb?status.svg)](http://godoc.org/github.com/denisenkom/go-mssqldb) -[![Build status](https://ci.appveyor.com/api/projects/status/jrln8cs62wj9i0a2?svg=true)](https://ci.appveyor.com/project/denisenkom/go-mssqldb) -[![codecov](https://codecov.io/gh/denisenkom/go-mssqldb/branch/master/graph/badge.svg)](https://codecov.io/gh/denisenkom/go-mssqldb) - -## Install - -Requires Go 1.8 or above. - -Install with `go get github.com/denisenkom/go-mssqldb` . - -## Connection Parameters and DSN - -The recommended connection string uses a URL format: -`sqlserver://username:password@host/instance?param1=value¶m2=value` -Other supported formats are listed below. - -### Common parameters: - -* `user id` - enter the SQL Server Authentication user id or the Windows Authentication user id in the DOMAIN\User format. On Windows, if user id is empty or missing Single-Sign-On is used. -* `password` -* `database` -* `connection timeout` - in seconds (default is 0 for no timeout), set to 0 for no timeout. Recommended to set to 0 and use context to manage query and connection timeouts. -* `dial timeout` - in seconds (default is 15), set to 0 for no timeout -* `encrypt` - * `disable` - Data send between client and server is not encrypted. - * `false` - Data sent between client and server is not encrypted beyond the login packet. (Default) - * `true` - Data sent between client and server is encrypted. -* `app name` - The application name (default is go-mssqldb) - -### Connection parameters for ODBC and ADO style connection strings: - -* `server` - host or host\instance (default localhost) -* `port` - used only when there is no instance in server (default 1433) - -### Less common parameters: - -* `keepAlive` - in seconds; 0 to disable (default is 30) -* `failoverpartner` - host or host\instance (default is no partner). -* `failoverport` - used only when there is no instance in failoverpartner (default 1433) -* `packet size` - in bytes; 512 to 32767 (default is 4096) - * Encrypted connections have a maximum packet size of 16383 bytes - * Further information on usage: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-network-packet-size-server-configuration-option -* `log` - logging flags (default 0/no logging, 63 for full logging) - * 1 log errors - * 2 log messages - * 4 log rows affected - * 8 trace sql statements - * 16 log statement parameters - * 32 log transaction begin/end -* `TrustServerCertificate` - * false - Server certificate is checked. Default is false if encypt is specified. - * true - Server certificate is not checked. Default is true if encrypt is not specified. If trust server certificate is true, driver accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. This should be used only for testing. -* `certificate` - The file that contains the public key certificate of the CA that signed the SQL Server certificate. The specified certificate overrides the go platform specific CA certificates. -* `hostNameInCertificate` - Specifies the Common Name (CN) in the server certificate. Default value is the server host. -* `ServerSPN` - The kerberos SPN (Service Principal Name) for the server. Default is MSSQLSvc/host:port. -* `Workstation ID` - The workstation name (default is the host name) -* `ApplicationIntent` - Can be given the value `ReadOnly` to initiate a read-only connection to an Availability Group listener. The `database` must be specified when connecting with `Application Intent` set to `ReadOnly`. - -### The connection string can be specified in one of three formats: - - -1. URL: with `sqlserver` scheme. username and password appears before the host. Any instance appears as - the first segment in the path. All other options are query parameters. Examples: - - * `sqlserver://username:password@host/instance?param1=value¶m2=value` - * `sqlserver://username:password@host:port?param1=value¶m2=value` - * `sqlserver://sa@localhost/SQLExpress?database=master&connection+timeout=30` // `SQLExpress instance. - * `sqlserver://sa:mypass@localhost?database=master&connection+timeout=30` // username=sa, password=mypass. - * `sqlserver://sa:mypass@localhost:1234?database=master&connection+timeout=30` // port 1234 on localhost. - * `sqlserver://sa:my%7Bpass@somehost?connection+timeout=30` // password is "my{pass" - - A string of this format can be constructed using the `URL` type in the `net/url` package. - -```go - query := url.Values{} - query.Add("app name", "MyAppName") - - u := &url.URL{ - Scheme: "sqlserver", - User: url.UserPassword(username, password), - Host: fmt.Sprintf("%s:%d", hostname, port), - // Path: instance, // if connecting to an instance instead of a port - RawQuery: query.Encode(), - } - db, err := sql.Open("sqlserver", u.String()) -``` - -2. ADO: `key=value` pairs separated by `;`. Values may not contain `;`, leading and trailing whitespace is ignored. - Examples: - - * `server=localhost\\SQLExpress;user id=sa;database=master;app name=MyAppName` - * `server=localhost;user id=sa;database=master;app name=MyAppName` - -3. ODBC: Prefix with `odbc`, `key=value` pairs separated by `;`. Allow `;` by wrapping - values in `{}`. Examples: - - * `odbc:server=localhost\\SQLExpress;user id=sa;database=master;app name=MyAppName` - * `odbc:server=localhost;user id=sa;database=master;app name=MyAppName` - * `odbc:server=localhost;user id=sa;password={foo;bar}` // Value marked with `{}`, password is "foo;bar" - * `odbc:server=localhost;user id=sa;password={foo{bar}` // Value marked with `{}`, password is "foo{bar" - * `odbc:server=localhost;user id=sa;password={foobar }` // Value marked with `{}`, password is "foobar " - * `odbc:server=localhost;user id=sa;password=foo{bar` // Literal `{`, password is "foo{bar" - * `odbc:server=localhost;user id=sa;password=foo}bar` // Literal `}`, password is "foo}bar" - * `odbc:server=localhost;user id=sa;password={foo{bar}` // Literal `{`, password is "foo{bar" - * `odbc:server=localhost;user id=sa;password={foo}}bar}` // Escaped `} with `}}`, password is "foo}bar" - -## Executing Stored Procedures - -To run a stored procedure, set the query text to the procedure name: -```go -var account = "abc" -_, err := db.ExecContext(ctx, "sp_RunMe", - sql.Named("ID", 123), - sql.Named("Account", sql.Out{Dest: &account}), -) -``` - -## Reading Output Parameters from a Stored Procedure with Resultset - -To read output parameters from a stored procedure with resultset, make sure you read all the rows before reading the output parameters: -```go -sqltextcreate := ` -CREATE PROCEDURE spwithoutputandrows - @bitparam BIT OUTPUT -AS BEGIN - SET @bitparam = 1 - SELECT 'Row 1' -END -` -var bitout int64 -rows, err := db.QueryContext(ctx, "spwithoutputandrows", sql.Named("bitparam", sql.Out{Dest: &bitout})) -var strrow string -for rows.Next() { - err = rows.Scan(&strrow) -} -fmt.Printf("bitparam is %d", bitout) -``` - -## Caveat for local temporary tables - -Due to protocol limitations, temporary tables will only be allocated on the connection -as a result of executing a query with zero parameters. The following query -will, due to the use of a parameter, execute in its own session, -and `#mytemp` will be de-allocated right away: - -```go -conn, err := pool.Conn(ctx) -defer conn.Close() -_, err := conn.ExecContext(ctx, "select @p1 as x into #mytemp", 1) -// at this point #mytemp is already dropped again as the session of the ExecContext is over -``` - -To work around this, always explicitly create the local temporary -table in a query without any parameters. As a special case, the driver -will then be able to execute the query directly on the -connection-scoped session. The following example works: - -```go -conn, err := pool.Conn(ctx) - -// Set us up so that temp table is always cleaned up, since conn.Close() -// merely returns conn to pool, rather than actually closing the connection. -defer func() { - _, _ = conn.ExecContext(ctx, "drop table #mytemp") // always clean up - conn.Close() // merely returns conn to pool -}() - - -// Since we not pass any parameters below, the query will execute on the scope of -// the connection and succeed in creating the table. -_, err := conn.ExecContext(ctx, "create table #mytemp ( x int )") - -// #mytemp is now available even if you pass parameters -_, err := conn.ExecContext(ctx, "insert into #mytemp (x) values (@p1)", 1) - -``` - -## Return Status - -To get the procedure return status, pass into the parameters a -`*mssql.ReturnStatus`. For example: -``` -var rs mssql.ReturnStatus -_, err := db.ExecContext(ctx, "theproc", &rs) -log.Printf("status=%d", rs) -``` - -or - -``` -var rs mssql.ReturnStatus -_, err := db.QueryContext(ctx, "theproc", &rs) -for rows.Next() { - err = rows.Scan(&val) -} -log.Printf("status=%d", rs) -``` - -Limitation: ReturnStatus cannot be retrieved using `QueryRow`. - -## Parameters - -The `sqlserver` driver uses normal MS SQL Server syntax and expects parameters in -the sql query to be in the form of either `@Name` or `@p1` to `@pN` (ordinal position). - -```go -db.QueryContext(ctx, `select * from t where ID = @ID and Name = @p2;`, sql.Named("ID", 6), "Bob") -``` - -### Parameter Types - -To pass specific types to the query parameters, say `varchar` or `date` types, -you must convert the types to the type before passing in. The following types -are supported: - - * string -> nvarchar - * mssql.VarChar -> varchar - * time.Time -> datetimeoffset or datetime (TDS version dependent) - * mssql.DateTime1 -> datetime - * mssql.DateTimeOffset -> datetimeoffset - * "github.com/golang-sql/civil".Date -> date - * "github.com/golang-sql/civil".DateTime -> datetime2 - * "github.com/golang-sql/civil".Time -> time - * mssql.TVP -> Table Value Parameter (TDS version dependent) - -## Important Notes - - * [LastInsertId](https://golang.org/pkg/database/sql/#Result.LastInsertId) should - not be used with this driver (or SQL Server) due to how the TDS protocol - works. Please use the [OUTPUT Clause](https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql) - or add a `select ID = convert(bigint, SCOPE_IDENTITY());` to the end of your - query (ref [SCOPE_IDENTITY](https://docs.microsoft.com/en-us/sql/t-sql/functions/scope-identity-transact-sql)). - This will ensure you are getting the correct ID and will prevent a network round trip. - * [NewConnector](https://godoc.org/github.com/denisenkom/go-mssqldb#NewConnector) - may be used with [OpenDB](https://golang.org/pkg/database/sql/#OpenDB). - * [Connector.SessionInitSQL](https://godoc.org/github.com/denisenkom/go-mssqldb#Connector.SessionInitSQL) - may be set to set any driver specific session settings after the session - has been reset. If empty the session will still be reset but use the database - defaults in Go1.10+. - -## Features - -* Can be used with SQL Server 2005 or newer -* Can be used with Microsoft Azure SQL Database -* Can be used on all go supported platforms (e.g. Linux, Mac OS X and Windows) -* Supports new date/time types: date, time, datetime2, datetimeoffset -* Supports string parameters longer than 8000 characters -* Supports encryption using SSL/TLS -* Supports SQL Server and Windows Authentication -* Supports Single-Sign-On on Windows -* Supports connections to AlwaysOn Availability Group listeners, including re-direction to read-only replicas. -* Supports query notifications - -## Tests - -`go test` is used for testing. A running instance of MSSQL server is required. -Environment variables are used to pass login information. - -Example: - - env SQLSERVER_DSN=sqlserver://user:pass@hostname/instance?database=test1 go test - -## Deprecated - -These features still exist in the driver, but they are are deprecated. - -### Query Parameter Token Replace (driver "mssql") - -If you use the driver name "mssql" (rather then "sqlserver") the SQL text -will be loosly parsed and an attempt to extract identifiers using one of - -* ? -* ?nnn -* :nnn -* $nnn - -will be used. This is not recommended with SQL Server. -There is at least one existing `won't fix` issue with the query parsing. - -Use the native "@Name" parameters instead with the "sqlserver" driver name. - -## Known Issues - -* SQL Server 2008 and 2008 R2 engine cannot handle login records when SSL encryption is not disabled. -To fix SQL Server 2008 R2 issue, install SQL Server 2008 R2 Service Pack 2. -To fix SQL Server 2008 issue, install Microsoft SQL Server 2008 Service Pack 3 and Cumulative update package 3 for SQL Server 2008 SP3. -More information: http://support.microsoft.com/kb/2653857 diff --git a/vendor/github.com/denisenkom/go-mssqldb/appveyor.yml b/vendor/github.com/denisenkom/go-mssqldb/appveyor.yml deleted file mode 100644 index c4d2bb06..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/appveyor.yml +++ /dev/null @@ -1,50 +0,0 @@ -version: 1.0.{build} - -os: Windows Server 2012 R2 - -clone_folder: c:\gopath\src\github.com\denisenkom\go-mssqldb - -environment: - GOPATH: c:\gopath - HOST: localhost - SQLUSER: sa - SQLPASSWORD: Password12! - DATABASE: test - GOVERSION: 111 - matrix: - - GOVERSION: 18 - SQLINSTANCE: SQL2016 - - GOVERSION: 19 - SQLINSTANCE: SQL2016 - - GOVERSION: 110 - SQLINSTANCE: SQL2016 - - GOVERSION: 111 - SQLINSTANCE: SQL2016 - - SQLINSTANCE: SQL2014 - - SQLINSTANCE: SQL2012SP1 - - SQLINSTANCE: SQL2008R2SP2 - -install: - - set GOROOT=c:\go%GOVERSION% - - set PATH=%GOPATH%\bin;%GOROOT%\bin;%PATH% - - go version - - go env - - go get -u github.com/golang-sql/civil - -build_script: - - go build - -before_test: - # setup SQL Server - - ps: | - $instanceName = $env:SQLINSTANCE - Start-Service "MSSQL`$$instanceName" - Start-Service "SQLBrowser" - - sqlcmd -S "(local)\%SQLINSTANCE%" -Q "Use [master]; CREATE DATABASE test;" - - sqlcmd -S "(local)\%SQLINSTANCE%" -h -1 -Q "set nocount on; Select @@version" - - pip install codecov - - -test_script: - - go test -race -cpu 4 -coverprofile=coverage.txt -covermode=atomic - - codecov -f coverage.txt diff --git a/vendor/github.com/denisenkom/go-mssqldb/buf.go b/vendor/github.com/denisenkom/go-mssqldb/buf.go deleted file mode 100644 index ba39b40f..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/buf.go +++ /dev/null @@ -1,262 +0,0 @@ -package mssql - -import ( - "encoding/binary" - "errors" - "io" -) - -type packetType uint8 - -type header struct { - PacketType packetType - Status uint8 - Size uint16 - Spid uint16 - PacketNo uint8 - Pad uint8 -} - -// tdsBuffer reads and writes TDS packets of data to the transport. -// The write and read buffers are separate to make sending attn signals -// possible without locks. Currently attn signals are only sent during -// reads, not writes. -type tdsBuffer struct { - transport io.ReadWriteCloser - - packetSize int - - // Write fields. - wbuf []byte - wpos int - wPacketSeq byte - wPacketType packetType - - // Read fields. - rbuf []byte - rpos int - rsize int - final bool - rPacketType packetType - - // afterFirst is assigned to right after tdsBuffer is created and - // before the first use. It is executed after the first packet is - // written and then removed. - afterFirst func() -} - -func newTdsBuffer(bufsize uint16, transport io.ReadWriteCloser) *tdsBuffer { - return &tdsBuffer{ - packetSize: int(bufsize), - wbuf: make([]byte, 1<<16), - rbuf: make([]byte, 1<<16), - rpos: 8, - transport: transport, - } -} - -func (rw *tdsBuffer) ResizeBuffer(packetSize int) { - rw.packetSize = packetSize -} - -func (w *tdsBuffer) PackageSize() int { - return w.packetSize -} - -func (w *tdsBuffer) flush() (err error) { - // Write packet size. - w.wbuf[0] = byte(w.wPacketType) - binary.BigEndian.PutUint16(w.wbuf[2:], uint16(w.wpos)) - w.wbuf[6] = w.wPacketSeq - - // Write packet into underlying transport. - if _, err = w.transport.Write(w.wbuf[:w.wpos]); err != nil { - return err - } - // It is possible to create a whole new buffer after a flush. - // Useful for debugging. Normally reuse the buffer. - // w.wbuf = make([]byte, 1<<16) - - // Execute afterFirst hook if it is set. - if w.afterFirst != nil { - w.afterFirst() - w.afterFirst = nil - } - - w.wpos = 8 - w.wPacketSeq++ - return nil -} - -func (w *tdsBuffer) Write(p []byte) (total int, err error) { - for { - copied := copy(w.wbuf[w.wpos:w.packetSize], p) - w.wpos += copied - total += copied - if copied == len(p) { - return - } - if err = w.flush(); err != nil { - return - } - p = p[copied:] - } -} - -func (w *tdsBuffer) WriteByte(b byte) error { - if int(w.wpos) == len(w.wbuf) || w.wpos == w.packetSize { - if err := w.flush(); err != nil { - return err - } - } - w.wbuf[w.wpos] = b - w.wpos += 1 - return nil -} - -func (w *tdsBuffer) BeginPacket(packetType packetType, resetSession bool) { - status := byte(0) - if resetSession { - switch packetType { - // Reset session can only be set on the following packet types. - case packSQLBatch, packRPCRequest, packTransMgrReq: - status = 0x8 - } - } - w.wbuf[1] = status // Packet is incomplete. This byte is set again in FinishPacket. - w.wpos = 8 - w.wPacketSeq = 1 - w.wPacketType = packetType -} - -func (w *tdsBuffer) FinishPacket() error { - w.wbuf[1] |= 1 // Mark this as the last packet in the message. - return w.flush() -} - -var headerSize = binary.Size(header{}) - -func (r *tdsBuffer) readNextPacket() error { - h := header{} - var err error - err = binary.Read(r.transport, binary.BigEndian, &h) - if err != nil { - return err - } - if int(h.Size) > r.packetSize { - return errors.New("Invalid packet size, it is longer than buffer size") - } - if headerSize > int(h.Size) { - return errors.New("Invalid packet size, it is shorter than header size") - } - _, err = io.ReadFull(r.transport, r.rbuf[headerSize:h.Size]) - if err != nil { - return err - } - r.rpos = headerSize - r.rsize = int(h.Size) - r.final = h.Status != 0 - r.rPacketType = h.PacketType - return nil -} - -func (r *tdsBuffer) BeginRead() (packetType, error) { - err := r.readNextPacket() - if err != nil { - return 0, err - } - return r.rPacketType, nil -} - -func (r *tdsBuffer) ReadByte() (res byte, err error) { - if r.rpos == r.rsize { - if r.final { - return 0, io.EOF - } - err = r.readNextPacket() - if err != nil { - return 0, err - } - } - res = r.rbuf[r.rpos] - r.rpos++ - return res, nil -} - -func (r *tdsBuffer) byte() byte { - b, err := r.ReadByte() - if err != nil { - badStreamPanic(err) - } - return b -} - -func (r *tdsBuffer) ReadFull(buf []byte) { - _, err := io.ReadFull(r, buf[:]) - if err != nil { - badStreamPanic(err) - } -} - -func (r *tdsBuffer) uint64() uint64 { - var buf [8]byte - r.ReadFull(buf[:]) - return binary.LittleEndian.Uint64(buf[:]) -} - -func (r *tdsBuffer) int32() int32 { - return int32(r.uint32()) -} - -func (r *tdsBuffer) uint32() uint32 { - var buf [4]byte - r.ReadFull(buf[:]) - return binary.LittleEndian.Uint32(buf[:]) -} - -func (r *tdsBuffer) uint16() uint16 { - var buf [2]byte - r.ReadFull(buf[:]) - return binary.LittleEndian.Uint16(buf[:]) -} - -func (r *tdsBuffer) BVarChar() string { - return readBVarCharOrPanic(r) -} - -func readBVarCharOrPanic(r io.Reader) string { - s, err := readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - return s -} - -func readUsVarCharOrPanic(r io.Reader) string { - s, err := readUsVarChar(r) - if err != nil { - badStreamPanic(err) - } - return s -} - -func (r *tdsBuffer) UsVarChar() string { - return readUsVarCharOrPanic(r) -} - -func (r *tdsBuffer) Read(buf []byte) (copied int, err error) { - copied = 0 - err = nil - if r.rpos == r.rsize { - if r.final { - return 0, io.EOF - } - err = r.readNextPacket() - if err != nil { - return - } - } - copied = copy(buf, r.rbuf[r.rpos:r.rsize]) - r.rpos += copied - return -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/bulkcopy.go b/vendor/github.com/denisenkom/go-mssqldb/bulkcopy.go deleted file mode 100644 index 1d5eacb3..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/bulkcopy.go +++ /dev/null @@ -1,583 +0,0 @@ -package mssql - -import ( - "bytes" - "context" - "encoding/binary" - "fmt" - "math" - "reflect" - "strings" - "time" - - "github.com/denisenkom/go-mssqldb/internal/decimal" -) - -type Bulk struct { - // ctx is used only for AddRow and Done methods. - // This could be removed if AddRow and Done accepted - // a ctx field as well, which is available with the - // database/sql call. - ctx context.Context - - cn *Conn - metadata []columnStruct - bulkColumns []columnStruct - columnsName []string - tablename string - numRows int - - headerSent bool - Options BulkOptions - Debug bool -} -type BulkOptions struct { - CheckConstraints bool - FireTriggers bool - KeepNulls bool - KilobytesPerBatch int - RowsPerBatch int - Order []string - Tablock bool -} - -type DataValue interface{} - -const ( - sqlDateFormat = "2006-01-02" - sqlTimeFormat = "2006-01-02 15:04:05.999999999Z07:00" -) - -func (cn *Conn) CreateBulk(table string, columns []string) (_ *Bulk) { - b := Bulk{ctx: context.Background(), cn: cn, tablename: table, headerSent: false, columnsName: columns} - b.Debug = false - return &b -} - -func (cn *Conn) CreateBulkContext(ctx context.Context, table string, columns []string) (_ *Bulk) { - b := Bulk{ctx: ctx, cn: cn, tablename: table, headerSent: false, columnsName: columns} - b.Debug = false - return &b -} - -func (b *Bulk) sendBulkCommand(ctx context.Context) (err error) { - //get table columns info - err = b.getMetadata(ctx) - if err != nil { - return err - } - - //match the columns - for _, colname := range b.columnsName { - var bulkCol *columnStruct - - for _, m := range b.metadata { - if m.ColName == colname { - bulkCol = &m - break - } - } - if bulkCol != nil { - - if bulkCol.ti.TypeId == typeUdt { - //send udt as binary - bulkCol.ti.TypeId = typeBigVarBin - } - b.bulkColumns = append(b.bulkColumns, *bulkCol) - b.dlogf("Adding column %s %s %#x", colname, bulkCol.ColName, bulkCol.ti.TypeId) - } else { - return fmt.Errorf("Column %s does not exist in destination table %s", colname, b.tablename) - } - } - - //create the bulk command - - //columns definitions - var col_defs bytes.Buffer - for i, col := range b.bulkColumns { - if i != 0 { - col_defs.WriteString(", ") - } - col_defs.WriteString("[" + col.ColName + "] " + makeDecl(col.ti)) - } - - //options - var with_opts []string - - if b.Options.CheckConstraints { - with_opts = append(with_opts, "CHECK_CONSTRAINTS") - } - if b.Options.FireTriggers { - with_opts = append(with_opts, "FIRE_TRIGGERS") - } - if b.Options.KeepNulls { - with_opts = append(with_opts, "KEEP_NULLS") - } - if b.Options.KilobytesPerBatch > 0 { - with_opts = append(with_opts, fmt.Sprintf("KILOBYTES_PER_BATCH = %d", b.Options.KilobytesPerBatch)) - } - if b.Options.RowsPerBatch > 0 { - with_opts = append(with_opts, fmt.Sprintf("ROWS_PER_BATCH = %d", b.Options.RowsPerBatch)) - } - if len(b.Options.Order) > 0 { - with_opts = append(with_opts, fmt.Sprintf("ORDER(%s)", strings.Join(b.Options.Order, ","))) - } - if b.Options.Tablock { - with_opts = append(with_opts, "TABLOCK") - } - var with_part string - if len(with_opts) > 0 { - with_part = fmt.Sprintf("WITH (%s)", strings.Join(with_opts, ",")) - } - - query := fmt.Sprintf("INSERT BULK %s (%s) %s", b.tablename, col_defs.String(), with_part) - - stmt, err := b.cn.PrepareContext(ctx, query) - if err != nil { - return fmt.Errorf("Prepare failed: %s", err.Error()) - } - b.dlogf(query) - - _, err = stmt.(*Stmt).ExecContext(ctx, nil) - if err != nil { - return err - } - - b.headerSent = true - - var buf = b.cn.sess.buf - buf.BeginPacket(packBulkLoadBCP, false) - - // Send the columns metadata. - columnMetadata := b.createColMetadata() - _, err = buf.Write(columnMetadata) - - return -} - -// AddRow immediately writes the row to the destination table. -// The arguments are the row values in the order they were specified. -func (b *Bulk) AddRow(row []interface{}) (err error) { - if !b.headerSent { - err = b.sendBulkCommand(b.ctx) - if err != nil { - return - } - } - - if len(row) != len(b.bulkColumns) { - return fmt.Errorf("Row does not have the same number of columns than the destination table %d %d", - len(row), len(b.bulkColumns)) - } - - bytes, err := b.makeRowData(row) - if err != nil { - return - } - - _, err = b.cn.sess.buf.Write(bytes) - if err != nil { - return - } - - b.numRows = b.numRows + 1 - return -} - -func (b *Bulk) makeRowData(row []interface{}) ([]byte, error) { - buf := new(bytes.Buffer) - buf.WriteByte(byte(tokenRow)) - - var logcol bytes.Buffer - for i, col := range b.bulkColumns { - - if b.Debug { - logcol.WriteString(fmt.Sprintf(" col[%d]='%v' ", i, row[i])) - } - param, err := b.makeParam(row[i], col) - if err != nil { - return nil, fmt.Errorf("bulkcopy: %s", err.Error()) - } - - if col.ti.Writer == nil { - return nil, fmt.Errorf("no writer for column: %s, TypeId: %#x", - col.ColName, col.ti.TypeId) - } - err = col.ti.Writer(buf, param.ti, param.buffer) - if err != nil { - return nil, fmt.Errorf("bulkcopy: %s", err.Error()) - } - } - - b.dlogf("row[%d] %s\n", b.numRows, logcol.String()) - - return buf.Bytes(), nil -} - -func (b *Bulk) Done() (rowcount int64, err error) { - if b.headerSent == false { - //no rows had been sent - return 0, nil - } - var buf = b.cn.sess.buf - buf.WriteByte(byte(tokenDone)) - - binary.Write(buf, binary.LittleEndian, uint16(doneFinal)) - binary.Write(buf, binary.LittleEndian, uint16(0)) // curcmd - - if b.cn.sess.loginAck.TDSVersion >= verTDS72 { - binary.Write(buf, binary.LittleEndian, uint64(0)) //rowcount 0 - } else { - binary.Write(buf, binary.LittleEndian, uint32(0)) //rowcount 0 - } - - buf.FinishPacket() - - tokchan := make(chan tokenStruct, 5) - go processResponse(b.ctx, b.cn.sess, tokchan, nil) - - var rowCount int64 - for token := range tokchan { - switch token := token.(type) { - case doneStruct: - if token.Status&doneCount != 0 { - rowCount = int64(token.RowCount) - } - if token.isError() { - return 0, token.getError() - } - case error: - return 0, b.cn.checkBadConn(token) - } - } - return rowCount, nil -} - -func (b *Bulk) createColMetadata() []byte { - buf := new(bytes.Buffer) - buf.WriteByte(byte(tokenColMetadata)) // token - binary.Write(buf, binary.LittleEndian, uint16(len(b.bulkColumns))) // column count - - for i, col := range b.bulkColumns { - - if b.cn.sess.loginAck.TDSVersion >= verTDS72 { - binary.Write(buf, binary.LittleEndian, uint32(col.UserType)) // usertype, always 0? - } else { - binary.Write(buf, binary.LittleEndian, uint16(col.UserType)) - } - binary.Write(buf, binary.LittleEndian, uint16(col.Flags)) - - writeTypeInfo(buf, &b.bulkColumns[i].ti) - - if col.ti.TypeId == typeNText || - col.ti.TypeId == typeText || - col.ti.TypeId == typeImage { - - tablename_ucs2 := str2ucs2(b.tablename) - binary.Write(buf, binary.LittleEndian, uint16(len(tablename_ucs2)/2)) - buf.Write(tablename_ucs2) - } - colname_ucs2 := str2ucs2(col.ColName) - buf.WriteByte(uint8(len(colname_ucs2) / 2)) - buf.Write(colname_ucs2) - } - - return buf.Bytes() -} - -func (b *Bulk) getMetadata(ctx context.Context) (err error) { - stmt, err := b.cn.prepareContext(ctx, "SET FMTONLY ON") - if err != nil { - return - } - - _, err = stmt.ExecContext(ctx, nil) - if err != nil { - return - } - - // Get columns info. - stmt, err = b.cn.prepareContext(ctx, fmt.Sprintf("select * from %s SET FMTONLY OFF", b.tablename)) - if err != nil { - return - } - rows, err := stmt.QueryContext(ctx, nil) - if err != nil { - return fmt.Errorf("get columns info failed: %v", err) - } - b.metadata = rows.(*Rows).cols - - if b.Debug { - for _, col := range b.metadata { - b.dlogf("col: %s typeId: %#x size: %d scale: %d prec: %d flags: %d lcid: %#x\n", - col.ColName, col.ti.TypeId, col.ti.Size, col.ti.Scale, col.ti.Prec, - col.Flags, col.ti.Collation.LcidAndFlags) - } - } - - return rows.Close() -} - -func (b *Bulk) makeParam(val DataValue, col columnStruct) (res param, err error) { - res.ti.Size = col.ti.Size - res.ti.TypeId = col.ti.TypeId - - if val == nil { - res.ti.Size = 0 - return - } - - switch col.ti.TypeId { - - case typeInt1, typeInt2, typeInt4, typeInt8, typeIntN: - var intvalue int64 - - switch val := val.(type) { - case int: - intvalue = int64(val) - case int32: - intvalue = int64(val) - case int64: - intvalue = val - default: - err = fmt.Errorf("mssql: invalid type for int column: %T", val) - return - } - - res.buffer = make([]byte, res.ti.Size) - if col.ti.Size == 1 { - res.buffer[0] = byte(intvalue) - } else if col.ti.Size == 2 { - binary.LittleEndian.PutUint16(res.buffer, uint16(intvalue)) - } else if col.ti.Size == 4 { - binary.LittleEndian.PutUint32(res.buffer, uint32(intvalue)) - } else if col.ti.Size == 8 { - binary.LittleEndian.PutUint64(res.buffer, uint64(intvalue)) - } - case typeFlt4, typeFlt8, typeFltN: - var floatvalue float64 - - switch val := val.(type) { - case float32: - floatvalue = float64(val) - case float64: - floatvalue = val - case int: - floatvalue = float64(val) - case int64: - floatvalue = float64(val) - default: - err = fmt.Errorf("mssql: invalid type for float column: %T %s", val, val) - return - } - - if col.ti.Size == 4 { - res.buffer = make([]byte, 4) - binary.LittleEndian.PutUint32(res.buffer, math.Float32bits(float32(floatvalue))) - } else if col.ti.Size == 8 { - res.buffer = make([]byte, 8) - binary.LittleEndian.PutUint64(res.buffer, math.Float64bits(floatvalue)) - } - case typeNVarChar, typeNText, typeNChar: - - switch val := val.(type) { - case string: - res.buffer = str2ucs2(val) - case []byte: - res.buffer = val - default: - err = fmt.Errorf("mssql: invalid type for nvarchar column: %T %s", val, val) - return - } - res.ti.Size = len(res.buffer) - - case typeVarChar, typeBigVarChar, typeText, typeChar, typeBigChar: - switch val := val.(type) { - case string: - res.buffer = []byte(val) - case []byte: - res.buffer = val - default: - err = fmt.Errorf("mssql: invalid type for varchar column: %T %s", val, val) - return - } - res.ti.Size = len(res.buffer) - - case typeBit, typeBitN: - if reflect.TypeOf(val).Kind() != reflect.Bool { - err = fmt.Errorf("mssql: invalid type for bit column: %T %s", val, val) - return - } - res.ti.TypeId = typeBitN - res.ti.Size = 1 - res.buffer = make([]byte, 1) - if val.(bool) { - res.buffer[0] = 1 - } - case typeDateTime2N: - switch val := val.(type) { - case time.Time: - res.buffer = encodeDateTime2(val, int(col.ti.Scale)) - res.ti.Size = len(res.buffer) - case string: - var t time.Time - if t, err = time.Parse(sqlTimeFormat, val); err != nil { - return res, fmt.Errorf("bulk: unable to convert string to date: %v", err) - } - res.buffer = encodeDateTime2(t, int(col.ti.Scale)) - res.ti.Size = len(res.buffer) - default: - err = fmt.Errorf("mssql: invalid type for datetime2 column: %T %s", val, val) - return - } - case typeDateTimeOffsetN: - switch val := val.(type) { - case time.Time: - res.buffer = encodeDateTimeOffset(val, int(col.ti.Scale)) - res.ti.Size = len(res.buffer) - case string: - var t time.Time - if t, err = time.Parse(sqlTimeFormat, val); err != nil { - return res, fmt.Errorf("bulk: unable to convert string to date: %v", err) - } - res.buffer = encodeDateTimeOffset(t, int(col.ti.Scale)) - res.ti.Size = len(res.buffer) - default: - err = fmt.Errorf("mssql: invalid type for datetimeoffset column: %T %s", val, val) - return - } - case typeDateN: - switch val := val.(type) { - case time.Time: - res.buffer = encodeDate(val) - res.ti.Size = len(res.buffer) - case string: - var t time.Time - if t, err = time.ParseInLocation(sqlDateFormat, val, time.UTC); err != nil { - return res, fmt.Errorf("bulk: unable to convert string to date: %v", err) - } - res.buffer = encodeDate(t) - res.ti.Size = len(res.buffer) - default: - err = fmt.Errorf("mssql: invalid type for date column: %T %s", val, val) - return - } - case typeDateTime, typeDateTimeN, typeDateTim4: - var t time.Time - switch val := val.(type) { - case time.Time: - t = val - case string: - if t, err = time.Parse(sqlTimeFormat, val); err != nil { - return res, fmt.Errorf("bulk: unable to convert string to date: %v", err) - } - default: - err = fmt.Errorf("mssql: invalid type for datetime column: %T %s", val, val) - return - } - - if col.ti.Size == 4 { - res.buffer = encodeDateTim4(t) - res.ti.Size = len(res.buffer) - } else if col.ti.Size == 8 { - res.buffer = encodeDateTime(t) - res.ti.Size = len(res.buffer) - } else { - err = fmt.Errorf("mssql: invalid size of column %d", col.ti.Size) - } - - // case typeMoney, typeMoney4, typeMoneyN: - case typeDecimal, typeDecimalN, typeNumeric, typeNumericN: - prec := col.ti.Prec - scale := col.ti.Scale - var dec decimal.Decimal - switch v := val.(type) { - case int: - dec = decimal.Int64ToDecimalScale(int64(v), 0) - case int8: - dec = decimal.Int64ToDecimalScale(int64(v), 0) - case int16: - dec = decimal.Int64ToDecimalScale(int64(v), 0) - case int32: - dec = decimal.Int64ToDecimalScale(int64(v), 0) - case int64: - dec = decimal.Int64ToDecimalScale(int64(v), 0) - case float32: - dec, err = decimal.Float64ToDecimalScale(float64(v), scale) - case float64: - dec, err = decimal.Float64ToDecimalScale(float64(v), scale) - case string: - dec, err = decimal.StringToDecimalScale(v, scale) - default: - return res, fmt.Errorf("unknown value for decimal: %T %#v", v, v) - } - - if err != nil { - return res, err - } - dec.SetPrec(prec) - - var length byte - switch { - case prec <= 9: - length = 4 - case prec <= 19: - length = 8 - case prec <= 28: - length = 12 - default: - length = 16 - } - - buf := make([]byte, length+1) - // first byte length written by typeInfo.writer - res.ti.Size = int(length) + 1 - // second byte sign - if !dec.IsPositive() { - buf[0] = 0 - } else { - buf[0] = 1 - } - - ub := dec.UnscaledBytes() - l := len(ub) - if l > int(length) { - err = fmt.Errorf("decimal out of range: %s", dec) - return res, err - } - // reverse the bytes - for i, j := 1, l-1; j >= 0; i, j = i+1, j-1 { - buf[i] = ub[j] - } - res.buffer = buf - case typeBigVarBin, typeBigBinary: - switch val := val.(type) { - case []byte: - res.ti.Size = len(val) - res.buffer = val - default: - err = fmt.Errorf("mssql: invalid type for Binary column: %T %s", val, val) - return - } - case typeGuid: - switch val := val.(type) { - case []byte: - res.ti.Size = len(val) - res.buffer = val - default: - err = fmt.Errorf("mssql: invalid type for Guid column: %T %s", val, val) - return - } - - default: - err = fmt.Errorf("mssql: type %x not implemented", col.ti.TypeId) - } - return - -} - -func (b *Bulk) dlogf(format string, v ...interface{}) { - if b.Debug { - b.cn.sess.log.Printf(format, v...) - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/bulkcopy_sql.go b/vendor/github.com/denisenkom/go-mssqldb/bulkcopy_sql.go deleted file mode 100644 index 709505b2..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/bulkcopy_sql.go +++ /dev/null @@ -1,93 +0,0 @@ -package mssql - -import ( - "context" - "database/sql/driver" - "encoding/json" - "errors" -) - -type copyin struct { - cn *Conn - bulkcopy *Bulk - closed bool -} - -type serializableBulkConfig struct { - TableName string - ColumnsName []string - Options BulkOptions -} - -func (d *Driver) OpenConnection(dsn string) (*Conn, error) { - return d.open(context.Background(), dsn) -} - -func (c *Conn) prepareCopyIn(ctx context.Context, query string) (_ driver.Stmt, err error) { - config_json := query[11:] - - bulkconfig := serializableBulkConfig{} - err = json.Unmarshal([]byte(config_json), &bulkconfig) - if err != nil { - return - } - - bulkcopy := c.CreateBulkContext(ctx, bulkconfig.TableName, bulkconfig.ColumnsName) - bulkcopy.Options = bulkconfig.Options - - ci := ©in{ - cn: c, - bulkcopy: bulkcopy, - } - - return ci, nil -} - -func CopyIn(table string, options BulkOptions, columns ...string) string { - bulkconfig := &serializableBulkConfig{TableName: table, Options: options, ColumnsName: columns} - - config_json, err := json.Marshal(bulkconfig) - if err != nil { - panic(err) - } - - stmt := "INSERTBULK " + string(config_json) - - return stmt -} - -func (ci *copyin) NumInput() int { - return -1 -} - -func (ci *copyin) Query(v []driver.Value) (r driver.Rows, err error) { - panic("should never be called") -} - -func (ci *copyin) Exec(v []driver.Value) (r driver.Result, err error) { - if ci.closed { - return nil, errors.New("copyin query is closed") - } - - if len(v) == 0 { - rowCount, err := ci.bulkcopy.Done() - ci.closed = true - return driver.RowsAffected(rowCount), err - } - - t := make([]interface{}, len(v)) - for i, val := range v { - t[i] = val - } - - err = ci.bulkcopy.AddRow(t) - if err != nil { - return - } - - return driver.RowsAffected(0), nil -} - -func (ci *copyin) Close() (err error) { - return nil -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/conn_str.go b/vendor/github.com/denisenkom/go-mssqldb/conn_str.go deleted file mode 100644 index 07427554..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/conn_str.go +++ /dev/null @@ -1,456 +0,0 @@ -package mssql - -import ( - "fmt" - "net" - "net/url" - "os" - "strconv" - "strings" - "time" - "unicode" -) - -type connectParams struct { - logFlags uint64 - port uint64 - host string - instance string - database string - user string - password string - dial_timeout time.Duration - conn_timeout time.Duration - keepAlive time.Duration - encrypt bool - disableEncryption bool - trustServerCertificate bool - certificate string - hostInCertificate string - hostInCertificateProvided bool - serverSPN string - workstation string - appname string - typeFlags uint8 - failOverPartner string - failOverPort uint64 - packetSize uint16 -} - -func parseConnectParams(dsn string) (connectParams, error) { - var p connectParams - - var params map[string]string - if strings.HasPrefix(dsn, "odbc:") { - parameters, err := splitConnectionStringOdbc(dsn[len("odbc:"):]) - if err != nil { - return p, err - } - params = parameters - } else if strings.HasPrefix(dsn, "sqlserver://") { - parameters, err := splitConnectionStringURL(dsn) - if err != nil { - return p, err - } - params = parameters - } else { - params = splitConnectionString(dsn) - } - - strlog, ok := params["log"] - if ok { - var err error - p.logFlags, err = strconv.ParseUint(strlog, 10, 64) - if err != nil { - return p, fmt.Errorf("Invalid log parameter '%s': %s", strlog, err.Error()) - } - } - server := params["server"] - parts := strings.SplitN(server, `\`, 2) - p.host = parts[0] - if p.host == "." || strings.ToUpper(p.host) == "(LOCAL)" || p.host == "" { - p.host = "localhost" - } - if len(parts) > 1 { - p.instance = parts[1] - } - p.database = params["database"] - p.user = params["user id"] - p.password = params["password"] - - p.port = 1433 - strport, ok := params["port"] - if ok { - var err error - p.port, err = strconv.ParseUint(strport, 10, 16) - if err != nil { - f := "Invalid tcp port '%v': %v" - return p, fmt.Errorf(f, strport, err.Error()) - } - } - - // https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-network-packet-size-server-configuration-option - // Default packet size remains at 4096 bytes - p.packetSize = 4096 - strpsize, ok := params["packet size"] - if ok { - var err error - psize, err := strconv.ParseUint(strpsize, 0, 16) - if err != nil { - f := "Invalid packet size '%v': %v" - return p, fmt.Errorf(f, strpsize, err.Error()) - } - - // Ensure packet size falls within the TDS protocol range of 512 to 32767 bytes - // NOTE: Encrypted connections have a maximum size of 16383 bytes. If you request - // a higher packet size, the server will respond with an ENVCHANGE request to - // alter the packet size to 16383 bytes. - p.packetSize = uint16(psize) - if p.packetSize < 512 { - p.packetSize = 512 - } else if p.packetSize > 32767 { - p.packetSize = 32767 - } - } - - // https://msdn.microsoft.com/en-us/library/dd341108.aspx - // - // Do not set a connection timeout. Use Context to manage such things. - // Default to zero, but still allow it to be set. - if strconntimeout, ok := params["connection timeout"]; ok { - timeout, err := strconv.ParseUint(strconntimeout, 10, 64) - if err != nil { - f := "Invalid connection timeout '%v': %v" - return p, fmt.Errorf(f, strconntimeout, err.Error()) - } - p.conn_timeout = time.Duration(timeout) * time.Second - } - p.dial_timeout = 15 * time.Second - if strdialtimeout, ok := params["dial timeout"]; ok { - timeout, err := strconv.ParseUint(strdialtimeout, 10, 64) - if err != nil { - f := "Invalid dial timeout '%v': %v" - return p, fmt.Errorf(f, strdialtimeout, err.Error()) - } - p.dial_timeout = time.Duration(timeout) * time.Second - } - - // default keep alive should be 30 seconds according to spec: - // https://msdn.microsoft.com/en-us/library/dd341108.aspx - p.keepAlive = 30 * time.Second - if keepAlive, ok := params["keepalive"]; ok { - timeout, err := strconv.ParseUint(keepAlive, 10, 64) - if err != nil { - f := "Invalid keepAlive value '%s': %s" - return p, fmt.Errorf(f, keepAlive, err.Error()) - } - p.keepAlive = time.Duration(timeout) * time.Second - } - encrypt, ok := params["encrypt"] - if ok { - if strings.EqualFold(encrypt, "DISABLE") { - p.disableEncryption = true - } else { - var err error - p.encrypt, err = strconv.ParseBool(encrypt) - if err != nil { - f := "Invalid encrypt '%s': %s" - return p, fmt.Errorf(f, encrypt, err.Error()) - } - } - } else { - p.trustServerCertificate = true - } - trust, ok := params["trustservercertificate"] - if ok { - var err error - p.trustServerCertificate, err = strconv.ParseBool(trust) - if err != nil { - f := "Invalid trust server certificate '%s': %s" - return p, fmt.Errorf(f, trust, err.Error()) - } - } - p.certificate = params["certificate"] - p.hostInCertificate, ok = params["hostnameincertificate"] - if ok { - p.hostInCertificateProvided = true - } else { - p.hostInCertificate = p.host - p.hostInCertificateProvided = false - } - - serverSPN, ok := params["serverspn"] - if ok { - p.serverSPN = serverSPN - } else { - p.serverSPN = fmt.Sprintf("MSSQLSvc/%s:%d", p.host, p.port) - } - - workstation, ok := params["workstation id"] - if ok { - p.workstation = workstation - } else { - workstation, err := os.Hostname() - if err == nil { - p.workstation = workstation - } - } - - appname, ok := params["app name"] - if !ok { - appname = "go-mssqldb" - } - p.appname = appname - - appintent, ok := params["applicationintent"] - if ok { - if appintent == "ReadOnly" { - if p.database == "" { - return p, fmt.Errorf("Database must be specified when ApplicationIntent is ReadOnly") - } - p.typeFlags |= fReadOnlyIntent - } - } - - failOverPartner, ok := params["failoverpartner"] - if ok { - p.failOverPartner = failOverPartner - } - - failOverPort, ok := params["failoverport"] - if ok { - var err error - p.failOverPort, err = strconv.ParseUint(failOverPort, 0, 16) - if err != nil { - f := "Invalid tcp port '%v': %v" - return p, fmt.Errorf(f, failOverPort, err.Error()) - } - } - - return p, nil -} - -func splitConnectionString(dsn string) (res map[string]string) { - res = map[string]string{} - parts := strings.Split(dsn, ";") - for _, part := range parts { - if len(part) == 0 { - continue - } - lst := strings.SplitN(part, "=", 2) - name := strings.TrimSpace(strings.ToLower(lst[0])) - if len(name) == 0 { - continue - } - var value string = "" - if len(lst) > 1 { - value = strings.TrimSpace(lst[1]) - } - res[name] = value - } - return res -} - -// Splits a URL of the form sqlserver://username:password@host/instance?param1=value¶m2=value -func splitConnectionStringURL(dsn string) (map[string]string, error) { - res := map[string]string{} - - u, err := url.Parse(dsn) - if err != nil { - return res, err - } - - if u.Scheme != "sqlserver" { - return res, fmt.Errorf("scheme %s is not recognized", u.Scheme) - } - - if u.User != nil { - res["user id"] = u.User.Username() - p, exists := u.User.Password() - if exists { - res["password"] = p - } - } - - host, port, err := net.SplitHostPort(u.Host) - if err != nil { - host = u.Host - } - - if len(u.Path) > 0 { - res["server"] = host + "\\" + u.Path[1:] - } else { - res["server"] = host - } - - if len(port) > 0 { - res["port"] = port - } - - query := u.Query() - for k, v := range query { - if len(v) > 1 { - return res, fmt.Errorf("key %s provided more than once", k) - } - res[strings.ToLower(k)] = v[0] - } - - return res, nil -} - -// Splits a URL in the ODBC format -func splitConnectionStringOdbc(dsn string) (map[string]string, error) { - res := map[string]string{} - - type parserState int - const ( - // Before the start of a key - parserStateBeforeKey parserState = iota - - // Inside a key - parserStateKey - - // Beginning of a value. May be bare or braced - parserStateBeginValue - - // Inside a bare value - parserStateBareValue - - // Inside a braced value - parserStateBracedValue - - // A closing brace inside a braced value. - // May be the end of the value or an escaped closing brace, depending on the next character - parserStateBracedValueClosingBrace - - // After a value. Next character should be a semicolon or whitespace. - parserStateEndValue - ) - - var state = parserStateBeforeKey - - var key string - var value string - - for i, c := range dsn { - switch state { - case parserStateBeforeKey: - switch { - case c == '=': - return res, fmt.Errorf("Unexpected character = at index %d. Expected start of key or semi-colon or whitespace.", i) - case !unicode.IsSpace(c) && c != ';': - state = parserStateKey - key += string(c) - } - - case parserStateKey: - switch c { - case '=': - key = normalizeOdbcKey(key) - state = parserStateBeginValue - - case ';': - // Key without value - key = normalizeOdbcKey(key) - res[key] = value - key = "" - value = "" - state = parserStateBeforeKey - - default: - key += string(c) - } - - case parserStateBeginValue: - switch { - case c == '{': - state = parserStateBracedValue - case c == ';': - // Empty value - res[key] = value - key = "" - state = parserStateBeforeKey - case unicode.IsSpace(c): - // Ignore whitespace - default: - state = parserStateBareValue - value += string(c) - } - - case parserStateBareValue: - if c == ';' { - res[key] = strings.TrimRightFunc(value, unicode.IsSpace) - key = "" - value = "" - state = parserStateBeforeKey - } else { - value += string(c) - } - - case parserStateBracedValue: - if c == '}' { - state = parserStateBracedValueClosingBrace - } else { - value += string(c) - } - - case parserStateBracedValueClosingBrace: - if c == '}' { - // Escaped closing brace - value += string(c) - state = parserStateBracedValue - continue - } - - // End of braced value - res[key] = value - key = "" - value = "" - - // This character is the first character past the end, - // so it needs to be parsed like the parserStateEndValue state. - state = parserStateEndValue - switch { - case c == ';': - state = parserStateBeforeKey - case unicode.IsSpace(c): - // Ignore whitespace - default: - return res, fmt.Errorf("Unexpected character %c at index %d. Expected semi-colon or whitespace.", c, i) - } - - case parserStateEndValue: - switch { - case c == ';': - state = parserStateBeforeKey - case unicode.IsSpace(c): - // Ignore whitespace - default: - return res, fmt.Errorf("Unexpected character %c at index %d. Expected semi-colon or whitespace.", c, i) - } - } - } - - switch state { - case parserStateBeforeKey: // Okay - case parserStateKey: // Unfinished key. Treat as key without value. - key = normalizeOdbcKey(key) - res[key] = value - case parserStateBeginValue: // Empty value - res[key] = value - case parserStateBareValue: - res[key] = strings.TrimRightFunc(value, unicode.IsSpace) - case parserStateBracedValue: - return res, fmt.Errorf("Unexpected end of braced value at index %d.", len(dsn)) - case parserStateBracedValueClosingBrace: // End of braced value - res[key] = value - case parserStateEndValue: // Okay - } - - return res, nil -} - -// Normalizes the given string as an ODBC-format key -func normalizeOdbcKey(s string) string { - return strings.ToLower(strings.TrimRightFunc(s, unicode.IsSpace)) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/convert.go b/vendor/github.com/denisenkom/go-mssqldb/convert.go deleted file mode 100644 index 51bd4ee3..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/convert.go +++ /dev/null @@ -1,306 +0,0 @@ -package mssql - -import "errors" - -// Copyright 2011 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. - -// Type conversions for Scan. - -// This file was imported from database.sql.convert for go 1.10.3 with minor modifications to get -// convertAssign function -// This function is used internally by sql to convert values during call to Scan, we need same -// logic to return values for OUTPUT parameters. -// TODO: sql library should instead expose function defaultCheckNamedValue to be callable by drivers - -import ( - "database/sql" - "database/sql/driver" - "fmt" - "reflect" - "strconv" - "time" -) - -var errNilPtr = errors.New("destination pointer is nil") // embedded in descriptive error - -// convertAssign copies to dest the value in src, converting it if possible. -// An error is returned if the copy would result in loss of information. -// dest should be a pointer type. -func convertAssign(dest, src interface{}) error { - // Common cases, without reflect. - switch s := src.(type) { - case string: - switch d := dest.(type) { - case *string: - if d == nil { - return errNilPtr - } - *d = s - return nil - case *[]byte: - if d == nil { - return errNilPtr - } - *d = []byte(s) - return nil - case *sql.RawBytes: - if d == nil { - return errNilPtr - } - *d = append((*d)[:0], s...) - return nil - } - case []byte: - switch d := dest.(type) { - case *string: - if d == nil { - return errNilPtr - } - *d = string(s) - return nil - case *interface{}: - if d == nil { - return errNilPtr - } - *d = cloneBytes(s) - return nil - case *[]byte: - if d == nil { - return errNilPtr - } - *d = cloneBytes(s) - return nil - case *sql.RawBytes: - if d == nil { - return errNilPtr - } - *d = s - return nil - } - case time.Time: - switch d := dest.(type) { - case *time.Time: - *d = s - return nil - case *string: - *d = s.Format(time.RFC3339Nano) - return nil - case *[]byte: - if d == nil { - return errNilPtr - } - *d = []byte(s.Format(time.RFC3339Nano)) - return nil - case *sql.RawBytes: - if d == nil { - return errNilPtr - } - *d = s.AppendFormat((*d)[:0], time.RFC3339Nano) - return nil - } - case nil: - switch d := dest.(type) { - case *interface{}: - if d == nil { - return errNilPtr - } - *d = nil - return nil - case *[]byte: - if d == nil { - return errNilPtr - } - *d = nil - return nil - case *sql.RawBytes: - if d == nil { - return errNilPtr - } - *d = nil - return nil - } - } - - var sv reflect.Value - - switch d := dest.(type) { - case *string: - sv = reflect.ValueOf(src) - switch sv.Kind() { - case reflect.Bool, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Float32, reflect.Float64: - *d = asString(src) - return nil - } - case *[]byte: - sv = reflect.ValueOf(src) - if b, ok := asBytes(nil, sv); ok { - *d = b - return nil - } - case *sql.RawBytes: - sv = reflect.ValueOf(src) - if b, ok := asBytes([]byte(*d)[:0], sv); ok { - *d = sql.RawBytes(b) - return nil - } - case *bool: - bv, err := driver.Bool.ConvertValue(src) - if err == nil { - *d = bv.(bool) - } - return err - case *interface{}: - *d = src - return nil - } - - if scanner, ok := dest.(sql.Scanner); ok { - return scanner.Scan(src) - } - - dpv := reflect.ValueOf(dest) - if dpv.Kind() != reflect.Ptr { - return errors.New("destination not a pointer") - } - if dpv.IsNil() { - return errNilPtr - } - - if !sv.IsValid() { - sv = reflect.ValueOf(src) - } - - dv := reflect.Indirect(dpv) - if sv.IsValid() && sv.Type().AssignableTo(dv.Type()) { - switch b := src.(type) { - case []byte: - dv.Set(reflect.ValueOf(cloneBytes(b))) - default: - dv.Set(sv) - } - return nil - } - - if dv.Kind() == sv.Kind() && sv.Type().ConvertibleTo(dv.Type()) { - dv.Set(sv.Convert(dv.Type())) - return nil - } - - // The following conversions use a string value as an intermediate representation - // to convert between various numeric types. - // - // This also allows scanning into user defined types such as "type Int int64". - // For symmetry, also check for string destination types. - switch dv.Kind() { - case reflect.Ptr: - if src == nil { - dv.Set(reflect.Zero(dv.Type())) - return nil - } else { - dv.Set(reflect.New(dv.Type().Elem())) - return convertAssign(dv.Interface(), src) - } - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - s := asString(src) - i64, err := strconv.ParseInt(s, 10, dv.Type().Bits()) - if err != nil { - err = strconvErr(err) - return fmt.Errorf("converting driver.Value type %T (%q) to a %s: %v", src, s, dv.Kind(), err) - } - dv.SetInt(i64) - return nil - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - s := asString(src) - u64, err := strconv.ParseUint(s, 10, dv.Type().Bits()) - if err != nil { - err = strconvErr(err) - return fmt.Errorf("converting driver.Value type %T (%q) to a %s: %v", src, s, dv.Kind(), err) - } - dv.SetUint(u64) - return nil - case reflect.Float32, reflect.Float64: - s := asString(src) - f64, err := strconv.ParseFloat(s, dv.Type().Bits()) - if err != nil { - err = strconvErr(err) - return fmt.Errorf("converting driver.Value type %T (%q) to a %s: %v", src, s, dv.Kind(), err) - } - dv.SetFloat(f64) - return nil - case reflect.String: - switch v := src.(type) { - case string: - dv.SetString(v) - return nil - case []byte: - dv.SetString(string(v)) - return nil - } - } - - return fmt.Errorf("unsupported Scan, storing driver.Value type %T into type %T", src, dest) -} - -func strconvErr(err error) error { - if ne, ok := err.(*strconv.NumError); ok { - return ne.Err - } - return err -} - -func cloneBytes(b []byte) []byte { - if b == nil { - return nil - } else { - c := make([]byte, len(b)) - copy(c, b) - return c - } -} - -func asString(src interface{}) string { - switch v := src.(type) { - case string: - return v - case []byte: - return string(v) - } - rv := reflect.ValueOf(src) - switch rv.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return strconv.FormatInt(rv.Int(), 10) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return strconv.FormatUint(rv.Uint(), 10) - case reflect.Float64: - return strconv.FormatFloat(rv.Float(), 'g', -1, 64) - case reflect.Float32: - return strconv.FormatFloat(rv.Float(), 'g', -1, 32) - case reflect.Bool: - return strconv.FormatBool(rv.Bool()) - } - return fmt.Sprintf("%v", src) -} - -func asBytes(buf []byte, rv reflect.Value) (b []byte, ok bool) { - switch rv.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return strconv.AppendInt(buf, rv.Int(), 10), true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return strconv.AppendUint(buf, rv.Uint(), 10), true - case reflect.Float32: - return strconv.AppendFloat(buf, rv.Float(), 'g', -1, 32), true - case reflect.Float64: - return strconv.AppendFloat(buf, rv.Float(), 'g', -1, 64), true - case reflect.Bool: - return strconv.AppendBool(buf, rv.Bool()), true - case reflect.String: - s := rv.String() - return append(buf, s...), true - } - return -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/doc.go b/vendor/github.com/denisenkom/go-mssqldb/doc.go deleted file mode 100644 index 2e54929c..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/doc.go +++ /dev/null @@ -1,14 +0,0 @@ -// package mssql implements the TDS protocol used to connect to MS SQL Server (sqlserver) -// database servers. -// -// This package registers the driver: -// sqlserver: uses native "@" parameter placeholder names and does no pre-processing. -// -// If the ordinal position is used for query parameters, identifiers will be named -// "@p1", "@p2", ... "@pN". -// -// Please refer to the README for the format of the DSN. There are multiple DSN -// formats accepted: ADO style, ODBC style, and URL style. The following is an -// example of a URL style DSN: -// sqlserver://sa:mypass@localhost:1234?database=master&connection+timeout=30 -package mssql diff --git a/vendor/github.com/denisenkom/go-mssqldb/error.go b/vendor/github.com/denisenkom/go-mssqldb/error.go deleted file mode 100644 index 2e5bacee..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/error.go +++ /dev/null @@ -1,73 +0,0 @@ -package mssql - -import ( - "fmt" -) - -// Error represents an SQL Server error. This -// type includes methods for reading the contents -// of the struct, which allows calling programs -// to check for specific error conditions without -// having to import this package directly. -type Error struct { - Number int32 - State uint8 - Class uint8 - Message string - ServerName string - ProcName string - LineNo int32 -} - -func (e Error) Error() string { - return "mssql: " + e.Message -} - -// SQLErrorNumber returns the SQL Server error number. -func (e Error) SQLErrorNumber() int32 { - return e.Number -} - -func (e Error) SQLErrorState() uint8 { - return e.State -} - -func (e Error) SQLErrorClass() uint8 { - return e.Class -} - -func (e Error) SQLErrorMessage() string { - return e.Message -} - -func (e Error) SQLErrorServerName() string { - return e.ServerName -} - -func (e Error) SQLErrorProcName() string { - return e.ProcName -} - -func (e Error) SQLErrorLineNo() int32 { - return e.LineNo -} - -type StreamError struct { - Message string -} - -func (e StreamError) Error() string { - return e.Message -} - -func streamErrorf(format string, v ...interface{}) StreamError { - return StreamError{"Invalid TDS stream: " + fmt.Sprintf(format, v...)} -} - -func badStreamPanic(err error) { - panic(err) -} - -func badStreamPanicf(format string, v ...interface{}) { - panic(streamErrorf(format, v...)) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/go.mod b/vendor/github.com/denisenkom/go-mssqldb/go.mod deleted file mode 100644 index ebc02ab8..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/denisenkom/go-mssqldb - -go 1.11 - -require ( - github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe - golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c -) diff --git a/vendor/github.com/denisenkom/go-mssqldb/go.sum b/vendor/github.com/denisenkom/go-mssqldb/go.sum deleted file mode 100644 index 1887801b..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/go.sum +++ /dev/null @@ -1,5 +0,0 @@ -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI= -golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/charset.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/charset.go deleted file mode 100644 index 8dc2279e..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/charset.go +++ /dev/null @@ -1,113 +0,0 @@ -package cp - -type charsetMap struct { - sb [256]rune // single byte runes, -1 for a double byte character lead byte - db map[int]rune // double byte runes -} - -func collation2charset(col Collation) *charsetMap { - // http://msdn.microsoft.com/en-us/library/ms144250.aspx - // http://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx - switch col.SortId { - case 30, 31, 32, 33, 34: - return cp437 - case 40, 41, 42, 44, 49, 55, 56, 57, 58, 59, 60, 61: - return cp850 - case 50, 51, 52, 53, 54, 71, 72, 73, 74, 75: - return cp1252 - case 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96: - return cp1250 - case 104, 105, 106, 107, 108: - return cp1251 - case 112, 113, 114, 121, 124: - return cp1253 - case 128, 129, 130: - return cp1254 - case 136, 137, 138: - return cp1255 - case 144, 145, 146: - return cp1256 - case 152, 153, 154, 155, 156, 157, 158, 159, 160: - return cp1257 - case 183, 184, 185, 186: - return cp1252 - case 192, 193: - return cp932 - case 194, 195: - return cp949 - case 196, 197: - return cp950 - case 198, 199: - return cp936 - case 200: - return cp932 - case 201: - return cp949 - case 202: - return cp950 - case 203: - return cp936 - case 204, 205, 206: - return cp874 - case 210, 211, 212, 213, 214, 215, 216, 217: - return cp1252 - } - // http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx - switch col.getLcid() { - case 0x001e, 0x041e: - return cp874 - case 0x0411, 0x10411: - return cp932 - case 0x0804, 0x1004, 0x20804: - return cp936 - case 0x0012, 0x0412: - return cp949 - case 0x0404, 0x1404, 0x0c04, 0x7c04, 0x30404: - return cp950 - case 0x041c, 0x041a, 0x0405, 0x040e, 0x104e, 0x0415, 0x0418, 0x041b, 0x0424, 0x1040e: - return cp1250 - case 0x0423, 0x0402, 0x042f, 0x0419, 0x081a, 0x0c1a, 0x0422, 0x043f, 0x0444, 0x082c: - return cp1251 - case 0x0408: - return cp1253 - case 0x041f, 0x042c, 0x0443: - return cp1254 - case 0x040d: - return cp1255 - case 0x0401, 0x0801, 0xc01, 0x1001, 0x1401, 0x1801, 0x1c01, 0x2001, 0x2401, 0x2801, 0x2c01, 0x3001, 0x3401, 0x3801, 0x3c01, 0x4001, 0x0429, 0x0420: - return cp1256 - case 0x0425, 0x0426, 0x0427, 0x0827: - return cp1257 - case 0x042a: - return cp1258 - case 0x0439, 0x045a, 0x0465: - return nil - } - return cp1252 -} - -func CharsetToUTF8(col Collation, s []byte) string { - cm := collation2charset(col) - if cm == nil { - return string(s) - } - buf := make([]rune, 0, len(s)) - for i := 0; i < len(s); i++ { - ch := cm.sb[s[i]] - if ch == -1 { - if i+1 == len(s) { - ch = 0xfffd - } else { - n := int(s[i+1]) + (int(s[i]) << 8) - i++ - var ok bool - ch, ok = cm.db[n] - if !ok { - ch = 0xfffd - } - } - } - buf = append(buf, ch) - } - return string(buf) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/collation.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/collation.go deleted file mode 100644 index ae7b03bf..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/collation.go +++ /dev/null @@ -1,20 +0,0 @@ -package cp - -// http://msdn.microsoft.com/en-us/library/dd340437.aspx - -type Collation struct { - LcidAndFlags uint32 - SortId uint8 -} - -func (c Collation) getLcid() uint32 { - return c.LcidAndFlags & 0x000fffff -} - -func (c Collation) getFlags() uint32 { - return (c.LcidAndFlags & 0x0ff00000) >> 20 -} - -func (c Collation) getVersion() uint32 { - return (c.LcidAndFlags & 0xf0000000) >> 28 -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1250.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1250.go deleted file mode 100644 index 5c8094ec..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1250.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1250 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0xFFFD, //UNDEFINED - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0xFFFD, //UNDEFINED - 0x2030, //PER MILLE SIGN - 0x0160, //LATIN CAPITAL LETTER S WITH CARON - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x015A, //LATIN CAPITAL LETTER S WITH ACUTE - 0x0164, //LATIN CAPITAL LETTER T WITH CARON - 0x017D, //LATIN CAPITAL LETTER Z WITH CARON - 0x0179, //LATIN CAPITAL LETTER Z WITH ACUTE - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0xFFFD, //UNDEFINED - 0x2122, //TRADE MARK SIGN - 0x0161, //LATIN SMALL LETTER S WITH CARON - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x015B, //LATIN SMALL LETTER S WITH ACUTE - 0x0165, //LATIN SMALL LETTER T WITH CARON - 0x017E, //LATIN SMALL LETTER Z WITH CARON - 0x017A, //LATIN SMALL LETTER Z WITH ACUTE - 0x00A0, //NO-BREAK SPACE - 0x02C7, //CARON - 0x02D8, //BREVE - 0x0141, //LATIN CAPITAL LETTER L WITH STROKE - 0x00A4, //CURRENCY SIGN - 0x0104, //LATIN CAPITAL LETTER A WITH OGONEK - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x015E, //LATIN CAPITAL LETTER S WITH CEDILLA - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x017B, //LATIN CAPITAL LETTER Z WITH DOT ABOVE - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x02DB, //OGONEK - 0x0142, //LATIN SMALL LETTER L WITH STROKE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x0105, //LATIN SMALL LETTER A WITH OGONEK - 0x015F, //LATIN SMALL LETTER S WITH CEDILLA - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x013D, //LATIN CAPITAL LETTER L WITH CARON - 0x02DD, //DOUBLE ACUTE ACCENT - 0x013E, //LATIN SMALL LETTER L WITH CARON - 0x017C, //LATIN SMALL LETTER Z WITH DOT ABOVE - 0x0154, //LATIN CAPITAL LETTER R WITH ACUTE - 0x00C1, //LATIN CAPITAL LETTER A WITH ACUTE - 0x00C2, //LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0x0102, //LATIN CAPITAL LETTER A WITH BREVE - 0x00C4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x0139, //LATIN CAPITAL LETTER L WITH ACUTE - 0x0106, //LATIN CAPITAL LETTER C WITH ACUTE - 0x00C7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x010C, //LATIN CAPITAL LETTER C WITH CARON - 0x00C9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x0118, //LATIN CAPITAL LETTER E WITH OGONEK - 0x00CB, //LATIN CAPITAL LETTER E WITH DIAERESIS - 0x011A, //LATIN CAPITAL LETTER E WITH CARON - 0x00CD, //LATIN CAPITAL LETTER I WITH ACUTE - 0x00CE, //LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0x010E, //LATIN CAPITAL LETTER D WITH CARON - 0x0110, //LATIN CAPITAL LETTER D WITH STROKE - 0x0143, //LATIN CAPITAL LETTER N WITH ACUTE - 0x0147, //LATIN CAPITAL LETTER N WITH CARON - 0x00D3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x00D4, //LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0x0150, //LATIN CAPITAL LETTER O WITH DOUBLE ACUTE - 0x00D6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00D7, //MULTIPLICATION SIGN - 0x0158, //LATIN CAPITAL LETTER R WITH CARON - 0x016E, //LATIN CAPITAL LETTER U WITH RING ABOVE - 0x00DA, //LATIN CAPITAL LETTER U WITH ACUTE - 0x0170, //LATIN CAPITAL LETTER U WITH DOUBLE ACUTE - 0x00DC, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x00DD, //LATIN CAPITAL LETTER Y WITH ACUTE - 0x0162, //LATIN CAPITAL LETTER T WITH CEDILLA - 0x00DF, //LATIN SMALL LETTER SHARP S - 0x0155, //LATIN SMALL LETTER R WITH ACUTE - 0x00E1, //LATIN SMALL LETTER A WITH ACUTE - 0x00E2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x0103, //LATIN SMALL LETTER A WITH BREVE - 0x00E4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x013A, //LATIN SMALL LETTER L WITH ACUTE - 0x0107, //LATIN SMALL LETTER C WITH ACUTE - 0x00E7, //LATIN SMALL LETTER C WITH CEDILLA - 0x010D, //LATIN SMALL LETTER C WITH CARON - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x0119, //LATIN SMALL LETTER E WITH OGONEK - 0x00EB, //LATIN SMALL LETTER E WITH DIAERESIS - 0x011B, //LATIN SMALL LETTER E WITH CARON - 0x00ED, //LATIN SMALL LETTER I WITH ACUTE - 0x00EE, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x010F, //LATIN SMALL LETTER D WITH CARON - 0x0111, //LATIN SMALL LETTER D WITH STROKE - 0x0144, //LATIN SMALL LETTER N WITH ACUTE - 0x0148, //LATIN SMALL LETTER N WITH CARON - 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0x00F4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x0151, //LATIN SMALL LETTER O WITH DOUBLE ACUTE - 0x00F6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00F7, //DIVISION SIGN - 0x0159, //LATIN SMALL LETTER R WITH CARON - 0x016F, //LATIN SMALL LETTER U WITH RING ABOVE - 0x00FA, //LATIN SMALL LETTER U WITH ACUTE - 0x0171, //LATIN SMALL LETTER U WITH DOUBLE ACUTE - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x00FD, //LATIN SMALL LETTER Y WITH ACUTE - 0x0163, //LATIN SMALL LETTER T WITH CEDILLA - 0x02D9, //DOT ABOVE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1251.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1251.go deleted file mode 100644 index dc589677..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1251.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1251 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x0402, //CYRILLIC CAPITAL LETTER DJE - 0x0403, //CYRILLIC CAPITAL LETTER GJE - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0453, //CYRILLIC SMALL LETTER GJE - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x20AC, //EURO SIGN - 0x2030, //PER MILLE SIGN - 0x0409, //CYRILLIC CAPITAL LETTER LJE - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x040A, //CYRILLIC CAPITAL LETTER NJE - 0x040C, //CYRILLIC CAPITAL LETTER KJE - 0x040B, //CYRILLIC CAPITAL LETTER TSHE - 0x040F, //CYRILLIC CAPITAL LETTER DZHE - 0x0452, //CYRILLIC SMALL LETTER DJE - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0xFFFD, //UNDEFINED - 0x2122, //TRADE MARK SIGN - 0x0459, //CYRILLIC SMALL LETTER LJE - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x045A, //CYRILLIC SMALL LETTER NJE - 0x045C, //CYRILLIC SMALL LETTER KJE - 0x045B, //CYRILLIC SMALL LETTER TSHE - 0x045F, //CYRILLIC SMALL LETTER DZHE - 0x00A0, //NO-BREAK SPACE - 0x040E, //CYRILLIC CAPITAL LETTER SHORT U - 0x045E, //CYRILLIC SMALL LETTER SHORT U - 0x0408, //CYRILLIC CAPITAL LETTER JE - 0x00A4, //CURRENCY SIGN - 0x0490, //CYRILLIC CAPITAL LETTER GHE WITH UPTURN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x0401, //CYRILLIC CAPITAL LETTER IO - 0x00A9, //COPYRIGHT SIGN - 0x0404, //CYRILLIC CAPITAL LETTER UKRAINIAN IE - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x0407, //CYRILLIC CAPITAL LETTER YI - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x0406, //CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I - 0x0456, //CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - 0x0491, //CYRILLIC SMALL LETTER GHE WITH UPTURN - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x0451, //CYRILLIC SMALL LETTER IO - 0x2116, //NUMERO SIGN - 0x0454, //CYRILLIC SMALL LETTER UKRAINIAN IE - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x0458, //CYRILLIC SMALL LETTER JE - 0x0405, //CYRILLIC CAPITAL LETTER DZE - 0x0455, //CYRILLIC SMALL LETTER DZE - 0x0457, //CYRILLIC SMALL LETTER YI - 0x0410, //CYRILLIC CAPITAL LETTER A - 0x0411, //CYRILLIC CAPITAL LETTER BE - 0x0412, //CYRILLIC CAPITAL LETTER VE - 0x0413, //CYRILLIC CAPITAL LETTER GHE - 0x0414, //CYRILLIC CAPITAL LETTER DE - 0x0415, //CYRILLIC CAPITAL LETTER IE - 0x0416, //CYRILLIC CAPITAL LETTER ZHE - 0x0417, //CYRILLIC CAPITAL LETTER ZE - 0x0418, //CYRILLIC CAPITAL LETTER I - 0x0419, //CYRILLIC CAPITAL LETTER SHORT I - 0x041A, //CYRILLIC CAPITAL LETTER KA - 0x041B, //CYRILLIC CAPITAL LETTER EL - 0x041C, //CYRILLIC CAPITAL LETTER EM - 0x041D, //CYRILLIC CAPITAL LETTER EN - 0x041E, //CYRILLIC CAPITAL LETTER O - 0x041F, //CYRILLIC CAPITAL LETTER PE - 0x0420, //CYRILLIC CAPITAL LETTER ER - 0x0421, //CYRILLIC CAPITAL LETTER ES - 0x0422, //CYRILLIC CAPITAL LETTER TE - 0x0423, //CYRILLIC CAPITAL LETTER U - 0x0424, //CYRILLIC CAPITAL LETTER EF - 0x0425, //CYRILLIC CAPITAL LETTER HA - 0x0426, //CYRILLIC CAPITAL LETTER TSE - 0x0427, //CYRILLIC CAPITAL LETTER CHE - 0x0428, //CYRILLIC CAPITAL LETTER SHA - 0x0429, //CYRILLIC CAPITAL LETTER SHCHA - 0x042A, //CYRILLIC CAPITAL LETTER HARD SIGN - 0x042B, //CYRILLIC CAPITAL LETTER YERU - 0x042C, //CYRILLIC CAPITAL LETTER SOFT SIGN - 0x042D, //CYRILLIC CAPITAL LETTER E - 0x042E, //CYRILLIC CAPITAL LETTER YU - 0x042F, //CYRILLIC CAPITAL LETTER YA - 0x0430, //CYRILLIC SMALL LETTER A - 0x0431, //CYRILLIC SMALL LETTER BE - 0x0432, //CYRILLIC SMALL LETTER VE - 0x0433, //CYRILLIC SMALL LETTER GHE - 0x0434, //CYRILLIC SMALL LETTER DE - 0x0435, //CYRILLIC SMALL LETTER IE - 0x0436, //CYRILLIC SMALL LETTER ZHE - 0x0437, //CYRILLIC SMALL LETTER ZE - 0x0438, //CYRILLIC SMALL LETTER I - 0x0439, //CYRILLIC SMALL LETTER SHORT I - 0x043A, //CYRILLIC SMALL LETTER KA - 0x043B, //CYRILLIC SMALL LETTER EL - 0x043C, //CYRILLIC SMALL LETTER EM - 0x043D, //CYRILLIC SMALL LETTER EN - 0x043E, //CYRILLIC SMALL LETTER O - 0x043F, //CYRILLIC SMALL LETTER PE - 0x0440, //CYRILLIC SMALL LETTER ER - 0x0441, //CYRILLIC SMALL LETTER ES - 0x0442, //CYRILLIC SMALL LETTER TE - 0x0443, //CYRILLIC SMALL LETTER U - 0x0444, //CYRILLIC SMALL LETTER EF - 0x0445, //CYRILLIC SMALL LETTER HA - 0x0446, //CYRILLIC SMALL LETTER TSE - 0x0447, //CYRILLIC SMALL LETTER CHE - 0x0448, //CYRILLIC SMALL LETTER SHA - 0x0449, //CYRILLIC SMALL LETTER SHCHA - 0x044A, //CYRILLIC SMALL LETTER HARD SIGN - 0x044B, //CYRILLIC SMALL LETTER YERU - 0x044C, //CYRILLIC SMALL LETTER SOFT SIGN - 0x044D, //CYRILLIC SMALL LETTER E - 0x044E, //CYRILLIC SMALL LETTER YU - 0x044F, //CYRILLIC SMALL LETTER YA - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1252.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1252.go deleted file mode 100644 index 5ae87035..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1252.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1252 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x02C6, //MODIFIER LETTER CIRCUMFLEX ACCENT - 0x2030, //PER MILLE SIGN - 0x0160, //LATIN CAPITAL LETTER S WITH CARON - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x0152, //LATIN CAPITAL LIGATURE OE - 0xFFFD, //UNDEFINED - 0x017D, //LATIN CAPITAL LETTER Z WITH CARON - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0x02DC, //SMALL TILDE - 0x2122, //TRADE MARK SIGN - 0x0161, //LATIN SMALL LETTER S WITH CARON - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x0153, //LATIN SMALL LIGATURE OE - 0xFFFD, //UNDEFINED - 0x017E, //LATIN SMALL LETTER Z WITH CARON - 0x0178, //LATIN CAPITAL LETTER Y WITH DIAERESIS - 0x00A0, //NO-BREAK SPACE - 0x00A1, //INVERTED EXCLAMATION MARK - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x00AA, //FEMININE ORDINAL INDICATOR - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00AF, //MACRON - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x00B9, //SUPERSCRIPT ONE - 0x00BA, //MASCULINE ORDINAL INDICATOR - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x00BF, //INVERTED QUESTION MARK - 0x00C0, //LATIN CAPITAL LETTER A WITH GRAVE - 0x00C1, //LATIN CAPITAL LETTER A WITH ACUTE - 0x00C2, //LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0x00C3, //LATIN CAPITAL LETTER A WITH TILDE - 0x00C4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00C5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x00C6, //LATIN CAPITAL LETTER AE - 0x00C7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x00C8, //LATIN CAPITAL LETTER E WITH GRAVE - 0x00C9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x00CA, //LATIN CAPITAL LETTER E WITH CIRCUMFLEX - 0x00CB, //LATIN CAPITAL LETTER E WITH DIAERESIS - 0x00CC, //LATIN CAPITAL LETTER I WITH GRAVE - 0x00CD, //LATIN CAPITAL LETTER I WITH ACUTE - 0x00CE, //LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0x00CF, //LATIN CAPITAL LETTER I WITH DIAERESIS - 0x00D0, //LATIN CAPITAL LETTER ETH - 0x00D1, //LATIN CAPITAL LETTER N WITH TILDE - 0x00D2, //LATIN CAPITAL LETTER O WITH GRAVE - 0x00D3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x00D4, //LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0x00D5, //LATIN CAPITAL LETTER O WITH TILDE - 0x00D6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00D7, //MULTIPLICATION SIGN - 0x00D8, //LATIN CAPITAL LETTER O WITH STROKE - 0x00D9, //LATIN CAPITAL LETTER U WITH GRAVE - 0x00DA, //LATIN CAPITAL LETTER U WITH ACUTE - 0x00DB, //LATIN CAPITAL LETTER U WITH CIRCUMFLEX - 0x00DC, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x00DD, //LATIN CAPITAL LETTER Y WITH ACUTE - 0x00DE, //LATIN CAPITAL LETTER THORN - 0x00DF, //LATIN SMALL LETTER SHARP S - 0x00E0, //LATIN SMALL LETTER A WITH GRAVE - 0x00E1, //LATIN SMALL LETTER A WITH ACUTE - 0x00E2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x00E3, //LATIN SMALL LETTER A WITH TILDE - 0x00E4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00E5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x00E6, //LATIN SMALL LETTER AE - 0x00E7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00E8, //LATIN SMALL LETTER E WITH GRAVE - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x00EA, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00EB, //LATIN SMALL LETTER E WITH DIAERESIS - 0x00EC, //LATIN SMALL LETTER I WITH GRAVE - 0x00ED, //LATIN SMALL LETTER I WITH ACUTE - 0x00EE, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00EF, //LATIN SMALL LETTER I WITH DIAERESIS - 0x00F0, //LATIN SMALL LETTER ETH - 0x00F1, //LATIN SMALL LETTER N WITH TILDE - 0x00F2, //LATIN SMALL LETTER O WITH GRAVE - 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0x00F4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x00F5, //LATIN SMALL LETTER O WITH TILDE - 0x00F6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00F7, //DIVISION SIGN - 0x00F8, //LATIN SMALL LETTER O WITH STROKE - 0x00F9, //LATIN SMALL LETTER U WITH GRAVE - 0x00FA, //LATIN SMALL LETTER U WITH ACUTE - 0x00FB, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x00FD, //LATIN SMALL LETTER Y WITH ACUTE - 0x00FE, //LATIN SMALL LETTER THORN - 0x00FF, //LATIN SMALL LETTER Y WITH DIAERESIS - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1253.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1253.go deleted file mode 100644 index 52c8e07a..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1253.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1253 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0xFFFD, //UNDEFINED - 0x2030, //PER MILLE SIGN - 0xFFFD, //UNDEFINED - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0xFFFD, //UNDEFINED - 0x2122, //TRADE MARK SIGN - 0xFFFD, //UNDEFINED - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x00A0, //NO-BREAK SPACE - 0x0385, //GREEK DIALYTIKA TONOS - 0x0386, //GREEK CAPITAL LETTER ALPHA WITH TONOS - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0xFFFD, //UNDEFINED - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x2015, //HORIZONTAL BAR - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x0384, //GREEK TONOS - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x0388, //GREEK CAPITAL LETTER EPSILON WITH TONOS - 0x0389, //GREEK CAPITAL LETTER ETA WITH TONOS - 0x038A, //GREEK CAPITAL LETTER IOTA WITH TONOS - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x038C, //GREEK CAPITAL LETTER OMICRON WITH TONOS - 0x00BD, //VULGAR FRACTION ONE HALF - 0x038E, //GREEK CAPITAL LETTER UPSILON WITH TONOS - 0x038F, //GREEK CAPITAL LETTER OMEGA WITH TONOS - 0x0390, //GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS - 0x0391, //GREEK CAPITAL LETTER ALPHA - 0x0392, //GREEK CAPITAL LETTER BETA - 0x0393, //GREEK CAPITAL LETTER GAMMA - 0x0394, //GREEK CAPITAL LETTER DELTA - 0x0395, //GREEK CAPITAL LETTER EPSILON - 0x0396, //GREEK CAPITAL LETTER ZETA - 0x0397, //GREEK CAPITAL LETTER ETA - 0x0398, //GREEK CAPITAL LETTER THETA - 0x0399, //GREEK CAPITAL LETTER IOTA - 0x039A, //GREEK CAPITAL LETTER KAPPA - 0x039B, //GREEK CAPITAL LETTER LAMDA - 0x039C, //GREEK CAPITAL LETTER MU - 0x039D, //GREEK CAPITAL LETTER NU - 0x039E, //GREEK CAPITAL LETTER XI - 0x039F, //GREEK CAPITAL LETTER OMICRON - 0x03A0, //GREEK CAPITAL LETTER PI - 0x03A1, //GREEK CAPITAL LETTER RHO - 0xFFFD, //UNDEFINED - 0x03A3, //GREEK CAPITAL LETTER SIGMA - 0x03A4, //GREEK CAPITAL LETTER TAU - 0x03A5, //GREEK CAPITAL LETTER UPSILON - 0x03A6, //GREEK CAPITAL LETTER PHI - 0x03A7, //GREEK CAPITAL LETTER CHI - 0x03A8, //GREEK CAPITAL LETTER PSI - 0x03A9, //GREEK CAPITAL LETTER OMEGA - 0x03AA, //GREEK CAPITAL LETTER IOTA WITH DIALYTIKA - 0x03AB, //GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA - 0x03AC, //GREEK SMALL LETTER ALPHA WITH TONOS - 0x03AD, //GREEK SMALL LETTER EPSILON WITH TONOS - 0x03AE, //GREEK SMALL LETTER ETA WITH TONOS - 0x03AF, //GREEK SMALL LETTER IOTA WITH TONOS - 0x03B0, //GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS - 0x03B1, //GREEK SMALL LETTER ALPHA - 0x03B2, //GREEK SMALL LETTER BETA - 0x03B3, //GREEK SMALL LETTER GAMMA - 0x03B4, //GREEK SMALL LETTER DELTA - 0x03B5, //GREEK SMALL LETTER EPSILON - 0x03B6, //GREEK SMALL LETTER ZETA - 0x03B7, //GREEK SMALL LETTER ETA - 0x03B8, //GREEK SMALL LETTER THETA - 0x03B9, //GREEK SMALL LETTER IOTA - 0x03BA, //GREEK SMALL LETTER KAPPA - 0x03BB, //GREEK SMALL LETTER LAMDA - 0x03BC, //GREEK SMALL LETTER MU - 0x03BD, //GREEK SMALL LETTER NU - 0x03BE, //GREEK SMALL LETTER XI - 0x03BF, //GREEK SMALL LETTER OMICRON - 0x03C0, //GREEK SMALL LETTER PI - 0x03C1, //GREEK SMALL LETTER RHO - 0x03C2, //GREEK SMALL LETTER FINAL SIGMA - 0x03C3, //GREEK SMALL LETTER SIGMA - 0x03C4, //GREEK SMALL LETTER TAU - 0x03C5, //GREEK SMALL LETTER UPSILON - 0x03C6, //GREEK SMALL LETTER PHI - 0x03C7, //GREEK SMALL LETTER CHI - 0x03C8, //GREEK SMALL LETTER PSI - 0x03C9, //GREEK SMALL LETTER OMEGA - 0x03CA, //GREEK SMALL LETTER IOTA WITH DIALYTIKA - 0x03CB, //GREEK SMALL LETTER UPSILON WITH DIALYTIKA - 0x03CC, //GREEK SMALL LETTER OMICRON WITH TONOS - 0x03CD, //GREEK SMALL LETTER UPSILON WITH TONOS - 0x03CE, //GREEK SMALL LETTER OMEGA WITH TONOS - 0xFFFD, //UNDEFINED - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1254.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1254.go deleted file mode 100644 index 5d8864a5..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1254.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1254 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x02C6, //MODIFIER LETTER CIRCUMFLEX ACCENT - 0x2030, //PER MILLE SIGN - 0x0160, //LATIN CAPITAL LETTER S WITH CARON - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x0152, //LATIN CAPITAL LIGATURE OE - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0x02DC, //SMALL TILDE - 0x2122, //TRADE MARK SIGN - 0x0161, //LATIN SMALL LETTER S WITH CARON - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x0153, //LATIN SMALL LIGATURE OE - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x0178, //LATIN CAPITAL LETTER Y WITH DIAERESIS - 0x00A0, //NO-BREAK SPACE - 0x00A1, //INVERTED EXCLAMATION MARK - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x00AA, //FEMININE ORDINAL INDICATOR - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00AF, //MACRON - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x00B9, //SUPERSCRIPT ONE - 0x00BA, //MASCULINE ORDINAL INDICATOR - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x00BF, //INVERTED QUESTION MARK - 0x00C0, //LATIN CAPITAL LETTER A WITH GRAVE - 0x00C1, //LATIN CAPITAL LETTER A WITH ACUTE - 0x00C2, //LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0x00C3, //LATIN CAPITAL LETTER A WITH TILDE - 0x00C4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00C5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x00C6, //LATIN CAPITAL LETTER AE - 0x00C7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x00C8, //LATIN CAPITAL LETTER E WITH GRAVE - 0x00C9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x00CA, //LATIN CAPITAL LETTER E WITH CIRCUMFLEX - 0x00CB, //LATIN CAPITAL LETTER E WITH DIAERESIS - 0x00CC, //LATIN CAPITAL LETTER I WITH GRAVE - 0x00CD, //LATIN CAPITAL LETTER I WITH ACUTE - 0x00CE, //LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0x00CF, //LATIN CAPITAL LETTER I WITH DIAERESIS - 0x011E, //LATIN CAPITAL LETTER G WITH BREVE - 0x00D1, //LATIN CAPITAL LETTER N WITH TILDE - 0x00D2, //LATIN CAPITAL LETTER O WITH GRAVE - 0x00D3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x00D4, //LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0x00D5, //LATIN CAPITAL LETTER O WITH TILDE - 0x00D6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00D7, //MULTIPLICATION SIGN - 0x00D8, //LATIN CAPITAL LETTER O WITH STROKE - 0x00D9, //LATIN CAPITAL LETTER U WITH GRAVE - 0x00DA, //LATIN CAPITAL LETTER U WITH ACUTE - 0x00DB, //LATIN CAPITAL LETTER U WITH CIRCUMFLEX - 0x00DC, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x0130, //LATIN CAPITAL LETTER I WITH DOT ABOVE - 0x015E, //LATIN CAPITAL LETTER S WITH CEDILLA - 0x00DF, //LATIN SMALL LETTER SHARP S - 0x00E0, //LATIN SMALL LETTER A WITH GRAVE - 0x00E1, //LATIN SMALL LETTER A WITH ACUTE - 0x00E2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x00E3, //LATIN SMALL LETTER A WITH TILDE - 0x00E4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00E5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x00E6, //LATIN SMALL LETTER AE - 0x00E7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00E8, //LATIN SMALL LETTER E WITH GRAVE - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x00EA, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00EB, //LATIN SMALL LETTER E WITH DIAERESIS - 0x00EC, //LATIN SMALL LETTER I WITH GRAVE - 0x00ED, //LATIN SMALL LETTER I WITH ACUTE - 0x00EE, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00EF, //LATIN SMALL LETTER I WITH DIAERESIS - 0x011F, //LATIN SMALL LETTER G WITH BREVE - 0x00F1, //LATIN SMALL LETTER N WITH TILDE - 0x00F2, //LATIN SMALL LETTER O WITH GRAVE - 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0x00F4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x00F5, //LATIN SMALL LETTER O WITH TILDE - 0x00F6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00F7, //DIVISION SIGN - 0x00F8, //LATIN SMALL LETTER O WITH STROKE - 0x00F9, //LATIN SMALL LETTER U WITH GRAVE - 0x00FA, //LATIN SMALL LETTER U WITH ACUTE - 0x00FB, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x0131, //LATIN SMALL LETTER DOTLESS I - 0x015F, //LATIN SMALL LETTER S WITH CEDILLA - 0x00FF, //LATIN SMALL LETTER Y WITH DIAERESIS - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1255.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1255.go deleted file mode 100644 index 60619895..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1255.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1255 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x02C6, //MODIFIER LETTER CIRCUMFLEX ACCENT - 0x2030, //PER MILLE SIGN - 0xFFFD, //UNDEFINED - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0x02DC, //SMALL TILDE - 0x2122, //TRADE MARK SIGN - 0xFFFD, //UNDEFINED - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x00A0, //NO-BREAK SPACE - 0x00A1, //INVERTED EXCLAMATION MARK - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x20AA, //NEW SHEQEL SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x00D7, //MULTIPLICATION SIGN - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00AF, //MACRON - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x00B9, //SUPERSCRIPT ONE - 0x00F7, //DIVISION SIGN - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x00BF, //INVERTED QUESTION MARK - 0x05B0, //HEBREW POINT SHEVA - 0x05B1, //HEBREW POINT HATAF SEGOL - 0x05B2, //HEBREW POINT HATAF PATAH - 0x05B3, //HEBREW POINT HATAF QAMATS - 0x05B4, //HEBREW POINT HIRIQ - 0x05B5, //HEBREW POINT TSERE - 0x05B6, //HEBREW POINT SEGOL - 0x05B7, //HEBREW POINT PATAH - 0x05B8, //HEBREW POINT QAMATS - 0x05B9, //HEBREW POINT HOLAM - 0xFFFD, //UNDEFINED - 0x05BB, //HEBREW POINT QUBUTS - 0x05BC, //HEBREW POINT DAGESH OR MAPIQ - 0x05BD, //HEBREW POINT METEG - 0x05BE, //HEBREW PUNCTUATION MAQAF - 0x05BF, //HEBREW POINT RAFE - 0x05C0, //HEBREW PUNCTUATION PASEQ - 0x05C1, //HEBREW POINT SHIN DOT - 0x05C2, //HEBREW POINT SIN DOT - 0x05C3, //HEBREW PUNCTUATION SOF PASUQ - 0x05F0, //HEBREW LIGATURE YIDDISH DOUBLE VAV - 0x05F1, //HEBREW LIGATURE YIDDISH VAV YOD - 0x05F2, //HEBREW LIGATURE YIDDISH DOUBLE YOD - 0x05F3, //HEBREW PUNCTUATION GERESH - 0x05F4, //HEBREW PUNCTUATION GERSHAYIM - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x05D0, //HEBREW LETTER ALEF - 0x05D1, //HEBREW LETTER BET - 0x05D2, //HEBREW LETTER GIMEL - 0x05D3, //HEBREW LETTER DALET - 0x05D4, //HEBREW LETTER HE - 0x05D5, //HEBREW LETTER VAV - 0x05D6, //HEBREW LETTER ZAYIN - 0x05D7, //HEBREW LETTER HET - 0x05D8, //HEBREW LETTER TET - 0x05D9, //HEBREW LETTER YOD - 0x05DA, //HEBREW LETTER FINAL KAF - 0x05DB, //HEBREW LETTER KAF - 0x05DC, //HEBREW LETTER LAMED - 0x05DD, //HEBREW LETTER FINAL MEM - 0x05DE, //HEBREW LETTER MEM - 0x05DF, //HEBREW LETTER FINAL NUN - 0x05E0, //HEBREW LETTER NUN - 0x05E1, //HEBREW LETTER SAMEKH - 0x05E2, //HEBREW LETTER AYIN - 0x05E3, //HEBREW LETTER FINAL PE - 0x05E4, //HEBREW LETTER PE - 0x05E5, //HEBREW LETTER FINAL TSADI - 0x05E6, //HEBREW LETTER TSADI - 0x05E7, //HEBREW LETTER QOF - 0x05E8, //HEBREW LETTER RESH - 0x05E9, //HEBREW LETTER SHIN - 0x05EA, //HEBREW LETTER TAV - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x200E, //LEFT-TO-RIGHT MARK - 0x200F, //RIGHT-TO-LEFT MARK - 0xFFFD, //UNDEFINED - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1256.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1256.go deleted file mode 100644 index ffd04b3e..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1256.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1256 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0x067E, //ARABIC LETTER PEH - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x02C6, //MODIFIER LETTER CIRCUMFLEX ACCENT - 0x2030, //PER MILLE SIGN - 0x0679, //ARABIC LETTER TTEH - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x0152, //LATIN CAPITAL LIGATURE OE - 0x0686, //ARABIC LETTER TCHEH - 0x0698, //ARABIC LETTER JEH - 0x0688, //ARABIC LETTER DDAL - 0x06AF, //ARABIC LETTER GAF - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0x06A9, //ARABIC LETTER KEHEH - 0x2122, //TRADE MARK SIGN - 0x0691, //ARABIC LETTER RREH - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x0153, //LATIN SMALL LIGATURE OE - 0x200C, //ZERO WIDTH NON-JOINER - 0x200D, //ZERO WIDTH JOINER - 0x06BA, //ARABIC LETTER NOON GHUNNA - 0x00A0, //NO-BREAK SPACE - 0x060C, //ARABIC COMMA - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x06BE, //ARABIC LETTER HEH DOACHASHMEE - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00AF, //MACRON - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x00B9, //SUPERSCRIPT ONE - 0x061B, //ARABIC SEMICOLON - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x061F, //ARABIC QUESTION MARK - 0x06C1, //ARABIC LETTER HEH GOAL - 0x0621, //ARABIC LETTER HAMZA - 0x0622, //ARABIC LETTER ALEF WITH MADDA ABOVE - 0x0623, //ARABIC LETTER ALEF WITH HAMZA ABOVE - 0x0624, //ARABIC LETTER WAW WITH HAMZA ABOVE - 0x0625, //ARABIC LETTER ALEF WITH HAMZA BELOW - 0x0626, //ARABIC LETTER YEH WITH HAMZA ABOVE - 0x0627, //ARABIC LETTER ALEF - 0x0628, //ARABIC LETTER BEH - 0x0629, //ARABIC LETTER TEH MARBUTA - 0x062A, //ARABIC LETTER TEH - 0x062B, //ARABIC LETTER THEH - 0x062C, //ARABIC LETTER JEEM - 0x062D, //ARABIC LETTER HAH - 0x062E, //ARABIC LETTER KHAH - 0x062F, //ARABIC LETTER DAL - 0x0630, //ARABIC LETTER THAL - 0x0631, //ARABIC LETTER REH - 0x0632, //ARABIC LETTER ZAIN - 0x0633, //ARABIC LETTER SEEN - 0x0634, //ARABIC LETTER SHEEN - 0x0635, //ARABIC LETTER SAD - 0x0636, //ARABIC LETTER DAD - 0x00D7, //MULTIPLICATION SIGN - 0x0637, //ARABIC LETTER TAH - 0x0638, //ARABIC LETTER ZAH - 0x0639, //ARABIC LETTER AIN - 0x063A, //ARABIC LETTER GHAIN - 0x0640, //ARABIC TATWEEL - 0x0641, //ARABIC LETTER FEH - 0x0642, //ARABIC LETTER QAF - 0x0643, //ARABIC LETTER KAF - 0x00E0, //LATIN SMALL LETTER A WITH GRAVE - 0x0644, //ARABIC LETTER LAM - 0x00E2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x0645, //ARABIC LETTER MEEM - 0x0646, //ARABIC LETTER NOON - 0x0647, //ARABIC LETTER HEH - 0x0648, //ARABIC LETTER WAW - 0x00E7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00E8, //LATIN SMALL LETTER E WITH GRAVE - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x00EA, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00EB, //LATIN SMALL LETTER E WITH DIAERESIS - 0x0649, //ARABIC LETTER ALEF MAKSURA - 0x064A, //ARABIC LETTER YEH - 0x00EE, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00EF, //LATIN SMALL LETTER I WITH DIAERESIS - 0x064B, //ARABIC FATHATAN - 0x064C, //ARABIC DAMMATAN - 0x064D, //ARABIC KASRATAN - 0x064E, //ARABIC FATHA - 0x00F4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x064F, //ARABIC DAMMA - 0x0650, //ARABIC KASRA - 0x00F7, //DIVISION SIGN - 0x0651, //ARABIC SHADDA - 0x00F9, //LATIN SMALL LETTER U WITH GRAVE - 0x0652, //ARABIC SUKUN - 0x00FB, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x200E, //LEFT-TO-RIGHT MARK - 0x200F, //RIGHT-TO-LEFT MARK - 0x06D2, //ARABIC LETTER YEH BARREE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1257.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1257.go deleted file mode 100644 index 492da72e..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1257.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1257 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0xFFFD, //UNDEFINED - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0xFFFD, //UNDEFINED - 0x2030, //PER MILLE SIGN - 0xFFFD, //UNDEFINED - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0x00A8, //DIAERESIS - 0x02C7, //CARON - 0x00B8, //CEDILLA - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0xFFFD, //UNDEFINED - 0x2122, //TRADE MARK SIGN - 0xFFFD, //UNDEFINED - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0xFFFD, //UNDEFINED - 0x00AF, //MACRON - 0x02DB, //OGONEK - 0xFFFD, //UNDEFINED - 0x00A0, //NO-BREAK SPACE - 0xFFFD, //UNDEFINED - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0xFFFD, //UNDEFINED - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00D8, //LATIN CAPITAL LETTER O WITH STROKE - 0x00A9, //COPYRIGHT SIGN - 0x0156, //LATIN CAPITAL LETTER R WITH CEDILLA - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00C6, //LATIN CAPITAL LETTER AE - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00F8, //LATIN SMALL LETTER O WITH STROKE - 0x00B9, //SUPERSCRIPT ONE - 0x0157, //LATIN SMALL LETTER R WITH CEDILLA - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x00E6, //LATIN SMALL LETTER AE - 0x0104, //LATIN CAPITAL LETTER A WITH OGONEK - 0x012E, //LATIN CAPITAL LETTER I WITH OGONEK - 0x0100, //LATIN CAPITAL LETTER A WITH MACRON - 0x0106, //LATIN CAPITAL LETTER C WITH ACUTE - 0x00C4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00C5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x0118, //LATIN CAPITAL LETTER E WITH OGONEK - 0x0112, //LATIN CAPITAL LETTER E WITH MACRON - 0x010C, //LATIN CAPITAL LETTER C WITH CARON - 0x00C9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x0179, //LATIN CAPITAL LETTER Z WITH ACUTE - 0x0116, //LATIN CAPITAL LETTER E WITH DOT ABOVE - 0x0122, //LATIN CAPITAL LETTER G WITH CEDILLA - 0x0136, //LATIN CAPITAL LETTER K WITH CEDILLA - 0x012A, //LATIN CAPITAL LETTER I WITH MACRON - 0x013B, //LATIN CAPITAL LETTER L WITH CEDILLA - 0x0160, //LATIN CAPITAL LETTER S WITH CARON - 0x0143, //LATIN CAPITAL LETTER N WITH ACUTE - 0x0145, //LATIN CAPITAL LETTER N WITH CEDILLA - 0x00D3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x014C, //LATIN CAPITAL LETTER O WITH MACRON - 0x00D5, //LATIN CAPITAL LETTER O WITH TILDE - 0x00D6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00D7, //MULTIPLICATION SIGN - 0x0172, //LATIN CAPITAL LETTER U WITH OGONEK - 0x0141, //LATIN CAPITAL LETTER L WITH STROKE - 0x015A, //LATIN CAPITAL LETTER S WITH ACUTE - 0x016A, //LATIN CAPITAL LETTER U WITH MACRON - 0x00DC, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x017B, //LATIN CAPITAL LETTER Z WITH DOT ABOVE - 0x017D, //LATIN CAPITAL LETTER Z WITH CARON - 0x00DF, //LATIN SMALL LETTER SHARP S - 0x0105, //LATIN SMALL LETTER A WITH OGONEK - 0x012F, //LATIN SMALL LETTER I WITH OGONEK - 0x0101, //LATIN SMALL LETTER A WITH MACRON - 0x0107, //LATIN SMALL LETTER C WITH ACUTE - 0x00E4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00E5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x0119, //LATIN SMALL LETTER E WITH OGONEK - 0x0113, //LATIN SMALL LETTER E WITH MACRON - 0x010D, //LATIN SMALL LETTER C WITH CARON - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x017A, //LATIN SMALL LETTER Z WITH ACUTE - 0x0117, //LATIN SMALL LETTER E WITH DOT ABOVE - 0x0123, //LATIN SMALL LETTER G WITH CEDILLA - 0x0137, //LATIN SMALL LETTER K WITH CEDILLA - 0x012B, //LATIN SMALL LETTER I WITH MACRON - 0x013C, //LATIN SMALL LETTER L WITH CEDILLA - 0x0161, //LATIN SMALL LETTER S WITH CARON - 0x0144, //LATIN SMALL LETTER N WITH ACUTE - 0x0146, //LATIN SMALL LETTER N WITH CEDILLA - 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0x014D, //LATIN SMALL LETTER O WITH MACRON - 0x00F5, //LATIN SMALL LETTER O WITH TILDE - 0x00F6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00F7, //DIVISION SIGN - 0x0173, //LATIN SMALL LETTER U WITH OGONEK - 0x0142, //LATIN SMALL LETTER L WITH STROKE - 0x015B, //LATIN SMALL LETTER S WITH ACUTE - 0x016B, //LATIN SMALL LETTER U WITH MACRON - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x017C, //LATIN SMALL LETTER Z WITH DOT ABOVE - 0x017E, //LATIN SMALL LETTER Z WITH CARON - 0x02D9, //DOT ABOVE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1258.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1258.go deleted file mode 100644 index 80be52c5..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp1258.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp1258 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0x201A, //SINGLE LOW-9 QUOTATION MARK - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x201E, //DOUBLE LOW-9 QUOTATION MARK - 0x2026, //HORIZONTAL ELLIPSIS - 0x2020, //DAGGER - 0x2021, //DOUBLE DAGGER - 0x02C6, //MODIFIER LETTER CIRCUMFLEX ACCENT - 0x2030, //PER MILLE SIGN - 0xFFFD, //UNDEFINED - 0x2039, //SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0x0152, //LATIN CAPITAL LIGATURE OE - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0x02DC, //SMALL TILDE - 0x2122, //TRADE MARK SIGN - 0xFFFD, //UNDEFINED - 0x203A, //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0x0153, //LATIN SMALL LIGATURE OE - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x0178, //LATIN CAPITAL LETTER Y WITH DIAERESIS - 0x00A0, //NO-BREAK SPACE - 0x00A1, //INVERTED EXCLAMATION MARK - 0x00A2, //CENT SIGN - 0x00A3, //POUND SIGN - 0x00A4, //CURRENCY SIGN - 0x00A5, //YEN SIGN - 0x00A6, //BROKEN BAR - 0x00A7, //SECTION SIGN - 0x00A8, //DIAERESIS - 0x00A9, //COPYRIGHT SIGN - 0x00AA, //FEMININE ORDINAL INDICATOR - 0x00AB, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00AC, //NOT SIGN - 0x00AD, //SOFT HYPHEN - 0x00AE, //REGISTERED SIGN - 0x00AF, //MACRON - 0x00B0, //DEGREE SIGN - 0x00B1, //PLUS-MINUS SIGN - 0x00B2, //SUPERSCRIPT TWO - 0x00B3, //SUPERSCRIPT THREE - 0x00B4, //ACUTE ACCENT - 0x00B5, //MICRO SIGN - 0x00B6, //PILCROW SIGN - 0x00B7, //MIDDLE DOT - 0x00B8, //CEDILLA - 0x00B9, //SUPERSCRIPT ONE - 0x00BA, //MASCULINE ORDINAL INDICATOR - 0x00BB, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00BC, //VULGAR FRACTION ONE QUARTER - 0x00BD, //VULGAR FRACTION ONE HALF - 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0x00BF, //INVERTED QUESTION MARK - 0x00C0, //LATIN CAPITAL LETTER A WITH GRAVE - 0x00C1, //LATIN CAPITAL LETTER A WITH ACUTE - 0x00C2, //LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0x0102, //LATIN CAPITAL LETTER A WITH BREVE - 0x00C4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00C5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x00C6, //LATIN CAPITAL LETTER AE - 0x00C7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x00C8, //LATIN CAPITAL LETTER E WITH GRAVE - 0x00C9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x00CA, //LATIN CAPITAL LETTER E WITH CIRCUMFLEX - 0x00CB, //LATIN CAPITAL LETTER E WITH DIAERESIS - 0x0300, //COMBINING GRAVE ACCENT - 0x00CD, //LATIN CAPITAL LETTER I WITH ACUTE - 0x00CE, //LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0x00CF, //LATIN CAPITAL LETTER I WITH DIAERESIS - 0x0110, //LATIN CAPITAL LETTER D WITH STROKE - 0x00D1, //LATIN CAPITAL LETTER N WITH TILDE - 0x0309, //COMBINING HOOK ABOVE - 0x00D3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x00D4, //LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0x01A0, //LATIN CAPITAL LETTER O WITH HORN - 0x00D6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00D7, //MULTIPLICATION SIGN - 0x00D8, //LATIN CAPITAL LETTER O WITH STROKE - 0x00D9, //LATIN CAPITAL LETTER U WITH GRAVE - 0x00DA, //LATIN CAPITAL LETTER U WITH ACUTE - 0x00DB, //LATIN CAPITAL LETTER U WITH CIRCUMFLEX - 0x00DC, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x01AF, //LATIN CAPITAL LETTER U WITH HORN - 0x0303, //COMBINING TILDE - 0x00DF, //LATIN SMALL LETTER SHARP S - 0x00E0, //LATIN SMALL LETTER A WITH GRAVE - 0x00E1, //LATIN SMALL LETTER A WITH ACUTE - 0x00E2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x0103, //LATIN SMALL LETTER A WITH BREVE - 0x00E4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00E5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x00E6, //LATIN SMALL LETTER AE - 0x00E7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00E8, //LATIN SMALL LETTER E WITH GRAVE - 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0x00EA, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00EB, //LATIN SMALL LETTER E WITH DIAERESIS - 0x0301, //COMBINING ACUTE ACCENT - 0x00ED, //LATIN SMALL LETTER I WITH ACUTE - 0x00EE, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00EF, //LATIN SMALL LETTER I WITH DIAERESIS - 0x0111, //LATIN SMALL LETTER D WITH STROKE - 0x00F1, //LATIN SMALL LETTER N WITH TILDE - 0x0323, //COMBINING DOT BELOW - 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0x00F4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x01A1, //LATIN SMALL LETTER O WITH HORN - 0x00F6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00F7, //DIVISION SIGN - 0x00F8, //LATIN SMALL LETTER O WITH STROKE - 0x00F9, //LATIN SMALL LETTER U WITH GRAVE - 0x00FA, //LATIN SMALL LETTER U WITH ACUTE - 0x00FB, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0x01B0, //LATIN SMALL LETTER U WITH HORN - 0x20AB, //DONG SIGN - 0x00FF, //LATIN SMALL LETTER Y WITH DIAERESIS - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp437.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp437.go deleted file mode 100644 index 76dedfb8..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp437.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp437 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000a, //LINE FEED - 0x000b, //VERTICAL TABULATION - 0x000c, //FORM FEED - 0x000d, //CARRIAGE RETURN - 0x000e, //SHIFT OUT - 0x000f, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001a, //SUBSTITUTE - 0x001b, //ESCAPE - 0x001c, //FILE SEPARATOR - 0x001d, //GROUP SEPARATOR - 0x001e, //RECORD SEPARATOR - 0x001f, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002a, //ASTERISK - 0x002b, //PLUS SIGN - 0x002c, //COMMA - 0x002d, //HYPHEN-MINUS - 0x002e, //FULL STOP - 0x002f, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003a, //COLON - 0x003b, //SEMICOLON - 0x003c, //LESS-THAN SIGN - 0x003d, //EQUALS SIGN - 0x003e, //GREATER-THAN SIGN - 0x003f, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004a, //LATIN CAPITAL LETTER J - 0x004b, //LATIN CAPITAL LETTER K - 0x004c, //LATIN CAPITAL LETTER L - 0x004d, //LATIN CAPITAL LETTER M - 0x004e, //LATIN CAPITAL LETTER N - 0x004f, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005a, //LATIN CAPITAL LETTER Z - 0x005b, //LEFT SQUARE BRACKET - 0x005c, //REVERSE SOLIDUS - 0x005d, //RIGHT SQUARE BRACKET - 0x005e, //CIRCUMFLEX ACCENT - 0x005f, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006a, //LATIN SMALL LETTER J - 0x006b, //LATIN SMALL LETTER K - 0x006c, //LATIN SMALL LETTER L - 0x006d, //LATIN SMALL LETTER M - 0x006e, //LATIN SMALL LETTER N - 0x006f, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007a, //LATIN SMALL LETTER Z - 0x007b, //LEFT CURLY BRACKET - 0x007c, //VERTICAL LINE - 0x007d, //RIGHT CURLY BRACKET - 0x007e, //TILDE - 0x007f, //DELETE - 0x00c7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x00fc, //LATIN SMALL LETTER U WITH DIAERESIS - 0x00e9, //LATIN SMALL LETTER E WITH ACUTE - 0x00e2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x00e4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00e0, //LATIN SMALL LETTER A WITH GRAVE - 0x00e5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x00e7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00ea, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00eb, //LATIN SMALL LETTER E WITH DIAERESIS - 0x00e8, //LATIN SMALL LETTER E WITH GRAVE - 0x00ef, //LATIN SMALL LETTER I WITH DIAERESIS - 0x00ee, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00ec, //LATIN SMALL LETTER I WITH GRAVE - 0x00c4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00c5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x00c9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x00e6, //LATIN SMALL LIGATURE AE - 0x00c6, //LATIN CAPITAL LIGATURE AE - 0x00f4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x00f6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00f2, //LATIN SMALL LETTER O WITH GRAVE - 0x00fb, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00f9, //LATIN SMALL LETTER U WITH GRAVE - 0x00ff, //LATIN SMALL LETTER Y WITH DIAERESIS - 0x00d6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00dc, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x00a2, //CENT SIGN - 0x00a3, //POUND SIGN - 0x00a5, //YEN SIGN - 0x20a7, //PESETA SIGN - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x00e1, //LATIN SMALL LETTER A WITH ACUTE - 0x00ed, //LATIN SMALL LETTER I WITH ACUTE - 0x00f3, //LATIN SMALL LETTER O WITH ACUTE - 0x00fa, //LATIN SMALL LETTER U WITH ACUTE - 0x00f1, //LATIN SMALL LETTER N WITH TILDE - 0x00d1, //LATIN CAPITAL LETTER N WITH TILDE - 0x00aa, //FEMININE ORDINAL INDICATOR - 0x00ba, //MASCULINE ORDINAL INDICATOR - 0x00bf, //INVERTED QUESTION MARK - 0x2310, //REVERSED NOT SIGN - 0x00ac, //NOT SIGN - 0x00bd, //VULGAR FRACTION ONE HALF - 0x00bc, //VULGAR FRACTION ONE QUARTER - 0x00a1, //INVERTED EXCLAMATION MARK - 0x00ab, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00bb, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x2591, //LIGHT SHADE - 0x2592, //MEDIUM SHADE - 0x2593, //DARK SHADE - 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0x2561, //BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - 0x2562, //BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE - 0x2556, //BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE - 0x2555, //BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE - 0x2563, //BOX DRAWINGS DOUBLE VERTICAL AND LEFT - 0x2551, //BOX DRAWINGS DOUBLE VERTICAL - 0x2557, //BOX DRAWINGS DOUBLE DOWN AND LEFT - 0x255d, //BOX DRAWINGS DOUBLE UP AND LEFT - 0x255c, //BOX DRAWINGS UP DOUBLE AND LEFT SINGLE - 0x255b, //BOX DRAWINGS UP SINGLE AND LEFT DOUBLE - 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0x252c, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0x251c, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0x253c, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0x255e, //BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - 0x255f, //BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE - 0x255a, //BOX DRAWINGS DOUBLE UP AND RIGHT - 0x2554, //BOX DRAWINGS DOUBLE DOWN AND RIGHT - 0x2569, //BOX DRAWINGS DOUBLE UP AND HORIZONTAL - 0x2566, //BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - 0x2560, //BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - 0x2550, //BOX DRAWINGS DOUBLE HORIZONTAL - 0x256c, //BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - 0x2567, //BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE - 0x2568, //BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE - 0x2564, //BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE - 0x2565, //BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE - 0x2559, //BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE - 0x2558, //BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE - 0x2552, //BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE - 0x2553, //BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE - 0x256b, //BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE - 0x256a, //BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0x250c, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0x2588, //FULL BLOCK - 0x2584, //LOWER HALF BLOCK - 0x258c, //LEFT HALF BLOCK - 0x2590, //RIGHT HALF BLOCK - 0x2580, //UPPER HALF BLOCK - 0x03b1, //GREEK SMALL LETTER ALPHA - 0x00df, //LATIN SMALL LETTER SHARP S - 0x0393, //GREEK CAPITAL LETTER GAMMA - 0x03c0, //GREEK SMALL LETTER PI - 0x03a3, //GREEK CAPITAL LETTER SIGMA - 0x03c3, //GREEK SMALL LETTER SIGMA - 0x00b5, //MICRO SIGN - 0x03c4, //GREEK SMALL LETTER TAU - 0x03a6, //GREEK CAPITAL LETTER PHI - 0x0398, //GREEK CAPITAL LETTER THETA - 0x03a9, //GREEK CAPITAL LETTER OMEGA - 0x03b4, //GREEK SMALL LETTER DELTA - 0x221e, //INFINITY - 0x03c6, //GREEK SMALL LETTER PHI - 0x03b5, //GREEK SMALL LETTER EPSILON - 0x2229, //INTERSECTION - 0x2261, //IDENTICAL TO - 0x00b1, //PLUS-MINUS SIGN - 0x2265, //GREATER-THAN OR EQUAL TO - 0x2264, //LESS-THAN OR EQUAL TO - 0x2320, //TOP HALF INTEGRAL - 0x2321, //BOTTOM HALF INTEGRAL - 0x00f7, //DIVISION SIGN - 0x2248, //ALMOST EQUAL TO - 0x00b0, //DEGREE SIGN - 0x2219, //BULLET OPERATOR - 0x00b7, //MIDDLE DOT - 0x221a, //SQUARE ROOT - 0x207f, //SUPERSCRIPT LATIN SMALL LETTER N - 0x00b2, //SUPERSCRIPT TWO - 0x25a0, //BLACK SQUARE - 0x00a0, //NO-BREAK SPACE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp850.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp850.go deleted file mode 100644 index 927ab249..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp850.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp850 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000a, //LINE FEED - 0x000b, //VERTICAL TABULATION - 0x000c, //FORM FEED - 0x000d, //CARRIAGE RETURN - 0x000e, //SHIFT OUT - 0x000f, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001a, //SUBSTITUTE - 0x001b, //ESCAPE - 0x001c, //FILE SEPARATOR - 0x001d, //GROUP SEPARATOR - 0x001e, //RECORD SEPARATOR - 0x001f, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002a, //ASTERISK - 0x002b, //PLUS SIGN - 0x002c, //COMMA - 0x002d, //HYPHEN-MINUS - 0x002e, //FULL STOP - 0x002f, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003a, //COLON - 0x003b, //SEMICOLON - 0x003c, //LESS-THAN SIGN - 0x003d, //EQUALS SIGN - 0x003e, //GREATER-THAN SIGN - 0x003f, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004a, //LATIN CAPITAL LETTER J - 0x004b, //LATIN CAPITAL LETTER K - 0x004c, //LATIN CAPITAL LETTER L - 0x004d, //LATIN CAPITAL LETTER M - 0x004e, //LATIN CAPITAL LETTER N - 0x004f, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005a, //LATIN CAPITAL LETTER Z - 0x005b, //LEFT SQUARE BRACKET - 0x005c, //REVERSE SOLIDUS - 0x005d, //RIGHT SQUARE BRACKET - 0x005e, //CIRCUMFLEX ACCENT - 0x005f, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006a, //LATIN SMALL LETTER J - 0x006b, //LATIN SMALL LETTER K - 0x006c, //LATIN SMALL LETTER L - 0x006d, //LATIN SMALL LETTER M - 0x006e, //LATIN SMALL LETTER N - 0x006f, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007a, //LATIN SMALL LETTER Z - 0x007b, //LEFT CURLY BRACKET - 0x007c, //VERTICAL LINE - 0x007d, //RIGHT CURLY BRACKET - 0x007e, //TILDE - 0x007f, //DELETE - 0x00c7, //LATIN CAPITAL LETTER C WITH CEDILLA - 0x00fc, //LATIN SMALL LETTER U WITH DIAERESIS - 0x00e9, //LATIN SMALL LETTER E WITH ACUTE - 0x00e2, //LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x00e4, //LATIN SMALL LETTER A WITH DIAERESIS - 0x00e0, //LATIN SMALL LETTER A WITH GRAVE - 0x00e5, //LATIN SMALL LETTER A WITH RING ABOVE - 0x00e7, //LATIN SMALL LETTER C WITH CEDILLA - 0x00ea, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x00eb, //LATIN SMALL LETTER E WITH DIAERESIS - 0x00e8, //LATIN SMALL LETTER E WITH GRAVE - 0x00ef, //LATIN SMALL LETTER I WITH DIAERESIS - 0x00ee, //LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x00ec, //LATIN SMALL LETTER I WITH GRAVE - 0x00c4, //LATIN CAPITAL LETTER A WITH DIAERESIS - 0x00c5, //LATIN CAPITAL LETTER A WITH RING ABOVE - 0x00c9, //LATIN CAPITAL LETTER E WITH ACUTE - 0x00e6, //LATIN SMALL LIGATURE AE - 0x00c6, //LATIN CAPITAL LIGATURE AE - 0x00f4, //LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x00f6, //LATIN SMALL LETTER O WITH DIAERESIS - 0x00f2, //LATIN SMALL LETTER O WITH GRAVE - 0x00fb, //LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x00f9, //LATIN SMALL LETTER U WITH GRAVE - 0x00ff, //LATIN SMALL LETTER Y WITH DIAERESIS - 0x00d6, //LATIN CAPITAL LETTER O WITH DIAERESIS - 0x00dc, //LATIN CAPITAL LETTER U WITH DIAERESIS - 0x00f8, //LATIN SMALL LETTER O WITH STROKE - 0x00a3, //POUND SIGN - 0x00d8, //LATIN CAPITAL LETTER O WITH STROKE - 0x00d7, //MULTIPLICATION SIGN - 0x0192, //LATIN SMALL LETTER F WITH HOOK - 0x00e1, //LATIN SMALL LETTER A WITH ACUTE - 0x00ed, //LATIN SMALL LETTER I WITH ACUTE - 0x00f3, //LATIN SMALL LETTER O WITH ACUTE - 0x00fa, //LATIN SMALL LETTER U WITH ACUTE - 0x00f1, //LATIN SMALL LETTER N WITH TILDE - 0x00d1, //LATIN CAPITAL LETTER N WITH TILDE - 0x00aa, //FEMININE ORDINAL INDICATOR - 0x00ba, //MASCULINE ORDINAL INDICATOR - 0x00bf, //INVERTED QUESTION MARK - 0x00ae, //REGISTERED SIGN - 0x00ac, //NOT SIGN - 0x00bd, //VULGAR FRACTION ONE HALF - 0x00bc, //VULGAR FRACTION ONE QUARTER - 0x00a1, //INVERTED EXCLAMATION MARK - 0x00ab, //LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x00bb, //RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0x2591, //LIGHT SHADE - 0x2592, //MEDIUM SHADE - 0x2593, //DARK SHADE - 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0x00c1, //LATIN CAPITAL LETTER A WITH ACUTE - 0x00c2, //LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0x00c0, //LATIN CAPITAL LETTER A WITH GRAVE - 0x00a9, //COPYRIGHT SIGN - 0x2563, //BOX DRAWINGS DOUBLE VERTICAL AND LEFT - 0x2551, //BOX DRAWINGS DOUBLE VERTICAL - 0x2557, //BOX DRAWINGS DOUBLE DOWN AND LEFT - 0x255d, //BOX DRAWINGS DOUBLE UP AND LEFT - 0x00a2, //CENT SIGN - 0x00a5, //YEN SIGN - 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0x252c, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0x251c, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0x253c, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0x00e3, //LATIN SMALL LETTER A WITH TILDE - 0x00c3, //LATIN CAPITAL LETTER A WITH TILDE - 0x255a, //BOX DRAWINGS DOUBLE UP AND RIGHT - 0x2554, //BOX DRAWINGS DOUBLE DOWN AND RIGHT - 0x2569, //BOX DRAWINGS DOUBLE UP AND HORIZONTAL - 0x2566, //BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - 0x2560, //BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - 0x2550, //BOX DRAWINGS DOUBLE HORIZONTAL - 0x256c, //BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - 0x00a4, //CURRENCY SIGN - 0x00f0, //LATIN SMALL LETTER ETH - 0x00d0, //LATIN CAPITAL LETTER ETH - 0x00ca, //LATIN CAPITAL LETTER E WITH CIRCUMFLEX - 0x00cb, //LATIN CAPITAL LETTER E WITH DIAERESIS - 0x00c8, //LATIN CAPITAL LETTER E WITH GRAVE - 0x0131, //LATIN SMALL LETTER DOTLESS I - 0x00cd, //LATIN CAPITAL LETTER I WITH ACUTE - 0x00ce, //LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0x00cf, //LATIN CAPITAL LETTER I WITH DIAERESIS - 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0x250c, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0x2588, //FULL BLOCK - 0x2584, //LOWER HALF BLOCK - 0x00a6, //BROKEN BAR - 0x00cc, //LATIN CAPITAL LETTER I WITH GRAVE - 0x2580, //UPPER HALF BLOCK - 0x00d3, //LATIN CAPITAL LETTER O WITH ACUTE - 0x00df, //LATIN SMALL LETTER SHARP S - 0x00d4, //LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0x00d2, //LATIN CAPITAL LETTER O WITH GRAVE - 0x00f5, //LATIN SMALL LETTER O WITH TILDE - 0x00d5, //LATIN CAPITAL LETTER O WITH TILDE - 0x00b5, //MICRO SIGN - 0x00fe, //LATIN SMALL LETTER THORN - 0x00de, //LATIN CAPITAL LETTER THORN - 0x00da, //LATIN CAPITAL LETTER U WITH ACUTE - 0x00db, //LATIN CAPITAL LETTER U WITH CIRCUMFLEX - 0x00d9, //LATIN CAPITAL LETTER U WITH GRAVE - 0x00fd, //LATIN SMALL LETTER Y WITH ACUTE - 0x00dd, //LATIN CAPITAL LETTER Y WITH ACUTE - 0x00af, //MACRON - 0x00b4, //ACUTE ACCENT - 0x00ad, //SOFT HYPHEN - 0x00b1, //PLUS-MINUS SIGN - 0x2017, //DOUBLE LOW LINE - 0x00be, //VULGAR FRACTION THREE QUARTERS - 0x00b6, //PILCROW SIGN - 0x00a7, //SECTION SIGN - 0x00f7, //DIVISION SIGN - 0x00b8, //CEDILLA - 0x00b0, //DEGREE SIGN - 0x00a8, //DIAERESIS - 0x00b7, //MIDDLE DOT - 0x00b9, //SUPERSCRIPT ONE - 0x00b3, //SUPERSCRIPT THREE - 0x00b2, //SUPERSCRIPT TWO - 0x25a0, //BLACK SQUARE - 0x00a0, //NO-BREAK SPACE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp874.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp874.go deleted file mode 100644 index 723bf6c3..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp874.go +++ /dev/null @@ -1,262 +0,0 @@ -package cp - -var cp874 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2026, //HORIZONTAL ELLIPSIS - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x2018, //LEFT SINGLE QUOTATION MARK - 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x2022, //BULLET - 0x2013, //EN DASH - 0x2014, //EM DASH - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x00A0, //NO-BREAK SPACE - 0x0E01, //THAI CHARACTER KO KAI - 0x0E02, //THAI CHARACTER KHO KHAI - 0x0E03, //THAI CHARACTER KHO KHUAT - 0x0E04, //THAI CHARACTER KHO KHWAI - 0x0E05, //THAI CHARACTER KHO KHON - 0x0E06, //THAI CHARACTER KHO RAKHANG - 0x0E07, //THAI CHARACTER NGO NGU - 0x0E08, //THAI CHARACTER CHO CHAN - 0x0E09, //THAI CHARACTER CHO CHING - 0x0E0A, //THAI CHARACTER CHO CHANG - 0x0E0B, //THAI CHARACTER SO SO - 0x0E0C, //THAI CHARACTER CHO CHOE - 0x0E0D, //THAI CHARACTER YO YING - 0x0E0E, //THAI CHARACTER DO CHADA - 0x0E0F, //THAI CHARACTER TO PATAK - 0x0E10, //THAI CHARACTER THO THAN - 0x0E11, //THAI CHARACTER THO NANGMONTHO - 0x0E12, //THAI CHARACTER THO PHUTHAO - 0x0E13, //THAI CHARACTER NO NEN - 0x0E14, //THAI CHARACTER DO DEK - 0x0E15, //THAI CHARACTER TO TAO - 0x0E16, //THAI CHARACTER THO THUNG - 0x0E17, //THAI CHARACTER THO THAHAN - 0x0E18, //THAI CHARACTER THO THONG - 0x0E19, //THAI CHARACTER NO NU - 0x0E1A, //THAI CHARACTER BO BAIMAI - 0x0E1B, //THAI CHARACTER PO PLA - 0x0E1C, //THAI CHARACTER PHO PHUNG - 0x0E1D, //THAI CHARACTER FO FA - 0x0E1E, //THAI CHARACTER PHO PHAN - 0x0E1F, //THAI CHARACTER FO FAN - 0x0E20, //THAI CHARACTER PHO SAMPHAO - 0x0E21, //THAI CHARACTER MO MA - 0x0E22, //THAI CHARACTER YO YAK - 0x0E23, //THAI CHARACTER RO RUA - 0x0E24, //THAI CHARACTER RU - 0x0E25, //THAI CHARACTER LO LING - 0x0E26, //THAI CHARACTER LU - 0x0E27, //THAI CHARACTER WO WAEN - 0x0E28, //THAI CHARACTER SO SALA - 0x0E29, //THAI CHARACTER SO RUSI - 0x0E2A, //THAI CHARACTER SO SUA - 0x0E2B, //THAI CHARACTER HO HIP - 0x0E2C, //THAI CHARACTER LO CHULA - 0x0E2D, //THAI CHARACTER O ANG - 0x0E2E, //THAI CHARACTER HO NOKHUK - 0x0E2F, //THAI CHARACTER PAIYANNOI - 0x0E30, //THAI CHARACTER SARA A - 0x0E31, //THAI CHARACTER MAI HAN-AKAT - 0x0E32, //THAI CHARACTER SARA AA - 0x0E33, //THAI CHARACTER SARA AM - 0x0E34, //THAI CHARACTER SARA I - 0x0E35, //THAI CHARACTER SARA II - 0x0E36, //THAI CHARACTER SARA UE - 0x0E37, //THAI CHARACTER SARA UEE - 0x0E38, //THAI CHARACTER SARA U - 0x0E39, //THAI CHARACTER SARA UU - 0x0E3A, //THAI CHARACTER PHINTHU - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0x0E3F, //THAI CURRENCY SYMBOL BAHT - 0x0E40, //THAI CHARACTER SARA E - 0x0E41, //THAI CHARACTER SARA AE - 0x0E42, //THAI CHARACTER SARA O - 0x0E43, //THAI CHARACTER SARA AI MAIMUAN - 0x0E44, //THAI CHARACTER SARA AI MAIMALAI - 0x0E45, //THAI CHARACTER LAKKHANGYAO - 0x0E46, //THAI CHARACTER MAIYAMOK - 0x0E47, //THAI CHARACTER MAITAIKHU - 0x0E48, //THAI CHARACTER MAI EK - 0x0E49, //THAI CHARACTER MAI THO - 0x0E4A, //THAI CHARACTER MAI TRI - 0x0E4B, //THAI CHARACTER MAI CHATTAWA - 0x0E4C, //THAI CHARACTER THANTHAKHAT - 0x0E4D, //THAI CHARACTER NIKHAHIT - 0x0E4E, //THAI CHARACTER YAMAKKAN - 0x0E4F, //THAI CHARACTER FONGMAN - 0x0E50, //THAI DIGIT ZERO - 0x0E51, //THAI DIGIT ONE - 0x0E52, //THAI DIGIT TWO - 0x0E53, //THAI DIGIT THREE - 0x0E54, //THAI DIGIT FOUR - 0x0E55, //THAI DIGIT FIVE - 0x0E56, //THAI DIGIT SIX - 0x0E57, //THAI DIGIT SEVEN - 0x0E58, //THAI DIGIT EIGHT - 0x0E59, //THAI DIGIT NINE - 0x0E5A, //THAI CHARACTER ANGKHANKHU - 0x0E5B, //THAI CHARACTER KHOMUT - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp932.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp932.go deleted file mode 100644 index 5fc13774..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp932.go +++ /dev/null @@ -1,7988 +0,0 @@ -package cp - -var cp932 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0xFFFD, //UNDEFINED - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - 0xFFFD, //UNDEFINED - 0xFF61, //HALFWIDTH IDEOGRAPHIC FULL STOP - 0xFF62, //HALFWIDTH LEFT CORNER BRACKET - 0xFF63, //HALFWIDTH RIGHT CORNER BRACKET - 0xFF64, //HALFWIDTH IDEOGRAPHIC COMMA - 0xFF65, //HALFWIDTH KATAKANA MIDDLE DOT - 0xFF66, //HALFWIDTH KATAKANA LETTER WO - 0xFF67, //HALFWIDTH KATAKANA LETTER SMALL A - 0xFF68, //HALFWIDTH KATAKANA LETTER SMALL I - 0xFF69, //HALFWIDTH KATAKANA LETTER SMALL U - 0xFF6A, //HALFWIDTH KATAKANA LETTER SMALL E - 0xFF6B, //HALFWIDTH KATAKANA LETTER SMALL O - 0xFF6C, //HALFWIDTH KATAKANA LETTER SMALL YA - 0xFF6D, //HALFWIDTH KATAKANA LETTER SMALL YU - 0xFF6E, //HALFWIDTH KATAKANA LETTER SMALL YO - 0xFF6F, //HALFWIDTH KATAKANA LETTER SMALL TU - 0xFF70, //HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - 0xFF71, //HALFWIDTH KATAKANA LETTER A - 0xFF72, //HALFWIDTH KATAKANA LETTER I - 0xFF73, //HALFWIDTH KATAKANA LETTER U - 0xFF74, //HALFWIDTH KATAKANA LETTER E - 0xFF75, //HALFWIDTH KATAKANA LETTER O - 0xFF76, //HALFWIDTH KATAKANA LETTER KA - 0xFF77, //HALFWIDTH KATAKANA LETTER KI - 0xFF78, //HALFWIDTH KATAKANA LETTER KU - 0xFF79, //HALFWIDTH KATAKANA LETTER KE - 0xFF7A, //HALFWIDTH KATAKANA LETTER KO - 0xFF7B, //HALFWIDTH KATAKANA LETTER SA - 0xFF7C, //HALFWIDTH KATAKANA LETTER SI - 0xFF7D, //HALFWIDTH KATAKANA LETTER SU - 0xFF7E, //HALFWIDTH KATAKANA LETTER SE - 0xFF7F, //HALFWIDTH KATAKANA LETTER SO - 0xFF80, //HALFWIDTH KATAKANA LETTER TA - 0xFF81, //HALFWIDTH KATAKANA LETTER TI - 0xFF82, //HALFWIDTH KATAKANA LETTER TU - 0xFF83, //HALFWIDTH KATAKANA LETTER TE - 0xFF84, //HALFWIDTH KATAKANA LETTER TO - 0xFF85, //HALFWIDTH KATAKANA LETTER NA - 0xFF86, //HALFWIDTH KATAKANA LETTER NI - 0xFF87, //HALFWIDTH KATAKANA LETTER NU - 0xFF88, //HALFWIDTH KATAKANA LETTER NE - 0xFF89, //HALFWIDTH KATAKANA LETTER NO - 0xFF8A, //HALFWIDTH KATAKANA LETTER HA - 0xFF8B, //HALFWIDTH KATAKANA LETTER HI - 0xFF8C, //HALFWIDTH KATAKANA LETTER HU - 0xFF8D, //HALFWIDTH KATAKANA LETTER HE - 0xFF8E, //HALFWIDTH KATAKANA LETTER HO - 0xFF8F, //HALFWIDTH KATAKANA LETTER MA - 0xFF90, //HALFWIDTH KATAKANA LETTER MI - 0xFF91, //HALFWIDTH KATAKANA LETTER MU - 0xFF92, //HALFWIDTH KATAKANA LETTER ME - 0xFF93, //HALFWIDTH KATAKANA LETTER MO - 0xFF94, //HALFWIDTH KATAKANA LETTER YA - 0xFF95, //HALFWIDTH KATAKANA LETTER YU - 0xFF96, //HALFWIDTH KATAKANA LETTER YO - 0xFF97, //HALFWIDTH KATAKANA LETTER RA - 0xFF98, //HALFWIDTH KATAKANA LETTER RI - 0xFF99, //HALFWIDTH KATAKANA LETTER RU - 0xFF9A, //HALFWIDTH KATAKANA LETTER RE - 0xFF9B, //HALFWIDTH KATAKANA LETTER RO - 0xFF9C, //HALFWIDTH KATAKANA LETTER WA - 0xFF9D, //HALFWIDTH KATAKANA LETTER N - 0xFF9E, //HALFWIDTH KATAKANA VOICED SOUND MARK - 0xFF9F, //HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - 0xFFFD, //UNDEFINED - }, - db: map[int]rune{ - 0x8140: 0x3000, //IDEOGRAPHIC SPACE - 0x8141: 0x3001, //IDEOGRAPHIC COMMA - 0x8142: 0x3002, //IDEOGRAPHIC FULL STOP - 0x8143: 0xFF0C, //FULLWIDTH COMMA - 0x8144: 0xFF0E, //FULLWIDTH FULL STOP - 0x8145: 0x30FB, //KATAKANA MIDDLE DOT - 0x8146: 0xFF1A, //FULLWIDTH COLON - 0x8147: 0xFF1B, //FULLWIDTH SEMICOLON - 0x8148: 0xFF1F, //FULLWIDTH QUESTION MARK - 0x8149: 0xFF01, //FULLWIDTH EXCLAMATION MARK - 0x814A: 0x309B, //KATAKANA-HIRAGANA VOICED SOUND MARK - 0x814B: 0x309C, //KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - 0x814C: 0x00B4, //ACUTE ACCENT - 0x814D: 0xFF40, //FULLWIDTH GRAVE ACCENT - 0x814E: 0x00A8, //DIAERESIS - 0x814F: 0xFF3E, //FULLWIDTH CIRCUMFLEX ACCENT - 0x8150: 0xFFE3, //FULLWIDTH MACRON - 0x8151: 0xFF3F, //FULLWIDTH LOW LINE - 0x8152: 0x30FD, //KATAKANA ITERATION MARK - 0x8153: 0x30FE, //KATAKANA VOICED ITERATION MARK - 0x8154: 0x309D, //HIRAGANA ITERATION MARK - 0x8155: 0x309E, //HIRAGANA VOICED ITERATION MARK - 0x8156: 0x3003, //DITTO MARK - 0x8157: 0x4EDD, //CJK UNIFIED IDEOGRAPH - 0x8158: 0x3005, //IDEOGRAPHIC ITERATION MARK - 0x8159: 0x3006, //IDEOGRAPHIC CLOSING MARK - 0x815A: 0x3007, //IDEOGRAPHIC NUMBER ZERO - 0x815B: 0x30FC, //KATAKANA-HIRAGANA PROLONGED SOUND MARK - 0x815C: 0x2015, //HORIZONTAL BAR - 0x815D: 0x2010, //HYPHEN - 0x815E: 0xFF0F, //FULLWIDTH SOLIDUS - 0x815F: 0xFF3C, //FULLWIDTH REVERSE SOLIDUS - 0x8160: 0xFF5E, //FULLWIDTH TILDE - 0x8161: 0x2225, //PARALLEL TO - 0x8162: 0xFF5C, //FULLWIDTH VERTICAL LINE - 0x8163: 0x2026, //HORIZONTAL ELLIPSIS - 0x8164: 0x2025, //TWO DOT LEADER - 0x8165: 0x2018, //LEFT SINGLE QUOTATION MARK - 0x8166: 0x2019, //RIGHT SINGLE QUOTATION MARK - 0x8167: 0x201C, //LEFT DOUBLE QUOTATION MARK - 0x8168: 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0x8169: 0xFF08, //FULLWIDTH LEFT PARENTHESIS - 0x816A: 0xFF09, //FULLWIDTH RIGHT PARENTHESIS - 0x816B: 0x3014, //LEFT TORTOISE SHELL BRACKET - 0x816C: 0x3015, //RIGHT TORTOISE SHELL BRACKET - 0x816D: 0xFF3B, //FULLWIDTH LEFT SQUARE BRACKET - 0x816E: 0xFF3D, //FULLWIDTH RIGHT SQUARE BRACKET - 0x816F: 0xFF5B, //FULLWIDTH LEFT CURLY BRACKET - 0x8170: 0xFF5D, //FULLWIDTH RIGHT CURLY BRACKET - 0x8171: 0x3008, //LEFT ANGLE BRACKET - 0x8172: 0x3009, //RIGHT ANGLE BRACKET - 0x8173: 0x300A, //LEFT DOUBLE ANGLE BRACKET - 0x8174: 0x300B, //RIGHT DOUBLE ANGLE BRACKET - 0x8175: 0x300C, //LEFT CORNER BRACKET - 0x8176: 0x300D, //RIGHT CORNER BRACKET - 0x8177: 0x300E, //LEFT WHITE CORNER BRACKET - 0x8178: 0x300F, //RIGHT WHITE CORNER BRACKET - 0x8179: 0x3010, //LEFT BLACK LENTICULAR BRACKET - 0x817A: 0x3011, //RIGHT BLACK LENTICULAR BRACKET - 0x817B: 0xFF0B, //FULLWIDTH PLUS SIGN - 0x817C: 0xFF0D, //FULLWIDTH HYPHEN-MINUS - 0x817D: 0x00B1, //PLUS-MINUS SIGN - 0x817E: 0x00D7, //MULTIPLICATION SIGN - 0x8180: 0x00F7, //DIVISION SIGN - 0x8181: 0xFF1D, //FULLWIDTH EQUALS SIGN - 0x8182: 0x2260, //NOT EQUAL TO - 0x8183: 0xFF1C, //FULLWIDTH LESS-THAN SIGN - 0x8184: 0xFF1E, //FULLWIDTH GREATER-THAN SIGN - 0x8185: 0x2266, //LESS-THAN OVER EQUAL TO - 0x8186: 0x2267, //GREATER-THAN OVER EQUAL TO - 0x8187: 0x221E, //INFINITY - 0x8188: 0x2234, //THEREFORE - 0x8189: 0x2642, //MALE SIGN - 0x818A: 0x2640, //FEMALE SIGN - 0x818B: 0x00B0, //DEGREE SIGN - 0x818C: 0x2032, //PRIME - 0x818D: 0x2033, //DOUBLE PRIME - 0x818E: 0x2103, //DEGREE CELSIUS - 0x818F: 0xFFE5, //FULLWIDTH YEN SIGN - 0x8190: 0xFF04, //FULLWIDTH DOLLAR SIGN - 0x8191: 0xFFE0, //FULLWIDTH CENT SIGN - 0x8192: 0xFFE1, //FULLWIDTH POUND SIGN - 0x8193: 0xFF05, //FULLWIDTH PERCENT SIGN - 0x8194: 0xFF03, //FULLWIDTH NUMBER SIGN - 0x8195: 0xFF06, //FULLWIDTH AMPERSAND - 0x8196: 0xFF0A, //FULLWIDTH ASTERISK - 0x8197: 0xFF20, //FULLWIDTH COMMERCIAL AT - 0x8198: 0x00A7, //SECTION SIGN - 0x8199: 0x2606, //WHITE STAR - 0x819A: 0x2605, //BLACK STAR - 0x819B: 0x25CB, //WHITE CIRCLE - 0x819C: 0x25CF, //BLACK CIRCLE - 0x819D: 0x25CE, //BULLSEYE - 0x819E: 0x25C7, //WHITE DIAMOND - 0x819F: 0x25C6, //BLACK DIAMOND - 0x81A0: 0x25A1, //WHITE SQUARE - 0x81A1: 0x25A0, //BLACK SQUARE - 0x81A2: 0x25B3, //WHITE UP-POINTING TRIANGLE - 0x81A3: 0x25B2, //BLACK UP-POINTING TRIANGLE - 0x81A4: 0x25BD, //WHITE DOWN-POINTING TRIANGLE - 0x81A5: 0x25BC, //BLACK DOWN-POINTING TRIANGLE - 0x81A6: 0x203B, //REFERENCE MARK - 0x81A7: 0x3012, //POSTAL MARK - 0x81A8: 0x2192, //RIGHTWARDS ARROW - 0x81A9: 0x2190, //LEFTWARDS ARROW - 0x81AA: 0x2191, //UPWARDS ARROW - 0x81AB: 0x2193, //DOWNWARDS ARROW - 0x81AC: 0x3013, //GETA MARK - 0x81B8: 0x2208, //ELEMENT OF - 0x81B9: 0x220B, //CONTAINS AS MEMBER - 0x81BA: 0x2286, //SUBSET OF OR EQUAL TO - 0x81BB: 0x2287, //SUPERSET OF OR EQUAL TO - 0x81BC: 0x2282, //SUBSET OF - 0x81BD: 0x2283, //SUPERSET OF - 0x81BE: 0x222A, //UNION - 0x81BF: 0x2229, //INTERSECTION - 0x81C8: 0x2227, //LOGICAL AND - 0x81C9: 0x2228, //LOGICAL OR - 0x81CA: 0xFFE2, //FULLWIDTH NOT SIGN - 0x81CB: 0x21D2, //RIGHTWARDS DOUBLE ARROW - 0x81CC: 0x21D4, //LEFT RIGHT DOUBLE ARROW - 0x81CD: 0x2200, //FOR ALL - 0x81CE: 0x2203, //THERE EXISTS - 0x81DA: 0x2220, //ANGLE - 0x81DB: 0x22A5, //UP TACK - 0x81DC: 0x2312, //ARC - 0x81DD: 0x2202, //PARTIAL DIFFERENTIAL - 0x81DE: 0x2207, //NABLA - 0x81DF: 0x2261, //IDENTICAL TO - 0x81E0: 0x2252, //APPROXIMATELY EQUAL TO OR THE IMAGE OF - 0x81E1: 0x226A, //MUCH LESS-THAN - 0x81E2: 0x226B, //MUCH GREATER-THAN - 0x81E3: 0x221A, //SQUARE ROOT - 0x81E4: 0x223D, //REVERSED TILDE - 0x81E5: 0x221D, //PROPORTIONAL TO - 0x81E6: 0x2235, //BECAUSE - 0x81E7: 0x222B, //INTEGRAL - 0x81E8: 0x222C, //DOUBLE INTEGRAL - 0x81F0: 0x212B, //ANGSTROM SIGN - 0x81F1: 0x2030, //PER MILLE SIGN - 0x81F2: 0x266F, //MUSIC SHARP SIGN - 0x81F3: 0x266D, //MUSIC FLAT SIGN - 0x81F4: 0x266A, //EIGHTH NOTE - 0x81F5: 0x2020, //DAGGER - 0x81F6: 0x2021, //DOUBLE DAGGER - 0x81F7: 0x00B6, //PILCROW SIGN - 0x81FC: 0x25EF, //LARGE CIRCLE - 0x824F: 0xFF10, //FULLWIDTH DIGIT ZERO - 0x8250: 0xFF11, //FULLWIDTH DIGIT ONE - 0x8251: 0xFF12, //FULLWIDTH DIGIT TWO - 0x8252: 0xFF13, //FULLWIDTH DIGIT THREE - 0x8253: 0xFF14, //FULLWIDTH DIGIT FOUR - 0x8254: 0xFF15, //FULLWIDTH DIGIT FIVE - 0x8255: 0xFF16, //FULLWIDTH DIGIT SIX - 0x8256: 0xFF17, //FULLWIDTH DIGIT SEVEN - 0x8257: 0xFF18, //FULLWIDTH DIGIT EIGHT - 0x8258: 0xFF19, //FULLWIDTH DIGIT NINE - 0x8260: 0xFF21, //FULLWIDTH LATIN CAPITAL LETTER A - 0x8261: 0xFF22, //FULLWIDTH LATIN CAPITAL LETTER B - 0x8262: 0xFF23, //FULLWIDTH LATIN CAPITAL LETTER C - 0x8263: 0xFF24, //FULLWIDTH LATIN CAPITAL LETTER D - 0x8264: 0xFF25, //FULLWIDTH LATIN CAPITAL LETTER E - 0x8265: 0xFF26, //FULLWIDTH LATIN CAPITAL LETTER F - 0x8266: 0xFF27, //FULLWIDTH LATIN CAPITAL LETTER G - 0x8267: 0xFF28, //FULLWIDTH LATIN CAPITAL LETTER H - 0x8268: 0xFF29, //FULLWIDTH LATIN CAPITAL LETTER I - 0x8269: 0xFF2A, //FULLWIDTH LATIN CAPITAL LETTER J - 0x826A: 0xFF2B, //FULLWIDTH LATIN CAPITAL LETTER K - 0x826B: 0xFF2C, //FULLWIDTH LATIN CAPITAL LETTER L - 0x826C: 0xFF2D, //FULLWIDTH LATIN CAPITAL LETTER M - 0x826D: 0xFF2E, //FULLWIDTH LATIN CAPITAL LETTER N - 0x826E: 0xFF2F, //FULLWIDTH LATIN CAPITAL LETTER O - 0x826F: 0xFF30, //FULLWIDTH LATIN CAPITAL LETTER P - 0x8270: 0xFF31, //FULLWIDTH LATIN CAPITAL LETTER Q - 0x8271: 0xFF32, //FULLWIDTH LATIN CAPITAL LETTER R - 0x8272: 0xFF33, //FULLWIDTH LATIN CAPITAL LETTER S - 0x8273: 0xFF34, //FULLWIDTH LATIN CAPITAL LETTER T - 0x8274: 0xFF35, //FULLWIDTH LATIN CAPITAL LETTER U - 0x8275: 0xFF36, //FULLWIDTH LATIN CAPITAL LETTER V - 0x8276: 0xFF37, //FULLWIDTH LATIN CAPITAL LETTER W - 0x8277: 0xFF38, //FULLWIDTH LATIN CAPITAL LETTER X - 0x8278: 0xFF39, //FULLWIDTH LATIN CAPITAL LETTER Y - 0x8279: 0xFF3A, //FULLWIDTH LATIN CAPITAL LETTER Z - 0x8281: 0xFF41, //FULLWIDTH LATIN SMALL LETTER A - 0x8282: 0xFF42, //FULLWIDTH LATIN SMALL LETTER B - 0x8283: 0xFF43, //FULLWIDTH LATIN SMALL LETTER C - 0x8284: 0xFF44, //FULLWIDTH LATIN SMALL LETTER D - 0x8285: 0xFF45, //FULLWIDTH LATIN SMALL LETTER E - 0x8286: 0xFF46, //FULLWIDTH LATIN SMALL LETTER F - 0x8287: 0xFF47, //FULLWIDTH LATIN SMALL LETTER G - 0x8288: 0xFF48, //FULLWIDTH LATIN SMALL LETTER H - 0x8289: 0xFF49, //FULLWIDTH LATIN SMALL LETTER I - 0x828A: 0xFF4A, //FULLWIDTH LATIN SMALL LETTER J - 0x828B: 0xFF4B, //FULLWIDTH LATIN SMALL LETTER K - 0x828C: 0xFF4C, //FULLWIDTH LATIN SMALL LETTER L - 0x828D: 0xFF4D, //FULLWIDTH LATIN SMALL LETTER M - 0x828E: 0xFF4E, //FULLWIDTH LATIN SMALL LETTER N - 0x828F: 0xFF4F, //FULLWIDTH LATIN SMALL LETTER O - 0x8290: 0xFF50, //FULLWIDTH LATIN SMALL LETTER P - 0x8291: 0xFF51, //FULLWIDTH LATIN SMALL LETTER Q - 0x8292: 0xFF52, //FULLWIDTH LATIN SMALL LETTER R - 0x8293: 0xFF53, //FULLWIDTH LATIN SMALL LETTER S - 0x8294: 0xFF54, //FULLWIDTH LATIN SMALL LETTER T - 0x8295: 0xFF55, //FULLWIDTH LATIN SMALL LETTER U - 0x8296: 0xFF56, //FULLWIDTH LATIN SMALL LETTER V - 0x8297: 0xFF57, //FULLWIDTH LATIN SMALL LETTER W - 0x8298: 0xFF58, //FULLWIDTH LATIN SMALL LETTER X - 0x8299: 0xFF59, //FULLWIDTH LATIN SMALL LETTER Y - 0x829A: 0xFF5A, //FULLWIDTH LATIN SMALL LETTER Z - 0x829F: 0x3041, //HIRAGANA LETTER SMALL A - 0x82A0: 0x3042, //HIRAGANA LETTER A - 0x82A1: 0x3043, //HIRAGANA LETTER SMALL I - 0x82A2: 0x3044, //HIRAGANA LETTER I - 0x82A3: 0x3045, //HIRAGANA LETTER SMALL U - 0x82A4: 0x3046, //HIRAGANA LETTER U - 0x82A5: 0x3047, //HIRAGANA LETTER SMALL E - 0x82A6: 0x3048, //HIRAGANA LETTER E - 0x82A7: 0x3049, //HIRAGANA LETTER SMALL O - 0x82A8: 0x304A, //HIRAGANA LETTER O - 0x82A9: 0x304B, //HIRAGANA LETTER KA - 0x82AA: 0x304C, //HIRAGANA LETTER GA - 0x82AB: 0x304D, //HIRAGANA LETTER KI - 0x82AC: 0x304E, //HIRAGANA LETTER GI - 0x82AD: 0x304F, //HIRAGANA LETTER KU - 0x82AE: 0x3050, //HIRAGANA LETTER GU - 0x82AF: 0x3051, //HIRAGANA LETTER KE - 0x82B0: 0x3052, //HIRAGANA LETTER GE - 0x82B1: 0x3053, //HIRAGANA LETTER KO - 0x82B2: 0x3054, //HIRAGANA LETTER GO - 0x82B3: 0x3055, //HIRAGANA LETTER SA - 0x82B4: 0x3056, //HIRAGANA LETTER ZA - 0x82B5: 0x3057, //HIRAGANA LETTER SI - 0x82B6: 0x3058, //HIRAGANA LETTER ZI - 0x82B7: 0x3059, //HIRAGANA LETTER SU - 0x82B8: 0x305A, //HIRAGANA LETTER ZU - 0x82B9: 0x305B, //HIRAGANA LETTER SE - 0x82BA: 0x305C, //HIRAGANA LETTER ZE - 0x82BB: 0x305D, //HIRAGANA LETTER SO - 0x82BC: 0x305E, //HIRAGANA LETTER ZO - 0x82BD: 0x305F, //HIRAGANA LETTER TA - 0x82BE: 0x3060, //HIRAGANA LETTER DA - 0x82BF: 0x3061, //HIRAGANA LETTER TI - 0x82C0: 0x3062, //HIRAGANA LETTER DI - 0x82C1: 0x3063, //HIRAGANA LETTER SMALL TU - 0x82C2: 0x3064, //HIRAGANA LETTER TU - 0x82C3: 0x3065, //HIRAGANA LETTER DU - 0x82C4: 0x3066, //HIRAGANA LETTER TE - 0x82C5: 0x3067, //HIRAGANA LETTER DE - 0x82C6: 0x3068, //HIRAGANA LETTER TO - 0x82C7: 0x3069, //HIRAGANA LETTER DO - 0x82C8: 0x306A, //HIRAGANA LETTER NA - 0x82C9: 0x306B, //HIRAGANA LETTER NI - 0x82CA: 0x306C, //HIRAGANA LETTER NU - 0x82CB: 0x306D, //HIRAGANA LETTER NE - 0x82CC: 0x306E, //HIRAGANA LETTER NO - 0x82CD: 0x306F, //HIRAGANA LETTER HA - 0x82CE: 0x3070, //HIRAGANA LETTER BA - 0x82CF: 0x3071, //HIRAGANA LETTER PA - 0x82D0: 0x3072, //HIRAGANA LETTER HI - 0x82D1: 0x3073, //HIRAGANA LETTER BI - 0x82D2: 0x3074, //HIRAGANA LETTER PI - 0x82D3: 0x3075, //HIRAGANA LETTER HU - 0x82D4: 0x3076, //HIRAGANA LETTER BU - 0x82D5: 0x3077, //HIRAGANA LETTER PU - 0x82D6: 0x3078, //HIRAGANA LETTER HE - 0x82D7: 0x3079, //HIRAGANA LETTER BE - 0x82D8: 0x307A, //HIRAGANA LETTER PE - 0x82D9: 0x307B, //HIRAGANA LETTER HO - 0x82DA: 0x307C, //HIRAGANA LETTER BO - 0x82DB: 0x307D, //HIRAGANA LETTER PO - 0x82DC: 0x307E, //HIRAGANA LETTER MA - 0x82DD: 0x307F, //HIRAGANA LETTER MI - 0x82DE: 0x3080, //HIRAGANA LETTER MU - 0x82DF: 0x3081, //HIRAGANA LETTER ME - 0x82E0: 0x3082, //HIRAGANA LETTER MO - 0x82E1: 0x3083, //HIRAGANA LETTER SMALL YA - 0x82E2: 0x3084, //HIRAGANA LETTER YA - 0x82E3: 0x3085, //HIRAGANA LETTER SMALL YU - 0x82E4: 0x3086, //HIRAGANA LETTER YU - 0x82E5: 0x3087, //HIRAGANA LETTER SMALL YO - 0x82E6: 0x3088, //HIRAGANA LETTER YO - 0x82E7: 0x3089, //HIRAGANA LETTER RA - 0x82E8: 0x308A, //HIRAGANA LETTER RI - 0x82E9: 0x308B, //HIRAGANA LETTER RU - 0x82EA: 0x308C, //HIRAGANA LETTER RE - 0x82EB: 0x308D, //HIRAGANA LETTER RO - 0x82EC: 0x308E, //HIRAGANA LETTER SMALL WA - 0x82ED: 0x308F, //HIRAGANA LETTER WA - 0x82EE: 0x3090, //HIRAGANA LETTER WI - 0x82EF: 0x3091, //HIRAGANA LETTER WE - 0x82F0: 0x3092, //HIRAGANA LETTER WO - 0x82F1: 0x3093, //HIRAGANA LETTER N - 0x8340: 0x30A1, //KATAKANA LETTER SMALL A - 0x8341: 0x30A2, //KATAKANA LETTER A - 0x8342: 0x30A3, //KATAKANA LETTER SMALL I - 0x8343: 0x30A4, //KATAKANA LETTER I - 0x8344: 0x30A5, //KATAKANA LETTER SMALL U - 0x8345: 0x30A6, //KATAKANA LETTER U - 0x8346: 0x30A7, //KATAKANA LETTER SMALL E - 0x8347: 0x30A8, //KATAKANA LETTER E - 0x8348: 0x30A9, //KATAKANA LETTER SMALL O - 0x8349: 0x30AA, //KATAKANA LETTER O - 0x834A: 0x30AB, //KATAKANA LETTER KA - 0x834B: 0x30AC, //KATAKANA LETTER GA - 0x834C: 0x30AD, //KATAKANA LETTER KI - 0x834D: 0x30AE, //KATAKANA LETTER GI - 0x834E: 0x30AF, //KATAKANA LETTER KU - 0x834F: 0x30B0, //KATAKANA LETTER GU - 0x8350: 0x30B1, //KATAKANA LETTER KE - 0x8351: 0x30B2, //KATAKANA LETTER GE - 0x8352: 0x30B3, //KATAKANA LETTER KO - 0x8353: 0x30B4, //KATAKANA LETTER GO - 0x8354: 0x30B5, //KATAKANA LETTER SA - 0x8355: 0x30B6, //KATAKANA LETTER ZA - 0x8356: 0x30B7, //KATAKANA LETTER SI - 0x8357: 0x30B8, //KATAKANA LETTER ZI - 0x8358: 0x30B9, //KATAKANA LETTER SU - 0x8359: 0x30BA, //KATAKANA LETTER ZU - 0x835A: 0x30BB, //KATAKANA LETTER SE - 0x835B: 0x30BC, //KATAKANA LETTER ZE - 0x835C: 0x30BD, //KATAKANA LETTER SO - 0x835D: 0x30BE, //KATAKANA LETTER ZO - 0x835E: 0x30BF, //KATAKANA LETTER TA - 0x835F: 0x30C0, //KATAKANA LETTER DA - 0x8360: 0x30C1, //KATAKANA LETTER TI - 0x8361: 0x30C2, //KATAKANA LETTER DI - 0x8362: 0x30C3, //KATAKANA LETTER SMALL TU - 0x8363: 0x30C4, //KATAKANA LETTER TU - 0x8364: 0x30C5, //KATAKANA LETTER DU - 0x8365: 0x30C6, //KATAKANA LETTER TE - 0x8366: 0x30C7, //KATAKANA LETTER DE - 0x8367: 0x30C8, //KATAKANA LETTER TO - 0x8368: 0x30C9, //KATAKANA LETTER DO - 0x8369: 0x30CA, //KATAKANA LETTER NA - 0x836A: 0x30CB, //KATAKANA LETTER NI - 0x836B: 0x30CC, //KATAKANA LETTER NU - 0x836C: 0x30CD, //KATAKANA LETTER NE - 0x836D: 0x30CE, //KATAKANA LETTER NO - 0x836E: 0x30CF, //KATAKANA LETTER HA - 0x836F: 0x30D0, //KATAKANA LETTER BA - 0x8370: 0x30D1, //KATAKANA LETTER PA - 0x8371: 0x30D2, //KATAKANA LETTER HI - 0x8372: 0x30D3, //KATAKANA LETTER BI - 0x8373: 0x30D4, //KATAKANA LETTER PI - 0x8374: 0x30D5, //KATAKANA LETTER HU - 0x8375: 0x30D6, //KATAKANA LETTER BU - 0x8376: 0x30D7, //KATAKANA LETTER PU - 0x8377: 0x30D8, //KATAKANA LETTER HE - 0x8378: 0x30D9, //KATAKANA LETTER BE - 0x8379: 0x30DA, //KATAKANA LETTER PE - 0x837A: 0x30DB, //KATAKANA LETTER HO - 0x837B: 0x30DC, //KATAKANA LETTER BO - 0x837C: 0x30DD, //KATAKANA LETTER PO - 0x837D: 0x30DE, //KATAKANA LETTER MA - 0x837E: 0x30DF, //KATAKANA LETTER MI - 0x8380: 0x30E0, //KATAKANA LETTER MU - 0x8381: 0x30E1, //KATAKANA LETTER ME - 0x8382: 0x30E2, //KATAKANA LETTER MO - 0x8383: 0x30E3, //KATAKANA LETTER SMALL YA - 0x8384: 0x30E4, //KATAKANA LETTER YA - 0x8385: 0x30E5, //KATAKANA LETTER SMALL YU - 0x8386: 0x30E6, //KATAKANA LETTER YU - 0x8387: 0x30E7, //KATAKANA LETTER SMALL YO - 0x8388: 0x30E8, //KATAKANA LETTER YO - 0x8389: 0x30E9, //KATAKANA LETTER RA - 0x838A: 0x30EA, //KATAKANA LETTER RI - 0x838B: 0x30EB, //KATAKANA LETTER RU - 0x838C: 0x30EC, //KATAKANA LETTER RE - 0x838D: 0x30ED, //KATAKANA LETTER RO - 0x838E: 0x30EE, //KATAKANA LETTER SMALL WA - 0x838F: 0x30EF, //KATAKANA LETTER WA - 0x8390: 0x30F0, //KATAKANA LETTER WI - 0x8391: 0x30F1, //KATAKANA LETTER WE - 0x8392: 0x30F2, //KATAKANA LETTER WO - 0x8393: 0x30F3, //KATAKANA LETTER N - 0x8394: 0x30F4, //KATAKANA LETTER VU - 0x8395: 0x30F5, //KATAKANA LETTER SMALL KA - 0x8396: 0x30F6, //KATAKANA LETTER SMALL KE - 0x839F: 0x0391, //GREEK CAPITAL LETTER ALPHA - 0x83A0: 0x0392, //GREEK CAPITAL LETTER BETA - 0x83A1: 0x0393, //GREEK CAPITAL LETTER GAMMA - 0x83A2: 0x0394, //GREEK CAPITAL LETTER DELTA - 0x83A3: 0x0395, //GREEK CAPITAL LETTER EPSILON - 0x83A4: 0x0396, //GREEK CAPITAL LETTER ZETA - 0x83A5: 0x0397, //GREEK CAPITAL LETTER ETA - 0x83A6: 0x0398, //GREEK CAPITAL LETTER THETA - 0x83A7: 0x0399, //GREEK CAPITAL LETTER IOTA - 0x83A8: 0x039A, //GREEK CAPITAL LETTER KAPPA - 0x83A9: 0x039B, //GREEK CAPITAL LETTER LAMDA - 0x83AA: 0x039C, //GREEK CAPITAL LETTER MU - 0x83AB: 0x039D, //GREEK CAPITAL LETTER NU - 0x83AC: 0x039E, //GREEK CAPITAL LETTER XI - 0x83AD: 0x039F, //GREEK CAPITAL LETTER OMICRON - 0x83AE: 0x03A0, //GREEK CAPITAL LETTER PI - 0x83AF: 0x03A1, //GREEK CAPITAL LETTER RHO - 0x83B0: 0x03A3, //GREEK CAPITAL LETTER SIGMA - 0x83B1: 0x03A4, //GREEK CAPITAL LETTER TAU - 0x83B2: 0x03A5, //GREEK CAPITAL LETTER UPSILON - 0x83B3: 0x03A6, //GREEK CAPITAL LETTER PHI - 0x83B4: 0x03A7, //GREEK CAPITAL LETTER CHI - 0x83B5: 0x03A8, //GREEK CAPITAL LETTER PSI - 0x83B6: 0x03A9, //GREEK CAPITAL LETTER OMEGA - 0x83BF: 0x03B1, //GREEK SMALL LETTER ALPHA - 0x83C0: 0x03B2, //GREEK SMALL LETTER BETA - 0x83C1: 0x03B3, //GREEK SMALL LETTER GAMMA - 0x83C2: 0x03B4, //GREEK SMALL LETTER DELTA - 0x83C3: 0x03B5, //GREEK SMALL LETTER EPSILON - 0x83C4: 0x03B6, //GREEK SMALL LETTER ZETA - 0x83C5: 0x03B7, //GREEK SMALL LETTER ETA - 0x83C6: 0x03B8, //GREEK SMALL LETTER THETA - 0x83C7: 0x03B9, //GREEK SMALL LETTER IOTA - 0x83C8: 0x03BA, //GREEK SMALL LETTER KAPPA - 0x83C9: 0x03BB, //GREEK SMALL LETTER LAMDA - 0x83CA: 0x03BC, //GREEK SMALL LETTER MU - 0x83CB: 0x03BD, //GREEK SMALL LETTER NU - 0x83CC: 0x03BE, //GREEK SMALL LETTER XI - 0x83CD: 0x03BF, //GREEK SMALL LETTER OMICRON - 0x83CE: 0x03C0, //GREEK SMALL LETTER PI - 0x83CF: 0x03C1, //GREEK SMALL LETTER RHO - 0x83D0: 0x03C3, //GREEK SMALL LETTER SIGMA - 0x83D1: 0x03C4, //GREEK SMALL LETTER TAU - 0x83D2: 0x03C5, //GREEK SMALL LETTER UPSILON - 0x83D3: 0x03C6, //GREEK SMALL LETTER PHI - 0x83D4: 0x03C7, //GREEK SMALL LETTER CHI - 0x83D5: 0x03C8, //GREEK SMALL LETTER PSI - 0x83D6: 0x03C9, //GREEK SMALL LETTER OMEGA - 0x8440: 0x0410, //CYRILLIC CAPITAL LETTER A - 0x8441: 0x0411, //CYRILLIC CAPITAL LETTER BE - 0x8442: 0x0412, //CYRILLIC CAPITAL LETTER VE - 0x8443: 0x0413, //CYRILLIC CAPITAL LETTER GHE - 0x8444: 0x0414, //CYRILLIC CAPITAL LETTER DE - 0x8445: 0x0415, //CYRILLIC CAPITAL LETTER IE - 0x8446: 0x0401, //CYRILLIC CAPITAL LETTER IO - 0x8447: 0x0416, //CYRILLIC CAPITAL LETTER ZHE - 0x8448: 0x0417, //CYRILLIC CAPITAL LETTER ZE - 0x8449: 0x0418, //CYRILLIC CAPITAL LETTER I - 0x844A: 0x0419, //CYRILLIC CAPITAL LETTER SHORT I - 0x844B: 0x041A, //CYRILLIC CAPITAL LETTER KA - 0x844C: 0x041B, //CYRILLIC CAPITAL LETTER EL - 0x844D: 0x041C, //CYRILLIC CAPITAL LETTER EM - 0x844E: 0x041D, //CYRILLIC CAPITAL LETTER EN - 0x844F: 0x041E, //CYRILLIC CAPITAL LETTER O - 0x8450: 0x041F, //CYRILLIC CAPITAL LETTER PE - 0x8451: 0x0420, //CYRILLIC CAPITAL LETTER ER - 0x8452: 0x0421, //CYRILLIC CAPITAL LETTER ES - 0x8453: 0x0422, //CYRILLIC CAPITAL LETTER TE - 0x8454: 0x0423, //CYRILLIC CAPITAL LETTER U - 0x8455: 0x0424, //CYRILLIC CAPITAL LETTER EF - 0x8456: 0x0425, //CYRILLIC CAPITAL LETTER HA - 0x8457: 0x0426, //CYRILLIC CAPITAL LETTER TSE - 0x8458: 0x0427, //CYRILLIC CAPITAL LETTER CHE - 0x8459: 0x0428, //CYRILLIC CAPITAL LETTER SHA - 0x845A: 0x0429, //CYRILLIC CAPITAL LETTER SHCHA - 0x845B: 0x042A, //CYRILLIC CAPITAL LETTER HARD SIGN - 0x845C: 0x042B, //CYRILLIC CAPITAL LETTER YERU - 0x845D: 0x042C, //CYRILLIC CAPITAL LETTER SOFT SIGN - 0x845E: 0x042D, //CYRILLIC CAPITAL LETTER E - 0x845F: 0x042E, //CYRILLIC CAPITAL LETTER YU - 0x8460: 0x042F, //CYRILLIC CAPITAL LETTER YA - 0x8470: 0x0430, //CYRILLIC SMALL LETTER A - 0x8471: 0x0431, //CYRILLIC SMALL LETTER BE - 0x8472: 0x0432, //CYRILLIC SMALL LETTER VE - 0x8473: 0x0433, //CYRILLIC SMALL LETTER GHE - 0x8474: 0x0434, //CYRILLIC SMALL LETTER DE - 0x8475: 0x0435, //CYRILLIC SMALL LETTER IE - 0x8476: 0x0451, //CYRILLIC SMALL LETTER IO - 0x8477: 0x0436, //CYRILLIC SMALL LETTER ZHE - 0x8478: 0x0437, //CYRILLIC SMALL LETTER ZE - 0x8479: 0x0438, //CYRILLIC SMALL LETTER I - 0x847A: 0x0439, //CYRILLIC SMALL LETTER SHORT I - 0x847B: 0x043A, //CYRILLIC SMALL LETTER KA - 0x847C: 0x043B, //CYRILLIC SMALL LETTER EL - 0x847D: 0x043C, //CYRILLIC SMALL LETTER EM - 0x847E: 0x043D, //CYRILLIC SMALL LETTER EN - 0x8480: 0x043E, //CYRILLIC SMALL LETTER O - 0x8481: 0x043F, //CYRILLIC SMALL LETTER PE - 0x8482: 0x0440, //CYRILLIC SMALL LETTER ER - 0x8483: 0x0441, //CYRILLIC SMALL LETTER ES - 0x8484: 0x0442, //CYRILLIC SMALL LETTER TE - 0x8485: 0x0443, //CYRILLIC SMALL LETTER U - 0x8486: 0x0444, //CYRILLIC SMALL LETTER EF - 0x8487: 0x0445, //CYRILLIC SMALL LETTER HA - 0x8488: 0x0446, //CYRILLIC SMALL LETTER TSE - 0x8489: 0x0447, //CYRILLIC SMALL LETTER CHE - 0x848A: 0x0448, //CYRILLIC SMALL LETTER SHA - 0x848B: 0x0449, //CYRILLIC SMALL LETTER SHCHA - 0x848C: 0x044A, //CYRILLIC SMALL LETTER HARD SIGN - 0x848D: 0x044B, //CYRILLIC SMALL LETTER YERU - 0x848E: 0x044C, //CYRILLIC SMALL LETTER SOFT SIGN - 0x848F: 0x044D, //CYRILLIC SMALL LETTER E - 0x8490: 0x044E, //CYRILLIC SMALL LETTER YU - 0x8491: 0x044F, //CYRILLIC SMALL LETTER YA - 0x849F: 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0x84A0: 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0x84A1: 0x250C, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0x84A2: 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0x84A3: 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0x84A4: 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0x84A5: 0x251C, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0x84A6: 0x252C, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0x84A7: 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0x84A8: 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0x84A9: 0x253C, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0x84AA: 0x2501, //BOX DRAWINGS HEAVY HORIZONTAL - 0x84AB: 0x2503, //BOX DRAWINGS HEAVY VERTICAL - 0x84AC: 0x250F, //BOX DRAWINGS HEAVY DOWN AND RIGHT - 0x84AD: 0x2513, //BOX DRAWINGS HEAVY DOWN AND LEFT - 0x84AE: 0x251B, //BOX DRAWINGS HEAVY UP AND LEFT - 0x84AF: 0x2517, //BOX DRAWINGS HEAVY UP AND RIGHT - 0x84B0: 0x2523, //BOX DRAWINGS HEAVY VERTICAL AND RIGHT - 0x84B1: 0x2533, //BOX DRAWINGS HEAVY DOWN AND HORIZONTAL - 0x84B2: 0x252B, //BOX DRAWINGS HEAVY VERTICAL AND LEFT - 0x84B3: 0x253B, //BOX DRAWINGS HEAVY UP AND HORIZONTAL - 0x84B4: 0x254B, //BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - 0x84B5: 0x2520, //BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT - 0x84B6: 0x252F, //BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY - 0x84B7: 0x2528, //BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT - 0x84B8: 0x2537, //BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY - 0x84B9: 0x253F, //BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY - 0x84BA: 0x251D, //BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY - 0x84BB: 0x2530, //BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT - 0x84BC: 0x2525, //BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY - 0x84BD: 0x2538, //BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT - 0x84BE: 0x2542, //BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT - 0x8740: 0x2460, //CIRCLED DIGIT ONE - 0x8741: 0x2461, //CIRCLED DIGIT TWO - 0x8742: 0x2462, //CIRCLED DIGIT THREE - 0x8743: 0x2463, //CIRCLED DIGIT FOUR - 0x8744: 0x2464, //CIRCLED DIGIT FIVE - 0x8745: 0x2465, //CIRCLED DIGIT SIX - 0x8746: 0x2466, //CIRCLED DIGIT SEVEN - 0x8747: 0x2467, //CIRCLED DIGIT EIGHT - 0x8748: 0x2468, //CIRCLED DIGIT NINE - 0x8749: 0x2469, //CIRCLED NUMBER TEN - 0x874A: 0x246A, //CIRCLED NUMBER ELEVEN - 0x874B: 0x246B, //CIRCLED NUMBER TWELVE - 0x874C: 0x246C, //CIRCLED NUMBER THIRTEEN - 0x874D: 0x246D, //CIRCLED NUMBER FOURTEEN - 0x874E: 0x246E, //CIRCLED NUMBER FIFTEEN - 0x874F: 0x246F, //CIRCLED NUMBER SIXTEEN - 0x8750: 0x2470, //CIRCLED NUMBER SEVENTEEN - 0x8751: 0x2471, //CIRCLED NUMBER EIGHTEEN - 0x8752: 0x2472, //CIRCLED NUMBER NINETEEN - 0x8753: 0x2473, //CIRCLED NUMBER TWENTY - 0x8754: 0x2160, //ROMAN NUMERAL ONE - 0x8755: 0x2161, //ROMAN NUMERAL TWO - 0x8756: 0x2162, //ROMAN NUMERAL THREE - 0x8757: 0x2163, //ROMAN NUMERAL FOUR - 0x8758: 0x2164, //ROMAN NUMERAL FIVE - 0x8759: 0x2165, //ROMAN NUMERAL SIX - 0x875A: 0x2166, //ROMAN NUMERAL SEVEN - 0x875B: 0x2167, //ROMAN NUMERAL EIGHT - 0x875C: 0x2168, //ROMAN NUMERAL NINE - 0x875D: 0x2169, //ROMAN NUMERAL TEN - 0x875F: 0x3349, //SQUARE MIRI - 0x8760: 0x3314, //SQUARE KIRO - 0x8761: 0x3322, //SQUARE SENTI - 0x8762: 0x334D, //SQUARE MEETORU - 0x8763: 0x3318, //SQUARE GURAMU - 0x8764: 0x3327, //SQUARE TON - 0x8765: 0x3303, //SQUARE AARU - 0x8766: 0x3336, //SQUARE HEKUTAARU - 0x8767: 0x3351, //SQUARE RITTORU - 0x8768: 0x3357, //SQUARE WATTO - 0x8769: 0x330D, //SQUARE KARORII - 0x876A: 0x3326, //SQUARE DORU - 0x876B: 0x3323, //SQUARE SENTO - 0x876C: 0x332B, //SQUARE PAASENTO - 0x876D: 0x334A, //SQUARE MIRIBAARU - 0x876E: 0x333B, //SQUARE PEEZI - 0x876F: 0x339C, //SQUARE MM - 0x8770: 0x339D, //SQUARE CM - 0x8771: 0x339E, //SQUARE KM - 0x8772: 0x338E, //SQUARE MG - 0x8773: 0x338F, //SQUARE KG - 0x8774: 0x33C4, //SQUARE CC - 0x8775: 0x33A1, //SQUARE M SQUARED - 0x877E: 0x337B, //SQUARE ERA NAME HEISEI - 0x8780: 0x301D, //REVERSED DOUBLE PRIME QUOTATION MARK - 0x8781: 0x301F, //LOW DOUBLE PRIME QUOTATION MARK - 0x8782: 0x2116, //NUMERO SIGN - 0x8783: 0x33CD, //SQUARE KK - 0x8784: 0x2121, //TELEPHONE SIGN - 0x8785: 0x32A4, //CIRCLED IDEOGRAPH HIGH - 0x8786: 0x32A5, //CIRCLED IDEOGRAPH CENTRE - 0x8787: 0x32A6, //CIRCLED IDEOGRAPH LOW - 0x8788: 0x32A7, //CIRCLED IDEOGRAPH LEFT - 0x8789: 0x32A8, //CIRCLED IDEOGRAPH RIGHT - 0x878A: 0x3231, //PARENTHESIZED IDEOGRAPH STOCK - 0x878B: 0x3232, //PARENTHESIZED IDEOGRAPH HAVE - 0x878C: 0x3239, //PARENTHESIZED IDEOGRAPH REPRESENT - 0x878D: 0x337E, //SQUARE ERA NAME MEIZI - 0x878E: 0x337D, //SQUARE ERA NAME TAISYOU - 0x878F: 0x337C, //SQUARE ERA NAME SYOUWA - 0x8790: 0x2252, //APPROXIMATELY EQUAL TO OR THE IMAGE OF - 0x8791: 0x2261, //IDENTICAL TO - 0x8792: 0x222B, //INTEGRAL - 0x8793: 0x222E, //CONTOUR INTEGRAL - 0x8794: 0x2211, //N-ARY SUMMATION - 0x8795: 0x221A, //SQUARE ROOT - 0x8796: 0x22A5, //UP TACK - 0x8797: 0x2220, //ANGLE - 0x8798: 0x221F, //RIGHT ANGLE - 0x8799: 0x22BF, //RIGHT TRIANGLE - 0x879A: 0x2235, //BECAUSE - 0x879B: 0x2229, //INTERSECTION - 0x879C: 0x222A, //UNION - 0x889F: 0x4E9C, //CJK UNIFIED IDEOGRAPH - 0x88A0: 0x5516, //CJK UNIFIED IDEOGRAPH - 0x88A1: 0x5A03, //CJK UNIFIED IDEOGRAPH - 0x88A2: 0x963F, //CJK UNIFIED IDEOGRAPH - 0x88A3: 0x54C0, //CJK UNIFIED IDEOGRAPH - 0x88A4: 0x611B, //CJK UNIFIED IDEOGRAPH - 0x88A5: 0x6328, //CJK UNIFIED IDEOGRAPH - 0x88A6: 0x59F6, //CJK UNIFIED IDEOGRAPH - 0x88A7: 0x9022, //CJK UNIFIED IDEOGRAPH - 0x88A8: 0x8475, //CJK UNIFIED IDEOGRAPH - 0x88A9: 0x831C, //CJK UNIFIED IDEOGRAPH - 0x88AA: 0x7A50, //CJK UNIFIED IDEOGRAPH - 0x88AB: 0x60AA, //CJK UNIFIED IDEOGRAPH - 0x88AC: 0x63E1, //CJK UNIFIED IDEOGRAPH - 0x88AD: 0x6E25, //CJK UNIFIED IDEOGRAPH - 0x88AE: 0x65ED, //CJK UNIFIED IDEOGRAPH - 0x88AF: 0x8466, //CJK UNIFIED IDEOGRAPH - 0x88B0: 0x82A6, //CJK UNIFIED IDEOGRAPH - 0x88B1: 0x9BF5, //CJK UNIFIED IDEOGRAPH - 0x88B2: 0x6893, //CJK UNIFIED IDEOGRAPH - 0x88B3: 0x5727, //CJK UNIFIED IDEOGRAPH - 0x88B4: 0x65A1, //CJK UNIFIED IDEOGRAPH - 0x88B5: 0x6271, //CJK UNIFIED IDEOGRAPH - 0x88B6: 0x5B9B, //CJK UNIFIED IDEOGRAPH - 0x88B7: 0x59D0, //CJK UNIFIED IDEOGRAPH - 0x88B8: 0x867B, //CJK UNIFIED IDEOGRAPH - 0x88B9: 0x98F4, //CJK UNIFIED IDEOGRAPH - 0x88BA: 0x7D62, //CJK UNIFIED IDEOGRAPH - 0x88BB: 0x7DBE, //CJK UNIFIED IDEOGRAPH - 0x88BC: 0x9B8E, //CJK UNIFIED IDEOGRAPH - 0x88BD: 0x6216, //CJK UNIFIED IDEOGRAPH - 0x88BE: 0x7C9F, //CJK UNIFIED IDEOGRAPH - 0x88BF: 0x88B7, //CJK UNIFIED IDEOGRAPH - 0x88C0: 0x5B89, //CJK UNIFIED IDEOGRAPH - 0x88C1: 0x5EB5, //CJK UNIFIED IDEOGRAPH - 0x88C2: 0x6309, //CJK UNIFIED IDEOGRAPH - 0x88C3: 0x6697, //CJK UNIFIED IDEOGRAPH - 0x88C4: 0x6848, //CJK UNIFIED IDEOGRAPH - 0x88C5: 0x95C7, //CJK UNIFIED IDEOGRAPH - 0x88C6: 0x978D, //CJK UNIFIED IDEOGRAPH - 0x88C7: 0x674F, //CJK UNIFIED IDEOGRAPH - 0x88C8: 0x4EE5, //CJK UNIFIED IDEOGRAPH - 0x88C9: 0x4F0A, //CJK UNIFIED IDEOGRAPH - 0x88CA: 0x4F4D, //CJK UNIFIED IDEOGRAPH - 0x88CB: 0x4F9D, //CJK UNIFIED IDEOGRAPH - 0x88CC: 0x5049, //CJK UNIFIED IDEOGRAPH - 0x88CD: 0x56F2, //CJK UNIFIED IDEOGRAPH - 0x88CE: 0x5937, //CJK UNIFIED IDEOGRAPH - 0x88CF: 0x59D4, //CJK UNIFIED IDEOGRAPH - 0x88D0: 0x5A01, //CJK UNIFIED IDEOGRAPH - 0x88D1: 0x5C09, //CJK UNIFIED IDEOGRAPH - 0x88D2: 0x60DF, //CJK UNIFIED IDEOGRAPH - 0x88D3: 0x610F, //CJK UNIFIED IDEOGRAPH - 0x88D4: 0x6170, //CJK UNIFIED IDEOGRAPH - 0x88D5: 0x6613, //CJK UNIFIED IDEOGRAPH - 0x88D6: 0x6905, //CJK UNIFIED IDEOGRAPH - 0x88D7: 0x70BA, //CJK UNIFIED IDEOGRAPH - 0x88D8: 0x754F, //CJK UNIFIED IDEOGRAPH - 0x88D9: 0x7570, //CJK UNIFIED IDEOGRAPH - 0x88DA: 0x79FB, //CJK UNIFIED IDEOGRAPH - 0x88DB: 0x7DAD, //CJK UNIFIED IDEOGRAPH - 0x88DC: 0x7DEF, //CJK UNIFIED IDEOGRAPH - 0x88DD: 0x80C3, //CJK UNIFIED IDEOGRAPH - 0x88DE: 0x840E, //CJK UNIFIED IDEOGRAPH - 0x88DF: 0x8863, //CJK UNIFIED IDEOGRAPH - 0x88E0: 0x8B02, //CJK UNIFIED IDEOGRAPH - 0x88E1: 0x9055, //CJK UNIFIED IDEOGRAPH - 0x88E2: 0x907A, //CJK UNIFIED IDEOGRAPH - 0x88E3: 0x533B, //CJK UNIFIED IDEOGRAPH - 0x88E4: 0x4E95, //CJK UNIFIED IDEOGRAPH - 0x88E5: 0x4EA5, //CJK UNIFIED IDEOGRAPH - 0x88E6: 0x57DF, //CJK UNIFIED IDEOGRAPH - 0x88E7: 0x80B2, //CJK UNIFIED IDEOGRAPH - 0x88E8: 0x90C1, //CJK UNIFIED IDEOGRAPH - 0x88E9: 0x78EF, //CJK UNIFIED IDEOGRAPH - 0x88EA: 0x4E00, //CJK UNIFIED IDEOGRAPH - 0x88EB: 0x58F1, //CJK UNIFIED IDEOGRAPH - 0x88EC: 0x6EA2, //CJK UNIFIED IDEOGRAPH - 0x88ED: 0x9038, //CJK UNIFIED IDEOGRAPH - 0x88EE: 0x7A32, //CJK UNIFIED IDEOGRAPH - 0x88EF: 0x8328, //CJK UNIFIED IDEOGRAPH - 0x88F0: 0x828B, //CJK UNIFIED IDEOGRAPH - 0x88F1: 0x9C2F, //CJK UNIFIED IDEOGRAPH - 0x88F2: 0x5141, //CJK UNIFIED IDEOGRAPH - 0x88F3: 0x5370, //CJK UNIFIED IDEOGRAPH - 0x88F4: 0x54BD, //CJK UNIFIED IDEOGRAPH - 0x88F5: 0x54E1, //CJK UNIFIED IDEOGRAPH - 0x88F6: 0x56E0, //CJK UNIFIED IDEOGRAPH - 0x88F7: 0x59FB, //CJK UNIFIED IDEOGRAPH - 0x88F8: 0x5F15, //CJK UNIFIED IDEOGRAPH - 0x88F9: 0x98F2, //CJK UNIFIED IDEOGRAPH - 0x88FA: 0x6DEB, //CJK UNIFIED IDEOGRAPH - 0x88FB: 0x80E4, //CJK UNIFIED IDEOGRAPH - 0x88FC: 0x852D, //CJK UNIFIED IDEOGRAPH - 0x8940: 0x9662, //CJK UNIFIED IDEOGRAPH - 0x8941: 0x9670, //CJK UNIFIED IDEOGRAPH - 0x8942: 0x96A0, //CJK UNIFIED IDEOGRAPH - 0x8943: 0x97FB, //CJK UNIFIED IDEOGRAPH - 0x8944: 0x540B, //CJK UNIFIED IDEOGRAPH - 0x8945: 0x53F3, //CJK UNIFIED IDEOGRAPH - 0x8946: 0x5B87, //CJK UNIFIED IDEOGRAPH - 0x8947: 0x70CF, //CJK UNIFIED IDEOGRAPH - 0x8948: 0x7FBD, //CJK UNIFIED IDEOGRAPH - 0x8949: 0x8FC2, //CJK UNIFIED IDEOGRAPH - 0x894A: 0x96E8, //CJK UNIFIED IDEOGRAPH - 0x894B: 0x536F, //CJK UNIFIED IDEOGRAPH - 0x894C: 0x9D5C, //CJK UNIFIED IDEOGRAPH - 0x894D: 0x7ABA, //CJK UNIFIED IDEOGRAPH - 0x894E: 0x4E11, //CJK UNIFIED IDEOGRAPH - 0x894F: 0x7893, //CJK UNIFIED IDEOGRAPH - 0x8950: 0x81FC, //CJK UNIFIED IDEOGRAPH - 0x8951: 0x6E26, //CJK UNIFIED IDEOGRAPH - 0x8952: 0x5618, //CJK UNIFIED IDEOGRAPH - 0x8953: 0x5504, //CJK UNIFIED IDEOGRAPH - 0x8954: 0x6B1D, //CJK UNIFIED IDEOGRAPH - 0x8955: 0x851A, //CJK UNIFIED IDEOGRAPH - 0x8956: 0x9C3B, //CJK UNIFIED IDEOGRAPH - 0x8957: 0x59E5, //CJK UNIFIED IDEOGRAPH - 0x8958: 0x53A9, //CJK UNIFIED IDEOGRAPH - 0x8959: 0x6D66, //CJK UNIFIED IDEOGRAPH - 0x895A: 0x74DC, //CJK UNIFIED IDEOGRAPH - 0x895B: 0x958F, //CJK UNIFIED IDEOGRAPH - 0x895C: 0x5642, //CJK UNIFIED IDEOGRAPH - 0x895D: 0x4E91, //CJK UNIFIED IDEOGRAPH - 0x895E: 0x904B, //CJK UNIFIED IDEOGRAPH - 0x895F: 0x96F2, //CJK UNIFIED IDEOGRAPH - 0x8960: 0x834F, //CJK UNIFIED IDEOGRAPH - 0x8961: 0x990C, //CJK UNIFIED IDEOGRAPH - 0x8962: 0x53E1, //CJK UNIFIED IDEOGRAPH - 0x8963: 0x55B6, //CJK UNIFIED IDEOGRAPH - 0x8964: 0x5B30, //CJK UNIFIED IDEOGRAPH - 0x8965: 0x5F71, //CJK UNIFIED IDEOGRAPH - 0x8966: 0x6620, //CJK UNIFIED IDEOGRAPH - 0x8967: 0x66F3, //CJK UNIFIED IDEOGRAPH - 0x8968: 0x6804, //CJK UNIFIED IDEOGRAPH - 0x8969: 0x6C38, //CJK UNIFIED IDEOGRAPH - 0x896A: 0x6CF3, //CJK UNIFIED IDEOGRAPH - 0x896B: 0x6D29, //CJK UNIFIED IDEOGRAPH - 0x896C: 0x745B, //CJK UNIFIED IDEOGRAPH - 0x896D: 0x76C8, //CJK UNIFIED IDEOGRAPH - 0x896E: 0x7A4E, //CJK UNIFIED IDEOGRAPH - 0x896F: 0x9834, //CJK UNIFIED IDEOGRAPH - 0x8970: 0x82F1, //CJK UNIFIED IDEOGRAPH - 0x8971: 0x885B, //CJK UNIFIED IDEOGRAPH - 0x8972: 0x8A60, //CJK UNIFIED IDEOGRAPH - 0x8973: 0x92ED, //CJK UNIFIED IDEOGRAPH - 0x8974: 0x6DB2, //CJK UNIFIED IDEOGRAPH - 0x8975: 0x75AB, //CJK UNIFIED IDEOGRAPH - 0x8976: 0x76CA, //CJK UNIFIED IDEOGRAPH - 0x8977: 0x99C5, //CJK UNIFIED IDEOGRAPH - 0x8978: 0x60A6, //CJK UNIFIED IDEOGRAPH - 0x8979: 0x8B01, //CJK UNIFIED IDEOGRAPH - 0x897A: 0x8D8A, //CJK UNIFIED IDEOGRAPH - 0x897B: 0x95B2, //CJK UNIFIED IDEOGRAPH - 0x897C: 0x698E, //CJK UNIFIED IDEOGRAPH - 0x897D: 0x53AD, //CJK UNIFIED IDEOGRAPH - 0x897E: 0x5186, //CJK UNIFIED IDEOGRAPH - 0x8980: 0x5712, //CJK UNIFIED IDEOGRAPH - 0x8981: 0x5830, //CJK UNIFIED IDEOGRAPH - 0x8982: 0x5944, //CJK UNIFIED IDEOGRAPH - 0x8983: 0x5BB4, //CJK UNIFIED IDEOGRAPH - 0x8984: 0x5EF6, //CJK UNIFIED IDEOGRAPH - 0x8985: 0x6028, //CJK UNIFIED IDEOGRAPH - 0x8986: 0x63A9, //CJK UNIFIED IDEOGRAPH - 0x8987: 0x63F4, //CJK UNIFIED IDEOGRAPH - 0x8988: 0x6CBF, //CJK UNIFIED IDEOGRAPH - 0x8989: 0x6F14, //CJK UNIFIED IDEOGRAPH - 0x898A: 0x708E, //CJK UNIFIED IDEOGRAPH - 0x898B: 0x7114, //CJK UNIFIED IDEOGRAPH - 0x898C: 0x7159, //CJK UNIFIED IDEOGRAPH - 0x898D: 0x71D5, //CJK UNIFIED IDEOGRAPH - 0x898E: 0x733F, //CJK UNIFIED IDEOGRAPH - 0x898F: 0x7E01, //CJK UNIFIED IDEOGRAPH - 0x8990: 0x8276, //CJK UNIFIED IDEOGRAPH - 0x8991: 0x82D1, //CJK UNIFIED IDEOGRAPH - 0x8992: 0x8597, //CJK UNIFIED IDEOGRAPH - 0x8993: 0x9060, //CJK UNIFIED IDEOGRAPH - 0x8994: 0x925B, //CJK UNIFIED IDEOGRAPH - 0x8995: 0x9D1B, //CJK UNIFIED IDEOGRAPH - 0x8996: 0x5869, //CJK UNIFIED IDEOGRAPH - 0x8997: 0x65BC, //CJK UNIFIED IDEOGRAPH - 0x8998: 0x6C5A, //CJK UNIFIED IDEOGRAPH - 0x8999: 0x7525, //CJK UNIFIED IDEOGRAPH - 0x899A: 0x51F9, //CJK UNIFIED IDEOGRAPH - 0x899B: 0x592E, //CJK UNIFIED IDEOGRAPH - 0x899C: 0x5965, //CJK UNIFIED IDEOGRAPH - 0x899D: 0x5F80, //CJK UNIFIED IDEOGRAPH - 0x899E: 0x5FDC, //CJK UNIFIED IDEOGRAPH - 0x899F: 0x62BC, //CJK UNIFIED IDEOGRAPH - 0x89A0: 0x65FA, //CJK UNIFIED IDEOGRAPH - 0x89A1: 0x6A2A, //CJK UNIFIED IDEOGRAPH - 0x89A2: 0x6B27, //CJK UNIFIED IDEOGRAPH - 0x89A3: 0x6BB4, //CJK UNIFIED IDEOGRAPH - 0x89A4: 0x738B, //CJK UNIFIED IDEOGRAPH - 0x89A5: 0x7FC1, //CJK UNIFIED IDEOGRAPH - 0x89A6: 0x8956, //CJK UNIFIED IDEOGRAPH - 0x89A7: 0x9D2C, //CJK UNIFIED IDEOGRAPH - 0x89A8: 0x9D0E, //CJK UNIFIED IDEOGRAPH - 0x89A9: 0x9EC4, //CJK UNIFIED IDEOGRAPH - 0x89AA: 0x5CA1, //CJK UNIFIED IDEOGRAPH - 0x89AB: 0x6C96, //CJK UNIFIED IDEOGRAPH - 0x89AC: 0x837B, //CJK UNIFIED IDEOGRAPH - 0x89AD: 0x5104, //CJK UNIFIED IDEOGRAPH - 0x89AE: 0x5C4B, //CJK UNIFIED IDEOGRAPH - 0x89AF: 0x61B6, //CJK UNIFIED IDEOGRAPH - 0x89B0: 0x81C6, //CJK UNIFIED IDEOGRAPH - 0x89B1: 0x6876, //CJK UNIFIED IDEOGRAPH - 0x89B2: 0x7261, //CJK UNIFIED IDEOGRAPH - 0x89B3: 0x4E59, //CJK UNIFIED IDEOGRAPH - 0x89B4: 0x4FFA, //CJK UNIFIED IDEOGRAPH - 0x89B5: 0x5378, //CJK UNIFIED IDEOGRAPH - 0x89B6: 0x6069, //CJK UNIFIED IDEOGRAPH - 0x89B7: 0x6E29, //CJK UNIFIED IDEOGRAPH - 0x89B8: 0x7A4F, //CJK UNIFIED IDEOGRAPH - 0x89B9: 0x97F3, //CJK UNIFIED IDEOGRAPH - 0x89BA: 0x4E0B, //CJK UNIFIED IDEOGRAPH - 0x89BB: 0x5316, //CJK UNIFIED IDEOGRAPH - 0x89BC: 0x4EEE, //CJK UNIFIED IDEOGRAPH - 0x89BD: 0x4F55, //CJK UNIFIED IDEOGRAPH - 0x89BE: 0x4F3D, //CJK UNIFIED IDEOGRAPH - 0x89BF: 0x4FA1, //CJK UNIFIED IDEOGRAPH - 0x89C0: 0x4F73, //CJK UNIFIED IDEOGRAPH - 0x89C1: 0x52A0, //CJK UNIFIED IDEOGRAPH - 0x89C2: 0x53EF, //CJK UNIFIED IDEOGRAPH - 0x89C3: 0x5609, //CJK UNIFIED IDEOGRAPH - 0x89C4: 0x590F, //CJK UNIFIED IDEOGRAPH - 0x89C5: 0x5AC1, //CJK UNIFIED IDEOGRAPH - 0x89C6: 0x5BB6, //CJK UNIFIED IDEOGRAPH - 0x89C7: 0x5BE1, //CJK UNIFIED IDEOGRAPH - 0x89C8: 0x79D1, //CJK UNIFIED IDEOGRAPH - 0x89C9: 0x6687, //CJK UNIFIED IDEOGRAPH - 0x89CA: 0x679C, //CJK UNIFIED IDEOGRAPH - 0x89CB: 0x67B6, //CJK UNIFIED IDEOGRAPH - 0x89CC: 0x6B4C, //CJK UNIFIED IDEOGRAPH - 0x89CD: 0x6CB3, //CJK UNIFIED IDEOGRAPH - 0x89CE: 0x706B, //CJK UNIFIED IDEOGRAPH - 0x89CF: 0x73C2, //CJK UNIFIED IDEOGRAPH - 0x89D0: 0x798D, //CJK UNIFIED IDEOGRAPH - 0x89D1: 0x79BE, //CJK UNIFIED IDEOGRAPH - 0x89D2: 0x7A3C, //CJK UNIFIED IDEOGRAPH - 0x89D3: 0x7B87, //CJK UNIFIED IDEOGRAPH - 0x89D4: 0x82B1, //CJK UNIFIED IDEOGRAPH - 0x89D5: 0x82DB, //CJK UNIFIED IDEOGRAPH - 0x89D6: 0x8304, //CJK UNIFIED IDEOGRAPH - 0x89D7: 0x8377, //CJK UNIFIED IDEOGRAPH - 0x89D8: 0x83EF, //CJK UNIFIED IDEOGRAPH - 0x89D9: 0x83D3, //CJK UNIFIED IDEOGRAPH - 0x89DA: 0x8766, //CJK UNIFIED IDEOGRAPH - 0x89DB: 0x8AB2, //CJK UNIFIED IDEOGRAPH - 0x89DC: 0x5629, //CJK UNIFIED IDEOGRAPH - 0x89DD: 0x8CA8, //CJK UNIFIED IDEOGRAPH - 0x89DE: 0x8FE6, //CJK UNIFIED IDEOGRAPH - 0x89DF: 0x904E, //CJK UNIFIED IDEOGRAPH - 0x89E0: 0x971E, //CJK UNIFIED IDEOGRAPH - 0x89E1: 0x868A, //CJK UNIFIED IDEOGRAPH - 0x89E2: 0x4FC4, //CJK UNIFIED IDEOGRAPH - 0x89E3: 0x5CE8, //CJK UNIFIED IDEOGRAPH - 0x89E4: 0x6211, //CJK UNIFIED IDEOGRAPH - 0x89E5: 0x7259, //CJK UNIFIED IDEOGRAPH - 0x89E6: 0x753B, //CJK UNIFIED IDEOGRAPH - 0x89E7: 0x81E5, //CJK UNIFIED IDEOGRAPH - 0x89E8: 0x82BD, //CJK UNIFIED IDEOGRAPH - 0x89E9: 0x86FE, //CJK UNIFIED IDEOGRAPH - 0x89EA: 0x8CC0, //CJK UNIFIED IDEOGRAPH - 0x89EB: 0x96C5, //CJK UNIFIED IDEOGRAPH - 0x89EC: 0x9913, //CJK UNIFIED IDEOGRAPH - 0x89ED: 0x99D5, //CJK UNIFIED IDEOGRAPH - 0x89EE: 0x4ECB, //CJK UNIFIED IDEOGRAPH - 0x89EF: 0x4F1A, //CJK UNIFIED IDEOGRAPH - 0x89F0: 0x89E3, //CJK UNIFIED IDEOGRAPH - 0x89F1: 0x56DE, //CJK UNIFIED IDEOGRAPH - 0x89F2: 0x584A, //CJK UNIFIED IDEOGRAPH - 0x89F3: 0x58CA, //CJK UNIFIED IDEOGRAPH - 0x89F4: 0x5EFB, //CJK UNIFIED IDEOGRAPH - 0x89F5: 0x5FEB, //CJK UNIFIED IDEOGRAPH - 0x89F6: 0x602A, //CJK UNIFIED IDEOGRAPH - 0x89F7: 0x6094, //CJK UNIFIED IDEOGRAPH - 0x89F8: 0x6062, //CJK UNIFIED IDEOGRAPH - 0x89F9: 0x61D0, //CJK UNIFIED IDEOGRAPH - 0x89FA: 0x6212, //CJK UNIFIED IDEOGRAPH - 0x89FB: 0x62D0, //CJK UNIFIED IDEOGRAPH - 0x89FC: 0x6539, //CJK UNIFIED IDEOGRAPH - 0x8A40: 0x9B41, //CJK UNIFIED IDEOGRAPH - 0x8A41: 0x6666, //CJK UNIFIED IDEOGRAPH - 0x8A42: 0x68B0, //CJK UNIFIED IDEOGRAPH - 0x8A43: 0x6D77, //CJK UNIFIED IDEOGRAPH - 0x8A44: 0x7070, //CJK UNIFIED IDEOGRAPH - 0x8A45: 0x754C, //CJK UNIFIED IDEOGRAPH - 0x8A46: 0x7686, //CJK UNIFIED IDEOGRAPH - 0x8A47: 0x7D75, //CJK UNIFIED IDEOGRAPH - 0x8A48: 0x82A5, //CJK UNIFIED IDEOGRAPH - 0x8A49: 0x87F9, //CJK UNIFIED IDEOGRAPH - 0x8A4A: 0x958B, //CJK UNIFIED IDEOGRAPH - 0x8A4B: 0x968E, //CJK UNIFIED IDEOGRAPH - 0x8A4C: 0x8C9D, //CJK UNIFIED IDEOGRAPH - 0x8A4D: 0x51F1, //CJK UNIFIED IDEOGRAPH - 0x8A4E: 0x52BE, //CJK UNIFIED IDEOGRAPH - 0x8A4F: 0x5916, //CJK UNIFIED IDEOGRAPH - 0x8A50: 0x54B3, //CJK UNIFIED IDEOGRAPH - 0x8A51: 0x5BB3, //CJK UNIFIED IDEOGRAPH - 0x8A52: 0x5D16, //CJK UNIFIED IDEOGRAPH - 0x8A53: 0x6168, //CJK UNIFIED IDEOGRAPH - 0x8A54: 0x6982, //CJK UNIFIED IDEOGRAPH - 0x8A55: 0x6DAF, //CJK UNIFIED IDEOGRAPH - 0x8A56: 0x788D, //CJK UNIFIED IDEOGRAPH - 0x8A57: 0x84CB, //CJK UNIFIED IDEOGRAPH - 0x8A58: 0x8857, //CJK UNIFIED IDEOGRAPH - 0x8A59: 0x8A72, //CJK UNIFIED IDEOGRAPH - 0x8A5A: 0x93A7, //CJK UNIFIED IDEOGRAPH - 0x8A5B: 0x9AB8, //CJK UNIFIED IDEOGRAPH - 0x8A5C: 0x6D6C, //CJK UNIFIED IDEOGRAPH - 0x8A5D: 0x99A8, //CJK UNIFIED IDEOGRAPH - 0x8A5E: 0x86D9, //CJK UNIFIED IDEOGRAPH - 0x8A5F: 0x57A3, //CJK UNIFIED IDEOGRAPH - 0x8A60: 0x67FF, //CJK UNIFIED IDEOGRAPH - 0x8A61: 0x86CE, //CJK UNIFIED IDEOGRAPH - 0x8A62: 0x920E, //CJK UNIFIED IDEOGRAPH - 0x8A63: 0x5283, //CJK UNIFIED IDEOGRAPH - 0x8A64: 0x5687, //CJK UNIFIED IDEOGRAPH - 0x8A65: 0x5404, //CJK UNIFIED IDEOGRAPH - 0x8A66: 0x5ED3, //CJK UNIFIED IDEOGRAPH - 0x8A67: 0x62E1, //CJK UNIFIED IDEOGRAPH - 0x8A68: 0x64B9, //CJK UNIFIED IDEOGRAPH - 0x8A69: 0x683C, //CJK UNIFIED IDEOGRAPH - 0x8A6A: 0x6838, //CJK UNIFIED IDEOGRAPH - 0x8A6B: 0x6BBB, //CJK UNIFIED IDEOGRAPH - 0x8A6C: 0x7372, //CJK UNIFIED IDEOGRAPH - 0x8A6D: 0x78BA, //CJK UNIFIED IDEOGRAPH - 0x8A6E: 0x7A6B, //CJK UNIFIED IDEOGRAPH - 0x8A6F: 0x899A, //CJK UNIFIED IDEOGRAPH - 0x8A70: 0x89D2, //CJK UNIFIED IDEOGRAPH - 0x8A71: 0x8D6B, //CJK UNIFIED IDEOGRAPH - 0x8A72: 0x8F03, //CJK UNIFIED IDEOGRAPH - 0x8A73: 0x90ED, //CJK UNIFIED IDEOGRAPH - 0x8A74: 0x95A3, //CJK UNIFIED IDEOGRAPH - 0x8A75: 0x9694, //CJK UNIFIED IDEOGRAPH - 0x8A76: 0x9769, //CJK UNIFIED IDEOGRAPH - 0x8A77: 0x5B66, //CJK UNIFIED IDEOGRAPH - 0x8A78: 0x5CB3, //CJK UNIFIED IDEOGRAPH - 0x8A79: 0x697D, //CJK UNIFIED IDEOGRAPH - 0x8A7A: 0x984D, //CJK UNIFIED IDEOGRAPH - 0x8A7B: 0x984E, //CJK UNIFIED IDEOGRAPH - 0x8A7C: 0x639B, //CJK UNIFIED IDEOGRAPH - 0x8A7D: 0x7B20, //CJK UNIFIED IDEOGRAPH - 0x8A7E: 0x6A2B, //CJK UNIFIED IDEOGRAPH - 0x8A80: 0x6A7F, //CJK UNIFIED IDEOGRAPH - 0x8A81: 0x68B6, //CJK UNIFIED IDEOGRAPH - 0x8A82: 0x9C0D, //CJK UNIFIED IDEOGRAPH - 0x8A83: 0x6F5F, //CJK UNIFIED IDEOGRAPH - 0x8A84: 0x5272, //CJK UNIFIED IDEOGRAPH - 0x8A85: 0x559D, //CJK UNIFIED IDEOGRAPH - 0x8A86: 0x6070, //CJK UNIFIED IDEOGRAPH - 0x8A87: 0x62EC, //CJK UNIFIED IDEOGRAPH - 0x8A88: 0x6D3B, //CJK UNIFIED IDEOGRAPH - 0x8A89: 0x6E07, //CJK UNIFIED IDEOGRAPH - 0x8A8A: 0x6ED1, //CJK UNIFIED IDEOGRAPH - 0x8A8B: 0x845B, //CJK UNIFIED IDEOGRAPH - 0x8A8C: 0x8910, //CJK UNIFIED IDEOGRAPH - 0x8A8D: 0x8F44, //CJK UNIFIED IDEOGRAPH - 0x8A8E: 0x4E14, //CJK UNIFIED IDEOGRAPH - 0x8A8F: 0x9C39, //CJK UNIFIED IDEOGRAPH - 0x8A90: 0x53F6, //CJK UNIFIED IDEOGRAPH - 0x8A91: 0x691B, //CJK UNIFIED IDEOGRAPH - 0x8A92: 0x6A3A, //CJK UNIFIED IDEOGRAPH - 0x8A93: 0x9784, //CJK UNIFIED IDEOGRAPH - 0x8A94: 0x682A, //CJK UNIFIED IDEOGRAPH - 0x8A95: 0x515C, //CJK UNIFIED IDEOGRAPH - 0x8A96: 0x7AC3, //CJK UNIFIED IDEOGRAPH - 0x8A97: 0x84B2, //CJK UNIFIED IDEOGRAPH - 0x8A98: 0x91DC, //CJK UNIFIED IDEOGRAPH - 0x8A99: 0x938C, //CJK UNIFIED IDEOGRAPH - 0x8A9A: 0x565B, //CJK UNIFIED IDEOGRAPH - 0x8A9B: 0x9D28, //CJK UNIFIED IDEOGRAPH - 0x8A9C: 0x6822, //CJK UNIFIED IDEOGRAPH - 0x8A9D: 0x8305, //CJK UNIFIED IDEOGRAPH - 0x8A9E: 0x8431, //CJK UNIFIED IDEOGRAPH - 0x8A9F: 0x7CA5, //CJK UNIFIED IDEOGRAPH - 0x8AA0: 0x5208, //CJK UNIFIED IDEOGRAPH - 0x8AA1: 0x82C5, //CJK UNIFIED IDEOGRAPH - 0x8AA2: 0x74E6, //CJK UNIFIED IDEOGRAPH - 0x8AA3: 0x4E7E, //CJK UNIFIED IDEOGRAPH - 0x8AA4: 0x4F83, //CJK UNIFIED IDEOGRAPH - 0x8AA5: 0x51A0, //CJK UNIFIED IDEOGRAPH - 0x8AA6: 0x5BD2, //CJK UNIFIED IDEOGRAPH - 0x8AA7: 0x520A, //CJK UNIFIED IDEOGRAPH - 0x8AA8: 0x52D8, //CJK UNIFIED IDEOGRAPH - 0x8AA9: 0x52E7, //CJK UNIFIED IDEOGRAPH - 0x8AAA: 0x5DFB, //CJK UNIFIED IDEOGRAPH - 0x8AAB: 0x559A, //CJK UNIFIED IDEOGRAPH - 0x8AAC: 0x582A, //CJK UNIFIED IDEOGRAPH - 0x8AAD: 0x59E6, //CJK UNIFIED IDEOGRAPH - 0x8AAE: 0x5B8C, //CJK UNIFIED IDEOGRAPH - 0x8AAF: 0x5B98, //CJK UNIFIED IDEOGRAPH - 0x8AB0: 0x5BDB, //CJK UNIFIED IDEOGRAPH - 0x8AB1: 0x5E72, //CJK UNIFIED IDEOGRAPH - 0x8AB2: 0x5E79, //CJK UNIFIED IDEOGRAPH - 0x8AB3: 0x60A3, //CJK UNIFIED IDEOGRAPH - 0x8AB4: 0x611F, //CJK UNIFIED IDEOGRAPH - 0x8AB5: 0x6163, //CJK UNIFIED IDEOGRAPH - 0x8AB6: 0x61BE, //CJK UNIFIED IDEOGRAPH - 0x8AB7: 0x63DB, //CJK UNIFIED IDEOGRAPH - 0x8AB8: 0x6562, //CJK UNIFIED IDEOGRAPH - 0x8AB9: 0x67D1, //CJK UNIFIED IDEOGRAPH - 0x8ABA: 0x6853, //CJK UNIFIED IDEOGRAPH - 0x8ABB: 0x68FA, //CJK UNIFIED IDEOGRAPH - 0x8ABC: 0x6B3E, //CJK UNIFIED IDEOGRAPH - 0x8ABD: 0x6B53, //CJK UNIFIED IDEOGRAPH - 0x8ABE: 0x6C57, //CJK UNIFIED IDEOGRAPH - 0x8ABF: 0x6F22, //CJK UNIFIED IDEOGRAPH - 0x8AC0: 0x6F97, //CJK UNIFIED IDEOGRAPH - 0x8AC1: 0x6F45, //CJK UNIFIED IDEOGRAPH - 0x8AC2: 0x74B0, //CJK UNIFIED IDEOGRAPH - 0x8AC3: 0x7518, //CJK UNIFIED IDEOGRAPH - 0x8AC4: 0x76E3, //CJK UNIFIED IDEOGRAPH - 0x8AC5: 0x770B, //CJK UNIFIED IDEOGRAPH - 0x8AC6: 0x7AFF, //CJK UNIFIED IDEOGRAPH - 0x8AC7: 0x7BA1, //CJK UNIFIED IDEOGRAPH - 0x8AC8: 0x7C21, //CJK UNIFIED IDEOGRAPH - 0x8AC9: 0x7DE9, //CJK UNIFIED IDEOGRAPH - 0x8ACA: 0x7F36, //CJK UNIFIED IDEOGRAPH - 0x8ACB: 0x7FF0, //CJK UNIFIED IDEOGRAPH - 0x8ACC: 0x809D, //CJK UNIFIED IDEOGRAPH - 0x8ACD: 0x8266, //CJK UNIFIED IDEOGRAPH - 0x8ACE: 0x839E, //CJK UNIFIED IDEOGRAPH - 0x8ACF: 0x89B3, //CJK UNIFIED IDEOGRAPH - 0x8AD0: 0x8ACC, //CJK UNIFIED IDEOGRAPH - 0x8AD1: 0x8CAB, //CJK UNIFIED IDEOGRAPH - 0x8AD2: 0x9084, //CJK UNIFIED IDEOGRAPH - 0x8AD3: 0x9451, //CJK UNIFIED IDEOGRAPH - 0x8AD4: 0x9593, //CJK UNIFIED IDEOGRAPH - 0x8AD5: 0x9591, //CJK UNIFIED IDEOGRAPH - 0x8AD6: 0x95A2, //CJK UNIFIED IDEOGRAPH - 0x8AD7: 0x9665, //CJK UNIFIED IDEOGRAPH - 0x8AD8: 0x97D3, //CJK UNIFIED IDEOGRAPH - 0x8AD9: 0x9928, //CJK UNIFIED IDEOGRAPH - 0x8ADA: 0x8218, //CJK UNIFIED IDEOGRAPH - 0x8ADB: 0x4E38, //CJK UNIFIED IDEOGRAPH - 0x8ADC: 0x542B, //CJK UNIFIED IDEOGRAPH - 0x8ADD: 0x5CB8, //CJK UNIFIED IDEOGRAPH - 0x8ADE: 0x5DCC, //CJK UNIFIED IDEOGRAPH - 0x8ADF: 0x73A9, //CJK UNIFIED IDEOGRAPH - 0x8AE0: 0x764C, //CJK UNIFIED IDEOGRAPH - 0x8AE1: 0x773C, //CJK UNIFIED IDEOGRAPH - 0x8AE2: 0x5CA9, //CJK UNIFIED IDEOGRAPH - 0x8AE3: 0x7FEB, //CJK UNIFIED IDEOGRAPH - 0x8AE4: 0x8D0B, //CJK UNIFIED IDEOGRAPH - 0x8AE5: 0x96C1, //CJK UNIFIED IDEOGRAPH - 0x8AE6: 0x9811, //CJK UNIFIED IDEOGRAPH - 0x8AE7: 0x9854, //CJK UNIFIED IDEOGRAPH - 0x8AE8: 0x9858, //CJK UNIFIED IDEOGRAPH - 0x8AE9: 0x4F01, //CJK UNIFIED IDEOGRAPH - 0x8AEA: 0x4F0E, //CJK UNIFIED IDEOGRAPH - 0x8AEB: 0x5371, //CJK UNIFIED IDEOGRAPH - 0x8AEC: 0x559C, //CJK UNIFIED IDEOGRAPH - 0x8AED: 0x5668, //CJK UNIFIED IDEOGRAPH - 0x8AEE: 0x57FA, //CJK UNIFIED IDEOGRAPH - 0x8AEF: 0x5947, //CJK UNIFIED IDEOGRAPH - 0x8AF0: 0x5B09, //CJK UNIFIED IDEOGRAPH - 0x8AF1: 0x5BC4, //CJK UNIFIED IDEOGRAPH - 0x8AF2: 0x5C90, //CJK UNIFIED IDEOGRAPH - 0x8AF3: 0x5E0C, //CJK UNIFIED IDEOGRAPH - 0x8AF4: 0x5E7E, //CJK UNIFIED IDEOGRAPH - 0x8AF5: 0x5FCC, //CJK UNIFIED IDEOGRAPH - 0x8AF6: 0x63EE, //CJK UNIFIED IDEOGRAPH - 0x8AF7: 0x673A, //CJK UNIFIED IDEOGRAPH - 0x8AF8: 0x65D7, //CJK UNIFIED IDEOGRAPH - 0x8AF9: 0x65E2, //CJK UNIFIED IDEOGRAPH - 0x8AFA: 0x671F, //CJK UNIFIED IDEOGRAPH - 0x8AFB: 0x68CB, //CJK UNIFIED IDEOGRAPH - 0x8AFC: 0x68C4, //CJK UNIFIED IDEOGRAPH - 0x8B40: 0x6A5F, //CJK UNIFIED IDEOGRAPH - 0x8B41: 0x5E30, //CJK UNIFIED IDEOGRAPH - 0x8B42: 0x6BC5, //CJK UNIFIED IDEOGRAPH - 0x8B43: 0x6C17, //CJK UNIFIED IDEOGRAPH - 0x8B44: 0x6C7D, //CJK UNIFIED IDEOGRAPH - 0x8B45: 0x757F, //CJK UNIFIED IDEOGRAPH - 0x8B46: 0x7948, //CJK UNIFIED IDEOGRAPH - 0x8B47: 0x5B63, //CJK UNIFIED IDEOGRAPH - 0x8B48: 0x7A00, //CJK UNIFIED IDEOGRAPH - 0x8B49: 0x7D00, //CJK UNIFIED IDEOGRAPH - 0x8B4A: 0x5FBD, //CJK UNIFIED IDEOGRAPH - 0x8B4B: 0x898F, //CJK UNIFIED IDEOGRAPH - 0x8B4C: 0x8A18, //CJK UNIFIED IDEOGRAPH - 0x8B4D: 0x8CB4, //CJK UNIFIED IDEOGRAPH - 0x8B4E: 0x8D77, //CJK UNIFIED IDEOGRAPH - 0x8B4F: 0x8ECC, //CJK UNIFIED IDEOGRAPH - 0x8B50: 0x8F1D, //CJK UNIFIED IDEOGRAPH - 0x8B51: 0x98E2, //CJK UNIFIED IDEOGRAPH - 0x8B52: 0x9A0E, //CJK UNIFIED IDEOGRAPH - 0x8B53: 0x9B3C, //CJK UNIFIED IDEOGRAPH - 0x8B54: 0x4E80, //CJK UNIFIED IDEOGRAPH - 0x8B55: 0x507D, //CJK UNIFIED IDEOGRAPH - 0x8B56: 0x5100, //CJK UNIFIED IDEOGRAPH - 0x8B57: 0x5993, //CJK UNIFIED IDEOGRAPH - 0x8B58: 0x5B9C, //CJK UNIFIED IDEOGRAPH - 0x8B59: 0x622F, //CJK UNIFIED IDEOGRAPH - 0x8B5A: 0x6280, //CJK UNIFIED IDEOGRAPH - 0x8B5B: 0x64EC, //CJK UNIFIED IDEOGRAPH - 0x8B5C: 0x6B3A, //CJK UNIFIED IDEOGRAPH - 0x8B5D: 0x72A0, //CJK UNIFIED IDEOGRAPH - 0x8B5E: 0x7591, //CJK UNIFIED IDEOGRAPH - 0x8B5F: 0x7947, //CJK UNIFIED IDEOGRAPH - 0x8B60: 0x7FA9, //CJK UNIFIED IDEOGRAPH - 0x8B61: 0x87FB, //CJK UNIFIED IDEOGRAPH - 0x8B62: 0x8ABC, //CJK UNIFIED IDEOGRAPH - 0x8B63: 0x8B70, //CJK UNIFIED IDEOGRAPH - 0x8B64: 0x63AC, //CJK UNIFIED IDEOGRAPH - 0x8B65: 0x83CA, //CJK UNIFIED IDEOGRAPH - 0x8B66: 0x97A0, //CJK UNIFIED IDEOGRAPH - 0x8B67: 0x5409, //CJK UNIFIED IDEOGRAPH - 0x8B68: 0x5403, //CJK UNIFIED IDEOGRAPH - 0x8B69: 0x55AB, //CJK UNIFIED IDEOGRAPH - 0x8B6A: 0x6854, //CJK UNIFIED IDEOGRAPH - 0x8B6B: 0x6A58, //CJK UNIFIED IDEOGRAPH - 0x8B6C: 0x8A70, //CJK UNIFIED IDEOGRAPH - 0x8B6D: 0x7827, //CJK UNIFIED IDEOGRAPH - 0x8B6E: 0x6775, //CJK UNIFIED IDEOGRAPH - 0x8B6F: 0x9ECD, //CJK UNIFIED IDEOGRAPH - 0x8B70: 0x5374, //CJK UNIFIED IDEOGRAPH - 0x8B71: 0x5BA2, //CJK UNIFIED IDEOGRAPH - 0x8B72: 0x811A, //CJK UNIFIED IDEOGRAPH - 0x8B73: 0x8650, //CJK UNIFIED IDEOGRAPH - 0x8B74: 0x9006, //CJK UNIFIED IDEOGRAPH - 0x8B75: 0x4E18, //CJK UNIFIED IDEOGRAPH - 0x8B76: 0x4E45, //CJK UNIFIED IDEOGRAPH - 0x8B77: 0x4EC7, //CJK UNIFIED IDEOGRAPH - 0x8B78: 0x4F11, //CJK UNIFIED IDEOGRAPH - 0x8B79: 0x53CA, //CJK UNIFIED IDEOGRAPH - 0x8B7A: 0x5438, //CJK UNIFIED IDEOGRAPH - 0x8B7B: 0x5BAE, //CJK UNIFIED IDEOGRAPH - 0x8B7C: 0x5F13, //CJK UNIFIED IDEOGRAPH - 0x8B7D: 0x6025, //CJK UNIFIED IDEOGRAPH - 0x8B7E: 0x6551, //CJK UNIFIED IDEOGRAPH - 0x8B80: 0x673D, //CJK UNIFIED IDEOGRAPH - 0x8B81: 0x6C42, //CJK UNIFIED IDEOGRAPH - 0x8B82: 0x6C72, //CJK UNIFIED IDEOGRAPH - 0x8B83: 0x6CE3, //CJK UNIFIED IDEOGRAPH - 0x8B84: 0x7078, //CJK UNIFIED IDEOGRAPH - 0x8B85: 0x7403, //CJK UNIFIED IDEOGRAPH - 0x8B86: 0x7A76, //CJK UNIFIED IDEOGRAPH - 0x8B87: 0x7AAE, //CJK UNIFIED IDEOGRAPH - 0x8B88: 0x7B08, //CJK UNIFIED IDEOGRAPH - 0x8B89: 0x7D1A, //CJK UNIFIED IDEOGRAPH - 0x8B8A: 0x7CFE, //CJK UNIFIED IDEOGRAPH - 0x8B8B: 0x7D66, //CJK UNIFIED IDEOGRAPH - 0x8B8C: 0x65E7, //CJK UNIFIED IDEOGRAPH - 0x8B8D: 0x725B, //CJK UNIFIED IDEOGRAPH - 0x8B8E: 0x53BB, //CJK UNIFIED IDEOGRAPH - 0x8B8F: 0x5C45, //CJK UNIFIED IDEOGRAPH - 0x8B90: 0x5DE8, //CJK UNIFIED IDEOGRAPH - 0x8B91: 0x62D2, //CJK UNIFIED IDEOGRAPH - 0x8B92: 0x62E0, //CJK UNIFIED IDEOGRAPH - 0x8B93: 0x6319, //CJK UNIFIED IDEOGRAPH - 0x8B94: 0x6E20, //CJK UNIFIED IDEOGRAPH - 0x8B95: 0x865A, //CJK UNIFIED IDEOGRAPH - 0x8B96: 0x8A31, //CJK UNIFIED IDEOGRAPH - 0x8B97: 0x8DDD, //CJK UNIFIED IDEOGRAPH - 0x8B98: 0x92F8, //CJK UNIFIED IDEOGRAPH - 0x8B99: 0x6F01, //CJK UNIFIED IDEOGRAPH - 0x8B9A: 0x79A6, //CJK UNIFIED IDEOGRAPH - 0x8B9B: 0x9B5A, //CJK UNIFIED IDEOGRAPH - 0x8B9C: 0x4EA8, //CJK UNIFIED IDEOGRAPH - 0x8B9D: 0x4EAB, //CJK UNIFIED IDEOGRAPH - 0x8B9E: 0x4EAC, //CJK UNIFIED IDEOGRAPH - 0x8B9F: 0x4F9B, //CJK UNIFIED IDEOGRAPH - 0x8BA0: 0x4FA0, //CJK UNIFIED IDEOGRAPH - 0x8BA1: 0x50D1, //CJK UNIFIED IDEOGRAPH - 0x8BA2: 0x5147, //CJK UNIFIED IDEOGRAPH - 0x8BA3: 0x7AF6, //CJK UNIFIED IDEOGRAPH - 0x8BA4: 0x5171, //CJK UNIFIED IDEOGRAPH - 0x8BA5: 0x51F6, //CJK UNIFIED IDEOGRAPH - 0x8BA6: 0x5354, //CJK UNIFIED IDEOGRAPH - 0x8BA7: 0x5321, //CJK UNIFIED IDEOGRAPH - 0x8BA8: 0x537F, //CJK UNIFIED IDEOGRAPH - 0x8BA9: 0x53EB, //CJK UNIFIED IDEOGRAPH - 0x8BAA: 0x55AC, //CJK UNIFIED IDEOGRAPH - 0x8BAB: 0x5883, //CJK UNIFIED IDEOGRAPH - 0x8BAC: 0x5CE1, //CJK UNIFIED IDEOGRAPH - 0x8BAD: 0x5F37, //CJK UNIFIED IDEOGRAPH - 0x8BAE: 0x5F4A, //CJK UNIFIED IDEOGRAPH - 0x8BAF: 0x602F, //CJK UNIFIED IDEOGRAPH - 0x8BB0: 0x6050, //CJK UNIFIED IDEOGRAPH - 0x8BB1: 0x606D, //CJK UNIFIED IDEOGRAPH - 0x8BB2: 0x631F, //CJK UNIFIED IDEOGRAPH - 0x8BB3: 0x6559, //CJK UNIFIED IDEOGRAPH - 0x8BB4: 0x6A4B, //CJK UNIFIED IDEOGRAPH - 0x8BB5: 0x6CC1, //CJK UNIFIED IDEOGRAPH - 0x8BB6: 0x72C2, //CJK UNIFIED IDEOGRAPH - 0x8BB7: 0x72ED, //CJK UNIFIED IDEOGRAPH - 0x8BB8: 0x77EF, //CJK UNIFIED IDEOGRAPH - 0x8BB9: 0x80F8, //CJK UNIFIED IDEOGRAPH - 0x8BBA: 0x8105, //CJK UNIFIED IDEOGRAPH - 0x8BBB: 0x8208, //CJK UNIFIED IDEOGRAPH - 0x8BBC: 0x854E, //CJK UNIFIED IDEOGRAPH - 0x8BBD: 0x90F7, //CJK UNIFIED IDEOGRAPH - 0x8BBE: 0x93E1, //CJK UNIFIED IDEOGRAPH - 0x8BBF: 0x97FF, //CJK UNIFIED IDEOGRAPH - 0x8BC0: 0x9957, //CJK UNIFIED IDEOGRAPH - 0x8BC1: 0x9A5A, //CJK UNIFIED IDEOGRAPH - 0x8BC2: 0x4EF0, //CJK UNIFIED IDEOGRAPH - 0x8BC3: 0x51DD, //CJK UNIFIED IDEOGRAPH - 0x8BC4: 0x5C2D, //CJK UNIFIED IDEOGRAPH - 0x8BC5: 0x6681, //CJK UNIFIED IDEOGRAPH - 0x8BC6: 0x696D, //CJK UNIFIED IDEOGRAPH - 0x8BC7: 0x5C40, //CJK UNIFIED IDEOGRAPH - 0x8BC8: 0x66F2, //CJK UNIFIED IDEOGRAPH - 0x8BC9: 0x6975, //CJK UNIFIED IDEOGRAPH - 0x8BCA: 0x7389, //CJK UNIFIED IDEOGRAPH - 0x8BCB: 0x6850, //CJK UNIFIED IDEOGRAPH - 0x8BCC: 0x7C81, //CJK UNIFIED IDEOGRAPH - 0x8BCD: 0x50C5, //CJK UNIFIED IDEOGRAPH - 0x8BCE: 0x52E4, //CJK UNIFIED IDEOGRAPH - 0x8BCF: 0x5747, //CJK UNIFIED IDEOGRAPH - 0x8BD0: 0x5DFE, //CJK UNIFIED IDEOGRAPH - 0x8BD1: 0x9326, //CJK UNIFIED IDEOGRAPH - 0x8BD2: 0x65A4, //CJK UNIFIED IDEOGRAPH - 0x8BD3: 0x6B23, //CJK UNIFIED IDEOGRAPH - 0x8BD4: 0x6B3D, //CJK UNIFIED IDEOGRAPH - 0x8BD5: 0x7434, //CJK UNIFIED IDEOGRAPH - 0x8BD6: 0x7981, //CJK UNIFIED IDEOGRAPH - 0x8BD7: 0x79BD, //CJK UNIFIED IDEOGRAPH - 0x8BD8: 0x7B4B, //CJK UNIFIED IDEOGRAPH - 0x8BD9: 0x7DCA, //CJK UNIFIED IDEOGRAPH - 0x8BDA: 0x82B9, //CJK UNIFIED IDEOGRAPH - 0x8BDB: 0x83CC, //CJK UNIFIED IDEOGRAPH - 0x8BDC: 0x887F, //CJK UNIFIED IDEOGRAPH - 0x8BDD: 0x895F, //CJK UNIFIED IDEOGRAPH - 0x8BDE: 0x8B39, //CJK UNIFIED IDEOGRAPH - 0x8BDF: 0x8FD1, //CJK UNIFIED IDEOGRAPH - 0x8BE0: 0x91D1, //CJK UNIFIED IDEOGRAPH - 0x8BE1: 0x541F, //CJK UNIFIED IDEOGRAPH - 0x8BE2: 0x9280, //CJK UNIFIED IDEOGRAPH - 0x8BE3: 0x4E5D, //CJK UNIFIED IDEOGRAPH - 0x8BE4: 0x5036, //CJK UNIFIED IDEOGRAPH - 0x8BE5: 0x53E5, //CJK UNIFIED IDEOGRAPH - 0x8BE6: 0x533A, //CJK UNIFIED IDEOGRAPH - 0x8BE7: 0x72D7, //CJK UNIFIED IDEOGRAPH - 0x8BE8: 0x7396, //CJK UNIFIED IDEOGRAPH - 0x8BE9: 0x77E9, //CJK UNIFIED IDEOGRAPH - 0x8BEA: 0x82E6, //CJK UNIFIED IDEOGRAPH - 0x8BEB: 0x8EAF, //CJK UNIFIED IDEOGRAPH - 0x8BEC: 0x99C6, //CJK UNIFIED IDEOGRAPH - 0x8BED: 0x99C8, //CJK UNIFIED IDEOGRAPH - 0x8BEE: 0x99D2, //CJK UNIFIED IDEOGRAPH - 0x8BEF: 0x5177, //CJK UNIFIED IDEOGRAPH - 0x8BF0: 0x611A, //CJK UNIFIED IDEOGRAPH - 0x8BF1: 0x865E, //CJK UNIFIED IDEOGRAPH - 0x8BF2: 0x55B0, //CJK UNIFIED IDEOGRAPH - 0x8BF3: 0x7A7A, //CJK UNIFIED IDEOGRAPH - 0x8BF4: 0x5076, //CJK UNIFIED IDEOGRAPH - 0x8BF5: 0x5BD3, //CJK UNIFIED IDEOGRAPH - 0x8BF6: 0x9047, //CJK UNIFIED IDEOGRAPH - 0x8BF7: 0x9685, //CJK UNIFIED IDEOGRAPH - 0x8BF8: 0x4E32, //CJK UNIFIED IDEOGRAPH - 0x8BF9: 0x6ADB, //CJK UNIFIED IDEOGRAPH - 0x8BFA: 0x91E7, //CJK UNIFIED IDEOGRAPH - 0x8BFB: 0x5C51, //CJK UNIFIED IDEOGRAPH - 0x8BFC: 0x5C48, //CJK UNIFIED IDEOGRAPH - 0x8C40: 0x6398, //CJK UNIFIED IDEOGRAPH - 0x8C41: 0x7A9F, //CJK UNIFIED IDEOGRAPH - 0x8C42: 0x6C93, //CJK UNIFIED IDEOGRAPH - 0x8C43: 0x9774, //CJK UNIFIED IDEOGRAPH - 0x8C44: 0x8F61, //CJK UNIFIED IDEOGRAPH - 0x8C45: 0x7AAA, //CJK UNIFIED IDEOGRAPH - 0x8C46: 0x718A, //CJK UNIFIED IDEOGRAPH - 0x8C47: 0x9688, //CJK UNIFIED IDEOGRAPH - 0x8C48: 0x7C82, //CJK UNIFIED IDEOGRAPH - 0x8C49: 0x6817, //CJK UNIFIED IDEOGRAPH - 0x8C4A: 0x7E70, //CJK UNIFIED IDEOGRAPH - 0x8C4B: 0x6851, //CJK UNIFIED IDEOGRAPH - 0x8C4C: 0x936C, //CJK UNIFIED IDEOGRAPH - 0x8C4D: 0x52F2, //CJK UNIFIED IDEOGRAPH - 0x8C4E: 0x541B, //CJK UNIFIED IDEOGRAPH - 0x8C4F: 0x85AB, //CJK UNIFIED IDEOGRAPH - 0x8C50: 0x8A13, //CJK UNIFIED IDEOGRAPH - 0x8C51: 0x7FA4, //CJK UNIFIED IDEOGRAPH - 0x8C52: 0x8ECD, //CJK UNIFIED IDEOGRAPH - 0x8C53: 0x90E1, //CJK UNIFIED IDEOGRAPH - 0x8C54: 0x5366, //CJK UNIFIED IDEOGRAPH - 0x8C55: 0x8888, //CJK UNIFIED IDEOGRAPH - 0x8C56: 0x7941, //CJK UNIFIED IDEOGRAPH - 0x8C57: 0x4FC2, //CJK UNIFIED IDEOGRAPH - 0x8C58: 0x50BE, //CJK UNIFIED IDEOGRAPH - 0x8C59: 0x5211, //CJK UNIFIED IDEOGRAPH - 0x8C5A: 0x5144, //CJK UNIFIED IDEOGRAPH - 0x8C5B: 0x5553, //CJK UNIFIED IDEOGRAPH - 0x8C5C: 0x572D, //CJK UNIFIED IDEOGRAPH - 0x8C5D: 0x73EA, //CJK UNIFIED IDEOGRAPH - 0x8C5E: 0x578B, //CJK UNIFIED IDEOGRAPH - 0x8C5F: 0x5951, //CJK UNIFIED IDEOGRAPH - 0x8C60: 0x5F62, //CJK UNIFIED IDEOGRAPH - 0x8C61: 0x5F84, //CJK UNIFIED IDEOGRAPH - 0x8C62: 0x6075, //CJK UNIFIED IDEOGRAPH - 0x8C63: 0x6176, //CJK UNIFIED IDEOGRAPH - 0x8C64: 0x6167, //CJK UNIFIED IDEOGRAPH - 0x8C65: 0x61A9, //CJK UNIFIED IDEOGRAPH - 0x8C66: 0x63B2, //CJK UNIFIED IDEOGRAPH - 0x8C67: 0x643A, //CJK UNIFIED IDEOGRAPH - 0x8C68: 0x656C, //CJK UNIFIED IDEOGRAPH - 0x8C69: 0x666F, //CJK UNIFIED IDEOGRAPH - 0x8C6A: 0x6842, //CJK UNIFIED IDEOGRAPH - 0x8C6B: 0x6E13, //CJK UNIFIED IDEOGRAPH - 0x8C6C: 0x7566, //CJK UNIFIED IDEOGRAPH - 0x8C6D: 0x7A3D, //CJK UNIFIED IDEOGRAPH - 0x8C6E: 0x7CFB, //CJK UNIFIED IDEOGRAPH - 0x8C6F: 0x7D4C, //CJK UNIFIED IDEOGRAPH - 0x8C70: 0x7D99, //CJK UNIFIED IDEOGRAPH - 0x8C71: 0x7E4B, //CJK UNIFIED IDEOGRAPH - 0x8C72: 0x7F6B, //CJK UNIFIED IDEOGRAPH - 0x8C73: 0x830E, //CJK UNIFIED IDEOGRAPH - 0x8C74: 0x834A, //CJK UNIFIED IDEOGRAPH - 0x8C75: 0x86CD, //CJK UNIFIED IDEOGRAPH - 0x8C76: 0x8A08, //CJK UNIFIED IDEOGRAPH - 0x8C77: 0x8A63, //CJK UNIFIED IDEOGRAPH - 0x8C78: 0x8B66, //CJK UNIFIED IDEOGRAPH - 0x8C79: 0x8EFD, //CJK UNIFIED IDEOGRAPH - 0x8C7A: 0x981A, //CJK UNIFIED IDEOGRAPH - 0x8C7B: 0x9D8F, //CJK UNIFIED IDEOGRAPH - 0x8C7C: 0x82B8, //CJK UNIFIED IDEOGRAPH - 0x8C7D: 0x8FCE, //CJK UNIFIED IDEOGRAPH - 0x8C7E: 0x9BE8, //CJK UNIFIED IDEOGRAPH - 0x8C80: 0x5287, //CJK UNIFIED IDEOGRAPH - 0x8C81: 0x621F, //CJK UNIFIED IDEOGRAPH - 0x8C82: 0x6483, //CJK UNIFIED IDEOGRAPH - 0x8C83: 0x6FC0, //CJK UNIFIED IDEOGRAPH - 0x8C84: 0x9699, //CJK UNIFIED IDEOGRAPH - 0x8C85: 0x6841, //CJK UNIFIED IDEOGRAPH - 0x8C86: 0x5091, //CJK UNIFIED IDEOGRAPH - 0x8C87: 0x6B20, //CJK UNIFIED IDEOGRAPH - 0x8C88: 0x6C7A, //CJK UNIFIED IDEOGRAPH - 0x8C89: 0x6F54, //CJK UNIFIED IDEOGRAPH - 0x8C8A: 0x7A74, //CJK UNIFIED IDEOGRAPH - 0x8C8B: 0x7D50, //CJK UNIFIED IDEOGRAPH - 0x8C8C: 0x8840, //CJK UNIFIED IDEOGRAPH - 0x8C8D: 0x8A23, //CJK UNIFIED IDEOGRAPH - 0x8C8E: 0x6708, //CJK UNIFIED IDEOGRAPH - 0x8C8F: 0x4EF6, //CJK UNIFIED IDEOGRAPH - 0x8C90: 0x5039, //CJK UNIFIED IDEOGRAPH - 0x8C91: 0x5026, //CJK UNIFIED IDEOGRAPH - 0x8C92: 0x5065, //CJK UNIFIED IDEOGRAPH - 0x8C93: 0x517C, //CJK UNIFIED IDEOGRAPH - 0x8C94: 0x5238, //CJK UNIFIED IDEOGRAPH - 0x8C95: 0x5263, //CJK UNIFIED IDEOGRAPH - 0x8C96: 0x55A7, //CJK UNIFIED IDEOGRAPH - 0x8C97: 0x570F, //CJK UNIFIED IDEOGRAPH - 0x8C98: 0x5805, //CJK UNIFIED IDEOGRAPH - 0x8C99: 0x5ACC, //CJK UNIFIED IDEOGRAPH - 0x8C9A: 0x5EFA, //CJK UNIFIED IDEOGRAPH - 0x8C9B: 0x61B2, //CJK UNIFIED IDEOGRAPH - 0x8C9C: 0x61F8, //CJK UNIFIED IDEOGRAPH - 0x8C9D: 0x62F3, //CJK UNIFIED IDEOGRAPH - 0x8C9E: 0x6372, //CJK UNIFIED IDEOGRAPH - 0x8C9F: 0x691C, //CJK UNIFIED IDEOGRAPH - 0x8CA0: 0x6A29, //CJK UNIFIED IDEOGRAPH - 0x8CA1: 0x727D, //CJK UNIFIED IDEOGRAPH - 0x8CA2: 0x72AC, //CJK UNIFIED IDEOGRAPH - 0x8CA3: 0x732E, //CJK UNIFIED IDEOGRAPH - 0x8CA4: 0x7814, //CJK UNIFIED IDEOGRAPH - 0x8CA5: 0x786F, //CJK UNIFIED IDEOGRAPH - 0x8CA6: 0x7D79, //CJK UNIFIED IDEOGRAPH - 0x8CA7: 0x770C, //CJK UNIFIED IDEOGRAPH - 0x8CA8: 0x80A9, //CJK UNIFIED IDEOGRAPH - 0x8CA9: 0x898B, //CJK UNIFIED IDEOGRAPH - 0x8CAA: 0x8B19, //CJK UNIFIED IDEOGRAPH - 0x8CAB: 0x8CE2, //CJK UNIFIED IDEOGRAPH - 0x8CAC: 0x8ED2, //CJK UNIFIED IDEOGRAPH - 0x8CAD: 0x9063, //CJK UNIFIED IDEOGRAPH - 0x8CAE: 0x9375, //CJK UNIFIED IDEOGRAPH - 0x8CAF: 0x967A, //CJK UNIFIED IDEOGRAPH - 0x8CB0: 0x9855, //CJK UNIFIED IDEOGRAPH - 0x8CB1: 0x9A13, //CJK UNIFIED IDEOGRAPH - 0x8CB2: 0x9E78, //CJK UNIFIED IDEOGRAPH - 0x8CB3: 0x5143, //CJK UNIFIED IDEOGRAPH - 0x8CB4: 0x539F, //CJK UNIFIED IDEOGRAPH - 0x8CB5: 0x53B3, //CJK UNIFIED IDEOGRAPH - 0x8CB6: 0x5E7B, //CJK UNIFIED IDEOGRAPH - 0x8CB7: 0x5F26, //CJK UNIFIED IDEOGRAPH - 0x8CB8: 0x6E1B, //CJK UNIFIED IDEOGRAPH - 0x8CB9: 0x6E90, //CJK UNIFIED IDEOGRAPH - 0x8CBA: 0x7384, //CJK UNIFIED IDEOGRAPH - 0x8CBB: 0x73FE, //CJK UNIFIED IDEOGRAPH - 0x8CBC: 0x7D43, //CJK UNIFIED IDEOGRAPH - 0x8CBD: 0x8237, //CJK UNIFIED IDEOGRAPH - 0x8CBE: 0x8A00, //CJK UNIFIED IDEOGRAPH - 0x8CBF: 0x8AFA, //CJK UNIFIED IDEOGRAPH - 0x8CC0: 0x9650, //CJK UNIFIED IDEOGRAPH - 0x8CC1: 0x4E4E, //CJK UNIFIED IDEOGRAPH - 0x8CC2: 0x500B, //CJK UNIFIED IDEOGRAPH - 0x8CC3: 0x53E4, //CJK UNIFIED IDEOGRAPH - 0x8CC4: 0x547C, //CJK UNIFIED IDEOGRAPH - 0x8CC5: 0x56FA, //CJK UNIFIED IDEOGRAPH - 0x8CC6: 0x59D1, //CJK UNIFIED IDEOGRAPH - 0x8CC7: 0x5B64, //CJK UNIFIED IDEOGRAPH - 0x8CC8: 0x5DF1, //CJK UNIFIED IDEOGRAPH - 0x8CC9: 0x5EAB, //CJK UNIFIED IDEOGRAPH - 0x8CCA: 0x5F27, //CJK UNIFIED IDEOGRAPH - 0x8CCB: 0x6238, //CJK UNIFIED IDEOGRAPH - 0x8CCC: 0x6545, //CJK UNIFIED IDEOGRAPH - 0x8CCD: 0x67AF, //CJK UNIFIED IDEOGRAPH - 0x8CCE: 0x6E56, //CJK UNIFIED IDEOGRAPH - 0x8CCF: 0x72D0, //CJK UNIFIED IDEOGRAPH - 0x8CD0: 0x7CCA, //CJK UNIFIED IDEOGRAPH - 0x8CD1: 0x88B4, //CJK UNIFIED IDEOGRAPH - 0x8CD2: 0x80A1, //CJK UNIFIED IDEOGRAPH - 0x8CD3: 0x80E1, //CJK UNIFIED IDEOGRAPH - 0x8CD4: 0x83F0, //CJK UNIFIED IDEOGRAPH - 0x8CD5: 0x864E, //CJK UNIFIED IDEOGRAPH - 0x8CD6: 0x8A87, //CJK UNIFIED IDEOGRAPH - 0x8CD7: 0x8DE8, //CJK UNIFIED IDEOGRAPH - 0x8CD8: 0x9237, //CJK UNIFIED IDEOGRAPH - 0x8CD9: 0x96C7, //CJK UNIFIED IDEOGRAPH - 0x8CDA: 0x9867, //CJK UNIFIED IDEOGRAPH - 0x8CDB: 0x9F13, //CJK UNIFIED IDEOGRAPH - 0x8CDC: 0x4E94, //CJK UNIFIED IDEOGRAPH - 0x8CDD: 0x4E92, //CJK UNIFIED IDEOGRAPH - 0x8CDE: 0x4F0D, //CJK UNIFIED IDEOGRAPH - 0x8CDF: 0x5348, //CJK UNIFIED IDEOGRAPH - 0x8CE0: 0x5449, //CJK UNIFIED IDEOGRAPH - 0x8CE1: 0x543E, //CJK UNIFIED IDEOGRAPH - 0x8CE2: 0x5A2F, //CJK UNIFIED IDEOGRAPH - 0x8CE3: 0x5F8C, //CJK UNIFIED IDEOGRAPH - 0x8CE4: 0x5FA1, //CJK UNIFIED IDEOGRAPH - 0x8CE5: 0x609F, //CJK UNIFIED IDEOGRAPH - 0x8CE6: 0x68A7, //CJK UNIFIED IDEOGRAPH - 0x8CE7: 0x6A8E, //CJK UNIFIED IDEOGRAPH - 0x8CE8: 0x745A, //CJK UNIFIED IDEOGRAPH - 0x8CE9: 0x7881, //CJK UNIFIED IDEOGRAPH - 0x8CEA: 0x8A9E, //CJK UNIFIED IDEOGRAPH - 0x8CEB: 0x8AA4, //CJK UNIFIED IDEOGRAPH - 0x8CEC: 0x8B77, //CJK UNIFIED IDEOGRAPH - 0x8CED: 0x9190, //CJK UNIFIED IDEOGRAPH - 0x8CEE: 0x4E5E, //CJK UNIFIED IDEOGRAPH - 0x8CEF: 0x9BC9, //CJK UNIFIED IDEOGRAPH - 0x8CF0: 0x4EA4, //CJK UNIFIED IDEOGRAPH - 0x8CF1: 0x4F7C, //CJK UNIFIED IDEOGRAPH - 0x8CF2: 0x4FAF, //CJK UNIFIED IDEOGRAPH - 0x8CF3: 0x5019, //CJK UNIFIED IDEOGRAPH - 0x8CF4: 0x5016, //CJK UNIFIED IDEOGRAPH - 0x8CF5: 0x5149, //CJK UNIFIED IDEOGRAPH - 0x8CF6: 0x516C, //CJK UNIFIED IDEOGRAPH - 0x8CF7: 0x529F, //CJK UNIFIED IDEOGRAPH - 0x8CF8: 0x52B9, //CJK UNIFIED IDEOGRAPH - 0x8CF9: 0x52FE, //CJK UNIFIED IDEOGRAPH - 0x8CFA: 0x539A, //CJK UNIFIED IDEOGRAPH - 0x8CFB: 0x53E3, //CJK UNIFIED IDEOGRAPH - 0x8CFC: 0x5411, //CJK UNIFIED IDEOGRAPH - 0x8D40: 0x540E, //CJK UNIFIED IDEOGRAPH - 0x8D41: 0x5589, //CJK UNIFIED IDEOGRAPH - 0x8D42: 0x5751, //CJK UNIFIED IDEOGRAPH - 0x8D43: 0x57A2, //CJK UNIFIED IDEOGRAPH - 0x8D44: 0x597D, //CJK UNIFIED IDEOGRAPH - 0x8D45: 0x5B54, //CJK UNIFIED IDEOGRAPH - 0x8D46: 0x5B5D, //CJK UNIFIED IDEOGRAPH - 0x8D47: 0x5B8F, //CJK UNIFIED IDEOGRAPH - 0x8D48: 0x5DE5, //CJK UNIFIED IDEOGRAPH - 0x8D49: 0x5DE7, //CJK UNIFIED IDEOGRAPH - 0x8D4A: 0x5DF7, //CJK UNIFIED IDEOGRAPH - 0x8D4B: 0x5E78, //CJK UNIFIED IDEOGRAPH - 0x8D4C: 0x5E83, //CJK UNIFIED IDEOGRAPH - 0x8D4D: 0x5E9A, //CJK UNIFIED IDEOGRAPH - 0x8D4E: 0x5EB7, //CJK UNIFIED IDEOGRAPH - 0x8D4F: 0x5F18, //CJK UNIFIED IDEOGRAPH - 0x8D50: 0x6052, //CJK UNIFIED IDEOGRAPH - 0x8D51: 0x614C, //CJK UNIFIED IDEOGRAPH - 0x8D52: 0x6297, //CJK UNIFIED IDEOGRAPH - 0x8D53: 0x62D8, //CJK UNIFIED IDEOGRAPH - 0x8D54: 0x63A7, //CJK UNIFIED IDEOGRAPH - 0x8D55: 0x653B, //CJK UNIFIED IDEOGRAPH - 0x8D56: 0x6602, //CJK UNIFIED IDEOGRAPH - 0x8D57: 0x6643, //CJK UNIFIED IDEOGRAPH - 0x8D58: 0x66F4, //CJK UNIFIED IDEOGRAPH - 0x8D59: 0x676D, //CJK UNIFIED IDEOGRAPH - 0x8D5A: 0x6821, //CJK UNIFIED IDEOGRAPH - 0x8D5B: 0x6897, //CJK UNIFIED IDEOGRAPH - 0x8D5C: 0x69CB, //CJK UNIFIED IDEOGRAPH - 0x8D5D: 0x6C5F, //CJK UNIFIED IDEOGRAPH - 0x8D5E: 0x6D2A, //CJK UNIFIED IDEOGRAPH - 0x8D5F: 0x6D69, //CJK UNIFIED IDEOGRAPH - 0x8D60: 0x6E2F, //CJK UNIFIED IDEOGRAPH - 0x8D61: 0x6E9D, //CJK UNIFIED IDEOGRAPH - 0x8D62: 0x7532, //CJK UNIFIED IDEOGRAPH - 0x8D63: 0x7687, //CJK UNIFIED IDEOGRAPH - 0x8D64: 0x786C, //CJK UNIFIED IDEOGRAPH - 0x8D65: 0x7A3F, //CJK UNIFIED IDEOGRAPH - 0x8D66: 0x7CE0, //CJK UNIFIED IDEOGRAPH - 0x8D67: 0x7D05, //CJK UNIFIED IDEOGRAPH - 0x8D68: 0x7D18, //CJK UNIFIED IDEOGRAPH - 0x8D69: 0x7D5E, //CJK UNIFIED IDEOGRAPH - 0x8D6A: 0x7DB1, //CJK UNIFIED IDEOGRAPH - 0x8D6B: 0x8015, //CJK UNIFIED IDEOGRAPH - 0x8D6C: 0x8003, //CJK UNIFIED IDEOGRAPH - 0x8D6D: 0x80AF, //CJK UNIFIED IDEOGRAPH - 0x8D6E: 0x80B1, //CJK UNIFIED IDEOGRAPH - 0x8D6F: 0x8154, //CJK UNIFIED IDEOGRAPH - 0x8D70: 0x818F, //CJK UNIFIED IDEOGRAPH - 0x8D71: 0x822A, //CJK UNIFIED IDEOGRAPH - 0x8D72: 0x8352, //CJK UNIFIED IDEOGRAPH - 0x8D73: 0x884C, //CJK UNIFIED IDEOGRAPH - 0x8D74: 0x8861, //CJK UNIFIED IDEOGRAPH - 0x8D75: 0x8B1B, //CJK UNIFIED IDEOGRAPH - 0x8D76: 0x8CA2, //CJK UNIFIED IDEOGRAPH - 0x8D77: 0x8CFC, //CJK UNIFIED IDEOGRAPH - 0x8D78: 0x90CA, //CJK UNIFIED IDEOGRAPH - 0x8D79: 0x9175, //CJK UNIFIED IDEOGRAPH - 0x8D7A: 0x9271, //CJK UNIFIED IDEOGRAPH - 0x8D7B: 0x783F, //CJK UNIFIED IDEOGRAPH - 0x8D7C: 0x92FC, //CJK UNIFIED IDEOGRAPH - 0x8D7D: 0x95A4, //CJK UNIFIED IDEOGRAPH - 0x8D7E: 0x964D, //CJK UNIFIED IDEOGRAPH - 0x8D80: 0x9805, //CJK UNIFIED IDEOGRAPH - 0x8D81: 0x9999, //CJK UNIFIED IDEOGRAPH - 0x8D82: 0x9AD8, //CJK UNIFIED IDEOGRAPH - 0x8D83: 0x9D3B, //CJK UNIFIED IDEOGRAPH - 0x8D84: 0x525B, //CJK UNIFIED IDEOGRAPH - 0x8D85: 0x52AB, //CJK UNIFIED IDEOGRAPH - 0x8D86: 0x53F7, //CJK UNIFIED IDEOGRAPH - 0x8D87: 0x5408, //CJK UNIFIED IDEOGRAPH - 0x8D88: 0x58D5, //CJK UNIFIED IDEOGRAPH - 0x8D89: 0x62F7, //CJK UNIFIED IDEOGRAPH - 0x8D8A: 0x6FE0, //CJK UNIFIED IDEOGRAPH - 0x8D8B: 0x8C6A, //CJK UNIFIED IDEOGRAPH - 0x8D8C: 0x8F5F, //CJK UNIFIED IDEOGRAPH - 0x8D8D: 0x9EB9, //CJK UNIFIED IDEOGRAPH - 0x8D8E: 0x514B, //CJK UNIFIED IDEOGRAPH - 0x8D8F: 0x523B, //CJK UNIFIED IDEOGRAPH - 0x8D90: 0x544A, //CJK UNIFIED IDEOGRAPH - 0x8D91: 0x56FD, //CJK UNIFIED IDEOGRAPH - 0x8D92: 0x7A40, //CJK UNIFIED IDEOGRAPH - 0x8D93: 0x9177, //CJK UNIFIED IDEOGRAPH - 0x8D94: 0x9D60, //CJK UNIFIED IDEOGRAPH - 0x8D95: 0x9ED2, //CJK UNIFIED IDEOGRAPH - 0x8D96: 0x7344, //CJK UNIFIED IDEOGRAPH - 0x8D97: 0x6F09, //CJK UNIFIED IDEOGRAPH - 0x8D98: 0x8170, //CJK UNIFIED IDEOGRAPH - 0x8D99: 0x7511, //CJK UNIFIED IDEOGRAPH - 0x8D9A: 0x5FFD, //CJK UNIFIED IDEOGRAPH - 0x8D9B: 0x60DA, //CJK UNIFIED IDEOGRAPH - 0x8D9C: 0x9AA8, //CJK UNIFIED IDEOGRAPH - 0x8D9D: 0x72DB, //CJK UNIFIED IDEOGRAPH - 0x8D9E: 0x8FBC, //CJK UNIFIED IDEOGRAPH - 0x8D9F: 0x6B64, //CJK UNIFIED IDEOGRAPH - 0x8DA0: 0x9803, //CJK UNIFIED IDEOGRAPH - 0x8DA1: 0x4ECA, //CJK UNIFIED IDEOGRAPH - 0x8DA2: 0x56F0, //CJK UNIFIED IDEOGRAPH - 0x8DA3: 0x5764, //CJK UNIFIED IDEOGRAPH - 0x8DA4: 0x58BE, //CJK UNIFIED IDEOGRAPH - 0x8DA5: 0x5A5A, //CJK UNIFIED IDEOGRAPH - 0x8DA6: 0x6068, //CJK UNIFIED IDEOGRAPH - 0x8DA7: 0x61C7, //CJK UNIFIED IDEOGRAPH - 0x8DA8: 0x660F, //CJK UNIFIED IDEOGRAPH - 0x8DA9: 0x6606, //CJK UNIFIED IDEOGRAPH - 0x8DAA: 0x6839, //CJK UNIFIED IDEOGRAPH - 0x8DAB: 0x68B1, //CJK UNIFIED IDEOGRAPH - 0x8DAC: 0x6DF7, //CJK UNIFIED IDEOGRAPH - 0x8DAD: 0x75D5, //CJK UNIFIED IDEOGRAPH - 0x8DAE: 0x7D3A, //CJK UNIFIED IDEOGRAPH - 0x8DAF: 0x826E, //CJK UNIFIED IDEOGRAPH - 0x8DB0: 0x9B42, //CJK UNIFIED IDEOGRAPH - 0x8DB1: 0x4E9B, //CJK UNIFIED IDEOGRAPH - 0x8DB2: 0x4F50, //CJK UNIFIED IDEOGRAPH - 0x8DB3: 0x53C9, //CJK UNIFIED IDEOGRAPH - 0x8DB4: 0x5506, //CJK UNIFIED IDEOGRAPH - 0x8DB5: 0x5D6F, //CJK UNIFIED IDEOGRAPH - 0x8DB6: 0x5DE6, //CJK UNIFIED IDEOGRAPH - 0x8DB7: 0x5DEE, //CJK UNIFIED IDEOGRAPH - 0x8DB8: 0x67FB, //CJK UNIFIED IDEOGRAPH - 0x8DB9: 0x6C99, //CJK UNIFIED IDEOGRAPH - 0x8DBA: 0x7473, //CJK UNIFIED IDEOGRAPH - 0x8DBB: 0x7802, //CJK UNIFIED IDEOGRAPH - 0x8DBC: 0x8A50, //CJK UNIFIED IDEOGRAPH - 0x8DBD: 0x9396, //CJK UNIFIED IDEOGRAPH - 0x8DBE: 0x88DF, //CJK UNIFIED IDEOGRAPH - 0x8DBF: 0x5750, //CJK UNIFIED IDEOGRAPH - 0x8DC0: 0x5EA7, //CJK UNIFIED IDEOGRAPH - 0x8DC1: 0x632B, //CJK UNIFIED IDEOGRAPH - 0x8DC2: 0x50B5, //CJK UNIFIED IDEOGRAPH - 0x8DC3: 0x50AC, //CJK UNIFIED IDEOGRAPH - 0x8DC4: 0x518D, //CJK UNIFIED IDEOGRAPH - 0x8DC5: 0x6700, //CJK UNIFIED IDEOGRAPH - 0x8DC6: 0x54C9, //CJK UNIFIED IDEOGRAPH - 0x8DC7: 0x585E, //CJK UNIFIED IDEOGRAPH - 0x8DC8: 0x59BB, //CJK UNIFIED IDEOGRAPH - 0x8DC9: 0x5BB0, //CJK UNIFIED IDEOGRAPH - 0x8DCA: 0x5F69, //CJK UNIFIED IDEOGRAPH - 0x8DCB: 0x624D, //CJK UNIFIED IDEOGRAPH - 0x8DCC: 0x63A1, //CJK UNIFIED IDEOGRAPH - 0x8DCD: 0x683D, //CJK UNIFIED IDEOGRAPH - 0x8DCE: 0x6B73, //CJK UNIFIED IDEOGRAPH - 0x8DCF: 0x6E08, //CJK UNIFIED IDEOGRAPH - 0x8DD0: 0x707D, //CJK UNIFIED IDEOGRAPH - 0x8DD1: 0x91C7, //CJK UNIFIED IDEOGRAPH - 0x8DD2: 0x7280, //CJK UNIFIED IDEOGRAPH - 0x8DD3: 0x7815, //CJK UNIFIED IDEOGRAPH - 0x8DD4: 0x7826, //CJK UNIFIED IDEOGRAPH - 0x8DD5: 0x796D, //CJK UNIFIED IDEOGRAPH - 0x8DD6: 0x658E, //CJK UNIFIED IDEOGRAPH - 0x8DD7: 0x7D30, //CJK UNIFIED IDEOGRAPH - 0x8DD8: 0x83DC, //CJK UNIFIED IDEOGRAPH - 0x8DD9: 0x88C1, //CJK UNIFIED IDEOGRAPH - 0x8DDA: 0x8F09, //CJK UNIFIED IDEOGRAPH - 0x8DDB: 0x969B, //CJK UNIFIED IDEOGRAPH - 0x8DDC: 0x5264, //CJK UNIFIED IDEOGRAPH - 0x8DDD: 0x5728, //CJK UNIFIED IDEOGRAPH - 0x8DDE: 0x6750, //CJK UNIFIED IDEOGRAPH - 0x8DDF: 0x7F6A, //CJK UNIFIED IDEOGRAPH - 0x8DE0: 0x8CA1, //CJK UNIFIED IDEOGRAPH - 0x8DE1: 0x51B4, //CJK UNIFIED IDEOGRAPH - 0x8DE2: 0x5742, //CJK UNIFIED IDEOGRAPH - 0x8DE3: 0x962A, //CJK UNIFIED IDEOGRAPH - 0x8DE4: 0x583A, //CJK UNIFIED IDEOGRAPH - 0x8DE5: 0x698A, //CJK UNIFIED IDEOGRAPH - 0x8DE6: 0x80B4, //CJK UNIFIED IDEOGRAPH - 0x8DE7: 0x54B2, //CJK UNIFIED IDEOGRAPH - 0x8DE8: 0x5D0E, //CJK UNIFIED IDEOGRAPH - 0x8DE9: 0x57FC, //CJK UNIFIED IDEOGRAPH - 0x8DEA: 0x7895, //CJK UNIFIED IDEOGRAPH - 0x8DEB: 0x9DFA, //CJK UNIFIED IDEOGRAPH - 0x8DEC: 0x4F5C, //CJK UNIFIED IDEOGRAPH - 0x8DED: 0x524A, //CJK UNIFIED IDEOGRAPH - 0x8DEE: 0x548B, //CJK UNIFIED IDEOGRAPH - 0x8DEF: 0x643E, //CJK UNIFIED IDEOGRAPH - 0x8DF0: 0x6628, //CJK UNIFIED IDEOGRAPH - 0x8DF1: 0x6714, //CJK UNIFIED IDEOGRAPH - 0x8DF2: 0x67F5, //CJK UNIFIED IDEOGRAPH - 0x8DF3: 0x7A84, //CJK UNIFIED IDEOGRAPH - 0x8DF4: 0x7B56, //CJK UNIFIED IDEOGRAPH - 0x8DF5: 0x7D22, //CJK UNIFIED IDEOGRAPH - 0x8DF6: 0x932F, //CJK UNIFIED IDEOGRAPH - 0x8DF7: 0x685C, //CJK UNIFIED IDEOGRAPH - 0x8DF8: 0x9BAD, //CJK UNIFIED IDEOGRAPH - 0x8DF9: 0x7B39, //CJK UNIFIED IDEOGRAPH - 0x8DFA: 0x5319, //CJK UNIFIED IDEOGRAPH - 0x8DFB: 0x518A, //CJK UNIFIED IDEOGRAPH - 0x8DFC: 0x5237, //CJK UNIFIED IDEOGRAPH - 0x8E40: 0x5BDF, //CJK UNIFIED IDEOGRAPH - 0x8E41: 0x62F6, //CJK UNIFIED IDEOGRAPH - 0x8E42: 0x64AE, //CJK UNIFIED IDEOGRAPH - 0x8E43: 0x64E6, //CJK UNIFIED IDEOGRAPH - 0x8E44: 0x672D, //CJK UNIFIED IDEOGRAPH - 0x8E45: 0x6BBA, //CJK UNIFIED IDEOGRAPH - 0x8E46: 0x85A9, //CJK UNIFIED IDEOGRAPH - 0x8E47: 0x96D1, //CJK UNIFIED IDEOGRAPH - 0x8E48: 0x7690, //CJK UNIFIED IDEOGRAPH - 0x8E49: 0x9BD6, //CJK UNIFIED IDEOGRAPH - 0x8E4A: 0x634C, //CJK UNIFIED IDEOGRAPH - 0x8E4B: 0x9306, //CJK UNIFIED IDEOGRAPH - 0x8E4C: 0x9BAB, //CJK UNIFIED IDEOGRAPH - 0x8E4D: 0x76BF, //CJK UNIFIED IDEOGRAPH - 0x8E4E: 0x6652, //CJK UNIFIED IDEOGRAPH - 0x8E4F: 0x4E09, //CJK UNIFIED IDEOGRAPH - 0x8E50: 0x5098, //CJK UNIFIED IDEOGRAPH - 0x8E51: 0x53C2, //CJK UNIFIED IDEOGRAPH - 0x8E52: 0x5C71, //CJK UNIFIED IDEOGRAPH - 0x8E53: 0x60E8, //CJK UNIFIED IDEOGRAPH - 0x8E54: 0x6492, //CJK UNIFIED IDEOGRAPH - 0x8E55: 0x6563, //CJK UNIFIED IDEOGRAPH - 0x8E56: 0x685F, //CJK UNIFIED IDEOGRAPH - 0x8E57: 0x71E6, //CJK UNIFIED IDEOGRAPH - 0x8E58: 0x73CA, //CJK UNIFIED IDEOGRAPH - 0x8E59: 0x7523, //CJK UNIFIED IDEOGRAPH - 0x8E5A: 0x7B97, //CJK UNIFIED IDEOGRAPH - 0x8E5B: 0x7E82, //CJK UNIFIED IDEOGRAPH - 0x8E5C: 0x8695, //CJK UNIFIED IDEOGRAPH - 0x8E5D: 0x8B83, //CJK UNIFIED IDEOGRAPH - 0x8E5E: 0x8CDB, //CJK UNIFIED IDEOGRAPH - 0x8E5F: 0x9178, //CJK UNIFIED IDEOGRAPH - 0x8E60: 0x9910, //CJK UNIFIED IDEOGRAPH - 0x8E61: 0x65AC, //CJK UNIFIED IDEOGRAPH - 0x8E62: 0x66AB, //CJK UNIFIED IDEOGRAPH - 0x8E63: 0x6B8B, //CJK UNIFIED IDEOGRAPH - 0x8E64: 0x4ED5, //CJK UNIFIED IDEOGRAPH - 0x8E65: 0x4ED4, //CJK UNIFIED IDEOGRAPH - 0x8E66: 0x4F3A, //CJK UNIFIED IDEOGRAPH - 0x8E67: 0x4F7F, //CJK UNIFIED IDEOGRAPH - 0x8E68: 0x523A, //CJK UNIFIED IDEOGRAPH - 0x8E69: 0x53F8, //CJK UNIFIED IDEOGRAPH - 0x8E6A: 0x53F2, //CJK UNIFIED IDEOGRAPH - 0x8E6B: 0x55E3, //CJK UNIFIED IDEOGRAPH - 0x8E6C: 0x56DB, //CJK UNIFIED IDEOGRAPH - 0x8E6D: 0x58EB, //CJK UNIFIED IDEOGRAPH - 0x8E6E: 0x59CB, //CJK UNIFIED IDEOGRAPH - 0x8E6F: 0x59C9, //CJK UNIFIED IDEOGRAPH - 0x8E70: 0x59FF, //CJK UNIFIED IDEOGRAPH - 0x8E71: 0x5B50, //CJK UNIFIED IDEOGRAPH - 0x8E72: 0x5C4D, //CJK UNIFIED IDEOGRAPH - 0x8E73: 0x5E02, //CJK UNIFIED IDEOGRAPH - 0x8E74: 0x5E2B, //CJK UNIFIED IDEOGRAPH - 0x8E75: 0x5FD7, //CJK UNIFIED IDEOGRAPH - 0x8E76: 0x601D, //CJK UNIFIED IDEOGRAPH - 0x8E77: 0x6307, //CJK UNIFIED IDEOGRAPH - 0x8E78: 0x652F, //CJK UNIFIED IDEOGRAPH - 0x8E79: 0x5B5C, //CJK UNIFIED IDEOGRAPH - 0x8E7A: 0x65AF, //CJK UNIFIED IDEOGRAPH - 0x8E7B: 0x65BD, //CJK UNIFIED IDEOGRAPH - 0x8E7C: 0x65E8, //CJK UNIFIED IDEOGRAPH - 0x8E7D: 0x679D, //CJK UNIFIED IDEOGRAPH - 0x8E7E: 0x6B62, //CJK UNIFIED IDEOGRAPH - 0x8E80: 0x6B7B, //CJK UNIFIED IDEOGRAPH - 0x8E81: 0x6C0F, //CJK UNIFIED IDEOGRAPH - 0x8E82: 0x7345, //CJK UNIFIED IDEOGRAPH - 0x8E83: 0x7949, //CJK UNIFIED IDEOGRAPH - 0x8E84: 0x79C1, //CJK UNIFIED IDEOGRAPH - 0x8E85: 0x7CF8, //CJK UNIFIED IDEOGRAPH - 0x8E86: 0x7D19, //CJK UNIFIED IDEOGRAPH - 0x8E87: 0x7D2B, //CJK UNIFIED IDEOGRAPH - 0x8E88: 0x80A2, //CJK UNIFIED IDEOGRAPH - 0x8E89: 0x8102, //CJK UNIFIED IDEOGRAPH - 0x8E8A: 0x81F3, //CJK UNIFIED IDEOGRAPH - 0x8E8B: 0x8996, //CJK UNIFIED IDEOGRAPH - 0x8E8C: 0x8A5E, //CJK UNIFIED IDEOGRAPH - 0x8E8D: 0x8A69, //CJK UNIFIED IDEOGRAPH - 0x8E8E: 0x8A66, //CJK UNIFIED IDEOGRAPH - 0x8E8F: 0x8A8C, //CJK UNIFIED IDEOGRAPH - 0x8E90: 0x8AEE, //CJK UNIFIED IDEOGRAPH - 0x8E91: 0x8CC7, //CJK UNIFIED IDEOGRAPH - 0x8E92: 0x8CDC, //CJK UNIFIED IDEOGRAPH - 0x8E93: 0x96CC, //CJK UNIFIED IDEOGRAPH - 0x8E94: 0x98FC, //CJK UNIFIED IDEOGRAPH - 0x8E95: 0x6B6F, //CJK UNIFIED IDEOGRAPH - 0x8E96: 0x4E8B, //CJK UNIFIED IDEOGRAPH - 0x8E97: 0x4F3C, //CJK UNIFIED IDEOGRAPH - 0x8E98: 0x4F8D, //CJK UNIFIED IDEOGRAPH - 0x8E99: 0x5150, //CJK UNIFIED IDEOGRAPH - 0x8E9A: 0x5B57, //CJK UNIFIED IDEOGRAPH - 0x8E9B: 0x5BFA, //CJK UNIFIED IDEOGRAPH - 0x8E9C: 0x6148, //CJK UNIFIED IDEOGRAPH - 0x8E9D: 0x6301, //CJK UNIFIED IDEOGRAPH - 0x8E9E: 0x6642, //CJK UNIFIED IDEOGRAPH - 0x8E9F: 0x6B21, //CJK UNIFIED IDEOGRAPH - 0x8EA0: 0x6ECB, //CJK UNIFIED IDEOGRAPH - 0x8EA1: 0x6CBB, //CJK UNIFIED IDEOGRAPH - 0x8EA2: 0x723E, //CJK UNIFIED IDEOGRAPH - 0x8EA3: 0x74BD, //CJK UNIFIED IDEOGRAPH - 0x8EA4: 0x75D4, //CJK UNIFIED IDEOGRAPH - 0x8EA5: 0x78C1, //CJK UNIFIED IDEOGRAPH - 0x8EA6: 0x793A, //CJK UNIFIED IDEOGRAPH - 0x8EA7: 0x800C, //CJK UNIFIED IDEOGRAPH - 0x8EA8: 0x8033, //CJK UNIFIED IDEOGRAPH - 0x8EA9: 0x81EA, //CJK UNIFIED IDEOGRAPH - 0x8EAA: 0x8494, //CJK UNIFIED IDEOGRAPH - 0x8EAB: 0x8F9E, //CJK UNIFIED IDEOGRAPH - 0x8EAC: 0x6C50, //CJK UNIFIED IDEOGRAPH - 0x8EAD: 0x9E7F, //CJK UNIFIED IDEOGRAPH - 0x8EAE: 0x5F0F, //CJK UNIFIED IDEOGRAPH - 0x8EAF: 0x8B58, //CJK UNIFIED IDEOGRAPH - 0x8EB0: 0x9D2B, //CJK UNIFIED IDEOGRAPH - 0x8EB1: 0x7AFA, //CJK UNIFIED IDEOGRAPH - 0x8EB2: 0x8EF8, //CJK UNIFIED IDEOGRAPH - 0x8EB3: 0x5B8D, //CJK UNIFIED IDEOGRAPH - 0x8EB4: 0x96EB, //CJK UNIFIED IDEOGRAPH - 0x8EB5: 0x4E03, //CJK UNIFIED IDEOGRAPH - 0x8EB6: 0x53F1, //CJK UNIFIED IDEOGRAPH - 0x8EB7: 0x57F7, //CJK UNIFIED IDEOGRAPH - 0x8EB8: 0x5931, //CJK UNIFIED IDEOGRAPH - 0x8EB9: 0x5AC9, //CJK UNIFIED IDEOGRAPH - 0x8EBA: 0x5BA4, //CJK UNIFIED IDEOGRAPH - 0x8EBB: 0x6089, //CJK UNIFIED IDEOGRAPH - 0x8EBC: 0x6E7F, //CJK UNIFIED IDEOGRAPH - 0x8EBD: 0x6F06, //CJK UNIFIED IDEOGRAPH - 0x8EBE: 0x75BE, //CJK UNIFIED IDEOGRAPH - 0x8EBF: 0x8CEA, //CJK UNIFIED IDEOGRAPH - 0x8EC0: 0x5B9F, //CJK UNIFIED IDEOGRAPH - 0x8EC1: 0x8500, //CJK UNIFIED IDEOGRAPH - 0x8EC2: 0x7BE0, //CJK UNIFIED IDEOGRAPH - 0x8EC3: 0x5072, //CJK UNIFIED IDEOGRAPH - 0x8EC4: 0x67F4, //CJK UNIFIED IDEOGRAPH - 0x8EC5: 0x829D, //CJK UNIFIED IDEOGRAPH - 0x8EC6: 0x5C61, //CJK UNIFIED IDEOGRAPH - 0x8EC7: 0x854A, //CJK UNIFIED IDEOGRAPH - 0x8EC8: 0x7E1E, //CJK UNIFIED IDEOGRAPH - 0x8EC9: 0x820E, //CJK UNIFIED IDEOGRAPH - 0x8ECA: 0x5199, //CJK UNIFIED IDEOGRAPH - 0x8ECB: 0x5C04, //CJK UNIFIED IDEOGRAPH - 0x8ECC: 0x6368, //CJK UNIFIED IDEOGRAPH - 0x8ECD: 0x8D66, //CJK UNIFIED IDEOGRAPH - 0x8ECE: 0x659C, //CJK UNIFIED IDEOGRAPH - 0x8ECF: 0x716E, //CJK UNIFIED IDEOGRAPH - 0x8ED0: 0x793E, //CJK UNIFIED IDEOGRAPH - 0x8ED1: 0x7D17, //CJK UNIFIED IDEOGRAPH - 0x8ED2: 0x8005, //CJK UNIFIED IDEOGRAPH - 0x8ED3: 0x8B1D, //CJK UNIFIED IDEOGRAPH - 0x8ED4: 0x8ECA, //CJK UNIFIED IDEOGRAPH - 0x8ED5: 0x906E, //CJK UNIFIED IDEOGRAPH - 0x8ED6: 0x86C7, //CJK UNIFIED IDEOGRAPH - 0x8ED7: 0x90AA, //CJK UNIFIED IDEOGRAPH - 0x8ED8: 0x501F, //CJK UNIFIED IDEOGRAPH - 0x8ED9: 0x52FA, //CJK UNIFIED IDEOGRAPH - 0x8EDA: 0x5C3A, //CJK UNIFIED IDEOGRAPH - 0x8EDB: 0x6753, //CJK UNIFIED IDEOGRAPH - 0x8EDC: 0x707C, //CJK UNIFIED IDEOGRAPH - 0x8EDD: 0x7235, //CJK UNIFIED IDEOGRAPH - 0x8EDE: 0x914C, //CJK UNIFIED IDEOGRAPH - 0x8EDF: 0x91C8, //CJK UNIFIED IDEOGRAPH - 0x8EE0: 0x932B, //CJK UNIFIED IDEOGRAPH - 0x8EE1: 0x82E5, //CJK UNIFIED IDEOGRAPH - 0x8EE2: 0x5BC2, //CJK UNIFIED IDEOGRAPH - 0x8EE3: 0x5F31, //CJK UNIFIED IDEOGRAPH - 0x8EE4: 0x60F9, //CJK UNIFIED IDEOGRAPH - 0x8EE5: 0x4E3B, //CJK UNIFIED IDEOGRAPH - 0x8EE6: 0x53D6, //CJK UNIFIED IDEOGRAPH - 0x8EE7: 0x5B88, //CJK UNIFIED IDEOGRAPH - 0x8EE8: 0x624B, //CJK UNIFIED IDEOGRAPH - 0x8EE9: 0x6731, //CJK UNIFIED IDEOGRAPH - 0x8EEA: 0x6B8A, //CJK UNIFIED IDEOGRAPH - 0x8EEB: 0x72E9, //CJK UNIFIED IDEOGRAPH - 0x8EEC: 0x73E0, //CJK UNIFIED IDEOGRAPH - 0x8EED: 0x7A2E, //CJK UNIFIED IDEOGRAPH - 0x8EEE: 0x816B, //CJK UNIFIED IDEOGRAPH - 0x8EEF: 0x8DA3, //CJK UNIFIED IDEOGRAPH - 0x8EF0: 0x9152, //CJK UNIFIED IDEOGRAPH - 0x8EF1: 0x9996, //CJK UNIFIED IDEOGRAPH - 0x8EF2: 0x5112, //CJK UNIFIED IDEOGRAPH - 0x8EF3: 0x53D7, //CJK UNIFIED IDEOGRAPH - 0x8EF4: 0x546A, //CJK UNIFIED IDEOGRAPH - 0x8EF5: 0x5BFF, //CJK UNIFIED IDEOGRAPH - 0x8EF6: 0x6388, //CJK UNIFIED IDEOGRAPH - 0x8EF7: 0x6A39, //CJK UNIFIED IDEOGRAPH - 0x8EF8: 0x7DAC, //CJK UNIFIED IDEOGRAPH - 0x8EF9: 0x9700, //CJK UNIFIED IDEOGRAPH - 0x8EFA: 0x56DA, //CJK UNIFIED IDEOGRAPH - 0x8EFB: 0x53CE, //CJK UNIFIED IDEOGRAPH - 0x8EFC: 0x5468, //CJK UNIFIED IDEOGRAPH - 0x8F40: 0x5B97, //CJK UNIFIED IDEOGRAPH - 0x8F41: 0x5C31, //CJK UNIFIED IDEOGRAPH - 0x8F42: 0x5DDE, //CJK UNIFIED IDEOGRAPH - 0x8F43: 0x4FEE, //CJK UNIFIED IDEOGRAPH - 0x8F44: 0x6101, //CJK UNIFIED IDEOGRAPH - 0x8F45: 0x62FE, //CJK UNIFIED IDEOGRAPH - 0x8F46: 0x6D32, //CJK UNIFIED IDEOGRAPH - 0x8F47: 0x79C0, //CJK UNIFIED IDEOGRAPH - 0x8F48: 0x79CB, //CJK UNIFIED IDEOGRAPH - 0x8F49: 0x7D42, //CJK UNIFIED IDEOGRAPH - 0x8F4A: 0x7E4D, //CJK UNIFIED IDEOGRAPH - 0x8F4B: 0x7FD2, //CJK UNIFIED IDEOGRAPH - 0x8F4C: 0x81ED, //CJK UNIFIED IDEOGRAPH - 0x8F4D: 0x821F, //CJK UNIFIED IDEOGRAPH - 0x8F4E: 0x8490, //CJK UNIFIED IDEOGRAPH - 0x8F4F: 0x8846, //CJK UNIFIED IDEOGRAPH - 0x8F50: 0x8972, //CJK UNIFIED IDEOGRAPH - 0x8F51: 0x8B90, //CJK UNIFIED IDEOGRAPH - 0x8F52: 0x8E74, //CJK UNIFIED IDEOGRAPH - 0x8F53: 0x8F2F, //CJK UNIFIED IDEOGRAPH - 0x8F54: 0x9031, //CJK UNIFIED IDEOGRAPH - 0x8F55: 0x914B, //CJK UNIFIED IDEOGRAPH - 0x8F56: 0x916C, //CJK UNIFIED IDEOGRAPH - 0x8F57: 0x96C6, //CJK UNIFIED IDEOGRAPH - 0x8F58: 0x919C, //CJK UNIFIED IDEOGRAPH - 0x8F59: 0x4EC0, //CJK UNIFIED IDEOGRAPH - 0x8F5A: 0x4F4F, //CJK UNIFIED IDEOGRAPH - 0x8F5B: 0x5145, //CJK UNIFIED IDEOGRAPH - 0x8F5C: 0x5341, //CJK UNIFIED IDEOGRAPH - 0x8F5D: 0x5F93, //CJK UNIFIED IDEOGRAPH - 0x8F5E: 0x620E, //CJK UNIFIED IDEOGRAPH - 0x8F5F: 0x67D4, //CJK UNIFIED IDEOGRAPH - 0x8F60: 0x6C41, //CJK UNIFIED IDEOGRAPH - 0x8F61: 0x6E0B, //CJK UNIFIED IDEOGRAPH - 0x8F62: 0x7363, //CJK UNIFIED IDEOGRAPH - 0x8F63: 0x7E26, //CJK UNIFIED IDEOGRAPH - 0x8F64: 0x91CD, //CJK UNIFIED IDEOGRAPH - 0x8F65: 0x9283, //CJK UNIFIED IDEOGRAPH - 0x8F66: 0x53D4, //CJK UNIFIED IDEOGRAPH - 0x8F67: 0x5919, //CJK UNIFIED IDEOGRAPH - 0x8F68: 0x5BBF, //CJK UNIFIED IDEOGRAPH - 0x8F69: 0x6DD1, //CJK UNIFIED IDEOGRAPH - 0x8F6A: 0x795D, //CJK UNIFIED IDEOGRAPH - 0x8F6B: 0x7E2E, //CJK UNIFIED IDEOGRAPH - 0x8F6C: 0x7C9B, //CJK UNIFIED IDEOGRAPH - 0x8F6D: 0x587E, //CJK UNIFIED IDEOGRAPH - 0x8F6E: 0x719F, //CJK UNIFIED IDEOGRAPH - 0x8F6F: 0x51FA, //CJK UNIFIED IDEOGRAPH - 0x8F70: 0x8853, //CJK UNIFIED IDEOGRAPH - 0x8F71: 0x8FF0, //CJK UNIFIED IDEOGRAPH - 0x8F72: 0x4FCA, //CJK UNIFIED IDEOGRAPH - 0x8F73: 0x5CFB, //CJK UNIFIED IDEOGRAPH - 0x8F74: 0x6625, //CJK UNIFIED IDEOGRAPH - 0x8F75: 0x77AC, //CJK UNIFIED IDEOGRAPH - 0x8F76: 0x7AE3, //CJK UNIFIED IDEOGRAPH - 0x8F77: 0x821C, //CJK UNIFIED IDEOGRAPH - 0x8F78: 0x99FF, //CJK UNIFIED IDEOGRAPH - 0x8F79: 0x51C6, //CJK UNIFIED IDEOGRAPH - 0x8F7A: 0x5FAA, //CJK UNIFIED IDEOGRAPH - 0x8F7B: 0x65EC, //CJK UNIFIED IDEOGRAPH - 0x8F7C: 0x696F, //CJK UNIFIED IDEOGRAPH - 0x8F7D: 0x6B89, //CJK UNIFIED IDEOGRAPH - 0x8F7E: 0x6DF3, //CJK UNIFIED IDEOGRAPH - 0x8F80: 0x6E96, //CJK UNIFIED IDEOGRAPH - 0x8F81: 0x6F64, //CJK UNIFIED IDEOGRAPH - 0x8F82: 0x76FE, //CJK UNIFIED IDEOGRAPH - 0x8F83: 0x7D14, //CJK UNIFIED IDEOGRAPH - 0x8F84: 0x5DE1, //CJK UNIFIED IDEOGRAPH - 0x8F85: 0x9075, //CJK UNIFIED IDEOGRAPH - 0x8F86: 0x9187, //CJK UNIFIED IDEOGRAPH - 0x8F87: 0x9806, //CJK UNIFIED IDEOGRAPH - 0x8F88: 0x51E6, //CJK UNIFIED IDEOGRAPH - 0x8F89: 0x521D, //CJK UNIFIED IDEOGRAPH - 0x8F8A: 0x6240, //CJK UNIFIED IDEOGRAPH - 0x8F8B: 0x6691, //CJK UNIFIED IDEOGRAPH - 0x8F8C: 0x66D9, //CJK UNIFIED IDEOGRAPH - 0x8F8D: 0x6E1A, //CJK UNIFIED IDEOGRAPH - 0x8F8E: 0x5EB6, //CJK UNIFIED IDEOGRAPH - 0x8F8F: 0x7DD2, //CJK UNIFIED IDEOGRAPH - 0x8F90: 0x7F72, //CJK UNIFIED IDEOGRAPH - 0x8F91: 0x66F8, //CJK UNIFIED IDEOGRAPH - 0x8F92: 0x85AF, //CJK UNIFIED IDEOGRAPH - 0x8F93: 0x85F7, //CJK UNIFIED IDEOGRAPH - 0x8F94: 0x8AF8, //CJK UNIFIED IDEOGRAPH - 0x8F95: 0x52A9, //CJK UNIFIED IDEOGRAPH - 0x8F96: 0x53D9, //CJK UNIFIED IDEOGRAPH - 0x8F97: 0x5973, //CJK UNIFIED IDEOGRAPH - 0x8F98: 0x5E8F, //CJK UNIFIED IDEOGRAPH - 0x8F99: 0x5F90, //CJK UNIFIED IDEOGRAPH - 0x8F9A: 0x6055, //CJK UNIFIED IDEOGRAPH - 0x8F9B: 0x92E4, //CJK UNIFIED IDEOGRAPH - 0x8F9C: 0x9664, //CJK UNIFIED IDEOGRAPH - 0x8F9D: 0x50B7, //CJK UNIFIED IDEOGRAPH - 0x8F9E: 0x511F, //CJK UNIFIED IDEOGRAPH - 0x8F9F: 0x52DD, //CJK UNIFIED IDEOGRAPH - 0x8FA0: 0x5320, //CJK UNIFIED IDEOGRAPH - 0x8FA1: 0x5347, //CJK UNIFIED IDEOGRAPH - 0x8FA2: 0x53EC, //CJK UNIFIED IDEOGRAPH - 0x8FA3: 0x54E8, //CJK UNIFIED IDEOGRAPH - 0x8FA4: 0x5546, //CJK UNIFIED IDEOGRAPH - 0x8FA5: 0x5531, //CJK UNIFIED IDEOGRAPH - 0x8FA6: 0x5617, //CJK UNIFIED IDEOGRAPH - 0x8FA7: 0x5968, //CJK UNIFIED IDEOGRAPH - 0x8FA8: 0x59BE, //CJK UNIFIED IDEOGRAPH - 0x8FA9: 0x5A3C, //CJK UNIFIED IDEOGRAPH - 0x8FAA: 0x5BB5, //CJK UNIFIED IDEOGRAPH - 0x8FAB: 0x5C06, //CJK UNIFIED IDEOGRAPH - 0x8FAC: 0x5C0F, //CJK UNIFIED IDEOGRAPH - 0x8FAD: 0x5C11, //CJK UNIFIED IDEOGRAPH - 0x8FAE: 0x5C1A, //CJK UNIFIED IDEOGRAPH - 0x8FAF: 0x5E84, //CJK UNIFIED IDEOGRAPH - 0x8FB0: 0x5E8A, //CJK UNIFIED IDEOGRAPH - 0x8FB1: 0x5EE0, //CJK UNIFIED IDEOGRAPH - 0x8FB2: 0x5F70, //CJK UNIFIED IDEOGRAPH - 0x8FB3: 0x627F, //CJK UNIFIED IDEOGRAPH - 0x8FB4: 0x6284, //CJK UNIFIED IDEOGRAPH - 0x8FB5: 0x62DB, //CJK UNIFIED IDEOGRAPH - 0x8FB6: 0x638C, //CJK UNIFIED IDEOGRAPH - 0x8FB7: 0x6377, //CJK UNIFIED IDEOGRAPH - 0x8FB8: 0x6607, //CJK UNIFIED IDEOGRAPH - 0x8FB9: 0x660C, //CJK UNIFIED IDEOGRAPH - 0x8FBA: 0x662D, //CJK UNIFIED IDEOGRAPH - 0x8FBB: 0x6676, //CJK UNIFIED IDEOGRAPH - 0x8FBC: 0x677E, //CJK UNIFIED IDEOGRAPH - 0x8FBD: 0x68A2, //CJK UNIFIED IDEOGRAPH - 0x8FBE: 0x6A1F, //CJK UNIFIED IDEOGRAPH - 0x8FBF: 0x6A35, //CJK UNIFIED IDEOGRAPH - 0x8FC0: 0x6CBC, //CJK UNIFIED IDEOGRAPH - 0x8FC1: 0x6D88, //CJK UNIFIED IDEOGRAPH - 0x8FC2: 0x6E09, //CJK UNIFIED IDEOGRAPH - 0x8FC3: 0x6E58, //CJK UNIFIED IDEOGRAPH - 0x8FC4: 0x713C, //CJK UNIFIED IDEOGRAPH - 0x8FC5: 0x7126, //CJK UNIFIED IDEOGRAPH - 0x8FC6: 0x7167, //CJK UNIFIED IDEOGRAPH - 0x8FC7: 0x75C7, //CJK UNIFIED IDEOGRAPH - 0x8FC8: 0x7701, //CJK UNIFIED IDEOGRAPH - 0x8FC9: 0x785D, //CJK UNIFIED IDEOGRAPH - 0x8FCA: 0x7901, //CJK UNIFIED IDEOGRAPH - 0x8FCB: 0x7965, //CJK UNIFIED IDEOGRAPH - 0x8FCC: 0x79F0, //CJK UNIFIED IDEOGRAPH - 0x8FCD: 0x7AE0, //CJK UNIFIED IDEOGRAPH - 0x8FCE: 0x7B11, //CJK UNIFIED IDEOGRAPH - 0x8FCF: 0x7CA7, //CJK UNIFIED IDEOGRAPH - 0x8FD0: 0x7D39, //CJK UNIFIED IDEOGRAPH - 0x8FD1: 0x8096, //CJK UNIFIED IDEOGRAPH - 0x8FD2: 0x83D6, //CJK UNIFIED IDEOGRAPH - 0x8FD3: 0x848B, //CJK UNIFIED IDEOGRAPH - 0x8FD4: 0x8549, //CJK UNIFIED IDEOGRAPH - 0x8FD5: 0x885D, //CJK UNIFIED IDEOGRAPH - 0x8FD6: 0x88F3, //CJK UNIFIED IDEOGRAPH - 0x8FD7: 0x8A1F, //CJK UNIFIED IDEOGRAPH - 0x8FD8: 0x8A3C, //CJK UNIFIED IDEOGRAPH - 0x8FD9: 0x8A54, //CJK UNIFIED IDEOGRAPH - 0x8FDA: 0x8A73, //CJK UNIFIED IDEOGRAPH - 0x8FDB: 0x8C61, //CJK UNIFIED IDEOGRAPH - 0x8FDC: 0x8CDE, //CJK UNIFIED IDEOGRAPH - 0x8FDD: 0x91A4, //CJK UNIFIED IDEOGRAPH - 0x8FDE: 0x9266, //CJK UNIFIED IDEOGRAPH - 0x8FDF: 0x937E, //CJK UNIFIED IDEOGRAPH - 0x8FE0: 0x9418, //CJK UNIFIED IDEOGRAPH - 0x8FE1: 0x969C, //CJK UNIFIED IDEOGRAPH - 0x8FE2: 0x9798, //CJK UNIFIED IDEOGRAPH - 0x8FE3: 0x4E0A, //CJK UNIFIED IDEOGRAPH - 0x8FE4: 0x4E08, //CJK UNIFIED IDEOGRAPH - 0x8FE5: 0x4E1E, //CJK UNIFIED IDEOGRAPH - 0x8FE6: 0x4E57, //CJK UNIFIED IDEOGRAPH - 0x8FE7: 0x5197, //CJK UNIFIED IDEOGRAPH - 0x8FE8: 0x5270, //CJK UNIFIED IDEOGRAPH - 0x8FE9: 0x57CE, //CJK UNIFIED IDEOGRAPH - 0x8FEA: 0x5834, //CJK UNIFIED IDEOGRAPH - 0x8FEB: 0x58CC, //CJK UNIFIED IDEOGRAPH - 0x8FEC: 0x5B22, //CJK UNIFIED IDEOGRAPH - 0x8FED: 0x5E38, //CJK UNIFIED IDEOGRAPH - 0x8FEE: 0x60C5, //CJK UNIFIED IDEOGRAPH - 0x8FEF: 0x64FE, //CJK UNIFIED IDEOGRAPH - 0x8FF0: 0x6761, //CJK UNIFIED IDEOGRAPH - 0x8FF1: 0x6756, //CJK UNIFIED IDEOGRAPH - 0x8FF2: 0x6D44, //CJK UNIFIED IDEOGRAPH - 0x8FF3: 0x72B6, //CJK UNIFIED IDEOGRAPH - 0x8FF4: 0x7573, //CJK UNIFIED IDEOGRAPH - 0x8FF5: 0x7A63, //CJK UNIFIED IDEOGRAPH - 0x8FF6: 0x84B8, //CJK UNIFIED IDEOGRAPH - 0x8FF7: 0x8B72, //CJK UNIFIED IDEOGRAPH - 0x8FF8: 0x91B8, //CJK UNIFIED IDEOGRAPH - 0x8FF9: 0x9320, //CJK UNIFIED IDEOGRAPH - 0x8FFA: 0x5631, //CJK UNIFIED IDEOGRAPH - 0x8FFB: 0x57F4, //CJK UNIFIED IDEOGRAPH - 0x8FFC: 0x98FE, //CJK UNIFIED IDEOGRAPH - 0x9040: 0x62ED, //CJK UNIFIED IDEOGRAPH - 0x9041: 0x690D, //CJK UNIFIED IDEOGRAPH - 0x9042: 0x6B96, //CJK UNIFIED IDEOGRAPH - 0x9043: 0x71ED, //CJK UNIFIED IDEOGRAPH - 0x9044: 0x7E54, //CJK UNIFIED IDEOGRAPH - 0x9045: 0x8077, //CJK UNIFIED IDEOGRAPH - 0x9046: 0x8272, //CJK UNIFIED IDEOGRAPH - 0x9047: 0x89E6, //CJK UNIFIED IDEOGRAPH - 0x9048: 0x98DF, //CJK UNIFIED IDEOGRAPH - 0x9049: 0x8755, //CJK UNIFIED IDEOGRAPH - 0x904A: 0x8FB1, //CJK UNIFIED IDEOGRAPH - 0x904B: 0x5C3B, //CJK UNIFIED IDEOGRAPH - 0x904C: 0x4F38, //CJK UNIFIED IDEOGRAPH - 0x904D: 0x4FE1, //CJK UNIFIED IDEOGRAPH - 0x904E: 0x4FB5, //CJK UNIFIED IDEOGRAPH - 0x904F: 0x5507, //CJK UNIFIED IDEOGRAPH - 0x9050: 0x5A20, //CJK UNIFIED IDEOGRAPH - 0x9051: 0x5BDD, //CJK UNIFIED IDEOGRAPH - 0x9052: 0x5BE9, //CJK UNIFIED IDEOGRAPH - 0x9053: 0x5FC3, //CJK UNIFIED IDEOGRAPH - 0x9054: 0x614E, //CJK UNIFIED IDEOGRAPH - 0x9055: 0x632F, //CJK UNIFIED IDEOGRAPH - 0x9056: 0x65B0, //CJK UNIFIED IDEOGRAPH - 0x9057: 0x664B, //CJK UNIFIED IDEOGRAPH - 0x9058: 0x68EE, //CJK UNIFIED IDEOGRAPH - 0x9059: 0x699B, //CJK UNIFIED IDEOGRAPH - 0x905A: 0x6D78, //CJK UNIFIED IDEOGRAPH - 0x905B: 0x6DF1, //CJK UNIFIED IDEOGRAPH - 0x905C: 0x7533, //CJK UNIFIED IDEOGRAPH - 0x905D: 0x75B9, //CJK UNIFIED IDEOGRAPH - 0x905E: 0x771F, //CJK UNIFIED IDEOGRAPH - 0x905F: 0x795E, //CJK UNIFIED IDEOGRAPH - 0x9060: 0x79E6, //CJK UNIFIED IDEOGRAPH - 0x9061: 0x7D33, //CJK UNIFIED IDEOGRAPH - 0x9062: 0x81E3, //CJK UNIFIED IDEOGRAPH - 0x9063: 0x82AF, //CJK UNIFIED IDEOGRAPH - 0x9064: 0x85AA, //CJK UNIFIED IDEOGRAPH - 0x9065: 0x89AA, //CJK UNIFIED IDEOGRAPH - 0x9066: 0x8A3A, //CJK UNIFIED IDEOGRAPH - 0x9067: 0x8EAB, //CJK UNIFIED IDEOGRAPH - 0x9068: 0x8F9B, //CJK UNIFIED IDEOGRAPH - 0x9069: 0x9032, //CJK UNIFIED IDEOGRAPH - 0x906A: 0x91DD, //CJK UNIFIED IDEOGRAPH - 0x906B: 0x9707, //CJK UNIFIED IDEOGRAPH - 0x906C: 0x4EBA, //CJK UNIFIED IDEOGRAPH - 0x906D: 0x4EC1, //CJK UNIFIED IDEOGRAPH - 0x906E: 0x5203, //CJK UNIFIED IDEOGRAPH - 0x906F: 0x5875, //CJK UNIFIED IDEOGRAPH - 0x9070: 0x58EC, //CJK UNIFIED IDEOGRAPH - 0x9071: 0x5C0B, //CJK UNIFIED IDEOGRAPH - 0x9072: 0x751A, //CJK UNIFIED IDEOGRAPH - 0x9073: 0x5C3D, //CJK UNIFIED IDEOGRAPH - 0x9074: 0x814E, //CJK UNIFIED IDEOGRAPH - 0x9075: 0x8A0A, //CJK UNIFIED IDEOGRAPH - 0x9076: 0x8FC5, //CJK UNIFIED IDEOGRAPH - 0x9077: 0x9663, //CJK UNIFIED IDEOGRAPH - 0x9078: 0x976D, //CJK UNIFIED IDEOGRAPH - 0x9079: 0x7B25, //CJK UNIFIED IDEOGRAPH - 0x907A: 0x8ACF, //CJK UNIFIED IDEOGRAPH - 0x907B: 0x9808, //CJK UNIFIED IDEOGRAPH - 0x907C: 0x9162, //CJK UNIFIED IDEOGRAPH - 0x907D: 0x56F3, //CJK UNIFIED IDEOGRAPH - 0x907E: 0x53A8, //CJK UNIFIED IDEOGRAPH - 0x9080: 0x9017, //CJK UNIFIED IDEOGRAPH - 0x9081: 0x5439, //CJK UNIFIED IDEOGRAPH - 0x9082: 0x5782, //CJK UNIFIED IDEOGRAPH - 0x9083: 0x5E25, //CJK UNIFIED IDEOGRAPH - 0x9084: 0x63A8, //CJK UNIFIED IDEOGRAPH - 0x9085: 0x6C34, //CJK UNIFIED IDEOGRAPH - 0x9086: 0x708A, //CJK UNIFIED IDEOGRAPH - 0x9087: 0x7761, //CJK UNIFIED IDEOGRAPH - 0x9088: 0x7C8B, //CJK UNIFIED IDEOGRAPH - 0x9089: 0x7FE0, //CJK UNIFIED IDEOGRAPH - 0x908A: 0x8870, //CJK UNIFIED IDEOGRAPH - 0x908B: 0x9042, //CJK UNIFIED IDEOGRAPH - 0x908C: 0x9154, //CJK UNIFIED IDEOGRAPH - 0x908D: 0x9310, //CJK UNIFIED IDEOGRAPH - 0x908E: 0x9318, //CJK UNIFIED IDEOGRAPH - 0x908F: 0x968F, //CJK UNIFIED IDEOGRAPH - 0x9090: 0x745E, //CJK UNIFIED IDEOGRAPH - 0x9091: 0x9AC4, //CJK UNIFIED IDEOGRAPH - 0x9092: 0x5D07, //CJK UNIFIED IDEOGRAPH - 0x9093: 0x5D69, //CJK UNIFIED IDEOGRAPH - 0x9094: 0x6570, //CJK UNIFIED IDEOGRAPH - 0x9095: 0x67A2, //CJK UNIFIED IDEOGRAPH - 0x9096: 0x8DA8, //CJK UNIFIED IDEOGRAPH - 0x9097: 0x96DB, //CJK UNIFIED IDEOGRAPH - 0x9098: 0x636E, //CJK UNIFIED IDEOGRAPH - 0x9099: 0x6749, //CJK UNIFIED IDEOGRAPH - 0x909A: 0x6919, //CJK UNIFIED IDEOGRAPH - 0x909B: 0x83C5, //CJK UNIFIED IDEOGRAPH - 0x909C: 0x9817, //CJK UNIFIED IDEOGRAPH - 0x909D: 0x96C0, //CJK UNIFIED IDEOGRAPH - 0x909E: 0x88FE, //CJK UNIFIED IDEOGRAPH - 0x909F: 0x6F84, //CJK UNIFIED IDEOGRAPH - 0x90A0: 0x647A, //CJK UNIFIED IDEOGRAPH - 0x90A1: 0x5BF8, //CJK UNIFIED IDEOGRAPH - 0x90A2: 0x4E16, //CJK UNIFIED IDEOGRAPH - 0x90A3: 0x702C, //CJK UNIFIED IDEOGRAPH - 0x90A4: 0x755D, //CJK UNIFIED IDEOGRAPH - 0x90A5: 0x662F, //CJK UNIFIED IDEOGRAPH - 0x90A6: 0x51C4, //CJK UNIFIED IDEOGRAPH - 0x90A7: 0x5236, //CJK UNIFIED IDEOGRAPH - 0x90A8: 0x52E2, //CJK UNIFIED IDEOGRAPH - 0x90A9: 0x59D3, //CJK UNIFIED IDEOGRAPH - 0x90AA: 0x5F81, //CJK UNIFIED IDEOGRAPH - 0x90AB: 0x6027, //CJK UNIFIED IDEOGRAPH - 0x90AC: 0x6210, //CJK UNIFIED IDEOGRAPH - 0x90AD: 0x653F, //CJK UNIFIED IDEOGRAPH - 0x90AE: 0x6574, //CJK UNIFIED IDEOGRAPH - 0x90AF: 0x661F, //CJK UNIFIED IDEOGRAPH - 0x90B0: 0x6674, //CJK UNIFIED IDEOGRAPH - 0x90B1: 0x68F2, //CJK UNIFIED IDEOGRAPH - 0x90B2: 0x6816, //CJK UNIFIED IDEOGRAPH - 0x90B3: 0x6B63, //CJK UNIFIED IDEOGRAPH - 0x90B4: 0x6E05, //CJK UNIFIED IDEOGRAPH - 0x90B5: 0x7272, //CJK UNIFIED IDEOGRAPH - 0x90B6: 0x751F, //CJK UNIFIED IDEOGRAPH - 0x90B7: 0x76DB, //CJK UNIFIED IDEOGRAPH - 0x90B8: 0x7CBE, //CJK UNIFIED IDEOGRAPH - 0x90B9: 0x8056, //CJK UNIFIED IDEOGRAPH - 0x90BA: 0x58F0, //CJK UNIFIED IDEOGRAPH - 0x90BB: 0x88FD, //CJK UNIFIED IDEOGRAPH - 0x90BC: 0x897F, //CJK UNIFIED IDEOGRAPH - 0x90BD: 0x8AA0, //CJK UNIFIED IDEOGRAPH - 0x90BE: 0x8A93, //CJK UNIFIED IDEOGRAPH - 0x90BF: 0x8ACB, //CJK UNIFIED IDEOGRAPH - 0x90C0: 0x901D, //CJK UNIFIED IDEOGRAPH - 0x90C1: 0x9192, //CJK UNIFIED IDEOGRAPH - 0x90C2: 0x9752, //CJK UNIFIED IDEOGRAPH - 0x90C3: 0x9759, //CJK UNIFIED IDEOGRAPH - 0x90C4: 0x6589, //CJK UNIFIED IDEOGRAPH - 0x90C5: 0x7A0E, //CJK UNIFIED IDEOGRAPH - 0x90C6: 0x8106, //CJK UNIFIED IDEOGRAPH - 0x90C7: 0x96BB, //CJK UNIFIED IDEOGRAPH - 0x90C8: 0x5E2D, //CJK UNIFIED IDEOGRAPH - 0x90C9: 0x60DC, //CJK UNIFIED IDEOGRAPH - 0x90CA: 0x621A, //CJK UNIFIED IDEOGRAPH - 0x90CB: 0x65A5, //CJK UNIFIED IDEOGRAPH - 0x90CC: 0x6614, //CJK UNIFIED IDEOGRAPH - 0x90CD: 0x6790, //CJK UNIFIED IDEOGRAPH - 0x90CE: 0x77F3, //CJK UNIFIED IDEOGRAPH - 0x90CF: 0x7A4D, //CJK UNIFIED IDEOGRAPH - 0x90D0: 0x7C4D, //CJK UNIFIED IDEOGRAPH - 0x90D1: 0x7E3E, //CJK UNIFIED IDEOGRAPH - 0x90D2: 0x810A, //CJK UNIFIED IDEOGRAPH - 0x90D3: 0x8CAC, //CJK UNIFIED IDEOGRAPH - 0x90D4: 0x8D64, //CJK UNIFIED IDEOGRAPH - 0x90D5: 0x8DE1, //CJK UNIFIED IDEOGRAPH - 0x90D6: 0x8E5F, //CJK UNIFIED IDEOGRAPH - 0x90D7: 0x78A9, //CJK UNIFIED IDEOGRAPH - 0x90D8: 0x5207, //CJK UNIFIED IDEOGRAPH - 0x90D9: 0x62D9, //CJK UNIFIED IDEOGRAPH - 0x90DA: 0x63A5, //CJK UNIFIED IDEOGRAPH - 0x90DB: 0x6442, //CJK UNIFIED IDEOGRAPH - 0x90DC: 0x6298, //CJK UNIFIED IDEOGRAPH - 0x90DD: 0x8A2D, //CJK UNIFIED IDEOGRAPH - 0x90DE: 0x7A83, //CJK UNIFIED IDEOGRAPH - 0x90DF: 0x7BC0, //CJK UNIFIED IDEOGRAPH - 0x90E0: 0x8AAC, //CJK UNIFIED IDEOGRAPH - 0x90E1: 0x96EA, //CJK UNIFIED IDEOGRAPH - 0x90E2: 0x7D76, //CJK UNIFIED IDEOGRAPH - 0x90E3: 0x820C, //CJK UNIFIED IDEOGRAPH - 0x90E4: 0x8749, //CJK UNIFIED IDEOGRAPH - 0x90E5: 0x4ED9, //CJK UNIFIED IDEOGRAPH - 0x90E6: 0x5148, //CJK UNIFIED IDEOGRAPH - 0x90E7: 0x5343, //CJK UNIFIED IDEOGRAPH - 0x90E8: 0x5360, //CJK UNIFIED IDEOGRAPH - 0x90E9: 0x5BA3, //CJK UNIFIED IDEOGRAPH - 0x90EA: 0x5C02, //CJK UNIFIED IDEOGRAPH - 0x90EB: 0x5C16, //CJK UNIFIED IDEOGRAPH - 0x90EC: 0x5DDD, //CJK UNIFIED IDEOGRAPH - 0x90ED: 0x6226, //CJK UNIFIED IDEOGRAPH - 0x90EE: 0x6247, //CJK UNIFIED IDEOGRAPH - 0x90EF: 0x64B0, //CJK UNIFIED IDEOGRAPH - 0x90F0: 0x6813, //CJK UNIFIED IDEOGRAPH - 0x90F1: 0x6834, //CJK UNIFIED IDEOGRAPH - 0x90F2: 0x6CC9, //CJK UNIFIED IDEOGRAPH - 0x90F3: 0x6D45, //CJK UNIFIED IDEOGRAPH - 0x90F4: 0x6D17, //CJK UNIFIED IDEOGRAPH - 0x90F5: 0x67D3, //CJK UNIFIED IDEOGRAPH - 0x90F6: 0x6F5C, //CJK UNIFIED IDEOGRAPH - 0x90F7: 0x714E, //CJK UNIFIED IDEOGRAPH - 0x90F8: 0x717D, //CJK UNIFIED IDEOGRAPH - 0x90F9: 0x65CB, //CJK UNIFIED IDEOGRAPH - 0x90FA: 0x7A7F, //CJK UNIFIED IDEOGRAPH - 0x90FB: 0x7BAD, //CJK UNIFIED IDEOGRAPH - 0x90FC: 0x7DDA, //CJK UNIFIED IDEOGRAPH - 0x9140: 0x7E4A, //CJK UNIFIED IDEOGRAPH - 0x9141: 0x7FA8, //CJK UNIFIED IDEOGRAPH - 0x9142: 0x817A, //CJK UNIFIED IDEOGRAPH - 0x9143: 0x821B, //CJK UNIFIED IDEOGRAPH - 0x9144: 0x8239, //CJK UNIFIED IDEOGRAPH - 0x9145: 0x85A6, //CJK UNIFIED IDEOGRAPH - 0x9146: 0x8A6E, //CJK UNIFIED IDEOGRAPH - 0x9147: 0x8CCE, //CJK UNIFIED IDEOGRAPH - 0x9148: 0x8DF5, //CJK UNIFIED IDEOGRAPH - 0x9149: 0x9078, //CJK UNIFIED IDEOGRAPH - 0x914A: 0x9077, //CJK UNIFIED IDEOGRAPH - 0x914B: 0x92AD, //CJK UNIFIED IDEOGRAPH - 0x914C: 0x9291, //CJK UNIFIED IDEOGRAPH - 0x914D: 0x9583, //CJK UNIFIED IDEOGRAPH - 0x914E: 0x9BAE, //CJK UNIFIED IDEOGRAPH - 0x914F: 0x524D, //CJK UNIFIED IDEOGRAPH - 0x9150: 0x5584, //CJK UNIFIED IDEOGRAPH - 0x9151: 0x6F38, //CJK UNIFIED IDEOGRAPH - 0x9152: 0x7136, //CJK UNIFIED IDEOGRAPH - 0x9153: 0x5168, //CJK UNIFIED IDEOGRAPH - 0x9154: 0x7985, //CJK UNIFIED IDEOGRAPH - 0x9155: 0x7E55, //CJK UNIFIED IDEOGRAPH - 0x9156: 0x81B3, //CJK UNIFIED IDEOGRAPH - 0x9157: 0x7CCE, //CJK UNIFIED IDEOGRAPH - 0x9158: 0x564C, //CJK UNIFIED IDEOGRAPH - 0x9159: 0x5851, //CJK UNIFIED IDEOGRAPH - 0x915A: 0x5CA8, //CJK UNIFIED IDEOGRAPH - 0x915B: 0x63AA, //CJK UNIFIED IDEOGRAPH - 0x915C: 0x66FE, //CJK UNIFIED IDEOGRAPH - 0x915D: 0x66FD, //CJK UNIFIED IDEOGRAPH - 0x915E: 0x695A, //CJK UNIFIED IDEOGRAPH - 0x915F: 0x72D9, //CJK UNIFIED IDEOGRAPH - 0x9160: 0x758F, //CJK UNIFIED IDEOGRAPH - 0x9161: 0x758E, //CJK UNIFIED IDEOGRAPH - 0x9162: 0x790E, //CJK UNIFIED IDEOGRAPH - 0x9163: 0x7956, //CJK UNIFIED IDEOGRAPH - 0x9164: 0x79DF, //CJK UNIFIED IDEOGRAPH - 0x9165: 0x7C97, //CJK UNIFIED IDEOGRAPH - 0x9166: 0x7D20, //CJK UNIFIED IDEOGRAPH - 0x9167: 0x7D44, //CJK UNIFIED IDEOGRAPH - 0x9168: 0x8607, //CJK UNIFIED IDEOGRAPH - 0x9169: 0x8A34, //CJK UNIFIED IDEOGRAPH - 0x916A: 0x963B, //CJK UNIFIED IDEOGRAPH - 0x916B: 0x9061, //CJK UNIFIED IDEOGRAPH - 0x916C: 0x9F20, //CJK UNIFIED IDEOGRAPH - 0x916D: 0x50E7, //CJK UNIFIED IDEOGRAPH - 0x916E: 0x5275, //CJK UNIFIED IDEOGRAPH - 0x916F: 0x53CC, //CJK UNIFIED IDEOGRAPH - 0x9170: 0x53E2, //CJK UNIFIED IDEOGRAPH - 0x9171: 0x5009, //CJK UNIFIED IDEOGRAPH - 0x9172: 0x55AA, //CJK UNIFIED IDEOGRAPH - 0x9173: 0x58EE, //CJK UNIFIED IDEOGRAPH - 0x9174: 0x594F, //CJK UNIFIED IDEOGRAPH - 0x9175: 0x723D, //CJK UNIFIED IDEOGRAPH - 0x9176: 0x5B8B, //CJK UNIFIED IDEOGRAPH - 0x9177: 0x5C64, //CJK UNIFIED IDEOGRAPH - 0x9178: 0x531D, //CJK UNIFIED IDEOGRAPH - 0x9179: 0x60E3, //CJK UNIFIED IDEOGRAPH - 0x917A: 0x60F3, //CJK UNIFIED IDEOGRAPH - 0x917B: 0x635C, //CJK UNIFIED IDEOGRAPH - 0x917C: 0x6383, //CJK UNIFIED IDEOGRAPH - 0x917D: 0x633F, //CJK UNIFIED IDEOGRAPH - 0x917E: 0x63BB, //CJK UNIFIED IDEOGRAPH - 0x9180: 0x64CD, //CJK UNIFIED IDEOGRAPH - 0x9181: 0x65E9, //CJK UNIFIED IDEOGRAPH - 0x9182: 0x66F9, //CJK UNIFIED IDEOGRAPH - 0x9183: 0x5DE3, //CJK UNIFIED IDEOGRAPH - 0x9184: 0x69CD, //CJK UNIFIED IDEOGRAPH - 0x9185: 0x69FD, //CJK UNIFIED IDEOGRAPH - 0x9186: 0x6F15, //CJK UNIFIED IDEOGRAPH - 0x9187: 0x71E5, //CJK UNIFIED IDEOGRAPH - 0x9188: 0x4E89, //CJK UNIFIED IDEOGRAPH - 0x9189: 0x75E9, //CJK UNIFIED IDEOGRAPH - 0x918A: 0x76F8, //CJK UNIFIED IDEOGRAPH - 0x918B: 0x7A93, //CJK UNIFIED IDEOGRAPH - 0x918C: 0x7CDF, //CJK UNIFIED IDEOGRAPH - 0x918D: 0x7DCF, //CJK UNIFIED IDEOGRAPH - 0x918E: 0x7D9C, //CJK UNIFIED IDEOGRAPH - 0x918F: 0x8061, //CJK UNIFIED IDEOGRAPH - 0x9190: 0x8349, //CJK UNIFIED IDEOGRAPH - 0x9191: 0x8358, //CJK UNIFIED IDEOGRAPH - 0x9192: 0x846C, //CJK UNIFIED IDEOGRAPH - 0x9193: 0x84BC, //CJK UNIFIED IDEOGRAPH - 0x9194: 0x85FB, //CJK UNIFIED IDEOGRAPH - 0x9195: 0x88C5, //CJK UNIFIED IDEOGRAPH - 0x9196: 0x8D70, //CJK UNIFIED IDEOGRAPH - 0x9197: 0x9001, //CJK UNIFIED IDEOGRAPH - 0x9198: 0x906D, //CJK UNIFIED IDEOGRAPH - 0x9199: 0x9397, //CJK UNIFIED IDEOGRAPH - 0x919A: 0x971C, //CJK UNIFIED IDEOGRAPH - 0x919B: 0x9A12, //CJK UNIFIED IDEOGRAPH - 0x919C: 0x50CF, //CJK UNIFIED IDEOGRAPH - 0x919D: 0x5897, //CJK UNIFIED IDEOGRAPH - 0x919E: 0x618E, //CJK UNIFIED IDEOGRAPH - 0x919F: 0x81D3, //CJK UNIFIED IDEOGRAPH - 0x91A0: 0x8535, //CJK UNIFIED IDEOGRAPH - 0x91A1: 0x8D08, //CJK UNIFIED IDEOGRAPH - 0x91A2: 0x9020, //CJK UNIFIED IDEOGRAPH - 0x91A3: 0x4FC3, //CJK UNIFIED IDEOGRAPH - 0x91A4: 0x5074, //CJK UNIFIED IDEOGRAPH - 0x91A5: 0x5247, //CJK UNIFIED IDEOGRAPH - 0x91A6: 0x5373, //CJK UNIFIED IDEOGRAPH - 0x91A7: 0x606F, //CJK UNIFIED IDEOGRAPH - 0x91A8: 0x6349, //CJK UNIFIED IDEOGRAPH - 0x91A9: 0x675F, //CJK UNIFIED IDEOGRAPH - 0x91AA: 0x6E2C, //CJK UNIFIED IDEOGRAPH - 0x91AB: 0x8DB3, //CJK UNIFIED IDEOGRAPH - 0x91AC: 0x901F, //CJK UNIFIED IDEOGRAPH - 0x91AD: 0x4FD7, //CJK UNIFIED IDEOGRAPH - 0x91AE: 0x5C5E, //CJK UNIFIED IDEOGRAPH - 0x91AF: 0x8CCA, //CJK UNIFIED IDEOGRAPH - 0x91B0: 0x65CF, //CJK UNIFIED IDEOGRAPH - 0x91B1: 0x7D9A, //CJK UNIFIED IDEOGRAPH - 0x91B2: 0x5352, //CJK UNIFIED IDEOGRAPH - 0x91B3: 0x8896, //CJK UNIFIED IDEOGRAPH - 0x91B4: 0x5176, //CJK UNIFIED IDEOGRAPH - 0x91B5: 0x63C3, //CJK UNIFIED IDEOGRAPH - 0x91B6: 0x5B58, //CJK UNIFIED IDEOGRAPH - 0x91B7: 0x5B6B, //CJK UNIFIED IDEOGRAPH - 0x91B8: 0x5C0A, //CJK UNIFIED IDEOGRAPH - 0x91B9: 0x640D, //CJK UNIFIED IDEOGRAPH - 0x91BA: 0x6751, //CJK UNIFIED IDEOGRAPH - 0x91BB: 0x905C, //CJK UNIFIED IDEOGRAPH - 0x91BC: 0x4ED6, //CJK UNIFIED IDEOGRAPH - 0x91BD: 0x591A, //CJK UNIFIED IDEOGRAPH - 0x91BE: 0x592A, //CJK UNIFIED IDEOGRAPH - 0x91BF: 0x6C70, //CJK UNIFIED IDEOGRAPH - 0x91C0: 0x8A51, //CJK UNIFIED IDEOGRAPH - 0x91C1: 0x553E, //CJK UNIFIED IDEOGRAPH - 0x91C2: 0x5815, //CJK UNIFIED IDEOGRAPH - 0x91C3: 0x59A5, //CJK UNIFIED IDEOGRAPH - 0x91C4: 0x60F0, //CJK UNIFIED IDEOGRAPH - 0x91C5: 0x6253, //CJK UNIFIED IDEOGRAPH - 0x91C6: 0x67C1, //CJK UNIFIED IDEOGRAPH - 0x91C7: 0x8235, //CJK UNIFIED IDEOGRAPH - 0x91C8: 0x6955, //CJK UNIFIED IDEOGRAPH - 0x91C9: 0x9640, //CJK UNIFIED IDEOGRAPH - 0x91CA: 0x99C4, //CJK UNIFIED IDEOGRAPH - 0x91CB: 0x9A28, //CJK UNIFIED IDEOGRAPH - 0x91CC: 0x4F53, //CJK UNIFIED IDEOGRAPH - 0x91CD: 0x5806, //CJK UNIFIED IDEOGRAPH - 0x91CE: 0x5BFE, //CJK UNIFIED IDEOGRAPH - 0x91CF: 0x8010, //CJK UNIFIED IDEOGRAPH - 0x91D0: 0x5CB1, //CJK UNIFIED IDEOGRAPH - 0x91D1: 0x5E2F, //CJK UNIFIED IDEOGRAPH - 0x91D2: 0x5F85, //CJK UNIFIED IDEOGRAPH - 0x91D3: 0x6020, //CJK UNIFIED IDEOGRAPH - 0x91D4: 0x614B, //CJK UNIFIED IDEOGRAPH - 0x91D5: 0x6234, //CJK UNIFIED IDEOGRAPH - 0x91D6: 0x66FF, //CJK UNIFIED IDEOGRAPH - 0x91D7: 0x6CF0, //CJK UNIFIED IDEOGRAPH - 0x91D8: 0x6EDE, //CJK UNIFIED IDEOGRAPH - 0x91D9: 0x80CE, //CJK UNIFIED IDEOGRAPH - 0x91DA: 0x817F, //CJK UNIFIED IDEOGRAPH - 0x91DB: 0x82D4, //CJK UNIFIED IDEOGRAPH - 0x91DC: 0x888B, //CJK UNIFIED IDEOGRAPH - 0x91DD: 0x8CB8, //CJK UNIFIED IDEOGRAPH - 0x91DE: 0x9000, //CJK UNIFIED IDEOGRAPH - 0x91DF: 0x902E, //CJK UNIFIED IDEOGRAPH - 0x91E0: 0x968A, //CJK UNIFIED IDEOGRAPH - 0x91E1: 0x9EDB, //CJK UNIFIED IDEOGRAPH - 0x91E2: 0x9BDB, //CJK UNIFIED IDEOGRAPH - 0x91E3: 0x4EE3, //CJK UNIFIED IDEOGRAPH - 0x91E4: 0x53F0, //CJK UNIFIED IDEOGRAPH - 0x91E5: 0x5927, //CJK UNIFIED IDEOGRAPH - 0x91E6: 0x7B2C, //CJK UNIFIED IDEOGRAPH - 0x91E7: 0x918D, //CJK UNIFIED IDEOGRAPH - 0x91E8: 0x984C, //CJK UNIFIED IDEOGRAPH - 0x91E9: 0x9DF9, //CJK UNIFIED IDEOGRAPH - 0x91EA: 0x6EDD, //CJK UNIFIED IDEOGRAPH - 0x91EB: 0x7027, //CJK UNIFIED IDEOGRAPH - 0x91EC: 0x5353, //CJK UNIFIED IDEOGRAPH - 0x91ED: 0x5544, //CJK UNIFIED IDEOGRAPH - 0x91EE: 0x5B85, //CJK UNIFIED IDEOGRAPH - 0x91EF: 0x6258, //CJK UNIFIED IDEOGRAPH - 0x91F0: 0x629E, //CJK UNIFIED IDEOGRAPH - 0x91F1: 0x62D3, //CJK UNIFIED IDEOGRAPH - 0x91F2: 0x6CA2, //CJK UNIFIED IDEOGRAPH - 0x91F3: 0x6FEF, //CJK UNIFIED IDEOGRAPH - 0x91F4: 0x7422, //CJK UNIFIED IDEOGRAPH - 0x91F5: 0x8A17, //CJK UNIFIED IDEOGRAPH - 0x91F6: 0x9438, //CJK UNIFIED IDEOGRAPH - 0x91F7: 0x6FC1, //CJK UNIFIED IDEOGRAPH - 0x91F8: 0x8AFE, //CJK UNIFIED IDEOGRAPH - 0x91F9: 0x8338, //CJK UNIFIED IDEOGRAPH - 0x91FA: 0x51E7, //CJK UNIFIED IDEOGRAPH - 0x91FB: 0x86F8, //CJK UNIFIED IDEOGRAPH - 0x91FC: 0x53EA, //CJK UNIFIED IDEOGRAPH - 0x9240: 0x53E9, //CJK UNIFIED IDEOGRAPH - 0x9241: 0x4F46, //CJK UNIFIED IDEOGRAPH - 0x9242: 0x9054, //CJK UNIFIED IDEOGRAPH - 0x9243: 0x8FB0, //CJK UNIFIED IDEOGRAPH - 0x9244: 0x596A, //CJK UNIFIED IDEOGRAPH - 0x9245: 0x8131, //CJK UNIFIED IDEOGRAPH - 0x9246: 0x5DFD, //CJK UNIFIED IDEOGRAPH - 0x9247: 0x7AEA, //CJK UNIFIED IDEOGRAPH - 0x9248: 0x8FBF, //CJK UNIFIED IDEOGRAPH - 0x9249: 0x68DA, //CJK UNIFIED IDEOGRAPH - 0x924A: 0x8C37, //CJK UNIFIED IDEOGRAPH - 0x924B: 0x72F8, //CJK UNIFIED IDEOGRAPH - 0x924C: 0x9C48, //CJK UNIFIED IDEOGRAPH - 0x924D: 0x6A3D, //CJK UNIFIED IDEOGRAPH - 0x924E: 0x8AB0, //CJK UNIFIED IDEOGRAPH - 0x924F: 0x4E39, //CJK UNIFIED IDEOGRAPH - 0x9250: 0x5358, //CJK UNIFIED IDEOGRAPH - 0x9251: 0x5606, //CJK UNIFIED IDEOGRAPH - 0x9252: 0x5766, //CJK UNIFIED IDEOGRAPH - 0x9253: 0x62C5, //CJK UNIFIED IDEOGRAPH - 0x9254: 0x63A2, //CJK UNIFIED IDEOGRAPH - 0x9255: 0x65E6, //CJK UNIFIED IDEOGRAPH - 0x9256: 0x6B4E, //CJK UNIFIED IDEOGRAPH - 0x9257: 0x6DE1, //CJK UNIFIED IDEOGRAPH - 0x9258: 0x6E5B, //CJK UNIFIED IDEOGRAPH - 0x9259: 0x70AD, //CJK UNIFIED IDEOGRAPH - 0x925A: 0x77ED, //CJK UNIFIED IDEOGRAPH - 0x925B: 0x7AEF, //CJK UNIFIED IDEOGRAPH - 0x925C: 0x7BAA, //CJK UNIFIED IDEOGRAPH - 0x925D: 0x7DBB, //CJK UNIFIED IDEOGRAPH - 0x925E: 0x803D, //CJK UNIFIED IDEOGRAPH - 0x925F: 0x80C6, //CJK UNIFIED IDEOGRAPH - 0x9260: 0x86CB, //CJK UNIFIED IDEOGRAPH - 0x9261: 0x8A95, //CJK UNIFIED IDEOGRAPH - 0x9262: 0x935B, //CJK UNIFIED IDEOGRAPH - 0x9263: 0x56E3, //CJK UNIFIED IDEOGRAPH - 0x9264: 0x58C7, //CJK UNIFIED IDEOGRAPH - 0x9265: 0x5F3E, //CJK UNIFIED IDEOGRAPH - 0x9266: 0x65AD, //CJK UNIFIED IDEOGRAPH - 0x9267: 0x6696, //CJK UNIFIED IDEOGRAPH - 0x9268: 0x6A80, //CJK UNIFIED IDEOGRAPH - 0x9269: 0x6BB5, //CJK UNIFIED IDEOGRAPH - 0x926A: 0x7537, //CJK UNIFIED IDEOGRAPH - 0x926B: 0x8AC7, //CJK UNIFIED IDEOGRAPH - 0x926C: 0x5024, //CJK UNIFIED IDEOGRAPH - 0x926D: 0x77E5, //CJK UNIFIED IDEOGRAPH - 0x926E: 0x5730, //CJK UNIFIED IDEOGRAPH - 0x926F: 0x5F1B, //CJK UNIFIED IDEOGRAPH - 0x9270: 0x6065, //CJK UNIFIED IDEOGRAPH - 0x9271: 0x667A, //CJK UNIFIED IDEOGRAPH - 0x9272: 0x6C60, //CJK UNIFIED IDEOGRAPH - 0x9273: 0x75F4, //CJK UNIFIED IDEOGRAPH - 0x9274: 0x7A1A, //CJK UNIFIED IDEOGRAPH - 0x9275: 0x7F6E, //CJK UNIFIED IDEOGRAPH - 0x9276: 0x81F4, //CJK UNIFIED IDEOGRAPH - 0x9277: 0x8718, //CJK UNIFIED IDEOGRAPH - 0x9278: 0x9045, //CJK UNIFIED IDEOGRAPH - 0x9279: 0x99B3, //CJK UNIFIED IDEOGRAPH - 0x927A: 0x7BC9, //CJK UNIFIED IDEOGRAPH - 0x927B: 0x755C, //CJK UNIFIED IDEOGRAPH - 0x927C: 0x7AF9, //CJK UNIFIED IDEOGRAPH - 0x927D: 0x7B51, //CJK UNIFIED IDEOGRAPH - 0x927E: 0x84C4, //CJK UNIFIED IDEOGRAPH - 0x9280: 0x9010, //CJK UNIFIED IDEOGRAPH - 0x9281: 0x79E9, //CJK UNIFIED IDEOGRAPH - 0x9282: 0x7A92, //CJK UNIFIED IDEOGRAPH - 0x9283: 0x8336, //CJK UNIFIED IDEOGRAPH - 0x9284: 0x5AE1, //CJK UNIFIED IDEOGRAPH - 0x9285: 0x7740, //CJK UNIFIED IDEOGRAPH - 0x9286: 0x4E2D, //CJK UNIFIED IDEOGRAPH - 0x9287: 0x4EF2, //CJK UNIFIED IDEOGRAPH - 0x9288: 0x5B99, //CJK UNIFIED IDEOGRAPH - 0x9289: 0x5FE0, //CJK UNIFIED IDEOGRAPH - 0x928A: 0x62BD, //CJK UNIFIED IDEOGRAPH - 0x928B: 0x663C, //CJK UNIFIED IDEOGRAPH - 0x928C: 0x67F1, //CJK UNIFIED IDEOGRAPH - 0x928D: 0x6CE8, //CJK UNIFIED IDEOGRAPH - 0x928E: 0x866B, //CJK UNIFIED IDEOGRAPH - 0x928F: 0x8877, //CJK UNIFIED IDEOGRAPH - 0x9290: 0x8A3B, //CJK UNIFIED IDEOGRAPH - 0x9291: 0x914E, //CJK UNIFIED IDEOGRAPH - 0x9292: 0x92F3, //CJK UNIFIED IDEOGRAPH - 0x9293: 0x99D0, //CJK UNIFIED IDEOGRAPH - 0x9294: 0x6A17, //CJK UNIFIED IDEOGRAPH - 0x9295: 0x7026, //CJK UNIFIED IDEOGRAPH - 0x9296: 0x732A, //CJK UNIFIED IDEOGRAPH - 0x9297: 0x82E7, //CJK UNIFIED IDEOGRAPH - 0x9298: 0x8457, //CJK UNIFIED IDEOGRAPH - 0x9299: 0x8CAF, //CJK UNIFIED IDEOGRAPH - 0x929A: 0x4E01, //CJK UNIFIED IDEOGRAPH - 0x929B: 0x5146, //CJK UNIFIED IDEOGRAPH - 0x929C: 0x51CB, //CJK UNIFIED IDEOGRAPH - 0x929D: 0x558B, //CJK UNIFIED IDEOGRAPH - 0x929E: 0x5BF5, //CJK UNIFIED IDEOGRAPH - 0x929F: 0x5E16, //CJK UNIFIED IDEOGRAPH - 0x92A0: 0x5E33, //CJK UNIFIED IDEOGRAPH - 0x92A1: 0x5E81, //CJK UNIFIED IDEOGRAPH - 0x92A2: 0x5F14, //CJK UNIFIED IDEOGRAPH - 0x92A3: 0x5F35, //CJK UNIFIED IDEOGRAPH - 0x92A4: 0x5F6B, //CJK UNIFIED IDEOGRAPH - 0x92A5: 0x5FB4, //CJK UNIFIED IDEOGRAPH - 0x92A6: 0x61F2, //CJK UNIFIED IDEOGRAPH - 0x92A7: 0x6311, //CJK UNIFIED IDEOGRAPH - 0x92A8: 0x66A2, //CJK UNIFIED IDEOGRAPH - 0x92A9: 0x671D, //CJK UNIFIED IDEOGRAPH - 0x92AA: 0x6F6E, //CJK UNIFIED IDEOGRAPH - 0x92AB: 0x7252, //CJK UNIFIED IDEOGRAPH - 0x92AC: 0x753A, //CJK UNIFIED IDEOGRAPH - 0x92AD: 0x773A, //CJK UNIFIED IDEOGRAPH - 0x92AE: 0x8074, //CJK UNIFIED IDEOGRAPH - 0x92AF: 0x8139, //CJK UNIFIED IDEOGRAPH - 0x92B0: 0x8178, //CJK UNIFIED IDEOGRAPH - 0x92B1: 0x8776, //CJK UNIFIED IDEOGRAPH - 0x92B2: 0x8ABF, //CJK UNIFIED IDEOGRAPH - 0x92B3: 0x8ADC, //CJK UNIFIED IDEOGRAPH - 0x92B4: 0x8D85, //CJK UNIFIED IDEOGRAPH - 0x92B5: 0x8DF3, //CJK UNIFIED IDEOGRAPH - 0x92B6: 0x929A, //CJK UNIFIED IDEOGRAPH - 0x92B7: 0x9577, //CJK UNIFIED IDEOGRAPH - 0x92B8: 0x9802, //CJK UNIFIED IDEOGRAPH - 0x92B9: 0x9CE5, //CJK UNIFIED IDEOGRAPH - 0x92BA: 0x52C5, //CJK UNIFIED IDEOGRAPH - 0x92BB: 0x6357, //CJK UNIFIED IDEOGRAPH - 0x92BC: 0x76F4, //CJK UNIFIED IDEOGRAPH - 0x92BD: 0x6715, //CJK UNIFIED IDEOGRAPH - 0x92BE: 0x6C88, //CJK UNIFIED IDEOGRAPH - 0x92BF: 0x73CD, //CJK UNIFIED IDEOGRAPH - 0x92C0: 0x8CC3, //CJK UNIFIED IDEOGRAPH - 0x92C1: 0x93AE, //CJK UNIFIED IDEOGRAPH - 0x92C2: 0x9673, //CJK UNIFIED IDEOGRAPH - 0x92C3: 0x6D25, //CJK UNIFIED IDEOGRAPH - 0x92C4: 0x589C, //CJK UNIFIED IDEOGRAPH - 0x92C5: 0x690E, //CJK UNIFIED IDEOGRAPH - 0x92C6: 0x69CC, //CJK UNIFIED IDEOGRAPH - 0x92C7: 0x8FFD, //CJK UNIFIED IDEOGRAPH - 0x92C8: 0x939A, //CJK UNIFIED IDEOGRAPH - 0x92C9: 0x75DB, //CJK UNIFIED IDEOGRAPH - 0x92CA: 0x901A, //CJK UNIFIED IDEOGRAPH - 0x92CB: 0x585A, //CJK UNIFIED IDEOGRAPH - 0x92CC: 0x6802, //CJK UNIFIED IDEOGRAPH - 0x92CD: 0x63B4, //CJK UNIFIED IDEOGRAPH - 0x92CE: 0x69FB, //CJK UNIFIED IDEOGRAPH - 0x92CF: 0x4F43, //CJK UNIFIED IDEOGRAPH - 0x92D0: 0x6F2C, //CJK UNIFIED IDEOGRAPH - 0x92D1: 0x67D8, //CJK UNIFIED IDEOGRAPH - 0x92D2: 0x8FBB, //CJK UNIFIED IDEOGRAPH - 0x92D3: 0x8526, //CJK UNIFIED IDEOGRAPH - 0x92D4: 0x7DB4, //CJK UNIFIED IDEOGRAPH - 0x92D5: 0x9354, //CJK UNIFIED IDEOGRAPH - 0x92D6: 0x693F, //CJK UNIFIED IDEOGRAPH - 0x92D7: 0x6F70, //CJK UNIFIED IDEOGRAPH - 0x92D8: 0x576A, //CJK UNIFIED IDEOGRAPH - 0x92D9: 0x58F7, //CJK UNIFIED IDEOGRAPH - 0x92DA: 0x5B2C, //CJK UNIFIED IDEOGRAPH - 0x92DB: 0x7D2C, //CJK UNIFIED IDEOGRAPH - 0x92DC: 0x722A, //CJK UNIFIED IDEOGRAPH - 0x92DD: 0x540A, //CJK UNIFIED IDEOGRAPH - 0x92DE: 0x91E3, //CJK UNIFIED IDEOGRAPH - 0x92DF: 0x9DB4, //CJK UNIFIED IDEOGRAPH - 0x92E0: 0x4EAD, //CJK UNIFIED IDEOGRAPH - 0x92E1: 0x4F4E, //CJK UNIFIED IDEOGRAPH - 0x92E2: 0x505C, //CJK UNIFIED IDEOGRAPH - 0x92E3: 0x5075, //CJK UNIFIED IDEOGRAPH - 0x92E4: 0x5243, //CJK UNIFIED IDEOGRAPH - 0x92E5: 0x8C9E, //CJK UNIFIED IDEOGRAPH - 0x92E6: 0x5448, //CJK UNIFIED IDEOGRAPH - 0x92E7: 0x5824, //CJK UNIFIED IDEOGRAPH - 0x92E8: 0x5B9A, //CJK UNIFIED IDEOGRAPH - 0x92E9: 0x5E1D, //CJK UNIFIED IDEOGRAPH - 0x92EA: 0x5E95, //CJK UNIFIED IDEOGRAPH - 0x92EB: 0x5EAD, //CJK UNIFIED IDEOGRAPH - 0x92EC: 0x5EF7, //CJK UNIFIED IDEOGRAPH - 0x92ED: 0x5F1F, //CJK UNIFIED IDEOGRAPH - 0x92EE: 0x608C, //CJK UNIFIED IDEOGRAPH - 0x92EF: 0x62B5, //CJK UNIFIED IDEOGRAPH - 0x92F0: 0x633A, //CJK UNIFIED IDEOGRAPH - 0x92F1: 0x63D0, //CJK UNIFIED IDEOGRAPH - 0x92F2: 0x68AF, //CJK UNIFIED IDEOGRAPH - 0x92F3: 0x6C40, //CJK UNIFIED IDEOGRAPH - 0x92F4: 0x7887, //CJK UNIFIED IDEOGRAPH - 0x92F5: 0x798E, //CJK UNIFIED IDEOGRAPH - 0x92F6: 0x7A0B, //CJK UNIFIED IDEOGRAPH - 0x92F7: 0x7DE0, //CJK UNIFIED IDEOGRAPH - 0x92F8: 0x8247, //CJK UNIFIED IDEOGRAPH - 0x92F9: 0x8A02, //CJK UNIFIED IDEOGRAPH - 0x92FA: 0x8AE6, //CJK UNIFIED IDEOGRAPH - 0x92FB: 0x8E44, //CJK UNIFIED IDEOGRAPH - 0x92FC: 0x9013, //CJK UNIFIED IDEOGRAPH - 0x9340: 0x90B8, //CJK UNIFIED IDEOGRAPH - 0x9341: 0x912D, //CJK UNIFIED IDEOGRAPH - 0x9342: 0x91D8, //CJK UNIFIED IDEOGRAPH - 0x9343: 0x9F0E, //CJK UNIFIED IDEOGRAPH - 0x9344: 0x6CE5, //CJK UNIFIED IDEOGRAPH - 0x9345: 0x6458, //CJK UNIFIED IDEOGRAPH - 0x9346: 0x64E2, //CJK UNIFIED IDEOGRAPH - 0x9347: 0x6575, //CJK UNIFIED IDEOGRAPH - 0x9348: 0x6EF4, //CJK UNIFIED IDEOGRAPH - 0x9349: 0x7684, //CJK UNIFIED IDEOGRAPH - 0x934A: 0x7B1B, //CJK UNIFIED IDEOGRAPH - 0x934B: 0x9069, //CJK UNIFIED IDEOGRAPH - 0x934C: 0x93D1, //CJK UNIFIED IDEOGRAPH - 0x934D: 0x6EBA, //CJK UNIFIED IDEOGRAPH - 0x934E: 0x54F2, //CJK UNIFIED IDEOGRAPH - 0x934F: 0x5FB9, //CJK UNIFIED IDEOGRAPH - 0x9350: 0x64A4, //CJK UNIFIED IDEOGRAPH - 0x9351: 0x8F4D, //CJK UNIFIED IDEOGRAPH - 0x9352: 0x8FED, //CJK UNIFIED IDEOGRAPH - 0x9353: 0x9244, //CJK UNIFIED IDEOGRAPH - 0x9354: 0x5178, //CJK UNIFIED IDEOGRAPH - 0x9355: 0x586B, //CJK UNIFIED IDEOGRAPH - 0x9356: 0x5929, //CJK UNIFIED IDEOGRAPH - 0x9357: 0x5C55, //CJK UNIFIED IDEOGRAPH - 0x9358: 0x5E97, //CJK UNIFIED IDEOGRAPH - 0x9359: 0x6DFB, //CJK UNIFIED IDEOGRAPH - 0x935A: 0x7E8F, //CJK UNIFIED IDEOGRAPH - 0x935B: 0x751C, //CJK UNIFIED IDEOGRAPH - 0x935C: 0x8CBC, //CJK UNIFIED IDEOGRAPH - 0x935D: 0x8EE2, //CJK UNIFIED IDEOGRAPH - 0x935E: 0x985B, //CJK UNIFIED IDEOGRAPH - 0x935F: 0x70B9, //CJK UNIFIED IDEOGRAPH - 0x9360: 0x4F1D, //CJK UNIFIED IDEOGRAPH - 0x9361: 0x6BBF, //CJK UNIFIED IDEOGRAPH - 0x9362: 0x6FB1, //CJK UNIFIED IDEOGRAPH - 0x9363: 0x7530, //CJK UNIFIED IDEOGRAPH - 0x9364: 0x96FB, //CJK UNIFIED IDEOGRAPH - 0x9365: 0x514E, //CJK UNIFIED IDEOGRAPH - 0x9366: 0x5410, //CJK UNIFIED IDEOGRAPH - 0x9367: 0x5835, //CJK UNIFIED IDEOGRAPH - 0x9368: 0x5857, //CJK UNIFIED IDEOGRAPH - 0x9369: 0x59AC, //CJK UNIFIED IDEOGRAPH - 0x936A: 0x5C60, //CJK UNIFIED IDEOGRAPH - 0x936B: 0x5F92, //CJK UNIFIED IDEOGRAPH - 0x936C: 0x6597, //CJK UNIFIED IDEOGRAPH - 0x936D: 0x675C, //CJK UNIFIED IDEOGRAPH - 0x936E: 0x6E21, //CJK UNIFIED IDEOGRAPH - 0x936F: 0x767B, //CJK UNIFIED IDEOGRAPH - 0x9370: 0x83DF, //CJK UNIFIED IDEOGRAPH - 0x9371: 0x8CED, //CJK UNIFIED IDEOGRAPH - 0x9372: 0x9014, //CJK UNIFIED IDEOGRAPH - 0x9373: 0x90FD, //CJK UNIFIED IDEOGRAPH - 0x9374: 0x934D, //CJK UNIFIED IDEOGRAPH - 0x9375: 0x7825, //CJK UNIFIED IDEOGRAPH - 0x9376: 0x783A, //CJK UNIFIED IDEOGRAPH - 0x9377: 0x52AA, //CJK UNIFIED IDEOGRAPH - 0x9378: 0x5EA6, //CJK UNIFIED IDEOGRAPH - 0x9379: 0x571F, //CJK UNIFIED IDEOGRAPH - 0x937A: 0x5974, //CJK UNIFIED IDEOGRAPH - 0x937B: 0x6012, //CJK UNIFIED IDEOGRAPH - 0x937C: 0x5012, //CJK UNIFIED IDEOGRAPH - 0x937D: 0x515A, //CJK UNIFIED IDEOGRAPH - 0x937E: 0x51AC, //CJK UNIFIED IDEOGRAPH - 0x9380: 0x51CD, //CJK UNIFIED IDEOGRAPH - 0x9381: 0x5200, //CJK UNIFIED IDEOGRAPH - 0x9382: 0x5510, //CJK UNIFIED IDEOGRAPH - 0x9383: 0x5854, //CJK UNIFIED IDEOGRAPH - 0x9384: 0x5858, //CJK UNIFIED IDEOGRAPH - 0x9385: 0x5957, //CJK UNIFIED IDEOGRAPH - 0x9386: 0x5B95, //CJK UNIFIED IDEOGRAPH - 0x9387: 0x5CF6, //CJK UNIFIED IDEOGRAPH - 0x9388: 0x5D8B, //CJK UNIFIED IDEOGRAPH - 0x9389: 0x60BC, //CJK UNIFIED IDEOGRAPH - 0x938A: 0x6295, //CJK UNIFIED IDEOGRAPH - 0x938B: 0x642D, //CJK UNIFIED IDEOGRAPH - 0x938C: 0x6771, //CJK UNIFIED IDEOGRAPH - 0x938D: 0x6843, //CJK UNIFIED IDEOGRAPH - 0x938E: 0x68BC, //CJK UNIFIED IDEOGRAPH - 0x938F: 0x68DF, //CJK UNIFIED IDEOGRAPH - 0x9390: 0x76D7, //CJK UNIFIED IDEOGRAPH - 0x9391: 0x6DD8, //CJK UNIFIED IDEOGRAPH - 0x9392: 0x6E6F, //CJK UNIFIED IDEOGRAPH - 0x9393: 0x6D9B, //CJK UNIFIED IDEOGRAPH - 0x9394: 0x706F, //CJK UNIFIED IDEOGRAPH - 0x9395: 0x71C8, //CJK UNIFIED IDEOGRAPH - 0x9396: 0x5F53, //CJK UNIFIED IDEOGRAPH - 0x9397: 0x75D8, //CJK UNIFIED IDEOGRAPH - 0x9398: 0x7977, //CJK UNIFIED IDEOGRAPH - 0x9399: 0x7B49, //CJK UNIFIED IDEOGRAPH - 0x939A: 0x7B54, //CJK UNIFIED IDEOGRAPH - 0x939B: 0x7B52, //CJK UNIFIED IDEOGRAPH - 0x939C: 0x7CD6, //CJK UNIFIED IDEOGRAPH - 0x939D: 0x7D71, //CJK UNIFIED IDEOGRAPH - 0x939E: 0x5230, //CJK UNIFIED IDEOGRAPH - 0x939F: 0x8463, //CJK UNIFIED IDEOGRAPH - 0x93A0: 0x8569, //CJK UNIFIED IDEOGRAPH - 0x93A1: 0x85E4, //CJK UNIFIED IDEOGRAPH - 0x93A2: 0x8A0E, //CJK UNIFIED IDEOGRAPH - 0x93A3: 0x8B04, //CJK UNIFIED IDEOGRAPH - 0x93A4: 0x8C46, //CJK UNIFIED IDEOGRAPH - 0x93A5: 0x8E0F, //CJK UNIFIED IDEOGRAPH - 0x93A6: 0x9003, //CJK UNIFIED IDEOGRAPH - 0x93A7: 0x900F, //CJK UNIFIED IDEOGRAPH - 0x93A8: 0x9419, //CJK UNIFIED IDEOGRAPH - 0x93A9: 0x9676, //CJK UNIFIED IDEOGRAPH - 0x93AA: 0x982D, //CJK UNIFIED IDEOGRAPH - 0x93AB: 0x9A30, //CJK UNIFIED IDEOGRAPH - 0x93AC: 0x95D8, //CJK UNIFIED IDEOGRAPH - 0x93AD: 0x50CD, //CJK UNIFIED IDEOGRAPH - 0x93AE: 0x52D5, //CJK UNIFIED IDEOGRAPH - 0x93AF: 0x540C, //CJK UNIFIED IDEOGRAPH - 0x93B0: 0x5802, //CJK UNIFIED IDEOGRAPH - 0x93B1: 0x5C0E, //CJK UNIFIED IDEOGRAPH - 0x93B2: 0x61A7, //CJK UNIFIED IDEOGRAPH - 0x93B3: 0x649E, //CJK UNIFIED IDEOGRAPH - 0x93B4: 0x6D1E, //CJK UNIFIED IDEOGRAPH - 0x93B5: 0x77B3, //CJK UNIFIED IDEOGRAPH - 0x93B6: 0x7AE5, //CJK UNIFIED IDEOGRAPH - 0x93B7: 0x80F4, //CJK UNIFIED IDEOGRAPH - 0x93B8: 0x8404, //CJK UNIFIED IDEOGRAPH - 0x93B9: 0x9053, //CJK UNIFIED IDEOGRAPH - 0x93BA: 0x9285, //CJK UNIFIED IDEOGRAPH - 0x93BB: 0x5CE0, //CJK UNIFIED IDEOGRAPH - 0x93BC: 0x9D07, //CJK UNIFIED IDEOGRAPH - 0x93BD: 0x533F, //CJK UNIFIED IDEOGRAPH - 0x93BE: 0x5F97, //CJK UNIFIED IDEOGRAPH - 0x93BF: 0x5FB3, //CJK UNIFIED IDEOGRAPH - 0x93C0: 0x6D9C, //CJK UNIFIED IDEOGRAPH - 0x93C1: 0x7279, //CJK UNIFIED IDEOGRAPH - 0x93C2: 0x7763, //CJK UNIFIED IDEOGRAPH - 0x93C3: 0x79BF, //CJK UNIFIED IDEOGRAPH - 0x93C4: 0x7BE4, //CJK UNIFIED IDEOGRAPH - 0x93C5: 0x6BD2, //CJK UNIFIED IDEOGRAPH - 0x93C6: 0x72EC, //CJK UNIFIED IDEOGRAPH - 0x93C7: 0x8AAD, //CJK UNIFIED IDEOGRAPH - 0x93C8: 0x6803, //CJK UNIFIED IDEOGRAPH - 0x93C9: 0x6A61, //CJK UNIFIED IDEOGRAPH - 0x93CA: 0x51F8, //CJK UNIFIED IDEOGRAPH - 0x93CB: 0x7A81, //CJK UNIFIED IDEOGRAPH - 0x93CC: 0x6934, //CJK UNIFIED IDEOGRAPH - 0x93CD: 0x5C4A, //CJK UNIFIED IDEOGRAPH - 0x93CE: 0x9CF6, //CJK UNIFIED IDEOGRAPH - 0x93CF: 0x82EB, //CJK UNIFIED IDEOGRAPH - 0x93D0: 0x5BC5, //CJK UNIFIED IDEOGRAPH - 0x93D1: 0x9149, //CJK UNIFIED IDEOGRAPH - 0x93D2: 0x701E, //CJK UNIFIED IDEOGRAPH - 0x93D3: 0x5678, //CJK UNIFIED IDEOGRAPH - 0x93D4: 0x5C6F, //CJK UNIFIED IDEOGRAPH - 0x93D5: 0x60C7, //CJK UNIFIED IDEOGRAPH - 0x93D6: 0x6566, //CJK UNIFIED IDEOGRAPH - 0x93D7: 0x6C8C, //CJK UNIFIED IDEOGRAPH - 0x93D8: 0x8C5A, //CJK UNIFIED IDEOGRAPH - 0x93D9: 0x9041, //CJK UNIFIED IDEOGRAPH - 0x93DA: 0x9813, //CJK UNIFIED IDEOGRAPH - 0x93DB: 0x5451, //CJK UNIFIED IDEOGRAPH - 0x93DC: 0x66C7, //CJK UNIFIED IDEOGRAPH - 0x93DD: 0x920D, //CJK UNIFIED IDEOGRAPH - 0x93DE: 0x5948, //CJK UNIFIED IDEOGRAPH - 0x93DF: 0x90A3, //CJK UNIFIED IDEOGRAPH - 0x93E0: 0x5185, //CJK UNIFIED IDEOGRAPH - 0x93E1: 0x4E4D, //CJK UNIFIED IDEOGRAPH - 0x93E2: 0x51EA, //CJK UNIFIED IDEOGRAPH - 0x93E3: 0x8599, //CJK UNIFIED IDEOGRAPH - 0x93E4: 0x8B0E, //CJK UNIFIED IDEOGRAPH - 0x93E5: 0x7058, //CJK UNIFIED IDEOGRAPH - 0x93E6: 0x637A, //CJK UNIFIED IDEOGRAPH - 0x93E7: 0x934B, //CJK UNIFIED IDEOGRAPH - 0x93E8: 0x6962, //CJK UNIFIED IDEOGRAPH - 0x93E9: 0x99B4, //CJK UNIFIED IDEOGRAPH - 0x93EA: 0x7E04, //CJK UNIFIED IDEOGRAPH - 0x93EB: 0x7577, //CJK UNIFIED IDEOGRAPH - 0x93EC: 0x5357, //CJK UNIFIED IDEOGRAPH - 0x93ED: 0x6960, //CJK UNIFIED IDEOGRAPH - 0x93EE: 0x8EDF, //CJK UNIFIED IDEOGRAPH - 0x93EF: 0x96E3, //CJK UNIFIED IDEOGRAPH - 0x93F0: 0x6C5D, //CJK UNIFIED IDEOGRAPH - 0x93F1: 0x4E8C, //CJK UNIFIED IDEOGRAPH - 0x93F2: 0x5C3C, //CJK UNIFIED IDEOGRAPH - 0x93F3: 0x5F10, //CJK UNIFIED IDEOGRAPH - 0x93F4: 0x8FE9, //CJK UNIFIED IDEOGRAPH - 0x93F5: 0x5302, //CJK UNIFIED IDEOGRAPH - 0x93F6: 0x8CD1, //CJK UNIFIED IDEOGRAPH - 0x93F7: 0x8089, //CJK UNIFIED IDEOGRAPH - 0x93F8: 0x8679, //CJK UNIFIED IDEOGRAPH - 0x93F9: 0x5EFF, //CJK UNIFIED IDEOGRAPH - 0x93FA: 0x65E5, //CJK UNIFIED IDEOGRAPH - 0x93FB: 0x4E73, //CJK UNIFIED IDEOGRAPH - 0x93FC: 0x5165, //CJK UNIFIED IDEOGRAPH - 0x9440: 0x5982, //CJK UNIFIED IDEOGRAPH - 0x9441: 0x5C3F, //CJK UNIFIED IDEOGRAPH - 0x9442: 0x97EE, //CJK UNIFIED IDEOGRAPH - 0x9443: 0x4EFB, //CJK UNIFIED IDEOGRAPH - 0x9444: 0x598A, //CJK UNIFIED IDEOGRAPH - 0x9445: 0x5FCD, //CJK UNIFIED IDEOGRAPH - 0x9446: 0x8A8D, //CJK UNIFIED IDEOGRAPH - 0x9447: 0x6FE1, //CJK UNIFIED IDEOGRAPH - 0x9448: 0x79B0, //CJK UNIFIED IDEOGRAPH - 0x9449: 0x7962, //CJK UNIFIED IDEOGRAPH - 0x944A: 0x5BE7, //CJK UNIFIED IDEOGRAPH - 0x944B: 0x8471, //CJK UNIFIED IDEOGRAPH - 0x944C: 0x732B, //CJK UNIFIED IDEOGRAPH - 0x944D: 0x71B1, //CJK UNIFIED IDEOGRAPH - 0x944E: 0x5E74, //CJK UNIFIED IDEOGRAPH - 0x944F: 0x5FF5, //CJK UNIFIED IDEOGRAPH - 0x9450: 0x637B, //CJK UNIFIED IDEOGRAPH - 0x9451: 0x649A, //CJK UNIFIED IDEOGRAPH - 0x9452: 0x71C3, //CJK UNIFIED IDEOGRAPH - 0x9453: 0x7C98, //CJK UNIFIED IDEOGRAPH - 0x9454: 0x4E43, //CJK UNIFIED IDEOGRAPH - 0x9455: 0x5EFC, //CJK UNIFIED IDEOGRAPH - 0x9456: 0x4E4B, //CJK UNIFIED IDEOGRAPH - 0x9457: 0x57DC, //CJK UNIFIED IDEOGRAPH - 0x9458: 0x56A2, //CJK UNIFIED IDEOGRAPH - 0x9459: 0x60A9, //CJK UNIFIED IDEOGRAPH - 0x945A: 0x6FC3, //CJK UNIFIED IDEOGRAPH - 0x945B: 0x7D0D, //CJK UNIFIED IDEOGRAPH - 0x945C: 0x80FD, //CJK UNIFIED IDEOGRAPH - 0x945D: 0x8133, //CJK UNIFIED IDEOGRAPH - 0x945E: 0x81BF, //CJK UNIFIED IDEOGRAPH - 0x945F: 0x8FB2, //CJK UNIFIED IDEOGRAPH - 0x9460: 0x8997, //CJK UNIFIED IDEOGRAPH - 0x9461: 0x86A4, //CJK UNIFIED IDEOGRAPH - 0x9462: 0x5DF4, //CJK UNIFIED IDEOGRAPH - 0x9463: 0x628A, //CJK UNIFIED IDEOGRAPH - 0x9464: 0x64AD, //CJK UNIFIED IDEOGRAPH - 0x9465: 0x8987, //CJK UNIFIED IDEOGRAPH - 0x9466: 0x6777, //CJK UNIFIED IDEOGRAPH - 0x9467: 0x6CE2, //CJK UNIFIED IDEOGRAPH - 0x9468: 0x6D3E, //CJK UNIFIED IDEOGRAPH - 0x9469: 0x7436, //CJK UNIFIED IDEOGRAPH - 0x946A: 0x7834, //CJK UNIFIED IDEOGRAPH - 0x946B: 0x5A46, //CJK UNIFIED IDEOGRAPH - 0x946C: 0x7F75, //CJK UNIFIED IDEOGRAPH - 0x946D: 0x82AD, //CJK UNIFIED IDEOGRAPH - 0x946E: 0x99AC, //CJK UNIFIED IDEOGRAPH - 0x946F: 0x4FF3, //CJK UNIFIED IDEOGRAPH - 0x9470: 0x5EC3, //CJK UNIFIED IDEOGRAPH - 0x9471: 0x62DD, //CJK UNIFIED IDEOGRAPH - 0x9472: 0x6392, //CJK UNIFIED IDEOGRAPH - 0x9473: 0x6557, //CJK UNIFIED IDEOGRAPH - 0x9474: 0x676F, //CJK UNIFIED IDEOGRAPH - 0x9475: 0x76C3, //CJK UNIFIED IDEOGRAPH - 0x9476: 0x724C, //CJK UNIFIED IDEOGRAPH - 0x9477: 0x80CC, //CJK UNIFIED IDEOGRAPH - 0x9478: 0x80BA, //CJK UNIFIED IDEOGRAPH - 0x9479: 0x8F29, //CJK UNIFIED IDEOGRAPH - 0x947A: 0x914D, //CJK UNIFIED IDEOGRAPH - 0x947B: 0x500D, //CJK UNIFIED IDEOGRAPH - 0x947C: 0x57F9, //CJK UNIFIED IDEOGRAPH - 0x947D: 0x5A92, //CJK UNIFIED IDEOGRAPH - 0x947E: 0x6885, //CJK UNIFIED IDEOGRAPH - 0x9480: 0x6973, //CJK UNIFIED IDEOGRAPH - 0x9481: 0x7164, //CJK UNIFIED IDEOGRAPH - 0x9482: 0x72FD, //CJK UNIFIED IDEOGRAPH - 0x9483: 0x8CB7, //CJK UNIFIED IDEOGRAPH - 0x9484: 0x58F2, //CJK UNIFIED IDEOGRAPH - 0x9485: 0x8CE0, //CJK UNIFIED IDEOGRAPH - 0x9486: 0x966A, //CJK UNIFIED IDEOGRAPH - 0x9487: 0x9019, //CJK UNIFIED IDEOGRAPH - 0x9488: 0x877F, //CJK UNIFIED IDEOGRAPH - 0x9489: 0x79E4, //CJK UNIFIED IDEOGRAPH - 0x948A: 0x77E7, //CJK UNIFIED IDEOGRAPH - 0x948B: 0x8429, //CJK UNIFIED IDEOGRAPH - 0x948C: 0x4F2F, //CJK UNIFIED IDEOGRAPH - 0x948D: 0x5265, //CJK UNIFIED IDEOGRAPH - 0x948E: 0x535A, //CJK UNIFIED IDEOGRAPH - 0x948F: 0x62CD, //CJK UNIFIED IDEOGRAPH - 0x9490: 0x67CF, //CJK UNIFIED IDEOGRAPH - 0x9491: 0x6CCA, //CJK UNIFIED IDEOGRAPH - 0x9492: 0x767D, //CJK UNIFIED IDEOGRAPH - 0x9493: 0x7B94, //CJK UNIFIED IDEOGRAPH - 0x9494: 0x7C95, //CJK UNIFIED IDEOGRAPH - 0x9495: 0x8236, //CJK UNIFIED IDEOGRAPH - 0x9496: 0x8584, //CJK UNIFIED IDEOGRAPH - 0x9497: 0x8FEB, //CJK UNIFIED IDEOGRAPH - 0x9498: 0x66DD, //CJK UNIFIED IDEOGRAPH - 0x9499: 0x6F20, //CJK UNIFIED IDEOGRAPH - 0x949A: 0x7206, //CJK UNIFIED IDEOGRAPH - 0x949B: 0x7E1B, //CJK UNIFIED IDEOGRAPH - 0x949C: 0x83AB, //CJK UNIFIED IDEOGRAPH - 0x949D: 0x99C1, //CJK UNIFIED IDEOGRAPH - 0x949E: 0x9EA6, //CJK UNIFIED IDEOGRAPH - 0x949F: 0x51FD, //CJK UNIFIED IDEOGRAPH - 0x94A0: 0x7BB1, //CJK UNIFIED IDEOGRAPH - 0x94A1: 0x7872, //CJK UNIFIED IDEOGRAPH - 0x94A2: 0x7BB8, //CJK UNIFIED IDEOGRAPH - 0x94A3: 0x8087, //CJK UNIFIED IDEOGRAPH - 0x94A4: 0x7B48, //CJK UNIFIED IDEOGRAPH - 0x94A5: 0x6AE8, //CJK UNIFIED IDEOGRAPH - 0x94A6: 0x5E61, //CJK UNIFIED IDEOGRAPH - 0x94A7: 0x808C, //CJK UNIFIED IDEOGRAPH - 0x94A8: 0x7551, //CJK UNIFIED IDEOGRAPH - 0x94A9: 0x7560, //CJK UNIFIED IDEOGRAPH - 0x94AA: 0x516B, //CJK UNIFIED IDEOGRAPH - 0x94AB: 0x9262, //CJK UNIFIED IDEOGRAPH - 0x94AC: 0x6E8C, //CJK UNIFIED IDEOGRAPH - 0x94AD: 0x767A, //CJK UNIFIED IDEOGRAPH - 0x94AE: 0x9197, //CJK UNIFIED IDEOGRAPH - 0x94AF: 0x9AEA, //CJK UNIFIED IDEOGRAPH - 0x94B0: 0x4F10, //CJK UNIFIED IDEOGRAPH - 0x94B1: 0x7F70, //CJK UNIFIED IDEOGRAPH - 0x94B2: 0x629C, //CJK UNIFIED IDEOGRAPH - 0x94B3: 0x7B4F, //CJK UNIFIED IDEOGRAPH - 0x94B4: 0x95A5, //CJK UNIFIED IDEOGRAPH - 0x94B5: 0x9CE9, //CJK UNIFIED IDEOGRAPH - 0x94B6: 0x567A, //CJK UNIFIED IDEOGRAPH - 0x94B7: 0x5859, //CJK UNIFIED IDEOGRAPH - 0x94B8: 0x86E4, //CJK UNIFIED IDEOGRAPH - 0x94B9: 0x96BC, //CJK UNIFIED IDEOGRAPH - 0x94BA: 0x4F34, //CJK UNIFIED IDEOGRAPH - 0x94BB: 0x5224, //CJK UNIFIED IDEOGRAPH - 0x94BC: 0x534A, //CJK UNIFIED IDEOGRAPH - 0x94BD: 0x53CD, //CJK UNIFIED IDEOGRAPH - 0x94BE: 0x53DB, //CJK UNIFIED IDEOGRAPH - 0x94BF: 0x5E06, //CJK UNIFIED IDEOGRAPH - 0x94C0: 0x642C, //CJK UNIFIED IDEOGRAPH - 0x94C1: 0x6591, //CJK UNIFIED IDEOGRAPH - 0x94C2: 0x677F, //CJK UNIFIED IDEOGRAPH - 0x94C3: 0x6C3E, //CJK UNIFIED IDEOGRAPH - 0x94C4: 0x6C4E, //CJK UNIFIED IDEOGRAPH - 0x94C5: 0x7248, //CJK UNIFIED IDEOGRAPH - 0x94C6: 0x72AF, //CJK UNIFIED IDEOGRAPH - 0x94C7: 0x73ED, //CJK UNIFIED IDEOGRAPH - 0x94C8: 0x7554, //CJK UNIFIED IDEOGRAPH - 0x94C9: 0x7E41, //CJK UNIFIED IDEOGRAPH - 0x94CA: 0x822C, //CJK UNIFIED IDEOGRAPH - 0x94CB: 0x85E9, //CJK UNIFIED IDEOGRAPH - 0x94CC: 0x8CA9, //CJK UNIFIED IDEOGRAPH - 0x94CD: 0x7BC4, //CJK UNIFIED IDEOGRAPH - 0x94CE: 0x91C6, //CJK UNIFIED IDEOGRAPH - 0x94CF: 0x7169, //CJK UNIFIED IDEOGRAPH - 0x94D0: 0x9812, //CJK UNIFIED IDEOGRAPH - 0x94D1: 0x98EF, //CJK UNIFIED IDEOGRAPH - 0x94D2: 0x633D, //CJK UNIFIED IDEOGRAPH - 0x94D3: 0x6669, //CJK UNIFIED IDEOGRAPH - 0x94D4: 0x756A, //CJK UNIFIED IDEOGRAPH - 0x94D5: 0x76E4, //CJK UNIFIED IDEOGRAPH - 0x94D6: 0x78D0, //CJK UNIFIED IDEOGRAPH - 0x94D7: 0x8543, //CJK UNIFIED IDEOGRAPH - 0x94D8: 0x86EE, //CJK UNIFIED IDEOGRAPH - 0x94D9: 0x532A, //CJK UNIFIED IDEOGRAPH - 0x94DA: 0x5351, //CJK UNIFIED IDEOGRAPH - 0x94DB: 0x5426, //CJK UNIFIED IDEOGRAPH - 0x94DC: 0x5983, //CJK UNIFIED IDEOGRAPH - 0x94DD: 0x5E87, //CJK UNIFIED IDEOGRAPH - 0x94DE: 0x5F7C, //CJK UNIFIED IDEOGRAPH - 0x94DF: 0x60B2, //CJK UNIFIED IDEOGRAPH - 0x94E0: 0x6249, //CJK UNIFIED IDEOGRAPH - 0x94E1: 0x6279, //CJK UNIFIED IDEOGRAPH - 0x94E2: 0x62AB, //CJK UNIFIED IDEOGRAPH - 0x94E3: 0x6590, //CJK UNIFIED IDEOGRAPH - 0x94E4: 0x6BD4, //CJK UNIFIED IDEOGRAPH - 0x94E5: 0x6CCC, //CJK UNIFIED IDEOGRAPH - 0x94E6: 0x75B2, //CJK UNIFIED IDEOGRAPH - 0x94E7: 0x76AE, //CJK UNIFIED IDEOGRAPH - 0x94E8: 0x7891, //CJK UNIFIED IDEOGRAPH - 0x94E9: 0x79D8, //CJK UNIFIED IDEOGRAPH - 0x94EA: 0x7DCB, //CJK UNIFIED IDEOGRAPH - 0x94EB: 0x7F77, //CJK UNIFIED IDEOGRAPH - 0x94EC: 0x80A5, //CJK UNIFIED IDEOGRAPH - 0x94ED: 0x88AB, //CJK UNIFIED IDEOGRAPH - 0x94EE: 0x8AB9, //CJK UNIFIED IDEOGRAPH - 0x94EF: 0x8CBB, //CJK UNIFIED IDEOGRAPH - 0x94F0: 0x907F, //CJK UNIFIED IDEOGRAPH - 0x94F1: 0x975E, //CJK UNIFIED IDEOGRAPH - 0x94F2: 0x98DB, //CJK UNIFIED IDEOGRAPH - 0x94F3: 0x6A0B, //CJK UNIFIED IDEOGRAPH - 0x94F4: 0x7C38, //CJK UNIFIED IDEOGRAPH - 0x94F5: 0x5099, //CJK UNIFIED IDEOGRAPH - 0x94F6: 0x5C3E, //CJK UNIFIED IDEOGRAPH - 0x94F7: 0x5FAE, //CJK UNIFIED IDEOGRAPH - 0x94F8: 0x6787, //CJK UNIFIED IDEOGRAPH - 0x94F9: 0x6BD8, //CJK UNIFIED IDEOGRAPH - 0x94FA: 0x7435, //CJK UNIFIED IDEOGRAPH - 0x94FB: 0x7709, //CJK UNIFIED IDEOGRAPH - 0x94FC: 0x7F8E, //CJK UNIFIED IDEOGRAPH - 0x9540: 0x9F3B, //CJK UNIFIED IDEOGRAPH - 0x9541: 0x67CA, //CJK UNIFIED IDEOGRAPH - 0x9542: 0x7A17, //CJK UNIFIED IDEOGRAPH - 0x9543: 0x5339, //CJK UNIFIED IDEOGRAPH - 0x9544: 0x758B, //CJK UNIFIED IDEOGRAPH - 0x9545: 0x9AED, //CJK UNIFIED IDEOGRAPH - 0x9546: 0x5F66, //CJK UNIFIED IDEOGRAPH - 0x9547: 0x819D, //CJK UNIFIED IDEOGRAPH - 0x9548: 0x83F1, //CJK UNIFIED IDEOGRAPH - 0x9549: 0x8098, //CJK UNIFIED IDEOGRAPH - 0x954A: 0x5F3C, //CJK UNIFIED IDEOGRAPH - 0x954B: 0x5FC5, //CJK UNIFIED IDEOGRAPH - 0x954C: 0x7562, //CJK UNIFIED IDEOGRAPH - 0x954D: 0x7B46, //CJK UNIFIED IDEOGRAPH - 0x954E: 0x903C, //CJK UNIFIED IDEOGRAPH - 0x954F: 0x6867, //CJK UNIFIED IDEOGRAPH - 0x9550: 0x59EB, //CJK UNIFIED IDEOGRAPH - 0x9551: 0x5A9B, //CJK UNIFIED IDEOGRAPH - 0x9552: 0x7D10, //CJK UNIFIED IDEOGRAPH - 0x9553: 0x767E, //CJK UNIFIED IDEOGRAPH - 0x9554: 0x8B2C, //CJK UNIFIED IDEOGRAPH - 0x9555: 0x4FF5, //CJK UNIFIED IDEOGRAPH - 0x9556: 0x5F6A, //CJK UNIFIED IDEOGRAPH - 0x9557: 0x6A19, //CJK UNIFIED IDEOGRAPH - 0x9558: 0x6C37, //CJK UNIFIED IDEOGRAPH - 0x9559: 0x6F02, //CJK UNIFIED IDEOGRAPH - 0x955A: 0x74E2, //CJK UNIFIED IDEOGRAPH - 0x955B: 0x7968, //CJK UNIFIED IDEOGRAPH - 0x955C: 0x8868, //CJK UNIFIED IDEOGRAPH - 0x955D: 0x8A55, //CJK UNIFIED IDEOGRAPH - 0x955E: 0x8C79, //CJK UNIFIED IDEOGRAPH - 0x955F: 0x5EDF, //CJK UNIFIED IDEOGRAPH - 0x9560: 0x63CF, //CJK UNIFIED IDEOGRAPH - 0x9561: 0x75C5, //CJK UNIFIED IDEOGRAPH - 0x9562: 0x79D2, //CJK UNIFIED IDEOGRAPH - 0x9563: 0x82D7, //CJK UNIFIED IDEOGRAPH - 0x9564: 0x9328, //CJK UNIFIED IDEOGRAPH - 0x9565: 0x92F2, //CJK UNIFIED IDEOGRAPH - 0x9566: 0x849C, //CJK UNIFIED IDEOGRAPH - 0x9567: 0x86ED, //CJK UNIFIED IDEOGRAPH - 0x9568: 0x9C2D, //CJK UNIFIED IDEOGRAPH - 0x9569: 0x54C1, //CJK UNIFIED IDEOGRAPH - 0x956A: 0x5F6C, //CJK UNIFIED IDEOGRAPH - 0x956B: 0x658C, //CJK UNIFIED IDEOGRAPH - 0x956C: 0x6D5C, //CJK UNIFIED IDEOGRAPH - 0x956D: 0x7015, //CJK UNIFIED IDEOGRAPH - 0x956E: 0x8CA7, //CJK UNIFIED IDEOGRAPH - 0x956F: 0x8CD3, //CJK UNIFIED IDEOGRAPH - 0x9570: 0x983B, //CJK UNIFIED IDEOGRAPH - 0x9571: 0x654F, //CJK UNIFIED IDEOGRAPH - 0x9572: 0x74F6, //CJK UNIFIED IDEOGRAPH - 0x9573: 0x4E0D, //CJK UNIFIED IDEOGRAPH - 0x9574: 0x4ED8, //CJK UNIFIED IDEOGRAPH - 0x9575: 0x57E0, //CJK UNIFIED IDEOGRAPH - 0x9576: 0x592B, //CJK UNIFIED IDEOGRAPH - 0x9577: 0x5A66, //CJK UNIFIED IDEOGRAPH - 0x9578: 0x5BCC, //CJK UNIFIED IDEOGRAPH - 0x9579: 0x51A8, //CJK UNIFIED IDEOGRAPH - 0x957A: 0x5E03, //CJK UNIFIED IDEOGRAPH - 0x957B: 0x5E9C, //CJK UNIFIED IDEOGRAPH - 0x957C: 0x6016, //CJK UNIFIED IDEOGRAPH - 0x957D: 0x6276, //CJK UNIFIED IDEOGRAPH - 0x957E: 0x6577, //CJK UNIFIED IDEOGRAPH - 0x9580: 0x65A7, //CJK UNIFIED IDEOGRAPH - 0x9581: 0x666E, //CJK UNIFIED IDEOGRAPH - 0x9582: 0x6D6E, //CJK UNIFIED IDEOGRAPH - 0x9583: 0x7236, //CJK UNIFIED IDEOGRAPH - 0x9584: 0x7B26, //CJK UNIFIED IDEOGRAPH - 0x9585: 0x8150, //CJK UNIFIED IDEOGRAPH - 0x9586: 0x819A, //CJK UNIFIED IDEOGRAPH - 0x9587: 0x8299, //CJK UNIFIED IDEOGRAPH - 0x9588: 0x8B5C, //CJK UNIFIED IDEOGRAPH - 0x9589: 0x8CA0, //CJK UNIFIED IDEOGRAPH - 0x958A: 0x8CE6, //CJK UNIFIED IDEOGRAPH - 0x958B: 0x8D74, //CJK UNIFIED IDEOGRAPH - 0x958C: 0x961C, //CJK UNIFIED IDEOGRAPH - 0x958D: 0x9644, //CJK UNIFIED IDEOGRAPH - 0x958E: 0x4FAE, //CJK UNIFIED IDEOGRAPH - 0x958F: 0x64AB, //CJK UNIFIED IDEOGRAPH - 0x9590: 0x6B66, //CJK UNIFIED IDEOGRAPH - 0x9591: 0x821E, //CJK UNIFIED IDEOGRAPH - 0x9592: 0x8461, //CJK UNIFIED IDEOGRAPH - 0x9593: 0x856A, //CJK UNIFIED IDEOGRAPH - 0x9594: 0x90E8, //CJK UNIFIED IDEOGRAPH - 0x9595: 0x5C01, //CJK UNIFIED IDEOGRAPH - 0x9596: 0x6953, //CJK UNIFIED IDEOGRAPH - 0x9597: 0x98A8, //CJK UNIFIED IDEOGRAPH - 0x9598: 0x847A, //CJK UNIFIED IDEOGRAPH - 0x9599: 0x8557, //CJK UNIFIED IDEOGRAPH - 0x959A: 0x4F0F, //CJK UNIFIED IDEOGRAPH - 0x959B: 0x526F, //CJK UNIFIED IDEOGRAPH - 0x959C: 0x5FA9, //CJK UNIFIED IDEOGRAPH - 0x959D: 0x5E45, //CJK UNIFIED IDEOGRAPH - 0x959E: 0x670D, //CJK UNIFIED IDEOGRAPH - 0x959F: 0x798F, //CJK UNIFIED IDEOGRAPH - 0x95A0: 0x8179, //CJK UNIFIED IDEOGRAPH - 0x95A1: 0x8907, //CJK UNIFIED IDEOGRAPH - 0x95A2: 0x8986, //CJK UNIFIED IDEOGRAPH - 0x95A3: 0x6DF5, //CJK UNIFIED IDEOGRAPH - 0x95A4: 0x5F17, //CJK UNIFIED IDEOGRAPH - 0x95A5: 0x6255, //CJK UNIFIED IDEOGRAPH - 0x95A6: 0x6CB8, //CJK UNIFIED IDEOGRAPH - 0x95A7: 0x4ECF, //CJK UNIFIED IDEOGRAPH - 0x95A8: 0x7269, //CJK UNIFIED IDEOGRAPH - 0x95A9: 0x9B92, //CJK UNIFIED IDEOGRAPH - 0x95AA: 0x5206, //CJK UNIFIED IDEOGRAPH - 0x95AB: 0x543B, //CJK UNIFIED IDEOGRAPH - 0x95AC: 0x5674, //CJK UNIFIED IDEOGRAPH - 0x95AD: 0x58B3, //CJK UNIFIED IDEOGRAPH - 0x95AE: 0x61A4, //CJK UNIFIED IDEOGRAPH - 0x95AF: 0x626E, //CJK UNIFIED IDEOGRAPH - 0x95B0: 0x711A, //CJK UNIFIED IDEOGRAPH - 0x95B1: 0x596E, //CJK UNIFIED IDEOGRAPH - 0x95B2: 0x7C89, //CJK UNIFIED IDEOGRAPH - 0x95B3: 0x7CDE, //CJK UNIFIED IDEOGRAPH - 0x95B4: 0x7D1B, //CJK UNIFIED IDEOGRAPH - 0x95B5: 0x96F0, //CJK UNIFIED IDEOGRAPH - 0x95B6: 0x6587, //CJK UNIFIED IDEOGRAPH - 0x95B7: 0x805E, //CJK UNIFIED IDEOGRAPH - 0x95B8: 0x4E19, //CJK UNIFIED IDEOGRAPH - 0x95B9: 0x4F75, //CJK UNIFIED IDEOGRAPH - 0x95BA: 0x5175, //CJK UNIFIED IDEOGRAPH - 0x95BB: 0x5840, //CJK UNIFIED IDEOGRAPH - 0x95BC: 0x5E63, //CJK UNIFIED IDEOGRAPH - 0x95BD: 0x5E73, //CJK UNIFIED IDEOGRAPH - 0x95BE: 0x5F0A, //CJK UNIFIED IDEOGRAPH - 0x95BF: 0x67C4, //CJK UNIFIED IDEOGRAPH - 0x95C0: 0x4E26, //CJK UNIFIED IDEOGRAPH - 0x95C1: 0x853D, //CJK UNIFIED IDEOGRAPH - 0x95C2: 0x9589, //CJK UNIFIED IDEOGRAPH - 0x95C3: 0x965B, //CJK UNIFIED IDEOGRAPH - 0x95C4: 0x7C73, //CJK UNIFIED IDEOGRAPH - 0x95C5: 0x9801, //CJK UNIFIED IDEOGRAPH - 0x95C6: 0x50FB, //CJK UNIFIED IDEOGRAPH - 0x95C7: 0x58C1, //CJK UNIFIED IDEOGRAPH - 0x95C8: 0x7656, //CJK UNIFIED IDEOGRAPH - 0x95C9: 0x78A7, //CJK UNIFIED IDEOGRAPH - 0x95CA: 0x5225, //CJK UNIFIED IDEOGRAPH - 0x95CB: 0x77A5, //CJK UNIFIED IDEOGRAPH - 0x95CC: 0x8511, //CJK UNIFIED IDEOGRAPH - 0x95CD: 0x7B86, //CJK UNIFIED IDEOGRAPH - 0x95CE: 0x504F, //CJK UNIFIED IDEOGRAPH - 0x95CF: 0x5909, //CJK UNIFIED IDEOGRAPH - 0x95D0: 0x7247, //CJK UNIFIED IDEOGRAPH - 0x95D1: 0x7BC7, //CJK UNIFIED IDEOGRAPH - 0x95D2: 0x7DE8, //CJK UNIFIED IDEOGRAPH - 0x95D3: 0x8FBA, //CJK UNIFIED IDEOGRAPH - 0x95D4: 0x8FD4, //CJK UNIFIED IDEOGRAPH - 0x95D5: 0x904D, //CJK UNIFIED IDEOGRAPH - 0x95D6: 0x4FBF, //CJK UNIFIED IDEOGRAPH - 0x95D7: 0x52C9, //CJK UNIFIED IDEOGRAPH - 0x95D8: 0x5A29, //CJK UNIFIED IDEOGRAPH - 0x95D9: 0x5F01, //CJK UNIFIED IDEOGRAPH - 0x95DA: 0x97AD, //CJK UNIFIED IDEOGRAPH - 0x95DB: 0x4FDD, //CJK UNIFIED IDEOGRAPH - 0x95DC: 0x8217, //CJK UNIFIED IDEOGRAPH - 0x95DD: 0x92EA, //CJK UNIFIED IDEOGRAPH - 0x95DE: 0x5703, //CJK UNIFIED IDEOGRAPH - 0x95DF: 0x6355, //CJK UNIFIED IDEOGRAPH - 0x95E0: 0x6B69, //CJK UNIFIED IDEOGRAPH - 0x95E1: 0x752B, //CJK UNIFIED IDEOGRAPH - 0x95E2: 0x88DC, //CJK UNIFIED IDEOGRAPH - 0x95E3: 0x8F14, //CJK UNIFIED IDEOGRAPH - 0x95E4: 0x7A42, //CJK UNIFIED IDEOGRAPH - 0x95E5: 0x52DF, //CJK UNIFIED IDEOGRAPH - 0x95E6: 0x5893, //CJK UNIFIED IDEOGRAPH - 0x95E7: 0x6155, //CJK UNIFIED IDEOGRAPH - 0x95E8: 0x620A, //CJK UNIFIED IDEOGRAPH - 0x95E9: 0x66AE, //CJK UNIFIED IDEOGRAPH - 0x95EA: 0x6BCD, //CJK UNIFIED IDEOGRAPH - 0x95EB: 0x7C3F, //CJK UNIFIED IDEOGRAPH - 0x95EC: 0x83E9, //CJK UNIFIED IDEOGRAPH - 0x95ED: 0x5023, //CJK UNIFIED IDEOGRAPH - 0x95EE: 0x4FF8, //CJK UNIFIED IDEOGRAPH - 0x95EF: 0x5305, //CJK UNIFIED IDEOGRAPH - 0x95F0: 0x5446, //CJK UNIFIED IDEOGRAPH - 0x95F1: 0x5831, //CJK UNIFIED IDEOGRAPH - 0x95F2: 0x5949, //CJK UNIFIED IDEOGRAPH - 0x95F3: 0x5B9D, //CJK UNIFIED IDEOGRAPH - 0x95F4: 0x5CF0, //CJK UNIFIED IDEOGRAPH - 0x95F5: 0x5CEF, //CJK UNIFIED IDEOGRAPH - 0x95F6: 0x5D29, //CJK UNIFIED IDEOGRAPH - 0x95F7: 0x5E96, //CJK UNIFIED IDEOGRAPH - 0x95F8: 0x62B1, //CJK UNIFIED IDEOGRAPH - 0x95F9: 0x6367, //CJK UNIFIED IDEOGRAPH - 0x95FA: 0x653E, //CJK UNIFIED IDEOGRAPH - 0x95FB: 0x65B9, //CJK UNIFIED IDEOGRAPH - 0x95FC: 0x670B, //CJK UNIFIED IDEOGRAPH - 0x9640: 0x6CD5, //CJK UNIFIED IDEOGRAPH - 0x9641: 0x6CE1, //CJK UNIFIED IDEOGRAPH - 0x9642: 0x70F9, //CJK UNIFIED IDEOGRAPH - 0x9643: 0x7832, //CJK UNIFIED IDEOGRAPH - 0x9644: 0x7E2B, //CJK UNIFIED IDEOGRAPH - 0x9645: 0x80DE, //CJK UNIFIED IDEOGRAPH - 0x9646: 0x82B3, //CJK UNIFIED IDEOGRAPH - 0x9647: 0x840C, //CJK UNIFIED IDEOGRAPH - 0x9648: 0x84EC, //CJK UNIFIED IDEOGRAPH - 0x9649: 0x8702, //CJK UNIFIED IDEOGRAPH - 0x964A: 0x8912, //CJK UNIFIED IDEOGRAPH - 0x964B: 0x8A2A, //CJK UNIFIED IDEOGRAPH - 0x964C: 0x8C4A, //CJK UNIFIED IDEOGRAPH - 0x964D: 0x90A6, //CJK UNIFIED IDEOGRAPH - 0x964E: 0x92D2, //CJK UNIFIED IDEOGRAPH - 0x964F: 0x98FD, //CJK UNIFIED IDEOGRAPH - 0x9650: 0x9CF3, //CJK UNIFIED IDEOGRAPH - 0x9651: 0x9D6C, //CJK UNIFIED IDEOGRAPH - 0x9652: 0x4E4F, //CJK UNIFIED IDEOGRAPH - 0x9653: 0x4EA1, //CJK UNIFIED IDEOGRAPH - 0x9654: 0x508D, //CJK UNIFIED IDEOGRAPH - 0x9655: 0x5256, //CJK UNIFIED IDEOGRAPH - 0x9656: 0x574A, //CJK UNIFIED IDEOGRAPH - 0x9657: 0x59A8, //CJK UNIFIED IDEOGRAPH - 0x9658: 0x5E3D, //CJK UNIFIED IDEOGRAPH - 0x9659: 0x5FD8, //CJK UNIFIED IDEOGRAPH - 0x965A: 0x5FD9, //CJK UNIFIED IDEOGRAPH - 0x965B: 0x623F, //CJK UNIFIED IDEOGRAPH - 0x965C: 0x66B4, //CJK UNIFIED IDEOGRAPH - 0x965D: 0x671B, //CJK UNIFIED IDEOGRAPH - 0x965E: 0x67D0, //CJK UNIFIED IDEOGRAPH - 0x965F: 0x68D2, //CJK UNIFIED IDEOGRAPH - 0x9660: 0x5192, //CJK UNIFIED IDEOGRAPH - 0x9661: 0x7D21, //CJK UNIFIED IDEOGRAPH - 0x9662: 0x80AA, //CJK UNIFIED IDEOGRAPH - 0x9663: 0x81A8, //CJK UNIFIED IDEOGRAPH - 0x9664: 0x8B00, //CJK UNIFIED IDEOGRAPH - 0x9665: 0x8C8C, //CJK UNIFIED IDEOGRAPH - 0x9666: 0x8CBF, //CJK UNIFIED IDEOGRAPH - 0x9667: 0x927E, //CJK UNIFIED IDEOGRAPH - 0x9668: 0x9632, //CJK UNIFIED IDEOGRAPH - 0x9669: 0x5420, //CJK UNIFIED IDEOGRAPH - 0x966A: 0x982C, //CJK UNIFIED IDEOGRAPH - 0x966B: 0x5317, //CJK UNIFIED IDEOGRAPH - 0x966C: 0x50D5, //CJK UNIFIED IDEOGRAPH - 0x966D: 0x535C, //CJK UNIFIED IDEOGRAPH - 0x966E: 0x58A8, //CJK UNIFIED IDEOGRAPH - 0x966F: 0x64B2, //CJK UNIFIED IDEOGRAPH - 0x9670: 0x6734, //CJK UNIFIED IDEOGRAPH - 0x9671: 0x7267, //CJK UNIFIED IDEOGRAPH - 0x9672: 0x7766, //CJK UNIFIED IDEOGRAPH - 0x9673: 0x7A46, //CJK UNIFIED IDEOGRAPH - 0x9674: 0x91E6, //CJK UNIFIED IDEOGRAPH - 0x9675: 0x52C3, //CJK UNIFIED IDEOGRAPH - 0x9676: 0x6CA1, //CJK UNIFIED IDEOGRAPH - 0x9677: 0x6B86, //CJK UNIFIED IDEOGRAPH - 0x9678: 0x5800, //CJK UNIFIED IDEOGRAPH - 0x9679: 0x5E4C, //CJK UNIFIED IDEOGRAPH - 0x967A: 0x5954, //CJK UNIFIED IDEOGRAPH - 0x967B: 0x672C, //CJK UNIFIED IDEOGRAPH - 0x967C: 0x7FFB, //CJK UNIFIED IDEOGRAPH - 0x967D: 0x51E1, //CJK UNIFIED IDEOGRAPH - 0x967E: 0x76C6, //CJK UNIFIED IDEOGRAPH - 0x9680: 0x6469, //CJK UNIFIED IDEOGRAPH - 0x9681: 0x78E8, //CJK UNIFIED IDEOGRAPH - 0x9682: 0x9B54, //CJK UNIFIED IDEOGRAPH - 0x9683: 0x9EBB, //CJK UNIFIED IDEOGRAPH - 0x9684: 0x57CB, //CJK UNIFIED IDEOGRAPH - 0x9685: 0x59B9, //CJK UNIFIED IDEOGRAPH - 0x9686: 0x6627, //CJK UNIFIED IDEOGRAPH - 0x9687: 0x679A, //CJK UNIFIED IDEOGRAPH - 0x9688: 0x6BCE, //CJK UNIFIED IDEOGRAPH - 0x9689: 0x54E9, //CJK UNIFIED IDEOGRAPH - 0x968A: 0x69D9, //CJK UNIFIED IDEOGRAPH - 0x968B: 0x5E55, //CJK UNIFIED IDEOGRAPH - 0x968C: 0x819C, //CJK UNIFIED IDEOGRAPH - 0x968D: 0x6795, //CJK UNIFIED IDEOGRAPH - 0x968E: 0x9BAA, //CJK UNIFIED IDEOGRAPH - 0x968F: 0x67FE, //CJK UNIFIED IDEOGRAPH - 0x9690: 0x9C52, //CJK UNIFIED IDEOGRAPH - 0x9691: 0x685D, //CJK UNIFIED IDEOGRAPH - 0x9692: 0x4EA6, //CJK UNIFIED IDEOGRAPH - 0x9693: 0x4FE3, //CJK UNIFIED IDEOGRAPH - 0x9694: 0x53C8, //CJK UNIFIED IDEOGRAPH - 0x9695: 0x62B9, //CJK UNIFIED IDEOGRAPH - 0x9696: 0x672B, //CJK UNIFIED IDEOGRAPH - 0x9697: 0x6CAB, //CJK UNIFIED IDEOGRAPH - 0x9698: 0x8FC4, //CJK UNIFIED IDEOGRAPH - 0x9699: 0x4FAD, //CJK UNIFIED IDEOGRAPH - 0x969A: 0x7E6D, //CJK UNIFIED IDEOGRAPH - 0x969B: 0x9EBF, //CJK UNIFIED IDEOGRAPH - 0x969C: 0x4E07, //CJK UNIFIED IDEOGRAPH - 0x969D: 0x6162, //CJK UNIFIED IDEOGRAPH - 0x969E: 0x6E80, //CJK UNIFIED IDEOGRAPH - 0x969F: 0x6F2B, //CJK UNIFIED IDEOGRAPH - 0x96A0: 0x8513, //CJK UNIFIED IDEOGRAPH - 0x96A1: 0x5473, //CJK UNIFIED IDEOGRAPH - 0x96A2: 0x672A, //CJK UNIFIED IDEOGRAPH - 0x96A3: 0x9B45, //CJK UNIFIED IDEOGRAPH - 0x96A4: 0x5DF3, //CJK UNIFIED IDEOGRAPH - 0x96A5: 0x7B95, //CJK UNIFIED IDEOGRAPH - 0x96A6: 0x5CAC, //CJK UNIFIED IDEOGRAPH - 0x96A7: 0x5BC6, //CJK UNIFIED IDEOGRAPH - 0x96A8: 0x871C, //CJK UNIFIED IDEOGRAPH - 0x96A9: 0x6E4A, //CJK UNIFIED IDEOGRAPH - 0x96AA: 0x84D1, //CJK UNIFIED IDEOGRAPH - 0x96AB: 0x7A14, //CJK UNIFIED IDEOGRAPH - 0x96AC: 0x8108, //CJK UNIFIED IDEOGRAPH - 0x96AD: 0x5999, //CJK UNIFIED IDEOGRAPH - 0x96AE: 0x7C8D, //CJK UNIFIED IDEOGRAPH - 0x96AF: 0x6C11, //CJK UNIFIED IDEOGRAPH - 0x96B0: 0x7720, //CJK UNIFIED IDEOGRAPH - 0x96B1: 0x52D9, //CJK UNIFIED IDEOGRAPH - 0x96B2: 0x5922, //CJK UNIFIED IDEOGRAPH - 0x96B3: 0x7121, //CJK UNIFIED IDEOGRAPH - 0x96B4: 0x725F, //CJK UNIFIED IDEOGRAPH - 0x96B5: 0x77DB, //CJK UNIFIED IDEOGRAPH - 0x96B6: 0x9727, //CJK UNIFIED IDEOGRAPH - 0x96B7: 0x9D61, //CJK UNIFIED IDEOGRAPH - 0x96B8: 0x690B, //CJK UNIFIED IDEOGRAPH - 0x96B9: 0x5A7F, //CJK UNIFIED IDEOGRAPH - 0x96BA: 0x5A18, //CJK UNIFIED IDEOGRAPH - 0x96BB: 0x51A5, //CJK UNIFIED IDEOGRAPH - 0x96BC: 0x540D, //CJK UNIFIED IDEOGRAPH - 0x96BD: 0x547D, //CJK UNIFIED IDEOGRAPH - 0x96BE: 0x660E, //CJK UNIFIED IDEOGRAPH - 0x96BF: 0x76DF, //CJK UNIFIED IDEOGRAPH - 0x96C0: 0x8FF7, //CJK UNIFIED IDEOGRAPH - 0x96C1: 0x9298, //CJK UNIFIED IDEOGRAPH - 0x96C2: 0x9CF4, //CJK UNIFIED IDEOGRAPH - 0x96C3: 0x59EA, //CJK UNIFIED IDEOGRAPH - 0x96C4: 0x725D, //CJK UNIFIED IDEOGRAPH - 0x96C5: 0x6EC5, //CJK UNIFIED IDEOGRAPH - 0x96C6: 0x514D, //CJK UNIFIED IDEOGRAPH - 0x96C7: 0x68C9, //CJK UNIFIED IDEOGRAPH - 0x96C8: 0x7DBF, //CJK UNIFIED IDEOGRAPH - 0x96C9: 0x7DEC, //CJK UNIFIED IDEOGRAPH - 0x96CA: 0x9762, //CJK UNIFIED IDEOGRAPH - 0x96CB: 0x9EBA, //CJK UNIFIED IDEOGRAPH - 0x96CC: 0x6478, //CJK UNIFIED IDEOGRAPH - 0x96CD: 0x6A21, //CJK UNIFIED IDEOGRAPH - 0x96CE: 0x8302, //CJK UNIFIED IDEOGRAPH - 0x96CF: 0x5984, //CJK UNIFIED IDEOGRAPH - 0x96D0: 0x5B5F, //CJK UNIFIED IDEOGRAPH - 0x96D1: 0x6BDB, //CJK UNIFIED IDEOGRAPH - 0x96D2: 0x731B, //CJK UNIFIED IDEOGRAPH - 0x96D3: 0x76F2, //CJK UNIFIED IDEOGRAPH - 0x96D4: 0x7DB2, //CJK UNIFIED IDEOGRAPH - 0x96D5: 0x8017, //CJK UNIFIED IDEOGRAPH - 0x96D6: 0x8499, //CJK UNIFIED IDEOGRAPH - 0x96D7: 0x5132, //CJK UNIFIED IDEOGRAPH - 0x96D8: 0x6728, //CJK UNIFIED IDEOGRAPH - 0x96D9: 0x9ED9, //CJK UNIFIED IDEOGRAPH - 0x96DA: 0x76EE, //CJK UNIFIED IDEOGRAPH - 0x96DB: 0x6762, //CJK UNIFIED IDEOGRAPH - 0x96DC: 0x52FF, //CJK UNIFIED IDEOGRAPH - 0x96DD: 0x9905, //CJK UNIFIED IDEOGRAPH - 0x96DE: 0x5C24, //CJK UNIFIED IDEOGRAPH - 0x96DF: 0x623B, //CJK UNIFIED IDEOGRAPH - 0x96E0: 0x7C7E, //CJK UNIFIED IDEOGRAPH - 0x96E1: 0x8CB0, //CJK UNIFIED IDEOGRAPH - 0x96E2: 0x554F, //CJK UNIFIED IDEOGRAPH - 0x96E3: 0x60B6, //CJK UNIFIED IDEOGRAPH - 0x96E4: 0x7D0B, //CJK UNIFIED IDEOGRAPH - 0x96E5: 0x9580, //CJK UNIFIED IDEOGRAPH - 0x96E6: 0x5301, //CJK UNIFIED IDEOGRAPH - 0x96E7: 0x4E5F, //CJK UNIFIED IDEOGRAPH - 0x96E8: 0x51B6, //CJK UNIFIED IDEOGRAPH - 0x96E9: 0x591C, //CJK UNIFIED IDEOGRAPH - 0x96EA: 0x723A, //CJK UNIFIED IDEOGRAPH - 0x96EB: 0x8036, //CJK UNIFIED IDEOGRAPH - 0x96EC: 0x91CE, //CJK UNIFIED IDEOGRAPH - 0x96ED: 0x5F25, //CJK UNIFIED IDEOGRAPH - 0x96EE: 0x77E2, //CJK UNIFIED IDEOGRAPH - 0x96EF: 0x5384, //CJK UNIFIED IDEOGRAPH - 0x96F0: 0x5F79, //CJK UNIFIED IDEOGRAPH - 0x96F1: 0x7D04, //CJK UNIFIED IDEOGRAPH - 0x96F2: 0x85AC, //CJK UNIFIED IDEOGRAPH - 0x96F3: 0x8A33, //CJK UNIFIED IDEOGRAPH - 0x96F4: 0x8E8D, //CJK UNIFIED IDEOGRAPH - 0x96F5: 0x9756, //CJK UNIFIED IDEOGRAPH - 0x96F6: 0x67F3, //CJK UNIFIED IDEOGRAPH - 0x96F7: 0x85AE, //CJK UNIFIED IDEOGRAPH - 0x96F8: 0x9453, //CJK UNIFIED IDEOGRAPH - 0x96F9: 0x6109, //CJK UNIFIED IDEOGRAPH - 0x96FA: 0x6108, //CJK UNIFIED IDEOGRAPH - 0x96FB: 0x6CB9, //CJK UNIFIED IDEOGRAPH - 0x96FC: 0x7652, //CJK UNIFIED IDEOGRAPH - 0x9740: 0x8AED, //CJK UNIFIED IDEOGRAPH - 0x9741: 0x8F38, //CJK UNIFIED IDEOGRAPH - 0x9742: 0x552F, //CJK UNIFIED IDEOGRAPH - 0x9743: 0x4F51, //CJK UNIFIED IDEOGRAPH - 0x9744: 0x512A, //CJK UNIFIED IDEOGRAPH - 0x9745: 0x52C7, //CJK UNIFIED IDEOGRAPH - 0x9746: 0x53CB, //CJK UNIFIED IDEOGRAPH - 0x9747: 0x5BA5, //CJK UNIFIED IDEOGRAPH - 0x9748: 0x5E7D, //CJK UNIFIED IDEOGRAPH - 0x9749: 0x60A0, //CJK UNIFIED IDEOGRAPH - 0x974A: 0x6182, //CJK UNIFIED IDEOGRAPH - 0x974B: 0x63D6, //CJK UNIFIED IDEOGRAPH - 0x974C: 0x6709, //CJK UNIFIED IDEOGRAPH - 0x974D: 0x67DA, //CJK UNIFIED IDEOGRAPH - 0x974E: 0x6E67, //CJK UNIFIED IDEOGRAPH - 0x974F: 0x6D8C, //CJK UNIFIED IDEOGRAPH - 0x9750: 0x7336, //CJK UNIFIED IDEOGRAPH - 0x9751: 0x7337, //CJK UNIFIED IDEOGRAPH - 0x9752: 0x7531, //CJK UNIFIED IDEOGRAPH - 0x9753: 0x7950, //CJK UNIFIED IDEOGRAPH - 0x9754: 0x88D5, //CJK UNIFIED IDEOGRAPH - 0x9755: 0x8A98, //CJK UNIFIED IDEOGRAPH - 0x9756: 0x904A, //CJK UNIFIED IDEOGRAPH - 0x9757: 0x9091, //CJK UNIFIED IDEOGRAPH - 0x9758: 0x90F5, //CJK UNIFIED IDEOGRAPH - 0x9759: 0x96C4, //CJK UNIFIED IDEOGRAPH - 0x975A: 0x878D, //CJK UNIFIED IDEOGRAPH - 0x975B: 0x5915, //CJK UNIFIED IDEOGRAPH - 0x975C: 0x4E88, //CJK UNIFIED IDEOGRAPH - 0x975D: 0x4F59, //CJK UNIFIED IDEOGRAPH - 0x975E: 0x4E0E, //CJK UNIFIED IDEOGRAPH - 0x975F: 0x8A89, //CJK UNIFIED IDEOGRAPH - 0x9760: 0x8F3F, //CJK UNIFIED IDEOGRAPH - 0x9761: 0x9810, //CJK UNIFIED IDEOGRAPH - 0x9762: 0x50AD, //CJK UNIFIED IDEOGRAPH - 0x9763: 0x5E7C, //CJK UNIFIED IDEOGRAPH - 0x9764: 0x5996, //CJK UNIFIED IDEOGRAPH - 0x9765: 0x5BB9, //CJK UNIFIED IDEOGRAPH - 0x9766: 0x5EB8, //CJK UNIFIED IDEOGRAPH - 0x9767: 0x63DA, //CJK UNIFIED IDEOGRAPH - 0x9768: 0x63FA, //CJK UNIFIED IDEOGRAPH - 0x9769: 0x64C1, //CJK UNIFIED IDEOGRAPH - 0x976A: 0x66DC, //CJK UNIFIED IDEOGRAPH - 0x976B: 0x694A, //CJK UNIFIED IDEOGRAPH - 0x976C: 0x69D8, //CJK UNIFIED IDEOGRAPH - 0x976D: 0x6D0B, //CJK UNIFIED IDEOGRAPH - 0x976E: 0x6EB6, //CJK UNIFIED IDEOGRAPH - 0x976F: 0x7194, //CJK UNIFIED IDEOGRAPH - 0x9770: 0x7528, //CJK UNIFIED IDEOGRAPH - 0x9771: 0x7AAF, //CJK UNIFIED IDEOGRAPH - 0x9772: 0x7F8A, //CJK UNIFIED IDEOGRAPH - 0x9773: 0x8000, //CJK UNIFIED IDEOGRAPH - 0x9774: 0x8449, //CJK UNIFIED IDEOGRAPH - 0x9775: 0x84C9, //CJK UNIFIED IDEOGRAPH - 0x9776: 0x8981, //CJK UNIFIED IDEOGRAPH - 0x9777: 0x8B21, //CJK UNIFIED IDEOGRAPH - 0x9778: 0x8E0A, //CJK UNIFIED IDEOGRAPH - 0x9779: 0x9065, //CJK UNIFIED IDEOGRAPH - 0x977A: 0x967D, //CJK UNIFIED IDEOGRAPH - 0x977B: 0x990A, //CJK UNIFIED IDEOGRAPH - 0x977C: 0x617E, //CJK UNIFIED IDEOGRAPH - 0x977D: 0x6291, //CJK UNIFIED IDEOGRAPH - 0x977E: 0x6B32, //CJK UNIFIED IDEOGRAPH - 0x9780: 0x6C83, //CJK UNIFIED IDEOGRAPH - 0x9781: 0x6D74, //CJK UNIFIED IDEOGRAPH - 0x9782: 0x7FCC, //CJK UNIFIED IDEOGRAPH - 0x9783: 0x7FFC, //CJK UNIFIED IDEOGRAPH - 0x9784: 0x6DC0, //CJK UNIFIED IDEOGRAPH - 0x9785: 0x7F85, //CJK UNIFIED IDEOGRAPH - 0x9786: 0x87BA, //CJK UNIFIED IDEOGRAPH - 0x9787: 0x88F8, //CJK UNIFIED IDEOGRAPH - 0x9788: 0x6765, //CJK UNIFIED IDEOGRAPH - 0x9789: 0x83B1, //CJK UNIFIED IDEOGRAPH - 0x978A: 0x983C, //CJK UNIFIED IDEOGRAPH - 0x978B: 0x96F7, //CJK UNIFIED IDEOGRAPH - 0x978C: 0x6D1B, //CJK UNIFIED IDEOGRAPH - 0x978D: 0x7D61, //CJK UNIFIED IDEOGRAPH - 0x978E: 0x843D, //CJK UNIFIED IDEOGRAPH - 0x978F: 0x916A, //CJK UNIFIED IDEOGRAPH - 0x9790: 0x4E71, //CJK UNIFIED IDEOGRAPH - 0x9791: 0x5375, //CJK UNIFIED IDEOGRAPH - 0x9792: 0x5D50, //CJK UNIFIED IDEOGRAPH - 0x9793: 0x6B04, //CJK UNIFIED IDEOGRAPH - 0x9794: 0x6FEB, //CJK UNIFIED IDEOGRAPH - 0x9795: 0x85CD, //CJK UNIFIED IDEOGRAPH - 0x9796: 0x862D, //CJK UNIFIED IDEOGRAPH - 0x9797: 0x89A7, //CJK UNIFIED IDEOGRAPH - 0x9798: 0x5229, //CJK UNIFIED IDEOGRAPH - 0x9799: 0x540F, //CJK UNIFIED IDEOGRAPH - 0x979A: 0x5C65, //CJK UNIFIED IDEOGRAPH - 0x979B: 0x674E, //CJK UNIFIED IDEOGRAPH - 0x979C: 0x68A8, //CJK UNIFIED IDEOGRAPH - 0x979D: 0x7406, //CJK UNIFIED IDEOGRAPH - 0x979E: 0x7483, //CJK UNIFIED IDEOGRAPH - 0x979F: 0x75E2, //CJK UNIFIED IDEOGRAPH - 0x97A0: 0x88CF, //CJK UNIFIED IDEOGRAPH - 0x97A1: 0x88E1, //CJK UNIFIED IDEOGRAPH - 0x97A2: 0x91CC, //CJK UNIFIED IDEOGRAPH - 0x97A3: 0x96E2, //CJK UNIFIED IDEOGRAPH - 0x97A4: 0x9678, //CJK UNIFIED IDEOGRAPH - 0x97A5: 0x5F8B, //CJK UNIFIED IDEOGRAPH - 0x97A6: 0x7387, //CJK UNIFIED IDEOGRAPH - 0x97A7: 0x7ACB, //CJK UNIFIED IDEOGRAPH - 0x97A8: 0x844E, //CJK UNIFIED IDEOGRAPH - 0x97A9: 0x63A0, //CJK UNIFIED IDEOGRAPH - 0x97AA: 0x7565, //CJK UNIFIED IDEOGRAPH - 0x97AB: 0x5289, //CJK UNIFIED IDEOGRAPH - 0x97AC: 0x6D41, //CJK UNIFIED IDEOGRAPH - 0x97AD: 0x6E9C, //CJK UNIFIED IDEOGRAPH - 0x97AE: 0x7409, //CJK UNIFIED IDEOGRAPH - 0x97AF: 0x7559, //CJK UNIFIED IDEOGRAPH - 0x97B0: 0x786B, //CJK UNIFIED IDEOGRAPH - 0x97B1: 0x7C92, //CJK UNIFIED IDEOGRAPH - 0x97B2: 0x9686, //CJK UNIFIED IDEOGRAPH - 0x97B3: 0x7ADC, //CJK UNIFIED IDEOGRAPH - 0x97B4: 0x9F8D, //CJK UNIFIED IDEOGRAPH - 0x97B5: 0x4FB6, //CJK UNIFIED IDEOGRAPH - 0x97B6: 0x616E, //CJK UNIFIED IDEOGRAPH - 0x97B7: 0x65C5, //CJK UNIFIED IDEOGRAPH - 0x97B8: 0x865C, //CJK UNIFIED IDEOGRAPH - 0x97B9: 0x4E86, //CJK UNIFIED IDEOGRAPH - 0x97BA: 0x4EAE, //CJK UNIFIED IDEOGRAPH - 0x97BB: 0x50DA, //CJK UNIFIED IDEOGRAPH - 0x97BC: 0x4E21, //CJK UNIFIED IDEOGRAPH - 0x97BD: 0x51CC, //CJK UNIFIED IDEOGRAPH - 0x97BE: 0x5BEE, //CJK UNIFIED IDEOGRAPH - 0x97BF: 0x6599, //CJK UNIFIED IDEOGRAPH - 0x97C0: 0x6881, //CJK UNIFIED IDEOGRAPH - 0x97C1: 0x6DBC, //CJK UNIFIED IDEOGRAPH - 0x97C2: 0x731F, //CJK UNIFIED IDEOGRAPH - 0x97C3: 0x7642, //CJK UNIFIED IDEOGRAPH - 0x97C4: 0x77AD, //CJK UNIFIED IDEOGRAPH - 0x97C5: 0x7A1C, //CJK UNIFIED IDEOGRAPH - 0x97C6: 0x7CE7, //CJK UNIFIED IDEOGRAPH - 0x97C7: 0x826F, //CJK UNIFIED IDEOGRAPH - 0x97C8: 0x8AD2, //CJK UNIFIED IDEOGRAPH - 0x97C9: 0x907C, //CJK UNIFIED IDEOGRAPH - 0x97CA: 0x91CF, //CJK UNIFIED IDEOGRAPH - 0x97CB: 0x9675, //CJK UNIFIED IDEOGRAPH - 0x97CC: 0x9818, //CJK UNIFIED IDEOGRAPH - 0x97CD: 0x529B, //CJK UNIFIED IDEOGRAPH - 0x97CE: 0x7DD1, //CJK UNIFIED IDEOGRAPH - 0x97CF: 0x502B, //CJK UNIFIED IDEOGRAPH - 0x97D0: 0x5398, //CJK UNIFIED IDEOGRAPH - 0x97D1: 0x6797, //CJK UNIFIED IDEOGRAPH - 0x97D2: 0x6DCB, //CJK UNIFIED IDEOGRAPH - 0x97D3: 0x71D0, //CJK UNIFIED IDEOGRAPH - 0x97D4: 0x7433, //CJK UNIFIED IDEOGRAPH - 0x97D5: 0x81E8, //CJK UNIFIED IDEOGRAPH - 0x97D6: 0x8F2A, //CJK UNIFIED IDEOGRAPH - 0x97D7: 0x96A3, //CJK UNIFIED IDEOGRAPH - 0x97D8: 0x9C57, //CJK UNIFIED IDEOGRAPH - 0x97D9: 0x9E9F, //CJK UNIFIED IDEOGRAPH - 0x97DA: 0x7460, //CJK UNIFIED IDEOGRAPH - 0x97DB: 0x5841, //CJK UNIFIED IDEOGRAPH - 0x97DC: 0x6D99, //CJK UNIFIED IDEOGRAPH - 0x97DD: 0x7D2F, //CJK UNIFIED IDEOGRAPH - 0x97DE: 0x985E, //CJK UNIFIED IDEOGRAPH - 0x97DF: 0x4EE4, //CJK UNIFIED IDEOGRAPH - 0x97E0: 0x4F36, //CJK UNIFIED IDEOGRAPH - 0x97E1: 0x4F8B, //CJK UNIFIED IDEOGRAPH - 0x97E2: 0x51B7, //CJK UNIFIED IDEOGRAPH - 0x97E3: 0x52B1, //CJK UNIFIED IDEOGRAPH - 0x97E4: 0x5DBA, //CJK UNIFIED IDEOGRAPH - 0x97E5: 0x601C, //CJK UNIFIED IDEOGRAPH - 0x97E6: 0x73B2, //CJK UNIFIED IDEOGRAPH - 0x97E7: 0x793C, //CJK UNIFIED IDEOGRAPH - 0x97E8: 0x82D3, //CJK UNIFIED IDEOGRAPH - 0x97E9: 0x9234, //CJK UNIFIED IDEOGRAPH - 0x97EA: 0x96B7, //CJK UNIFIED IDEOGRAPH - 0x97EB: 0x96F6, //CJK UNIFIED IDEOGRAPH - 0x97EC: 0x970A, //CJK UNIFIED IDEOGRAPH - 0x97ED: 0x9E97, //CJK UNIFIED IDEOGRAPH - 0x97EE: 0x9F62, //CJK UNIFIED IDEOGRAPH - 0x97EF: 0x66A6, //CJK UNIFIED IDEOGRAPH - 0x97F0: 0x6B74, //CJK UNIFIED IDEOGRAPH - 0x97F1: 0x5217, //CJK UNIFIED IDEOGRAPH - 0x97F2: 0x52A3, //CJK UNIFIED IDEOGRAPH - 0x97F3: 0x70C8, //CJK UNIFIED IDEOGRAPH - 0x97F4: 0x88C2, //CJK UNIFIED IDEOGRAPH - 0x97F5: 0x5EC9, //CJK UNIFIED IDEOGRAPH - 0x97F6: 0x604B, //CJK UNIFIED IDEOGRAPH - 0x97F7: 0x6190, //CJK UNIFIED IDEOGRAPH - 0x97F8: 0x6F23, //CJK UNIFIED IDEOGRAPH - 0x97F9: 0x7149, //CJK UNIFIED IDEOGRAPH - 0x97FA: 0x7C3E, //CJK UNIFIED IDEOGRAPH - 0x97FB: 0x7DF4, //CJK UNIFIED IDEOGRAPH - 0x97FC: 0x806F, //CJK UNIFIED IDEOGRAPH - 0x9840: 0x84EE, //CJK UNIFIED IDEOGRAPH - 0x9841: 0x9023, //CJK UNIFIED IDEOGRAPH - 0x9842: 0x932C, //CJK UNIFIED IDEOGRAPH - 0x9843: 0x5442, //CJK UNIFIED IDEOGRAPH - 0x9844: 0x9B6F, //CJK UNIFIED IDEOGRAPH - 0x9845: 0x6AD3, //CJK UNIFIED IDEOGRAPH - 0x9846: 0x7089, //CJK UNIFIED IDEOGRAPH - 0x9847: 0x8CC2, //CJK UNIFIED IDEOGRAPH - 0x9848: 0x8DEF, //CJK UNIFIED IDEOGRAPH - 0x9849: 0x9732, //CJK UNIFIED IDEOGRAPH - 0x984A: 0x52B4, //CJK UNIFIED IDEOGRAPH - 0x984B: 0x5A41, //CJK UNIFIED IDEOGRAPH - 0x984C: 0x5ECA, //CJK UNIFIED IDEOGRAPH - 0x984D: 0x5F04, //CJK UNIFIED IDEOGRAPH - 0x984E: 0x6717, //CJK UNIFIED IDEOGRAPH - 0x984F: 0x697C, //CJK UNIFIED IDEOGRAPH - 0x9850: 0x6994, //CJK UNIFIED IDEOGRAPH - 0x9851: 0x6D6A, //CJK UNIFIED IDEOGRAPH - 0x9852: 0x6F0F, //CJK UNIFIED IDEOGRAPH - 0x9853: 0x7262, //CJK UNIFIED IDEOGRAPH - 0x9854: 0x72FC, //CJK UNIFIED IDEOGRAPH - 0x9855: 0x7BED, //CJK UNIFIED IDEOGRAPH - 0x9856: 0x8001, //CJK UNIFIED IDEOGRAPH - 0x9857: 0x807E, //CJK UNIFIED IDEOGRAPH - 0x9858: 0x874B, //CJK UNIFIED IDEOGRAPH - 0x9859: 0x90CE, //CJK UNIFIED IDEOGRAPH - 0x985A: 0x516D, //CJK UNIFIED IDEOGRAPH - 0x985B: 0x9E93, //CJK UNIFIED IDEOGRAPH - 0x985C: 0x7984, //CJK UNIFIED IDEOGRAPH - 0x985D: 0x808B, //CJK UNIFIED IDEOGRAPH - 0x985E: 0x9332, //CJK UNIFIED IDEOGRAPH - 0x985F: 0x8AD6, //CJK UNIFIED IDEOGRAPH - 0x9860: 0x502D, //CJK UNIFIED IDEOGRAPH - 0x9861: 0x548C, //CJK UNIFIED IDEOGRAPH - 0x9862: 0x8A71, //CJK UNIFIED IDEOGRAPH - 0x9863: 0x6B6A, //CJK UNIFIED IDEOGRAPH - 0x9864: 0x8CC4, //CJK UNIFIED IDEOGRAPH - 0x9865: 0x8107, //CJK UNIFIED IDEOGRAPH - 0x9866: 0x60D1, //CJK UNIFIED IDEOGRAPH - 0x9867: 0x67A0, //CJK UNIFIED IDEOGRAPH - 0x9868: 0x9DF2, //CJK UNIFIED IDEOGRAPH - 0x9869: 0x4E99, //CJK UNIFIED IDEOGRAPH - 0x986A: 0x4E98, //CJK UNIFIED IDEOGRAPH - 0x986B: 0x9C10, //CJK UNIFIED IDEOGRAPH - 0x986C: 0x8A6B, //CJK UNIFIED IDEOGRAPH - 0x986D: 0x85C1, //CJK UNIFIED IDEOGRAPH - 0x986E: 0x8568, //CJK UNIFIED IDEOGRAPH - 0x986F: 0x6900, //CJK UNIFIED IDEOGRAPH - 0x9870: 0x6E7E, //CJK UNIFIED IDEOGRAPH - 0x9871: 0x7897, //CJK UNIFIED IDEOGRAPH - 0x9872: 0x8155, //CJK UNIFIED IDEOGRAPH - 0x989F: 0x5F0C, //CJK UNIFIED IDEOGRAPH - 0x98A0: 0x4E10, //CJK UNIFIED IDEOGRAPH - 0x98A1: 0x4E15, //CJK UNIFIED IDEOGRAPH - 0x98A2: 0x4E2A, //CJK UNIFIED IDEOGRAPH - 0x98A3: 0x4E31, //CJK UNIFIED IDEOGRAPH - 0x98A4: 0x4E36, //CJK UNIFIED IDEOGRAPH - 0x98A5: 0x4E3C, //CJK UNIFIED IDEOGRAPH - 0x98A6: 0x4E3F, //CJK UNIFIED IDEOGRAPH - 0x98A7: 0x4E42, //CJK UNIFIED IDEOGRAPH - 0x98A8: 0x4E56, //CJK UNIFIED IDEOGRAPH - 0x98A9: 0x4E58, //CJK UNIFIED IDEOGRAPH - 0x98AA: 0x4E82, //CJK UNIFIED IDEOGRAPH - 0x98AB: 0x4E85, //CJK UNIFIED IDEOGRAPH - 0x98AC: 0x8C6B, //CJK UNIFIED IDEOGRAPH - 0x98AD: 0x4E8A, //CJK UNIFIED IDEOGRAPH - 0x98AE: 0x8212, //CJK UNIFIED IDEOGRAPH - 0x98AF: 0x5F0D, //CJK UNIFIED IDEOGRAPH - 0x98B0: 0x4E8E, //CJK UNIFIED IDEOGRAPH - 0x98B1: 0x4E9E, //CJK UNIFIED IDEOGRAPH - 0x98B2: 0x4E9F, //CJK UNIFIED IDEOGRAPH - 0x98B3: 0x4EA0, //CJK UNIFIED IDEOGRAPH - 0x98B4: 0x4EA2, //CJK UNIFIED IDEOGRAPH - 0x98B5: 0x4EB0, //CJK UNIFIED IDEOGRAPH - 0x98B6: 0x4EB3, //CJK UNIFIED IDEOGRAPH - 0x98B7: 0x4EB6, //CJK UNIFIED IDEOGRAPH - 0x98B8: 0x4ECE, //CJK UNIFIED IDEOGRAPH - 0x98B9: 0x4ECD, //CJK UNIFIED IDEOGRAPH - 0x98BA: 0x4EC4, //CJK UNIFIED IDEOGRAPH - 0x98BB: 0x4EC6, //CJK UNIFIED IDEOGRAPH - 0x98BC: 0x4EC2, //CJK UNIFIED IDEOGRAPH - 0x98BD: 0x4ED7, //CJK UNIFIED IDEOGRAPH - 0x98BE: 0x4EDE, //CJK UNIFIED IDEOGRAPH - 0x98BF: 0x4EED, //CJK UNIFIED IDEOGRAPH - 0x98C0: 0x4EDF, //CJK UNIFIED IDEOGRAPH - 0x98C1: 0x4EF7, //CJK UNIFIED IDEOGRAPH - 0x98C2: 0x4F09, //CJK UNIFIED IDEOGRAPH - 0x98C3: 0x4F5A, //CJK UNIFIED IDEOGRAPH - 0x98C4: 0x4F30, //CJK UNIFIED IDEOGRAPH - 0x98C5: 0x4F5B, //CJK UNIFIED IDEOGRAPH - 0x98C6: 0x4F5D, //CJK UNIFIED IDEOGRAPH - 0x98C7: 0x4F57, //CJK UNIFIED IDEOGRAPH - 0x98C8: 0x4F47, //CJK UNIFIED IDEOGRAPH - 0x98C9: 0x4F76, //CJK UNIFIED IDEOGRAPH - 0x98CA: 0x4F88, //CJK UNIFIED IDEOGRAPH - 0x98CB: 0x4F8F, //CJK UNIFIED IDEOGRAPH - 0x98CC: 0x4F98, //CJK UNIFIED IDEOGRAPH - 0x98CD: 0x4F7B, //CJK UNIFIED IDEOGRAPH - 0x98CE: 0x4F69, //CJK UNIFIED IDEOGRAPH - 0x98CF: 0x4F70, //CJK UNIFIED IDEOGRAPH - 0x98D0: 0x4F91, //CJK UNIFIED IDEOGRAPH - 0x98D1: 0x4F6F, //CJK UNIFIED IDEOGRAPH - 0x98D2: 0x4F86, //CJK UNIFIED IDEOGRAPH - 0x98D3: 0x4F96, //CJK UNIFIED IDEOGRAPH - 0x98D4: 0x5118, //CJK UNIFIED IDEOGRAPH - 0x98D5: 0x4FD4, //CJK UNIFIED IDEOGRAPH - 0x98D6: 0x4FDF, //CJK UNIFIED IDEOGRAPH - 0x98D7: 0x4FCE, //CJK UNIFIED IDEOGRAPH - 0x98D8: 0x4FD8, //CJK UNIFIED IDEOGRAPH - 0x98D9: 0x4FDB, //CJK UNIFIED IDEOGRAPH - 0x98DA: 0x4FD1, //CJK UNIFIED IDEOGRAPH - 0x98DB: 0x4FDA, //CJK UNIFIED IDEOGRAPH - 0x98DC: 0x4FD0, //CJK UNIFIED IDEOGRAPH - 0x98DD: 0x4FE4, //CJK UNIFIED IDEOGRAPH - 0x98DE: 0x4FE5, //CJK UNIFIED IDEOGRAPH - 0x98DF: 0x501A, //CJK UNIFIED IDEOGRAPH - 0x98E0: 0x5028, //CJK UNIFIED IDEOGRAPH - 0x98E1: 0x5014, //CJK UNIFIED IDEOGRAPH - 0x98E2: 0x502A, //CJK UNIFIED IDEOGRAPH - 0x98E3: 0x5025, //CJK UNIFIED IDEOGRAPH - 0x98E4: 0x5005, //CJK UNIFIED IDEOGRAPH - 0x98E5: 0x4F1C, //CJK UNIFIED IDEOGRAPH - 0x98E6: 0x4FF6, //CJK UNIFIED IDEOGRAPH - 0x98E7: 0x5021, //CJK UNIFIED IDEOGRAPH - 0x98E8: 0x5029, //CJK UNIFIED IDEOGRAPH - 0x98E9: 0x502C, //CJK UNIFIED IDEOGRAPH - 0x98EA: 0x4FFE, //CJK UNIFIED IDEOGRAPH - 0x98EB: 0x4FEF, //CJK UNIFIED IDEOGRAPH - 0x98EC: 0x5011, //CJK UNIFIED IDEOGRAPH - 0x98ED: 0x5006, //CJK UNIFIED IDEOGRAPH - 0x98EE: 0x5043, //CJK UNIFIED IDEOGRAPH - 0x98EF: 0x5047, //CJK UNIFIED IDEOGRAPH - 0x98F0: 0x6703, //CJK UNIFIED IDEOGRAPH - 0x98F1: 0x5055, //CJK UNIFIED IDEOGRAPH - 0x98F2: 0x5050, //CJK UNIFIED IDEOGRAPH - 0x98F3: 0x5048, //CJK UNIFIED IDEOGRAPH - 0x98F4: 0x505A, //CJK UNIFIED IDEOGRAPH - 0x98F5: 0x5056, //CJK UNIFIED IDEOGRAPH - 0x98F6: 0x506C, //CJK UNIFIED IDEOGRAPH - 0x98F7: 0x5078, //CJK UNIFIED IDEOGRAPH - 0x98F8: 0x5080, //CJK UNIFIED IDEOGRAPH - 0x98F9: 0x509A, //CJK UNIFIED IDEOGRAPH - 0x98FA: 0x5085, //CJK UNIFIED IDEOGRAPH - 0x98FB: 0x50B4, //CJK UNIFIED IDEOGRAPH - 0x98FC: 0x50B2, //CJK UNIFIED IDEOGRAPH - 0x9940: 0x50C9, //CJK UNIFIED IDEOGRAPH - 0x9941: 0x50CA, //CJK UNIFIED IDEOGRAPH - 0x9942: 0x50B3, //CJK UNIFIED IDEOGRAPH - 0x9943: 0x50C2, //CJK UNIFIED IDEOGRAPH - 0x9944: 0x50D6, //CJK UNIFIED IDEOGRAPH - 0x9945: 0x50DE, //CJK UNIFIED IDEOGRAPH - 0x9946: 0x50E5, //CJK UNIFIED IDEOGRAPH - 0x9947: 0x50ED, //CJK UNIFIED IDEOGRAPH - 0x9948: 0x50E3, //CJK UNIFIED IDEOGRAPH - 0x9949: 0x50EE, //CJK UNIFIED IDEOGRAPH - 0x994A: 0x50F9, //CJK UNIFIED IDEOGRAPH - 0x994B: 0x50F5, //CJK UNIFIED IDEOGRAPH - 0x994C: 0x5109, //CJK UNIFIED IDEOGRAPH - 0x994D: 0x5101, //CJK UNIFIED IDEOGRAPH - 0x994E: 0x5102, //CJK UNIFIED IDEOGRAPH - 0x994F: 0x5116, //CJK UNIFIED IDEOGRAPH - 0x9950: 0x5115, //CJK UNIFIED IDEOGRAPH - 0x9951: 0x5114, //CJK UNIFIED IDEOGRAPH - 0x9952: 0x511A, //CJK UNIFIED IDEOGRAPH - 0x9953: 0x5121, //CJK UNIFIED IDEOGRAPH - 0x9954: 0x513A, //CJK UNIFIED IDEOGRAPH - 0x9955: 0x5137, //CJK UNIFIED IDEOGRAPH - 0x9956: 0x513C, //CJK UNIFIED IDEOGRAPH - 0x9957: 0x513B, //CJK UNIFIED IDEOGRAPH - 0x9958: 0x513F, //CJK UNIFIED IDEOGRAPH - 0x9959: 0x5140, //CJK UNIFIED IDEOGRAPH - 0x995A: 0x5152, //CJK UNIFIED IDEOGRAPH - 0x995B: 0x514C, //CJK UNIFIED IDEOGRAPH - 0x995C: 0x5154, //CJK UNIFIED IDEOGRAPH - 0x995D: 0x5162, //CJK UNIFIED IDEOGRAPH - 0x995E: 0x7AF8, //CJK UNIFIED IDEOGRAPH - 0x995F: 0x5169, //CJK UNIFIED IDEOGRAPH - 0x9960: 0x516A, //CJK UNIFIED IDEOGRAPH - 0x9961: 0x516E, //CJK UNIFIED IDEOGRAPH - 0x9962: 0x5180, //CJK UNIFIED IDEOGRAPH - 0x9963: 0x5182, //CJK UNIFIED IDEOGRAPH - 0x9964: 0x56D8, //CJK UNIFIED IDEOGRAPH - 0x9965: 0x518C, //CJK UNIFIED IDEOGRAPH - 0x9966: 0x5189, //CJK UNIFIED IDEOGRAPH - 0x9967: 0x518F, //CJK UNIFIED IDEOGRAPH - 0x9968: 0x5191, //CJK UNIFIED IDEOGRAPH - 0x9969: 0x5193, //CJK UNIFIED IDEOGRAPH - 0x996A: 0x5195, //CJK UNIFIED IDEOGRAPH - 0x996B: 0x5196, //CJK UNIFIED IDEOGRAPH - 0x996C: 0x51A4, //CJK UNIFIED IDEOGRAPH - 0x996D: 0x51A6, //CJK UNIFIED IDEOGRAPH - 0x996E: 0x51A2, //CJK UNIFIED IDEOGRAPH - 0x996F: 0x51A9, //CJK UNIFIED IDEOGRAPH - 0x9970: 0x51AA, //CJK UNIFIED IDEOGRAPH - 0x9971: 0x51AB, //CJK UNIFIED IDEOGRAPH - 0x9972: 0x51B3, //CJK UNIFIED IDEOGRAPH - 0x9973: 0x51B1, //CJK UNIFIED IDEOGRAPH - 0x9974: 0x51B2, //CJK UNIFIED IDEOGRAPH - 0x9975: 0x51B0, //CJK UNIFIED IDEOGRAPH - 0x9976: 0x51B5, //CJK UNIFIED IDEOGRAPH - 0x9977: 0x51BD, //CJK UNIFIED IDEOGRAPH - 0x9978: 0x51C5, //CJK UNIFIED IDEOGRAPH - 0x9979: 0x51C9, //CJK UNIFIED IDEOGRAPH - 0x997A: 0x51DB, //CJK UNIFIED IDEOGRAPH - 0x997B: 0x51E0, //CJK UNIFIED IDEOGRAPH - 0x997C: 0x8655, //CJK UNIFIED IDEOGRAPH - 0x997D: 0x51E9, //CJK UNIFIED IDEOGRAPH - 0x997E: 0x51ED, //CJK UNIFIED IDEOGRAPH - 0x9980: 0x51F0, //CJK UNIFIED IDEOGRAPH - 0x9981: 0x51F5, //CJK UNIFIED IDEOGRAPH - 0x9982: 0x51FE, //CJK UNIFIED IDEOGRAPH - 0x9983: 0x5204, //CJK UNIFIED IDEOGRAPH - 0x9984: 0x520B, //CJK UNIFIED IDEOGRAPH - 0x9985: 0x5214, //CJK UNIFIED IDEOGRAPH - 0x9986: 0x520E, //CJK UNIFIED IDEOGRAPH - 0x9987: 0x5227, //CJK UNIFIED IDEOGRAPH - 0x9988: 0x522A, //CJK UNIFIED IDEOGRAPH - 0x9989: 0x522E, //CJK UNIFIED IDEOGRAPH - 0x998A: 0x5233, //CJK UNIFIED IDEOGRAPH - 0x998B: 0x5239, //CJK UNIFIED IDEOGRAPH - 0x998C: 0x524F, //CJK UNIFIED IDEOGRAPH - 0x998D: 0x5244, //CJK UNIFIED IDEOGRAPH - 0x998E: 0x524B, //CJK UNIFIED IDEOGRAPH - 0x998F: 0x524C, //CJK UNIFIED IDEOGRAPH - 0x9990: 0x525E, //CJK UNIFIED IDEOGRAPH - 0x9991: 0x5254, //CJK UNIFIED IDEOGRAPH - 0x9992: 0x526A, //CJK UNIFIED IDEOGRAPH - 0x9993: 0x5274, //CJK UNIFIED IDEOGRAPH - 0x9994: 0x5269, //CJK UNIFIED IDEOGRAPH - 0x9995: 0x5273, //CJK UNIFIED IDEOGRAPH - 0x9996: 0x527F, //CJK UNIFIED IDEOGRAPH - 0x9997: 0x527D, //CJK UNIFIED IDEOGRAPH - 0x9998: 0x528D, //CJK UNIFIED IDEOGRAPH - 0x9999: 0x5294, //CJK UNIFIED IDEOGRAPH - 0x999A: 0x5292, //CJK UNIFIED IDEOGRAPH - 0x999B: 0x5271, //CJK UNIFIED IDEOGRAPH - 0x999C: 0x5288, //CJK UNIFIED IDEOGRAPH - 0x999D: 0x5291, //CJK UNIFIED IDEOGRAPH - 0x999E: 0x8FA8, //CJK UNIFIED IDEOGRAPH - 0x999F: 0x8FA7, //CJK UNIFIED IDEOGRAPH - 0x99A0: 0x52AC, //CJK UNIFIED IDEOGRAPH - 0x99A1: 0x52AD, //CJK UNIFIED IDEOGRAPH - 0x99A2: 0x52BC, //CJK UNIFIED IDEOGRAPH - 0x99A3: 0x52B5, //CJK UNIFIED IDEOGRAPH - 0x99A4: 0x52C1, //CJK UNIFIED IDEOGRAPH - 0x99A5: 0x52CD, //CJK UNIFIED IDEOGRAPH - 0x99A6: 0x52D7, //CJK UNIFIED IDEOGRAPH - 0x99A7: 0x52DE, //CJK UNIFIED IDEOGRAPH - 0x99A8: 0x52E3, //CJK UNIFIED IDEOGRAPH - 0x99A9: 0x52E6, //CJK UNIFIED IDEOGRAPH - 0x99AA: 0x98ED, //CJK UNIFIED IDEOGRAPH - 0x99AB: 0x52E0, //CJK UNIFIED IDEOGRAPH - 0x99AC: 0x52F3, //CJK UNIFIED IDEOGRAPH - 0x99AD: 0x52F5, //CJK UNIFIED IDEOGRAPH - 0x99AE: 0x52F8, //CJK UNIFIED IDEOGRAPH - 0x99AF: 0x52F9, //CJK UNIFIED IDEOGRAPH - 0x99B0: 0x5306, //CJK UNIFIED IDEOGRAPH - 0x99B1: 0x5308, //CJK UNIFIED IDEOGRAPH - 0x99B2: 0x7538, //CJK UNIFIED IDEOGRAPH - 0x99B3: 0x530D, //CJK UNIFIED IDEOGRAPH - 0x99B4: 0x5310, //CJK UNIFIED IDEOGRAPH - 0x99B5: 0x530F, //CJK UNIFIED IDEOGRAPH - 0x99B6: 0x5315, //CJK UNIFIED IDEOGRAPH - 0x99B7: 0x531A, //CJK UNIFIED IDEOGRAPH - 0x99B8: 0x5323, //CJK UNIFIED IDEOGRAPH - 0x99B9: 0x532F, //CJK UNIFIED IDEOGRAPH - 0x99BA: 0x5331, //CJK UNIFIED IDEOGRAPH - 0x99BB: 0x5333, //CJK UNIFIED IDEOGRAPH - 0x99BC: 0x5338, //CJK UNIFIED IDEOGRAPH - 0x99BD: 0x5340, //CJK UNIFIED IDEOGRAPH - 0x99BE: 0x5346, //CJK UNIFIED IDEOGRAPH - 0x99BF: 0x5345, //CJK UNIFIED IDEOGRAPH - 0x99C0: 0x4E17, //CJK UNIFIED IDEOGRAPH - 0x99C1: 0x5349, //CJK UNIFIED IDEOGRAPH - 0x99C2: 0x534D, //CJK UNIFIED IDEOGRAPH - 0x99C3: 0x51D6, //CJK UNIFIED IDEOGRAPH - 0x99C4: 0x535E, //CJK UNIFIED IDEOGRAPH - 0x99C5: 0x5369, //CJK UNIFIED IDEOGRAPH - 0x99C6: 0x536E, //CJK UNIFIED IDEOGRAPH - 0x99C7: 0x5918, //CJK UNIFIED IDEOGRAPH - 0x99C8: 0x537B, //CJK UNIFIED IDEOGRAPH - 0x99C9: 0x5377, //CJK UNIFIED IDEOGRAPH - 0x99CA: 0x5382, //CJK UNIFIED IDEOGRAPH - 0x99CB: 0x5396, //CJK UNIFIED IDEOGRAPH - 0x99CC: 0x53A0, //CJK UNIFIED IDEOGRAPH - 0x99CD: 0x53A6, //CJK UNIFIED IDEOGRAPH - 0x99CE: 0x53A5, //CJK UNIFIED IDEOGRAPH - 0x99CF: 0x53AE, //CJK UNIFIED IDEOGRAPH - 0x99D0: 0x53B0, //CJK UNIFIED IDEOGRAPH - 0x99D1: 0x53B6, //CJK UNIFIED IDEOGRAPH - 0x99D2: 0x53C3, //CJK UNIFIED IDEOGRAPH - 0x99D3: 0x7C12, //CJK UNIFIED IDEOGRAPH - 0x99D4: 0x96D9, //CJK UNIFIED IDEOGRAPH - 0x99D5: 0x53DF, //CJK UNIFIED IDEOGRAPH - 0x99D6: 0x66FC, //CJK UNIFIED IDEOGRAPH - 0x99D7: 0x71EE, //CJK UNIFIED IDEOGRAPH - 0x99D8: 0x53EE, //CJK UNIFIED IDEOGRAPH - 0x99D9: 0x53E8, //CJK UNIFIED IDEOGRAPH - 0x99DA: 0x53ED, //CJK UNIFIED IDEOGRAPH - 0x99DB: 0x53FA, //CJK UNIFIED IDEOGRAPH - 0x99DC: 0x5401, //CJK UNIFIED IDEOGRAPH - 0x99DD: 0x543D, //CJK UNIFIED IDEOGRAPH - 0x99DE: 0x5440, //CJK UNIFIED IDEOGRAPH - 0x99DF: 0x542C, //CJK UNIFIED IDEOGRAPH - 0x99E0: 0x542D, //CJK UNIFIED IDEOGRAPH - 0x99E1: 0x543C, //CJK UNIFIED IDEOGRAPH - 0x99E2: 0x542E, //CJK UNIFIED IDEOGRAPH - 0x99E3: 0x5436, //CJK UNIFIED IDEOGRAPH - 0x99E4: 0x5429, //CJK UNIFIED IDEOGRAPH - 0x99E5: 0x541D, //CJK UNIFIED IDEOGRAPH - 0x99E6: 0x544E, //CJK UNIFIED IDEOGRAPH - 0x99E7: 0x548F, //CJK UNIFIED IDEOGRAPH - 0x99E8: 0x5475, //CJK UNIFIED IDEOGRAPH - 0x99E9: 0x548E, //CJK UNIFIED IDEOGRAPH - 0x99EA: 0x545F, //CJK UNIFIED IDEOGRAPH - 0x99EB: 0x5471, //CJK UNIFIED IDEOGRAPH - 0x99EC: 0x5477, //CJK UNIFIED IDEOGRAPH - 0x99ED: 0x5470, //CJK UNIFIED IDEOGRAPH - 0x99EE: 0x5492, //CJK UNIFIED IDEOGRAPH - 0x99EF: 0x547B, //CJK UNIFIED IDEOGRAPH - 0x99F0: 0x5480, //CJK UNIFIED IDEOGRAPH - 0x99F1: 0x5476, //CJK UNIFIED IDEOGRAPH - 0x99F2: 0x5484, //CJK UNIFIED IDEOGRAPH - 0x99F3: 0x5490, //CJK UNIFIED IDEOGRAPH - 0x99F4: 0x5486, //CJK UNIFIED IDEOGRAPH - 0x99F5: 0x54C7, //CJK UNIFIED IDEOGRAPH - 0x99F6: 0x54A2, //CJK UNIFIED IDEOGRAPH - 0x99F7: 0x54B8, //CJK UNIFIED IDEOGRAPH - 0x99F8: 0x54A5, //CJK UNIFIED IDEOGRAPH - 0x99F9: 0x54AC, //CJK UNIFIED IDEOGRAPH - 0x99FA: 0x54C4, //CJK UNIFIED IDEOGRAPH - 0x99FB: 0x54C8, //CJK UNIFIED IDEOGRAPH - 0x99FC: 0x54A8, //CJK UNIFIED IDEOGRAPH - 0x9A40: 0x54AB, //CJK UNIFIED IDEOGRAPH - 0x9A41: 0x54C2, //CJK UNIFIED IDEOGRAPH - 0x9A42: 0x54A4, //CJK UNIFIED IDEOGRAPH - 0x9A43: 0x54BE, //CJK UNIFIED IDEOGRAPH - 0x9A44: 0x54BC, //CJK UNIFIED IDEOGRAPH - 0x9A45: 0x54D8, //CJK UNIFIED IDEOGRAPH - 0x9A46: 0x54E5, //CJK UNIFIED IDEOGRAPH - 0x9A47: 0x54E6, //CJK UNIFIED IDEOGRAPH - 0x9A48: 0x550F, //CJK UNIFIED IDEOGRAPH - 0x9A49: 0x5514, //CJK UNIFIED IDEOGRAPH - 0x9A4A: 0x54FD, //CJK UNIFIED IDEOGRAPH - 0x9A4B: 0x54EE, //CJK UNIFIED IDEOGRAPH - 0x9A4C: 0x54ED, //CJK UNIFIED IDEOGRAPH - 0x9A4D: 0x54FA, //CJK UNIFIED IDEOGRAPH - 0x9A4E: 0x54E2, //CJK UNIFIED IDEOGRAPH - 0x9A4F: 0x5539, //CJK UNIFIED IDEOGRAPH - 0x9A50: 0x5540, //CJK UNIFIED IDEOGRAPH - 0x9A51: 0x5563, //CJK UNIFIED IDEOGRAPH - 0x9A52: 0x554C, //CJK UNIFIED IDEOGRAPH - 0x9A53: 0x552E, //CJK UNIFIED IDEOGRAPH - 0x9A54: 0x555C, //CJK UNIFIED IDEOGRAPH - 0x9A55: 0x5545, //CJK UNIFIED IDEOGRAPH - 0x9A56: 0x5556, //CJK UNIFIED IDEOGRAPH - 0x9A57: 0x5557, //CJK UNIFIED IDEOGRAPH - 0x9A58: 0x5538, //CJK UNIFIED IDEOGRAPH - 0x9A59: 0x5533, //CJK UNIFIED IDEOGRAPH - 0x9A5A: 0x555D, //CJK UNIFIED IDEOGRAPH - 0x9A5B: 0x5599, //CJK UNIFIED IDEOGRAPH - 0x9A5C: 0x5580, //CJK UNIFIED IDEOGRAPH - 0x9A5D: 0x54AF, //CJK UNIFIED IDEOGRAPH - 0x9A5E: 0x558A, //CJK UNIFIED IDEOGRAPH - 0x9A5F: 0x559F, //CJK UNIFIED IDEOGRAPH - 0x9A60: 0x557B, //CJK UNIFIED IDEOGRAPH - 0x9A61: 0x557E, //CJK UNIFIED IDEOGRAPH - 0x9A62: 0x5598, //CJK UNIFIED IDEOGRAPH - 0x9A63: 0x559E, //CJK UNIFIED IDEOGRAPH - 0x9A64: 0x55AE, //CJK UNIFIED IDEOGRAPH - 0x9A65: 0x557C, //CJK UNIFIED IDEOGRAPH - 0x9A66: 0x5583, //CJK UNIFIED IDEOGRAPH - 0x9A67: 0x55A9, //CJK UNIFIED IDEOGRAPH - 0x9A68: 0x5587, //CJK UNIFIED IDEOGRAPH - 0x9A69: 0x55A8, //CJK UNIFIED IDEOGRAPH - 0x9A6A: 0x55DA, //CJK UNIFIED IDEOGRAPH - 0x9A6B: 0x55C5, //CJK UNIFIED IDEOGRAPH - 0x9A6C: 0x55DF, //CJK UNIFIED IDEOGRAPH - 0x9A6D: 0x55C4, //CJK UNIFIED IDEOGRAPH - 0x9A6E: 0x55DC, //CJK UNIFIED IDEOGRAPH - 0x9A6F: 0x55E4, //CJK UNIFIED IDEOGRAPH - 0x9A70: 0x55D4, //CJK UNIFIED IDEOGRAPH - 0x9A71: 0x5614, //CJK UNIFIED IDEOGRAPH - 0x9A72: 0x55F7, //CJK UNIFIED IDEOGRAPH - 0x9A73: 0x5616, //CJK UNIFIED IDEOGRAPH - 0x9A74: 0x55FE, //CJK UNIFIED IDEOGRAPH - 0x9A75: 0x55FD, //CJK UNIFIED IDEOGRAPH - 0x9A76: 0x561B, //CJK UNIFIED IDEOGRAPH - 0x9A77: 0x55F9, //CJK UNIFIED IDEOGRAPH - 0x9A78: 0x564E, //CJK UNIFIED IDEOGRAPH - 0x9A79: 0x5650, //CJK UNIFIED IDEOGRAPH - 0x9A7A: 0x71DF, //CJK UNIFIED IDEOGRAPH - 0x9A7B: 0x5634, //CJK UNIFIED IDEOGRAPH - 0x9A7C: 0x5636, //CJK UNIFIED IDEOGRAPH - 0x9A7D: 0x5632, //CJK UNIFIED IDEOGRAPH - 0x9A7E: 0x5638, //CJK UNIFIED IDEOGRAPH - 0x9A80: 0x566B, //CJK UNIFIED IDEOGRAPH - 0x9A81: 0x5664, //CJK UNIFIED IDEOGRAPH - 0x9A82: 0x562F, //CJK UNIFIED IDEOGRAPH - 0x9A83: 0x566C, //CJK UNIFIED IDEOGRAPH - 0x9A84: 0x566A, //CJK UNIFIED IDEOGRAPH - 0x9A85: 0x5686, //CJK UNIFIED IDEOGRAPH - 0x9A86: 0x5680, //CJK UNIFIED IDEOGRAPH - 0x9A87: 0x568A, //CJK UNIFIED IDEOGRAPH - 0x9A88: 0x56A0, //CJK UNIFIED IDEOGRAPH - 0x9A89: 0x5694, //CJK UNIFIED IDEOGRAPH - 0x9A8A: 0x568F, //CJK UNIFIED IDEOGRAPH - 0x9A8B: 0x56A5, //CJK UNIFIED IDEOGRAPH - 0x9A8C: 0x56AE, //CJK UNIFIED IDEOGRAPH - 0x9A8D: 0x56B6, //CJK UNIFIED IDEOGRAPH - 0x9A8E: 0x56B4, //CJK UNIFIED IDEOGRAPH - 0x9A8F: 0x56C2, //CJK UNIFIED IDEOGRAPH - 0x9A90: 0x56BC, //CJK UNIFIED IDEOGRAPH - 0x9A91: 0x56C1, //CJK UNIFIED IDEOGRAPH - 0x9A92: 0x56C3, //CJK UNIFIED IDEOGRAPH - 0x9A93: 0x56C0, //CJK UNIFIED IDEOGRAPH - 0x9A94: 0x56C8, //CJK UNIFIED IDEOGRAPH - 0x9A95: 0x56CE, //CJK UNIFIED IDEOGRAPH - 0x9A96: 0x56D1, //CJK UNIFIED IDEOGRAPH - 0x9A97: 0x56D3, //CJK UNIFIED IDEOGRAPH - 0x9A98: 0x56D7, //CJK UNIFIED IDEOGRAPH - 0x9A99: 0x56EE, //CJK UNIFIED IDEOGRAPH - 0x9A9A: 0x56F9, //CJK UNIFIED IDEOGRAPH - 0x9A9B: 0x5700, //CJK UNIFIED IDEOGRAPH - 0x9A9C: 0x56FF, //CJK UNIFIED IDEOGRAPH - 0x9A9D: 0x5704, //CJK UNIFIED IDEOGRAPH - 0x9A9E: 0x5709, //CJK UNIFIED IDEOGRAPH - 0x9A9F: 0x5708, //CJK UNIFIED IDEOGRAPH - 0x9AA0: 0x570B, //CJK UNIFIED IDEOGRAPH - 0x9AA1: 0x570D, //CJK UNIFIED IDEOGRAPH - 0x9AA2: 0x5713, //CJK UNIFIED IDEOGRAPH - 0x9AA3: 0x5718, //CJK UNIFIED IDEOGRAPH - 0x9AA4: 0x5716, //CJK UNIFIED IDEOGRAPH - 0x9AA5: 0x55C7, //CJK UNIFIED IDEOGRAPH - 0x9AA6: 0x571C, //CJK UNIFIED IDEOGRAPH - 0x9AA7: 0x5726, //CJK UNIFIED IDEOGRAPH - 0x9AA8: 0x5737, //CJK UNIFIED IDEOGRAPH - 0x9AA9: 0x5738, //CJK UNIFIED IDEOGRAPH - 0x9AAA: 0x574E, //CJK UNIFIED IDEOGRAPH - 0x9AAB: 0x573B, //CJK UNIFIED IDEOGRAPH - 0x9AAC: 0x5740, //CJK UNIFIED IDEOGRAPH - 0x9AAD: 0x574F, //CJK UNIFIED IDEOGRAPH - 0x9AAE: 0x5769, //CJK UNIFIED IDEOGRAPH - 0x9AAF: 0x57C0, //CJK UNIFIED IDEOGRAPH - 0x9AB0: 0x5788, //CJK UNIFIED IDEOGRAPH - 0x9AB1: 0x5761, //CJK UNIFIED IDEOGRAPH - 0x9AB2: 0x577F, //CJK UNIFIED IDEOGRAPH - 0x9AB3: 0x5789, //CJK UNIFIED IDEOGRAPH - 0x9AB4: 0x5793, //CJK UNIFIED IDEOGRAPH - 0x9AB5: 0x57A0, //CJK UNIFIED IDEOGRAPH - 0x9AB6: 0x57B3, //CJK UNIFIED IDEOGRAPH - 0x9AB7: 0x57A4, //CJK UNIFIED IDEOGRAPH - 0x9AB8: 0x57AA, //CJK UNIFIED IDEOGRAPH - 0x9AB9: 0x57B0, //CJK UNIFIED IDEOGRAPH - 0x9ABA: 0x57C3, //CJK UNIFIED IDEOGRAPH - 0x9ABB: 0x57C6, //CJK UNIFIED IDEOGRAPH - 0x9ABC: 0x57D4, //CJK UNIFIED IDEOGRAPH - 0x9ABD: 0x57D2, //CJK UNIFIED IDEOGRAPH - 0x9ABE: 0x57D3, //CJK UNIFIED IDEOGRAPH - 0x9ABF: 0x580A, //CJK UNIFIED IDEOGRAPH - 0x9AC0: 0x57D6, //CJK UNIFIED IDEOGRAPH - 0x9AC1: 0x57E3, //CJK UNIFIED IDEOGRAPH - 0x9AC2: 0x580B, //CJK UNIFIED IDEOGRAPH - 0x9AC3: 0x5819, //CJK UNIFIED IDEOGRAPH - 0x9AC4: 0x581D, //CJK UNIFIED IDEOGRAPH - 0x9AC5: 0x5872, //CJK UNIFIED IDEOGRAPH - 0x9AC6: 0x5821, //CJK UNIFIED IDEOGRAPH - 0x9AC7: 0x5862, //CJK UNIFIED IDEOGRAPH - 0x9AC8: 0x584B, //CJK UNIFIED IDEOGRAPH - 0x9AC9: 0x5870, //CJK UNIFIED IDEOGRAPH - 0x9ACA: 0x6BC0, //CJK UNIFIED IDEOGRAPH - 0x9ACB: 0x5852, //CJK UNIFIED IDEOGRAPH - 0x9ACC: 0x583D, //CJK UNIFIED IDEOGRAPH - 0x9ACD: 0x5879, //CJK UNIFIED IDEOGRAPH - 0x9ACE: 0x5885, //CJK UNIFIED IDEOGRAPH - 0x9ACF: 0x58B9, //CJK UNIFIED IDEOGRAPH - 0x9AD0: 0x589F, //CJK UNIFIED IDEOGRAPH - 0x9AD1: 0x58AB, //CJK UNIFIED IDEOGRAPH - 0x9AD2: 0x58BA, //CJK UNIFIED IDEOGRAPH - 0x9AD3: 0x58DE, //CJK UNIFIED IDEOGRAPH - 0x9AD4: 0x58BB, //CJK UNIFIED IDEOGRAPH - 0x9AD5: 0x58B8, //CJK UNIFIED IDEOGRAPH - 0x9AD6: 0x58AE, //CJK UNIFIED IDEOGRAPH - 0x9AD7: 0x58C5, //CJK UNIFIED IDEOGRAPH - 0x9AD8: 0x58D3, //CJK UNIFIED IDEOGRAPH - 0x9AD9: 0x58D1, //CJK UNIFIED IDEOGRAPH - 0x9ADA: 0x58D7, //CJK UNIFIED IDEOGRAPH - 0x9ADB: 0x58D9, //CJK UNIFIED IDEOGRAPH - 0x9ADC: 0x58D8, //CJK UNIFIED IDEOGRAPH - 0x9ADD: 0x58E5, //CJK UNIFIED IDEOGRAPH - 0x9ADE: 0x58DC, //CJK UNIFIED IDEOGRAPH - 0x9ADF: 0x58E4, //CJK UNIFIED IDEOGRAPH - 0x9AE0: 0x58DF, //CJK UNIFIED IDEOGRAPH - 0x9AE1: 0x58EF, //CJK UNIFIED IDEOGRAPH - 0x9AE2: 0x58FA, //CJK UNIFIED IDEOGRAPH - 0x9AE3: 0x58F9, //CJK UNIFIED IDEOGRAPH - 0x9AE4: 0x58FB, //CJK UNIFIED IDEOGRAPH - 0x9AE5: 0x58FC, //CJK UNIFIED IDEOGRAPH - 0x9AE6: 0x58FD, //CJK UNIFIED IDEOGRAPH - 0x9AE7: 0x5902, //CJK UNIFIED IDEOGRAPH - 0x9AE8: 0x590A, //CJK UNIFIED IDEOGRAPH - 0x9AE9: 0x5910, //CJK UNIFIED IDEOGRAPH - 0x9AEA: 0x591B, //CJK UNIFIED IDEOGRAPH - 0x9AEB: 0x68A6, //CJK UNIFIED IDEOGRAPH - 0x9AEC: 0x5925, //CJK UNIFIED IDEOGRAPH - 0x9AED: 0x592C, //CJK UNIFIED IDEOGRAPH - 0x9AEE: 0x592D, //CJK UNIFIED IDEOGRAPH - 0x9AEF: 0x5932, //CJK UNIFIED IDEOGRAPH - 0x9AF0: 0x5938, //CJK UNIFIED IDEOGRAPH - 0x9AF1: 0x593E, //CJK UNIFIED IDEOGRAPH - 0x9AF2: 0x7AD2, //CJK UNIFIED IDEOGRAPH - 0x9AF3: 0x5955, //CJK UNIFIED IDEOGRAPH - 0x9AF4: 0x5950, //CJK UNIFIED IDEOGRAPH - 0x9AF5: 0x594E, //CJK UNIFIED IDEOGRAPH - 0x9AF6: 0x595A, //CJK UNIFIED IDEOGRAPH - 0x9AF7: 0x5958, //CJK UNIFIED IDEOGRAPH - 0x9AF8: 0x5962, //CJK UNIFIED IDEOGRAPH - 0x9AF9: 0x5960, //CJK UNIFIED IDEOGRAPH - 0x9AFA: 0x5967, //CJK UNIFIED IDEOGRAPH - 0x9AFB: 0x596C, //CJK UNIFIED IDEOGRAPH - 0x9AFC: 0x5969, //CJK UNIFIED IDEOGRAPH - 0x9B40: 0x5978, //CJK UNIFIED IDEOGRAPH - 0x9B41: 0x5981, //CJK UNIFIED IDEOGRAPH - 0x9B42: 0x599D, //CJK UNIFIED IDEOGRAPH - 0x9B43: 0x4F5E, //CJK UNIFIED IDEOGRAPH - 0x9B44: 0x4FAB, //CJK UNIFIED IDEOGRAPH - 0x9B45: 0x59A3, //CJK UNIFIED IDEOGRAPH - 0x9B46: 0x59B2, //CJK UNIFIED IDEOGRAPH - 0x9B47: 0x59C6, //CJK UNIFIED IDEOGRAPH - 0x9B48: 0x59E8, //CJK UNIFIED IDEOGRAPH - 0x9B49: 0x59DC, //CJK UNIFIED IDEOGRAPH - 0x9B4A: 0x598D, //CJK UNIFIED IDEOGRAPH - 0x9B4B: 0x59D9, //CJK UNIFIED IDEOGRAPH - 0x9B4C: 0x59DA, //CJK UNIFIED IDEOGRAPH - 0x9B4D: 0x5A25, //CJK UNIFIED IDEOGRAPH - 0x9B4E: 0x5A1F, //CJK UNIFIED IDEOGRAPH - 0x9B4F: 0x5A11, //CJK UNIFIED IDEOGRAPH - 0x9B50: 0x5A1C, //CJK UNIFIED IDEOGRAPH - 0x9B51: 0x5A09, //CJK UNIFIED IDEOGRAPH - 0x9B52: 0x5A1A, //CJK UNIFIED IDEOGRAPH - 0x9B53: 0x5A40, //CJK UNIFIED IDEOGRAPH - 0x9B54: 0x5A6C, //CJK UNIFIED IDEOGRAPH - 0x9B55: 0x5A49, //CJK UNIFIED IDEOGRAPH - 0x9B56: 0x5A35, //CJK UNIFIED IDEOGRAPH - 0x9B57: 0x5A36, //CJK UNIFIED IDEOGRAPH - 0x9B58: 0x5A62, //CJK UNIFIED IDEOGRAPH - 0x9B59: 0x5A6A, //CJK UNIFIED IDEOGRAPH - 0x9B5A: 0x5A9A, //CJK UNIFIED IDEOGRAPH - 0x9B5B: 0x5ABC, //CJK UNIFIED IDEOGRAPH - 0x9B5C: 0x5ABE, //CJK UNIFIED IDEOGRAPH - 0x9B5D: 0x5ACB, //CJK UNIFIED IDEOGRAPH - 0x9B5E: 0x5AC2, //CJK UNIFIED IDEOGRAPH - 0x9B5F: 0x5ABD, //CJK UNIFIED IDEOGRAPH - 0x9B60: 0x5AE3, //CJK UNIFIED IDEOGRAPH - 0x9B61: 0x5AD7, //CJK UNIFIED IDEOGRAPH - 0x9B62: 0x5AE6, //CJK UNIFIED IDEOGRAPH - 0x9B63: 0x5AE9, //CJK UNIFIED IDEOGRAPH - 0x9B64: 0x5AD6, //CJK UNIFIED IDEOGRAPH - 0x9B65: 0x5AFA, //CJK UNIFIED IDEOGRAPH - 0x9B66: 0x5AFB, //CJK UNIFIED IDEOGRAPH - 0x9B67: 0x5B0C, //CJK UNIFIED IDEOGRAPH - 0x9B68: 0x5B0B, //CJK UNIFIED IDEOGRAPH - 0x9B69: 0x5B16, //CJK UNIFIED IDEOGRAPH - 0x9B6A: 0x5B32, //CJK UNIFIED IDEOGRAPH - 0x9B6B: 0x5AD0, //CJK UNIFIED IDEOGRAPH - 0x9B6C: 0x5B2A, //CJK UNIFIED IDEOGRAPH - 0x9B6D: 0x5B36, //CJK UNIFIED IDEOGRAPH - 0x9B6E: 0x5B3E, //CJK UNIFIED IDEOGRAPH - 0x9B6F: 0x5B43, //CJK UNIFIED IDEOGRAPH - 0x9B70: 0x5B45, //CJK UNIFIED IDEOGRAPH - 0x9B71: 0x5B40, //CJK UNIFIED IDEOGRAPH - 0x9B72: 0x5B51, //CJK UNIFIED IDEOGRAPH - 0x9B73: 0x5B55, //CJK UNIFIED IDEOGRAPH - 0x9B74: 0x5B5A, //CJK UNIFIED IDEOGRAPH - 0x9B75: 0x5B5B, //CJK UNIFIED IDEOGRAPH - 0x9B76: 0x5B65, //CJK UNIFIED IDEOGRAPH - 0x9B77: 0x5B69, //CJK UNIFIED IDEOGRAPH - 0x9B78: 0x5B70, //CJK UNIFIED IDEOGRAPH - 0x9B79: 0x5B73, //CJK UNIFIED IDEOGRAPH - 0x9B7A: 0x5B75, //CJK UNIFIED IDEOGRAPH - 0x9B7B: 0x5B78, //CJK UNIFIED IDEOGRAPH - 0x9B7C: 0x6588, //CJK UNIFIED IDEOGRAPH - 0x9B7D: 0x5B7A, //CJK UNIFIED IDEOGRAPH - 0x9B7E: 0x5B80, //CJK UNIFIED IDEOGRAPH - 0x9B80: 0x5B83, //CJK UNIFIED IDEOGRAPH - 0x9B81: 0x5BA6, //CJK UNIFIED IDEOGRAPH - 0x9B82: 0x5BB8, //CJK UNIFIED IDEOGRAPH - 0x9B83: 0x5BC3, //CJK UNIFIED IDEOGRAPH - 0x9B84: 0x5BC7, //CJK UNIFIED IDEOGRAPH - 0x9B85: 0x5BC9, //CJK UNIFIED IDEOGRAPH - 0x9B86: 0x5BD4, //CJK UNIFIED IDEOGRAPH - 0x9B87: 0x5BD0, //CJK UNIFIED IDEOGRAPH - 0x9B88: 0x5BE4, //CJK UNIFIED IDEOGRAPH - 0x9B89: 0x5BE6, //CJK UNIFIED IDEOGRAPH - 0x9B8A: 0x5BE2, //CJK UNIFIED IDEOGRAPH - 0x9B8B: 0x5BDE, //CJK UNIFIED IDEOGRAPH - 0x9B8C: 0x5BE5, //CJK UNIFIED IDEOGRAPH - 0x9B8D: 0x5BEB, //CJK UNIFIED IDEOGRAPH - 0x9B8E: 0x5BF0, //CJK UNIFIED IDEOGRAPH - 0x9B8F: 0x5BF6, //CJK UNIFIED IDEOGRAPH - 0x9B90: 0x5BF3, //CJK UNIFIED IDEOGRAPH - 0x9B91: 0x5C05, //CJK UNIFIED IDEOGRAPH - 0x9B92: 0x5C07, //CJK UNIFIED IDEOGRAPH - 0x9B93: 0x5C08, //CJK UNIFIED IDEOGRAPH - 0x9B94: 0x5C0D, //CJK UNIFIED IDEOGRAPH - 0x9B95: 0x5C13, //CJK UNIFIED IDEOGRAPH - 0x9B96: 0x5C20, //CJK UNIFIED IDEOGRAPH - 0x9B97: 0x5C22, //CJK UNIFIED IDEOGRAPH - 0x9B98: 0x5C28, //CJK UNIFIED IDEOGRAPH - 0x9B99: 0x5C38, //CJK UNIFIED IDEOGRAPH - 0x9B9A: 0x5C39, //CJK UNIFIED IDEOGRAPH - 0x9B9B: 0x5C41, //CJK UNIFIED IDEOGRAPH - 0x9B9C: 0x5C46, //CJK UNIFIED IDEOGRAPH - 0x9B9D: 0x5C4E, //CJK UNIFIED IDEOGRAPH - 0x9B9E: 0x5C53, //CJK UNIFIED IDEOGRAPH - 0x9B9F: 0x5C50, //CJK UNIFIED IDEOGRAPH - 0x9BA0: 0x5C4F, //CJK UNIFIED IDEOGRAPH - 0x9BA1: 0x5B71, //CJK UNIFIED IDEOGRAPH - 0x9BA2: 0x5C6C, //CJK UNIFIED IDEOGRAPH - 0x9BA3: 0x5C6E, //CJK UNIFIED IDEOGRAPH - 0x9BA4: 0x4E62, //CJK UNIFIED IDEOGRAPH - 0x9BA5: 0x5C76, //CJK UNIFIED IDEOGRAPH - 0x9BA6: 0x5C79, //CJK UNIFIED IDEOGRAPH - 0x9BA7: 0x5C8C, //CJK UNIFIED IDEOGRAPH - 0x9BA8: 0x5C91, //CJK UNIFIED IDEOGRAPH - 0x9BA9: 0x5C94, //CJK UNIFIED IDEOGRAPH - 0x9BAA: 0x599B, //CJK UNIFIED IDEOGRAPH - 0x9BAB: 0x5CAB, //CJK UNIFIED IDEOGRAPH - 0x9BAC: 0x5CBB, //CJK UNIFIED IDEOGRAPH - 0x9BAD: 0x5CB6, //CJK UNIFIED IDEOGRAPH - 0x9BAE: 0x5CBC, //CJK UNIFIED IDEOGRAPH - 0x9BAF: 0x5CB7, //CJK UNIFIED IDEOGRAPH - 0x9BB0: 0x5CC5, //CJK UNIFIED IDEOGRAPH - 0x9BB1: 0x5CBE, //CJK UNIFIED IDEOGRAPH - 0x9BB2: 0x5CC7, //CJK UNIFIED IDEOGRAPH - 0x9BB3: 0x5CD9, //CJK UNIFIED IDEOGRAPH - 0x9BB4: 0x5CE9, //CJK UNIFIED IDEOGRAPH - 0x9BB5: 0x5CFD, //CJK UNIFIED IDEOGRAPH - 0x9BB6: 0x5CFA, //CJK UNIFIED IDEOGRAPH - 0x9BB7: 0x5CED, //CJK UNIFIED IDEOGRAPH - 0x9BB8: 0x5D8C, //CJK UNIFIED IDEOGRAPH - 0x9BB9: 0x5CEA, //CJK UNIFIED IDEOGRAPH - 0x9BBA: 0x5D0B, //CJK UNIFIED IDEOGRAPH - 0x9BBB: 0x5D15, //CJK UNIFIED IDEOGRAPH - 0x9BBC: 0x5D17, //CJK UNIFIED IDEOGRAPH - 0x9BBD: 0x5D5C, //CJK UNIFIED IDEOGRAPH - 0x9BBE: 0x5D1F, //CJK UNIFIED IDEOGRAPH - 0x9BBF: 0x5D1B, //CJK UNIFIED IDEOGRAPH - 0x9BC0: 0x5D11, //CJK UNIFIED IDEOGRAPH - 0x9BC1: 0x5D14, //CJK UNIFIED IDEOGRAPH - 0x9BC2: 0x5D22, //CJK UNIFIED IDEOGRAPH - 0x9BC3: 0x5D1A, //CJK UNIFIED IDEOGRAPH - 0x9BC4: 0x5D19, //CJK UNIFIED IDEOGRAPH - 0x9BC5: 0x5D18, //CJK UNIFIED IDEOGRAPH - 0x9BC6: 0x5D4C, //CJK UNIFIED IDEOGRAPH - 0x9BC7: 0x5D52, //CJK UNIFIED IDEOGRAPH - 0x9BC8: 0x5D4E, //CJK UNIFIED IDEOGRAPH - 0x9BC9: 0x5D4B, //CJK UNIFIED IDEOGRAPH - 0x9BCA: 0x5D6C, //CJK UNIFIED IDEOGRAPH - 0x9BCB: 0x5D73, //CJK UNIFIED IDEOGRAPH - 0x9BCC: 0x5D76, //CJK UNIFIED IDEOGRAPH - 0x9BCD: 0x5D87, //CJK UNIFIED IDEOGRAPH - 0x9BCE: 0x5D84, //CJK UNIFIED IDEOGRAPH - 0x9BCF: 0x5D82, //CJK UNIFIED IDEOGRAPH - 0x9BD0: 0x5DA2, //CJK UNIFIED IDEOGRAPH - 0x9BD1: 0x5D9D, //CJK UNIFIED IDEOGRAPH - 0x9BD2: 0x5DAC, //CJK UNIFIED IDEOGRAPH - 0x9BD3: 0x5DAE, //CJK UNIFIED IDEOGRAPH - 0x9BD4: 0x5DBD, //CJK UNIFIED IDEOGRAPH - 0x9BD5: 0x5D90, //CJK UNIFIED IDEOGRAPH - 0x9BD6: 0x5DB7, //CJK UNIFIED IDEOGRAPH - 0x9BD7: 0x5DBC, //CJK UNIFIED IDEOGRAPH - 0x9BD8: 0x5DC9, //CJK UNIFIED IDEOGRAPH - 0x9BD9: 0x5DCD, //CJK UNIFIED IDEOGRAPH - 0x9BDA: 0x5DD3, //CJK UNIFIED IDEOGRAPH - 0x9BDB: 0x5DD2, //CJK UNIFIED IDEOGRAPH - 0x9BDC: 0x5DD6, //CJK UNIFIED IDEOGRAPH - 0x9BDD: 0x5DDB, //CJK UNIFIED IDEOGRAPH - 0x9BDE: 0x5DEB, //CJK UNIFIED IDEOGRAPH - 0x9BDF: 0x5DF2, //CJK UNIFIED IDEOGRAPH - 0x9BE0: 0x5DF5, //CJK UNIFIED IDEOGRAPH - 0x9BE1: 0x5E0B, //CJK UNIFIED IDEOGRAPH - 0x9BE2: 0x5E1A, //CJK UNIFIED IDEOGRAPH - 0x9BE3: 0x5E19, //CJK UNIFIED IDEOGRAPH - 0x9BE4: 0x5E11, //CJK UNIFIED IDEOGRAPH - 0x9BE5: 0x5E1B, //CJK UNIFIED IDEOGRAPH - 0x9BE6: 0x5E36, //CJK UNIFIED IDEOGRAPH - 0x9BE7: 0x5E37, //CJK UNIFIED IDEOGRAPH - 0x9BE8: 0x5E44, //CJK UNIFIED IDEOGRAPH - 0x9BE9: 0x5E43, //CJK UNIFIED IDEOGRAPH - 0x9BEA: 0x5E40, //CJK UNIFIED IDEOGRAPH - 0x9BEB: 0x5E4E, //CJK UNIFIED IDEOGRAPH - 0x9BEC: 0x5E57, //CJK UNIFIED IDEOGRAPH - 0x9BED: 0x5E54, //CJK UNIFIED IDEOGRAPH - 0x9BEE: 0x5E5F, //CJK UNIFIED IDEOGRAPH - 0x9BEF: 0x5E62, //CJK UNIFIED IDEOGRAPH - 0x9BF0: 0x5E64, //CJK UNIFIED IDEOGRAPH - 0x9BF1: 0x5E47, //CJK UNIFIED IDEOGRAPH - 0x9BF2: 0x5E75, //CJK UNIFIED IDEOGRAPH - 0x9BF3: 0x5E76, //CJK UNIFIED IDEOGRAPH - 0x9BF4: 0x5E7A, //CJK UNIFIED IDEOGRAPH - 0x9BF5: 0x9EBC, //CJK UNIFIED IDEOGRAPH - 0x9BF6: 0x5E7F, //CJK UNIFIED IDEOGRAPH - 0x9BF7: 0x5EA0, //CJK UNIFIED IDEOGRAPH - 0x9BF8: 0x5EC1, //CJK UNIFIED IDEOGRAPH - 0x9BF9: 0x5EC2, //CJK UNIFIED IDEOGRAPH - 0x9BFA: 0x5EC8, //CJK UNIFIED IDEOGRAPH - 0x9BFB: 0x5ED0, //CJK UNIFIED IDEOGRAPH - 0x9BFC: 0x5ECF, //CJK UNIFIED IDEOGRAPH - 0x9C40: 0x5ED6, //CJK UNIFIED IDEOGRAPH - 0x9C41: 0x5EE3, //CJK UNIFIED IDEOGRAPH - 0x9C42: 0x5EDD, //CJK UNIFIED IDEOGRAPH - 0x9C43: 0x5EDA, //CJK UNIFIED IDEOGRAPH - 0x9C44: 0x5EDB, //CJK UNIFIED IDEOGRAPH - 0x9C45: 0x5EE2, //CJK UNIFIED IDEOGRAPH - 0x9C46: 0x5EE1, //CJK UNIFIED IDEOGRAPH - 0x9C47: 0x5EE8, //CJK UNIFIED IDEOGRAPH - 0x9C48: 0x5EE9, //CJK UNIFIED IDEOGRAPH - 0x9C49: 0x5EEC, //CJK UNIFIED IDEOGRAPH - 0x9C4A: 0x5EF1, //CJK UNIFIED IDEOGRAPH - 0x9C4B: 0x5EF3, //CJK UNIFIED IDEOGRAPH - 0x9C4C: 0x5EF0, //CJK UNIFIED IDEOGRAPH - 0x9C4D: 0x5EF4, //CJK UNIFIED IDEOGRAPH - 0x9C4E: 0x5EF8, //CJK UNIFIED IDEOGRAPH - 0x9C4F: 0x5EFE, //CJK UNIFIED IDEOGRAPH - 0x9C50: 0x5F03, //CJK UNIFIED IDEOGRAPH - 0x9C51: 0x5F09, //CJK UNIFIED IDEOGRAPH - 0x9C52: 0x5F5D, //CJK UNIFIED IDEOGRAPH - 0x9C53: 0x5F5C, //CJK UNIFIED IDEOGRAPH - 0x9C54: 0x5F0B, //CJK UNIFIED IDEOGRAPH - 0x9C55: 0x5F11, //CJK UNIFIED IDEOGRAPH - 0x9C56: 0x5F16, //CJK UNIFIED IDEOGRAPH - 0x9C57: 0x5F29, //CJK UNIFIED IDEOGRAPH - 0x9C58: 0x5F2D, //CJK UNIFIED IDEOGRAPH - 0x9C59: 0x5F38, //CJK UNIFIED IDEOGRAPH - 0x9C5A: 0x5F41, //CJK UNIFIED IDEOGRAPH - 0x9C5B: 0x5F48, //CJK UNIFIED IDEOGRAPH - 0x9C5C: 0x5F4C, //CJK UNIFIED IDEOGRAPH - 0x9C5D: 0x5F4E, //CJK UNIFIED IDEOGRAPH - 0x9C5E: 0x5F2F, //CJK UNIFIED IDEOGRAPH - 0x9C5F: 0x5F51, //CJK UNIFIED IDEOGRAPH - 0x9C60: 0x5F56, //CJK UNIFIED IDEOGRAPH - 0x9C61: 0x5F57, //CJK UNIFIED IDEOGRAPH - 0x9C62: 0x5F59, //CJK UNIFIED IDEOGRAPH - 0x9C63: 0x5F61, //CJK UNIFIED IDEOGRAPH - 0x9C64: 0x5F6D, //CJK UNIFIED IDEOGRAPH - 0x9C65: 0x5F73, //CJK UNIFIED IDEOGRAPH - 0x9C66: 0x5F77, //CJK UNIFIED IDEOGRAPH - 0x9C67: 0x5F83, //CJK UNIFIED IDEOGRAPH - 0x9C68: 0x5F82, //CJK UNIFIED IDEOGRAPH - 0x9C69: 0x5F7F, //CJK UNIFIED IDEOGRAPH - 0x9C6A: 0x5F8A, //CJK UNIFIED IDEOGRAPH - 0x9C6B: 0x5F88, //CJK UNIFIED IDEOGRAPH - 0x9C6C: 0x5F91, //CJK UNIFIED IDEOGRAPH - 0x9C6D: 0x5F87, //CJK UNIFIED IDEOGRAPH - 0x9C6E: 0x5F9E, //CJK UNIFIED IDEOGRAPH - 0x9C6F: 0x5F99, //CJK UNIFIED IDEOGRAPH - 0x9C70: 0x5F98, //CJK UNIFIED IDEOGRAPH - 0x9C71: 0x5FA0, //CJK UNIFIED IDEOGRAPH - 0x9C72: 0x5FA8, //CJK UNIFIED IDEOGRAPH - 0x9C73: 0x5FAD, //CJK UNIFIED IDEOGRAPH - 0x9C74: 0x5FBC, //CJK UNIFIED IDEOGRAPH - 0x9C75: 0x5FD6, //CJK UNIFIED IDEOGRAPH - 0x9C76: 0x5FFB, //CJK UNIFIED IDEOGRAPH - 0x9C77: 0x5FE4, //CJK UNIFIED IDEOGRAPH - 0x9C78: 0x5FF8, //CJK UNIFIED IDEOGRAPH - 0x9C79: 0x5FF1, //CJK UNIFIED IDEOGRAPH - 0x9C7A: 0x5FDD, //CJK UNIFIED IDEOGRAPH - 0x9C7B: 0x60B3, //CJK UNIFIED IDEOGRAPH - 0x9C7C: 0x5FFF, //CJK UNIFIED IDEOGRAPH - 0x9C7D: 0x6021, //CJK UNIFIED IDEOGRAPH - 0x9C7E: 0x6060, //CJK UNIFIED IDEOGRAPH - 0x9C80: 0x6019, //CJK UNIFIED IDEOGRAPH - 0x9C81: 0x6010, //CJK UNIFIED IDEOGRAPH - 0x9C82: 0x6029, //CJK UNIFIED IDEOGRAPH - 0x9C83: 0x600E, //CJK UNIFIED IDEOGRAPH - 0x9C84: 0x6031, //CJK UNIFIED IDEOGRAPH - 0x9C85: 0x601B, //CJK UNIFIED IDEOGRAPH - 0x9C86: 0x6015, //CJK UNIFIED IDEOGRAPH - 0x9C87: 0x602B, //CJK UNIFIED IDEOGRAPH - 0x9C88: 0x6026, //CJK UNIFIED IDEOGRAPH - 0x9C89: 0x600F, //CJK UNIFIED IDEOGRAPH - 0x9C8A: 0x603A, //CJK UNIFIED IDEOGRAPH - 0x9C8B: 0x605A, //CJK UNIFIED IDEOGRAPH - 0x9C8C: 0x6041, //CJK UNIFIED IDEOGRAPH - 0x9C8D: 0x606A, //CJK UNIFIED IDEOGRAPH - 0x9C8E: 0x6077, //CJK UNIFIED IDEOGRAPH - 0x9C8F: 0x605F, //CJK UNIFIED IDEOGRAPH - 0x9C90: 0x604A, //CJK UNIFIED IDEOGRAPH - 0x9C91: 0x6046, //CJK UNIFIED IDEOGRAPH - 0x9C92: 0x604D, //CJK UNIFIED IDEOGRAPH - 0x9C93: 0x6063, //CJK UNIFIED IDEOGRAPH - 0x9C94: 0x6043, //CJK UNIFIED IDEOGRAPH - 0x9C95: 0x6064, //CJK UNIFIED IDEOGRAPH - 0x9C96: 0x6042, //CJK UNIFIED IDEOGRAPH - 0x9C97: 0x606C, //CJK UNIFIED IDEOGRAPH - 0x9C98: 0x606B, //CJK UNIFIED IDEOGRAPH - 0x9C99: 0x6059, //CJK UNIFIED IDEOGRAPH - 0x9C9A: 0x6081, //CJK UNIFIED IDEOGRAPH - 0x9C9B: 0x608D, //CJK UNIFIED IDEOGRAPH - 0x9C9C: 0x60E7, //CJK UNIFIED IDEOGRAPH - 0x9C9D: 0x6083, //CJK UNIFIED IDEOGRAPH - 0x9C9E: 0x609A, //CJK UNIFIED IDEOGRAPH - 0x9C9F: 0x6084, //CJK UNIFIED IDEOGRAPH - 0x9CA0: 0x609B, //CJK UNIFIED IDEOGRAPH - 0x9CA1: 0x6096, //CJK UNIFIED IDEOGRAPH - 0x9CA2: 0x6097, //CJK UNIFIED IDEOGRAPH - 0x9CA3: 0x6092, //CJK UNIFIED IDEOGRAPH - 0x9CA4: 0x60A7, //CJK UNIFIED IDEOGRAPH - 0x9CA5: 0x608B, //CJK UNIFIED IDEOGRAPH - 0x9CA6: 0x60E1, //CJK UNIFIED IDEOGRAPH - 0x9CA7: 0x60B8, //CJK UNIFIED IDEOGRAPH - 0x9CA8: 0x60E0, //CJK UNIFIED IDEOGRAPH - 0x9CA9: 0x60D3, //CJK UNIFIED IDEOGRAPH - 0x9CAA: 0x60B4, //CJK UNIFIED IDEOGRAPH - 0x9CAB: 0x5FF0, //CJK UNIFIED IDEOGRAPH - 0x9CAC: 0x60BD, //CJK UNIFIED IDEOGRAPH - 0x9CAD: 0x60C6, //CJK UNIFIED IDEOGRAPH - 0x9CAE: 0x60B5, //CJK UNIFIED IDEOGRAPH - 0x9CAF: 0x60D8, //CJK UNIFIED IDEOGRAPH - 0x9CB0: 0x614D, //CJK UNIFIED IDEOGRAPH - 0x9CB1: 0x6115, //CJK UNIFIED IDEOGRAPH - 0x9CB2: 0x6106, //CJK UNIFIED IDEOGRAPH - 0x9CB3: 0x60F6, //CJK UNIFIED IDEOGRAPH - 0x9CB4: 0x60F7, //CJK UNIFIED IDEOGRAPH - 0x9CB5: 0x6100, //CJK UNIFIED IDEOGRAPH - 0x9CB6: 0x60F4, //CJK UNIFIED IDEOGRAPH - 0x9CB7: 0x60FA, //CJK UNIFIED IDEOGRAPH - 0x9CB8: 0x6103, //CJK UNIFIED IDEOGRAPH - 0x9CB9: 0x6121, //CJK UNIFIED IDEOGRAPH - 0x9CBA: 0x60FB, //CJK UNIFIED IDEOGRAPH - 0x9CBB: 0x60F1, //CJK UNIFIED IDEOGRAPH - 0x9CBC: 0x610D, //CJK UNIFIED IDEOGRAPH - 0x9CBD: 0x610E, //CJK UNIFIED IDEOGRAPH - 0x9CBE: 0x6147, //CJK UNIFIED IDEOGRAPH - 0x9CBF: 0x613E, //CJK UNIFIED IDEOGRAPH - 0x9CC0: 0x6128, //CJK UNIFIED IDEOGRAPH - 0x9CC1: 0x6127, //CJK UNIFIED IDEOGRAPH - 0x9CC2: 0x614A, //CJK UNIFIED IDEOGRAPH - 0x9CC3: 0x613F, //CJK UNIFIED IDEOGRAPH - 0x9CC4: 0x613C, //CJK UNIFIED IDEOGRAPH - 0x9CC5: 0x612C, //CJK UNIFIED IDEOGRAPH - 0x9CC6: 0x6134, //CJK UNIFIED IDEOGRAPH - 0x9CC7: 0x613D, //CJK UNIFIED IDEOGRAPH - 0x9CC8: 0x6142, //CJK UNIFIED IDEOGRAPH - 0x9CC9: 0x6144, //CJK UNIFIED IDEOGRAPH - 0x9CCA: 0x6173, //CJK UNIFIED IDEOGRAPH - 0x9CCB: 0x6177, //CJK UNIFIED IDEOGRAPH - 0x9CCC: 0x6158, //CJK UNIFIED IDEOGRAPH - 0x9CCD: 0x6159, //CJK UNIFIED IDEOGRAPH - 0x9CCE: 0x615A, //CJK UNIFIED IDEOGRAPH - 0x9CCF: 0x616B, //CJK UNIFIED IDEOGRAPH - 0x9CD0: 0x6174, //CJK UNIFIED IDEOGRAPH - 0x9CD1: 0x616F, //CJK UNIFIED IDEOGRAPH - 0x9CD2: 0x6165, //CJK UNIFIED IDEOGRAPH - 0x9CD3: 0x6171, //CJK UNIFIED IDEOGRAPH - 0x9CD4: 0x615F, //CJK UNIFIED IDEOGRAPH - 0x9CD5: 0x615D, //CJK UNIFIED IDEOGRAPH - 0x9CD6: 0x6153, //CJK UNIFIED IDEOGRAPH - 0x9CD7: 0x6175, //CJK UNIFIED IDEOGRAPH - 0x9CD8: 0x6199, //CJK UNIFIED IDEOGRAPH - 0x9CD9: 0x6196, //CJK UNIFIED IDEOGRAPH - 0x9CDA: 0x6187, //CJK UNIFIED IDEOGRAPH - 0x9CDB: 0x61AC, //CJK UNIFIED IDEOGRAPH - 0x9CDC: 0x6194, //CJK UNIFIED IDEOGRAPH - 0x9CDD: 0x619A, //CJK UNIFIED IDEOGRAPH - 0x9CDE: 0x618A, //CJK UNIFIED IDEOGRAPH - 0x9CDF: 0x6191, //CJK UNIFIED IDEOGRAPH - 0x9CE0: 0x61AB, //CJK UNIFIED IDEOGRAPH - 0x9CE1: 0x61AE, //CJK UNIFIED IDEOGRAPH - 0x9CE2: 0x61CC, //CJK UNIFIED IDEOGRAPH - 0x9CE3: 0x61CA, //CJK UNIFIED IDEOGRAPH - 0x9CE4: 0x61C9, //CJK UNIFIED IDEOGRAPH - 0x9CE5: 0x61F7, //CJK UNIFIED IDEOGRAPH - 0x9CE6: 0x61C8, //CJK UNIFIED IDEOGRAPH - 0x9CE7: 0x61C3, //CJK UNIFIED IDEOGRAPH - 0x9CE8: 0x61C6, //CJK UNIFIED IDEOGRAPH - 0x9CE9: 0x61BA, //CJK UNIFIED IDEOGRAPH - 0x9CEA: 0x61CB, //CJK UNIFIED IDEOGRAPH - 0x9CEB: 0x7F79, //CJK UNIFIED IDEOGRAPH - 0x9CEC: 0x61CD, //CJK UNIFIED IDEOGRAPH - 0x9CED: 0x61E6, //CJK UNIFIED IDEOGRAPH - 0x9CEE: 0x61E3, //CJK UNIFIED IDEOGRAPH - 0x9CEF: 0x61F6, //CJK UNIFIED IDEOGRAPH - 0x9CF0: 0x61FA, //CJK UNIFIED IDEOGRAPH - 0x9CF1: 0x61F4, //CJK UNIFIED IDEOGRAPH - 0x9CF2: 0x61FF, //CJK UNIFIED IDEOGRAPH - 0x9CF3: 0x61FD, //CJK UNIFIED IDEOGRAPH - 0x9CF4: 0x61FC, //CJK UNIFIED IDEOGRAPH - 0x9CF5: 0x61FE, //CJK UNIFIED IDEOGRAPH - 0x9CF6: 0x6200, //CJK UNIFIED IDEOGRAPH - 0x9CF7: 0x6208, //CJK UNIFIED IDEOGRAPH - 0x9CF8: 0x6209, //CJK UNIFIED IDEOGRAPH - 0x9CF9: 0x620D, //CJK UNIFIED IDEOGRAPH - 0x9CFA: 0x620C, //CJK UNIFIED IDEOGRAPH - 0x9CFB: 0x6214, //CJK UNIFIED IDEOGRAPH - 0x9CFC: 0x621B, //CJK UNIFIED IDEOGRAPH - 0x9D40: 0x621E, //CJK UNIFIED IDEOGRAPH - 0x9D41: 0x6221, //CJK UNIFIED IDEOGRAPH - 0x9D42: 0x622A, //CJK UNIFIED IDEOGRAPH - 0x9D43: 0x622E, //CJK UNIFIED IDEOGRAPH - 0x9D44: 0x6230, //CJK UNIFIED IDEOGRAPH - 0x9D45: 0x6232, //CJK UNIFIED IDEOGRAPH - 0x9D46: 0x6233, //CJK UNIFIED IDEOGRAPH - 0x9D47: 0x6241, //CJK UNIFIED IDEOGRAPH - 0x9D48: 0x624E, //CJK UNIFIED IDEOGRAPH - 0x9D49: 0x625E, //CJK UNIFIED IDEOGRAPH - 0x9D4A: 0x6263, //CJK UNIFIED IDEOGRAPH - 0x9D4B: 0x625B, //CJK UNIFIED IDEOGRAPH - 0x9D4C: 0x6260, //CJK UNIFIED IDEOGRAPH - 0x9D4D: 0x6268, //CJK UNIFIED IDEOGRAPH - 0x9D4E: 0x627C, //CJK UNIFIED IDEOGRAPH - 0x9D4F: 0x6282, //CJK UNIFIED IDEOGRAPH - 0x9D50: 0x6289, //CJK UNIFIED IDEOGRAPH - 0x9D51: 0x627E, //CJK UNIFIED IDEOGRAPH - 0x9D52: 0x6292, //CJK UNIFIED IDEOGRAPH - 0x9D53: 0x6293, //CJK UNIFIED IDEOGRAPH - 0x9D54: 0x6296, //CJK UNIFIED IDEOGRAPH - 0x9D55: 0x62D4, //CJK UNIFIED IDEOGRAPH - 0x9D56: 0x6283, //CJK UNIFIED IDEOGRAPH - 0x9D57: 0x6294, //CJK UNIFIED IDEOGRAPH - 0x9D58: 0x62D7, //CJK UNIFIED IDEOGRAPH - 0x9D59: 0x62D1, //CJK UNIFIED IDEOGRAPH - 0x9D5A: 0x62BB, //CJK UNIFIED IDEOGRAPH - 0x9D5B: 0x62CF, //CJK UNIFIED IDEOGRAPH - 0x9D5C: 0x62FF, //CJK UNIFIED IDEOGRAPH - 0x9D5D: 0x62C6, //CJK UNIFIED IDEOGRAPH - 0x9D5E: 0x64D4, //CJK UNIFIED IDEOGRAPH - 0x9D5F: 0x62C8, //CJK UNIFIED IDEOGRAPH - 0x9D60: 0x62DC, //CJK UNIFIED IDEOGRAPH - 0x9D61: 0x62CC, //CJK UNIFIED IDEOGRAPH - 0x9D62: 0x62CA, //CJK UNIFIED IDEOGRAPH - 0x9D63: 0x62C2, //CJK UNIFIED IDEOGRAPH - 0x9D64: 0x62C7, //CJK UNIFIED IDEOGRAPH - 0x9D65: 0x629B, //CJK UNIFIED IDEOGRAPH - 0x9D66: 0x62C9, //CJK UNIFIED IDEOGRAPH - 0x9D67: 0x630C, //CJK UNIFIED IDEOGRAPH - 0x9D68: 0x62EE, //CJK UNIFIED IDEOGRAPH - 0x9D69: 0x62F1, //CJK UNIFIED IDEOGRAPH - 0x9D6A: 0x6327, //CJK UNIFIED IDEOGRAPH - 0x9D6B: 0x6302, //CJK UNIFIED IDEOGRAPH - 0x9D6C: 0x6308, //CJK UNIFIED IDEOGRAPH - 0x9D6D: 0x62EF, //CJK UNIFIED IDEOGRAPH - 0x9D6E: 0x62F5, //CJK UNIFIED IDEOGRAPH - 0x9D6F: 0x6350, //CJK UNIFIED IDEOGRAPH - 0x9D70: 0x633E, //CJK UNIFIED IDEOGRAPH - 0x9D71: 0x634D, //CJK UNIFIED IDEOGRAPH - 0x9D72: 0x641C, //CJK UNIFIED IDEOGRAPH - 0x9D73: 0x634F, //CJK UNIFIED IDEOGRAPH - 0x9D74: 0x6396, //CJK UNIFIED IDEOGRAPH - 0x9D75: 0x638E, //CJK UNIFIED IDEOGRAPH - 0x9D76: 0x6380, //CJK UNIFIED IDEOGRAPH - 0x9D77: 0x63AB, //CJK UNIFIED IDEOGRAPH - 0x9D78: 0x6376, //CJK UNIFIED IDEOGRAPH - 0x9D79: 0x63A3, //CJK UNIFIED IDEOGRAPH - 0x9D7A: 0x638F, //CJK UNIFIED IDEOGRAPH - 0x9D7B: 0x6389, //CJK UNIFIED IDEOGRAPH - 0x9D7C: 0x639F, //CJK UNIFIED IDEOGRAPH - 0x9D7D: 0x63B5, //CJK UNIFIED IDEOGRAPH - 0x9D7E: 0x636B, //CJK UNIFIED IDEOGRAPH - 0x9D80: 0x6369, //CJK UNIFIED IDEOGRAPH - 0x9D81: 0x63BE, //CJK UNIFIED IDEOGRAPH - 0x9D82: 0x63E9, //CJK UNIFIED IDEOGRAPH - 0x9D83: 0x63C0, //CJK UNIFIED IDEOGRAPH - 0x9D84: 0x63C6, //CJK UNIFIED IDEOGRAPH - 0x9D85: 0x63E3, //CJK UNIFIED IDEOGRAPH - 0x9D86: 0x63C9, //CJK UNIFIED IDEOGRAPH - 0x9D87: 0x63D2, //CJK UNIFIED IDEOGRAPH - 0x9D88: 0x63F6, //CJK UNIFIED IDEOGRAPH - 0x9D89: 0x63C4, //CJK UNIFIED IDEOGRAPH - 0x9D8A: 0x6416, //CJK UNIFIED IDEOGRAPH - 0x9D8B: 0x6434, //CJK UNIFIED IDEOGRAPH - 0x9D8C: 0x6406, //CJK UNIFIED IDEOGRAPH - 0x9D8D: 0x6413, //CJK UNIFIED IDEOGRAPH - 0x9D8E: 0x6426, //CJK UNIFIED IDEOGRAPH - 0x9D8F: 0x6436, //CJK UNIFIED IDEOGRAPH - 0x9D90: 0x651D, //CJK UNIFIED IDEOGRAPH - 0x9D91: 0x6417, //CJK UNIFIED IDEOGRAPH - 0x9D92: 0x6428, //CJK UNIFIED IDEOGRAPH - 0x9D93: 0x640F, //CJK UNIFIED IDEOGRAPH - 0x9D94: 0x6467, //CJK UNIFIED IDEOGRAPH - 0x9D95: 0x646F, //CJK UNIFIED IDEOGRAPH - 0x9D96: 0x6476, //CJK UNIFIED IDEOGRAPH - 0x9D97: 0x644E, //CJK UNIFIED IDEOGRAPH - 0x9D98: 0x652A, //CJK UNIFIED IDEOGRAPH - 0x9D99: 0x6495, //CJK UNIFIED IDEOGRAPH - 0x9D9A: 0x6493, //CJK UNIFIED IDEOGRAPH - 0x9D9B: 0x64A5, //CJK UNIFIED IDEOGRAPH - 0x9D9C: 0x64A9, //CJK UNIFIED IDEOGRAPH - 0x9D9D: 0x6488, //CJK UNIFIED IDEOGRAPH - 0x9D9E: 0x64BC, //CJK UNIFIED IDEOGRAPH - 0x9D9F: 0x64DA, //CJK UNIFIED IDEOGRAPH - 0x9DA0: 0x64D2, //CJK UNIFIED IDEOGRAPH - 0x9DA1: 0x64C5, //CJK UNIFIED IDEOGRAPH - 0x9DA2: 0x64C7, //CJK UNIFIED IDEOGRAPH - 0x9DA3: 0x64BB, //CJK UNIFIED IDEOGRAPH - 0x9DA4: 0x64D8, //CJK UNIFIED IDEOGRAPH - 0x9DA5: 0x64C2, //CJK UNIFIED IDEOGRAPH - 0x9DA6: 0x64F1, //CJK UNIFIED IDEOGRAPH - 0x9DA7: 0x64E7, //CJK UNIFIED IDEOGRAPH - 0x9DA8: 0x8209, //CJK UNIFIED IDEOGRAPH - 0x9DA9: 0x64E0, //CJK UNIFIED IDEOGRAPH - 0x9DAA: 0x64E1, //CJK UNIFIED IDEOGRAPH - 0x9DAB: 0x62AC, //CJK UNIFIED IDEOGRAPH - 0x9DAC: 0x64E3, //CJK UNIFIED IDEOGRAPH - 0x9DAD: 0x64EF, //CJK UNIFIED IDEOGRAPH - 0x9DAE: 0x652C, //CJK UNIFIED IDEOGRAPH - 0x9DAF: 0x64F6, //CJK UNIFIED IDEOGRAPH - 0x9DB0: 0x64F4, //CJK UNIFIED IDEOGRAPH - 0x9DB1: 0x64F2, //CJK UNIFIED IDEOGRAPH - 0x9DB2: 0x64FA, //CJK UNIFIED IDEOGRAPH - 0x9DB3: 0x6500, //CJK UNIFIED IDEOGRAPH - 0x9DB4: 0x64FD, //CJK UNIFIED IDEOGRAPH - 0x9DB5: 0x6518, //CJK UNIFIED IDEOGRAPH - 0x9DB6: 0x651C, //CJK UNIFIED IDEOGRAPH - 0x9DB7: 0x6505, //CJK UNIFIED IDEOGRAPH - 0x9DB8: 0x6524, //CJK UNIFIED IDEOGRAPH - 0x9DB9: 0x6523, //CJK UNIFIED IDEOGRAPH - 0x9DBA: 0x652B, //CJK UNIFIED IDEOGRAPH - 0x9DBB: 0x6534, //CJK UNIFIED IDEOGRAPH - 0x9DBC: 0x6535, //CJK UNIFIED IDEOGRAPH - 0x9DBD: 0x6537, //CJK UNIFIED IDEOGRAPH - 0x9DBE: 0x6536, //CJK UNIFIED IDEOGRAPH - 0x9DBF: 0x6538, //CJK UNIFIED IDEOGRAPH - 0x9DC0: 0x754B, //CJK UNIFIED IDEOGRAPH - 0x9DC1: 0x6548, //CJK UNIFIED IDEOGRAPH - 0x9DC2: 0x6556, //CJK UNIFIED IDEOGRAPH - 0x9DC3: 0x6555, //CJK UNIFIED IDEOGRAPH - 0x9DC4: 0x654D, //CJK UNIFIED IDEOGRAPH - 0x9DC5: 0x6558, //CJK UNIFIED IDEOGRAPH - 0x9DC6: 0x655E, //CJK UNIFIED IDEOGRAPH - 0x9DC7: 0x655D, //CJK UNIFIED IDEOGRAPH - 0x9DC8: 0x6572, //CJK UNIFIED IDEOGRAPH - 0x9DC9: 0x6578, //CJK UNIFIED IDEOGRAPH - 0x9DCA: 0x6582, //CJK UNIFIED IDEOGRAPH - 0x9DCB: 0x6583, //CJK UNIFIED IDEOGRAPH - 0x9DCC: 0x8B8A, //CJK UNIFIED IDEOGRAPH - 0x9DCD: 0x659B, //CJK UNIFIED IDEOGRAPH - 0x9DCE: 0x659F, //CJK UNIFIED IDEOGRAPH - 0x9DCF: 0x65AB, //CJK UNIFIED IDEOGRAPH - 0x9DD0: 0x65B7, //CJK UNIFIED IDEOGRAPH - 0x9DD1: 0x65C3, //CJK UNIFIED IDEOGRAPH - 0x9DD2: 0x65C6, //CJK UNIFIED IDEOGRAPH - 0x9DD3: 0x65C1, //CJK UNIFIED IDEOGRAPH - 0x9DD4: 0x65C4, //CJK UNIFIED IDEOGRAPH - 0x9DD5: 0x65CC, //CJK UNIFIED IDEOGRAPH - 0x9DD6: 0x65D2, //CJK UNIFIED IDEOGRAPH - 0x9DD7: 0x65DB, //CJK UNIFIED IDEOGRAPH - 0x9DD8: 0x65D9, //CJK UNIFIED IDEOGRAPH - 0x9DD9: 0x65E0, //CJK UNIFIED IDEOGRAPH - 0x9DDA: 0x65E1, //CJK UNIFIED IDEOGRAPH - 0x9DDB: 0x65F1, //CJK UNIFIED IDEOGRAPH - 0x9DDC: 0x6772, //CJK UNIFIED IDEOGRAPH - 0x9DDD: 0x660A, //CJK UNIFIED IDEOGRAPH - 0x9DDE: 0x6603, //CJK UNIFIED IDEOGRAPH - 0x9DDF: 0x65FB, //CJK UNIFIED IDEOGRAPH - 0x9DE0: 0x6773, //CJK UNIFIED IDEOGRAPH - 0x9DE1: 0x6635, //CJK UNIFIED IDEOGRAPH - 0x9DE2: 0x6636, //CJK UNIFIED IDEOGRAPH - 0x9DE3: 0x6634, //CJK UNIFIED IDEOGRAPH - 0x9DE4: 0x661C, //CJK UNIFIED IDEOGRAPH - 0x9DE5: 0x664F, //CJK UNIFIED IDEOGRAPH - 0x9DE6: 0x6644, //CJK UNIFIED IDEOGRAPH - 0x9DE7: 0x6649, //CJK UNIFIED IDEOGRAPH - 0x9DE8: 0x6641, //CJK UNIFIED IDEOGRAPH - 0x9DE9: 0x665E, //CJK UNIFIED IDEOGRAPH - 0x9DEA: 0x665D, //CJK UNIFIED IDEOGRAPH - 0x9DEB: 0x6664, //CJK UNIFIED IDEOGRAPH - 0x9DEC: 0x6667, //CJK UNIFIED IDEOGRAPH - 0x9DED: 0x6668, //CJK UNIFIED IDEOGRAPH - 0x9DEE: 0x665F, //CJK UNIFIED IDEOGRAPH - 0x9DEF: 0x6662, //CJK UNIFIED IDEOGRAPH - 0x9DF0: 0x6670, //CJK UNIFIED IDEOGRAPH - 0x9DF1: 0x6683, //CJK UNIFIED IDEOGRAPH - 0x9DF2: 0x6688, //CJK UNIFIED IDEOGRAPH - 0x9DF3: 0x668E, //CJK UNIFIED IDEOGRAPH - 0x9DF4: 0x6689, //CJK UNIFIED IDEOGRAPH - 0x9DF5: 0x6684, //CJK UNIFIED IDEOGRAPH - 0x9DF6: 0x6698, //CJK UNIFIED IDEOGRAPH - 0x9DF7: 0x669D, //CJK UNIFIED IDEOGRAPH - 0x9DF8: 0x66C1, //CJK UNIFIED IDEOGRAPH - 0x9DF9: 0x66B9, //CJK UNIFIED IDEOGRAPH - 0x9DFA: 0x66C9, //CJK UNIFIED IDEOGRAPH - 0x9DFB: 0x66BE, //CJK UNIFIED IDEOGRAPH - 0x9DFC: 0x66BC, //CJK UNIFIED IDEOGRAPH - 0x9E40: 0x66C4, //CJK UNIFIED IDEOGRAPH - 0x9E41: 0x66B8, //CJK UNIFIED IDEOGRAPH - 0x9E42: 0x66D6, //CJK UNIFIED IDEOGRAPH - 0x9E43: 0x66DA, //CJK UNIFIED IDEOGRAPH - 0x9E44: 0x66E0, //CJK UNIFIED IDEOGRAPH - 0x9E45: 0x663F, //CJK UNIFIED IDEOGRAPH - 0x9E46: 0x66E6, //CJK UNIFIED IDEOGRAPH - 0x9E47: 0x66E9, //CJK UNIFIED IDEOGRAPH - 0x9E48: 0x66F0, //CJK UNIFIED IDEOGRAPH - 0x9E49: 0x66F5, //CJK UNIFIED IDEOGRAPH - 0x9E4A: 0x66F7, //CJK UNIFIED IDEOGRAPH - 0x9E4B: 0x670F, //CJK UNIFIED IDEOGRAPH - 0x9E4C: 0x6716, //CJK UNIFIED IDEOGRAPH - 0x9E4D: 0x671E, //CJK UNIFIED IDEOGRAPH - 0x9E4E: 0x6726, //CJK UNIFIED IDEOGRAPH - 0x9E4F: 0x6727, //CJK UNIFIED IDEOGRAPH - 0x9E50: 0x9738, //CJK UNIFIED IDEOGRAPH - 0x9E51: 0x672E, //CJK UNIFIED IDEOGRAPH - 0x9E52: 0x673F, //CJK UNIFIED IDEOGRAPH - 0x9E53: 0x6736, //CJK UNIFIED IDEOGRAPH - 0x9E54: 0x6741, //CJK UNIFIED IDEOGRAPH - 0x9E55: 0x6738, //CJK UNIFIED IDEOGRAPH - 0x9E56: 0x6737, //CJK UNIFIED IDEOGRAPH - 0x9E57: 0x6746, //CJK UNIFIED IDEOGRAPH - 0x9E58: 0x675E, //CJK UNIFIED IDEOGRAPH - 0x9E59: 0x6760, //CJK UNIFIED IDEOGRAPH - 0x9E5A: 0x6759, //CJK UNIFIED IDEOGRAPH - 0x9E5B: 0x6763, //CJK UNIFIED IDEOGRAPH - 0x9E5C: 0x6764, //CJK UNIFIED IDEOGRAPH - 0x9E5D: 0x6789, //CJK UNIFIED IDEOGRAPH - 0x9E5E: 0x6770, //CJK UNIFIED IDEOGRAPH - 0x9E5F: 0x67A9, //CJK UNIFIED IDEOGRAPH - 0x9E60: 0x677C, //CJK UNIFIED IDEOGRAPH - 0x9E61: 0x676A, //CJK UNIFIED IDEOGRAPH - 0x9E62: 0x678C, //CJK UNIFIED IDEOGRAPH - 0x9E63: 0x678B, //CJK UNIFIED IDEOGRAPH - 0x9E64: 0x67A6, //CJK UNIFIED IDEOGRAPH - 0x9E65: 0x67A1, //CJK UNIFIED IDEOGRAPH - 0x9E66: 0x6785, //CJK UNIFIED IDEOGRAPH - 0x9E67: 0x67B7, //CJK UNIFIED IDEOGRAPH - 0x9E68: 0x67EF, //CJK UNIFIED IDEOGRAPH - 0x9E69: 0x67B4, //CJK UNIFIED IDEOGRAPH - 0x9E6A: 0x67EC, //CJK UNIFIED IDEOGRAPH - 0x9E6B: 0x67B3, //CJK UNIFIED IDEOGRAPH - 0x9E6C: 0x67E9, //CJK UNIFIED IDEOGRAPH - 0x9E6D: 0x67B8, //CJK UNIFIED IDEOGRAPH - 0x9E6E: 0x67E4, //CJK UNIFIED IDEOGRAPH - 0x9E6F: 0x67DE, //CJK UNIFIED IDEOGRAPH - 0x9E70: 0x67DD, //CJK UNIFIED IDEOGRAPH - 0x9E71: 0x67E2, //CJK UNIFIED IDEOGRAPH - 0x9E72: 0x67EE, //CJK UNIFIED IDEOGRAPH - 0x9E73: 0x67B9, //CJK UNIFIED IDEOGRAPH - 0x9E74: 0x67CE, //CJK UNIFIED IDEOGRAPH - 0x9E75: 0x67C6, //CJK UNIFIED IDEOGRAPH - 0x9E76: 0x67E7, //CJK UNIFIED IDEOGRAPH - 0x9E77: 0x6A9C, //CJK UNIFIED IDEOGRAPH - 0x9E78: 0x681E, //CJK UNIFIED IDEOGRAPH - 0x9E79: 0x6846, //CJK UNIFIED IDEOGRAPH - 0x9E7A: 0x6829, //CJK UNIFIED IDEOGRAPH - 0x9E7B: 0x6840, //CJK UNIFIED IDEOGRAPH - 0x9E7C: 0x684D, //CJK UNIFIED IDEOGRAPH - 0x9E7D: 0x6832, //CJK UNIFIED IDEOGRAPH - 0x9E7E: 0x684E, //CJK UNIFIED IDEOGRAPH - 0x9E80: 0x68B3, //CJK UNIFIED IDEOGRAPH - 0x9E81: 0x682B, //CJK UNIFIED IDEOGRAPH - 0x9E82: 0x6859, //CJK UNIFIED IDEOGRAPH - 0x9E83: 0x6863, //CJK UNIFIED IDEOGRAPH - 0x9E84: 0x6877, //CJK UNIFIED IDEOGRAPH - 0x9E85: 0x687F, //CJK UNIFIED IDEOGRAPH - 0x9E86: 0x689F, //CJK UNIFIED IDEOGRAPH - 0x9E87: 0x688F, //CJK UNIFIED IDEOGRAPH - 0x9E88: 0x68AD, //CJK UNIFIED IDEOGRAPH - 0x9E89: 0x6894, //CJK UNIFIED IDEOGRAPH - 0x9E8A: 0x689D, //CJK UNIFIED IDEOGRAPH - 0x9E8B: 0x689B, //CJK UNIFIED IDEOGRAPH - 0x9E8C: 0x6883, //CJK UNIFIED IDEOGRAPH - 0x9E8D: 0x6AAE, //CJK UNIFIED IDEOGRAPH - 0x9E8E: 0x68B9, //CJK UNIFIED IDEOGRAPH - 0x9E8F: 0x6874, //CJK UNIFIED IDEOGRAPH - 0x9E90: 0x68B5, //CJK UNIFIED IDEOGRAPH - 0x9E91: 0x68A0, //CJK UNIFIED IDEOGRAPH - 0x9E92: 0x68BA, //CJK UNIFIED IDEOGRAPH - 0x9E93: 0x690F, //CJK UNIFIED IDEOGRAPH - 0x9E94: 0x688D, //CJK UNIFIED IDEOGRAPH - 0x9E95: 0x687E, //CJK UNIFIED IDEOGRAPH - 0x9E96: 0x6901, //CJK UNIFIED IDEOGRAPH - 0x9E97: 0x68CA, //CJK UNIFIED IDEOGRAPH - 0x9E98: 0x6908, //CJK UNIFIED IDEOGRAPH - 0x9E99: 0x68D8, //CJK UNIFIED IDEOGRAPH - 0x9E9A: 0x6922, //CJK UNIFIED IDEOGRAPH - 0x9E9B: 0x6926, //CJK UNIFIED IDEOGRAPH - 0x9E9C: 0x68E1, //CJK UNIFIED IDEOGRAPH - 0x9E9D: 0x690C, //CJK UNIFIED IDEOGRAPH - 0x9E9E: 0x68CD, //CJK UNIFIED IDEOGRAPH - 0x9E9F: 0x68D4, //CJK UNIFIED IDEOGRAPH - 0x9EA0: 0x68E7, //CJK UNIFIED IDEOGRAPH - 0x9EA1: 0x68D5, //CJK UNIFIED IDEOGRAPH - 0x9EA2: 0x6936, //CJK UNIFIED IDEOGRAPH - 0x9EA3: 0x6912, //CJK UNIFIED IDEOGRAPH - 0x9EA4: 0x6904, //CJK UNIFIED IDEOGRAPH - 0x9EA5: 0x68D7, //CJK UNIFIED IDEOGRAPH - 0x9EA6: 0x68E3, //CJK UNIFIED IDEOGRAPH - 0x9EA7: 0x6925, //CJK UNIFIED IDEOGRAPH - 0x9EA8: 0x68F9, //CJK UNIFIED IDEOGRAPH - 0x9EA9: 0x68E0, //CJK UNIFIED IDEOGRAPH - 0x9EAA: 0x68EF, //CJK UNIFIED IDEOGRAPH - 0x9EAB: 0x6928, //CJK UNIFIED IDEOGRAPH - 0x9EAC: 0x692A, //CJK UNIFIED IDEOGRAPH - 0x9EAD: 0x691A, //CJK UNIFIED IDEOGRAPH - 0x9EAE: 0x6923, //CJK UNIFIED IDEOGRAPH - 0x9EAF: 0x6921, //CJK UNIFIED IDEOGRAPH - 0x9EB0: 0x68C6, //CJK UNIFIED IDEOGRAPH - 0x9EB1: 0x6979, //CJK UNIFIED IDEOGRAPH - 0x9EB2: 0x6977, //CJK UNIFIED IDEOGRAPH - 0x9EB3: 0x695C, //CJK UNIFIED IDEOGRAPH - 0x9EB4: 0x6978, //CJK UNIFIED IDEOGRAPH - 0x9EB5: 0x696B, //CJK UNIFIED IDEOGRAPH - 0x9EB6: 0x6954, //CJK UNIFIED IDEOGRAPH - 0x9EB7: 0x697E, //CJK UNIFIED IDEOGRAPH - 0x9EB8: 0x696E, //CJK UNIFIED IDEOGRAPH - 0x9EB9: 0x6939, //CJK UNIFIED IDEOGRAPH - 0x9EBA: 0x6974, //CJK UNIFIED IDEOGRAPH - 0x9EBB: 0x693D, //CJK UNIFIED IDEOGRAPH - 0x9EBC: 0x6959, //CJK UNIFIED IDEOGRAPH - 0x9EBD: 0x6930, //CJK UNIFIED IDEOGRAPH - 0x9EBE: 0x6961, //CJK UNIFIED IDEOGRAPH - 0x9EBF: 0x695E, //CJK UNIFIED IDEOGRAPH - 0x9EC0: 0x695D, //CJK UNIFIED IDEOGRAPH - 0x9EC1: 0x6981, //CJK UNIFIED IDEOGRAPH - 0x9EC2: 0x696A, //CJK UNIFIED IDEOGRAPH - 0x9EC3: 0x69B2, //CJK UNIFIED IDEOGRAPH - 0x9EC4: 0x69AE, //CJK UNIFIED IDEOGRAPH - 0x9EC5: 0x69D0, //CJK UNIFIED IDEOGRAPH - 0x9EC6: 0x69BF, //CJK UNIFIED IDEOGRAPH - 0x9EC7: 0x69C1, //CJK UNIFIED IDEOGRAPH - 0x9EC8: 0x69D3, //CJK UNIFIED IDEOGRAPH - 0x9EC9: 0x69BE, //CJK UNIFIED IDEOGRAPH - 0x9ECA: 0x69CE, //CJK UNIFIED IDEOGRAPH - 0x9ECB: 0x5BE8, //CJK UNIFIED IDEOGRAPH - 0x9ECC: 0x69CA, //CJK UNIFIED IDEOGRAPH - 0x9ECD: 0x69DD, //CJK UNIFIED IDEOGRAPH - 0x9ECE: 0x69BB, //CJK UNIFIED IDEOGRAPH - 0x9ECF: 0x69C3, //CJK UNIFIED IDEOGRAPH - 0x9ED0: 0x69A7, //CJK UNIFIED IDEOGRAPH - 0x9ED1: 0x6A2E, //CJK UNIFIED IDEOGRAPH - 0x9ED2: 0x6991, //CJK UNIFIED IDEOGRAPH - 0x9ED3: 0x69A0, //CJK UNIFIED IDEOGRAPH - 0x9ED4: 0x699C, //CJK UNIFIED IDEOGRAPH - 0x9ED5: 0x6995, //CJK UNIFIED IDEOGRAPH - 0x9ED6: 0x69B4, //CJK UNIFIED IDEOGRAPH - 0x9ED7: 0x69DE, //CJK UNIFIED IDEOGRAPH - 0x9ED8: 0x69E8, //CJK UNIFIED IDEOGRAPH - 0x9ED9: 0x6A02, //CJK UNIFIED IDEOGRAPH - 0x9EDA: 0x6A1B, //CJK UNIFIED IDEOGRAPH - 0x9EDB: 0x69FF, //CJK UNIFIED IDEOGRAPH - 0x9EDC: 0x6B0A, //CJK UNIFIED IDEOGRAPH - 0x9EDD: 0x69F9, //CJK UNIFIED IDEOGRAPH - 0x9EDE: 0x69F2, //CJK UNIFIED IDEOGRAPH - 0x9EDF: 0x69E7, //CJK UNIFIED IDEOGRAPH - 0x9EE0: 0x6A05, //CJK UNIFIED IDEOGRAPH - 0x9EE1: 0x69B1, //CJK UNIFIED IDEOGRAPH - 0x9EE2: 0x6A1E, //CJK UNIFIED IDEOGRAPH - 0x9EE3: 0x69ED, //CJK UNIFIED IDEOGRAPH - 0x9EE4: 0x6A14, //CJK UNIFIED IDEOGRAPH - 0x9EE5: 0x69EB, //CJK UNIFIED IDEOGRAPH - 0x9EE6: 0x6A0A, //CJK UNIFIED IDEOGRAPH - 0x9EE7: 0x6A12, //CJK UNIFIED IDEOGRAPH - 0x9EE8: 0x6AC1, //CJK UNIFIED IDEOGRAPH - 0x9EE9: 0x6A23, //CJK UNIFIED IDEOGRAPH - 0x9EEA: 0x6A13, //CJK UNIFIED IDEOGRAPH - 0x9EEB: 0x6A44, //CJK UNIFIED IDEOGRAPH - 0x9EEC: 0x6A0C, //CJK UNIFIED IDEOGRAPH - 0x9EED: 0x6A72, //CJK UNIFIED IDEOGRAPH - 0x9EEE: 0x6A36, //CJK UNIFIED IDEOGRAPH - 0x9EEF: 0x6A78, //CJK UNIFIED IDEOGRAPH - 0x9EF0: 0x6A47, //CJK UNIFIED IDEOGRAPH - 0x9EF1: 0x6A62, //CJK UNIFIED IDEOGRAPH - 0x9EF2: 0x6A59, //CJK UNIFIED IDEOGRAPH - 0x9EF3: 0x6A66, //CJK UNIFIED IDEOGRAPH - 0x9EF4: 0x6A48, //CJK UNIFIED IDEOGRAPH - 0x9EF5: 0x6A38, //CJK UNIFIED IDEOGRAPH - 0x9EF6: 0x6A22, //CJK UNIFIED IDEOGRAPH - 0x9EF7: 0x6A90, //CJK UNIFIED IDEOGRAPH - 0x9EF8: 0x6A8D, //CJK UNIFIED IDEOGRAPH - 0x9EF9: 0x6AA0, //CJK UNIFIED IDEOGRAPH - 0x9EFA: 0x6A84, //CJK UNIFIED IDEOGRAPH - 0x9EFB: 0x6AA2, //CJK UNIFIED IDEOGRAPH - 0x9EFC: 0x6AA3, //CJK UNIFIED IDEOGRAPH - 0x9F40: 0x6A97, //CJK UNIFIED IDEOGRAPH - 0x9F41: 0x8617, //CJK UNIFIED IDEOGRAPH - 0x9F42: 0x6ABB, //CJK UNIFIED IDEOGRAPH - 0x9F43: 0x6AC3, //CJK UNIFIED IDEOGRAPH - 0x9F44: 0x6AC2, //CJK UNIFIED IDEOGRAPH - 0x9F45: 0x6AB8, //CJK UNIFIED IDEOGRAPH - 0x9F46: 0x6AB3, //CJK UNIFIED IDEOGRAPH - 0x9F47: 0x6AAC, //CJK UNIFIED IDEOGRAPH - 0x9F48: 0x6ADE, //CJK UNIFIED IDEOGRAPH - 0x9F49: 0x6AD1, //CJK UNIFIED IDEOGRAPH - 0x9F4A: 0x6ADF, //CJK UNIFIED IDEOGRAPH - 0x9F4B: 0x6AAA, //CJK UNIFIED IDEOGRAPH - 0x9F4C: 0x6ADA, //CJK UNIFIED IDEOGRAPH - 0x9F4D: 0x6AEA, //CJK UNIFIED IDEOGRAPH - 0x9F4E: 0x6AFB, //CJK UNIFIED IDEOGRAPH - 0x9F4F: 0x6B05, //CJK UNIFIED IDEOGRAPH - 0x9F50: 0x8616, //CJK UNIFIED IDEOGRAPH - 0x9F51: 0x6AFA, //CJK UNIFIED IDEOGRAPH - 0x9F52: 0x6B12, //CJK UNIFIED IDEOGRAPH - 0x9F53: 0x6B16, //CJK UNIFIED IDEOGRAPH - 0x9F54: 0x9B31, //CJK UNIFIED IDEOGRAPH - 0x9F55: 0x6B1F, //CJK UNIFIED IDEOGRAPH - 0x9F56: 0x6B38, //CJK UNIFIED IDEOGRAPH - 0x9F57: 0x6B37, //CJK UNIFIED IDEOGRAPH - 0x9F58: 0x76DC, //CJK UNIFIED IDEOGRAPH - 0x9F59: 0x6B39, //CJK UNIFIED IDEOGRAPH - 0x9F5A: 0x98EE, //CJK UNIFIED IDEOGRAPH - 0x9F5B: 0x6B47, //CJK UNIFIED IDEOGRAPH - 0x9F5C: 0x6B43, //CJK UNIFIED IDEOGRAPH - 0x9F5D: 0x6B49, //CJK UNIFIED IDEOGRAPH - 0x9F5E: 0x6B50, //CJK UNIFIED IDEOGRAPH - 0x9F5F: 0x6B59, //CJK UNIFIED IDEOGRAPH - 0x9F60: 0x6B54, //CJK UNIFIED IDEOGRAPH - 0x9F61: 0x6B5B, //CJK UNIFIED IDEOGRAPH - 0x9F62: 0x6B5F, //CJK UNIFIED IDEOGRAPH - 0x9F63: 0x6B61, //CJK UNIFIED IDEOGRAPH - 0x9F64: 0x6B78, //CJK UNIFIED IDEOGRAPH - 0x9F65: 0x6B79, //CJK UNIFIED IDEOGRAPH - 0x9F66: 0x6B7F, //CJK UNIFIED IDEOGRAPH - 0x9F67: 0x6B80, //CJK UNIFIED IDEOGRAPH - 0x9F68: 0x6B84, //CJK UNIFIED IDEOGRAPH - 0x9F69: 0x6B83, //CJK UNIFIED IDEOGRAPH - 0x9F6A: 0x6B8D, //CJK UNIFIED IDEOGRAPH - 0x9F6B: 0x6B98, //CJK UNIFIED IDEOGRAPH - 0x9F6C: 0x6B95, //CJK UNIFIED IDEOGRAPH - 0x9F6D: 0x6B9E, //CJK UNIFIED IDEOGRAPH - 0x9F6E: 0x6BA4, //CJK UNIFIED IDEOGRAPH - 0x9F6F: 0x6BAA, //CJK UNIFIED IDEOGRAPH - 0x9F70: 0x6BAB, //CJK UNIFIED IDEOGRAPH - 0x9F71: 0x6BAF, //CJK UNIFIED IDEOGRAPH - 0x9F72: 0x6BB2, //CJK UNIFIED IDEOGRAPH - 0x9F73: 0x6BB1, //CJK UNIFIED IDEOGRAPH - 0x9F74: 0x6BB3, //CJK UNIFIED IDEOGRAPH - 0x9F75: 0x6BB7, //CJK UNIFIED IDEOGRAPH - 0x9F76: 0x6BBC, //CJK UNIFIED IDEOGRAPH - 0x9F77: 0x6BC6, //CJK UNIFIED IDEOGRAPH - 0x9F78: 0x6BCB, //CJK UNIFIED IDEOGRAPH - 0x9F79: 0x6BD3, //CJK UNIFIED IDEOGRAPH - 0x9F7A: 0x6BDF, //CJK UNIFIED IDEOGRAPH - 0x9F7B: 0x6BEC, //CJK UNIFIED IDEOGRAPH - 0x9F7C: 0x6BEB, //CJK UNIFIED IDEOGRAPH - 0x9F7D: 0x6BF3, //CJK UNIFIED IDEOGRAPH - 0x9F7E: 0x6BEF, //CJK UNIFIED IDEOGRAPH - 0x9F80: 0x9EBE, //CJK UNIFIED IDEOGRAPH - 0x9F81: 0x6C08, //CJK UNIFIED IDEOGRAPH - 0x9F82: 0x6C13, //CJK UNIFIED IDEOGRAPH - 0x9F83: 0x6C14, //CJK UNIFIED IDEOGRAPH - 0x9F84: 0x6C1B, //CJK UNIFIED IDEOGRAPH - 0x9F85: 0x6C24, //CJK UNIFIED IDEOGRAPH - 0x9F86: 0x6C23, //CJK UNIFIED IDEOGRAPH - 0x9F87: 0x6C5E, //CJK UNIFIED IDEOGRAPH - 0x9F88: 0x6C55, //CJK UNIFIED IDEOGRAPH - 0x9F89: 0x6C62, //CJK UNIFIED IDEOGRAPH - 0x9F8A: 0x6C6A, //CJK UNIFIED IDEOGRAPH - 0x9F8B: 0x6C82, //CJK UNIFIED IDEOGRAPH - 0x9F8C: 0x6C8D, //CJK UNIFIED IDEOGRAPH - 0x9F8D: 0x6C9A, //CJK UNIFIED IDEOGRAPH - 0x9F8E: 0x6C81, //CJK UNIFIED IDEOGRAPH - 0x9F8F: 0x6C9B, //CJK UNIFIED IDEOGRAPH - 0x9F90: 0x6C7E, //CJK UNIFIED IDEOGRAPH - 0x9F91: 0x6C68, //CJK UNIFIED IDEOGRAPH - 0x9F92: 0x6C73, //CJK UNIFIED IDEOGRAPH - 0x9F93: 0x6C92, //CJK UNIFIED IDEOGRAPH - 0x9F94: 0x6C90, //CJK UNIFIED IDEOGRAPH - 0x9F95: 0x6CC4, //CJK UNIFIED IDEOGRAPH - 0x9F96: 0x6CF1, //CJK UNIFIED IDEOGRAPH - 0x9F97: 0x6CD3, //CJK UNIFIED IDEOGRAPH - 0x9F98: 0x6CBD, //CJK UNIFIED IDEOGRAPH - 0x9F99: 0x6CD7, //CJK UNIFIED IDEOGRAPH - 0x9F9A: 0x6CC5, //CJK UNIFIED IDEOGRAPH - 0x9F9B: 0x6CDD, //CJK UNIFIED IDEOGRAPH - 0x9F9C: 0x6CAE, //CJK UNIFIED IDEOGRAPH - 0x9F9D: 0x6CB1, //CJK UNIFIED IDEOGRAPH - 0x9F9E: 0x6CBE, //CJK UNIFIED IDEOGRAPH - 0x9F9F: 0x6CBA, //CJK UNIFIED IDEOGRAPH - 0x9FA0: 0x6CDB, //CJK UNIFIED IDEOGRAPH - 0x9FA1: 0x6CEF, //CJK UNIFIED IDEOGRAPH - 0x9FA2: 0x6CD9, //CJK UNIFIED IDEOGRAPH - 0x9FA3: 0x6CEA, //CJK UNIFIED IDEOGRAPH - 0x9FA4: 0x6D1F, //CJK UNIFIED IDEOGRAPH - 0x9FA5: 0x884D, //CJK UNIFIED IDEOGRAPH - 0x9FA6: 0x6D36, //CJK UNIFIED IDEOGRAPH - 0x9FA7: 0x6D2B, //CJK UNIFIED IDEOGRAPH - 0x9FA8: 0x6D3D, //CJK UNIFIED IDEOGRAPH - 0x9FA9: 0x6D38, //CJK UNIFIED IDEOGRAPH - 0x9FAA: 0x6D19, //CJK UNIFIED IDEOGRAPH - 0x9FAB: 0x6D35, //CJK UNIFIED IDEOGRAPH - 0x9FAC: 0x6D33, //CJK UNIFIED IDEOGRAPH - 0x9FAD: 0x6D12, //CJK UNIFIED IDEOGRAPH - 0x9FAE: 0x6D0C, //CJK UNIFIED IDEOGRAPH - 0x9FAF: 0x6D63, //CJK UNIFIED IDEOGRAPH - 0x9FB0: 0x6D93, //CJK UNIFIED IDEOGRAPH - 0x9FB1: 0x6D64, //CJK UNIFIED IDEOGRAPH - 0x9FB2: 0x6D5A, //CJK UNIFIED IDEOGRAPH - 0x9FB3: 0x6D79, //CJK UNIFIED IDEOGRAPH - 0x9FB4: 0x6D59, //CJK UNIFIED IDEOGRAPH - 0x9FB5: 0x6D8E, //CJK UNIFIED IDEOGRAPH - 0x9FB6: 0x6D95, //CJK UNIFIED IDEOGRAPH - 0x9FB7: 0x6FE4, //CJK UNIFIED IDEOGRAPH - 0x9FB8: 0x6D85, //CJK UNIFIED IDEOGRAPH - 0x9FB9: 0x6DF9, //CJK UNIFIED IDEOGRAPH - 0x9FBA: 0x6E15, //CJK UNIFIED IDEOGRAPH - 0x9FBB: 0x6E0A, //CJK UNIFIED IDEOGRAPH - 0x9FBC: 0x6DB5, //CJK UNIFIED IDEOGRAPH - 0x9FBD: 0x6DC7, //CJK UNIFIED IDEOGRAPH - 0x9FBE: 0x6DE6, //CJK UNIFIED IDEOGRAPH - 0x9FBF: 0x6DB8, //CJK UNIFIED IDEOGRAPH - 0x9FC0: 0x6DC6, //CJK UNIFIED IDEOGRAPH - 0x9FC1: 0x6DEC, //CJK UNIFIED IDEOGRAPH - 0x9FC2: 0x6DDE, //CJK UNIFIED IDEOGRAPH - 0x9FC3: 0x6DCC, //CJK UNIFIED IDEOGRAPH - 0x9FC4: 0x6DE8, //CJK UNIFIED IDEOGRAPH - 0x9FC5: 0x6DD2, //CJK UNIFIED IDEOGRAPH - 0x9FC6: 0x6DC5, //CJK UNIFIED IDEOGRAPH - 0x9FC7: 0x6DFA, //CJK UNIFIED IDEOGRAPH - 0x9FC8: 0x6DD9, //CJK UNIFIED IDEOGRAPH - 0x9FC9: 0x6DE4, //CJK UNIFIED IDEOGRAPH - 0x9FCA: 0x6DD5, //CJK UNIFIED IDEOGRAPH - 0x9FCB: 0x6DEA, //CJK UNIFIED IDEOGRAPH - 0x9FCC: 0x6DEE, //CJK UNIFIED IDEOGRAPH - 0x9FCD: 0x6E2D, //CJK UNIFIED IDEOGRAPH - 0x9FCE: 0x6E6E, //CJK UNIFIED IDEOGRAPH - 0x9FCF: 0x6E2E, //CJK UNIFIED IDEOGRAPH - 0x9FD0: 0x6E19, //CJK UNIFIED IDEOGRAPH - 0x9FD1: 0x6E72, //CJK UNIFIED IDEOGRAPH - 0x9FD2: 0x6E5F, //CJK UNIFIED IDEOGRAPH - 0x9FD3: 0x6E3E, //CJK UNIFIED IDEOGRAPH - 0x9FD4: 0x6E23, //CJK UNIFIED IDEOGRAPH - 0x9FD5: 0x6E6B, //CJK UNIFIED IDEOGRAPH - 0x9FD6: 0x6E2B, //CJK UNIFIED IDEOGRAPH - 0x9FD7: 0x6E76, //CJK UNIFIED IDEOGRAPH - 0x9FD8: 0x6E4D, //CJK UNIFIED IDEOGRAPH - 0x9FD9: 0x6E1F, //CJK UNIFIED IDEOGRAPH - 0x9FDA: 0x6E43, //CJK UNIFIED IDEOGRAPH - 0x9FDB: 0x6E3A, //CJK UNIFIED IDEOGRAPH - 0x9FDC: 0x6E4E, //CJK UNIFIED IDEOGRAPH - 0x9FDD: 0x6E24, //CJK UNIFIED IDEOGRAPH - 0x9FDE: 0x6EFF, //CJK UNIFIED IDEOGRAPH - 0x9FDF: 0x6E1D, //CJK UNIFIED IDEOGRAPH - 0x9FE0: 0x6E38, //CJK UNIFIED IDEOGRAPH - 0x9FE1: 0x6E82, //CJK UNIFIED IDEOGRAPH - 0x9FE2: 0x6EAA, //CJK UNIFIED IDEOGRAPH - 0x9FE3: 0x6E98, //CJK UNIFIED IDEOGRAPH - 0x9FE4: 0x6EC9, //CJK UNIFIED IDEOGRAPH - 0x9FE5: 0x6EB7, //CJK UNIFIED IDEOGRAPH - 0x9FE6: 0x6ED3, //CJK UNIFIED IDEOGRAPH - 0x9FE7: 0x6EBD, //CJK UNIFIED IDEOGRAPH - 0x9FE8: 0x6EAF, //CJK UNIFIED IDEOGRAPH - 0x9FE9: 0x6EC4, //CJK UNIFIED IDEOGRAPH - 0x9FEA: 0x6EB2, //CJK UNIFIED IDEOGRAPH - 0x9FEB: 0x6ED4, //CJK UNIFIED IDEOGRAPH - 0x9FEC: 0x6ED5, //CJK UNIFIED IDEOGRAPH - 0x9FED: 0x6E8F, //CJK UNIFIED IDEOGRAPH - 0x9FEE: 0x6EA5, //CJK UNIFIED IDEOGRAPH - 0x9FEF: 0x6EC2, //CJK UNIFIED IDEOGRAPH - 0x9FF0: 0x6E9F, //CJK UNIFIED IDEOGRAPH - 0x9FF1: 0x6F41, //CJK UNIFIED IDEOGRAPH - 0x9FF2: 0x6F11, //CJK UNIFIED IDEOGRAPH - 0x9FF3: 0x704C, //CJK UNIFIED IDEOGRAPH - 0x9FF4: 0x6EEC, //CJK UNIFIED IDEOGRAPH - 0x9FF5: 0x6EF8, //CJK UNIFIED IDEOGRAPH - 0x9FF6: 0x6EFE, //CJK UNIFIED IDEOGRAPH - 0x9FF7: 0x6F3F, //CJK UNIFIED IDEOGRAPH - 0x9FF8: 0x6EF2, //CJK UNIFIED IDEOGRAPH - 0x9FF9: 0x6F31, //CJK UNIFIED IDEOGRAPH - 0x9FFA: 0x6EEF, //CJK UNIFIED IDEOGRAPH - 0x9FFB: 0x6F32, //CJK UNIFIED IDEOGRAPH - 0x9FFC: 0x6ECC, //CJK UNIFIED IDEOGRAPH - 0xE040: 0x6F3E, //CJK UNIFIED IDEOGRAPH - 0xE041: 0x6F13, //CJK UNIFIED IDEOGRAPH - 0xE042: 0x6EF7, //CJK UNIFIED IDEOGRAPH - 0xE043: 0x6F86, //CJK UNIFIED IDEOGRAPH - 0xE044: 0x6F7A, //CJK UNIFIED IDEOGRAPH - 0xE045: 0x6F78, //CJK UNIFIED IDEOGRAPH - 0xE046: 0x6F81, //CJK UNIFIED IDEOGRAPH - 0xE047: 0x6F80, //CJK UNIFIED IDEOGRAPH - 0xE048: 0x6F6F, //CJK UNIFIED IDEOGRAPH - 0xE049: 0x6F5B, //CJK UNIFIED IDEOGRAPH - 0xE04A: 0x6FF3, //CJK UNIFIED IDEOGRAPH - 0xE04B: 0x6F6D, //CJK UNIFIED IDEOGRAPH - 0xE04C: 0x6F82, //CJK UNIFIED IDEOGRAPH - 0xE04D: 0x6F7C, //CJK UNIFIED IDEOGRAPH - 0xE04E: 0x6F58, //CJK UNIFIED IDEOGRAPH - 0xE04F: 0x6F8E, //CJK UNIFIED IDEOGRAPH - 0xE050: 0x6F91, //CJK UNIFIED IDEOGRAPH - 0xE051: 0x6FC2, //CJK UNIFIED IDEOGRAPH - 0xE052: 0x6F66, //CJK UNIFIED IDEOGRAPH - 0xE053: 0x6FB3, //CJK UNIFIED IDEOGRAPH - 0xE054: 0x6FA3, //CJK UNIFIED IDEOGRAPH - 0xE055: 0x6FA1, //CJK UNIFIED IDEOGRAPH - 0xE056: 0x6FA4, //CJK UNIFIED IDEOGRAPH - 0xE057: 0x6FB9, //CJK UNIFIED IDEOGRAPH - 0xE058: 0x6FC6, //CJK UNIFIED IDEOGRAPH - 0xE059: 0x6FAA, //CJK UNIFIED IDEOGRAPH - 0xE05A: 0x6FDF, //CJK UNIFIED IDEOGRAPH - 0xE05B: 0x6FD5, //CJK UNIFIED IDEOGRAPH - 0xE05C: 0x6FEC, //CJK UNIFIED IDEOGRAPH - 0xE05D: 0x6FD4, //CJK UNIFIED IDEOGRAPH - 0xE05E: 0x6FD8, //CJK UNIFIED IDEOGRAPH - 0xE05F: 0x6FF1, //CJK UNIFIED IDEOGRAPH - 0xE060: 0x6FEE, //CJK UNIFIED IDEOGRAPH - 0xE061: 0x6FDB, //CJK UNIFIED IDEOGRAPH - 0xE062: 0x7009, //CJK UNIFIED IDEOGRAPH - 0xE063: 0x700B, //CJK UNIFIED IDEOGRAPH - 0xE064: 0x6FFA, //CJK UNIFIED IDEOGRAPH - 0xE065: 0x7011, //CJK UNIFIED IDEOGRAPH - 0xE066: 0x7001, //CJK UNIFIED IDEOGRAPH - 0xE067: 0x700F, //CJK UNIFIED IDEOGRAPH - 0xE068: 0x6FFE, //CJK UNIFIED IDEOGRAPH - 0xE069: 0x701B, //CJK UNIFIED IDEOGRAPH - 0xE06A: 0x701A, //CJK UNIFIED IDEOGRAPH - 0xE06B: 0x6F74, //CJK UNIFIED IDEOGRAPH - 0xE06C: 0x701D, //CJK UNIFIED IDEOGRAPH - 0xE06D: 0x7018, //CJK UNIFIED IDEOGRAPH - 0xE06E: 0x701F, //CJK UNIFIED IDEOGRAPH - 0xE06F: 0x7030, //CJK UNIFIED IDEOGRAPH - 0xE070: 0x703E, //CJK UNIFIED IDEOGRAPH - 0xE071: 0x7032, //CJK UNIFIED IDEOGRAPH - 0xE072: 0x7051, //CJK UNIFIED IDEOGRAPH - 0xE073: 0x7063, //CJK UNIFIED IDEOGRAPH - 0xE074: 0x7099, //CJK UNIFIED IDEOGRAPH - 0xE075: 0x7092, //CJK UNIFIED IDEOGRAPH - 0xE076: 0x70AF, //CJK UNIFIED IDEOGRAPH - 0xE077: 0x70F1, //CJK UNIFIED IDEOGRAPH - 0xE078: 0x70AC, //CJK UNIFIED IDEOGRAPH - 0xE079: 0x70B8, //CJK UNIFIED IDEOGRAPH - 0xE07A: 0x70B3, //CJK UNIFIED IDEOGRAPH - 0xE07B: 0x70AE, //CJK UNIFIED IDEOGRAPH - 0xE07C: 0x70DF, //CJK UNIFIED IDEOGRAPH - 0xE07D: 0x70CB, //CJK UNIFIED IDEOGRAPH - 0xE07E: 0x70DD, //CJK UNIFIED IDEOGRAPH - 0xE080: 0x70D9, //CJK UNIFIED IDEOGRAPH - 0xE081: 0x7109, //CJK UNIFIED IDEOGRAPH - 0xE082: 0x70FD, //CJK UNIFIED IDEOGRAPH - 0xE083: 0x711C, //CJK UNIFIED IDEOGRAPH - 0xE084: 0x7119, //CJK UNIFIED IDEOGRAPH - 0xE085: 0x7165, //CJK UNIFIED IDEOGRAPH - 0xE086: 0x7155, //CJK UNIFIED IDEOGRAPH - 0xE087: 0x7188, //CJK UNIFIED IDEOGRAPH - 0xE088: 0x7166, //CJK UNIFIED IDEOGRAPH - 0xE089: 0x7162, //CJK UNIFIED IDEOGRAPH - 0xE08A: 0x714C, //CJK UNIFIED IDEOGRAPH - 0xE08B: 0x7156, //CJK UNIFIED IDEOGRAPH - 0xE08C: 0x716C, //CJK UNIFIED IDEOGRAPH - 0xE08D: 0x718F, //CJK UNIFIED IDEOGRAPH - 0xE08E: 0x71FB, //CJK UNIFIED IDEOGRAPH - 0xE08F: 0x7184, //CJK UNIFIED IDEOGRAPH - 0xE090: 0x7195, //CJK UNIFIED IDEOGRAPH - 0xE091: 0x71A8, //CJK UNIFIED IDEOGRAPH - 0xE092: 0x71AC, //CJK UNIFIED IDEOGRAPH - 0xE093: 0x71D7, //CJK UNIFIED IDEOGRAPH - 0xE094: 0x71B9, //CJK UNIFIED IDEOGRAPH - 0xE095: 0x71BE, //CJK UNIFIED IDEOGRAPH - 0xE096: 0x71D2, //CJK UNIFIED IDEOGRAPH - 0xE097: 0x71C9, //CJK UNIFIED IDEOGRAPH - 0xE098: 0x71D4, //CJK UNIFIED IDEOGRAPH - 0xE099: 0x71CE, //CJK UNIFIED IDEOGRAPH - 0xE09A: 0x71E0, //CJK UNIFIED IDEOGRAPH - 0xE09B: 0x71EC, //CJK UNIFIED IDEOGRAPH - 0xE09C: 0x71E7, //CJK UNIFIED IDEOGRAPH - 0xE09D: 0x71F5, //CJK UNIFIED IDEOGRAPH - 0xE09E: 0x71FC, //CJK UNIFIED IDEOGRAPH - 0xE09F: 0x71F9, //CJK UNIFIED IDEOGRAPH - 0xE0A0: 0x71FF, //CJK UNIFIED IDEOGRAPH - 0xE0A1: 0x720D, //CJK UNIFIED IDEOGRAPH - 0xE0A2: 0x7210, //CJK UNIFIED IDEOGRAPH - 0xE0A3: 0x721B, //CJK UNIFIED IDEOGRAPH - 0xE0A4: 0x7228, //CJK UNIFIED IDEOGRAPH - 0xE0A5: 0x722D, //CJK UNIFIED IDEOGRAPH - 0xE0A6: 0x722C, //CJK UNIFIED IDEOGRAPH - 0xE0A7: 0x7230, //CJK UNIFIED IDEOGRAPH - 0xE0A8: 0x7232, //CJK UNIFIED IDEOGRAPH - 0xE0A9: 0x723B, //CJK UNIFIED IDEOGRAPH - 0xE0AA: 0x723C, //CJK UNIFIED IDEOGRAPH - 0xE0AB: 0x723F, //CJK UNIFIED IDEOGRAPH - 0xE0AC: 0x7240, //CJK UNIFIED IDEOGRAPH - 0xE0AD: 0x7246, //CJK UNIFIED IDEOGRAPH - 0xE0AE: 0x724B, //CJK UNIFIED IDEOGRAPH - 0xE0AF: 0x7258, //CJK UNIFIED IDEOGRAPH - 0xE0B0: 0x7274, //CJK UNIFIED IDEOGRAPH - 0xE0B1: 0x727E, //CJK UNIFIED IDEOGRAPH - 0xE0B2: 0x7282, //CJK UNIFIED IDEOGRAPH - 0xE0B3: 0x7281, //CJK UNIFIED IDEOGRAPH - 0xE0B4: 0x7287, //CJK UNIFIED IDEOGRAPH - 0xE0B5: 0x7292, //CJK UNIFIED IDEOGRAPH - 0xE0B6: 0x7296, //CJK UNIFIED IDEOGRAPH - 0xE0B7: 0x72A2, //CJK UNIFIED IDEOGRAPH - 0xE0B8: 0x72A7, //CJK UNIFIED IDEOGRAPH - 0xE0B9: 0x72B9, //CJK UNIFIED IDEOGRAPH - 0xE0BA: 0x72B2, //CJK UNIFIED IDEOGRAPH - 0xE0BB: 0x72C3, //CJK UNIFIED IDEOGRAPH - 0xE0BC: 0x72C6, //CJK UNIFIED IDEOGRAPH - 0xE0BD: 0x72C4, //CJK UNIFIED IDEOGRAPH - 0xE0BE: 0x72CE, //CJK UNIFIED IDEOGRAPH - 0xE0BF: 0x72D2, //CJK UNIFIED IDEOGRAPH - 0xE0C0: 0x72E2, //CJK UNIFIED IDEOGRAPH - 0xE0C1: 0x72E0, //CJK UNIFIED IDEOGRAPH - 0xE0C2: 0x72E1, //CJK UNIFIED IDEOGRAPH - 0xE0C3: 0x72F9, //CJK UNIFIED IDEOGRAPH - 0xE0C4: 0x72F7, //CJK UNIFIED IDEOGRAPH - 0xE0C5: 0x500F, //CJK UNIFIED IDEOGRAPH - 0xE0C6: 0x7317, //CJK UNIFIED IDEOGRAPH - 0xE0C7: 0x730A, //CJK UNIFIED IDEOGRAPH - 0xE0C8: 0x731C, //CJK UNIFIED IDEOGRAPH - 0xE0C9: 0x7316, //CJK UNIFIED IDEOGRAPH - 0xE0CA: 0x731D, //CJK UNIFIED IDEOGRAPH - 0xE0CB: 0x7334, //CJK UNIFIED IDEOGRAPH - 0xE0CC: 0x732F, //CJK UNIFIED IDEOGRAPH - 0xE0CD: 0x7329, //CJK UNIFIED IDEOGRAPH - 0xE0CE: 0x7325, //CJK UNIFIED IDEOGRAPH - 0xE0CF: 0x733E, //CJK UNIFIED IDEOGRAPH - 0xE0D0: 0x734E, //CJK UNIFIED IDEOGRAPH - 0xE0D1: 0x734F, //CJK UNIFIED IDEOGRAPH - 0xE0D2: 0x9ED8, //CJK UNIFIED IDEOGRAPH - 0xE0D3: 0x7357, //CJK UNIFIED IDEOGRAPH - 0xE0D4: 0x736A, //CJK UNIFIED IDEOGRAPH - 0xE0D5: 0x7368, //CJK UNIFIED IDEOGRAPH - 0xE0D6: 0x7370, //CJK UNIFIED IDEOGRAPH - 0xE0D7: 0x7378, //CJK UNIFIED IDEOGRAPH - 0xE0D8: 0x7375, //CJK UNIFIED IDEOGRAPH - 0xE0D9: 0x737B, //CJK UNIFIED IDEOGRAPH - 0xE0DA: 0x737A, //CJK UNIFIED IDEOGRAPH - 0xE0DB: 0x73C8, //CJK UNIFIED IDEOGRAPH - 0xE0DC: 0x73B3, //CJK UNIFIED IDEOGRAPH - 0xE0DD: 0x73CE, //CJK UNIFIED IDEOGRAPH - 0xE0DE: 0x73BB, //CJK UNIFIED IDEOGRAPH - 0xE0DF: 0x73C0, //CJK UNIFIED IDEOGRAPH - 0xE0E0: 0x73E5, //CJK UNIFIED IDEOGRAPH - 0xE0E1: 0x73EE, //CJK UNIFIED IDEOGRAPH - 0xE0E2: 0x73DE, //CJK UNIFIED IDEOGRAPH - 0xE0E3: 0x74A2, //CJK UNIFIED IDEOGRAPH - 0xE0E4: 0x7405, //CJK UNIFIED IDEOGRAPH - 0xE0E5: 0x746F, //CJK UNIFIED IDEOGRAPH - 0xE0E6: 0x7425, //CJK UNIFIED IDEOGRAPH - 0xE0E7: 0x73F8, //CJK UNIFIED IDEOGRAPH - 0xE0E8: 0x7432, //CJK UNIFIED IDEOGRAPH - 0xE0E9: 0x743A, //CJK UNIFIED IDEOGRAPH - 0xE0EA: 0x7455, //CJK UNIFIED IDEOGRAPH - 0xE0EB: 0x743F, //CJK UNIFIED IDEOGRAPH - 0xE0EC: 0x745F, //CJK UNIFIED IDEOGRAPH - 0xE0ED: 0x7459, //CJK UNIFIED IDEOGRAPH - 0xE0EE: 0x7441, //CJK UNIFIED IDEOGRAPH - 0xE0EF: 0x745C, //CJK UNIFIED IDEOGRAPH - 0xE0F0: 0x7469, //CJK UNIFIED IDEOGRAPH - 0xE0F1: 0x7470, //CJK UNIFIED IDEOGRAPH - 0xE0F2: 0x7463, //CJK UNIFIED IDEOGRAPH - 0xE0F3: 0x746A, //CJK UNIFIED IDEOGRAPH - 0xE0F4: 0x7476, //CJK UNIFIED IDEOGRAPH - 0xE0F5: 0x747E, //CJK UNIFIED IDEOGRAPH - 0xE0F6: 0x748B, //CJK UNIFIED IDEOGRAPH - 0xE0F7: 0x749E, //CJK UNIFIED IDEOGRAPH - 0xE0F8: 0x74A7, //CJK UNIFIED IDEOGRAPH - 0xE0F9: 0x74CA, //CJK UNIFIED IDEOGRAPH - 0xE0FA: 0x74CF, //CJK UNIFIED IDEOGRAPH - 0xE0FB: 0x74D4, //CJK UNIFIED IDEOGRAPH - 0xE0FC: 0x73F1, //CJK UNIFIED IDEOGRAPH - 0xE140: 0x74E0, //CJK UNIFIED IDEOGRAPH - 0xE141: 0x74E3, //CJK UNIFIED IDEOGRAPH - 0xE142: 0x74E7, //CJK UNIFIED IDEOGRAPH - 0xE143: 0x74E9, //CJK UNIFIED IDEOGRAPH - 0xE144: 0x74EE, //CJK UNIFIED IDEOGRAPH - 0xE145: 0x74F2, //CJK UNIFIED IDEOGRAPH - 0xE146: 0x74F0, //CJK UNIFIED IDEOGRAPH - 0xE147: 0x74F1, //CJK UNIFIED IDEOGRAPH - 0xE148: 0x74F8, //CJK UNIFIED IDEOGRAPH - 0xE149: 0x74F7, //CJK UNIFIED IDEOGRAPH - 0xE14A: 0x7504, //CJK UNIFIED IDEOGRAPH - 0xE14B: 0x7503, //CJK UNIFIED IDEOGRAPH - 0xE14C: 0x7505, //CJK UNIFIED IDEOGRAPH - 0xE14D: 0x750C, //CJK UNIFIED IDEOGRAPH - 0xE14E: 0x750E, //CJK UNIFIED IDEOGRAPH - 0xE14F: 0x750D, //CJK UNIFIED IDEOGRAPH - 0xE150: 0x7515, //CJK UNIFIED IDEOGRAPH - 0xE151: 0x7513, //CJK UNIFIED IDEOGRAPH - 0xE152: 0x751E, //CJK UNIFIED IDEOGRAPH - 0xE153: 0x7526, //CJK UNIFIED IDEOGRAPH - 0xE154: 0x752C, //CJK UNIFIED IDEOGRAPH - 0xE155: 0x753C, //CJK UNIFIED IDEOGRAPH - 0xE156: 0x7544, //CJK UNIFIED IDEOGRAPH - 0xE157: 0x754D, //CJK UNIFIED IDEOGRAPH - 0xE158: 0x754A, //CJK UNIFIED IDEOGRAPH - 0xE159: 0x7549, //CJK UNIFIED IDEOGRAPH - 0xE15A: 0x755B, //CJK UNIFIED IDEOGRAPH - 0xE15B: 0x7546, //CJK UNIFIED IDEOGRAPH - 0xE15C: 0x755A, //CJK UNIFIED IDEOGRAPH - 0xE15D: 0x7569, //CJK UNIFIED IDEOGRAPH - 0xE15E: 0x7564, //CJK UNIFIED IDEOGRAPH - 0xE15F: 0x7567, //CJK UNIFIED IDEOGRAPH - 0xE160: 0x756B, //CJK UNIFIED IDEOGRAPH - 0xE161: 0x756D, //CJK UNIFIED IDEOGRAPH - 0xE162: 0x7578, //CJK UNIFIED IDEOGRAPH - 0xE163: 0x7576, //CJK UNIFIED IDEOGRAPH - 0xE164: 0x7586, //CJK UNIFIED IDEOGRAPH - 0xE165: 0x7587, //CJK UNIFIED IDEOGRAPH - 0xE166: 0x7574, //CJK UNIFIED IDEOGRAPH - 0xE167: 0x758A, //CJK UNIFIED IDEOGRAPH - 0xE168: 0x7589, //CJK UNIFIED IDEOGRAPH - 0xE169: 0x7582, //CJK UNIFIED IDEOGRAPH - 0xE16A: 0x7594, //CJK UNIFIED IDEOGRAPH - 0xE16B: 0x759A, //CJK UNIFIED IDEOGRAPH - 0xE16C: 0x759D, //CJK UNIFIED IDEOGRAPH - 0xE16D: 0x75A5, //CJK UNIFIED IDEOGRAPH - 0xE16E: 0x75A3, //CJK UNIFIED IDEOGRAPH - 0xE16F: 0x75C2, //CJK UNIFIED IDEOGRAPH - 0xE170: 0x75B3, //CJK UNIFIED IDEOGRAPH - 0xE171: 0x75C3, //CJK UNIFIED IDEOGRAPH - 0xE172: 0x75B5, //CJK UNIFIED IDEOGRAPH - 0xE173: 0x75BD, //CJK UNIFIED IDEOGRAPH - 0xE174: 0x75B8, //CJK UNIFIED IDEOGRAPH - 0xE175: 0x75BC, //CJK UNIFIED IDEOGRAPH - 0xE176: 0x75B1, //CJK UNIFIED IDEOGRAPH - 0xE177: 0x75CD, //CJK UNIFIED IDEOGRAPH - 0xE178: 0x75CA, //CJK UNIFIED IDEOGRAPH - 0xE179: 0x75D2, //CJK UNIFIED IDEOGRAPH - 0xE17A: 0x75D9, //CJK UNIFIED IDEOGRAPH - 0xE17B: 0x75E3, //CJK UNIFIED IDEOGRAPH - 0xE17C: 0x75DE, //CJK UNIFIED IDEOGRAPH - 0xE17D: 0x75FE, //CJK UNIFIED IDEOGRAPH - 0xE17E: 0x75FF, //CJK UNIFIED IDEOGRAPH - 0xE180: 0x75FC, //CJK UNIFIED IDEOGRAPH - 0xE181: 0x7601, //CJK UNIFIED IDEOGRAPH - 0xE182: 0x75F0, //CJK UNIFIED IDEOGRAPH - 0xE183: 0x75FA, //CJK UNIFIED IDEOGRAPH - 0xE184: 0x75F2, //CJK UNIFIED IDEOGRAPH - 0xE185: 0x75F3, //CJK UNIFIED IDEOGRAPH - 0xE186: 0x760B, //CJK UNIFIED IDEOGRAPH - 0xE187: 0x760D, //CJK UNIFIED IDEOGRAPH - 0xE188: 0x7609, //CJK UNIFIED IDEOGRAPH - 0xE189: 0x761F, //CJK UNIFIED IDEOGRAPH - 0xE18A: 0x7627, //CJK UNIFIED IDEOGRAPH - 0xE18B: 0x7620, //CJK UNIFIED IDEOGRAPH - 0xE18C: 0x7621, //CJK UNIFIED IDEOGRAPH - 0xE18D: 0x7622, //CJK UNIFIED IDEOGRAPH - 0xE18E: 0x7624, //CJK UNIFIED IDEOGRAPH - 0xE18F: 0x7634, //CJK UNIFIED IDEOGRAPH - 0xE190: 0x7630, //CJK UNIFIED IDEOGRAPH - 0xE191: 0x763B, //CJK UNIFIED IDEOGRAPH - 0xE192: 0x7647, //CJK UNIFIED IDEOGRAPH - 0xE193: 0x7648, //CJK UNIFIED IDEOGRAPH - 0xE194: 0x7646, //CJK UNIFIED IDEOGRAPH - 0xE195: 0x765C, //CJK UNIFIED IDEOGRAPH - 0xE196: 0x7658, //CJK UNIFIED IDEOGRAPH - 0xE197: 0x7661, //CJK UNIFIED IDEOGRAPH - 0xE198: 0x7662, //CJK UNIFIED IDEOGRAPH - 0xE199: 0x7668, //CJK UNIFIED IDEOGRAPH - 0xE19A: 0x7669, //CJK UNIFIED IDEOGRAPH - 0xE19B: 0x766A, //CJK UNIFIED IDEOGRAPH - 0xE19C: 0x7667, //CJK UNIFIED IDEOGRAPH - 0xE19D: 0x766C, //CJK UNIFIED IDEOGRAPH - 0xE19E: 0x7670, //CJK UNIFIED IDEOGRAPH - 0xE19F: 0x7672, //CJK UNIFIED IDEOGRAPH - 0xE1A0: 0x7676, //CJK UNIFIED IDEOGRAPH - 0xE1A1: 0x7678, //CJK UNIFIED IDEOGRAPH - 0xE1A2: 0x767C, //CJK UNIFIED IDEOGRAPH - 0xE1A3: 0x7680, //CJK UNIFIED IDEOGRAPH - 0xE1A4: 0x7683, //CJK UNIFIED IDEOGRAPH - 0xE1A5: 0x7688, //CJK UNIFIED IDEOGRAPH - 0xE1A6: 0x768B, //CJK UNIFIED IDEOGRAPH - 0xE1A7: 0x768E, //CJK UNIFIED IDEOGRAPH - 0xE1A8: 0x7696, //CJK UNIFIED IDEOGRAPH - 0xE1A9: 0x7693, //CJK UNIFIED IDEOGRAPH - 0xE1AA: 0x7699, //CJK UNIFIED IDEOGRAPH - 0xE1AB: 0x769A, //CJK UNIFIED IDEOGRAPH - 0xE1AC: 0x76B0, //CJK UNIFIED IDEOGRAPH - 0xE1AD: 0x76B4, //CJK UNIFIED IDEOGRAPH - 0xE1AE: 0x76B8, //CJK UNIFIED IDEOGRAPH - 0xE1AF: 0x76B9, //CJK UNIFIED IDEOGRAPH - 0xE1B0: 0x76BA, //CJK UNIFIED IDEOGRAPH - 0xE1B1: 0x76C2, //CJK UNIFIED IDEOGRAPH - 0xE1B2: 0x76CD, //CJK UNIFIED IDEOGRAPH - 0xE1B3: 0x76D6, //CJK UNIFIED IDEOGRAPH - 0xE1B4: 0x76D2, //CJK UNIFIED IDEOGRAPH - 0xE1B5: 0x76DE, //CJK UNIFIED IDEOGRAPH - 0xE1B6: 0x76E1, //CJK UNIFIED IDEOGRAPH - 0xE1B7: 0x76E5, //CJK UNIFIED IDEOGRAPH - 0xE1B8: 0x76E7, //CJK UNIFIED IDEOGRAPH - 0xE1B9: 0x76EA, //CJK UNIFIED IDEOGRAPH - 0xE1BA: 0x862F, //CJK UNIFIED IDEOGRAPH - 0xE1BB: 0x76FB, //CJK UNIFIED IDEOGRAPH - 0xE1BC: 0x7708, //CJK UNIFIED IDEOGRAPH - 0xE1BD: 0x7707, //CJK UNIFIED IDEOGRAPH - 0xE1BE: 0x7704, //CJK UNIFIED IDEOGRAPH - 0xE1BF: 0x7729, //CJK UNIFIED IDEOGRAPH - 0xE1C0: 0x7724, //CJK UNIFIED IDEOGRAPH - 0xE1C1: 0x771E, //CJK UNIFIED IDEOGRAPH - 0xE1C2: 0x7725, //CJK UNIFIED IDEOGRAPH - 0xE1C3: 0x7726, //CJK UNIFIED IDEOGRAPH - 0xE1C4: 0x771B, //CJK UNIFIED IDEOGRAPH - 0xE1C5: 0x7737, //CJK UNIFIED IDEOGRAPH - 0xE1C6: 0x7738, //CJK UNIFIED IDEOGRAPH - 0xE1C7: 0x7747, //CJK UNIFIED IDEOGRAPH - 0xE1C8: 0x775A, //CJK UNIFIED IDEOGRAPH - 0xE1C9: 0x7768, //CJK UNIFIED IDEOGRAPH - 0xE1CA: 0x776B, //CJK UNIFIED IDEOGRAPH - 0xE1CB: 0x775B, //CJK UNIFIED IDEOGRAPH - 0xE1CC: 0x7765, //CJK UNIFIED IDEOGRAPH - 0xE1CD: 0x777F, //CJK UNIFIED IDEOGRAPH - 0xE1CE: 0x777E, //CJK UNIFIED IDEOGRAPH - 0xE1CF: 0x7779, //CJK UNIFIED IDEOGRAPH - 0xE1D0: 0x778E, //CJK UNIFIED IDEOGRAPH - 0xE1D1: 0x778B, //CJK UNIFIED IDEOGRAPH - 0xE1D2: 0x7791, //CJK UNIFIED IDEOGRAPH - 0xE1D3: 0x77A0, //CJK UNIFIED IDEOGRAPH - 0xE1D4: 0x779E, //CJK UNIFIED IDEOGRAPH - 0xE1D5: 0x77B0, //CJK UNIFIED IDEOGRAPH - 0xE1D6: 0x77B6, //CJK UNIFIED IDEOGRAPH - 0xE1D7: 0x77B9, //CJK UNIFIED IDEOGRAPH - 0xE1D8: 0x77BF, //CJK UNIFIED IDEOGRAPH - 0xE1D9: 0x77BC, //CJK UNIFIED IDEOGRAPH - 0xE1DA: 0x77BD, //CJK UNIFIED IDEOGRAPH - 0xE1DB: 0x77BB, //CJK UNIFIED IDEOGRAPH - 0xE1DC: 0x77C7, //CJK UNIFIED IDEOGRAPH - 0xE1DD: 0x77CD, //CJK UNIFIED IDEOGRAPH - 0xE1DE: 0x77D7, //CJK UNIFIED IDEOGRAPH - 0xE1DF: 0x77DA, //CJK UNIFIED IDEOGRAPH - 0xE1E0: 0x77DC, //CJK UNIFIED IDEOGRAPH - 0xE1E1: 0x77E3, //CJK UNIFIED IDEOGRAPH - 0xE1E2: 0x77EE, //CJK UNIFIED IDEOGRAPH - 0xE1E3: 0x77FC, //CJK UNIFIED IDEOGRAPH - 0xE1E4: 0x780C, //CJK UNIFIED IDEOGRAPH - 0xE1E5: 0x7812, //CJK UNIFIED IDEOGRAPH - 0xE1E6: 0x7926, //CJK UNIFIED IDEOGRAPH - 0xE1E7: 0x7820, //CJK UNIFIED IDEOGRAPH - 0xE1E8: 0x792A, //CJK UNIFIED IDEOGRAPH - 0xE1E9: 0x7845, //CJK UNIFIED IDEOGRAPH - 0xE1EA: 0x788E, //CJK UNIFIED IDEOGRAPH - 0xE1EB: 0x7874, //CJK UNIFIED IDEOGRAPH - 0xE1EC: 0x7886, //CJK UNIFIED IDEOGRAPH - 0xE1ED: 0x787C, //CJK UNIFIED IDEOGRAPH - 0xE1EE: 0x789A, //CJK UNIFIED IDEOGRAPH - 0xE1EF: 0x788C, //CJK UNIFIED IDEOGRAPH - 0xE1F0: 0x78A3, //CJK UNIFIED IDEOGRAPH - 0xE1F1: 0x78B5, //CJK UNIFIED IDEOGRAPH - 0xE1F2: 0x78AA, //CJK UNIFIED IDEOGRAPH - 0xE1F3: 0x78AF, //CJK UNIFIED IDEOGRAPH - 0xE1F4: 0x78D1, //CJK UNIFIED IDEOGRAPH - 0xE1F5: 0x78C6, //CJK UNIFIED IDEOGRAPH - 0xE1F6: 0x78CB, //CJK UNIFIED IDEOGRAPH - 0xE1F7: 0x78D4, //CJK UNIFIED IDEOGRAPH - 0xE1F8: 0x78BE, //CJK UNIFIED IDEOGRAPH - 0xE1F9: 0x78BC, //CJK UNIFIED IDEOGRAPH - 0xE1FA: 0x78C5, //CJK UNIFIED IDEOGRAPH - 0xE1FB: 0x78CA, //CJK UNIFIED IDEOGRAPH - 0xE1FC: 0x78EC, //CJK UNIFIED IDEOGRAPH - 0xE240: 0x78E7, //CJK UNIFIED IDEOGRAPH - 0xE241: 0x78DA, //CJK UNIFIED IDEOGRAPH - 0xE242: 0x78FD, //CJK UNIFIED IDEOGRAPH - 0xE243: 0x78F4, //CJK UNIFIED IDEOGRAPH - 0xE244: 0x7907, //CJK UNIFIED IDEOGRAPH - 0xE245: 0x7912, //CJK UNIFIED IDEOGRAPH - 0xE246: 0x7911, //CJK UNIFIED IDEOGRAPH - 0xE247: 0x7919, //CJK UNIFIED IDEOGRAPH - 0xE248: 0x792C, //CJK UNIFIED IDEOGRAPH - 0xE249: 0x792B, //CJK UNIFIED IDEOGRAPH - 0xE24A: 0x7940, //CJK UNIFIED IDEOGRAPH - 0xE24B: 0x7960, //CJK UNIFIED IDEOGRAPH - 0xE24C: 0x7957, //CJK UNIFIED IDEOGRAPH - 0xE24D: 0x795F, //CJK UNIFIED IDEOGRAPH - 0xE24E: 0x795A, //CJK UNIFIED IDEOGRAPH - 0xE24F: 0x7955, //CJK UNIFIED IDEOGRAPH - 0xE250: 0x7953, //CJK UNIFIED IDEOGRAPH - 0xE251: 0x797A, //CJK UNIFIED IDEOGRAPH - 0xE252: 0x797F, //CJK UNIFIED IDEOGRAPH - 0xE253: 0x798A, //CJK UNIFIED IDEOGRAPH - 0xE254: 0x799D, //CJK UNIFIED IDEOGRAPH - 0xE255: 0x79A7, //CJK UNIFIED IDEOGRAPH - 0xE256: 0x9F4B, //CJK UNIFIED IDEOGRAPH - 0xE257: 0x79AA, //CJK UNIFIED IDEOGRAPH - 0xE258: 0x79AE, //CJK UNIFIED IDEOGRAPH - 0xE259: 0x79B3, //CJK UNIFIED IDEOGRAPH - 0xE25A: 0x79B9, //CJK UNIFIED IDEOGRAPH - 0xE25B: 0x79BA, //CJK UNIFIED IDEOGRAPH - 0xE25C: 0x79C9, //CJK UNIFIED IDEOGRAPH - 0xE25D: 0x79D5, //CJK UNIFIED IDEOGRAPH - 0xE25E: 0x79E7, //CJK UNIFIED IDEOGRAPH - 0xE25F: 0x79EC, //CJK UNIFIED IDEOGRAPH - 0xE260: 0x79E1, //CJK UNIFIED IDEOGRAPH - 0xE261: 0x79E3, //CJK UNIFIED IDEOGRAPH - 0xE262: 0x7A08, //CJK UNIFIED IDEOGRAPH - 0xE263: 0x7A0D, //CJK UNIFIED IDEOGRAPH - 0xE264: 0x7A18, //CJK UNIFIED IDEOGRAPH - 0xE265: 0x7A19, //CJK UNIFIED IDEOGRAPH - 0xE266: 0x7A20, //CJK UNIFIED IDEOGRAPH - 0xE267: 0x7A1F, //CJK UNIFIED IDEOGRAPH - 0xE268: 0x7980, //CJK UNIFIED IDEOGRAPH - 0xE269: 0x7A31, //CJK UNIFIED IDEOGRAPH - 0xE26A: 0x7A3B, //CJK UNIFIED IDEOGRAPH - 0xE26B: 0x7A3E, //CJK UNIFIED IDEOGRAPH - 0xE26C: 0x7A37, //CJK UNIFIED IDEOGRAPH - 0xE26D: 0x7A43, //CJK UNIFIED IDEOGRAPH - 0xE26E: 0x7A57, //CJK UNIFIED IDEOGRAPH - 0xE26F: 0x7A49, //CJK UNIFIED IDEOGRAPH - 0xE270: 0x7A61, //CJK UNIFIED IDEOGRAPH - 0xE271: 0x7A62, //CJK UNIFIED IDEOGRAPH - 0xE272: 0x7A69, //CJK UNIFIED IDEOGRAPH - 0xE273: 0x9F9D, //CJK UNIFIED IDEOGRAPH - 0xE274: 0x7A70, //CJK UNIFIED IDEOGRAPH - 0xE275: 0x7A79, //CJK UNIFIED IDEOGRAPH - 0xE276: 0x7A7D, //CJK UNIFIED IDEOGRAPH - 0xE277: 0x7A88, //CJK UNIFIED IDEOGRAPH - 0xE278: 0x7A97, //CJK UNIFIED IDEOGRAPH - 0xE279: 0x7A95, //CJK UNIFIED IDEOGRAPH - 0xE27A: 0x7A98, //CJK UNIFIED IDEOGRAPH - 0xE27B: 0x7A96, //CJK UNIFIED IDEOGRAPH - 0xE27C: 0x7AA9, //CJK UNIFIED IDEOGRAPH - 0xE27D: 0x7AC8, //CJK UNIFIED IDEOGRAPH - 0xE27E: 0x7AB0, //CJK UNIFIED IDEOGRAPH - 0xE280: 0x7AB6, //CJK UNIFIED IDEOGRAPH - 0xE281: 0x7AC5, //CJK UNIFIED IDEOGRAPH - 0xE282: 0x7AC4, //CJK UNIFIED IDEOGRAPH - 0xE283: 0x7ABF, //CJK UNIFIED IDEOGRAPH - 0xE284: 0x9083, //CJK UNIFIED IDEOGRAPH - 0xE285: 0x7AC7, //CJK UNIFIED IDEOGRAPH - 0xE286: 0x7ACA, //CJK UNIFIED IDEOGRAPH - 0xE287: 0x7ACD, //CJK UNIFIED IDEOGRAPH - 0xE288: 0x7ACF, //CJK UNIFIED IDEOGRAPH - 0xE289: 0x7AD5, //CJK UNIFIED IDEOGRAPH - 0xE28A: 0x7AD3, //CJK UNIFIED IDEOGRAPH - 0xE28B: 0x7AD9, //CJK UNIFIED IDEOGRAPH - 0xE28C: 0x7ADA, //CJK UNIFIED IDEOGRAPH - 0xE28D: 0x7ADD, //CJK UNIFIED IDEOGRAPH - 0xE28E: 0x7AE1, //CJK UNIFIED IDEOGRAPH - 0xE28F: 0x7AE2, //CJK UNIFIED IDEOGRAPH - 0xE290: 0x7AE6, //CJK UNIFIED IDEOGRAPH - 0xE291: 0x7AED, //CJK UNIFIED IDEOGRAPH - 0xE292: 0x7AF0, //CJK UNIFIED IDEOGRAPH - 0xE293: 0x7B02, //CJK UNIFIED IDEOGRAPH - 0xE294: 0x7B0F, //CJK UNIFIED IDEOGRAPH - 0xE295: 0x7B0A, //CJK UNIFIED IDEOGRAPH - 0xE296: 0x7B06, //CJK UNIFIED IDEOGRAPH - 0xE297: 0x7B33, //CJK UNIFIED IDEOGRAPH - 0xE298: 0x7B18, //CJK UNIFIED IDEOGRAPH - 0xE299: 0x7B19, //CJK UNIFIED IDEOGRAPH - 0xE29A: 0x7B1E, //CJK UNIFIED IDEOGRAPH - 0xE29B: 0x7B35, //CJK UNIFIED IDEOGRAPH - 0xE29C: 0x7B28, //CJK UNIFIED IDEOGRAPH - 0xE29D: 0x7B36, //CJK UNIFIED IDEOGRAPH - 0xE29E: 0x7B50, //CJK UNIFIED IDEOGRAPH - 0xE29F: 0x7B7A, //CJK UNIFIED IDEOGRAPH - 0xE2A0: 0x7B04, //CJK UNIFIED IDEOGRAPH - 0xE2A1: 0x7B4D, //CJK UNIFIED IDEOGRAPH - 0xE2A2: 0x7B0B, //CJK UNIFIED IDEOGRAPH - 0xE2A3: 0x7B4C, //CJK UNIFIED IDEOGRAPH - 0xE2A4: 0x7B45, //CJK UNIFIED IDEOGRAPH - 0xE2A5: 0x7B75, //CJK UNIFIED IDEOGRAPH - 0xE2A6: 0x7B65, //CJK UNIFIED IDEOGRAPH - 0xE2A7: 0x7B74, //CJK UNIFIED IDEOGRAPH - 0xE2A8: 0x7B67, //CJK UNIFIED IDEOGRAPH - 0xE2A9: 0x7B70, //CJK UNIFIED IDEOGRAPH - 0xE2AA: 0x7B71, //CJK UNIFIED IDEOGRAPH - 0xE2AB: 0x7B6C, //CJK UNIFIED IDEOGRAPH - 0xE2AC: 0x7B6E, //CJK UNIFIED IDEOGRAPH - 0xE2AD: 0x7B9D, //CJK UNIFIED IDEOGRAPH - 0xE2AE: 0x7B98, //CJK UNIFIED IDEOGRAPH - 0xE2AF: 0x7B9F, //CJK UNIFIED IDEOGRAPH - 0xE2B0: 0x7B8D, //CJK UNIFIED IDEOGRAPH - 0xE2B1: 0x7B9C, //CJK UNIFIED IDEOGRAPH - 0xE2B2: 0x7B9A, //CJK UNIFIED IDEOGRAPH - 0xE2B3: 0x7B8B, //CJK UNIFIED IDEOGRAPH - 0xE2B4: 0x7B92, //CJK UNIFIED IDEOGRAPH - 0xE2B5: 0x7B8F, //CJK UNIFIED IDEOGRAPH - 0xE2B6: 0x7B5D, //CJK UNIFIED IDEOGRAPH - 0xE2B7: 0x7B99, //CJK UNIFIED IDEOGRAPH - 0xE2B8: 0x7BCB, //CJK UNIFIED IDEOGRAPH - 0xE2B9: 0x7BC1, //CJK UNIFIED IDEOGRAPH - 0xE2BA: 0x7BCC, //CJK UNIFIED IDEOGRAPH - 0xE2BB: 0x7BCF, //CJK UNIFIED IDEOGRAPH - 0xE2BC: 0x7BB4, //CJK UNIFIED IDEOGRAPH - 0xE2BD: 0x7BC6, //CJK UNIFIED IDEOGRAPH - 0xE2BE: 0x7BDD, //CJK UNIFIED IDEOGRAPH - 0xE2BF: 0x7BE9, //CJK UNIFIED IDEOGRAPH - 0xE2C0: 0x7C11, //CJK UNIFIED IDEOGRAPH - 0xE2C1: 0x7C14, //CJK UNIFIED IDEOGRAPH - 0xE2C2: 0x7BE6, //CJK UNIFIED IDEOGRAPH - 0xE2C3: 0x7BE5, //CJK UNIFIED IDEOGRAPH - 0xE2C4: 0x7C60, //CJK UNIFIED IDEOGRAPH - 0xE2C5: 0x7C00, //CJK UNIFIED IDEOGRAPH - 0xE2C6: 0x7C07, //CJK UNIFIED IDEOGRAPH - 0xE2C7: 0x7C13, //CJK UNIFIED IDEOGRAPH - 0xE2C8: 0x7BF3, //CJK UNIFIED IDEOGRAPH - 0xE2C9: 0x7BF7, //CJK UNIFIED IDEOGRAPH - 0xE2CA: 0x7C17, //CJK UNIFIED IDEOGRAPH - 0xE2CB: 0x7C0D, //CJK UNIFIED IDEOGRAPH - 0xE2CC: 0x7BF6, //CJK UNIFIED IDEOGRAPH - 0xE2CD: 0x7C23, //CJK UNIFIED IDEOGRAPH - 0xE2CE: 0x7C27, //CJK UNIFIED IDEOGRAPH - 0xE2CF: 0x7C2A, //CJK UNIFIED IDEOGRAPH - 0xE2D0: 0x7C1F, //CJK UNIFIED IDEOGRAPH - 0xE2D1: 0x7C37, //CJK UNIFIED IDEOGRAPH - 0xE2D2: 0x7C2B, //CJK UNIFIED IDEOGRAPH - 0xE2D3: 0x7C3D, //CJK UNIFIED IDEOGRAPH - 0xE2D4: 0x7C4C, //CJK UNIFIED IDEOGRAPH - 0xE2D5: 0x7C43, //CJK UNIFIED IDEOGRAPH - 0xE2D6: 0x7C54, //CJK UNIFIED IDEOGRAPH - 0xE2D7: 0x7C4F, //CJK UNIFIED IDEOGRAPH - 0xE2D8: 0x7C40, //CJK UNIFIED IDEOGRAPH - 0xE2D9: 0x7C50, //CJK UNIFIED IDEOGRAPH - 0xE2DA: 0x7C58, //CJK UNIFIED IDEOGRAPH - 0xE2DB: 0x7C5F, //CJK UNIFIED IDEOGRAPH - 0xE2DC: 0x7C64, //CJK UNIFIED IDEOGRAPH - 0xE2DD: 0x7C56, //CJK UNIFIED IDEOGRAPH - 0xE2DE: 0x7C65, //CJK UNIFIED IDEOGRAPH - 0xE2DF: 0x7C6C, //CJK UNIFIED IDEOGRAPH - 0xE2E0: 0x7C75, //CJK UNIFIED IDEOGRAPH - 0xE2E1: 0x7C83, //CJK UNIFIED IDEOGRAPH - 0xE2E2: 0x7C90, //CJK UNIFIED IDEOGRAPH - 0xE2E3: 0x7CA4, //CJK UNIFIED IDEOGRAPH - 0xE2E4: 0x7CAD, //CJK UNIFIED IDEOGRAPH - 0xE2E5: 0x7CA2, //CJK UNIFIED IDEOGRAPH - 0xE2E6: 0x7CAB, //CJK UNIFIED IDEOGRAPH - 0xE2E7: 0x7CA1, //CJK UNIFIED IDEOGRAPH - 0xE2E8: 0x7CA8, //CJK UNIFIED IDEOGRAPH - 0xE2E9: 0x7CB3, //CJK UNIFIED IDEOGRAPH - 0xE2EA: 0x7CB2, //CJK UNIFIED IDEOGRAPH - 0xE2EB: 0x7CB1, //CJK UNIFIED IDEOGRAPH - 0xE2EC: 0x7CAE, //CJK UNIFIED IDEOGRAPH - 0xE2ED: 0x7CB9, //CJK UNIFIED IDEOGRAPH - 0xE2EE: 0x7CBD, //CJK UNIFIED IDEOGRAPH - 0xE2EF: 0x7CC0, //CJK UNIFIED IDEOGRAPH - 0xE2F0: 0x7CC5, //CJK UNIFIED IDEOGRAPH - 0xE2F1: 0x7CC2, //CJK UNIFIED IDEOGRAPH - 0xE2F2: 0x7CD8, //CJK UNIFIED IDEOGRAPH - 0xE2F3: 0x7CD2, //CJK UNIFIED IDEOGRAPH - 0xE2F4: 0x7CDC, //CJK UNIFIED IDEOGRAPH - 0xE2F5: 0x7CE2, //CJK UNIFIED IDEOGRAPH - 0xE2F6: 0x9B3B, //CJK UNIFIED IDEOGRAPH - 0xE2F7: 0x7CEF, //CJK UNIFIED IDEOGRAPH - 0xE2F8: 0x7CF2, //CJK UNIFIED IDEOGRAPH - 0xE2F9: 0x7CF4, //CJK UNIFIED IDEOGRAPH - 0xE2FA: 0x7CF6, //CJK UNIFIED IDEOGRAPH - 0xE2FB: 0x7CFA, //CJK UNIFIED IDEOGRAPH - 0xE2FC: 0x7D06, //CJK UNIFIED IDEOGRAPH - 0xE340: 0x7D02, //CJK UNIFIED IDEOGRAPH - 0xE341: 0x7D1C, //CJK UNIFIED IDEOGRAPH - 0xE342: 0x7D15, //CJK UNIFIED IDEOGRAPH - 0xE343: 0x7D0A, //CJK UNIFIED IDEOGRAPH - 0xE344: 0x7D45, //CJK UNIFIED IDEOGRAPH - 0xE345: 0x7D4B, //CJK UNIFIED IDEOGRAPH - 0xE346: 0x7D2E, //CJK UNIFIED IDEOGRAPH - 0xE347: 0x7D32, //CJK UNIFIED IDEOGRAPH - 0xE348: 0x7D3F, //CJK UNIFIED IDEOGRAPH - 0xE349: 0x7D35, //CJK UNIFIED IDEOGRAPH - 0xE34A: 0x7D46, //CJK UNIFIED IDEOGRAPH - 0xE34B: 0x7D73, //CJK UNIFIED IDEOGRAPH - 0xE34C: 0x7D56, //CJK UNIFIED IDEOGRAPH - 0xE34D: 0x7D4E, //CJK UNIFIED IDEOGRAPH - 0xE34E: 0x7D72, //CJK UNIFIED IDEOGRAPH - 0xE34F: 0x7D68, //CJK UNIFIED IDEOGRAPH - 0xE350: 0x7D6E, //CJK UNIFIED IDEOGRAPH - 0xE351: 0x7D4F, //CJK UNIFIED IDEOGRAPH - 0xE352: 0x7D63, //CJK UNIFIED IDEOGRAPH - 0xE353: 0x7D93, //CJK UNIFIED IDEOGRAPH - 0xE354: 0x7D89, //CJK UNIFIED IDEOGRAPH - 0xE355: 0x7D5B, //CJK UNIFIED IDEOGRAPH - 0xE356: 0x7D8F, //CJK UNIFIED IDEOGRAPH - 0xE357: 0x7D7D, //CJK UNIFIED IDEOGRAPH - 0xE358: 0x7D9B, //CJK UNIFIED IDEOGRAPH - 0xE359: 0x7DBA, //CJK UNIFIED IDEOGRAPH - 0xE35A: 0x7DAE, //CJK UNIFIED IDEOGRAPH - 0xE35B: 0x7DA3, //CJK UNIFIED IDEOGRAPH - 0xE35C: 0x7DB5, //CJK UNIFIED IDEOGRAPH - 0xE35D: 0x7DC7, //CJK UNIFIED IDEOGRAPH - 0xE35E: 0x7DBD, //CJK UNIFIED IDEOGRAPH - 0xE35F: 0x7DAB, //CJK UNIFIED IDEOGRAPH - 0xE360: 0x7E3D, //CJK UNIFIED IDEOGRAPH - 0xE361: 0x7DA2, //CJK UNIFIED IDEOGRAPH - 0xE362: 0x7DAF, //CJK UNIFIED IDEOGRAPH - 0xE363: 0x7DDC, //CJK UNIFIED IDEOGRAPH - 0xE364: 0x7DB8, //CJK UNIFIED IDEOGRAPH - 0xE365: 0x7D9F, //CJK UNIFIED IDEOGRAPH - 0xE366: 0x7DB0, //CJK UNIFIED IDEOGRAPH - 0xE367: 0x7DD8, //CJK UNIFIED IDEOGRAPH - 0xE368: 0x7DDD, //CJK UNIFIED IDEOGRAPH - 0xE369: 0x7DE4, //CJK UNIFIED IDEOGRAPH - 0xE36A: 0x7DDE, //CJK UNIFIED IDEOGRAPH - 0xE36B: 0x7DFB, //CJK UNIFIED IDEOGRAPH - 0xE36C: 0x7DF2, //CJK UNIFIED IDEOGRAPH - 0xE36D: 0x7DE1, //CJK UNIFIED IDEOGRAPH - 0xE36E: 0x7E05, //CJK UNIFIED IDEOGRAPH - 0xE36F: 0x7E0A, //CJK UNIFIED IDEOGRAPH - 0xE370: 0x7E23, //CJK UNIFIED IDEOGRAPH - 0xE371: 0x7E21, //CJK UNIFIED IDEOGRAPH - 0xE372: 0x7E12, //CJK UNIFIED IDEOGRAPH - 0xE373: 0x7E31, //CJK UNIFIED IDEOGRAPH - 0xE374: 0x7E1F, //CJK UNIFIED IDEOGRAPH - 0xE375: 0x7E09, //CJK UNIFIED IDEOGRAPH - 0xE376: 0x7E0B, //CJK UNIFIED IDEOGRAPH - 0xE377: 0x7E22, //CJK UNIFIED IDEOGRAPH - 0xE378: 0x7E46, //CJK UNIFIED IDEOGRAPH - 0xE379: 0x7E66, //CJK UNIFIED IDEOGRAPH - 0xE37A: 0x7E3B, //CJK UNIFIED IDEOGRAPH - 0xE37B: 0x7E35, //CJK UNIFIED IDEOGRAPH - 0xE37C: 0x7E39, //CJK UNIFIED IDEOGRAPH - 0xE37D: 0x7E43, //CJK UNIFIED IDEOGRAPH - 0xE37E: 0x7E37, //CJK UNIFIED IDEOGRAPH - 0xE380: 0x7E32, //CJK UNIFIED IDEOGRAPH - 0xE381: 0x7E3A, //CJK UNIFIED IDEOGRAPH - 0xE382: 0x7E67, //CJK UNIFIED IDEOGRAPH - 0xE383: 0x7E5D, //CJK UNIFIED IDEOGRAPH - 0xE384: 0x7E56, //CJK UNIFIED IDEOGRAPH - 0xE385: 0x7E5E, //CJK UNIFIED IDEOGRAPH - 0xE386: 0x7E59, //CJK UNIFIED IDEOGRAPH - 0xE387: 0x7E5A, //CJK UNIFIED IDEOGRAPH - 0xE388: 0x7E79, //CJK UNIFIED IDEOGRAPH - 0xE389: 0x7E6A, //CJK UNIFIED IDEOGRAPH - 0xE38A: 0x7E69, //CJK UNIFIED IDEOGRAPH - 0xE38B: 0x7E7C, //CJK UNIFIED IDEOGRAPH - 0xE38C: 0x7E7B, //CJK UNIFIED IDEOGRAPH - 0xE38D: 0x7E83, //CJK UNIFIED IDEOGRAPH - 0xE38E: 0x7DD5, //CJK UNIFIED IDEOGRAPH - 0xE38F: 0x7E7D, //CJK UNIFIED IDEOGRAPH - 0xE390: 0x8FAE, //CJK UNIFIED IDEOGRAPH - 0xE391: 0x7E7F, //CJK UNIFIED IDEOGRAPH - 0xE392: 0x7E88, //CJK UNIFIED IDEOGRAPH - 0xE393: 0x7E89, //CJK UNIFIED IDEOGRAPH - 0xE394: 0x7E8C, //CJK UNIFIED IDEOGRAPH - 0xE395: 0x7E92, //CJK UNIFIED IDEOGRAPH - 0xE396: 0x7E90, //CJK UNIFIED IDEOGRAPH - 0xE397: 0x7E93, //CJK UNIFIED IDEOGRAPH - 0xE398: 0x7E94, //CJK UNIFIED IDEOGRAPH - 0xE399: 0x7E96, //CJK UNIFIED IDEOGRAPH - 0xE39A: 0x7E8E, //CJK UNIFIED IDEOGRAPH - 0xE39B: 0x7E9B, //CJK UNIFIED IDEOGRAPH - 0xE39C: 0x7E9C, //CJK UNIFIED IDEOGRAPH - 0xE39D: 0x7F38, //CJK UNIFIED IDEOGRAPH - 0xE39E: 0x7F3A, //CJK UNIFIED IDEOGRAPH - 0xE39F: 0x7F45, //CJK UNIFIED IDEOGRAPH - 0xE3A0: 0x7F4C, //CJK UNIFIED IDEOGRAPH - 0xE3A1: 0x7F4D, //CJK UNIFIED IDEOGRAPH - 0xE3A2: 0x7F4E, //CJK UNIFIED IDEOGRAPH - 0xE3A3: 0x7F50, //CJK UNIFIED IDEOGRAPH - 0xE3A4: 0x7F51, //CJK UNIFIED IDEOGRAPH - 0xE3A5: 0x7F55, //CJK UNIFIED IDEOGRAPH - 0xE3A6: 0x7F54, //CJK UNIFIED IDEOGRAPH - 0xE3A7: 0x7F58, //CJK UNIFIED IDEOGRAPH - 0xE3A8: 0x7F5F, //CJK UNIFIED IDEOGRAPH - 0xE3A9: 0x7F60, //CJK UNIFIED IDEOGRAPH - 0xE3AA: 0x7F68, //CJK UNIFIED IDEOGRAPH - 0xE3AB: 0x7F69, //CJK UNIFIED IDEOGRAPH - 0xE3AC: 0x7F67, //CJK UNIFIED IDEOGRAPH - 0xE3AD: 0x7F78, //CJK UNIFIED IDEOGRAPH - 0xE3AE: 0x7F82, //CJK UNIFIED IDEOGRAPH - 0xE3AF: 0x7F86, //CJK UNIFIED IDEOGRAPH - 0xE3B0: 0x7F83, //CJK UNIFIED IDEOGRAPH - 0xE3B1: 0x7F88, //CJK UNIFIED IDEOGRAPH - 0xE3B2: 0x7F87, //CJK UNIFIED IDEOGRAPH - 0xE3B3: 0x7F8C, //CJK UNIFIED IDEOGRAPH - 0xE3B4: 0x7F94, //CJK UNIFIED IDEOGRAPH - 0xE3B5: 0x7F9E, //CJK UNIFIED IDEOGRAPH - 0xE3B6: 0x7F9D, //CJK UNIFIED IDEOGRAPH - 0xE3B7: 0x7F9A, //CJK UNIFIED IDEOGRAPH - 0xE3B8: 0x7FA3, //CJK UNIFIED IDEOGRAPH - 0xE3B9: 0x7FAF, //CJK UNIFIED IDEOGRAPH - 0xE3BA: 0x7FB2, //CJK UNIFIED IDEOGRAPH - 0xE3BB: 0x7FB9, //CJK UNIFIED IDEOGRAPH - 0xE3BC: 0x7FAE, //CJK UNIFIED IDEOGRAPH - 0xE3BD: 0x7FB6, //CJK UNIFIED IDEOGRAPH - 0xE3BE: 0x7FB8, //CJK UNIFIED IDEOGRAPH - 0xE3BF: 0x8B71, //CJK UNIFIED IDEOGRAPH - 0xE3C0: 0x7FC5, //CJK UNIFIED IDEOGRAPH - 0xE3C1: 0x7FC6, //CJK UNIFIED IDEOGRAPH - 0xE3C2: 0x7FCA, //CJK UNIFIED IDEOGRAPH - 0xE3C3: 0x7FD5, //CJK UNIFIED IDEOGRAPH - 0xE3C4: 0x7FD4, //CJK UNIFIED IDEOGRAPH - 0xE3C5: 0x7FE1, //CJK UNIFIED IDEOGRAPH - 0xE3C6: 0x7FE6, //CJK UNIFIED IDEOGRAPH - 0xE3C7: 0x7FE9, //CJK UNIFIED IDEOGRAPH - 0xE3C8: 0x7FF3, //CJK UNIFIED IDEOGRAPH - 0xE3C9: 0x7FF9, //CJK UNIFIED IDEOGRAPH - 0xE3CA: 0x98DC, //CJK UNIFIED IDEOGRAPH - 0xE3CB: 0x8006, //CJK UNIFIED IDEOGRAPH - 0xE3CC: 0x8004, //CJK UNIFIED IDEOGRAPH - 0xE3CD: 0x800B, //CJK UNIFIED IDEOGRAPH - 0xE3CE: 0x8012, //CJK UNIFIED IDEOGRAPH - 0xE3CF: 0x8018, //CJK UNIFIED IDEOGRAPH - 0xE3D0: 0x8019, //CJK UNIFIED IDEOGRAPH - 0xE3D1: 0x801C, //CJK UNIFIED IDEOGRAPH - 0xE3D2: 0x8021, //CJK UNIFIED IDEOGRAPH - 0xE3D3: 0x8028, //CJK UNIFIED IDEOGRAPH - 0xE3D4: 0x803F, //CJK UNIFIED IDEOGRAPH - 0xE3D5: 0x803B, //CJK UNIFIED IDEOGRAPH - 0xE3D6: 0x804A, //CJK UNIFIED IDEOGRAPH - 0xE3D7: 0x8046, //CJK UNIFIED IDEOGRAPH - 0xE3D8: 0x8052, //CJK UNIFIED IDEOGRAPH - 0xE3D9: 0x8058, //CJK UNIFIED IDEOGRAPH - 0xE3DA: 0x805A, //CJK UNIFIED IDEOGRAPH - 0xE3DB: 0x805F, //CJK UNIFIED IDEOGRAPH - 0xE3DC: 0x8062, //CJK UNIFIED IDEOGRAPH - 0xE3DD: 0x8068, //CJK UNIFIED IDEOGRAPH - 0xE3DE: 0x8073, //CJK UNIFIED IDEOGRAPH - 0xE3DF: 0x8072, //CJK UNIFIED IDEOGRAPH - 0xE3E0: 0x8070, //CJK UNIFIED IDEOGRAPH - 0xE3E1: 0x8076, //CJK UNIFIED IDEOGRAPH - 0xE3E2: 0x8079, //CJK UNIFIED IDEOGRAPH - 0xE3E3: 0x807D, //CJK UNIFIED IDEOGRAPH - 0xE3E4: 0x807F, //CJK UNIFIED IDEOGRAPH - 0xE3E5: 0x8084, //CJK UNIFIED IDEOGRAPH - 0xE3E6: 0x8086, //CJK UNIFIED IDEOGRAPH - 0xE3E7: 0x8085, //CJK UNIFIED IDEOGRAPH - 0xE3E8: 0x809B, //CJK UNIFIED IDEOGRAPH - 0xE3E9: 0x8093, //CJK UNIFIED IDEOGRAPH - 0xE3EA: 0x809A, //CJK UNIFIED IDEOGRAPH - 0xE3EB: 0x80AD, //CJK UNIFIED IDEOGRAPH - 0xE3EC: 0x5190, //CJK UNIFIED IDEOGRAPH - 0xE3ED: 0x80AC, //CJK UNIFIED IDEOGRAPH - 0xE3EE: 0x80DB, //CJK UNIFIED IDEOGRAPH - 0xE3EF: 0x80E5, //CJK UNIFIED IDEOGRAPH - 0xE3F0: 0x80D9, //CJK UNIFIED IDEOGRAPH - 0xE3F1: 0x80DD, //CJK UNIFIED IDEOGRAPH - 0xE3F2: 0x80C4, //CJK UNIFIED IDEOGRAPH - 0xE3F3: 0x80DA, //CJK UNIFIED IDEOGRAPH - 0xE3F4: 0x80D6, //CJK UNIFIED IDEOGRAPH - 0xE3F5: 0x8109, //CJK UNIFIED IDEOGRAPH - 0xE3F6: 0x80EF, //CJK UNIFIED IDEOGRAPH - 0xE3F7: 0x80F1, //CJK UNIFIED IDEOGRAPH - 0xE3F8: 0x811B, //CJK UNIFIED IDEOGRAPH - 0xE3F9: 0x8129, //CJK UNIFIED IDEOGRAPH - 0xE3FA: 0x8123, //CJK UNIFIED IDEOGRAPH - 0xE3FB: 0x812F, //CJK UNIFIED IDEOGRAPH - 0xE3FC: 0x814B, //CJK UNIFIED IDEOGRAPH - 0xE440: 0x968B, //CJK UNIFIED IDEOGRAPH - 0xE441: 0x8146, //CJK UNIFIED IDEOGRAPH - 0xE442: 0x813E, //CJK UNIFIED IDEOGRAPH - 0xE443: 0x8153, //CJK UNIFIED IDEOGRAPH - 0xE444: 0x8151, //CJK UNIFIED IDEOGRAPH - 0xE445: 0x80FC, //CJK UNIFIED IDEOGRAPH - 0xE446: 0x8171, //CJK UNIFIED IDEOGRAPH - 0xE447: 0x816E, //CJK UNIFIED IDEOGRAPH - 0xE448: 0x8165, //CJK UNIFIED IDEOGRAPH - 0xE449: 0x8166, //CJK UNIFIED IDEOGRAPH - 0xE44A: 0x8174, //CJK UNIFIED IDEOGRAPH - 0xE44B: 0x8183, //CJK UNIFIED IDEOGRAPH - 0xE44C: 0x8188, //CJK UNIFIED IDEOGRAPH - 0xE44D: 0x818A, //CJK UNIFIED IDEOGRAPH - 0xE44E: 0x8180, //CJK UNIFIED IDEOGRAPH - 0xE44F: 0x8182, //CJK UNIFIED IDEOGRAPH - 0xE450: 0x81A0, //CJK UNIFIED IDEOGRAPH - 0xE451: 0x8195, //CJK UNIFIED IDEOGRAPH - 0xE452: 0x81A4, //CJK UNIFIED IDEOGRAPH - 0xE453: 0x81A3, //CJK UNIFIED IDEOGRAPH - 0xE454: 0x815F, //CJK UNIFIED IDEOGRAPH - 0xE455: 0x8193, //CJK UNIFIED IDEOGRAPH - 0xE456: 0x81A9, //CJK UNIFIED IDEOGRAPH - 0xE457: 0x81B0, //CJK UNIFIED IDEOGRAPH - 0xE458: 0x81B5, //CJK UNIFIED IDEOGRAPH - 0xE459: 0x81BE, //CJK UNIFIED IDEOGRAPH - 0xE45A: 0x81B8, //CJK UNIFIED IDEOGRAPH - 0xE45B: 0x81BD, //CJK UNIFIED IDEOGRAPH - 0xE45C: 0x81C0, //CJK UNIFIED IDEOGRAPH - 0xE45D: 0x81C2, //CJK UNIFIED IDEOGRAPH - 0xE45E: 0x81BA, //CJK UNIFIED IDEOGRAPH - 0xE45F: 0x81C9, //CJK UNIFIED IDEOGRAPH - 0xE460: 0x81CD, //CJK UNIFIED IDEOGRAPH - 0xE461: 0x81D1, //CJK UNIFIED IDEOGRAPH - 0xE462: 0x81D9, //CJK UNIFIED IDEOGRAPH - 0xE463: 0x81D8, //CJK UNIFIED IDEOGRAPH - 0xE464: 0x81C8, //CJK UNIFIED IDEOGRAPH - 0xE465: 0x81DA, //CJK UNIFIED IDEOGRAPH - 0xE466: 0x81DF, //CJK UNIFIED IDEOGRAPH - 0xE467: 0x81E0, //CJK UNIFIED IDEOGRAPH - 0xE468: 0x81E7, //CJK UNIFIED IDEOGRAPH - 0xE469: 0x81FA, //CJK UNIFIED IDEOGRAPH - 0xE46A: 0x81FB, //CJK UNIFIED IDEOGRAPH - 0xE46B: 0x81FE, //CJK UNIFIED IDEOGRAPH - 0xE46C: 0x8201, //CJK UNIFIED IDEOGRAPH - 0xE46D: 0x8202, //CJK UNIFIED IDEOGRAPH - 0xE46E: 0x8205, //CJK UNIFIED IDEOGRAPH - 0xE46F: 0x8207, //CJK UNIFIED IDEOGRAPH - 0xE470: 0x820A, //CJK UNIFIED IDEOGRAPH - 0xE471: 0x820D, //CJK UNIFIED IDEOGRAPH - 0xE472: 0x8210, //CJK UNIFIED IDEOGRAPH - 0xE473: 0x8216, //CJK UNIFIED IDEOGRAPH - 0xE474: 0x8229, //CJK UNIFIED IDEOGRAPH - 0xE475: 0x822B, //CJK UNIFIED IDEOGRAPH - 0xE476: 0x8238, //CJK UNIFIED IDEOGRAPH - 0xE477: 0x8233, //CJK UNIFIED IDEOGRAPH - 0xE478: 0x8240, //CJK UNIFIED IDEOGRAPH - 0xE479: 0x8259, //CJK UNIFIED IDEOGRAPH - 0xE47A: 0x8258, //CJK UNIFIED IDEOGRAPH - 0xE47B: 0x825D, //CJK UNIFIED IDEOGRAPH - 0xE47C: 0x825A, //CJK UNIFIED IDEOGRAPH - 0xE47D: 0x825F, //CJK UNIFIED IDEOGRAPH - 0xE47E: 0x8264, //CJK UNIFIED IDEOGRAPH - 0xE480: 0x8262, //CJK UNIFIED IDEOGRAPH - 0xE481: 0x8268, //CJK UNIFIED IDEOGRAPH - 0xE482: 0x826A, //CJK UNIFIED IDEOGRAPH - 0xE483: 0x826B, //CJK UNIFIED IDEOGRAPH - 0xE484: 0x822E, //CJK UNIFIED IDEOGRAPH - 0xE485: 0x8271, //CJK UNIFIED IDEOGRAPH - 0xE486: 0x8277, //CJK UNIFIED IDEOGRAPH - 0xE487: 0x8278, //CJK UNIFIED IDEOGRAPH - 0xE488: 0x827E, //CJK UNIFIED IDEOGRAPH - 0xE489: 0x828D, //CJK UNIFIED IDEOGRAPH - 0xE48A: 0x8292, //CJK UNIFIED IDEOGRAPH - 0xE48B: 0x82AB, //CJK UNIFIED IDEOGRAPH - 0xE48C: 0x829F, //CJK UNIFIED IDEOGRAPH - 0xE48D: 0x82BB, //CJK UNIFIED IDEOGRAPH - 0xE48E: 0x82AC, //CJK UNIFIED IDEOGRAPH - 0xE48F: 0x82E1, //CJK UNIFIED IDEOGRAPH - 0xE490: 0x82E3, //CJK UNIFIED IDEOGRAPH - 0xE491: 0x82DF, //CJK UNIFIED IDEOGRAPH - 0xE492: 0x82D2, //CJK UNIFIED IDEOGRAPH - 0xE493: 0x82F4, //CJK UNIFIED IDEOGRAPH - 0xE494: 0x82F3, //CJK UNIFIED IDEOGRAPH - 0xE495: 0x82FA, //CJK UNIFIED IDEOGRAPH - 0xE496: 0x8393, //CJK UNIFIED IDEOGRAPH - 0xE497: 0x8303, //CJK UNIFIED IDEOGRAPH - 0xE498: 0x82FB, //CJK UNIFIED IDEOGRAPH - 0xE499: 0x82F9, //CJK UNIFIED IDEOGRAPH - 0xE49A: 0x82DE, //CJK UNIFIED IDEOGRAPH - 0xE49B: 0x8306, //CJK UNIFIED IDEOGRAPH - 0xE49C: 0x82DC, //CJK UNIFIED IDEOGRAPH - 0xE49D: 0x8309, //CJK UNIFIED IDEOGRAPH - 0xE49E: 0x82D9, //CJK UNIFIED IDEOGRAPH - 0xE49F: 0x8335, //CJK UNIFIED IDEOGRAPH - 0xE4A0: 0x8334, //CJK UNIFIED IDEOGRAPH - 0xE4A1: 0x8316, //CJK UNIFIED IDEOGRAPH - 0xE4A2: 0x8332, //CJK UNIFIED IDEOGRAPH - 0xE4A3: 0x8331, //CJK UNIFIED IDEOGRAPH - 0xE4A4: 0x8340, //CJK UNIFIED IDEOGRAPH - 0xE4A5: 0x8339, //CJK UNIFIED IDEOGRAPH - 0xE4A6: 0x8350, //CJK UNIFIED IDEOGRAPH - 0xE4A7: 0x8345, //CJK UNIFIED IDEOGRAPH - 0xE4A8: 0x832F, //CJK UNIFIED IDEOGRAPH - 0xE4A9: 0x832B, //CJK UNIFIED IDEOGRAPH - 0xE4AA: 0x8317, //CJK UNIFIED IDEOGRAPH - 0xE4AB: 0x8318, //CJK UNIFIED IDEOGRAPH - 0xE4AC: 0x8385, //CJK UNIFIED IDEOGRAPH - 0xE4AD: 0x839A, //CJK UNIFIED IDEOGRAPH - 0xE4AE: 0x83AA, //CJK UNIFIED IDEOGRAPH - 0xE4AF: 0x839F, //CJK UNIFIED IDEOGRAPH - 0xE4B0: 0x83A2, //CJK UNIFIED IDEOGRAPH - 0xE4B1: 0x8396, //CJK UNIFIED IDEOGRAPH - 0xE4B2: 0x8323, //CJK UNIFIED IDEOGRAPH - 0xE4B3: 0x838E, //CJK UNIFIED IDEOGRAPH - 0xE4B4: 0x8387, //CJK UNIFIED IDEOGRAPH - 0xE4B5: 0x838A, //CJK UNIFIED IDEOGRAPH - 0xE4B6: 0x837C, //CJK UNIFIED IDEOGRAPH - 0xE4B7: 0x83B5, //CJK UNIFIED IDEOGRAPH - 0xE4B8: 0x8373, //CJK UNIFIED IDEOGRAPH - 0xE4B9: 0x8375, //CJK UNIFIED IDEOGRAPH - 0xE4BA: 0x83A0, //CJK UNIFIED IDEOGRAPH - 0xE4BB: 0x8389, //CJK UNIFIED IDEOGRAPH - 0xE4BC: 0x83A8, //CJK UNIFIED IDEOGRAPH - 0xE4BD: 0x83F4, //CJK UNIFIED IDEOGRAPH - 0xE4BE: 0x8413, //CJK UNIFIED IDEOGRAPH - 0xE4BF: 0x83EB, //CJK UNIFIED IDEOGRAPH - 0xE4C0: 0x83CE, //CJK UNIFIED IDEOGRAPH - 0xE4C1: 0x83FD, //CJK UNIFIED IDEOGRAPH - 0xE4C2: 0x8403, //CJK UNIFIED IDEOGRAPH - 0xE4C3: 0x83D8, //CJK UNIFIED IDEOGRAPH - 0xE4C4: 0x840B, //CJK UNIFIED IDEOGRAPH - 0xE4C5: 0x83C1, //CJK UNIFIED IDEOGRAPH - 0xE4C6: 0x83F7, //CJK UNIFIED IDEOGRAPH - 0xE4C7: 0x8407, //CJK UNIFIED IDEOGRAPH - 0xE4C8: 0x83E0, //CJK UNIFIED IDEOGRAPH - 0xE4C9: 0x83F2, //CJK UNIFIED IDEOGRAPH - 0xE4CA: 0x840D, //CJK UNIFIED IDEOGRAPH - 0xE4CB: 0x8422, //CJK UNIFIED IDEOGRAPH - 0xE4CC: 0x8420, //CJK UNIFIED IDEOGRAPH - 0xE4CD: 0x83BD, //CJK UNIFIED IDEOGRAPH - 0xE4CE: 0x8438, //CJK UNIFIED IDEOGRAPH - 0xE4CF: 0x8506, //CJK UNIFIED IDEOGRAPH - 0xE4D0: 0x83FB, //CJK UNIFIED IDEOGRAPH - 0xE4D1: 0x846D, //CJK UNIFIED IDEOGRAPH - 0xE4D2: 0x842A, //CJK UNIFIED IDEOGRAPH - 0xE4D3: 0x843C, //CJK UNIFIED IDEOGRAPH - 0xE4D4: 0x855A, //CJK UNIFIED IDEOGRAPH - 0xE4D5: 0x8484, //CJK UNIFIED IDEOGRAPH - 0xE4D6: 0x8477, //CJK UNIFIED IDEOGRAPH - 0xE4D7: 0x846B, //CJK UNIFIED IDEOGRAPH - 0xE4D8: 0x84AD, //CJK UNIFIED IDEOGRAPH - 0xE4D9: 0x846E, //CJK UNIFIED IDEOGRAPH - 0xE4DA: 0x8482, //CJK UNIFIED IDEOGRAPH - 0xE4DB: 0x8469, //CJK UNIFIED IDEOGRAPH - 0xE4DC: 0x8446, //CJK UNIFIED IDEOGRAPH - 0xE4DD: 0x842C, //CJK UNIFIED IDEOGRAPH - 0xE4DE: 0x846F, //CJK UNIFIED IDEOGRAPH - 0xE4DF: 0x8479, //CJK UNIFIED IDEOGRAPH - 0xE4E0: 0x8435, //CJK UNIFIED IDEOGRAPH - 0xE4E1: 0x84CA, //CJK UNIFIED IDEOGRAPH - 0xE4E2: 0x8462, //CJK UNIFIED IDEOGRAPH - 0xE4E3: 0x84B9, //CJK UNIFIED IDEOGRAPH - 0xE4E4: 0x84BF, //CJK UNIFIED IDEOGRAPH - 0xE4E5: 0x849F, //CJK UNIFIED IDEOGRAPH - 0xE4E6: 0x84D9, //CJK UNIFIED IDEOGRAPH - 0xE4E7: 0x84CD, //CJK UNIFIED IDEOGRAPH - 0xE4E8: 0x84BB, //CJK UNIFIED IDEOGRAPH - 0xE4E9: 0x84DA, //CJK UNIFIED IDEOGRAPH - 0xE4EA: 0x84D0, //CJK UNIFIED IDEOGRAPH - 0xE4EB: 0x84C1, //CJK UNIFIED IDEOGRAPH - 0xE4EC: 0x84C6, //CJK UNIFIED IDEOGRAPH - 0xE4ED: 0x84D6, //CJK UNIFIED IDEOGRAPH - 0xE4EE: 0x84A1, //CJK UNIFIED IDEOGRAPH - 0xE4EF: 0x8521, //CJK UNIFIED IDEOGRAPH - 0xE4F0: 0x84FF, //CJK UNIFIED IDEOGRAPH - 0xE4F1: 0x84F4, //CJK UNIFIED IDEOGRAPH - 0xE4F2: 0x8517, //CJK UNIFIED IDEOGRAPH - 0xE4F3: 0x8518, //CJK UNIFIED IDEOGRAPH - 0xE4F4: 0x852C, //CJK UNIFIED IDEOGRAPH - 0xE4F5: 0x851F, //CJK UNIFIED IDEOGRAPH - 0xE4F6: 0x8515, //CJK UNIFIED IDEOGRAPH - 0xE4F7: 0x8514, //CJK UNIFIED IDEOGRAPH - 0xE4F8: 0x84FC, //CJK UNIFIED IDEOGRAPH - 0xE4F9: 0x8540, //CJK UNIFIED IDEOGRAPH - 0xE4FA: 0x8563, //CJK UNIFIED IDEOGRAPH - 0xE4FB: 0x8558, //CJK UNIFIED IDEOGRAPH - 0xE4FC: 0x8548, //CJK UNIFIED IDEOGRAPH - 0xE540: 0x8541, //CJK UNIFIED IDEOGRAPH - 0xE541: 0x8602, //CJK UNIFIED IDEOGRAPH - 0xE542: 0x854B, //CJK UNIFIED IDEOGRAPH - 0xE543: 0x8555, //CJK UNIFIED IDEOGRAPH - 0xE544: 0x8580, //CJK UNIFIED IDEOGRAPH - 0xE545: 0x85A4, //CJK UNIFIED IDEOGRAPH - 0xE546: 0x8588, //CJK UNIFIED IDEOGRAPH - 0xE547: 0x8591, //CJK UNIFIED IDEOGRAPH - 0xE548: 0x858A, //CJK UNIFIED IDEOGRAPH - 0xE549: 0x85A8, //CJK UNIFIED IDEOGRAPH - 0xE54A: 0x856D, //CJK UNIFIED IDEOGRAPH - 0xE54B: 0x8594, //CJK UNIFIED IDEOGRAPH - 0xE54C: 0x859B, //CJK UNIFIED IDEOGRAPH - 0xE54D: 0x85EA, //CJK UNIFIED IDEOGRAPH - 0xE54E: 0x8587, //CJK UNIFIED IDEOGRAPH - 0xE54F: 0x859C, //CJK UNIFIED IDEOGRAPH - 0xE550: 0x8577, //CJK UNIFIED IDEOGRAPH - 0xE551: 0x857E, //CJK UNIFIED IDEOGRAPH - 0xE552: 0x8590, //CJK UNIFIED IDEOGRAPH - 0xE553: 0x85C9, //CJK UNIFIED IDEOGRAPH - 0xE554: 0x85BA, //CJK UNIFIED IDEOGRAPH - 0xE555: 0x85CF, //CJK UNIFIED IDEOGRAPH - 0xE556: 0x85B9, //CJK UNIFIED IDEOGRAPH - 0xE557: 0x85D0, //CJK UNIFIED IDEOGRAPH - 0xE558: 0x85D5, //CJK UNIFIED IDEOGRAPH - 0xE559: 0x85DD, //CJK UNIFIED IDEOGRAPH - 0xE55A: 0x85E5, //CJK UNIFIED IDEOGRAPH - 0xE55B: 0x85DC, //CJK UNIFIED IDEOGRAPH - 0xE55C: 0x85F9, //CJK UNIFIED IDEOGRAPH - 0xE55D: 0x860A, //CJK UNIFIED IDEOGRAPH - 0xE55E: 0x8613, //CJK UNIFIED IDEOGRAPH - 0xE55F: 0x860B, //CJK UNIFIED IDEOGRAPH - 0xE560: 0x85FE, //CJK UNIFIED IDEOGRAPH - 0xE561: 0x85FA, //CJK UNIFIED IDEOGRAPH - 0xE562: 0x8606, //CJK UNIFIED IDEOGRAPH - 0xE563: 0x8622, //CJK UNIFIED IDEOGRAPH - 0xE564: 0x861A, //CJK UNIFIED IDEOGRAPH - 0xE565: 0x8630, //CJK UNIFIED IDEOGRAPH - 0xE566: 0x863F, //CJK UNIFIED IDEOGRAPH - 0xE567: 0x864D, //CJK UNIFIED IDEOGRAPH - 0xE568: 0x4E55, //CJK UNIFIED IDEOGRAPH - 0xE569: 0x8654, //CJK UNIFIED IDEOGRAPH - 0xE56A: 0x865F, //CJK UNIFIED IDEOGRAPH - 0xE56B: 0x8667, //CJK UNIFIED IDEOGRAPH - 0xE56C: 0x8671, //CJK UNIFIED IDEOGRAPH - 0xE56D: 0x8693, //CJK UNIFIED IDEOGRAPH - 0xE56E: 0x86A3, //CJK UNIFIED IDEOGRAPH - 0xE56F: 0x86A9, //CJK UNIFIED IDEOGRAPH - 0xE570: 0x86AA, //CJK UNIFIED IDEOGRAPH - 0xE571: 0x868B, //CJK UNIFIED IDEOGRAPH - 0xE572: 0x868C, //CJK UNIFIED IDEOGRAPH - 0xE573: 0x86B6, //CJK UNIFIED IDEOGRAPH - 0xE574: 0x86AF, //CJK UNIFIED IDEOGRAPH - 0xE575: 0x86C4, //CJK UNIFIED IDEOGRAPH - 0xE576: 0x86C6, //CJK UNIFIED IDEOGRAPH - 0xE577: 0x86B0, //CJK UNIFIED IDEOGRAPH - 0xE578: 0x86C9, //CJK UNIFIED IDEOGRAPH - 0xE579: 0x8823, //CJK UNIFIED IDEOGRAPH - 0xE57A: 0x86AB, //CJK UNIFIED IDEOGRAPH - 0xE57B: 0x86D4, //CJK UNIFIED IDEOGRAPH - 0xE57C: 0x86DE, //CJK UNIFIED IDEOGRAPH - 0xE57D: 0x86E9, //CJK UNIFIED IDEOGRAPH - 0xE57E: 0x86EC, //CJK UNIFIED IDEOGRAPH - 0xE580: 0x86DF, //CJK UNIFIED IDEOGRAPH - 0xE581: 0x86DB, //CJK UNIFIED IDEOGRAPH - 0xE582: 0x86EF, //CJK UNIFIED IDEOGRAPH - 0xE583: 0x8712, //CJK UNIFIED IDEOGRAPH - 0xE584: 0x8706, //CJK UNIFIED IDEOGRAPH - 0xE585: 0x8708, //CJK UNIFIED IDEOGRAPH - 0xE586: 0x8700, //CJK UNIFIED IDEOGRAPH - 0xE587: 0x8703, //CJK UNIFIED IDEOGRAPH - 0xE588: 0x86FB, //CJK UNIFIED IDEOGRAPH - 0xE589: 0x8711, //CJK UNIFIED IDEOGRAPH - 0xE58A: 0x8709, //CJK UNIFIED IDEOGRAPH - 0xE58B: 0x870D, //CJK UNIFIED IDEOGRAPH - 0xE58C: 0x86F9, //CJK UNIFIED IDEOGRAPH - 0xE58D: 0x870A, //CJK UNIFIED IDEOGRAPH - 0xE58E: 0x8734, //CJK UNIFIED IDEOGRAPH - 0xE58F: 0x873F, //CJK UNIFIED IDEOGRAPH - 0xE590: 0x8737, //CJK UNIFIED IDEOGRAPH - 0xE591: 0x873B, //CJK UNIFIED IDEOGRAPH - 0xE592: 0x8725, //CJK UNIFIED IDEOGRAPH - 0xE593: 0x8729, //CJK UNIFIED IDEOGRAPH - 0xE594: 0x871A, //CJK UNIFIED IDEOGRAPH - 0xE595: 0x8760, //CJK UNIFIED IDEOGRAPH - 0xE596: 0x875F, //CJK UNIFIED IDEOGRAPH - 0xE597: 0x8778, //CJK UNIFIED IDEOGRAPH - 0xE598: 0x874C, //CJK UNIFIED IDEOGRAPH - 0xE599: 0x874E, //CJK UNIFIED IDEOGRAPH - 0xE59A: 0x8774, //CJK UNIFIED IDEOGRAPH - 0xE59B: 0x8757, //CJK UNIFIED IDEOGRAPH - 0xE59C: 0x8768, //CJK UNIFIED IDEOGRAPH - 0xE59D: 0x876E, //CJK UNIFIED IDEOGRAPH - 0xE59E: 0x8759, //CJK UNIFIED IDEOGRAPH - 0xE59F: 0x8753, //CJK UNIFIED IDEOGRAPH - 0xE5A0: 0x8763, //CJK UNIFIED IDEOGRAPH - 0xE5A1: 0x876A, //CJK UNIFIED IDEOGRAPH - 0xE5A2: 0x8805, //CJK UNIFIED IDEOGRAPH - 0xE5A3: 0x87A2, //CJK UNIFIED IDEOGRAPH - 0xE5A4: 0x879F, //CJK UNIFIED IDEOGRAPH - 0xE5A5: 0x8782, //CJK UNIFIED IDEOGRAPH - 0xE5A6: 0x87AF, //CJK UNIFIED IDEOGRAPH - 0xE5A7: 0x87CB, //CJK UNIFIED IDEOGRAPH - 0xE5A8: 0x87BD, //CJK UNIFIED IDEOGRAPH - 0xE5A9: 0x87C0, //CJK UNIFIED IDEOGRAPH - 0xE5AA: 0x87D0, //CJK UNIFIED IDEOGRAPH - 0xE5AB: 0x96D6, //CJK UNIFIED IDEOGRAPH - 0xE5AC: 0x87AB, //CJK UNIFIED IDEOGRAPH - 0xE5AD: 0x87C4, //CJK UNIFIED IDEOGRAPH - 0xE5AE: 0x87B3, //CJK UNIFIED IDEOGRAPH - 0xE5AF: 0x87C7, //CJK UNIFIED IDEOGRAPH - 0xE5B0: 0x87C6, //CJK UNIFIED IDEOGRAPH - 0xE5B1: 0x87BB, //CJK UNIFIED IDEOGRAPH - 0xE5B2: 0x87EF, //CJK UNIFIED IDEOGRAPH - 0xE5B3: 0x87F2, //CJK UNIFIED IDEOGRAPH - 0xE5B4: 0x87E0, //CJK UNIFIED IDEOGRAPH - 0xE5B5: 0x880F, //CJK UNIFIED IDEOGRAPH - 0xE5B6: 0x880D, //CJK UNIFIED IDEOGRAPH - 0xE5B7: 0x87FE, //CJK UNIFIED IDEOGRAPH - 0xE5B8: 0x87F6, //CJK UNIFIED IDEOGRAPH - 0xE5B9: 0x87F7, //CJK UNIFIED IDEOGRAPH - 0xE5BA: 0x880E, //CJK UNIFIED IDEOGRAPH - 0xE5BB: 0x87D2, //CJK UNIFIED IDEOGRAPH - 0xE5BC: 0x8811, //CJK UNIFIED IDEOGRAPH - 0xE5BD: 0x8816, //CJK UNIFIED IDEOGRAPH - 0xE5BE: 0x8815, //CJK UNIFIED IDEOGRAPH - 0xE5BF: 0x8822, //CJK UNIFIED IDEOGRAPH - 0xE5C0: 0x8821, //CJK UNIFIED IDEOGRAPH - 0xE5C1: 0x8831, //CJK UNIFIED IDEOGRAPH - 0xE5C2: 0x8836, //CJK UNIFIED IDEOGRAPH - 0xE5C3: 0x8839, //CJK UNIFIED IDEOGRAPH - 0xE5C4: 0x8827, //CJK UNIFIED IDEOGRAPH - 0xE5C5: 0x883B, //CJK UNIFIED IDEOGRAPH - 0xE5C6: 0x8844, //CJK UNIFIED IDEOGRAPH - 0xE5C7: 0x8842, //CJK UNIFIED IDEOGRAPH - 0xE5C8: 0x8852, //CJK UNIFIED IDEOGRAPH - 0xE5C9: 0x8859, //CJK UNIFIED IDEOGRAPH - 0xE5CA: 0x885E, //CJK UNIFIED IDEOGRAPH - 0xE5CB: 0x8862, //CJK UNIFIED IDEOGRAPH - 0xE5CC: 0x886B, //CJK UNIFIED IDEOGRAPH - 0xE5CD: 0x8881, //CJK UNIFIED IDEOGRAPH - 0xE5CE: 0x887E, //CJK UNIFIED IDEOGRAPH - 0xE5CF: 0x889E, //CJK UNIFIED IDEOGRAPH - 0xE5D0: 0x8875, //CJK UNIFIED IDEOGRAPH - 0xE5D1: 0x887D, //CJK UNIFIED IDEOGRAPH - 0xE5D2: 0x88B5, //CJK UNIFIED IDEOGRAPH - 0xE5D3: 0x8872, //CJK UNIFIED IDEOGRAPH - 0xE5D4: 0x8882, //CJK UNIFIED IDEOGRAPH - 0xE5D5: 0x8897, //CJK UNIFIED IDEOGRAPH - 0xE5D6: 0x8892, //CJK UNIFIED IDEOGRAPH - 0xE5D7: 0x88AE, //CJK UNIFIED IDEOGRAPH - 0xE5D8: 0x8899, //CJK UNIFIED IDEOGRAPH - 0xE5D9: 0x88A2, //CJK UNIFIED IDEOGRAPH - 0xE5DA: 0x888D, //CJK UNIFIED IDEOGRAPH - 0xE5DB: 0x88A4, //CJK UNIFIED IDEOGRAPH - 0xE5DC: 0x88B0, //CJK UNIFIED IDEOGRAPH - 0xE5DD: 0x88BF, //CJK UNIFIED IDEOGRAPH - 0xE5DE: 0x88B1, //CJK UNIFIED IDEOGRAPH - 0xE5DF: 0x88C3, //CJK UNIFIED IDEOGRAPH - 0xE5E0: 0x88C4, //CJK UNIFIED IDEOGRAPH - 0xE5E1: 0x88D4, //CJK UNIFIED IDEOGRAPH - 0xE5E2: 0x88D8, //CJK UNIFIED IDEOGRAPH - 0xE5E3: 0x88D9, //CJK UNIFIED IDEOGRAPH - 0xE5E4: 0x88DD, //CJK UNIFIED IDEOGRAPH - 0xE5E5: 0x88F9, //CJK UNIFIED IDEOGRAPH - 0xE5E6: 0x8902, //CJK UNIFIED IDEOGRAPH - 0xE5E7: 0x88FC, //CJK UNIFIED IDEOGRAPH - 0xE5E8: 0x88F4, //CJK UNIFIED IDEOGRAPH - 0xE5E9: 0x88E8, //CJK UNIFIED IDEOGRAPH - 0xE5EA: 0x88F2, //CJK UNIFIED IDEOGRAPH - 0xE5EB: 0x8904, //CJK UNIFIED IDEOGRAPH - 0xE5EC: 0x890C, //CJK UNIFIED IDEOGRAPH - 0xE5ED: 0x890A, //CJK UNIFIED IDEOGRAPH - 0xE5EE: 0x8913, //CJK UNIFIED IDEOGRAPH - 0xE5EF: 0x8943, //CJK UNIFIED IDEOGRAPH - 0xE5F0: 0x891E, //CJK UNIFIED IDEOGRAPH - 0xE5F1: 0x8925, //CJK UNIFIED IDEOGRAPH - 0xE5F2: 0x892A, //CJK UNIFIED IDEOGRAPH - 0xE5F3: 0x892B, //CJK UNIFIED IDEOGRAPH - 0xE5F4: 0x8941, //CJK UNIFIED IDEOGRAPH - 0xE5F5: 0x8944, //CJK UNIFIED IDEOGRAPH - 0xE5F6: 0x893B, //CJK UNIFIED IDEOGRAPH - 0xE5F7: 0x8936, //CJK UNIFIED IDEOGRAPH - 0xE5F8: 0x8938, //CJK UNIFIED IDEOGRAPH - 0xE5F9: 0x894C, //CJK UNIFIED IDEOGRAPH - 0xE5FA: 0x891D, //CJK UNIFIED IDEOGRAPH - 0xE5FB: 0x8960, //CJK UNIFIED IDEOGRAPH - 0xE5FC: 0x895E, //CJK UNIFIED IDEOGRAPH - 0xE640: 0x8966, //CJK UNIFIED IDEOGRAPH - 0xE641: 0x8964, //CJK UNIFIED IDEOGRAPH - 0xE642: 0x896D, //CJK UNIFIED IDEOGRAPH - 0xE643: 0x896A, //CJK UNIFIED IDEOGRAPH - 0xE644: 0x896F, //CJK UNIFIED IDEOGRAPH - 0xE645: 0x8974, //CJK UNIFIED IDEOGRAPH - 0xE646: 0x8977, //CJK UNIFIED IDEOGRAPH - 0xE647: 0x897E, //CJK UNIFIED IDEOGRAPH - 0xE648: 0x8983, //CJK UNIFIED IDEOGRAPH - 0xE649: 0x8988, //CJK UNIFIED IDEOGRAPH - 0xE64A: 0x898A, //CJK UNIFIED IDEOGRAPH - 0xE64B: 0x8993, //CJK UNIFIED IDEOGRAPH - 0xE64C: 0x8998, //CJK UNIFIED IDEOGRAPH - 0xE64D: 0x89A1, //CJK UNIFIED IDEOGRAPH - 0xE64E: 0x89A9, //CJK UNIFIED IDEOGRAPH - 0xE64F: 0x89A6, //CJK UNIFIED IDEOGRAPH - 0xE650: 0x89AC, //CJK UNIFIED IDEOGRAPH - 0xE651: 0x89AF, //CJK UNIFIED IDEOGRAPH - 0xE652: 0x89B2, //CJK UNIFIED IDEOGRAPH - 0xE653: 0x89BA, //CJK UNIFIED IDEOGRAPH - 0xE654: 0x89BD, //CJK UNIFIED IDEOGRAPH - 0xE655: 0x89BF, //CJK UNIFIED IDEOGRAPH - 0xE656: 0x89C0, //CJK UNIFIED IDEOGRAPH - 0xE657: 0x89DA, //CJK UNIFIED IDEOGRAPH - 0xE658: 0x89DC, //CJK UNIFIED IDEOGRAPH - 0xE659: 0x89DD, //CJK UNIFIED IDEOGRAPH - 0xE65A: 0x89E7, //CJK UNIFIED IDEOGRAPH - 0xE65B: 0x89F4, //CJK UNIFIED IDEOGRAPH - 0xE65C: 0x89F8, //CJK UNIFIED IDEOGRAPH - 0xE65D: 0x8A03, //CJK UNIFIED IDEOGRAPH - 0xE65E: 0x8A16, //CJK UNIFIED IDEOGRAPH - 0xE65F: 0x8A10, //CJK UNIFIED IDEOGRAPH - 0xE660: 0x8A0C, //CJK UNIFIED IDEOGRAPH - 0xE661: 0x8A1B, //CJK UNIFIED IDEOGRAPH - 0xE662: 0x8A1D, //CJK UNIFIED IDEOGRAPH - 0xE663: 0x8A25, //CJK UNIFIED IDEOGRAPH - 0xE664: 0x8A36, //CJK UNIFIED IDEOGRAPH - 0xE665: 0x8A41, //CJK UNIFIED IDEOGRAPH - 0xE666: 0x8A5B, //CJK UNIFIED IDEOGRAPH - 0xE667: 0x8A52, //CJK UNIFIED IDEOGRAPH - 0xE668: 0x8A46, //CJK UNIFIED IDEOGRAPH - 0xE669: 0x8A48, //CJK UNIFIED IDEOGRAPH - 0xE66A: 0x8A7C, //CJK UNIFIED IDEOGRAPH - 0xE66B: 0x8A6D, //CJK UNIFIED IDEOGRAPH - 0xE66C: 0x8A6C, //CJK UNIFIED IDEOGRAPH - 0xE66D: 0x8A62, //CJK UNIFIED IDEOGRAPH - 0xE66E: 0x8A85, //CJK UNIFIED IDEOGRAPH - 0xE66F: 0x8A82, //CJK UNIFIED IDEOGRAPH - 0xE670: 0x8A84, //CJK UNIFIED IDEOGRAPH - 0xE671: 0x8AA8, //CJK UNIFIED IDEOGRAPH - 0xE672: 0x8AA1, //CJK UNIFIED IDEOGRAPH - 0xE673: 0x8A91, //CJK UNIFIED IDEOGRAPH - 0xE674: 0x8AA5, //CJK UNIFIED IDEOGRAPH - 0xE675: 0x8AA6, //CJK UNIFIED IDEOGRAPH - 0xE676: 0x8A9A, //CJK UNIFIED IDEOGRAPH - 0xE677: 0x8AA3, //CJK UNIFIED IDEOGRAPH - 0xE678: 0x8AC4, //CJK UNIFIED IDEOGRAPH - 0xE679: 0x8ACD, //CJK UNIFIED IDEOGRAPH - 0xE67A: 0x8AC2, //CJK UNIFIED IDEOGRAPH - 0xE67B: 0x8ADA, //CJK UNIFIED IDEOGRAPH - 0xE67C: 0x8AEB, //CJK UNIFIED IDEOGRAPH - 0xE67D: 0x8AF3, //CJK UNIFIED IDEOGRAPH - 0xE67E: 0x8AE7, //CJK UNIFIED IDEOGRAPH - 0xE680: 0x8AE4, //CJK UNIFIED IDEOGRAPH - 0xE681: 0x8AF1, //CJK UNIFIED IDEOGRAPH - 0xE682: 0x8B14, //CJK UNIFIED IDEOGRAPH - 0xE683: 0x8AE0, //CJK UNIFIED IDEOGRAPH - 0xE684: 0x8AE2, //CJK UNIFIED IDEOGRAPH - 0xE685: 0x8AF7, //CJK UNIFIED IDEOGRAPH - 0xE686: 0x8ADE, //CJK UNIFIED IDEOGRAPH - 0xE687: 0x8ADB, //CJK UNIFIED IDEOGRAPH - 0xE688: 0x8B0C, //CJK UNIFIED IDEOGRAPH - 0xE689: 0x8B07, //CJK UNIFIED IDEOGRAPH - 0xE68A: 0x8B1A, //CJK UNIFIED IDEOGRAPH - 0xE68B: 0x8AE1, //CJK UNIFIED IDEOGRAPH - 0xE68C: 0x8B16, //CJK UNIFIED IDEOGRAPH - 0xE68D: 0x8B10, //CJK UNIFIED IDEOGRAPH - 0xE68E: 0x8B17, //CJK UNIFIED IDEOGRAPH - 0xE68F: 0x8B20, //CJK UNIFIED IDEOGRAPH - 0xE690: 0x8B33, //CJK UNIFIED IDEOGRAPH - 0xE691: 0x97AB, //CJK UNIFIED IDEOGRAPH - 0xE692: 0x8B26, //CJK UNIFIED IDEOGRAPH - 0xE693: 0x8B2B, //CJK UNIFIED IDEOGRAPH - 0xE694: 0x8B3E, //CJK UNIFIED IDEOGRAPH - 0xE695: 0x8B28, //CJK UNIFIED IDEOGRAPH - 0xE696: 0x8B41, //CJK UNIFIED IDEOGRAPH - 0xE697: 0x8B4C, //CJK UNIFIED IDEOGRAPH - 0xE698: 0x8B4F, //CJK UNIFIED IDEOGRAPH - 0xE699: 0x8B4E, //CJK UNIFIED IDEOGRAPH - 0xE69A: 0x8B49, //CJK UNIFIED IDEOGRAPH - 0xE69B: 0x8B56, //CJK UNIFIED IDEOGRAPH - 0xE69C: 0x8B5B, //CJK UNIFIED IDEOGRAPH - 0xE69D: 0x8B5A, //CJK UNIFIED IDEOGRAPH - 0xE69E: 0x8B6B, //CJK UNIFIED IDEOGRAPH - 0xE69F: 0x8B5F, //CJK UNIFIED IDEOGRAPH - 0xE6A0: 0x8B6C, //CJK UNIFIED IDEOGRAPH - 0xE6A1: 0x8B6F, //CJK UNIFIED IDEOGRAPH - 0xE6A2: 0x8B74, //CJK UNIFIED IDEOGRAPH - 0xE6A3: 0x8B7D, //CJK UNIFIED IDEOGRAPH - 0xE6A4: 0x8B80, //CJK UNIFIED IDEOGRAPH - 0xE6A5: 0x8B8C, //CJK UNIFIED IDEOGRAPH - 0xE6A6: 0x8B8E, //CJK UNIFIED IDEOGRAPH - 0xE6A7: 0x8B92, //CJK UNIFIED IDEOGRAPH - 0xE6A8: 0x8B93, //CJK UNIFIED IDEOGRAPH - 0xE6A9: 0x8B96, //CJK UNIFIED IDEOGRAPH - 0xE6AA: 0x8B99, //CJK UNIFIED IDEOGRAPH - 0xE6AB: 0x8B9A, //CJK UNIFIED IDEOGRAPH - 0xE6AC: 0x8C3A, //CJK UNIFIED IDEOGRAPH - 0xE6AD: 0x8C41, //CJK UNIFIED IDEOGRAPH - 0xE6AE: 0x8C3F, //CJK UNIFIED IDEOGRAPH - 0xE6AF: 0x8C48, //CJK UNIFIED IDEOGRAPH - 0xE6B0: 0x8C4C, //CJK UNIFIED IDEOGRAPH - 0xE6B1: 0x8C4E, //CJK UNIFIED IDEOGRAPH - 0xE6B2: 0x8C50, //CJK UNIFIED IDEOGRAPH - 0xE6B3: 0x8C55, //CJK UNIFIED IDEOGRAPH - 0xE6B4: 0x8C62, //CJK UNIFIED IDEOGRAPH - 0xE6B5: 0x8C6C, //CJK UNIFIED IDEOGRAPH - 0xE6B6: 0x8C78, //CJK UNIFIED IDEOGRAPH - 0xE6B7: 0x8C7A, //CJK UNIFIED IDEOGRAPH - 0xE6B8: 0x8C82, //CJK UNIFIED IDEOGRAPH - 0xE6B9: 0x8C89, //CJK UNIFIED IDEOGRAPH - 0xE6BA: 0x8C85, //CJK UNIFIED IDEOGRAPH - 0xE6BB: 0x8C8A, //CJK UNIFIED IDEOGRAPH - 0xE6BC: 0x8C8D, //CJK UNIFIED IDEOGRAPH - 0xE6BD: 0x8C8E, //CJK UNIFIED IDEOGRAPH - 0xE6BE: 0x8C94, //CJK UNIFIED IDEOGRAPH - 0xE6BF: 0x8C7C, //CJK UNIFIED IDEOGRAPH - 0xE6C0: 0x8C98, //CJK UNIFIED IDEOGRAPH - 0xE6C1: 0x621D, //CJK UNIFIED IDEOGRAPH - 0xE6C2: 0x8CAD, //CJK UNIFIED IDEOGRAPH - 0xE6C3: 0x8CAA, //CJK UNIFIED IDEOGRAPH - 0xE6C4: 0x8CBD, //CJK UNIFIED IDEOGRAPH - 0xE6C5: 0x8CB2, //CJK UNIFIED IDEOGRAPH - 0xE6C6: 0x8CB3, //CJK UNIFIED IDEOGRAPH - 0xE6C7: 0x8CAE, //CJK UNIFIED IDEOGRAPH - 0xE6C8: 0x8CB6, //CJK UNIFIED IDEOGRAPH - 0xE6C9: 0x8CC8, //CJK UNIFIED IDEOGRAPH - 0xE6CA: 0x8CC1, //CJK UNIFIED IDEOGRAPH - 0xE6CB: 0x8CE4, //CJK UNIFIED IDEOGRAPH - 0xE6CC: 0x8CE3, //CJK UNIFIED IDEOGRAPH - 0xE6CD: 0x8CDA, //CJK UNIFIED IDEOGRAPH - 0xE6CE: 0x8CFD, //CJK UNIFIED IDEOGRAPH - 0xE6CF: 0x8CFA, //CJK UNIFIED IDEOGRAPH - 0xE6D0: 0x8CFB, //CJK UNIFIED IDEOGRAPH - 0xE6D1: 0x8D04, //CJK UNIFIED IDEOGRAPH - 0xE6D2: 0x8D05, //CJK UNIFIED IDEOGRAPH - 0xE6D3: 0x8D0A, //CJK UNIFIED IDEOGRAPH - 0xE6D4: 0x8D07, //CJK UNIFIED IDEOGRAPH - 0xE6D5: 0x8D0F, //CJK UNIFIED IDEOGRAPH - 0xE6D6: 0x8D0D, //CJK UNIFIED IDEOGRAPH - 0xE6D7: 0x8D10, //CJK UNIFIED IDEOGRAPH - 0xE6D8: 0x9F4E, //CJK UNIFIED IDEOGRAPH - 0xE6D9: 0x8D13, //CJK UNIFIED IDEOGRAPH - 0xE6DA: 0x8CCD, //CJK UNIFIED IDEOGRAPH - 0xE6DB: 0x8D14, //CJK UNIFIED IDEOGRAPH - 0xE6DC: 0x8D16, //CJK UNIFIED IDEOGRAPH - 0xE6DD: 0x8D67, //CJK UNIFIED IDEOGRAPH - 0xE6DE: 0x8D6D, //CJK UNIFIED IDEOGRAPH - 0xE6DF: 0x8D71, //CJK UNIFIED IDEOGRAPH - 0xE6E0: 0x8D73, //CJK UNIFIED IDEOGRAPH - 0xE6E1: 0x8D81, //CJK UNIFIED IDEOGRAPH - 0xE6E2: 0x8D99, //CJK UNIFIED IDEOGRAPH - 0xE6E3: 0x8DC2, //CJK UNIFIED IDEOGRAPH - 0xE6E4: 0x8DBE, //CJK UNIFIED IDEOGRAPH - 0xE6E5: 0x8DBA, //CJK UNIFIED IDEOGRAPH - 0xE6E6: 0x8DCF, //CJK UNIFIED IDEOGRAPH - 0xE6E7: 0x8DDA, //CJK UNIFIED IDEOGRAPH - 0xE6E8: 0x8DD6, //CJK UNIFIED IDEOGRAPH - 0xE6E9: 0x8DCC, //CJK UNIFIED IDEOGRAPH - 0xE6EA: 0x8DDB, //CJK UNIFIED IDEOGRAPH - 0xE6EB: 0x8DCB, //CJK UNIFIED IDEOGRAPH - 0xE6EC: 0x8DEA, //CJK UNIFIED IDEOGRAPH - 0xE6ED: 0x8DEB, //CJK UNIFIED IDEOGRAPH - 0xE6EE: 0x8DDF, //CJK UNIFIED IDEOGRAPH - 0xE6EF: 0x8DE3, //CJK UNIFIED IDEOGRAPH - 0xE6F0: 0x8DFC, //CJK UNIFIED IDEOGRAPH - 0xE6F1: 0x8E08, //CJK UNIFIED IDEOGRAPH - 0xE6F2: 0x8E09, //CJK UNIFIED IDEOGRAPH - 0xE6F3: 0x8DFF, //CJK UNIFIED IDEOGRAPH - 0xE6F4: 0x8E1D, //CJK UNIFIED IDEOGRAPH - 0xE6F5: 0x8E1E, //CJK UNIFIED IDEOGRAPH - 0xE6F6: 0x8E10, //CJK UNIFIED IDEOGRAPH - 0xE6F7: 0x8E1F, //CJK UNIFIED IDEOGRAPH - 0xE6F8: 0x8E42, //CJK UNIFIED IDEOGRAPH - 0xE6F9: 0x8E35, //CJK UNIFIED IDEOGRAPH - 0xE6FA: 0x8E30, //CJK UNIFIED IDEOGRAPH - 0xE6FB: 0x8E34, //CJK UNIFIED IDEOGRAPH - 0xE6FC: 0x8E4A, //CJK UNIFIED IDEOGRAPH - 0xE740: 0x8E47, //CJK UNIFIED IDEOGRAPH - 0xE741: 0x8E49, //CJK UNIFIED IDEOGRAPH - 0xE742: 0x8E4C, //CJK UNIFIED IDEOGRAPH - 0xE743: 0x8E50, //CJK UNIFIED IDEOGRAPH - 0xE744: 0x8E48, //CJK UNIFIED IDEOGRAPH - 0xE745: 0x8E59, //CJK UNIFIED IDEOGRAPH - 0xE746: 0x8E64, //CJK UNIFIED IDEOGRAPH - 0xE747: 0x8E60, //CJK UNIFIED IDEOGRAPH - 0xE748: 0x8E2A, //CJK UNIFIED IDEOGRAPH - 0xE749: 0x8E63, //CJK UNIFIED IDEOGRAPH - 0xE74A: 0x8E55, //CJK UNIFIED IDEOGRAPH - 0xE74B: 0x8E76, //CJK UNIFIED IDEOGRAPH - 0xE74C: 0x8E72, //CJK UNIFIED IDEOGRAPH - 0xE74D: 0x8E7C, //CJK UNIFIED IDEOGRAPH - 0xE74E: 0x8E81, //CJK UNIFIED IDEOGRAPH - 0xE74F: 0x8E87, //CJK UNIFIED IDEOGRAPH - 0xE750: 0x8E85, //CJK UNIFIED IDEOGRAPH - 0xE751: 0x8E84, //CJK UNIFIED IDEOGRAPH - 0xE752: 0x8E8B, //CJK UNIFIED IDEOGRAPH - 0xE753: 0x8E8A, //CJK UNIFIED IDEOGRAPH - 0xE754: 0x8E93, //CJK UNIFIED IDEOGRAPH - 0xE755: 0x8E91, //CJK UNIFIED IDEOGRAPH - 0xE756: 0x8E94, //CJK UNIFIED IDEOGRAPH - 0xE757: 0x8E99, //CJK UNIFIED IDEOGRAPH - 0xE758: 0x8EAA, //CJK UNIFIED IDEOGRAPH - 0xE759: 0x8EA1, //CJK UNIFIED IDEOGRAPH - 0xE75A: 0x8EAC, //CJK UNIFIED IDEOGRAPH - 0xE75B: 0x8EB0, //CJK UNIFIED IDEOGRAPH - 0xE75C: 0x8EC6, //CJK UNIFIED IDEOGRAPH - 0xE75D: 0x8EB1, //CJK UNIFIED IDEOGRAPH - 0xE75E: 0x8EBE, //CJK UNIFIED IDEOGRAPH - 0xE75F: 0x8EC5, //CJK UNIFIED IDEOGRAPH - 0xE760: 0x8EC8, //CJK UNIFIED IDEOGRAPH - 0xE761: 0x8ECB, //CJK UNIFIED IDEOGRAPH - 0xE762: 0x8EDB, //CJK UNIFIED IDEOGRAPH - 0xE763: 0x8EE3, //CJK UNIFIED IDEOGRAPH - 0xE764: 0x8EFC, //CJK UNIFIED IDEOGRAPH - 0xE765: 0x8EFB, //CJK UNIFIED IDEOGRAPH - 0xE766: 0x8EEB, //CJK UNIFIED IDEOGRAPH - 0xE767: 0x8EFE, //CJK UNIFIED IDEOGRAPH - 0xE768: 0x8F0A, //CJK UNIFIED IDEOGRAPH - 0xE769: 0x8F05, //CJK UNIFIED IDEOGRAPH - 0xE76A: 0x8F15, //CJK UNIFIED IDEOGRAPH - 0xE76B: 0x8F12, //CJK UNIFIED IDEOGRAPH - 0xE76C: 0x8F19, //CJK UNIFIED IDEOGRAPH - 0xE76D: 0x8F13, //CJK UNIFIED IDEOGRAPH - 0xE76E: 0x8F1C, //CJK UNIFIED IDEOGRAPH - 0xE76F: 0x8F1F, //CJK UNIFIED IDEOGRAPH - 0xE770: 0x8F1B, //CJK UNIFIED IDEOGRAPH - 0xE771: 0x8F0C, //CJK UNIFIED IDEOGRAPH - 0xE772: 0x8F26, //CJK UNIFIED IDEOGRAPH - 0xE773: 0x8F33, //CJK UNIFIED IDEOGRAPH - 0xE774: 0x8F3B, //CJK UNIFIED IDEOGRAPH - 0xE775: 0x8F39, //CJK UNIFIED IDEOGRAPH - 0xE776: 0x8F45, //CJK UNIFIED IDEOGRAPH - 0xE777: 0x8F42, //CJK UNIFIED IDEOGRAPH - 0xE778: 0x8F3E, //CJK UNIFIED IDEOGRAPH - 0xE779: 0x8F4C, //CJK UNIFIED IDEOGRAPH - 0xE77A: 0x8F49, //CJK UNIFIED IDEOGRAPH - 0xE77B: 0x8F46, //CJK UNIFIED IDEOGRAPH - 0xE77C: 0x8F4E, //CJK UNIFIED IDEOGRAPH - 0xE77D: 0x8F57, //CJK UNIFIED IDEOGRAPH - 0xE77E: 0x8F5C, //CJK UNIFIED IDEOGRAPH - 0xE780: 0x8F62, //CJK UNIFIED IDEOGRAPH - 0xE781: 0x8F63, //CJK UNIFIED IDEOGRAPH - 0xE782: 0x8F64, //CJK UNIFIED IDEOGRAPH - 0xE783: 0x8F9C, //CJK UNIFIED IDEOGRAPH - 0xE784: 0x8F9F, //CJK UNIFIED IDEOGRAPH - 0xE785: 0x8FA3, //CJK UNIFIED IDEOGRAPH - 0xE786: 0x8FAD, //CJK UNIFIED IDEOGRAPH - 0xE787: 0x8FAF, //CJK UNIFIED IDEOGRAPH - 0xE788: 0x8FB7, //CJK UNIFIED IDEOGRAPH - 0xE789: 0x8FDA, //CJK UNIFIED IDEOGRAPH - 0xE78A: 0x8FE5, //CJK UNIFIED IDEOGRAPH - 0xE78B: 0x8FE2, //CJK UNIFIED IDEOGRAPH - 0xE78C: 0x8FEA, //CJK UNIFIED IDEOGRAPH - 0xE78D: 0x8FEF, //CJK UNIFIED IDEOGRAPH - 0xE78E: 0x9087, //CJK UNIFIED IDEOGRAPH - 0xE78F: 0x8FF4, //CJK UNIFIED IDEOGRAPH - 0xE790: 0x9005, //CJK UNIFIED IDEOGRAPH - 0xE791: 0x8FF9, //CJK UNIFIED IDEOGRAPH - 0xE792: 0x8FFA, //CJK UNIFIED IDEOGRAPH - 0xE793: 0x9011, //CJK UNIFIED IDEOGRAPH - 0xE794: 0x9015, //CJK UNIFIED IDEOGRAPH - 0xE795: 0x9021, //CJK UNIFIED IDEOGRAPH - 0xE796: 0x900D, //CJK UNIFIED IDEOGRAPH - 0xE797: 0x901E, //CJK UNIFIED IDEOGRAPH - 0xE798: 0x9016, //CJK UNIFIED IDEOGRAPH - 0xE799: 0x900B, //CJK UNIFIED IDEOGRAPH - 0xE79A: 0x9027, //CJK UNIFIED IDEOGRAPH - 0xE79B: 0x9036, //CJK UNIFIED IDEOGRAPH - 0xE79C: 0x9035, //CJK UNIFIED IDEOGRAPH - 0xE79D: 0x9039, //CJK UNIFIED IDEOGRAPH - 0xE79E: 0x8FF8, //CJK UNIFIED IDEOGRAPH - 0xE79F: 0x904F, //CJK UNIFIED IDEOGRAPH - 0xE7A0: 0x9050, //CJK UNIFIED IDEOGRAPH - 0xE7A1: 0x9051, //CJK UNIFIED IDEOGRAPH - 0xE7A2: 0x9052, //CJK UNIFIED IDEOGRAPH - 0xE7A3: 0x900E, //CJK UNIFIED IDEOGRAPH - 0xE7A4: 0x9049, //CJK UNIFIED IDEOGRAPH - 0xE7A5: 0x903E, //CJK UNIFIED IDEOGRAPH - 0xE7A6: 0x9056, //CJK UNIFIED IDEOGRAPH - 0xE7A7: 0x9058, //CJK UNIFIED IDEOGRAPH - 0xE7A8: 0x905E, //CJK UNIFIED IDEOGRAPH - 0xE7A9: 0x9068, //CJK UNIFIED IDEOGRAPH - 0xE7AA: 0x906F, //CJK UNIFIED IDEOGRAPH - 0xE7AB: 0x9076, //CJK UNIFIED IDEOGRAPH - 0xE7AC: 0x96A8, //CJK UNIFIED IDEOGRAPH - 0xE7AD: 0x9072, //CJK UNIFIED IDEOGRAPH - 0xE7AE: 0x9082, //CJK UNIFIED IDEOGRAPH - 0xE7AF: 0x907D, //CJK UNIFIED IDEOGRAPH - 0xE7B0: 0x9081, //CJK UNIFIED IDEOGRAPH - 0xE7B1: 0x9080, //CJK UNIFIED IDEOGRAPH - 0xE7B2: 0x908A, //CJK UNIFIED IDEOGRAPH - 0xE7B3: 0x9089, //CJK UNIFIED IDEOGRAPH - 0xE7B4: 0x908F, //CJK UNIFIED IDEOGRAPH - 0xE7B5: 0x90A8, //CJK UNIFIED IDEOGRAPH - 0xE7B6: 0x90AF, //CJK UNIFIED IDEOGRAPH - 0xE7B7: 0x90B1, //CJK UNIFIED IDEOGRAPH - 0xE7B8: 0x90B5, //CJK UNIFIED IDEOGRAPH - 0xE7B9: 0x90E2, //CJK UNIFIED IDEOGRAPH - 0xE7BA: 0x90E4, //CJK UNIFIED IDEOGRAPH - 0xE7BB: 0x6248, //CJK UNIFIED IDEOGRAPH - 0xE7BC: 0x90DB, //CJK UNIFIED IDEOGRAPH - 0xE7BD: 0x9102, //CJK UNIFIED IDEOGRAPH - 0xE7BE: 0x9112, //CJK UNIFIED IDEOGRAPH - 0xE7BF: 0x9119, //CJK UNIFIED IDEOGRAPH - 0xE7C0: 0x9132, //CJK UNIFIED IDEOGRAPH - 0xE7C1: 0x9130, //CJK UNIFIED IDEOGRAPH - 0xE7C2: 0x914A, //CJK UNIFIED IDEOGRAPH - 0xE7C3: 0x9156, //CJK UNIFIED IDEOGRAPH - 0xE7C4: 0x9158, //CJK UNIFIED IDEOGRAPH - 0xE7C5: 0x9163, //CJK UNIFIED IDEOGRAPH - 0xE7C6: 0x9165, //CJK UNIFIED IDEOGRAPH - 0xE7C7: 0x9169, //CJK UNIFIED IDEOGRAPH - 0xE7C8: 0x9173, //CJK UNIFIED IDEOGRAPH - 0xE7C9: 0x9172, //CJK UNIFIED IDEOGRAPH - 0xE7CA: 0x918B, //CJK UNIFIED IDEOGRAPH - 0xE7CB: 0x9189, //CJK UNIFIED IDEOGRAPH - 0xE7CC: 0x9182, //CJK UNIFIED IDEOGRAPH - 0xE7CD: 0x91A2, //CJK UNIFIED IDEOGRAPH - 0xE7CE: 0x91AB, //CJK UNIFIED IDEOGRAPH - 0xE7CF: 0x91AF, //CJK UNIFIED IDEOGRAPH - 0xE7D0: 0x91AA, //CJK UNIFIED IDEOGRAPH - 0xE7D1: 0x91B5, //CJK UNIFIED IDEOGRAPH - 0xE7D2: 0x91B4, //CJK UNIFIED IDEOGRAPH - 0xE7D3: 0x91BA, //CJK UNIFIED IDEOGRAPH - 0xE7D4: 0x91C0, //CJK UNIFIED IDEOGRAPH - 0xE7D5: 0x91C1, //CJK UNIFIED IDEOGRAPH - 0xE7D6: 0x91C9, //CJK UNIFIED IDEOGRAPH - 0xE7D7: 0x91CB, //CJK UNIFIED IDEOGRAPH - 0xE7D8: 0x91D0, //CJK UNIFIED IDEOGRAPH - 0xE7D9: 0x91D6, //CJK UNIFIED IDEOGRAPH - 0xE7DA: 0x91DF, //CJK UNIFIED IDEOGRAPH - 0xE7DB: 0x91E1, //CJK UNIFIED IDEOGRAPH - 0xE7DC: 0x91DB, //CJK UNIFIED IDEOGRAPH - 0xE7DD: 0x91FC, //CJK UNIFIED IDEOGRAPH - 0xE7DE: 0x91F5, //CJK UNIFIED IDEOGRAPH - 0xE7DF: 0x91F6, //CJK UNIFIED IDEOGRAPH - 0xE7E0: 0x921E, //CJK UNIFIED IDEOGRAPH - 0xE7E1: 0x91FF, //CJK UNIFIED IDEOGRAPH - 0xE7E2: 0x9214, //CJK UNIFIED IDEOGRAPH - 0xE7E3: 0x922C, //CJK UNIFIED IDEOGRAPH - 0xE7E4: 0x9215, //CJK UNIFIED IDEOGRAPH - 0xE7E5: 0x9211, //CJK UNIFIED IDEOGRAPH - 0xE7E6: 0x925E, //CJK UNIFIED IDEOGRAPH - 0xE7E7: 0x9257, //CJK UNIFIED IDEOGRAPH - 0xE7E8: 0x9245, //CJK UNIFIED IDEOGRAPH - 0xE7E9: 0x9249, //CJK UNIFIED IDEOGRAPH - 0xE7EA: 0x9264, //CJK UNIFIED IDEOGRAPH - 0xE7EB: 0x9248, //CJK UNIFIED IDEOGRAPH - 0xE7EC: 0x9295, //CJK UNIFIED IDEOGRAPH - 0xE7ED: 0x923F, //CJK UNIFIED IDEOGRAPH - 0xE7EE: 0x924B, //CJK UNIFIED IDEOGRAPH - 0xE7EF: 0x9250, //CJK UNIFIED IDEOGRAPH - 0xE7F0: 0x929C, //CJK UNIFIED IDEOGRAPH - 0xE7F1: 0x9296, //CJK UNIFIED IDEOGRAPH - 0xE7F2: 0x9293, //CJK UNIFIED IDEOGRAPH - 0xE7F3: 0x929B, //CJK UNIFIED IDEOGRAPH - 0xE7F4: 0x925A, //CJK UNIFIED IDEOGRAPH - 0xE7F5: 0x92CF, //CJK UNIFIED IDEOGRAPH - 0xE7F6: 0x92B9, //CJK UNIFIED IDEOGRAPH - 0xE7F7: 0x92B7, //CJK UNIFIED IDEOGRAPH - 0xE7F8: 0x92E9, //CJK UNIFIED IDEOGRAPH - 0xE7F9: 0x930F, //CJK UNIFIED IDEOGRAPH - 0xE7FA: 0x92FA, //CJK UNIFIED IDEOGRAPH - 0xE7FB: 0x9344, //CJK UNIFIED IDEOGRAPH - 0xE7FC: 0x932E, //CJK UNIFIED IDEOGRAPH - 0xE840: 0x9319, //CJK UNIFIED IDEOGRAPH - 0xE841: 0x9322, //CJK UNIFIED IDEOGRAPH - 0xE842: 0x931A, //CJK UNIFIED IDEOGRAPH - 0xE843: 0x9323, //CJK UNIFIED IDEOGRAPH - 0xE844: 0x933A, //CJK UNIFIED IDEOGRAPH - 0xE845: 0x9335, //CJK UNIFIED IDEOGRAPH - 0xE846: 0x933B, //CJK UNIFIED IDEOGRAPH - 0xE847: 0x935C, //CJK UNIFIED IDEOGRAPH - 0xE848: 0x9360, //CJK UNIFIED IDEOGRAPH - 0xE849: 0x937C, //CJK UNIFIED IDEOGRAPH - 0xE84A: 0x936E, //CJK UNIFIED IDEOGRAPH - 0xE84B: 0x9356, //CJK UNIFIED IDEOGRAPH - 0xE84C: 0x93B0, //CJK UNIFIED IDEOGRAPH - 0xE84D: 0x93AC, //CJK UNIFIED IDEOGRAPH - 0xE84E: 0x93AD, //CJK UNIFIED IDEOGRAPH - 0xE84F: 0x9394, //CJK UNIFIED IDEOGRAPH - 0xE850: 0x93B9, //CJK UNIFIED IDEOGRAPH - 0xE851: 0x93D6, //CJK UNIFIED IDEOGRAPH - 0xE852: 0x93D7, //CJK UNIFIED IDEOGRAPH - 0xE853: 0x93E8, //CJK UNIFIED IDEOGRAPH - 0xE854: 0x93E5, //CJK UNIFIED IDEOGRAPH - 0xE855: 0x93D8, //CJK UNIFIED IDEOGRAPH - 0xE856: 0x93C3, //CJK UNIFIED IDEOGRAPH - 0xE857: 0x93DD, //CJK UNIFIED IDEOGRAPH - 0xE858: 0x93D0, //CJK UNIFIED IDEOGRAPH - 0xE859: 0x93C8, //CJK UNIFIED IDEOGRAPH - 0xE85A: 0x93E4, //CJK UNIFIED IDEOGRAPH - 0xE85B: 0x941A, //CJK UNIFIED IDEOGRAPH - 0xE85C: 0x9414, //CJK UNIFIED IDEOGRAPH - 0xE85D: 0x9413, //CJK UNIFIED IDEOGRAPH - 0xE85E: 0x9403, //CJK UNIFIED IDEOGRAPH - 0xE85F: 0x9407, //CJK UNIFIED IDEOGRAPH - 0xE860: 0x9410, //CJK UNIFIED IDEOGRAPH - 0xE861: 0x9436, //CJK UNIFIED IDEOGRAPH - 0xE862: 0x942B, //CJK UNIFIED IDEOGRAPH - 0xE863: 0x9435, //CJK UNIFIED IDEOGRAPH - 0xE864: 0x9421, //CJK UNIFIED IDEOGRAPH - 0xE865: 0x943A, //CJK UNIFIED IDEOGRAPH - 0xE866: 0x9441, //CJK UNIFIED IDEOGRAPH - 0xE867: 0x9452, //CJK UNIFIED IDEOGRAPH - 0xE868: 0x9444, //CJK UNIFIED IDEOGRAPH - 0xE869: 0x945B, //CJK UNIFIED IDEOGRAPH - 0xE86A: 0x9460, //CJK UNIFIED IDEOGRAPH - 0xE86B: 0x9462, //CJK UNIFIED IDEOGRAPH - 0xE86C: 0x945E, //CJK UNIFIED IDEOGRAPH - 0xE86D: 0x946A, //CJK UNIFIED IDEOGRAPH - 0xE86E: 0x9229, //CJK UNIFIED IDEOGRAPH - 0xE86F: 0x9470, //CJK UNIFIED IDEOGRAPH - 0xE870: 0x9475, //CJK UNIFIED IDEOGRAPH - 0xE871: 0x9477, //CJK UNIFIED IDEOGRAPH - 0xE872: 0x947D, //CJK UNIFIED IDEOGRAPH - 0xE873: 0x945A, //CJK UNIFIED IDEOGRAPH - 0xE874: 0x947C, //CJK UNIFIED IDEOGRAPH - 0xE875: 0x947E, //CJK UNIFIED IDEOGRAPH - 0xE876: 0x9481, //CJK UNIFIED IDEOGRAPH - 0xE877: 0x947F, //CJK UNIFIED IDEOGRAPH - 0xE878: 0x9582, //CJK UNIFIED IDEOGRAPH - 0xE879: 0x9587, //CJK UNIFIED IDEOGRAPH - 0xE87A: 0x958A, //CJK UNIFIED IDEOGRAPH - 0xE87B: 0x9594, //CJK UNIFIED IDEOGRAPH - 0xE87C: 0x9596, //CJK UNIFIED IDEOGRAPH - 0xE87D: 0x9598, //CJK UNIFIED IDEOGRAPH - 0xE87E: 0x9599, //CJK UNIFIED IDEOGRAPH - 0xE880: 0x95A0, //CJK UNIFIED IDEOGRAPH - 0xE881: 0x95A8, //CJK UNIFIED IDEOGRAPH - 0xE882: 0x95A7, //CJK UNIFIED IDEOGRAPH - 0xE883: 0x95AD, //CJK UNIFIED IDEOGRAPH - 0xE884: 0x95BC, //CJK UNIFIED IDEOGRAPH - 0xE885: 0x95BB, //CJK UNIFIED IDEOGRAPH - 0xE886: 0x95B9, //CJK UNIFIED IDEOGRAPH - 0xE887: 0x95BE, //CJK UNIFIED IDEOGRAPH - 0xE888: 0x95CA, //CJK UNIFIED IDEOGRAPH - 0xE889: 0x6FF6, //CJK UNIFIED IDEOGRAPH - 0xE88A: 0x95C3, //CJK UNIFIED IDEOGRAPH - 0xE88B: 0x95CD, //CJK UNIFIED IDEOGRAPH - 0xE88C: 0x95CC, //CJK UNIFIED IDEOGRAPH - 0xE88D: 0x95D5, //CJK UNIFIED IDEOGRAPH - 0xE88E: 0x95D4, //CJK UNIFIED IDEOGRAPH - 0xE88F: 0x95D6, //CJK UNIFIED IDEOGRAPH - 0xE890: 0x95DC, //CJK UNIFIED IDEOGRAPH - 0xE891: 0x95E1, //CJK UNIFIED IDEOGRAPH - 0xE892: 0x95E5, //CJK UNIFIED IDEOGRAPH - 0xE893: 0x95E2, //CJK UNIFIED IDEOGRAPH - 0xE894: 0x9621, //CJK UNIFIED IDEOGRAPH - 0xE895: 0x9628, //CJK UNIFIED IDEOGRAPH - 0xE896: 0x962E, //CJK UNIFIED IDEOGRAPH - 0xE897: 0x962F, //CJK UNIFIED IDEOGRAPH - 0xE898: 0x9642, //CJK UNIFIED IDEOGRAPH - 0xE899: 0x964C, //CJK UNIFIED IDEOGRAPH - 0xE89A: 0x964F, //CJK UNIFIED IDEOGRAPH - 0xE89B: 0x964B, //CJK UNIFIED IDEOGRAPH - 0xE89C: 0x9677, //CJK UNIFIED IDEOGRAPH - 0xE89D: 0x965C, //CJK UNIFIED IDEOGRAPH - 0xE89E: 0x965E, //CJK UNIFIED IDEOGRAPH - 0xE89F: 0x965D, //CJK UNIFIED IDEOGRAPH - 0xE8A0: 0x965F, //CJK UNIFIED IDEOGRAPH - 0xE8A1: 0x9666, //CJK UNIFIED IDEOGRAPH - 0xE8A2: 0x9672, //CJK UNIFIED IDEOGRAPH - 0xE8A3: 0x966C, //CJK UNIFIED IDEOGRAPH - 0xE8A4: 0x968D, //CJK UNIFIED IDEOGRAPH - 0xE8A5: 0x9698, //CJK UNIFIED IDEOGRAPH - 0xE8A6: 0x9695, //CJK UNIFIED IDEOGRAPH - 0xE8A7: 0x9697, //CJK UNIFIED IDEOGRAPH - 0xE8A8: 0x96AA, //CJK UNIFIED IDEOGRAPH - 0xE8A9: 0x96A7, //CJK UNIFIED IDEOGRAPH - 0xE8AA: 0x96B1, //CJK UNIFIED IDEOGRAPH - 0xE8AB: 0x96B2, //CJK UNIFIED IDEOGRAPH - 0xE8AC: 0x96B0, //CJK UNIFIED IDEOGRAPH - 0xE8AD: 0x96B4, //CJK UNIFIED IDEOGRAPH - 0xE8AE: 0x96B6, //CJK UNIFIED IDEOGRAPH - 0xE8AF: 0x96B8, //CJK UNIFIED IDEOGRAPH - 0xE8B0: 0x96B9, //CJK UNIFIED IDEOGRAPH - 0xE8B1: 0x96CE, //CJK UNIFIED IDEOGRAPH - 0xE8B2: 0x96CB, //CJK UNIFIED IDEOGRAPH - 0xE8B3: 0x96C9, //CJK UNIFIED IDEOGRAPH - 0xE8B4: 0x96CD, //CJK UNIFIED IDEOGRAPH - 0xE8B5: 0x894D, //CJK UNIFIED IDEOGRAPH - 0xE8B6: 0x96DC, //CJK UNIFIED IDEOGRAPH - 0xE8B7: 0x970D, //CJK UNIFIED IDEOGRAPH - 0xE8B8: 0x96D5, //CJK UNIFIED IDEOGRAPH - 0xE8B9: 0x96F9, //CJK UNIFIED IDEOGRAPH - 0xE8BA: 0x9704, //CJK UNIFIED IDEOGRAPH - 0xE8BB: 0x9706, //CJK UNIFIED IDEOGRAPH - 0xE8BC: 0x9708, //CJK UNIFIED IDEOGRAPH - 0xE8BD: 0x9713, //CJK UNIFIED IDEOGRAPH - 0xE8BE: 0x970E, //CJK UNIFIED IDEOGRAPH - 0xE8BF: 0x9711, //CJK UNIFIED IDEOGRAPH - 0xE8C0: 0x970F, //CJK UNIFIED IDEOGRAPH - 0xE8C1: 0x9716, //CJK UNIFIED IDEOGRAPH - 0xE8C2: 0x9719, //CJK UNIFIED IDEOGRAPH - 0xE8C3: 0x9724, //CJK UNIFIED IDEOGRAPH - 0xE8C4: 0x972A, //CJK UNIFIED IDEOGRAPH - 0xE8C5: 0x9730, //CJK UNIFIED IDEOGRAPH - 0xE8C6: 0x9739, //CJK UNIFIED IDEOGRAPH - 0xE8C7: 0x973D, //CJK UNIFIED IDEOGRAPH - 0xE8C8: 0x973E, //CJK UNIFIED IDEOGRAPH - 0xE8C9: 0x9744, //CJK UNIFIED IDEOGRAPH - 0xE8CA: 0x9746, //CJK UNIFIED IDEOGRAPH - 0xE8CB: 0x9748, //CJK UNIFIED IDEOGRAPH - 0xE8CC: 0x9742, //CJK UNIFIED IDEOGRAPH - 0xE8CD: 0x9749, //CJK UNIFIED IDEOGRAPH - 0xE8CE: 0x975C, //CJK UNIFIED IDEOGRAPH - 0xE8CF: 0x9760, //CJK UNIFIED IDEOGRAPH - 0xE8D0: 0x9764, //CJK UNIFIED IDEOGRAPH - 0xE8D1: 0x9766, //CJK UNIFIED IDEOGRAPH - 0xE8D2: 0x9768, //CJK UNIFIED IDEOGRAPH - 0xE8D3: 0x52D2, //CJK UNIFIED IDEOGRAPH - 0xE8D4: 0x976B, //CJK UNIFIED IDEOGRAPH - 0xE8D5: 0x9771, //CJK UNIFIED IDEOGRAPH - 0xE8D6: 0x9779, //CJK UNIFIED IDEOGRAPH - 0xE8D7: 0x9785, //CJK UNIFIED IDEOGRAPH - 0xE8D8: 0x977C, //CJK UNIFIED IDEOGRAPH - 0xE8D9: 0x9781, //CJK UNIFIED IDEOGRAPH - 0xE8DA: 0x977A, //CJK UNIFIED IDEOGRAPH - 0xE8DB: 0x9786, //CJK UNIFIED IDEOGRAPH - 0xE8DC: 0x978B, //CJK UNIFIED IDEOGRAPH - 0xE8DD: 0x978F, //CJK UNIFIED IDEOGRAPH - 0xE8DE: 0x9790, //CJK UNIFIED IDEOGRAPH - 0xE8DF: 0x979C, //CJK UNIFIED IDEOGRAPH - 0xE8E0: 0x97A8, //CJK UNIFIED IDEOGRAPH - 0xE8E1: 0x97A6, //CJK UNIFIED IDEOGRAPH - 0xE8E2: 0x97A3, //CJK UNIFIED IDEOGRAPH - 0xE8E3: 0x97B3, //CJK UNIFIED IDEOGRAPH - 0xE8E4: 0x97B4, //CJK UNIFIED IDEOGRAPH - 0xE8E5: 0x97C3, //CJK UNIFIED IDEOGRAPH - 0xE8E6: 0x97C6, //CJK UNIFIED IDEOGRAPH - 0xE8E7: 0x97C8, //CJK UNIFIED IDEOGRAPH - 0xE8E8: 0x97CB, //CJK UNIFIED IDEOGRAPH - 0xE8E9: 0x97DC, //CJK UNIFIED IDEOGRAPH - 0xE8EA: 0x97ED, //CJK UNIFIED IDEOGRAPH - 0xE8EB: 0x9F4F, //CJK UNIFIED IDEOGRAPH - 0xE8EC: 0x97F2, //CJK UNIFIED IDEOGRAPH - 0xE8ED: 0x7ADF, //CJK UNIFIED IDEOGRAPH - 0xE8EE: 0x97F6, //CJK UNIFIED IDEOGRAPH - 0xE8EF: 0x97F5, //CJK UNIFIED IDEOGRAPH - 0xE8F0: 0x980F, //CJK UNIFIED IDEOGRAPH - 0xE8F1: 0x980C, //CJK UNIFIED IDEOGRAPH - 0xE8F2: 0x9838, //CJK UNIFIED IDEOGRAPH - 0xE8F3: 0x9824, //CJK UNIFIED IDEOGRAPH - 0xE8F4: 0x9821, //CJK UNIFIED IDEOGRAPH - 0xE8F5: 0x9837, //CJK UNIFIED IDEOGRAPH - 0xE8F6: 0x983D, //CJK UNIFIED IDEOGRAPH - 0xE8F7: 0x9846, //CJK UNIFIED IDEOGRAPH - 0xE8F8: 0x984F, //CJK UNIFIED IDEOGRAPH - 0xE8F9: 0x984B, //CJK UNIFIED IDEOGRAPH - 0xE8FA: 0x986B, //CJK UNIFIED IDEOGRAPH - 0xE8FB: 0x986F, //CJK UNIFIED IDEOGRAPH - 0xE8FC: 0x9870, //CJK UNIFIED IDEOGRAPH - 0xE940: 0x9871, //CJK UNIFIED IDEOGRAPH - 0xE941: 0x9874, //CJK UNIFIED IDEOGRAPH - 0xE942: 0x9873, //CJK UNIFIED IDEOGRAPH - 0xE943: 0x98AA, //CJK UNIFIED IDEOGRAPH - 0xE944: 0x98AF, //CJK UNIFIED IDEOGRAPH - 0xE945: 0x98B1, //CJK UNIFIED IDEOGRAPH - 0xE946: 0x98B6, //CJK UNIFIED IDEOGRAPH - 0xE947: 0x98C4, //CJK UNIFIED IDEOGRAPH - 0xE948: 0x98C3, //CJK UNIFIED IDEOGRAPH - 0xE949: 0x98C6, //CJK UNIFIED IDEOGRAPH - 0xE94A: 0x98E9, //CJK UNIFIED IDEOGRAPH - 0xE94B: 0x98EB, //CJK UNIFIED IDEOGRAPH - 0xE94C: 0x9903, //CJK UNIFIED IDEOGRAPH - 0xE94D: 0x9909, //CJK UNIFIED IDEOGRAPH - 0xE94E: 0x9912, //CJK UNIFIED IDEOGRAPH - 0xE94F: 0x9914, //CJK UNIFIED IDEOGRAPH - 0xE950: 0x9918, //CJK UNIFIED IDEOGRAPH - 0xE951: 0x9921, //CJK UNIFIED IDEOGRAPH - 0xE952: 0x991D, //CJK UNIFIED IDEOGRAPH - 0xE953: 0x991E, //CJK UNIFIED IDEOGRAPH - 0xE954: 0x9924, //CJK UNIFIED IDEOGRAPH - 0xE955: 0x9920, //CJK UNIFIED IDEOGRAPH - 0xE956: 0x992C, //CJK UNIFIED IDEOGRAPH - 0xE957: 0x992E, //CJK UNIFIED IDEOGRAPH - 0xE958: 0x993D, //CJK UNIFIED IDEOGRAPH - 0xE959: 0x993E, //CJK UNIFIED IDEOGRAPH - 0xE95A: 0x9942, //CJK UNIFIED IDEOGRAPH - 0xE95B: 0x9949, //CJK UNIFIED IDEOGRAPH - 0xE95C: 0x9945, //CJK UNIFIED IDEOGRAPH - 0xE95D: 0x9950, //CJK UNIFIED IDEOGRAPH - 0xE95E: 0x994B, //CJK UNIFIED IDEOGRAPH - 0xE95F: 0x9951, //CJK UNIFIED IDEOGRAPH - 0xE960: 0x9952, //CJK UNIFIED IDEOGRAPH - 0xE961: 0x994C, //CJK UNIFIED IDEOGRAPH - 0xE962: 0x9955, //CJK UNIFIED IDEOGRAPH - 0xE963: 0x9997, //CJK UNIFIED IDEOGRAPH - 0xE964: 0x9998, //CJK UNIFIED IDEOGRAPH - 0xE965: 0x99A5, //CJK UNIFIED IDEOGRAPH - 0xE966: 0x99AD, //CJK UNIFIED IDEOGRAPH - 0xE967: 0x99AE, //CJK UNIFIED IDEOGRAPH - 0xE968: 0x99BC, //CJK UNIFIED IDEOGRAPH - 0xE969: 0x99DF, //CJK UNIFIED IDEOGRAPH - 0xE96A: 0x99DB, //CJK UNIFIED IDEOGRAPH - 0xE96B: 0x99DD, //CJK UNIFIED IDEOGRAPH - 0xE96C: 0x99D8, //CJK UNIFIED IDEOGRAPH - 0xE96D: 0x99D1, //CJK UNIFIED IDEOGRAPH - 0xE96E: 0x99ED, //CJK UNIFIED IDEOGRAPH - 0xE96F: 0x99EE, //CJK UNIFIED IDEOGRAPH - 0xE970: 0x99F1, //CJK UNIFIED IDEOGRAPH - 0xE971: 0x99F2, //CJK UNIFIED IDEOGRAPH - 0xE972: 0x99FB, //CJK UNIFIED IDEOGRAPH - 0xE973: 0x99F8, //CJK UNIFIED IDEOGRAPH - 0xE974: 0x9A01, //CJK UNIFIED IDEOGRAPH - 0xE975: 0x9A0F, //CJK UNIFIED IDEOGRAPH - 0xE976: 0x9A05, //CJK UNIFIED IDEOGRAPH - 0xE977: 0x99E2, //CJK UNIFIED IDEOGRAPH - 0xE978: 0x9A19, //CJK UNIFIED IDEOGRAPH - 0xE979: 0x9A2B, //CJK UNIFIED IDEOGRAPH - 0xE97A: 0x9A37, //CJK UNIFIED IDEOGRAPH - 0xE97B: 0x9A45, //CJK UNIFIED IDEOGRAPH - 0xE97C: 0x9A42, //CJK UNIFIED IDEOGRAPH - 0xE97D: 0x9A40, //CJK UNIFIED IDEOGRAPH - 0xE97E: 0x9A43, //CJK UNIFIED IDEOGRAPH - 0xE980: 0x9A3E, //CJK UNIFIED IDEOGRAPH - 0xE981: 0x9A55, //CJK UNIFIED IDEOGRAPH - 0xE982: 0x9A4D, //CJK UNIFIED IDEOGRAPH - 0xE983: 0x9A5B, //CJK UNIFIED IDEOGRAPH - 0xE984: 0x9A57, //CJK UNIFIED IDEOGRAPH - 0xE985: 0x9A5F, //CJK UNIFIED IDEOGRAPH - 0xE986: 0x9A62, //CJK UNIFIED IDEOGRAPH - 0xE987: 0x9A65, //CJK UNIFIED IDEOGRAPH - 0xE988: 0x9A64, //CJK UNIFIED IDEOGRAPH - 0xE989: 0x9A69, //CJK UNIFIED IDEOGRAPH - 0xE98A: 0x9A6B, //CJK UNIFIED IDEOGRAPH - 0xE98B: 0x9A6A, //CJK UNIFIED IDEOGRAPH - 0xE98C: 0x9AAD, //CJK UNIFIED IDEOGRAPH - 0xE98D: 0x9AB0, //CJK UNIFIED IDEOGRAPH - 0xE98E: 0x9ABC, //CJK UNIFIED IDEOGRAPH - 0xE98F: 0x9AC0, //CJK UNIFIED IDEOGRAPH - 0xE990: 0x9ACF, //CJK UNIFIED IDEOGRAPH - 0xE991: 0x9AD1, //CJK UNIFIED IDEOGRAPH - 0xE992: 0x9AD3, //CJK UNIFIED IDEOGRAPH - 0xE993: 0x9AD4, //CJK UNIFIED IDEOGRAPH - 0xE994: 0x9ADE, //CJK UNIFIED IDEOGRAPH - 0xE995: 0x9ADF, //CJK UNIFIED IDEOGRAPH - 0xE996: 0x9AE2, //CJK UNIFIED IDEOGRAPH - 0xE997: 0x9AE3, //CJK UNIFIED IDEOGRAPH - 0xE998: 0x9AE6, //CJK UNIFIED IDEOGRAPH - 0xE999: 0x9AEF, //CJK UNIFIED IDEOGRAPH - 0xE99A: 0x9AEB, //CJK UNIFIED IDEOGRAPH - 0xE99B: 0x9AEE, //CJK UNIFIED IDEOGRAPH - 0xE99C: 0x9AF4, //CJK UNIFIED IDEOGRAPH - 0xE99D: 0x9AF1, //CJK UNIFIED IDEOGRAPH - 0xE99E: 0x9AF7, //CJK UNIFIED IDEOGRAPH - 0xE99F: 0x9AFB, //CJK UNIFIED IDEOGRAPH - 0xE9A0: 0x9B06, //CJK UNIFIED IDEOGRAPH - 0xE9A1: 0x9B18, //CJK UNIFIED IDEOGRAPH - 0xE9A2: 0x9B1A, //CJK UNIFIED IDEOGRAPH - 0xE9A3: 0x9B1F, //CJK UNIFIED IDEOGRAPH - 0xE9A4: 0x9B22, //CJK UNIFIED IDEOGRAPH - 0xE9A5: 0x9B23, //CJK UNIFIED IDEOGRAPH - 0xE9A6: 0x9B25, //CJK UNIFIED IDEOGRAPH - 0xE9A7: 0x9B27, //CJK UNIFIED IDEOGRAPH - 0xE9A8: 0x9B28, //CJK UNIFIED IDEOGRAPH - 0xE9A9: 0x9B29, //CJK UNIFIED IDEOGRAPH - 0xE9AA: 0x9B2A, //CJK UNIFIED IDEOGRAPH - 0xE9AB: 0x9B2E, //CJK UNIFIED IDEOGRAPH - 0xE9AC: 0x9B2F, //CJK UNIFIED IDEOGRAPH - 0xE9AD: 0x9B32, //CJK UNIFIED IDEOGRAPH - 0xE9AE: 0x9B44, //CJK UNIFIED IDEOGRAPH - 0xE9AF: 0x9B43, //CJK UNIFIED IDEOGRAPH - 0xE9B0: 0x9B4F, //CJK UNIFIED IDEOGRAPH - 0xE9B1: 0x9B4D, //CJK UNIFIED IDEOGRAPH - 0xE9B2: 0x9B4E, //CJK UNIFIED IDEOGRAPH - 0xE9B3: 0x9B51, //CJK UNIFIED IDEOGRAPH - 0xE9B4: 0x9B58, //CJK UNIFIED IDEOGRAPH - 0xE9B5: 0x9B74, //CJK UNIFIED IDEOGRAPH - 0xE9B6: 0x9B93, //CJK UNIFIED IDEOGRAPH - 0xE9B7: 0x9B83, //CJK UNIFIED IDEOGRAPH - 0xE9B8: 0x9B91, //CJK UNIFIED IDEOGRAPH - 0xE9B9: 0x9B96, //CJK UNIFIED IDEOGRAPH - 0xE9BA: 0x9B97, //CJK UNIFIED IDEOGRAPH - 0xE9BB: 0x9B9F, //CJK UNIFIED IDEOGRAPH - 0xE9BC: 0x9BA0, //CJK UNIFIED IDEOGRAPH - 0xE9BD: 0x9BA8, //CJK UNIFIED IDEOGRAPH - 0xE9BE: 0x9BB4, //CJK UNIFIED IDEOGRAPH - 0xE9BF: 0x9BC0, //CJK UNIFIED IDEOGRAPH - 0xE9C0: 0x9BCA, //CJK UNIFIED IDEOGRAPH - 0xE9C1: 0x9BB9, //CJK UNIFIED IDEOGRAPH - 0xE9C2: 0x9BC6, //CJK UNIFIED IDEOGRAPH - 0xE9C3: 0x9BCF, //CJK UNIFIED IDEOGRAPH - 0xE9C4: 0x9BD1, //CJK UNIFIED IDEOGRAPH - 0xE9C5: 0x9BD2, //CJK UNIFIED IDEOGRAPH - 0xE9C6: 0x9BE3, //CJK UNIFIED IDEOGRAPH - 0xE9C7: 0x9BE2, //CJK UNIFIED IDEOGRAPH - 0xE9C8: 0x9BE4, //CJK UNIFIED IDEOGRAPH - 0xE9C9: 0x9BD4, //CJK UNIFIED IDEOGRAPH - 0xE9CA: 0x9BE1, //CJK UNIFIED IDEOGRAPH - 0xE9CB: 0x9C3A, //CJK UNIFIED IDEOGRAPH - 0xE9CC: 0x9BF2, //CJK UNIFIED IDEOGRAPH - 0xE9CD: 0x9BF1, //CJK UNIFIED IDEOGRAPH - 0xE9CE: 0x9BF0, //CJK UNIFIED IDEOGRAPH - 0xE9CF: 0x9C15, //CJK UNIFIED IDEOGRAPH - 0xE9D0: 0x9C14, //CJK UNIFIED IDEOGRAPH - 0xE9D1: 0x9C09, //CJK UNIFIED IDEOGRAPH - 0xE9D2: 0x9C13, //CJK UNIFIED IDEOGRAPH - 0xE9D3: 0x9C0C, //CJK UNIFIED IDEOGRAPH - 0xE9D4: 0x9C06, //CJK UNIFIED IDEOGRAPH - 0xE9D5: 0x9C08, //CJK UNIFIED IDEOGRAPH - 0xE9D6: 0x9C12, //CJK UNIFIED IDEOGRAPH - 0xE9D7: 0x9C0A, //CJK UNIFIED IDEOGRAPH - 0xE9D8: 0x9C04, //CJK UNIFIED IDEOGRAPH - 0xE9D9: 0x9C2E, //CJK UNIFIED IDEOGRAPH - 0xE9DA: 0x9C1B, //CJK UNIFIED IDEOGRAPH - 0xE9DB: 0x9C25, //CJK UNIFIED IDEOGRAPH - 0xE9DC: 0x9C24, //CJK UNIFIED IDEOGRAPH - 0xE9DD: 0x9C21, //CJK UNIFIED IDEOGRAPH - 0xE9DE: 0x9C30, //CJK UNIFIED IDEOGRAPH - 0xE9DF: 0x9C47, //CJK UNIFIED IDEOGRAPH - 0xE9E0: 0x9C32, //CJK UNIFIED IDEOGRAPH - 0xE9E1: 0x9C46, //CJK UNIFIED IDEOGRAPH - 0xE9E2: 0x9C3E, //CJK UNIFIED IDEOGRAPH - 0xE9E3: 0x9C5A, //CJK UNIFIED IDEOGRAPH - 0xE9E4: 0x9C60, //CJK UNIFIED IDEOGRAPH - 0xE9E5: 0x9C67, //CJK UNIFIED IDEOGRAPH - 0xE9E6: 0x9C76, //CJK UNIFIED IDEOGRAPH - 0xE9E7: 0x9C78, //CJK UNIFIED IDEOGRAPH - 0xE9E8: 0x9CE7, //CJK UNIFIED IDEOGRAPH - 0xE9E9: 0x9CEC, //CJK UNIFIED IDEOGRAPH - 0xE9EA: 0x9CF0, //CJK UNIFIED IDEOGRAPH - 0xE9EB: 0x9D09, //CJK UNIFIED IDEOGRAPH - 0xE9EC: 0x9D08, //CJK UNIFIED IDEOGRAPH - 0xE9ED: 0x9CEB, //CJK UNIFIED IDEOGRAPH - 0xE9EE: 0x9D03, //CJK UNIFIED IDEOGRAPH - 0xE9EF: 0x9D06, //CJK UNIFIED IDEOGRAPH - 0xE9F0: 0x9D2A, //CJK UNIFIED IDEOGRAPH - 0xE9F1: 0x9D26, //CJK UNIFIED IDEOGRAPH - 0xE9F2: 0x9DAF, //CJK UNIFIED IDEOGRAPH - 0xE9F3: 0x9D23, //CJK UNIFIED IDEOGRAPH - 0xE9F4: 0x9D1F, //CJK UNIFIED IDEOGRAPH - 0xE9F5: 0x9D44, //CJK UNIFIED IDEOGRAPH - 0xE9F6: 0x9D15, //CJK UNIFIED IDEOGRAPH - 0xE9F7: 0x9D12, //CJK UNIFIED IDEOGRAPH - 0xE9F8: 0x9D41, //CJK UNIFIED IDEOGRAPH - 0xE9F9: 0x9D3F, //CJK UNIFIED IDEOGRAPH - 0xE9FA: 0x9D3E, //CJK UNIFIED IDEOGRAPH - 0xE9FB: 0x9D46, //CJK UNIFIED IDEOGRAPH - 0xE9FC: 0x9D48, //CJK UNIFIED IDEOGRAPH - 0xEA40: 0x9D5D, //CJK UNIFIED IDEOGRAPH - 0xEA41: 0x9D5E, //CJK UNIFIED IDEOGRAPH - 0xEA42: 0x9D64, //CJK UNIFIED IDEOGRAPH - 0xEA43: 0x9D51, //CJK UNIFIED IDEOGRAPH - 0xEA44: 0x9D50, //CJK UNIFIED IDEOGRAPH - 0xEA45: 0x9D59, //CJK UNIFIED IDEOGRAPH - 0xEA46: 0x9D72, //CJK UNIFIED IDEOGRAPH - 0xEA47: 0x9D89, //CJK UNIFIED IDEOGRAPH - 0xEA48: 0x9D87, //CJK UNIFIED IDEOGRAPH - 0xEA49: 0x9DAB, //CJK UNIFIED IDEOGRAPH - 0xEA4A: 0x9D6F, //CJK UNIFIED IDEOGRAPH - 0xEA4B: 0x9D7A, //CJK UNIFIED IDEOGRAPH - 0xEA4C: 0x9D9A, //CJK UNIFIED IDEOGRAPH - 0xEA4D: 0x9DA4, //CJK UNIFIED IDEOGRAPH - 0xEA4E: 0x9DA9, //CJK UNIFIED IDEOGRAPH - 0xEA4F: 0x9DB2, //CJK UNIFIED IDEOGRAPH - 0xEA50: 0x9DC4, //CJK UNIFIED IDEOGRAPH - 0xEA51: 0x9DC1, //CJK UNIFIED IDEOGRAPH - 0xEA52: 0x9DBB, //CJK UNIFIED IDEOGRAPH - 0xEA53: 0x9DB8, //CJK UNIFIED IDEOGRAPH - 0xEA54: 0x9DBA, //CJK UNIFIED IDEOGRAPH - 0xEA55: 0x9DC6, //CJK UNIFIED IDEOGRAPH - 0xEA56: 0x9DCF, //CJK UNIFIED IDEOGRAPH - 0xEA57: 0x9DC2, //CJK UNIFIED IDEOGRAPH - 0xEA58: 0x9DD9, //CJK UNIFIED IDEOGRAPH - 0xEA59: 0x9DD3, //CJK UNIFIED IDEOGRAPH - 0xEA5A: 0x9DF8, //CJK UNIFIED IDEOGRAPH - 0xEA5B: 0x9DE6, //CJK UNIFIED IDEOGRAPH - 0xEA5C: 0x9DED, //CJK UNIFIED IDEOGRAPH - 0xEA5D: 0x9DEF, //CJK UNIFIED IDEOGRAPH - 0xEA5E: 0x9DFD, //CJK UNIFIED IDEOGRAPH - 0xEA5F: 0x9E1A, //CJK UNIFIED IDEOGRAPH - 0xEA60: 0x9E1B, //CJK UNIFIED IDEOGRAPH - 0xEA61: 0x9E1E, //CJK UNIFIED IDEOGRAPH - 0xEA62: 0x9E75, //CJK UNIFIED IDEOGRAPH - 0xEA63: 0x9E79, //CJK UNIFIED IDEOGRAPH - 0xEA64: 0x9E7D, //CJK UNIFIED IDEOGRAPH - 0xEA65: 0x9E81, //CJK UNIFIED IDEOGRAPH - 0xEA66: 0x9E88, //CJK UNIFIED IDEOGRAPH - 0xEA67: 0x9E8B, //CJK UNIFIED IDEOGRAPH - 0xEA68: 0x9E8C, //CJK UNIFIED IDEOGRAPH - 0xEA69: 0x9E92, //CJK UNIFIED IDEOGRAPH - 0xEA6A: 0x9E95, //CJK UNIFIED IDEOGRAPH - 0xEA6B: 0x9E91, //CJK UNIFIED IDEOGRAPH - 0xEA6C: 0x9E9D, //CJK UNIFIED IDEOGRAPH - 0xEA6D: 0x9EA5, //CJK UNIFIED IDEOGRAPH - 0xEA6E: 0x9EA9, //CJK UNIFIED IDEOGRAPH - 0xEA6F: 0x9EB8, //CJK UNIFIED IDEOGRAPH - 0xEA70: 0x9EAA, //CJK UNIFIED IDEOGRAPH - 0xEA71: 0x9EAD, //CJK UNIFIED IDEOGRAPH - 0xEA72: 0x9761, //CJK UNIFIED IDEOGRAPH - 0xEA73: 0x9ECC, //CJK UNIFIED IDEOGRAPH - 0xEA74: 0x9ECE, //CJK UNIFIED IDEOGRAPH - 0xEA75: 0x9ECF, //CJK UNIFIED IDEOGRAPH - 0xEA76: 0x9ED0, //CJK UNIFIED IDEOGRAPH - 0xEA77: 0x9ED4, //CJK UNIFIED IDEOGRAPH - 0xEA78: 0x9EDC, //CJK UNIFIED IDEOGRAPH - 0xEA79: 0x9EDE, //CJK UNIFIED IDEOGRAPH - 0xEA7A: 0x9EDD, //CJK UNIFIED IDEOGRAPH - 0xEA7B: 0x9EE0, //CJK UNIFIED IDEOGRAPH - 0xEA7C: 0x9EE5, //CJK UNIFIED IDEOGRAPH - 0xEA7D: 0x9EE8, //CJK UNIFIED IDEOGRAPH - 0xEA7E: 0x9EEF, //CJK UNIFIED IDEOGRAPH - 0xEA80: 0x9EF4, //CJK UNIFIED IDEOGRAPH - 0xEA81: 0x9EF6, //CJK UNIFIED IDEOGRAPH - 0xEA82: 0x9EF7, //CJK UNIFIED IDEOGRAPH - 0xEA83: 0x9EF9, //CJK UNIFIED IDEOGRAPH - 0xEA84: 0x9EFB, //CJK UNIFIED IDEOGRAPH - 0xEA85: 0x9EFC, //CJK UNIFIED IDEOGRAPH - 0xEA86: 0x9EFD, //CJK UNIFIED IDEOGRAPH - 0xEA87: 0x9F07, //CJK UNIFIED IDEOGRAPH - 0xEA88: 0x9F08, //CJK UNIFIED IDEOGRAPH - 0xEA89: 0x76B7, //CJK UNIFIED IDEOGRAPH - 0xEA8A: 0x9F15, //CJK UNIFIED IDEOGRAPH - 0xEA8B: 0x9F21, //CJK UNIFIED IDEOGRAPH - 0xEA8C: 0x9F2C, //CJK UNIFIED IDEOGRAPH - 0xEA8D: 0x9F3E, //CJK UNIFIED IDEOGRAPH - 0xEA8E: 0x9F4A, //CJK UNIFIED IDEOGRAPH - 0xEA8F: 0x9F52, //CJK UNIFIED IDEOGRAPH - 0xEA90: 0x9F54, //CJK UNIFIED IDEOGRAPH - 0xEA91: 0x9F63, //CJK UNIFIED IDEOGRAPH - 0xEA92: 0x9F5F, //CJK UNIFIED IDEOGRAPH - 0xEA93: 0x9F60, //CJK UNIFIED IDEOGRAPH - 0xEA94: 0x9F61, //CJK UNIFIED IDEOGRAPH - 0xEA95: 0x9F66, //CJK UNIFIED IDEOGRAPH - 0xEA96: 0x9F67, //CJK UNIFIED IDEOGRAPH - 0xEA97: 0x9F6C, //CJK UNIFIED IDEOGRAPH - 0xEA98: 0x9F6A, //CJK UNIFIED IDEOGRAPH - 0xEA99: 0x9F77, //CJK UNIFIED IDEOGRAPH - 0xEA9A: 0x9F72, //CJK UNIFIED IDEOGRAPH - 0xEA9B: 0x9F76, //CJK UNIFIED IDEOGRAPH - 0xEA9C: 0x9F95, //CJK UNIFIED IDEOGRAPH - 0xEA9D: 0x9F9C, //CJK UNIFIED IDEOGRAPH - 0xEA9E: 0x9FA0, //CJK UNIFIED IDEOGRAPH - 0xEA9F: 0x582F, //CJK UNIFIED IDEOGRAPH - 0xEAA0: 0x69C7, //CJK UNIFIED IDEOGRAPH - 0xEAA1: 0x9059, //CJK UNIFIED IDEOGRAPH - 0xEAA2: 0x7464, //CJK UNIFIED IDEOGRAPH - 0xEAA3: 0x51DC, //CJK UNIFIED IDEOGRAPH - 0xEAA4: 0x7199, //CJK UNIFIED IDEOGRAPH - 0xED40: 0x7E8A, //CJK UNIFIED IDEOGRAPH - 0xED41: 0x891C, //CJK UNIFIED IDEOGRAPH - 0xED42: 0x9348, //CJK UNIFIED IDEOGRAPH - 0xED43: 0x9288, //CJK UNIFIED IDEOGRAPH - 0xED44: 0x84DC, //CJK UNIFIED IDEOGRAPH - 0xED45: 0x4FC9, //CJK UNIFIED IDEOGRAPH - 0xED46: 0x70BB, //CJK UNIFIED IDEOGRAPH - 0xED47: 0x6631, //CJK UNIFIED IDEOGRAPH - 0xED48: 0x68C8, //CJK UNIFIED IDEOGRAPH - 0xED49: 0x92F9, //CJK UNIFIED IDEOGRAPH - 0xED4A: 0x66FB, //CJK UNIFIED IDEOGRAPH - 0xED4B: 0x5F45, //CJK UNIFIED IDEOGRAPH - 0xED4C: 0x4E28, //CJK UNIFIED IDEOGRAPH - 0xED4D: 0x4EE1, //CJK UNIFIED IDEOGRAPH - 0xED4E: 0x4EFC, //CJK UNIFIED IDEOGRAPH - 0xED4F: 0x4F00, //CJK UNIFIED IDEOGRAPH - 0xED50: 0x4F03, //CJK UNIFIED IDEOGRAPH - 0xED51: 0x4F39, //CJK UNIFIED IDEOGRAPH - 0xED52: 0x4F56, //CJK UNIFIED IDEOGRAPH - 0xED53: 0x4F92, //CJK UNIFIED IDEOGRAPH - 0xED54: 0x4F8A, //CJK UNIFIED IDEOGRAPH - 0xED55: 0x4F9A, //CJK UNIFIED IDEOGRAPH - 0xED56: 0x4F94, //CJK UNIFIED IDEOGRAPH - 0xED57: 0x4FCD, //CJK UNIFIED IDEOGRAPH - 0xED58: 0x5040, //CJK UNIFIED IDEOGRAPH - 0xED59: 0x5022, //CJK UNIFIED IDEOGRAPH - 0xED5A: 0x4FFF, //CJK UNIFIED IDEOGRAPH - 0xED5B: 0x501E, //CJK UNIFIED IDEOGRAPH - 0xED5C: 0x5046, //CJK UNIFIED IDEOGRAPH - 0xED5D: 0x5070, //CJK UNIFIED IDEOGRAPH - 0xED5E: 0x5042, //CJK UNIFIED IDEOGRAPH - 0xED5F: 0x5094, //CJK UNIFIED IDEOGRAPH - 0xED60: 0x50F4, //CJK UNIFIED IDEOGRAPH - 0xED61: 0x50D8, //CJK UNIFIED IDEOGRAPH - 0xED62: 0x514A, //CJK UNIFIED IDEOGRAPH - 0xED63: 0x5164, //CJK UNIFIED IDEOGRAPH - 0xED64: 0x519D, //CJK UNIFIED IDEOGRAPH - 0xED65: 0x51BE, //CJK UNIFIED IDEOGRAPH - 0xED66: 0x51EC, //CJK UNIFIED IDEOGRAPH - 0xED67: 0x5215, //CJK UNIFIED IDEOGRAPH - 0xED68: 0x529C, //CJK UNIFIED IDEOGRAPH - 0xED69: 0x52A6, //CJK UNIFIED IDEOGRAPH - 0xED6A: 0x52C0, //CJK UNIFIED IDEOGRAPH - 0xED6B: 0x52DB, //CJK UNIFIED IDEOGRAPH - 0xED6C: 0x5300, //CJK UNIFIED IDEOGRAPH - 0xED6D: 0x5307, //CJK UNIFIED IDEOGRAPH - 0xED6E: 0x5324, //CJK UNIFIED IDEOGRAPH - 0xED6F: 0x5372, //CJK UNIFIED IDEOGRAPH - 0xED70: 0x5393, //CJK UNIFIED IDEOGRAPH - 0xED71: 0x53B2, //CJK UNIFIED IDEOGRAPH - 0xED72: 0x53DD, //CJK UNIFIED IDEOGRAPH - 0xED73: 0xFA0E, //CJK COMPATIBILITY IDEOGRAPH - 0xED74: 0x549C, //CJK UNIFIED IDEOGRAPH - 0xED75: 0x548A, //CJK UNIFIED IDEOGRAPH - 0xED76: 0x54A9, //CJK UNIFIED IDEOGRAPH - 0xED77: 0x54FF, //CJK UNIFIED IDEOGRAPH - 0xED78: 0x5586, //CJK UNIFIED IDEOGRAPH - 0xED79: 0x5759, //CJK UNIFIED IDEOGRAPH - 0xED7A: 0x5765, //CJK UNIFIED IDEOGRAPH - 0xED7B: 0x57AC, //CJK UNIFIED IDEOGRAPH - 0xED7C: 0x57C8, //CJK UNIFIED IDEOGRAPH - 0xED7D: 0x57C7, //CJK UNIFIED IDEOGRAPH - 0xED7E: 0xFA0F, //CJK COMPATIBILITY IDEOGRAPH - 0xED80: 0xFA10, //CJK COMPATIBILITY IDEOGRAPH - 0xED81: 0x589E, //CJK UNIFIED IDEOGRAPH - 0xED82: 0x58B2, //CJK UNIFIED IDEOGRAPH - 0xED83: 0x590B, //CJK UNIFIED IDEOGRAPH - 0xED84: 0x5953, //CJK UNIFIED IDEOGRAPH - 0xED85: 0x595B, //CJK UNIFIED IDEOGRAPH - 0xED86: 0x595D, //CJK UNIFIED IDEOGRAPH - 0xED87: 0x5963, //CJK UNIFIED IDEOGRAPH - 0xED88: 0x59A4, //CJK UNIFIED IDEOGRAPH - 0xED89: 0x59BA, //CJK UNIFIED IDEOGRAPH - 0xED8A: 0x5B56, //CJK UNIFIED IDEOGRAPH - 0xED8B: 0x5BC0, //CJK UNIFIED IDEOGRAPH - 0xED8C: 0x752F, //CJK UNIFIED IDEOGRAPH - 0xED8D: 0x5BD8, //CJK UNIFIED IDEOGRAPH - 0xED8E: 0x5BEC, //CJK UNIFIED IDEOGRAPH - 0xED8F: 0x5C1E, //CJK UNIFIED IDEOGRAPH - 0xED90: 0x5CA6, //CJK UNIFIED IDEOGRAPH - 0xED91: 0x5CBA, //CJK UNIFIED IDEOGRAPH - 0xED92: 0x5CF5, //CJK UNIFIED IDEOGRAPH - 0xED93: 0x5D27, //CJK UNIFIED IDEOGRAPH - 0xED94: 0x5D53, //CJK UNIFIED IDEOGRAPH - 0xED95: 0xFA11, //CJK COMPATIBILITY IDEOGRAPH - 0xED96: 0x5D42, //CJK UNIFIED IDEOGRAPH - 0xED97: 0x5D6D, //CJK UNIFIED IDEOGRAPH - 0xED98: 0x5DB8, //CJK UNIFIED IDEOGRAPH - 0xED99: 0x5DB9, //CJK UNIFIED IDEOGRAPH - 0xED9A: 0x5DD0, //CJK UNIFIED IDEOGRAPH - 0xED9B: 0x5F21, //CJK UNIFIED IDEOGRAPH - 0xED9C: 0x5F34, //CJK UNIFIED IDEOGRAPH - 0xED9D: 0x5F67, //CJK UNIFIED IDEOGRAPH - 0xED9E: 0x5FB7, //CJK UNIFIED IDEOGRAPH - 0xED9F: 0x5FDE, //CJK UNIFIED IDEOGRAPH - 0xEDA0: 0x605D, //CJK UNIFIED IDEOGRAPH - 0xEDA1: 0x6085, //CJK UNIFIED IDEOGRAPH - 0xEDA2: 0x608A, //CJK UNIFIED IDEOGRAPH - 0xEDA3: 0x60DE, //CJK UNIFIED IDEOGRAPH - 0xEDA4: 0x60D5, //CJK UNIFIED IDEOGRAPH - 0xEDA5: 0x6120, //CJK UNIFIED IDEOGRAPH - 0xEDA6: 0x60F2, //CJK UNIFIED IDEOGRAPH - 0xEDA7: 0x6111, //CJK UNIFIED IDEOGRAPH - 0xEDA8: 0x6137, //CJK UNIFIED IDEOGRAPH - 0xEDA9: 0x6130, //CJK UNIFIED IDEOGRAPH - 0xEDAA: 0x6198, //CJK UNIFIED IDEOGRAPH - 0xEDAB: 0x6213, //CJK UNIFIED IDEOGRAPH - 0xEDAC: 0x62A6, //CJK UNIFIED IDEOGRAPH - 0xEDAD: 0x63F5, //CJK UNIFIED IDEOGRAPH - 0xEDAE: 0x6460, //CJK UNIFIED IDEOGRAPH - 0xEDAF: 0x649D, //CJK UNIFIED IDEOGRAPH - 0xEDB0: 0x64CE, //CJK UNIFIED IDEOGRAPH - 0xEDB1: 0x654E, //CJK UNIFIED IDEOGRAPH - 0xEDB2: 0x6600, //CJK UNIFIED IDEOGRAPH - 0xEDB3: 0x6615, //CJK UNIFIED IDEOGRAPH - 0xEDB4: 0x663B, //CJK UNIFIED IDEOGRAPH - 0xEDB5: 0x6609, //CJK UNIFIED IDEOGRAPH - 0xEDB6: 0x662E, //CJK UNIFIED IDEOGRAPH - 0xEDB7: 0x661E, //CJK UNIFIED IDEOGRAPH - 0xEDB8: 0x6624, //CJK UNIFIED IDEOGRAPH - 0xEDB9: 0x6665, //CJK UNIFIED IDEOGRAPH - 0xEDBA: 0x6657, //CJK UNIFIED IDEOGRAPH - 0xEDBB: 0x6659, //CJK UNIFIED IDEOGRAPH - 0xEDBC: 0xFA12, //CJK COMPATIBILITY IDEOGRAPH - 0xEDBD: 0x6673, //CJK UNIFIED IDEOGRAPH - 0xEDBE: 0x6699, //CJK UNIFIED IDEOGRAPH - 0xEDBF: 0x66A0, //CJK UNIFIED IDEOGRAPH - 0xEDC0: 0x66B2, //CJK UNIFIED IDEOGRAPH - 0xEDC1: 0x66BF, //CJK UNIFIED IDEOGRAPH - 0xEDC2: 0x66FA, //CJK UNIFIED IDEOGRAPH - 0xEDC3: 0x670E, //CJK UNIFIED IDEOGRAPH - 0xEDC4: 0xF929, //CJK COMPATIBILITY IDEOGRAPH - 0xEDC5: 0x6766, //CJK UNIFIED IDEOGRAPH - 0xEDC6: 0x67BB, //CJK UNIFIED IDEOGRAPH - 0xEDC7: 0x6852, //CJK UNIFIED IDEOGRAPH - 0xEDC8: 0x67C0, //CJK UNIFIED IDEOGRAPH - 0xEDC9: 0x6801, //CJK UNIFIED IDEOGRAPH - 0xEDCA: 0x6844, //CJK UNIFIED IDEOGRAPH - 0xEDCB: 0x68CF, //CJK UNIFIED IDEOGRAPH - 0xEDCC: 0xFA13, //CJK COMPATIBILITY IDEOGRAPH - 0xEDCD: 0x6968, //CJK UNIFIED IDEOGRAPH - 0xEDCE: 0xFA14, //CJK COMPATIBILITY IDEOGRAPH - 0xEDCF: 0x6998, //CJK UNIFIED IDEOGRAPH - 0xEDD0: 0x69E2, //CJK UNIFIED IDEOGRAPH - 0xEDD1: 0x6A30, //CJK UNIFIED IDEOGRAPH - 0xEDD2: 0x6A6B, //CJK UNIFIED IDEOGRAPH - 0xEDD3: 0x6A46, //CJK UNIFIED IDEOGRAPH - 0xEDD4: 0x6A73, //CJK UNIFIED IDEOGRAPH - 0xEDD5: 0x6A7E, //CJK UNIFIED IDEOGRAPH - 0xEDD6: 0x6AE2, //CJK UNIFIED IDEOGRAPH - 0xEDD7: 0x6AE4, //CJK UNIFIED IDEOGRAPH - 0xEDD8: 0x6BD6, //CJK UNIFIED IDEOGRAPH - 0xEDD9: 0x6C3F, //CJK UNIFIED IDEOGRAPH - 0xEDDA: 0x6C5C, //CJK UNIFIED IDEOGRAPH - 0xEDDB: 0x6C86, //CJK UNIFIED IDEOGRAPH - 0xEDDC: 0x6C6F, //CJK UNIFIED IDEOGRAPH - 0xEDDD: 0x6CDA, //CJK UNIFIED IDEOGRAPH - 0xEDDE: 0x6D04, //CJK UNIFIED IDEOGRAPH - 0xEDDF: 0x6D87, //CJK UNIFIED IDEOGRAPH - 0xEDE0: 0x6D6F, //CJK UNIFIED IDEOGRAPH - 0xEDE1: 0x6D96, //CJK UNIFIED IDEOGRAPH - 0xEDE2: 0x6DAC, //CJK UNIFIED IDEOGRAPH - 0xEDE3: 0x6DCF, //CJK UNIFIED IDEOGRAPH - 0xEDE4: 0x6DF8, //CJK UNIFIED IDEOGRAPH - 0xEDE5: 0x6DF2, //CJK UNIFIED IDEOGRAPH - 0xEDE6: 0x6DFC, //CJK UNIFIED IDEOGRAPH - 0xEDE7: 0x6E39, //CJK UNIFIED IDEOGRAPH - 0xEDE8: 0x6E5C, //CJK UNIFIED IDEOGRAPH - 0xEDE9: 0x6E27, //CJK UNIFIED IDEOGRAPH - 0xEDEA: 0x6E3C, //CJK UNIFIED IDEOGRAPH - 0xEDEB: 0x6EBF, //CJK UNIFIED IDEOGRAPH - 0xEDEC: 0x6F88, //CJK UNIFIED IDEOGRAPH - 0xEDED: 0x6FB5, //CJK UNIFIED IDEOGRAPH - 0xEDEE: 0x6FF5, //CJK UNIFIED IDEOGRAPH - 0xEDEF: 0x7005, //CJK UNIFIED IDEOGRAPH - 0xEDF0: 0x7007, //CJK UNIFIED IDEOGRAPH - 0xEDF1: 0x7028, //CJK UNIFIED IDEOGRAPH - 0xEDF2: 0x7085, //CJK UNIFIED IDEOGRAPH - 0xEDF3: 0x70AB, //CJK UNIFIED IDEOGRAPH - 0xEDF4: 0x710F, //CJK UNIFIED IDEOGRAPH - 0xEDF5: 0x7104, //CJK UNIFIED IDEOGRAPH - 0xEDF6: 0x715C, //CJK UNIFIED IDEOGRAPH - 0xEDF7: 0x7146, //CJK UNIFIED IDEOGRAPH - 0xEDF8: 0x7147, //CJK UNIFIED IDEOGRAPH - 0xEDF9: 0xFA15, //CJK COMPATIBILITY IDEOGRAPH - 0xEDFA: 0x71C1, //CJK UNIFIED IDEOGRAPH - 0xEDFB: 0x71FE, //CJK UNIFIED IDEOGRAPH - 0xEDFC: 0x72B1, //CJK UNIFIED IDEOGRAPH - 0xEE40: 0x72BE, //CJK UNIFIED IDEOGRAPH - 0xEE41: 0x7324, //CJK UNIFIED IDEOGRAPH - 0xEE42: 0xFA16, //CJK COMPATIBILITY IDEOGRAPH - 0xEE43: 0x7377, //CJK UNIFIED IDEOGRAPH - 0xEE44: 0x73BD, //CJK UNIFIED IDEOGRAPH - 0xEE45: 0x73C9, //CJK UNIFIED IDEOGRAPH - 0xEE46: 0x73D6, //CJK UNIFIED IDEOGRAPH - 0xEE47: 0x73E3, //CJK UNIFIED IDEOGRAPH - 0xEE48: 0x73D2, //CJK UNIFIED IDEOGRAPH - 0xEE49: 0x7407, //CJK UNIFIED IDEOGRAPH - 0xEE4A: 0x73F5, //CJK UNIFIED IDEOGRAPH - 0xEE4B: 0x7426, //CJK UNIFIED IDEOGRAPH - 0xEE4C: 0x742A, //CJK UNIFIED IDEOGRAPH - 0xEE4D: 0x7429, //CJK UNIFIED IDEOGRAPH - 0xEE4E: 0x742E, //CJK UNIFIED IDEOGRAPH - 0xEE4F: 0x7462, //CJK UNIFIED IDEOGRAPH - 0xEE50: 0x7489, //CJK UNIFIED IDEOGRAPH - 0xEE51: 0x749F, //CJK UNIFIED IDEOGRAPH - 0xEE52: 0x7501, //CJK UNIFIED IDEOGRAPH - 0xEE53: 0x756F, //CJK UNIFIED IDEOGRAPH - 0xEE54: 0x7682, //CJK UNIFIED IDEOGRAPH - 0xEE55: 0x769C, //CJK UNIFIED IDEOGRAPH - 0xEE56: 0x769E, //CJK UNIFIED IDEOGRAPH - 0xEE57: 0x769B, //CJK UNIFIED IDEOGRAPH - 0xEE58: 0x76A6, //CJK UNIFIED IDEOGRAPH - 0xEE59: 0xFA17, //CJK COMPATIBILITY IDEOGRAPH - 0xEE5A: 0x7746, //CJK UNIFIED IDEOGRAPH - 0xEE5B: 0x52AF, //CJK UNIFIED IDEOGRAPH - 0xEE5C: 0x7821, //CJK UNIFIED IDEOGRAPH - 0xEE5D: 0x784E, //CJK UNIFIED IDEOGRAPH - 0xEE5E: 0x7864, //CJK UNIFIED IDEOGRAPH - 0xEE5F: 0x787A, //CJK UNIFIED IDEOGRAPH - 0xEE60: 0x7930, //CJK UNIFIED IDEOGRAPH - 0xEE61: 0xFA18, //CJK COMPATIBILITY IDEOGRAPH - 0xEE62: 0xFA19, //CJK COMPATIBILITY IDEOGRAPH - 0xEE63: 0xFA1A, //CJK COMPATIBILITY IDEOGRAPH - 0xEE64: 0x7994, //CJK UNIFIED IDEOGRAPH - 0xEE65: 0xFA1B, //CJK COMPATIBILITY IDEOGRAPH - 0xEE66: 0x799B, //CJK UNIFIED IDEOGRAPH - 0xEE67: 0x7AD1, //CJK UNIFIED IDEOGRAPH - 0xEE68: 0x7AE7, //CJK UNIFIED IDEOGRAPH - 0xEE69: 0xFA1C, //CJK COMPATIBILITY IDEOGRAPH - 0xEE6A: 0x7AEB, //CJK UNIFIED IDEOGRAPH - 0xEE6B: 0x7B9E, //CJK UNIFIED IDEOGRAPH - 0xEE6C: 0xFA1D, //CJK COMPATIBILITY IDEOGRAPH - 0xEE6D: 0x7D48, //CJK UNIFIED IDEOGRAPH - 0xEE6E: 0x7D5C, //CJK UNIFIED IDEOGRAPH - 0xEE6F: 0x7DB7, //CJK UNIFIED IDEOGRAPH - 0xEE70: 0x7DA0, //CJK UNIFIED IDEOGRAPH - 0xEE71: 0x7DD6, //CJK UNIFIED IDEOGRAPH - 0xEE72: 0x7E52, //CJK UNIFIED IDEOGRAPH - 0xEE73: 0x7F47, //CJK UNIFIED IDEOGRAPH - 0xEE74: 0x7FA1, //CJK UNIFIED IDEOGRAPH - 0xEE75: 0xFA1E, //CJK COMPATIBILITY IDEOGRAPH - 0xEE76: 0x8301, //CJK UNIFIED IDEOGRAPH - 0xEE77: 0x8362, //CJK UNIFIED IDEOGRAPH - 0xEE78: 0x837F, //CJK UNIFIED IDEOGRAPH - 0xEE79: 0x83C7, //CJK UNIFIED IDEOGRAPH - 0xEE7A: 0x83F6, //CJK UNIFIED IDEOGRAPH - 0xEE7B: 0x8448, //CJK UNIFIED IDEOGRAPH - 0xEE7C: 0x84B4, //CJK UNIFIED IDEOGRAPH - 0xEE7D: 0x8553, //CJK UNIFIED IDEOGRAPH - 0xEE7E: 0x8559, //CJK UNIFIED IDEOGRAPH - 0xEE80: 0x856B, //CJK UNIFIED IDEOGRAPH - 0xEE81: 0xFA1F, //CJK COMPATIBILITY IDEOGRAPH - 0xEE82: 0x85B0, //CJK UNIFIED IDEOGRAPH - 0xEE83: 0xFA20, //CJK COMPATIBILITY IDEOGRAPH - 0xEE84: 0xFA21, //CJK COMPATIBILITY IDEOGRAPH - 0xEE85: 0x8807, //CJK UNIFIED IDEOGRAPH - 0xEE86: 0x88F5, //CJK UNIFIED IDEOGRAPH - 0xEE87: 0x8A12, //CJK UNIFIED IDEOGRAPH - 0xEE88: 0x8A37, //CJK UNIFIED IDEOGRAPH - 0xEE89: 0x8A79, //CJK UNIFIED IDEOGRAPH - 0xEE8A: 0x8AA7, //CJK UNIFIED IDEOGRAPH - 0xEE8B: 0x8ABE, //CJK UNIFIED IDEOGRAPH - 0xEE8C: 0x8ADF, //CJK UNIFIED IDEOGRAPH - 0xEE8D: 0xFA22, //CJK COMPATIBILITY IDEOGRAPH - 0xEE8E: 0x8AF6, //CJK UNIFIED IDEOGRAPH - 0xEE8F: 0x8B53, //CJK UNIFIED IDEOGRAPH - 0xEE90: 0x8B7F, //CJK UNIFIED IDEOGRAPH - 0xEE91: 0x8CF0, //CJK UNIFIED IDEOGRAPH - 0xEE92: 0x8CF4, //CJK UNIFIED IDEOGRAPH - 0xEE93: 0x8D12, //CJK UNIFIED IDEOGRAPH - 0xEE94: 0x8D76, //CJK UNIFIED IDEOGRAPH - 0xEE95: 0xFA23, //CJK COMPATIBILITY IDEOGRAPH - 0xEE96: 0x8ECF, //CJK UNIFIED IDEOGRAPH - 0xEE97: 0xFA24, //CJK COMPATIBILITY IDEOGRAPH - 0xEE98: 0xFA25, //CJK COMPATIBILITY IDEOGRAPH - 0xEE99: 0x9067, //CJK UNIFIED IDEOGRAPH - 0xEE9A: 0x90DE, //CJK UNIFIED IDEOGRAPH - 0xEE9B: 0xFA26, //CJK COMPATIBILITY IDEOGRAPH - 0xEE9C: 0x9115, //CJK UNIFIED IDEOGRAPH - 0xEE9D: 0x9127, //CJK UNIFIED IDEOGRAPH - 0xEE9E: 0x91DA, //CJK UNIFIED IDEOGRAPH - 0xEE9F: 0x91D7, //CJK UNIFIED IDEOGRAPH - 0xEEA0: 0x91DE, //CJK UNIFIED IDEOGRAPH - 0xEEA1: 0x91ED, //CJK UNIFIED IDEOGRAPH - 0xEEA2: 0x91EE, //CJK UNIFIED IDEOGRAPH - 0xEEA3: 0x91E4, //CJK UNIFIED IDEOGRAPH - 0xEEA4: 0x91E5, //CJK UNIFIED IDEOGRAPH - 0xEEA5: 0x9206, //CJK UNIFIED IDEOGRAPH - 0xEEA6: 0x9210, //CJK UNIFIED IDEOGRAPH - 0xEEA7: 0x920A, //CJK UNIFIED IDEOGRAPH - 0xEEA8: 0x923A, //CJK UNIFIED IDEOGRAPH - 0xEEA9: 0x9240, //CJK UNIFIED IDEOGRAPH - 0xEEAA: 0x923C, //CJK UNIFIED IDEOGRAPH - 0xEEAB: 0x924E, //CJK UNIFIED IDEOGRAPH - 0xEEAC: 0x9259, //CJK UNIFIED IDEOGRAPH - 0xEEAD: 0x9251, //CJK UNIFIED IDEOGRAPH - 0xEEAE: 0x9239, //CJK UNIFIED IDEOGRAPH - 0xEEAF: 0x9267, //CJK UNIFIED IDEOGRAPH - 0xEEB0: 0x92A7, //CJK UNIFIED IDEOGRAPH - 0xEEB1: 0x9277, //CJK UNIFIED IDEOGRAPH - 0xEEB2: 0x9278, //CJK UNIFIED IDEOGRAPH - 0xEEB3: 0x92E7, //CJK UNIFIED IDEOGRAPH - 0xEEB4: 0x92D7, //CJK UNIFIED IDEOGRAPH - 0xEEB5: 0x92D9, //CJK UNIFIED IDEOGRAPH - 0xEEB6: 0x92D0, //CJK UNIFIED IDEOGRAPH - 0xEEB7: 0xFA27, //CJK COMPATIBILITY IDEOGRAPH - 0xEEB8: 0x92D5, //CJK UNIFIED IDEOGRAPH - 0xEEB9: 0x92E0, //CJK UNIFIED IDEOGRAPH - 0xEEBA: 0x92D3, //CJK UNIFIED IDEOGRAPH - 0xEEBB: 0x9325, //CJK UNIFIED IDEOGRAPH - 0xEEBC: 0x9321, //CJK UNIFIED IDEOGRAPH - 0xEEBD: 0x92FB, //CJK UNIFIED IDEOGRAPH - 0xEEBE: 0xFA28, //CJK COMPATIBILITY IDEOGRAPH - 0xEEBF: 0x931E, //CJK UNIFIED IDEOGRAPH - 0xEEC0: 0x92FF, //CJK UNIFIED IDEOGRAPH - 0xEEC1: 0x931D, //CJK UNIFIED IDEOGRAPH - 0xEEC2: 0x9302, //CJK UNIFIED IDEOGRAPH - 0xEEC3: 0x9370, //CJK UNIFIED IDEOGRAPH - 0xEEC4: 0x9357, //CJK UNIFIED IDEOGRAPH - 0xEEC5: 0x93A4, //CJK UNIFIED IDEOGRAPH - 0xEEC6: 0x93C6, //CJK UNIFIED IDEOGRAPH - 0xEEC7: 0x93DE, //CJK UNIFIED IDEOGRAPH - 0xEEC8: 0x93F8, //CJK UNIFIED IDEOGRAPH - 0xEEC9: 0x9431, //CJK UNIFIED IDEOGRAPH - 0xEECA: 0x9445, //CJK UNIFIED IDEOGRAPH - 0xEECB: 0x9448, //CJK UNIFIED IDEOGRAPH - 0xEECC: 0x9592, //CJK UNIFIED IDEOGRAPH - 0xEECD: 0xF9DC, //CJK COMPATIBILITY IDEOGRAPH - 0xEECE: 0xFA29, //CJK COMPATIBILITY IDEOGRAPH - 0xEECF: 0x969D, //CJK UNIFIED IDEOGRAPH - 0xEED0: 0x96AF, //CJK UNIFIED IDEOGRAPH - 0xEED1: 0x9733, //CJK UNIFIED IDEOGRAPH - 0xEED2: 0x973B, //CJK UNIFIED IDEOGRAPH - 0xEED3: 0x9743, //CJK UNIFIED IDEOGRAPH - 0xEED4: 0x974D, //CJK UNIFIED IDEOGRAPH - 0xEED5: 0x974F, //CJK UNIFIED IDEOGRAPH - 0xEED6: 0x9751, //CJK UNIFIED IDEOGRAPH - 0xEED7: 0x9755, //CJK UNIFIED IDEOGRAPH - 0xEED8: 0x9857, //CJK UNIFIED IDEOGRAPH - 0xEED9: 0x9865, //CJK UNIFIED IDEOGRAPH - 0xEEDA: 0xFA2A, //CJK COMPATIBILITY IDEOGRAPH - 0xEEDB: 0xFA2B, //CJK COMPATIBILITY IDEOGRAPH - 0xEEDC: 0x9927, //CJK UNIFIED IDEOGRAPH - 0xEEDD: 0xFA2C, //CJK COMPATIBILITY IDEOGRAPH - 0xEEDE: 0x999E, //CJK UNIFIED IDEOGRAPH - 0xEEDF: 0x9A4E, //CJK UNIFIED IDEOGRAPH - 0xEEE0: 0x9AD9, //CJK UNIFIED IDEOGRAPH - 0xEEE1: 0x9ADC, //CJK UNIFIED IDEOGRAPH - 0xEEE2: 0x9B75, //CJK UNIFIED IDEOGRAPH - 0xEEE3: 0x9B72, //CJK UNIFIED IDEOGRAPH - 0xEEE4: 0x9B8F, //CJK UNIFIED IDEOGRAPH - 0xEEE5: 0x9BB1, //CJK UNIFIED IDEOGRAPH - 0xEEE6: 0x9BBB, //CJK UNIFIED IDEOGRAPH - 0xEEE7: 0x9C00, //CJK UNIFIED IDEOGRAPH - 0xEEE8: 0x9D70, //CJK UNIFIED IDEOGRAPH - 0xEEE9: 0x9D6B, //CJK UNIFIED IDEOGRAPH - 0xEEEA: 0xFA2D, //CJK COMPATIBILITY IDEOGRAPH - 0xEEEB: 0x9E19, //CJK UNIFIED IDEOGRAPH - 0xEEEC: 0x9ED1, //CJK UNIFIED IDEOGRAPH - 0xEEEF: 0x2170, //SMALL ROMAN NUMERAL ONE - 0xEEF0: 0x2171, //SMALL ROMAN NUMERAL TWO - 0xEEF1: 0x2172, //SMALL ROMAN NUMERAL THREE - 0xEEF2: 0x2173, //SMALL ROMAN NUMERAL FOUR - 0xEEF3: 0x2174, //SMALL ROMAN NUMERAL FIVE - 0xEEF4: 0x2175, //SMALL ROMAN NUMERAL SIX - 0xEEF5: 0x2176, //SMALL ROMAN NUMERAL SEVEN - 0xEEF6: 0x2177, //SMALL ROMAN NUMERAL EIGHT - 0xEEF7: 0x2178, //SMALL ROMAN NUMERAL NINE - 0xEEF8: 0x2179, //SMALL ROMAN NUMERAL TEN - 0xEEF9: 0xFFE2, //FULLWIDTH NOT SIGN - 0xEEFA: 0xFFE4, //FULLWIDTH BROKEN BAR - 0xEEFB: 0xFF07, //FULLWIDTH APOSTROPHE - 0xEEFC: 0xFF02, //FULLWIDTH QUOTATION MARK - 0xFA40: 0x2170, //SMALL ROMAN NUMERAL ONE - 0xFA41: 0x2171, //SMALL ROMAN NUMERAL TWO - 0xFA42: 0x2172, //SMALL ROMAN NUMERAL THREE - 0xFA43: 0x2173, //SMALL ROMAN NUMERAL FOUR - 0xFA44: 0x2174, //SMALL ROMAN NUMERAL FIVE - 0xFA45: 0x2175, //SMALL ROMAN NUMERAL SIX - 0xFA46: 0x2176, //SMALL ROMAN NUMERAL SEVEN - 0xFA47: 0x2177, //SMALL ROMAN NUMERAL EIGHT - 0xFA48: 0x2178, //SMALL ROMAN NUMERAL NINE - 0xFA49: 0x2179, //SMALL ROMAN NUMERAL TEN - 0xFA4A: 0x2160, //ROMAN NUMERAL ONE - 0xFA4B: 0x2161, //ROMAN NUMERAL TWO - 0xFA4C: 0x2162, //ROMAN NUMERAL THREE - 0xFA4D: 0x2163, //ROMAN NUMERAL FOUR - 0xFA4E: 0x2164, //ROMAN NUMERAL FIVE - 0xFA4F: 0x2165, //ROMAN NUMERAL SIX - 0xFA50: 0x2166, //ROMAN NUMERAL SEVEN - 0xFA51: 0x2167, //ROMAN NUMERAL EIGHT - 0xFA52: 0x2168, //ROMAN NUMERAL NINE - 0xFA53: 0x2169, //ROMAN NUMERAL TEN - 0xFA54: 0xFFE2, //FULLWIDTH NOT SIGN - 0xFA55: 0xFFE4, //FULLWIDTH BROKEN BAR - 0xFA56: 0xFF07, //FULLWIDTH APOSTROPHE - 0xFA57: 0xFF02, //FULLWIDTH QUOTATION MARK - 0xFA58: 0x3231, //PARENTHESIZED IDEOGRAPH STOCK - 0xFA59: 0x2116, //NUMERO SIGN - 0xFA5A: 0x2121, //TELEPHONE SIGN - 0xFA5B: 0x2235, //BECAUSE - 0xFA5C: 0x7E8A, //CJK UNIFIED IDEOGRAPH - 0xFA5D: 0x891C, //CJK UNIFIED IDEOGRAPH - 0xFA5E: 0x9348, //CJK UNIFIED IDEOGRAPH - 0xFA5F: 0x9288, //CJK UNIFIED IDEOGRAPH - 0xFA60: 0x84DC, //CJK UNIFIED IDEOGRAPH - 0xFA61: 0x4FC9, //CJK UNIFIED IDEOGRAPH - 0xFA62: 0x70BB, //CJK UNIFIED IDEOGRAPH - 0xFA63: 0x6631, //CJK UNIFIED IDEOGRAPH - 0xFA64: 0x68C8, //CJK UNIFIED IDEOGRAPH - 0xFA65: 0x92F9, //CJK UNIFIED IDEOGRAPH - 0xFA66: 0x66FB, //CJK UNIFIED IDEOGRAPH - 0xFA67: 0x5F45, //CJK UNIFIED IDEOGRAPH - 0xFA68: 0x4E28, //CJK UNIFIED IDEOGRAPH - 0xFA69: 0x4EE1, //CJK UNIFIED IDEOGRAPH - 0xFA6A: 0x4EFC, //CJK UNIFIED IDEOGRAPH - 0xFA6B: 0x4F00, //CJK UNIFIED IDEOGRAPH - 0xFA6C: 0x4F03, //CJK UNIFIED IDEOGRAPH - 0xFA6D: 0x4F39, //CJK UNIFIED IDEOGRAPH - 0xFA6E: 0x4F56, //CJK UNIFIED IDEOGRAPH - 0xFA6F: 0x4F92, //CJK UNIFIED IDEOGRAPH - 0xFA70: 0x4F8A, //CJK UNIFIED IDEOGRAPH - 0xFA71: 0x4F9A, //CJK UNIFIED IDEOGRAPH - 0xFA72: 0x4F94, //CJK UNIFIED IDEOGRAPH - 0xFA73: 0x4FCD, //CJK UNIFIED IDEOGRAPH - 0xFA74: 0x5040, //CJK UNIFIED IDEOGRAPH - 0xFA75: 0x5022, //CJK UNIFIED IDEOGRAPH - 0xFA76: 0x4FFF, //CJK UNIFIED IDEOGRAPH - 0xFA77: 0x501E, //CJK UNIFIED IDEOGRAPH - 0xFA78: 0x5046, //CJK UNIFIED IDEOGRAPH - 0xFA79: 0x5070, //CJK UNIFIED IDEOGRAPH - 0xFA7A: 0x5042, //CJK UNIFIED IDEOGRAPH - 0xFA7B: 0x5094, //CJK UNIFIED IDEOGRAPH - 0xFA7C: 0x50F4, //CJK UNIFIED IDEOGRAPH - 0xFA7D: 0x50D8, //CJK UNIFIED IDEOGRAPH - 0xFA7E: 0x514A, //CJK UNIFIED IDEOGRAPH - 0xFA80: 0x5164, //CJK UNIFIED IDEOGRAPH - 0xFA81: 0x519D, //CJK UNIFIED IDEOGRAPH - 0xFA82: 0x51BE, //CJK UNIFIED IDEOGRAPH - 0xFA83: 0x51EC, //CJK UNIFIED IDEOGRAPH - 0xFA84: 0x5215, //CJK UNIFIED IDEOGRAPH - 0xFA85: 0x529C, //CJK UNIFIED IDEOGRAPH - 0xFA86: 0x52A6, //CJK UNIFIED IDEOGRAPH - 0xFA87: 0x52C0, //CJK UNIFIED IDEOGRAPH - 0xFA88: 0x52DB, //CJK UNIFIED IDEOGRAPH - 0xFA89: 0x5300, //CJK UNIFIED IDEOGRAPH - 0xFA8A: 0x5307, //CJK UNIFIED IDEOGRAPH - 0xFA8B: 0x5324, //CJK UNIFIED IDEOGRAPH - 0xFA8C: 0x5372, //CJK UNIFIED IDEOGRAPH - 0xFA8D: 0x5393, //CJK UNIFIED IDEOGRAPH - 0xFA8E: 0x53B2, //CJK UNIFIED IDEOGRAPH - 0xFA8F: 0x53DD, //CJK UNIFIED IDEOGRAPH - 0xFA90: 0xFA0E, //CJK COMPATIBILITY IDEOGRAPH - 0xFA91: 0x549C, //CJK UNIFIED IDEOGRAPH - 0xFA92: 0x548A, //CJK UNIFIED IDEOGRAPH - 0xFA93: 0x54A9, //CJK UNIFIED IDEOGRAPH - 0xFA94: 0x54FF, //CJK UNIFIED IDEOGRAPH - 0xFA95: 0x5586, //CJK UNIFIED IDEOGRAPH - 0xFA96: 0x5759, //CJK UNIFIED IDEOGRAPH - 0xFA97: 0x5765, //CJK UNIFIED IDEOGRAPH - 0xFA98: 0x57AC, //CJK UNIFIED IDEOGRAPH - 0xFA99: 0x57C8, //CJK UNIFIED IDEOGRAPH - 0xFA9A: 0x57C7, //CJK UNIFIED IDEOGRAPH - 0xFA9B: 0xFA0F, //CJK COMPATIBILITY IDEOGRAPH - 0xFA9C: 0xFA10, //CJK COMPATIBILITY IDEOGRAPH - 0xFA9D: 0x589E, //CJK UNIFIED IDEOGRAPH - 0xFA9E: 0x58B2, //CJK UNIFIED IDEOGRAPH - 0xFA9F: 0x590B, //CJK UNIFIED IDEOGRAPH - 0xFAA0: 0x5953, //CJK UNIFIED IDEOGRAPH - 0xFAA1: 0x595B, //CJK UNIFIED IDEOGRAPH - 0xFAA2: 0x595D, //CJK UNIFIED IDEOGRAPH - 0xFAA3: 0x5963, //CJK UNIFIED IDEOGRAPH - 0xFAA4: 0x59A4, //CJK UNIFIED IDEOGRAPH - 0xFAA5: 0x59BA, //CJK UNIFIED IDEOGRAPH - 0xFAA6: 0x5B56, //CJK UNIFIED IDEOGRAPH - 0xFAA7: 0x5BC0, //CJK UNIFIED IDEOGRAPH - 0xFAA8: 0x752F, //CJK UNIFIED IDEOGRAPH - 0xFAA9: 0x5BD8, //CJK UNIFIED IDEOGRAPH - 0xFAAA: 0x5BEC, //CJK UNIFIED IDEOGRAPH - 0xFAAB: 0x5C1E, //CJK UNIFIED IDEOGRAPH - 0xFAAC: 0x5CA6, //CJK UNIFIED IDEOGRAPH - 0xFAAD: 0x5CBA, //CJK UNIFIED IDEOGRAPH - 0xFAAE: 0x5CF5, //CJK UNIFIED IDEOGRAPH - 0xFAAF: 0x5D27, //CJK UNIFIED IDEOGRAPH - 0xFAB0: 0x5D53, //CJK UNIFIED IDEOGRAPH - 0xFAB1: 0xFA11, //CJK COMPATIBILITY IDEOGRAPH - 0xFAB2: 0x5D42, //CJK UNIFIED IDEOGRAPH - 0xFAB3: 0x5D6D, //CJK UNIFIED IDEOGRAPH - 0xFAB4: 0x5DB8, //CJK UNIFIED IDEOGRAPH - 0xFAB5: 0x5DB9, //CJK UNIFIED IDEOGRAPH - 0xFAB6: 0x5DD0, //CJK UNIFIED IDEOGRAPH - 0xFAB7: 0x5F21, //CJK UNIFIED IDEOGRAPH - 0xFAB8: 0x5F34, //CJK UNIFIED IDEOGRAPH - 0xFAB9: 0x5F67, //CJK UNIFIED IDEOGRAPH - 0xFABA: 0x5FB7, //CJK UNIFIED IDEOGRAPH - 0xFABB: 0x5FDE, //CJK UNIFIED IDEOGRAPH - 0xFABC: 0x605D, //CJK UNIFIED IDEOGRAPH - 0xFABD: 0x6085, //CJK UNIFIED IDEOGRAPH - 0xFABE: 0x608A, //CJK UNIFIED IDEOGRAPH - 0xFABF: 0x60DE, //CJK UNIFIED IDEOGRAPH - 0xFAC0: 0x60D5, //CJK UNIFIED IDEOGRAPH - 0xFAC1: 0x6120, //CJK UNIFIED IDEOGRAPH - 0xFAC2: 0x60F2, //CJK UNIFIED IDEOGRAPH - 0xFAC3: 0x6111, //CJK UNIFIED IDEOGRAPH - 0xFAC4: 0x6137, //CJK UNIFIED IDEOGRAPH - 0xFAC5: 0x6130, //CJK UNIFIED IDEOGRAPH - 0xFAC6: 0x6198, //CJK UNIFIED IDEOGRAPH - 0xFAC7: 0x6213, //CJK UNIFIED IDEOGRAPH - 0xFAC8: 0x62A6, //CJK UNIFIED IDEOGRAPH - 0xFAC9: 0x63F5, //CJK UNIFIED IDEOGRAPH - 0xFACA: 0x6460, //CJK UNIFIED IDEOGRAPH - 0xFACB: 0x649D, //CJK UNIFIED IDEOGRAPH - 0xFACC: 0x64CE, //CJK UNIFIED IDEOGRAPH - 0xFACD: 0x654E, //CJK UNIFIED IDEOGRAPH - 0xFACE: 0x6600, //CJK UNIFIED IDEOGRAPH - 0xFACF: 0x6615, //CJK UNIFIED IDEOGRAPH - 0xFAD0: 0x663B, //CJK UNIFIED IDEOGRAPH - 0xFAD1: 0x6609, //CJK UNIFIED IDEOGRAPH - 0xFAD2: 0x662E, //CJK UNIFIED IDEOGRAPH - 0xFAD3: 0x661E, //CJK UNIFIED IDEOGRAPH - 0xFAD4: 0x6624, //CJK UNIFIED IDEOGRAPH - 0xFAD5: 0x6665, //CJK UNIFIED IDEOGRAPH - 0xFAD6: 0x6657, //CJK UNIFIED IDEOGRAPH - 0xFAD7: 0x6659, //CJK UNIFIED IDEOGRAPH - 0xFAD8: 0xFA12, //CJK COMPATIBILITY IDEOGRAPH - 0xFAD9: 0x6673, //CJK UNIFIED IDEOGRAPH - 0xFADA: 0x6699, //CJK UNIFIED IDEOGRAPH - 0xFADB: 0x66A0, //CJK UNIFIED IDEOGRAPH - 0xFADC: 0x66B2, //CJK UNIFIED IDEOGRAPH - 0xFADD: 0x66BF, //CJK UNIFIED IDEOGRAPH - 0xFADE: 0x66FA, //CJK UNIFIED IDEOGRAPH - 0xFADF: 0x670E, //CJK UNIFIED IDEOGRAPH - 0xFAE0: 0xF929, //CJK COMPATIBILITY IDEOGRAPH - 0xFAE1: 0x6766, //CJK UNIFIED IDEOGRAPH - 0xFAE2: 0x67BB, //CJK UNIFIED IDEOGRAPH - 0xFAE3: 0x6852, //CJK UNIFIED IDEOGRAPH - 0xFAE4: 0x67C0, //CJK UNIFIED IDEOGRAPH - 0xFAE5: 0x6801, //CJK UNIFIED IDEOGRAPH - 0xFAE6: 0x6844, //CJK UNIFIED IDEOGRAPH - 0xFAE7: 0x68CF, //CJK UNIFIED IDEOGRAPH - 0xFAE8: 0xFA13, //CJK COMPATIBILITY IDEOGRAPH - 0xFAE9: 0x6968, //CJK UNIFIED IDEOGRAPH - 0xFAEA: 0xFA14, //CJK COMPATIBILITY IDEOGRAPH - 0xFAEB: 0x6998, //CJK UNIFIED IDEOGRAPH - 0xFAEC: 0x69E2, //CJK UNIFIED IDEOGRAPH - 0xFAED: 0x6A30, //CJK UNIFIED IDEOGRAPH - 0xFAEE: 0x6A6B, //CJK UNIFIED IDEOGRAPH - 0xFAEF: 0x6A46, //CJK UNIFIED IDEOGRAPH - 0xFAF0: 0x6A73, //CJK UNIFIED IDEOGRAPH - 0xFAF1: 0x6A7E, //CJK UNIFIED IDEOGRAPH - 0xFAF2: 0x6AE2, //CJK UNIFIED IDEOGRAPH - 0xFAF3: 0x6AE4, //CJK UNIFIED IDEOGRAPH - 0xFAF4: 0x6BD6, //CJK UNIFIED IDEOGRAPH - 0xFAF5: 0x6C3F, //CJK UNIFIED IDEOGRAPH - 0xFAF6: 0x6C5C, //CJK UNIFIED IDEOGRAPH - 0xFAF7: 0x6C86, //CJK UNIFIED IDEOGRAPH - 0xFAF8: 0x6C6F, //CJK UNIFIED IDEOGRAPH - 0xFAF9: 0x6CDA, //CJK UNIFIED IDEOGRAPH - 0xFAFA: 0x6D04, //CJK UNIFIED IDEOGRAPH - 0xFAFB: 0x6D87, //CJK UNIFIED IDEOGRAPH - 0xFAFC: 0x6D6F, //CJK UNIFIED IDEOGRAPH - 0xFB40: 0x6D96, //CJK UNIFIED IDEOGRAPH - 0xFB41: 0x6DAC, //CJK UNIFIED IDEOGRAPH - 0xFB42: 0x6DCF, //CJK UNIFIED IDEOGRAPH - 0xFB43: 0x6DF8, //CJK UNIFIED IDEOGRAPH - 0xFB44: 0x6DF2, //CJK UNIFIED IDEOGRAPH - 0xFB45: 0x6DFC, //CJK UNIFIED IDEOGRAPH - 0xFB46: 0x6E39, //CJK UNIFIED IDEOGRAPH - 0xFB47: 0x6E5C, //CJK UNIFIED IDEOGRAPH - 0xFB48: 0x6E27, //CJK UNIFIED IDEOGRAPH - 0xFB49: 0x6E3C, //CJK UNIFIED IDEOGRAPH - 0xFB4A: 0x6EBF, //CJK UNIFIED IDEOGRAPH - 0xFB4B: 0x6F88, //CJK UNIFIED IDEOGRAPH - 0xFB4C: 0x6FB5, //CJK UNIFIED IDEOGRAPH - 0xFB4D: 0x6FF5, //CJK UNIFIED IDEOGRAPH - 0xFB4E: 0x7005, //CJK UNIFIED IDEOGRAPH - 0xFB4F: 0x7007, //CJK UNIFIED IDEOGRAPH - 0xFB50: 0x7028, //CJK UNIFIED IDEOGRAPH - 0xFB51: 0x7085, //CJK UNIFIED IDEOGRAPH - 0xFB52: 0x70AB, //CJK UNIFIED IDEOGRAPH - 0xFB53: 0x710F, //CJK UNIFIED IDEOGRAPH - 0xFB54: 0x7104, //CJK UNIFIED IDEOGRAPH - 0xFB55: 0x715C, //CJK UNIFIED IDEOGRAPH - 0xFB56: 0x7146, //CJK UNIFIED IDEOGRAPH - 0xFB57: 0x7147, //CJK UNIFIED IDEOGRAPH - 0xFB58: 0xFA15, //CJK COMPATIBILITY IDEOGRAPH - 0xFB59: 0x71C1, //CJK UNIFIED IDEOGRAPH - 0xFB5A: 0x71FE, //CJK UNIFIED IDEOGRAPH - 0xFB5B: 0x72B1, //CJK UNIFIED IDEOGRAPH - 0xFB5C: 0x72BE, //CJK UNIFIED IDEOGRAPH - 0xFB5D: 0x7324, //CJK UNIFIED IDEOGRAPH - 0xFB5E: 0xFA16, //CJK COMPATIBILITY IDEOGRAPH - 0xFB5F: 0x7377, //CJK UNIFIED IDEOGRAPH - 0xFB60: 0x73BD, //CJK UNIFIED IDEOGRAPH - 0xFB61: 0x73C9, //CJK UNIFIED IDEOGRAPH - 0xFB62: 0x73D6, //CJK UNIFIED IDEOGRAPH - 0xFB63: 0x73E3, //CJK UNIFIED IDEOGRAPH - 0xFB64: 0x73D2, //CJK UNIFIED IDEOGRAPH - 0xFB65: 0x7407, //CJK UNIFIED IDEOGRAPH - 0xFB66: 0x73F5, //CJK UNIFIED IDEOGRAPH - 0xFB67: 0x7426, //CJK UNIFIED IDEOGRAPH - 0xFB68: 0x742A, //CJK UNIFIED IDEOGRAPH - 0xFB69: 0x7429, //CJK UNIFIED IDEOGRAPH - 0xFB6A: 0x742E, //CJK UNIFIED IDEOGRAPH - 0xFB6B: 0x7462, //CJK UNIFIED IDEOGRAPH - 0xFB6C: 0x7489, //CJK UNIFIED IDEOGRAPH - 0xFB6D: 0x749F, //CJK UNIFIED IDEOGRAPH - 0xFB6E: 0x7501, //CJK UNIFIED IDEOGRAPH - 0xFB6F: 0x756F, //CJK UNIFIED IDEOGRAPH - 0xFB70: 0x7682, //CJK UNIFIED IDEOGRAPH - 0xFB71: 0x769C, //CJK UNIFIED IDEOGRAPH - 0xFB72: 0x769E, //CJK UNIFIED IDEOGRAPH - 0xFB73: 0x769B, //CJK UNIFIED IDEOGRAPH - 0xFB74: 0x76A6, //CJK UNIFIED IDEOGRAPH - 0xFB75: 0xFA17, //CJK COMPATIBILITY IDEOGRAPH - 0xFB76: 0x7746, //CJK UNIFIED IDEOGRAPH - 0xFB77: 0x52AF, //CJK UNIFIED IDEOGRAPH - 0xFB78: 0x7821, //CJK UNIFIED IDEOGRAPH - 0xFB79: 0x784E, //CJK UNIFIED IDEOGRAPH - 0xFB7A: 0x7864, //CJK UNIFIED IDEOGRAPH - 0xFB7B: 0x787A, //CJK UNIFIED IDEOGRAPH - 0xFB7C: 0x7930, //CJK UNIFIED IDEOGRAPH - 0xFB7D: 0xFA18, //CJK COMPATIBILITY IDEOGRAPH - 0xFB7E: 0xFA19, //CJK COMPATIBILITY IDEOGRAPH - 0xFB80: 0xFA1A, //CJK COMPATIBILITY IDEOGRAPH - 0xFB81: 0x7994, //CJK UNIFIED IDEOGRAPH - 0xFB82: 0xFA1B, //CJK COMPATIBILITY IDEOGRAPH - 0xFB83: 0x799B, //CJK UNIFIED IDEOGRAPH - 0xFB84: 0x7AD1, //CJK UNIFIED IDEOGRAPH - 0xFB85: 0x7AE7, //CJK UNIFIED IDEOGRAPH - 0xFB86: 0xFA1C, //CJK COMPATIBILITY IDEOGRAPH - 0xFB87: 0x7AEB, //CJK UNIFIED IDEOGRAPH - 0xFB88: 0x7B9E, //CJK UNIFIED IDEOGRAPH - 0xFB89: 0xFA1D, //CJK COMPATIBILITY IDEOGRAPH - 0xFB8A: 0x7D48, //CJK UNIFIED IDEOGRAPH - 0xFB8B: 0x7D5C, //CJK UNIFIED IDEOGRAPH - 0xFB8C: 0x7DB7, //CJK UNIFIED IDEOGRAPH - 0xFB8D: 0x7DA0, //CJK UNIFIED IDEOGRAPH - 0xFB8E: 0x7DD6, //CJK UNIFIED IDEOGRAPH - 0xFB8F: 0x7E52, //CJK UNIFIED IDEOGRAPH - 0xFB90: 0x7F47, //CJK UNIFIED IDEOGRAPH - 0xFB91: 0x7FA1, //CJK UNIFIED IDEOGRAPH - 0xFB92: 0xFA1E, //CJK COMPATIBILITY IDEOGRAPH - 0xFB93: 0x8301, //CJK UNIFIED IDEOGRAPH - 0xFB94: 0x8362, //CJK UNIFIED IDEOGRAPH - 0xFB95: 0x837F, //CJK UNIFIED IDEOGRAPH - 0xFB96: 0x83C7, //CJK UNIFIED IDEOGRAPH - 0xFB97: 0x83F6, //CJK UNIFIED IDEOGRAPH - 0xFB98: 0x8448, //CJK UNIFIED IDEOGRAPH - 0xFB99: 0x84B4, //CJK UNIFIED IDEOGRAPH - 0xFB9A: 0x8553, //CJK UNIFIED IDEOGRAPH - 0xFB9B: 0x8559, //CJK UNIFIED IDEOGRAPH - 0xFB9C: 0x856B, //CJK UNIFIED IDEOGRAPH - 0xFB9D: 0xFA1F, //CJK COMPATIBILITY IDEOGRAPH - 0xFB9E: 0x85B0, //CJK UNIFIED IDEOGRAPH - 0xFB9F: 0xFA20, //CJK COMPATIBILITY IDEOGRAPH - 0xFBA0: 0xFA21, //CJK COMPATIBILITY IDEOGRAPH - 0xFBA1: 0x8807, //CJK UNIFIED IDEOGRAPH - 0xFBA2: 0x88F5, //CJK UNIFIED IDEOGRAPH - 0xFBA3: 0x8A12, //CJK UNIFIED IDEOGRAPH - 0xFBA4: 0x8A37, //CJK UNIFIED IDEOGRAPH - 0xFBA5: 0x8A79, //CJK UNIFIED IDEOGRAPH - 0xFBA6: 0x8AA7, //CJK UNIFIED IDEOGRAPH - 0xFBA7: 0x8ABE, //CJK UNIFIED IDEOGRAPH - 0xFBA8: 0x8ADF, //CJK UNIFIED IDEOGRAPH - 0xFBA9: 0xFA22, //CJK COMPATIBILITY IDEOGRAPH - 0xFBAA: 0x8AF6, //CJK UNIFIED IDEOGRAPH - 0xFBAB: 0x8B53, //CJK UNIFIED IDEOGRAPH - 0xFBAC: 0x8B7F, //CJK UNIFIED IDEOGRAPH - 0xFBAD: 0x8CF0, //CJK UNIFIED IDEOGRAPH - 0xFBAE: 0x8CF4, //CJK UNIFIED IDEOGRAPH - 0xFBAF: 0x8D12, //CJK UNIFIED IDEOGRAPH - 0xFBB0: 0x8D76, //CJK UNIFIED IDEOGRAPH - 0xFBB1: 0xFA23, //CJK COMPATIBILITY IDEOGRAPH - 0xFBB2: 0x8ECF, //CJK UNIFIED IDEOGRAPH - 0xFBB3: 0xFA24, //CJK COMPATIBILITY IDEOGRAPH - 0xFBB4: 0xFA25, //CJK COMPATIBILITY IDEOGRAPH - 0xFBB5: 0x9067, //CJK UNIFIED IDEOGRAPH - 0xFBB6: 0x90DE, //CJK UNIFIED IDEOGRAPH - 0xFBB7: 0xFA26, //CJK COMPATIBILITY IDEOGRAPH - 0xFBB8: 0x9115, //CJK UNIFIED IDEOGRAPH - 0xFBB9: 0x9127, //CJK UNIFIED IDEOGRAPH - 0xFBBA: 0x91DA, //CJK UNIFIED IDEOGRAPH - 0xFBBB: 0x91D7, //CJK UNIFIED IDEOGRAPH - 0xFBBC: 0x91DE, //CJK UNIFIED IDEOGRAPH - 0xFBBD: 0x91ED, //CJK UNIFIED IDEOGRAPH - 0xFBBE: 0x91EE, //CJK UNIFIED IDEOGRAPH - 0xFBBF: 0x91E4, //CJK UNIFIED IDEOGRAPH - 0xFBC0: 0x91E5, //CJK UNIFIED IDEOGRAPH - 0xFBC1: 0x9206, //CJK UNIFIED IDEOGRAPH - 0xFBC2: 0x9210, //CJK UNIFIED IDEOGRAPH - 0xFBC3: 0x920A, //CJK UNIFIED IDEOGRAPH - 0xFBC4: 0x923A, //CJK UNIFIED IDEOGRAPH - 0xFBC5: 0x9240, //CJK UNIFIED IDEOGRAPH - 0xFBC6: 0x923C, //CJK UNIFIED IDEOGRAPH - 0xFBC7: 0x924E, //CJK UNIFIED IDEOGRAPH - 0xFBC8: 0x9259, //CJK UNIFIED IDEOGRAPH - 0xFBC9: 0x9251, //CJK UNIFIED IDEOGRAPH - 0xFBCA: 0x9239, //CJK UNIFIED IDEOGRAPH - 0xFBCB: 0x9267, //CJK UNIFIED IDEOGRAPH - 0xFBCC: 0x92A7, //CJK UNIFIED IDEOGRAPH - 0xFBCD: 0x9277, //CJK UNIFIED IDEOGRAPH - 0xFBCE: 0x9278, //CJK UNIFIED IDEOGRAPH - 0xFBCF: 0x92E7, //CJK UNIFIED IDEOGRAPH - 0xFBD0: 0x92D7, //CJK UNIFIED IDEOGRAPH - 0xFBD1: 0x92D9, //CJK UNIFIED IDEOGRAPH - 0xFBD2: 0x92D0, //CJK UNIFIED IDEOGRAPH - 0xFBD3: 0xFA27, //CJK COMPATIBILITY IDEOGRAPH - 0xFBD4: 0x92D5, //CJK UNIFIED IDEOGRAPH - 0xFBD5: 0x92E0, //CJK UNIFIED IDEOGRAPH - 0xFBD6: 0x92D3, //CJK UNIFIED IDEOGRAPH - 0xFBD7: 0x9325, //CJK UNIFIED IDEOGRAPH - 0xFBD8: 0x9321, //CJK UNIFIED IDEOGRAPH - 0xFBD9: 0x92FB, //CJK UNIFIED IDEOGRAPH - 0xFBDA: 0xFA28, //CJK COMPATIBILITY IDEOGRAPH - 0xFBDB: 0x931E, //CJK UNIFIED IDEOGRAPH - 0xFBDC: 0x92FF, //CJK UNIFIED IDEOGRAPH - 0xFBDD: 0x931D, //CJK UNIFIED IDEOGRAPH - 0xFBDE: 0x9302, //CJK UNIFIED IDEOGRAPH - 0xFBDF: 0x9370, //CJK UNIFIED IDEOGRAPH - 0xFBE0: 0x9357, //CJK UNIFIED IDEOGRAPH - 0xFBE1: 0x93A4, //CJK UNIFIED IDEOGRAPH - 0xFBE2: 0x93C6, //CJK UNIFIED IDEOGRAPH - 0xFBE3: 0x93DE, //CJK UNIFIED IDEOGRAPH - 0xFBE4: 0x93F8, //CJK UNIFIED IDEOGRAPH - 0xFBE5: 0x9431, //CJK UNIFIED IDEOGRAPH - 0xFBE6: 0x9445, //CJK UNIFIED IDEOGRAPH - 0xFBE7: 0x9448, //CJK UNIFIED IDEOGRAPH - 0xFBE8: 0x9592, //CJK UNIFIED IDEOGRAPH - 0xFBE9: 0xF9DC, //CJK COMPATIBILITY IDEOGRAPH - 0xFBEA: 0xFA29, //CJK COMPATIBILITY IDEOGRAPH - 0xFBEB: 0x969D, //CJK UNIFIED IDEOGRAPH - 0xFBEC: 0x96AF, //CJK UNIFIED IDEOGRAPH - 0xFBED: 0x9733, //CJK UNIFIED IDEOGRAPH - 0xFBEE: 0x973B, //CJK UNIFIED IDEOGRAPH - 0xFBEF: 0x9743, //CJK UNIFIED IDEOGRAPH - 0xFBF0: 0x974D, //CJK UNIFIED IDEOGRAPH - 0xFBF1: 0x974F, //CJK UNIFIED IDEOGRAPH - 0xFBF2: 0x9751, //CJK UNIFIED IDEOGRAPH - 0xFBF3: 0x9755, //CJK UNIFIED IDEOGRAPH - 0xFBF4: 0x9857, //CJK UNIFIED IDEOGRAPH - 0xFBF5: 0x9865, //CJK UNIFIED IDEOGRAPH - 0xFBF6: 0xFA2A, //CJK COMPATIBILITY IDEOGRAPH - 0xFBF7: 0xFA2B, //CJK COMPATIBILITY IDEOGRAPH - 0xFBF8: 0x9927, //CJK UNIFIED IDEOGRAPH - 0xFBF9: 0xFA2C, //CJK COMPATIBILITY IDEOGRAPH - 0xFBFA: 0x999E, //CJK UNIFIED IDEOGRAPH - 0xFBFB: 0x9A4E, //CJK UNIFIED IDEOGRAPH - 0xFBFC: 0x9AD9, //CJK UNIFIED IDEOGRAPH - 0xFC40: 0x9ADC, //CJK UNIFIED IDEOGRAPH - 0xFC41: 0x9B75, //CJK UNIFIED IDEOGRAPH - 0xFC42: 0x9B72, //CJK UNIFIED IDEOGRAPH - 0xFC43: 0x9B8F, //CJK UNIFIED IDEOGRAPH - 0xFC44: 0x9BB1, //CJK UNIFIED IDEOGRAPH - 0xFC45: 0x9BBB, //CJK UNIFIED IDEOGRAPH - 0xFC46: 0x9C00, //CJK UNIFIED IDEOGRAPH - 0xFC47: 0x9D70, //CJK UNIFIED IDEOGRAPH - 0xFC48: 0x9D6B, //CJK UNIFIED IDEOGRAPH - 0xFC49: 0xFA2D, //CJK COMPATIBILITY IDEOGRAPH - 0xFC4A: 0x9E19, //CJK UNIFIED IDEOGRAPH - 0xFC4B: 0x9ED1, //CJK UNIFIED IDEOGRAPH - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp936.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp936.go deleted file mode 100644 index d1fac12e..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp936.go +++ /dev/null @@ -1,22055 +0,0 @@ -package cp - -var cp936 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0x20AC, //EURO SIGN - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - 0xFFFD, //UNDEFINED - }, - db: map[int]rune{ - 0x8140: 0x4E02, //CJK UNIFIED IDEOGRAPH - 0x8141: 0x4E04, //CJK UNIFIED IDEOGRAPH - 0x8142: 0x4E05, //CJK UNIFIED IDEOGRAPH - 0x8143: 0x4E06, //CJK UNIFIED IDEOGRAPH - 0x8144: 0x4E0F, //CJK UNIFIED IDEOGRAPH - 0x8145: 0x4E12, //CJK UNIFIED IDEOGRAPH - 0x8146: 0x4E17, //CJK UNIFIED IDEOGRAPH - 0x8147: 0x4E1F, //CJK UNIFIED IDEOGRAPH - 0x8148: 0x4E20, //CJK UNIFIED IDEOGRAPH - 0x8149: 0x4E21, //CJK UNIFIED IDEOGRAPH - 0x814A: 0x4E23, //CJK UNIFIED IDEOGRAPH - 0x814B: 0x4E26, //CJK UNIFIED IDEOGRAPH - 0x814C: 0x4E29, //CJK UNIFIED IDEOGRAPH - 0x814D: 0x4E2E, //CJK UNIFIED IDEOGRAPH - 0x814E: 0x4E2F, //CJK UNIFIED IDEOGRAPH - 0x814F: 0x4E31, //CJK UNIFIED IDEOGRAPH - 0x8150: 0x4E33, //CJK UNIFIED IDEOGRAPH - 0x8151: 0x4E35, //CJK UNIFIED IDEOGRAPH - 0x8152: 0x4E37, //CJK UNIFIED IDEOGRAPH - 0x8153: 0x4E3C, //CJK UNIFIED IDEOGRAPH - 0x8154: 0x4E40, //CJK UNIFIED IDEOGRAPH - 0x8155: 0x4E41, //CJK UNIFIED IDEOGRAPH - 0x8156: 0x4E42, //CJK UNIFIED IDEOGRAPH - 0x8157: 0x4E44, //CJK UNIFIED IDEOGRAPH - 0x8158: 0x4E46, //CJK UNIFIED IDEOGRAPH - 0x8159: 0x4E4A, //CJK UNIFIED IDEOGRAPH - 0x815A: 0x4E51, //CJK UNIFIED IDEOGRAPH - 0x815B: 0x4E55, //CJK UNIFIED IDEOGRAPH - 0x815C: 0x4E57, //CJK UNIFIED IDEOGRAPH - 0x815D: 0x4E5A, //CJK UNIFIED IDEOGRAPH - 0x815E: 0x4E5B, //CJK UNIFIED IDEOGRAPH - 0x815F: 0x4E62, //CJK UNIFIED IDEOGRAPH - 0x8160: 0x4E63, //CJK UNIFIED IDEOGRAPH - 0x8161: 0x4E64, //CJK UNIFIED IDEOGRAPH - 0x8162: 0x4E65, //CJK UNIFIED IDEOGRAPH - 0x8163: 0x4E67, //CJK UNIFIED IDEOGRAPH - 0x8164: 0x4E68, //CJK UNIFIED IDEOGRAPH - 0x8165: 0x4E6A, //CJK UNIFIED IDEOGRAPH - 0x8166: 0x4E6B, //CJK UNIFIED IDEOGRAPH - 0x8167: 0x4E6C, //CJK UNIFIED IDEOGRAPH - 0x8168: 0x4E6D, //CJK UNIFIED IDEOGRAPH - 0x8169: 0x4E6E, //CJK UNIFIED IDEOGRAPH - 0x816A: 0x4E6F, //CJK UNIFIED IDEOGRAPH - 0x816B: 0x4E72, //CJK UNIFIED IDEOGRAPH - 0x816C: 0x4E74, //CJK UNIFIED IDEOGRAPH - 0x816D: 0x4E75, //CJK UNIFIED IDEOGRAPH - 0x816E: 0x4E76, //CJK UNIFIED IDEOGRAPH - 0x816F: 0x4E77, //CJK UNIFIED IDEOGRAPH - 0x8170: 0x4E78, //CJK UNIFIED IDEOGRAPH - 0x8171: 0x4E79, //CJK UNIFIED IDEOGRAPH - 0x8172: 0x4E7A, //CJK UNIFIED IDEOGRAPH - 0x8173: 0x4E7B, //CJK UNIFIED IDEOGRAPH - 0x8174: 0x4E7C, //CJK UNIFIED IDEOGRAPH - 0x8175: 0x4E7D, //CJK UNIFIED IDEOGRAPH - 0x8176: 0x4E7F, //CJK UNIFIED IDEOGRAPH - 0x8177: 0x4E80, //CJK UNIFIED IDEOGRAPH - 0x8178: 0x4E81, //CJK UNIFIED IDEOGRAPH - 0x8179: 0x4E82, //CJK UNIFIED IDEOGRAPH - 0x817A: 0x4E83, //CJK UNIFIED IDEOGRAPH - 0x817B: 0x4E84, //CJK UNIFIED IDEOGRAPH - 0x817C: 0x4E85, //CJK UNIFIED IDEOGRAPH - 0x817D: 0x4E87, //CJK UNIFIED IDEOGRAPH - 0x817E: 0x4E8A, //CJK UNIFIED IDEOGRAPH - 0x8180: 0x4E90, //CJK UNIFIED IDEOGRAPH - 0x8181: 0x4E96, //CJK UNIFIED IDEOGRAPH - 0x8182: 0x4E97, //CJK UNIFIED IDEOGRAPH - 0x8183: 0x4E99, //CJK UNIFIED IDEOGRAPH - 0x8184: 0x4E9C, //CJK UNIFIED IDEOGRAPH - 0x8185: 0x4E9D, //CJK UNIFIED IDEOGRAPH - 0x8186: 0x4E9E, //CJK UNIFIED IDEOGRAPH - 0x8187: 0x4EA3, //CJK UNIFIED IDEOGRAPH - 0x8188: 0x4EAA, //CJK UNIFIED IDEOGRAPH - 0x8189: 0x4EAF, //CJK UNIFIED IDEOGRAPH - 0x818A: 0x4EB0, //CJK UNIFIED IDEOGRAPH - 0x818B: 0x4EB1, //CJK UNIFIED IDEOGRAPH - 0x818C: 0x4EB4, //CJK UNIFIED IDEOGRAPH - 0x818D: 0x4EB6, //CJK UNIFIED IDEOGRAPH - 0x818E: 0x4EB7, //CJK UNIFIED IDEOGRAPH - 0x818F: 0x4EB8, //CJK UNIFIED IDEOGRAPH - 0x8190: 0x4EB9, //CJK UNIFIED IDEOGRAPH - 0x8191: 0x4EBC, //CJK UNIFIED IDEOGRAPH - 0x8192: 0x4EBD, //CJK UNIFIED IDEOGRAPH - 0x8193: 0x4EBE, //CJK UNIFIED IDEOGRAPH - 0x8194: 0x4EC8, //CJK UNIFIED IDEOGRAPH - 0x8195: 0x4ECC, //CJK UNIFIED IDEOGRAPH - 0x8196: 0x4ECF, //CJK UNIFIED IDEOGRAPH - 0x8197: 0x4ED0, //CJK UNIFIED IDEOGRAPH - 0x8198: 0x4ED2, //CJK UNIFIED IDEOGRAPH - 0x8199: 0x4EDA, //CJK UNIFIED IDEOGRAPH - 0x819A: 0x4EDB, //CJK UNIFIED IDEOGRAPH - 0x819B: 0x4EDC, //CJK UNIFIED IDEOGRAPH - 0x819C: 0x4EE0, //CJK UNIFIED IDEOGRAPH - 0x819D: 0x4EE2, //CJK UNIFIED IDEOGRAPH - 0x819E: 0x4EE6, //CJK UNIFIED IDEOGRAPH - 0x819F: 0x4EE7, //CJK UNIFIED IDEOGRAPH - 0x81A0: 0x4EE9, //CJK UNIFIED IDEOGRAPH - 0x81A1: 0x4EED, //CJK UNIFIED IDEOGRAPH - 0x81A2: 0x4EEE, //CJK UNIFIED IDEOGRAPH - 0x81A3: 0x4EEF, //CJK UNIFIED IDEOGRAPH - 0x81A4: 0x4EF1, //CJK UNIFIED IDEOGRAPH - 0x81A5: 0x4EF4, //CJK UNIFIED IDEOGRAPH - 0x81A6: 0x4EF8, //CJK UNIFIED IDEOGRAPH - 0x81A7: 0x4EF9, //CJK UNIFIED IDEOGRAPH - 0x81A8: 0x4EFA, //CJK UNIFIED IDEOGRAPH - 0x81A9: 0x4EFC, //CJK UNIFIED IDEOGRAPH - 0x81AA: 0x4EFE, //CJK UNIFIED IDEOGRAPH - 0x81AB: 0x4F00, //CJK UNIFIED IDEOGRAPH - 0x81AC: 0x4F02, //CJK UNIFIED IDEOGRAPH - 0x81AD: 0x4F03, //CJK UNIFIED IDEOGRAPH - 0x81AE: 0x4F04, //CJK UNIFIED IDEOGRAPH - 0x81AF: 0x4F05, //CJK UNIFIED IDEOGRAPH - 0x81B0: 0x4F06, //CJK UNIFIED IDEOGRAPH - 0x81B1: 0x4F07, //CJK UNIFIED IDEOGRAPH - 0x81B2: 0x4F08, //CJK UNIFIED IDEOGRAPH - 0x81B3: 0x4F0B, //CJK UNIFIED IDEOGRAPH - 0x81B4: 0x4F0C, //CJK UNIFIED IDEOGRAPH - 0x81B5: 0x4F12, //CJK UNIFIED IDEOGRAPH - 0x81B6: 0x4F13, //CJK UNIFIED IDEOGRAPH - 0x81B7: 0x4F14, //CJK UNIFIED IDEOGRAPH - 0x81B8: 0x4F15, //CJK UNIFIED IDEOGRAPH - 0x81B9: 0x4F16, //CJK UNIFIED IDEOGRAPH - 0x81BA: 0x4F1C, //CJK UNIFIED IDEOGRAPH - 0x81BB: 0x4F1D, //CJK UNIFIED IDEOGRAPH - 0x81BC: 0x4F21, //CJK UNIFIED IDEOGRAPH - 0x81BD: 0x4F23, //CJK UNIFIED IDEOGRAPH - 0x81BE: 0x4F28, //CJK UNIFIED IDEOGRAPH - 0x81BF: 0x4F29, //CJK UNIFIED IDEOGRAPH - 0x81C0: 0x4F2C, //CJK UNIFIED IDEOGRAPH - 0x81C1: 0x4F2D, //CJK UNIFIED IDEOGRAPH - 0x81C2: 0x4F2E, //CJK UNIFIED IDEOGRAPH - 0x81C3: 0x4F31, //CJK UNIFIED IDEOGRAPH - 0x81C4: 0x4F33, //CJK UNIFIED IDEOGRAPH - 0x81C5: 0x4F35, //CJK UNIFIED IDEOGRAPH - 0x81C6: 0x4F37, //CJK UNIFIED IDEOGRAPH - 0x81C7: 0x4F39, //CJK UNIFIED IDEOGRAPH - 0x81C8: 0x4F3B, //CJK UNIFIED IDEOGRAPH - 0x81C9: 0x4F3E, //CJK UNIFIED IDEOGRAPH - 0x81CA: 0x4F3F, //CJK UNIFIED IDEOGRAPH - 0x81CB: 0x4F40, //CJK UNIFIED IDEOGRAPH - 0x81CC: 0x4F41, //CJK UNIFIED IDEOGRAPH - 0x81CD: 0x4F42, //CJK UNIFIED IDEOGRAPH - 0x81CE: 0x4F44, //CJK UNIFIED IDEOGRAPH - 0x81CF: 0x4F45, //CJK UNIFIED IDEOGRAPH - 0x81D0: 0x4F47, //CJK UNIFIED IDEOGRAPH - 0x81D1: 0x4F48, //CJK UNIFIED IDEOGRAPH - 0x81D2: 0x4F49, //CJK UNIFIED IDEOGRAPH - 0x81D3: 0x4F4A, //CJK UNIFIED IDEOGRAPH - 0x81D4: 0x4F4B, //CJK UNIFIED IDEOGRAPH - 0x81D5: 0x4F4C, //CJK UNIFIED IDEOGRAPH - 0x81D6: 0x4F52, //CJK UNIFIED IDEOGRAPH - 0x81D7: 0x4F54, //CJK UNIFIED IDEOGRAPH - 0x81D8: 0x4F56, //CJK UNIFIED IDEOGRAPH - 0x81D9: 0x4F61, //CJK UNIFIED IDEOGRAPH - 0x81DA: 0x4F62, //CJK UNIFIED IDEOGRAPH - 0x81DB: 0x4F66, //CJK UNIFIED IDEOGRAPH - 0x81DC: 0x4F68, //CJK UNIFIED IDEOGRAPH - 0x81DD: 0x4F6A, //CJK UNIFIED IDEOGRAPH - 0x81DE: 0x4F6B, //CJK UNIFIED IDEOGRAPH - 0x81DF: 0x4F6D, //CJK UNIFIED IDEOGRAPH - 0x81E0: 0x4F6E, //CJK UNIFIED IDEOGRAPH - 0x81E1: 0x4F71, //CJK UNIFIED IDEOGRAPH - 0x81E2: 0x4F72, //CJK UNIFIED IDEOGRAPH - 0x81E3: 0x4F75, //CJK UNIFIED IDEOGRAPH - 0x81E4: 0x4F77, //CJK UNIFIED IDEOGRAPH - 0x81E5: 0x4F78, //CJK UNIFIED IDEOGRAPH - 0x81E6: 0x4F79, //CJK UNIFIED IDEOGRAPH - 0x81E7: 0x4F7A, //CJK UNIFIED IDEOGRAPH - 0x81E8: 0x4F7D, //CJK UNIFIED IDEOGRAPH - 0x81E9: 0x4F80, //CJK UNIFIED IDEOGRAPH - 0x81EA: 0x4F81, //CJK UNIFIED IDEOGRAPH - 0x81EB: 0x4F82, //CJK UNIFIED IDEOGRAPH - 0x81EC: 0x4F85, //CJK UNIFIED IDEOGRAPH - 0x81ED: 0x4F86, //CJK UNIFIED IDEOGRAPH - 0x81EE: 0x4F87, //CJK UNIFIED IDEOGRAPH - 0x81EF: 0x4F8A, //CJK UNIFIED IDEOGRAPH - 0x81F0: 0x4F8C, //CJK UNIFIED IDEOGRAPH - 0x81F1: 0x4F8E, //CJK UNIFIED IDEOGRAPH - 0x81F2: 0x4F90, //CJK UNIFIED IDEOGRAPH - 0x81F3: 0x4F92, //CJK UNIFIED IDEOGRAPH - 0x81F4: 0x4F93, //CJK UNIFIED IDEOGRAPH - 0x81F5: 0x4F95, //CJK UNIFIED IDEOGRAPH - 0x81F6: 0x4F96, //CJK UNIFIED IDEOGRAPH - 0x81F7: 0x4F98, //CJK UNIFIED IDEOGRAPH - 0x81F8: 0x4F99, //CJK UNIFIED IDEOGRAPH - 0x81F9: 0x4F9A, //CJK UNIFIED IDEOGRAPH - 0x81FA: 0x4F9C, //CJK UNIFIED IDEOGRAPH - 0x81FB: 0x4F9E, //CJK UNIFIED IDEOGRAPH - 0x81FC: 0x4F9F, //CJK UNIFIED IDEOGRAPH - 0x81FD: 0x4FA1, //CJK UNIFIED IDEOGRAPH - 0x81FE: 0x4FA2, //CJK UNIFIED IDEOGRAPH - 0x8240: 0x4FA4, //CJK UNIFIED IDEOGRAPH - 0x8241: 0x4FAB, //CJK UNIFIED IDEOGRAPH - 0x8242: 0x4FAD, //CJK UNIFIED IDEOGRAPH - 0x8243: 0x4FB0, //CJK UNIFIED IDEOGRAPH - 0x8244: 0x4FB1, //CJK UNIFIED IDEOGRAPH - 0x8245: 0x4FB2, //CJK UNIFIED IDEOGRAPH - 0x8246: 0x4FB3, //CJK UNIFIED IDEOGRAPH - 0x8247: 0x4FB4, //CJK UNIFIED IDEOGRAPH - 0x8248: 0x4FB6, //CJK UNIFIED IDEOGRAPH - 0x8249: 0x4FB7, //CJK UNIFIED IDEOGRAPH - 0x824A: 0x4FB8, //CJK UNIFIED IDEOGRAPH - 0x824B: 0x4FB9, //CJK UNIFIED IDEOGRAPH - 0x824C: 0x4FBA, //CJK UNIFIED IDEOGRAPH - 0x824D: 0x4FBB, //CJK UNIFIED IDEOGRAPH - 0x824E: 0x4FBC, //CJK UNIFIED IDEOGRAPH - 0x824F: 0x4FBD, //CJK UNIFIED IDEOGRAPH - 0x8250: 0x4FBE, //CJK UNIFIED IDEOGRAPH - 0x8251: 0x4FC0, //CJK UNIFIED IDEOGRAPH - 0x8252: 0x4FC1, //CJK UNIFIED IDEOGRAPH - 0x8253: 0x4FC2, //CJK UNIFIED IDEOGRAPH - 0x8254: 0x4FC6, //CJK UNIFIED IDEOGRAPH - 0x8255: 0x4FC7, //CJK UNIFIED IDEOGRAPH - 0x8256: 0x4FC8, //CJK UNIFIED IDEOGRAPH - 0x8257: 0x4FC9, //CJK UNIFIED IDEOGRAPH - 0x8258: 0x4FCB, //CJK UNIFIED IDEOGRAPH - 0x8259: 0x4FCC, //CJK UNIFIED IDEOGRAPH - 0x825A: 0x4FCD, //CJK UNIFIED IDEOGRAPH - 0x825B: 0x4FD2, //CJK UNIFIED IDEOGRAPH - 0x825C: 0x4FD3, //CJK UNIFIED IDEOGRAPH - 0x825D: 0x4FD4, //CJK UNIFIED IDEOGRAPH - 0x825E: 0x4FD5, //CJK UNIFIED IDEOGRAPH - 0x825F: 0x4FD6, //CJK UNIFIED IDEOGRAPH - 0x8260: 0x4FD9, //CJK UNIFIED IDEOGRAPH - 0x8261: 0x4FDB, //CJK UNIFIED IDEOGRAPH - 0x8262: 0x4FE0, //CJK UNIFIED IDEOGRAPH - 0x8263: 0x4FE2, //CJK UNIFIED IDEOGRAPH - 0x8264: 0x4FE4, //CJK UNIFIED IDEOGRAPH - 0x8265: 0x4FE5, //CJK UNIFIED IDEOGRAPH - 0x8266: 0x4FE7, //CJK UNIFIED IDEOGRAPH - 0x8267: 0x4FEB, //CJK UNIFIED IDEOGRAPH - 0x8268: 0x4FEC, //CJK UNIFIED IDEOGRAPH - 0x8269: 0x4FF0, //CJK UNIFIED IDEOGRAPH - 0x826A: 0x4FF2, //CJK UNIFIED IDEOGRAPH - 0x826B: 0x4FF4, //CJK UNIFIED IDEOGRAPH - 0x826C: 0x4FF5, //CJK UNIFIED IDEOGRAPH - 0x826D: 0x4FF6, //CJK UNIFIED IDEOGRAPH - 0x826E: 0x4FF7, //CJK UNIFIED IDEOGRAPH - 0x826F: 0x4FF9, //CJK UNIFIED IDEOGRAPH - 0x8270: 0x4FFB, //CJK UNIFIED IDEOGRAPH - 0x8271: 0x4FFC, //CJK UNIFIED IDEOGRAPH - 0x8272: 0x4FFD, //CJK UNIFIED IDEOGRAPH - 0x8273: 0x4FFF, //CJK UNIFIED IDEOGRAPH - 0x8274: 0x5000, //CJK UNIFIED IDEOGRAPH - 0x8275: 0x5001, //CJK UNIFIED IDEOGRAPH - 0x8276: 0x5002, //CJK UNIFIED IDEOGRAPH - 0x8277: 0x5003, //CJK UNIFIED IDEOGRAPH - 0x8278: 0x5004, //CJK UNIFIED IDEOGRAPH - 0x8279: 0x5005, //CJK UNIFIED IDEOGRAPH - 0x827A: 0x5006, //CJK UNIFIED IDEOGRAPH - 0x827B: 0x5007, //CJK UNIFIED IDEOGRAPH - 0x827C: 0x5008, //CJK UNIFIED IDEOGRAPH - 0x827D: 0x5009, //CJK UNIFIED IDEOGRAPH - 0x827E: 0x500A, //CJK UNIFIED IDEOGRAPH - 0x8280: 0x500B, //CJK UNIFIED IDEOGRAPH - 0x8281: 0x500E, //CJK UNIFIED IDEOGRAPH - 0x8282: 0x5010, //CJK UNIFIED IDEOGRAPH - 0x8283: 0x5011, //CJK UNIFIED IDEOGRAPH - 0x8284: 0x5013, //CJK UNIFIED IDEOGRAPH - 0x8285: 0x5015, //CJK UNIFIED IDEOGRAPH - 0x8286: 0x5016, //CJK UNIFIED IDEOGRAPH - 0x8287: 0x5017, //CJK UNIFIED IDEOGRAPH - 0x8288: 0x501B, //CJK UNIFIED IDEOGRAPH - 0x8289: 0x501D, //CJK UNIFIED IDEOGRAPH - 0x828A: 0x501E, //CJK UNIFIED IDEOGRAPH - 0x828B: 0x5020, //CJK UNIFIED IDEOGRAPH - 0x828C: 0x5022, //CJK UNIFIED IDEOGRAPH - 0x828D: 0x5023, //CJK UNIFIED IDEOGRAPH - 0x828E: 0x5024, //CJK UNIFIED IDEOGRAPH - 0x828F: 0x5027, //CJK UNIFIED IDEOGRAPH - 0x8290: 0x502B, //CJK UNIFIED IDEOGRAPH - 0x8291: 0x502F, //CJK UNIFIED IDEOGRAPH - 0x8292: 0x5030, //CJK UNIFIED IDEOGRAPH - 0x8293: 0x5031, //CJK UNIFIED IDEOGRAPH - 0x8294: 0x5032, //CJK UNIFIED IDEOGRAPH - 0x8295: 0x5033, //CJK UNIFIED IDEOGRAPH - 0x8296: 0x5034, //CJK UNIFIED IDEOGRAPH - 0x8297: 0x5035, //CJK UNIFIED IDEOGRAPH - 0x8298: 0x5036, //CJK UNIFIED IDEOGRAPH - 0x8299: 0x5037, //CJK UNIFIED IDEOGRAPH - 0x829A: 0x5038, //CJK UNIFIED IDEOGRAPH - 0x829B: 0x5039, //CJK UNIFIED IDEOGRAPH - 0x829C: 0x503B, //CJK UNIFIED IDEOGRAPH - 0x829D: 0x503D, //CJK UNIFIED IDEOGRAPH - 0x829E: 0x503F, //CJK UNIFIED IDEOGRAPH - 0x829F: 0x5040, //CJK UNIFIED IDEOGRAPH - 0x82A0: 0x5041, //CJK UNIFIED IDEOGRAPH - 0x82A1: 0x5042, //CJK UNIFIED IDEOGRAPH - 0x82A2: 0x5044, //CJK UNIFIED IDEOGRAPH - 0x82A3: 0x5045, //CJK UNIFIED IDEOGRAPH - 0x82A4: 0x5046, //CJK UNIFIED IDEOGRAPH - 0x82A5: 0x5049, //CJK UNIFIED IDEOGRAPH - 0x82A6: 0x504A, //CJK UNIFIED IDEOGRAPH - 0x82A7: 0x504B, //CJK UNIFIED IDEOGRAPH - 0x82A8: 0x504D, //CJK UNIFIED IDEOGRAPH - 0x82A9: 0x5050, //CJK UNIFIED IDEOGRAPH - 0x82AA: 0x5051, //CJK UNIFIED IDEOGRAPH - 0x82AB: 0x5052, //CJK UNIFIED IDEOGRAPH - 0x82AC: 0x5053, //CJK UNIFIED IDEOGRAPH - 0x82AD: 0x5054, //CJK UNIFIED IDEOGRAPH - 0x82AE: 0x5056, //CJK UNIFIED IDEOGRAPH - 0x82AF: 0x5057, //CJK UNIFIED IDEOGRAPH - 0x82B0: 0x5058, //CJK UNIFIED IDEOGRAPH - 0x82B1: 0x5059, //CJK UNIFIED IDEOGRAPH - 0x82B2: 0x505B, //CJK UNIFIED IDEOGRAPH - 0x82B3: 0x505D, //CJK UNIFIED IDEOGRAPH - 0x82B4: 0x505E, //CJK UNIFIED IDEOGRAPH - 0x82B5: 0x505F, //CJK UNIFIED IDEOGRAPH - 0x82B6: 0x5060, //CJK UNIFIED IDEOGRAPH - 0x82B7: 0x5061, //CJK UNIFIED IDEOGRAPH - 0x82B8: 0x5062, //CJK UNIFIED IDEOGRAPH - 0x82B9: 0x5063, //CJK UNIFIED IDEOGRAPH - 0x82BA: 0x5064, //CJK UNIFIED IDEOGRAPH - 0x82BB: 0x5066, //CJK UNIFIED IDEOGRAPH - 0x82BC: 0x5067, //CJK UNIFIED IDEOGRAPH - 0x82BD: 0x5068, //CJK UNIFIED IDEOGRAPH - 0x82BE: 0x5069, //CJK UNIFIED IDEOGRAPH - 0x82BF: 0x506A, //CJK UNIFIED IDEOGRAPH - 0x82C0: 0x506B, //CJK UNIFIED IDEOGRAPH - 0x82C1: 0x506D, //CJK UNIFIED IDEOGRAPH - 0x82C2: 0x506E, //CJK UNIFIED IDEOGRAPH - 0x82C3: 0x506F, //CJK UNIFIED IDEOGRAPH - 0x82C4: 0x5070, //CJK UNIFIED IDEOGRAPH - 0x82C5: 0x5071, //CJK UNIFIED IDEOGRAPH - 0x82C6: 0x5072, //CJK UNIFIED IDEOGRAPH - 0x82C7: 0x5073, //CJK UNIFIED IDEOGRAPH - 0x82C8: 0x5074, //CJK UNIFIED IDEOGRAPH - 0x82C9: 0x5075, //CJK UNIFIED IDEOGRAPH - 0x82CA: 0x5078, //CJK UNIFIED IDEOGRAPH - 0x82CB: 0x5079, //CJK UNIFIED IDEOGRAPH - 0x82CC: 0x507A, //CJK UNIFIED IDEOGRAPH - 0x82CD: 0x507C, //CJK UNIFIED IDEOGRAPH - 0x82CE: 0x507D, //CJK UNIFIED IDEOGRAPH - 0x82CF: 0x5081, //CJK UNIFIED IDEOGRAPH - 0x82D0: 0x5082, //CJK UNIFIED IDEOGRAPH - 0x82D1: 0x5083, //CJK UNIFIED IDEOGRAPH - 0x82D2: 0x5084, //CJK UNIFIED IDEOGRAPH - 0x82D3: 0x5086, //CJK UNIFIED IDEOGRAPH - 0x82D4: 0x5087, //CJK UNIFIED IDEOGRAPH - 0x82D5: 0x5089, //CJK UNIFIED IDEOGRAPH - 0x82D6: 0x508A, //CJK UNIFIED IDEOGRAPH - 0x82D7: 0x508B, //CJK UNIFIED IDEOGRAPH - 0x82D8: 0x508C, //CJK UNIFIED IDEOGRAPH - 0x82D9: 0x508E, //CJK UNIFIED IDEOGRAPH - 0x82DA: 0x508F, //CJK UNIFIED IDEOGRAPH - 0x82DB: 0x5090, //CJK UNIFIED IDEOGRAPH - 0x82DC: 0x5091, //CJK UNIFIED IDEOGRAPH - 0x82DD: 0x5092, //CJK UNIFIED IDEOGRAPH - 0x82DE: 0x5093, //CJK UNIFIED IDEOGRAPH - 0x82DF: 0x5094, //CJK UNIFIED IDEOGRAPH - 0x82E0: 0x5095, //CJK UNIFIED IDEOGRAPH - 0x82E1: 0x5096, //CJK UNIFIED IDEOGRAPH - 0x82E2: 0x5097, //CJK UNIFIED IDEOGRAPH - 0x82E3: 0x5098, //CJK UNIFIED IDEOGRAPH - 0x82E4: 0x5099, //CJK UNIFIED IDEOGRAPH - 0x82E5: 0x509A, //CJK UNIFIED IDEOGRAPH - 0x82E6: 0x509B, //CJK UNIFIED IDEOGRAPH - 0x82E7: 0x509C, //CJK UNIFIED IDEOGRAPH - 0x82E8: 0x509D, //CJK UNIFIED IDEOGRAPH - 0x82E9: 0x509E, //CJK UNIFIED IDEOGRAPH - 0x82EA: 0x509F, //CJK UNIFIED IDEOGRAPH - 0x82EB: 0x50A0, //CJK UNIFIED IDEOGRAPH - 0x82EC: 0x50A1, //CJK UNIFIED IDEOGRAPH - 0x82ED: 0x50A2, //CJK UNIFIED IDEOGRAPH - 0x82EE: 0x50A4, //CJK UNIFIED IDEOGRAPH - 0x82EF: 0x50A6, //CJK UNIFIED IDEOGRAPH - 0x82F0: 0x50AA, //CJK UNIFIED IDEOGRAPH - 0x82F1: 0x50AB, //CJK UNIFIED IDEOGRAPH - 0x82F2: 0x50AD, //CJK UNIFIED IDEOGRAPH - 0x82F3: 0x50AE, //CJK UNIFIED IDEOGRAPH - 0x82F4: 0x50AF, //CJK UNIFIED IDEOGRAPH - 0x82F5: 0x50B0, //CJK UNIFIED IDEOGRAPH - 0x82F6: 0x50B1, //CJK UNIFIED IDEOGRAPH - 0x82F7: 0x50B3, //CJK UNIFIED IDEOGRAPH - 0x82F8: 0x50B4, //CJK UNIFIED IDEOGRAPH - 0x82F9: 0x50B5, //CJK UNIFIED IDEOGRAPH - 0x82FA: 0x50B6, //CJK UNIFIED IDEOGRAPH - 0x82FB: 0x50B7, //CJK UNIFIED IDEOGRAPH - 0x82FC: 0x50B8, //CJK UNIFIED IDEOGRAPH - 0x82FD: 0x50B9, //CJK UNIFIED IDEOGRAPH - 0x82FE: 0x50BC, //CJK UNIFIED IDEOGRAPH - 0x8340: 0x50BD, //CJK UNIFIED IDEOGRAPH - 0x8341: 0x50BE, //CJK UNIFIED IDEOGRAPH - 0x8342: 0x50BF, //CJK UNIFIED IDEOGRAPH - 0x8343: 0x50C0, //CJK UNIFIED IDEOGRAPH - 0x8344: 0x50C1, //CJK UNIFIED IDEOGRAPH - 0x8345: 0x50C2, //CJK UNIFIED IDEOGRAPH - 0x8346: 0x50C3, //CJK UNIFIED IDEOGRAPH - 0x8347: 0x50C4, //CJK UNIFIED IDEOGRAPH - 0x8348: 0x50C5, //CJK UNIFIED IDEOGRAPH - 0x8349: 0x50C6, //CJK UNIFIED IDEOGRAPH - 0x834A: 0x50C7, //CJK UNIFIED IDEOGRAPH - 0x834B: 0x50C8, //CJK UNIFIED IDEOGRAPH - 0x834C: 0x50C9, //CJK UNIFIED IDEOGRAPH - 0x834D: 0x50CA, //CJK UNIFIED IDEOGRAPH - 0x834E: 0x50CB, //CJK UNIFIED IDEOGRAPH - 0x834F: 0x50CC, //CJK UNIFIED IDEOGRAPH - 0x8350: 0x50CD, //CJK UNIFIED IDEOGRAPH - 0x8351: 0x50CE, //CJK UNIFIED IDEOGRAPH - 0x8352: 0x50D0, //CJK UNIFIED IDEOGRAPH - 0x8353: 0x50D1, //CJK UNIFIED IDEOGRAPH - 0x8354: 0x50D2, //CJK UNIFIED IDEOGRAPH - 0x8355: 0x50D3, //CJK UNIFIED IDEOGRAPH - 0x8356: 0x50D4, //CJK UNIFIED IDEOGRAPH - 0x8357: 0x50D5, //CJK UNIFIED IDEOGRAPH - 0x8358: 0x50D7, //CJK UNIFIED IDEOGRAPH - 0x8359: 0x50D8, //CJK UNIFIED IDEOGRAPH - 0x835A: 0x50D9, //CJK UNIFIED IDEOGRAPH - 0x835B: 0x50DB, //CJK UNIFIED IDEOGRAPH - 0x835C: 0x50DC, //CJK UNIFIED IDEOGRAPH - 0x835D: 0x50DD, //CJK UNIFIED IDEOGRAPH - 0x835E: 0x50DE, //CJK UNIFIED IDEOGRAPH - 0x835F: 0x50DF, //CJK UNIFIED IDEOGRAPH - 0x8360: 0x50E0, //CJK UNIFIED IDEOGRAPH - 0x8361: 0x50E1, //CJK UNIFIED IDEOGRAPH - 0x8362: 0x50E2, //CJK UNIFIED IDEOGRAPH - 0x8363: 0x50E3, //CJK UNIFIED IDEOGRAPH - 0x8364: 0x50E4, //CJK UNIFIED IDEOGRAPH - 0x8365: 0x50E5, //CJK UNIFIED IDEOGRAPH - 0x8366: 0x50E8, //CJK UNIFIED IDEOGRAPH - 0x8367: 0x50E9, //CJK UNIFIED IDEOGRAPH - 0x8368: 0x50EA, //CJK UNIFIED IDEOGRAPH - 0x8369: 0x50EB, //CJK UNIFIED IDEOGRAPH - 0x836A: 0x50EF, //CJK UNIFIED IDEOGRAPH - 0x836B: 0x50F0, //CJK UNIFIED IDEOGRAPH - 0x836C: 0x50F1, //CJK UNIFIED IDEOGRAPH - 0x836D: 0x50F2, //CJK UNIFIED IDEOGRAPH - 0x836E: 0x50F4, //CJK UNIFIED IDEOGRAPH - 0x836F: 0x50F6, //CJK UNIFIED IDEOGRAPH - 0x8370: 0x50F7, //CJK UNIFIED IDEOGRAPH - 0x8371: 0x50F8, //CJK UNIFIED IDEOGRAPH - 0x8372: 0x50F9, //CJK UNIFIED IDEOGRAPH - 0x8373: 0x50FA, //CJK UNIFIED IDEOGRAPH - 0x8374: 0x50FC, //CJK UNIFIED IDEOGRAPH - 0x8375: 0x50FD, //CJK UNIFIED IDEOGRAPH - 0x8376: 0x50FE, //CJK UNIFIED IDEOGRAPH - 0x8377: 0x50FF, //CJK UNIFIED IDEOGRAPH - 0x8378: 0x5100, //CJK UNIFIED IDEOGRAPH - 0x8379: 0x5101, //CJK UNIFIED IDEOGRAPH - 0x837A: 0x5102, //CJK UNIFIED IDEOGRAPH - 0x837B: 0x5103, //CJK UNIFIED IDEOGRAPH - 0x837C: 0x5104, //CJK UNIFIED IDEOGRAPH - 0x837D: 0x5105, //CJK UNIFIED IDEOGRAPH - 0x837E: 0x5108, //CJK UNIFIED IDEOGRAPH - 0x8380: 0x5109, //CJK UNIFIED IDEOGRAPH - 0x8381: 0x510A, //CJK UNIFIED IDEOGRAPH - 0x8382: 0x510C, //CJK UNIFIED IDEOGRAPH - 0x8383: 0x510D, //CJK UNIFIED IDEOGRAPH - 0x8384: 0x510E, //CJK UNIFIED IDEOGRAPH - 0x8385: 0x510F, //CJK UNIFIED IDEOGRAPH - 0x8386: 0x5110, //CJK UNIFIED IDEOGRAPH - 0x8387: 0x5111, //CJK UNIFIED IDEOGRAPH - 0x8388: 0x5113, //CJK UNIFIED IDEOGRAPH - 0x8389: 0x5114, //CJK UNIFIED IDEOGRAPH - 0x838A: 0x5115, //CJK UNIFIED IDEOGRAPH - 0x838B: 0x5116, //CJK UNIFIED IDEOGRAPH - 0x838C: 0x5117, //CJK UNIFIED IDEOGRAPH - 0x838D: 0x5118, //CJK UNIFIED IDEOGRAPH - 0x838E: 0x5119, //CJK UNIFIED IDEOGRAPH - 0x838F: 0x511A, //CJK UNIFIED IDEOGRAPH - 0x8390: 0x511B, //CJK UNIFIED IDEOGRAPH - 0x8391: 0x511C, //CJK UNIFIED IDEOGRAPH - 0x8392: 0x511D, //CJK UNIFIED IDEOGRAPH - 0x8393: 0x511E, //CJK UNIFIED IDEOGRAPH - 0x8394: 0x511F, //CJK UNIFIED IDEOGRAPH - 0x8395: 0x5120, //CJK UNIFIED IDEOGRAPH - 0x8396: 0x5122, //CJK UNIFIED IDEOGRAPH - 0x8397: 0x5123, //CJK UNIFIED IDEOGRAPH - 0x8398: 0x5124, //CJK UNIFIED IDEOGRAPH - 0x8399: 0x5125, //CJK UNIFIED IDEOGRAPH - 0x839A: 0x5126, //CJK UNIFIED IDEOGRAPH - 0x839B: 0x5127, //CJK UNIFIED IDEOGRAPH - 0x839C: 0x5128, //CJK UNIFIED IDEOGRAPH - 0x839D: 0x5129, //CJK UNIFIED IDEOGRAPH - 0x839E: 0x512A, //CJK UNIFIED IDEOGRAPH - 0x839F: 0x512B, //CJK UNIFIED IDEOGRAPH - 0x83A0: 0x512C, //CJK UNIFIED IDEOGRAPH - 0x83A1: 0x512D, //CJK UNIFIED IDEOGRAPH - 0x83A2: 0x512E, //CJK UNIFIED IDEOGRAPH - 0x83A3: 0x512F, //CJK UNIFIED IDEOGRAPH - 0x83A4: 0x5130, //CJK UNIFIED IDEOGRAPH - 0x83A5: 0x5131, //CJK UNIFIED IDEOGRAPH - 0x83A6: 0x5132, //CJK UNIFIED IDEOGRAPH - 0x83A7: 0x5133, //CJK UNIFIED IDEOGRAPH - 0x83A8: 0x5134, //CJK UNIFIED IDEOGRAPH - 0x83A9: 0x5135, //CJK UNIFIED IDEOGRAPH - 0x83AA: 0x5136, //CJK UNIFIED IDEOGRAPH - 0x83AB: 0x5137, //CJK UNIFIED IDEOGRAPH - 0x83AC: 0x5138, //CJK UNIFIED IDEOGRAPH - 0x83AD: 0x5139, //CJK UNIFIED IDEOGRAPH - 0x83AE: 0x513A, //CJK UNIFIED IDEOGRAPH - 0x83AF: 0x513B, //CJK UNIFIED IDEOGRAPH - 0x83B0: 0x513C, //CJK UNIFIED IDEOGRAPH - 0x83B1: 0x513D, //CJK UNIFIED IDEOGRAPH - 0x83B2: 0x513E, //CJK UNIFIED IDEOGRAPH - 0x83B3: 0x5142, //CJK UNIFIED IDEOGRAPH - 0x83B4: 0x5147, //CJK UNIFIED IDEOGRAPH - 0x83B5: 0x514A, //CJK UNIFIED IDEOGRAPH - 0x83B6: 0x514C, //CJK UNIFIED IDEOGRAPH - 0x83B7: 0x514E, //CJK UNIFIED IDEOGRAPH - 0x83B8: 0x514F, //CJK UNIFIED IDEOGRAPH - 0x83B9: 0x5150, //CJK UNIFIED IDEOGRAPH - 0x83BA: 0x5152, //CJK UNIFIED IDEOGRAPH - 0x83BB: 0x5153, //CJK UNIFIED IDEOGRAPH - 0x83BC: 0x5157, //CJK UNIFIED IDEOGRAPH - 0x83BD: 0x5158, //CJK UNIFIED IDEOGRAPH - 0x83BE: 0x5159, //CJK UNIFIED IDEOGRAPH - 0x83BF: 0x515B, //CJK UNIFIED IDEOGRAPH - 0x83C0: 0x515D, //CJK UNIFIED IDEOGRAPH - 0x83C1: 0x515E, //CJK UNIFIED IDEOGRAPH - 0x83C2: 0x515F, //CJK UNIFIED IDEOGRAPH - 0x83C3: 0x5160, //CJK UNIFIED IDEOGRAPH - 0x83C4: 0x5161, //CJK UNIFIED IDEOGRAPH - 0x83C5: 0x5163, //CJK UNIFIED IDEOGRAPH - 0x83C6: 0x5164, //CJK UNIFIED IDEOGRAPH - 0x83C7: 0x5166, //CJK UNIFIED IDEOGRAPH - 0x83C8: 0x5167, //CJK UNIFIED IDEOGRAPH - 0x83C9: 0x5169, //CJK UNIFIED IDEOGRAPH - 0x83CA: 0x516A, //CJK UNIFIED IDEOGRAPH - 0x83CB: 0x516F, //CJK UNIFIED IDEOGRAPH - 0x83CC: 0x5172, //CJK UNIFIED IDEOGRAPH - 0x83CD: 0x517A, //CJK UNIFIED IDEOGRAPH - 0x83CE: 0x517E, //CJK UNIFIED IDEOGRAPH - 0x83CF: 0x517F, //CJK UNIFIED IDEOGRAPH - 0x83D0: 0x5183, //CJK UNIFIED IDEOGRAPH - 0x83D1: 0x5184, //CJK UNIFIED IDEOGRAPH - 0x83D2: 0x5186, //CJK UNIFIED IDEOGRAPH - 0x83D3: 0x5187, //CJK UNIFIED IDEOGRAPH - 0x83D4: 0x518A, //CJK UNIFIED IDEOGRAPH - 0x83D5: 0x518B, //CJK UNIFIED IDEOGRAPH - 0x83D6: 0x518E, //CJK UNIFIED IDEOGRAPH - 0x83D7: 0x518F, //CJK UNIFIED IDEOGRAPH - 0x83D8: 0x5190, //CJK UNIFIED IDEOGRAPH - 0x83D9: 0x5191, //CJK UNIFIED IDEOGRAPH - 0x83DA: 0x5193, //CJK UNIFIED IDEOGRAPH - 0x83DB: 0x5194, //CJK UNIFIED IDEOGRAPH - 0x83DC: 0x5198, //CJK UNIFIED IDEOGRAPH - 0x83DD: 0x519A, //CJK UNIFIED IDEOGRAPH - 0x83DE: 0x519D, //CJK UNIFIED IDEOGRAPH - 0x83DF: 0x519E, //CJK UNIFIED IDEOGRAPH - 0x83E0: 0x519F, //CJK UNIFIED IDEOGRAPH - 0x83E1: 0x51A1, //CJK UNIFIED IDEOGRAPH - 0x83E2: 0x51A3, //CJK UNIFIED IDEOGRAPH - 0x83E3: 0x51A6, //CJK UNIFIED IDEOGRAPH - 0x83E4: 0x51A7, //CJK UNIFIED IDEOGRAPH - 0x83E5: 0x51A8, //CJK UNIFIED IDEOGRAPH - 0x83E6: 0x51A9, //CJK UNIFIED IDEOGRAPH - 0x83E7: 0x51AA, //CJK UNIFIED IDEOGRAPH - 0x83E8: 0x51AD, //CJK UNIFIED IDEOGRAPH - 0x83E9: 0x51AE, //CJK UNIFIED IDEOGRAPH - 0x83EA: 0x51B4, //CJK UNIFIED IDEOGRAPH - 0x83EB: 0x51B8, //CJK UNIFIED IDEOGRAPH - 0x83EC: 0x51B9, //CJK UNIFIED IDEOGRAPH - 0x83ED: 0x51BA, //CJK UNIFIED IDEOGRAPH - 0x83EE: 0x51BE, //CJK UNIFIED IDEOGRAPH - 0x83EF: 0x51BF, //CJK UNIFIED IDEOGRAPH - 0x83F0: 0x51C1, //CJK UNIFIED IDEOGRAPH - 0x83F1: 0x51C2, //CJK UNIFIED IDEOGRAPH - 0x83F2: 0x51C3, //CJK UNIFIED IDEOGRAPH - 0x83F3: 0x51C5, //CJK UNIFIED IDEOGRAPH - 0x83F4: 0x51C8, //CJK UNIFIED IDEOGRAPH - 0x83F5: 0x51CA, //CJK UNIFIED IDEOGRAPH - 0x83F6: 0x51CD, //CJK UNIFIED IDEOGRAPH - 0x83F7: 0x51CE, //CJK UNIFIED IDEOGRAPH - 0x83F8: 0x51D0, //CJK UNIFIED IDEOGRAPH - 0x83F9: 0x51D2, //CJK UNIFIED IDEOGRAPH - 0x83FA: 0x51D3, //CJK UNIFIED IDEOGRAPH - 0x83FB: 0x51D4, //CJK UNIFIED IDEOGRAPH - 0x83FC: 0x51D5, //CJK UNIFIED IDEOGRAPH - 0x83FD: 0x51D6, //CJK UNIFIED IDEOGRAPH - 0x83FE: 0x51D7, //CJK UNIFIED IDEOGRAPH - 0x8440: 0x51D8, //CJK UNIFIED IDEOGRAPH - 0x8441: 0x51D9, //CJK UNIFIED IDEOGRAPH - 0x8442: 0x51DA, //CJK UNIFIED IDEOGRAPH - 0x8443: 0x51DC, //CJK UNIFIED IDEOGRAPH - 0x8444: 0x51DE, //CJK UNIFIED IDEOGRAPH - 0x8445: 0x51DF, //CJK UNIFIED IDEOGRAPH - 0x8446: 0x51E2, //CJK UNIFIED IDEOGRAPH - 0x8447: 0x51E3, //CJK UNIFIED IDEOGRAPH - 0x8448: 0x51E5, //CJK UNIFIED IDEOGRAPH - 0x8449: 0x51E6, //CJK UNIFIED IDEOGRAPH - 0x844A: 0x51E7, //CJK UNIFIED IDEOGRAPH - 0x844B: 0x51E8, //CJK UNIFIED IDEOGRAPH - 0x844C: 0x51E9, //CJK UNIFIED IDEOGRAPH - 0x844D: 0x51EA, //CJK UNIFIED IDEOGRAPH - 0x844E: 0x51EC, //CJK UNIFIED IDEOGRAPH - 0x844F: 0x51EE, //CJK UNIFIED IDEOGRAPH - 0x8450: 0x51F1, //CJK UNIFIED IDEOGRAPH - 0x8451: 0x51F2, //CJK UNIFIED IDEOGRAPH - 0x8452: 0x51F4, //CJK UNIFIED IDEOGRAPH - 0x8453: 0x51F7, //CJK UNIFIED IDEOGRAPH - 0x8454: 0x51FE, //CJK UNIFIED IDEOGRAPH - 0x8455: 0x5204, //CJK UNIFIED IDEOGRAPH - 0x8456: 0x5205, //CJK UNIFIED IDEOGRAPH - 0x8457: 0x5209, //CJK UNIFIED IDEOGRAPH - 0x8458: 0x520B, //CJK UNIFIED IDEOGRAPH - 0x8459: 0x520C, //CJK UNIFIED IDEOGRAPH - 0x845A: 0x520F, //CJK UNIFIED IDEOGRAPH - 0x845B: 0x5210, //CJK UNIFIED IDEOGRAPH - 0x845C: 0x5213, //CJK UNIFIED IDEOGRAPH - 0x845D: 0x5214, //CJK UNIFIED IDEOGRAPH - 0x845E: 0x5215, //CJK UNIFIED IDEOGRAPH - 0x845F: 0x521C, //CJK UNIFIED IDEOGRAPH - 0x8460: 0x521E, //CJK UNIFIED IDEOGRAPH - 0x8461: 0x521F, //CJK UNIFIED IDEOGRAPH - 0x8462: 0x5221, //CJK UNIFIED IDEOGRAPH - 0x8463: 0x5222, //CJK UNIFIED IDEOGRAPH - 0x8464: 0x5223, //CJK UNIFIED IDEOGRAPH - 0x8465: 0x5225, //CJK UNIFIED IDEOGRAPH - 0x8466: 0x5226, //CJK UNIFIED IDEOGRAPH - 0x8467: 0x5227, //CJK UNIFIED IDEOGRAPH - 0x8468: 0x522A, //CJK UNIFIED IDEOGRAPH - 0x8469: 0x522C, //CJK UNIFIED IDEOGRAPH - 0x846A: 0x522F, //CJK UNIFIED IDEOGRAPH - 0x846B: 0x5231, //CJK UNIFIED IDEOGRAPH - 0x846C: 0x5232, //CJK UNIFIED IDEOGRAPH - 0x846D: 0x5234, //CJK UNIFIED IDEOGRAPH - 0x846E: 0x5235, //CJK UNIFIED IDEOGRAPH - 0x846F: 0x523C, //CJK UNIFIED IDEOGRAPH - 0x8470: 0x523E, //CJK UNIFIED IDEOGRAPH - 0x8471: 0x5244, //CJK UNIFIED IDEOGRAPH - 0x8472: 0x5245, //CJK UNIFIED IDEOGRAPH - 0x8473: 0x5246, //CJK UNIFIED IDEOGRAPH - 0x8474: 0x5247, //CJK UNIFIED IDEOGRAPH - 0x8475: 0x5248, //CJK UNIFIED IDEOGRAPH - 0x8476: 0x5249, //CJK UNIFIED IDEOGRAPH - 0x8477: 0x524B, //CJK UNIFIED IDEOGRAPH - 0x8478: 0x524E, //CJK UNIFIED IDEOGRAPH - 0x8479: 0x524F, //CJK UNIFIED IDEOGRAPH - 0x847A: 0x5252, //CJK UNIFIED IDEOGRAPH - 0x847B: 0x5253, //CJK UNIFIED IDEOGRAPH - 0x847C: 0x5255, //CJK UNIFIED IDEOGRAPH - 0x847D: 0x5257, //CJK UNIFIED IDEOGRAPH - 0x847E: 0x5258, //CJK UNIFIED IDEOGRAPH - 0x8480: 0x5259, //CJK UNIFIED IDEOGRAPH - 0x8481: 0x525A, //CJK UNIFIED IDEOGRAPH - 0x8482: 0x525B, //CJK UNIFIED IDEOGRAPH - 0x8483: 0x525D, //CJK UNIFIED IDEOGRAPH - 0x8484: 0x525F, //CJK UNIFIED IDEOGRAPH - 0x8485: 0x5260, //CJK UNIFIED IDEOGRAPH - 0x8486: 0x5262, //CJK UNIFIED IDEOGRAPH - 0x8487: 0x5263, //CJK UNIFIED IDEOGRAPH - 0x8488: 0x5264, //CJK UNIFIED IDEOGRAPH - 0x8489: 0x5266, //CJK UNIFIED IDEOGRAPH - 0x848A: 0x5268, //CJK UNIFIED IDEOGRAPH - 0x848B: 0x526B, //CJK UNIFIED IDEOGRAPH - 0x848C: 0x526C, //CJK UNIFIED IDEOGRAPH - 0x848D: 0x526D, //CJK UNIFIED IDEOGRAPH - 0x848E: 0x526E, //CJK UNIFIED IDEOGRAPH - 0x848F: 0x5270, //CJK UNIFIED IDEOGRAPH - 0x8490: 0x5271, //CJK UNIFIED IDEOGRAPH - 0x8491: 0x5273, //CJK UNIFIED IDEOGRAPH - 0x8492: 0x5274, //CJK UNIFIED IDEOGRAPH - 0x8493: 0x5275, //CJK UNIFIED IDEOGRAPH - 0x8494: 0x5276, //CJK UNIFIED IDEOGRAPH - 0x8495: 0x5277, //CJK UNIFIED IDEOGRAPH - 0x8496: 0x5278, //CJK UNIFIED IDEOGRAPH - 0x8497: 0x5279, //CJK UNIFIED IDEOGRAPH - 0x8498: 0x527A, //CJK UNIFIED IDEOGRAPH - 0x8499: 0x527B, //CJK UNIFIED IDEOGRAPH - 0x849A: 0x527C, //CJK UNIFIED IDEOGRAPH - 0x849B: 0x527E, //CJK UNIFIED IDEOGRAPH - 0x849C: 0x5280, //CJK UNIFIED IDEOGRAPH - 0x849D: 0x5283, //CJK UNIFIED IDEOGRAPH - 0x849E: 0x5284, //CJK UNIFIED IDEOGRAPH - 0x849F: 0x5285, //CJK UNIFIED IDEOGRAPH - 0x84A0: 0x5286, //CJK UNIFIED IDEOGRAPH - 0x84A1: 0x5287, //CJK UNIFIED IDEOGRAPH - 0x84A2: 0x5289, //CJK UNIFIED IDEOGRAPH - 0x84A3: 0x528A, //CJK UNIFIED IDEOGRAPH - 0x84A4: 0x528B, //CJK UNIFIED IDEOGRAPH - 0x84A5: 0x528C, //CJK UNIFIED IDEOGRAPH - 0x84A6: 0x528D, //CJK UNIFIED IDEOGRAPH - 0x84A7: 0x528E, //CJK UNIFIED IDEOGRAPH - 0x84A8: 0x528F, //CJK UNIFIED IDEOGRAPH - 0x84A9: 0x5291, //CJK UNIFIED IDEOGRAPH - 0x84AA: 0x5292, //CJK UNIFIED IDEOGRAPH - 0x84AB: 0x5294, //CJK UNIFIED IDEOGRAPH - 0x84AC: 0x5295, //CJK UNIFIED IDEOGRAPH - 0x84AD: 0x5296, //CJK UNIFIED IDEOGRAPH - 0x84AE: 0x5297, //CJK UNIFIED IDEOGRAPH - 0x84AF: 0x5298, //CJK UNIFIED IDEOGRAPH - 0x84B0: 0x5299, //CJK UNIFIED IDEOGRAPH - 0x84B1: 0x529A, //CJK UNIFIED IDEOGRAPH - 0x84B2: 0x529C, //CJK UNIFIED IDEOGRAPH - 0x84B3: 0x52A4, //CJK UNIFIED IDEOGRAPH - 0x84B4: 0x52A5, //CJK UNIFIED IDEOGRAPH - 0x84B5: 0x52A6, //CJK UNIFIED IDEOGRAPH - 0x84B6: 0x52A7, //CJK UNIFIED IDEOGRAPH - 0x84B7: 0x52AE, //CJK UNIFIED IDEOGRAPH - 0x84B8: 0x52AF, //CJK UNIFIED IDEOGRAPH - 0x84B9: 0x52B0, //CJK UNIFIED IDEOGRAPH - 0x84BA: 0x52B4, //CJK UNIFIED IDEOGRAPH - 0x84BB: 0x52B5, //CJK UNIFIED IDEOGRAPH - 0x84BC: 0x52B6, //CJK UNIFIED IDEOGRAPH - 0x84BD: 0x52B7, //CJK UNIFIED IDEOGRAPH - 0x84BE: 0x52B8, //CJK UNIFIED IDEOGRAPH - 0x84BF: 0x52B9, //CJK UNIFIED IDEOGRAPH - 0x84C0: 0x52BA, //CJK UNIFIED IDEOGRAPH - 0x84C1: 0x52BB, //CJK UNIFIED IDEOGRAPH - 0x84C2: 0x52BC, //CJK UNIFIED IDEOGRAPH - 0x84C3: 0x52BD, //CJK UNIFIED IDEOGRAPH - 0x84C4: 0x52C0, //CJK UNIFIED IDEOGRAPH - 0x84C5: 0x52C1, //CJK UNIFIED IDEOGRAPH - 0x84C6: 0x52C2, //CJK UNIFIED IDEOGRAPH - 0x84C7: 0x52C4, //CJK UNIFIED IDEOGRAPH - 0x84C8: 0x52C5, //CJK UNIFIED IDEOGRAPH - 0x84C9: 0x52C6, //CJK UNIFIED IDEOGRAPH - 0x84CA: 0x52C8, //CJK UNIFIED IDEOGRAPH - 0x84CB: 0x52CA, //CJK UNIFIED IDEOGRAPH - 0x84CC: 0x52CC, //CJK UNIFIED IDEOGRAPH - 0x84CD: 0x52CD, //CJK UNIFIED IDEOGRAPH - 0x84CE: 0x52CE, //CJK UNIFIED IDEOGRAPH - 0x84CF: 0x52CF, //CJK UNIFIED IDEOGRAPH - 0x84D0: 0x52D1, //CJK UNIFIED IDEOGRAPH - 0x84D1: 0x52D3, //CJK UNIFIED IDEOGRAPH - 0x84D2: 0x52D4, //CJK UNIFIED IDEOGRAPH - 0x84D3: 0x52D5, //CJK UNIFIED IDEOGRAPH - 0x84D4: 0x52D7, //CJK UNIFIED IDEOGRAPH - 0x84D5: 0x52D9, //CJK UNIFIED IDEOGRAPH - 0x84D6: 0x52DA, //CJK UNIFIED IDEOGRAPH - 0x84D7: 0x52DB, //CJK UNIFIED IDEOGRAPH - 0x84D8: 0x52DC, //CJK UNIFIED IDEOGRAPH - 0x84D9: 0x52DD, //CJK UNIFIED IDEOGRAPH - 0x84DA: 0x52DE, //CJK UNIFIED IDEOGRAPH - 0x84DB: 0x52E0, //CJK UNIFIED IDEOGRAPH - 0x84DC: 0x52E1, //CJK UNIFIED IDEOGRAPH - 0x84DD: 0x52E2, //CJK UNIFIED IDEOGRAPH - 0x84DE: 0x52E3, //CJK UNIFIED IDEOGRAPH - 0x84DF: 0x52E5, //CJK UNIFIED IDEOGRAPH - 0x84E0: 0x52E6, //CJK UNIFIED IDEOGRAPH - 0x84E1: 0x52E7, //CJK UNIFIED IDEOGRAPH - 0x84E2: 0x52E8, //CJK UNIFIED IDEOGRAPH - 0x84E3: 0x52E9, //CJK UNIFIED IDEOGRAPH - 0x84E4: 0x52EA, //CJK UNIFIED IDEOGRAPH - 0x84E5: 0x52EB, //CJK UNIFIED IDEOGRAPH - 0x84E6: 0x52EC, //CJK UNIFIED IDEOGRAPH - 0x84E7: 0x52ED, //CJK UNIFIED IDEOGRAPH - 0x84E8: 0x52EE, //CJK UNIFIED IDEOGRAPH - 0x84E9: 0x52EF, //CJK UNIFIED IDEOGRAPH - 0x84EA: 0x52F1, //CJK UNIFIED IDEOGRAPH - 0x84EB: 0x52F2, //CJK UNIFIED IDEOGRAPH - 0x84EC: 0x52F3, //CJK UNIFIED IDEOGRAPH - 0x84ED: 0x52F4, //CJK UNIFIED IDEOGRAPH - 0x84EE: 0x52F5, //CJK UNIFIED IDEOGRAPH - 0x84EF: 0x52F6, //CJK UNIFIED IDEOGRAPH - 0x84F0: 0x52F7, //CJK UNIFIED IDEOGRAPH - 0x84F1: 0x52F8, //CJK UNIFIED IDEOGRAPH - 0x84F2: 0x52FB, //CJK UNIFIED IDEOGRAPH - 0x84F3: 0x52FC, //CJK UNIFIED IDEOGRAPH - 0x84F4: 0x52FD, //CJK UNIFIED IDEOGRAPH - 0x84F5: 0x5301, //CJK UNIFIED IDEOGRAPH - 0x84F6: 0x5302, //CJK UNIFIED IDEOGRAPH - 0x84F7: 0x5303, //CJK UNIFIED IDEOGRAPH - 0x84F8: 0x5304, //CJK UNIFIED IDEOGRAPH - 0x84F9: 0x5307, //CJK UNIFIED IDEOGRAPH - 0x84FA: 0x5309, //CJK UNIFIED IDEOGRAPH - 0x84FB: 0x530A, //CJK UNIFIED IDEOGRAPH - 0x84FC: 0x530B, //CJK UNIFIED IDEOGRAPH - 0x84FD: 0x530C, //CJK UNIFIED IDEOGRAPH - 0x84FE: 0x530E, //CJK UNIFIED IDEOGRAPH - 0x8540: 0x5311, //CJK UNIFIED IDEOGRAPH - 0x8541: 0x5312, //CJK UNIFIED IDEOGRAPH - 0x8542: 0x5313, //CJK UNIFIED IDEOGRAPH - 0x8543: 0x5314, //CJK UNIFIED IDEOGRAPH - 0x8544: 0x5318, //CJK UNIFIED IDEOGRAPH - 0x8545: 0x531B, //CJK UNIFIED IDEOGRAPH - 0x8546: 0x531C, //CJK UNIFIED IDEOGRAPH - 0x8547: 0x531E, //CJK UNIFIED IDEOGRAPH - 0x8548: 0x531F, //CJK UNIFIED IDEOGRAPH - 0x8549: 0x5322, //CJK UNIFIED IDEOGRAPH - 0x854A: 0x5324, //CJK UNIFIED IDEOGRAPH - 0x854B: 0x5325, //CJK UNIFIED IDEOGRAPH - 0x854C: 0x5327, //CJK UNIFIED IDEOGRAPH - 0x854D: 0x5328, //CJK UNIFIED IDEOGRAPH - 0x854E: 0x5329, //CJK UNIFIED IDEOGRAPH - 0x854F: 0x532B, //CJK UNIFIED IDEOGRAPH - 0x8550: 0x532C, //CJK UNIFIED IDEOGRAPH - 0x8551: 0x532D, //CJK UNIFIED IDEOGRAPH - 0x8552: 0x532F, //CJK UNIFIED IDEOGRAPH - 0x8553: 0x5330, //CJK UNIFIED IDEOGRAPH - 0x8554: 0x5331, //CJK UNIFIED IDEOGRAPH - 0x8555: 0x5332, //CJK UNIFIED IDEOGRAPH - 0x8556: 0x5333, //CJK UNIFIED IDEOGRAPH - 0x8557: 0x5334, //CJK UNIFIED IDEOGRAPH - 0x8558: 0x5335, //CJK UNIFIED IDEOGRAPH - 0x8559: 0x5336, //CJK UNIFIED IDEOGRAPH - 0x855A: 0x5337, //CJK UNIFIED IDEOGRAPH - 0x855B: 0x5338, //CJK UNIFIED IDEOGRAPH - 0x855C: 0x533C, //CJK UNIFIED IDEOGRAPH - 0x855D: 0x533D, //CJK UNIFIED IDEOGRAPH - 0x855E: 0x5340, //CJK UNIFIED IDEOGRAPH - 0x855F: 0x5342, //CJK UNIFIED IDEOGRAPH - 0x8560: 0x5344, //CJK UNIFIED IDEOGRAPH - 0x8561: 0x5346, //CJK UNIFIED IDEOGRAPH - 0x8562: 0x534B, //CJK UNIFIED IDEOGRAPH - 0x8563: 0x534C, //CJK UNIFIED IDEOGRAPH - 0x8564: 0x534D, //CJK UNIFIED IDEOGRAPH - 0x8565: 0x5350, //CJK UNIFIED IDEOGRAPH - 0x8566: 0x5354, //CJK UNIFIED IDEOGRAPH - 0x8567: 0x5358, //CJK UNIFIED IDEOGRAPH - 0x8568: 0x5359, //CJK UNIFIED IDEOGRAPH - 0x8569: 0x535B, //CJK UNIFIED IDEOGRAPH - 0x856A: 0x535D, //CJK UNIFIED IDEOGRAPH - 0x856B: 0x5365, //CJK UNIFIED IDEOGRAPH - 0x856C: 0x5368, //CJK UNIFIED IDEOGRAPH - 0x856D: 0x536A, //CJK UNIFIED IDEOGRAPH - 0x856E: 0x536C, //CJK UNIFIED IDEOGRAPH - 0x856F: 0x536D, //CJK UNIFIED IDEOGRAPH - 0x8570: 0x5372, //CJK UNIFIED IDEOGRAPH - 0x8571: 0x5376, //CJK UNIFIED IDEOGRAPH - 0x8572: 0x5379, //CJK UNIFIED IDEOGRAPH - 0x8573: 0x537B, //CJK UNIFIED IDEOGRAPH - 0x8574: 0x537C, //CJK UNIFIED IDEOGRAPH - 0x8575: 0x537D, //CJK UNIFIED IDEOGRAPH - 0x8576: 0x537E, //CJK UNIFIED IDEOGRAPH - 0x8577: 0x5380, //CJK UNIFIED IDEOGRAPH - 0x8578: 0x5381, //CJK UNIFIED IDEOGRAPH - 0x8579: 0x5383, //CJK UNIFIED IDEOGRAPH - 0x857A: 0x5387, //CJK UNIFIED IDEOGRAPH - 0x857B: 0x5388, //CJK UNIFIED IDEOGRAPH - 0x857C: 0x538A, //CJK UNIFIED IDEOGRAPH - 0x857D: 0x538E, //CJK UNIFIED IDEOGRAPH - 0x857E: 0x538F, //CJK UNIFIED IDEOGRAPH - 0x8580: 0x5390, //CJK UNIFIED IDEOGRAPH - 0x8581: 0x5391, //CJK UNIFIED IDEOGRAPH - 0x8582: 0x5392, //CJK UNIFIED IDEOGRAPH - 0x8583: 0x5393, //CJK UNIFIED IDEOGRAPH - 0x8584: 0x5394, //CJK UNIFIED IDEOGRAPH - 0x8585: 0x5396, //CJK UNIFIED IDEOGRAPH - 0x8586: 0x5397, //CJK UNIFIED IDEOGRAPH - 0x8587: 0x5399, //CJK UNIFIED IDEOGRAPH - 0x8588: 0x539B, //CJK UNIFIED IDEOGRAPH - 0x8589: 0x539C, //CJK UNIFIED IDEOGRAPH - 0x858A: 0x539E, //CJK UNIFIED IDEOGRAPH - 0x858B: 0x53A0, //CJK UNIFIED IDEOGRAPH - 0x858C: 0x53A1, //CJK UNIFIED IDEOGRAPH - 0x858D: 0x53A4, //CJK UNIFIED IDEOGRAPH - 0x858E: 0x53A7, //CJK UNIFIED IDEOGRAPH - 0x858F: 0x53AA, //CJK UNIFIED IDEOGRAPH - 0x8590: 0x53AB, //CJK UNIFIED IDEOGRAPH - 0x8591: 0x53AC, //CJK UNIFIED IDEOGRAPH - 0x8592: 0x53AD, //CJK UNIFIED IDEOGRAPH - 0x8593: 0x53AF, //CJK UNIFIED IDEOGRAPH - 0x8594: 0x53B0, //CJK UNIFIED IDEOGRAPH - 0x8595: 0x53B1, //CJK UNIFIED IDEOGRAPH - 0x8596: 0x53B2, //CJK UNIFIED IDEOGRAPH - 0x8597: 0x53B3, //CJK UNIFIED IDEOGRAPH - 0x8598: 0x53B4, //CJK UNIFIED IDEOGRAPH - 0x8599: 0x53B5, //CJK UNIFIED IDEOGRAPH - 0x859A: 0x53B7, //CJK UNIFIED IDEOGRAPH - 0x859B: 0x53B8, //CJK UNIFIED IDEOGRAPH - 0x859C: 0x53B9, //CJK UNIFIED IDEOGRAPH - 0x859D: 0x53BA, //CJK UNIFIED IDEOGRAPH - 0x859E: 0x53BC, //CJK UNIFIED IDEOGRAPH - 0x859F: 0x53BD, //CJK UNIFIED IDEOGRAPH - 0x85A0: 0x53BE, //CJK UNIFIED IDEOGRAPH - 0x85A1: 0x53C0, //CJK UNIFIED IDEOGRAPH - 0x85A2: 0x53C3, //CJK UNIFIED IDEOGRAPH - 0x85A3: 0x53C4, //CJK UNIFIED IDEOGRAPH - 0x85A4: 0x53C5, //CJK UNIFIED IDEOGRAPH - 0x85A5: 0x53C6, //CJK UNIFIED IDEOGRAPH - 0x85A6: 0x53C7, //CJK UNIFIED IDEOGRAPH - 0x85A7: 0x53CE, //CJK UNIFIED IDEOGRAPH - 0x85A8: 0x53CF, //CJK UNIFIED IDEOGRAPH - 0x85A9: 0x53D0, //CJK UNIFIED IDEOGRAPH - 0x85AA: 0x53D2, //CJK UNIFIED IDEOGRAPH - 0x85AB: 0x53D3, //CJK UNIFIED IDEOGRAPH - 0x85AC: 0x53D5, //CJK UNIFIED IDEOGRAPH - 0x85AD: 0x53DA, //CJK UNIFIED IDEOGRAPH - 0x85AE: 0x53DC, //CJK UNIFIED IDEOGRAPH - 0x85AF: 0x53DD, //CJK UNIFIED IDEOGRAPH - 0x85B0: 0x53DE, //CJK UNIFIED IDEOGRAPH - 0x85B1: 0x53E1, //CJK UNIFIED IDEOGRAPH - 0x85B2: 0x53E2, //CJK UNIFIED IDEOGRAPH - 0x85B3: 0x53E7, //CJK UNIFIED IDEOGRAPH - 0x85B4: 0x53F4, //CJK UNIFIED IDEOGRAPH - 0x85B5: 0x53FA, //CJK UNIFIED IDEOGRAPH - 0x85B6: 0x53FE, //CJK UNIFIED IDEOGRAPH - 0x85B7: 0x53FF, //CJK UNIFIED IDEOGRAPH - 0x85B8: 0x5400, //CJK UNIFIED IDEOGRAPH - 0x85B9: 0x5402, //CJK UNIFIED IDEOGRAPH - 0x85BA: 0x5405, //CJK UNIFIED IDEOGRAPH - 0x85BB: 0x5407, //CJK UNIFIED IDEOGRAPH - 0x85BC: 0x540B, //CJK UNIFIED IDEOGRAPH - 0x85BD: 0x5414, //CJK UNIFIED IDEOGRAPH - 0x85BE: 0x5418, //CJK UNIFIED IDEOGRAPH - 0x85BF: 0x5419, //CJK UNIFIED IDEOGRAPH - 0x85C0: 0x541A, //CJK UNIFIED IDEOGRAPH - 0x85C1: 0x541C, //CJK UNIFIED IDEOGRAPH - 0x85C2: 0x5422, //CJK UNIFIED IDEOGRAPH - 0x85C3: 0x5424, //CJK UNIFIED IDEOGRAPH - 0x85C4: 0x5425, //CJK UNIFIED IDEOGRAPH - 0x85C5: 0x542A, //CJK UNIFIED IDEOGRAPH - 0x85C6: 0x5430, //CJK UNIFIED IDEOGRAPH - 0x85C7: 0x5433, //CJK UNIFIED IDEOGRAPH - 0x85C8: 0x5436, //CJK UNIFIED IDEOGRAPH - 0x85C9: 0x5437, //CJK UNIFIED IDEOGRAPH - 0x85CA: 0x543A, //CJK UNIFIED IDEOGRAPH - 0x85CB: 0x543D, //CJK UNIFIED IDEOGRAPH - 0x85CC: 0x543F, //CJK UNIFIED IDEOGRAPH - 0x85CD: 0x5441, //CJK UNIFIED IDEOGRAPH - 0x85CE: 0x5442, //CJK UNIFIED IDEOGRAPH - 0x85CF: 0x5444, //CJK UNIFIED IDEOGRAPH - 0x85D0: 0x5445, //CJK UNIFIED IDEOGRAPH - 0x85D1: 0x5447, //CJK UNIFIED IDEOGRAPH - 0x85D2: 0x5449, //CJK UNIFIED IDEOGRAPH - 0x85D3: 0x544C, //CJK UNIFIED IDEOGRAPH - 0x85D4: 0x544D, //CJK UNIFIED IDEOGRAPH - 0x85D5: 0x544E, //CJK UNIFIED IDEOGRAPH - 0x85D6: 0x544F, //CJK UNIFIED IDEOGRAPH - 0x85D7: 0x5451, //CJK UNIFIED IDEOGRAPH - 0x85D8: 0x545A, //CJK UNIFIED IDEOGRAPH - 0x85D9: 0x545D, //CJK UNIFIED IDEOGRAPH - 0x85DA: 0x545E, //CJK UNIFIED IDEOGRAPH - 0x85DB: 0x545F, //CJK UNIFIED IDEOGRAPH - 0x85DC: 0x5460, //CJK UNIFIED IDEOGRAPH - 0x85DD: 0x5461, //CJK UNIFIED IDEOGRAPH - 0x85DE: 0x5463, //CJK UNIFIED IDEOGRAPH - 0x85DF: 0x5465, //CJK UNIFIED IDEOGRAPH - 0x85E0: 0x5467, //CJK UNIFIED IDEOGRAPH - 0x85E1: 0x5469, //CJK UNIFIED IDEOGRAPH - 0x85E2: 0x546A, //CJK UNIFIED IDEOGRAPH - 0x85E3: 0x546B, //CJK UNIFIED IDEOGRAPH - 0x85E4: 0x546C, //CJK UNIFIED IDEOGRAPH - 0x85E5: 0x546D, //CJK UNIFIED IDEOGRAPH - 0x85E6: 0x546E, //CJK UNIFIED IDEOGRAPH - 0x85E7: 0x546F, //CJK UNIFIED IDEOGRAPH - 0x85E8: 0x5470, //CJK UNIFIED IDEOGRAPH - 0x85E9: 0x5474, //CJK UNIFIED IDEOGRAPH - 0x85EA: 0x5479, //CJK UNIFIED IDEOGRAPH - 0x85EB: 0x547A, //CJK UNIFIED IDEOGRAPH - 0x85EC: 0x547E, //CJK UNIFIED IDEOGRAPH - 0x85ED: 0x547F, //CJK UNIFIED IDEOGRAPH - 0x85EE: 0x5481, //CJK UNIFIED IDEOGRAPH - 0x85EF: 0x5483, //CJK UNIFIED IDEOGRAPH - 0x85F0: 0x5485, //CJK UNIFIED IDEOGRAPH - 0x85F1: 0x5487, //CJK UNIFIED IDEOGRAPH - 0x85F2: 0x5488, //CJK UNIFIED IDEOGRAPH - 0x85F3: 0x5489, //CJK UNIFIED IDEOGRAPH - 0x85F4: 0x548A, //CJK UNIFIED IDEOGRAPH - 0x85F5: 0x548D, //CJK UNIFIED IDEOGRAPH - 0x85F6: 0x5491, //CJK UNIFIED IDEOGRAPH - 0x85F7: 0x5493, //CJK UNIFIED IDEOGRAPH - 0x85F8: 0x5497, //CJK UNIFIED IDEOGRAPH - 0x85F9: 0x5498, //CJK UNIFIED IDEOGRAPH - 0x85FA: 0x549C, //CJK UNIFIED IDEOGRAPH - 0x85FB: 0x549E, //CJK UNIFIED IDEOGRAPH - 0x85FC: 0x549F, //CJK UNIFIED IDEOGRAPH - 0x85FD: 0x54A0, //CJK UNIFIED IDEOGRAPH - 0x85FE: 0x54A1, //CJK UNIFIED IDEOGRAPH - 0x8640: 0x54A2, //CJK UNIFIED IDEOGRAPH - 0x8641: 0x54A5, //CJK UNIFIED IDEOGRAPH - 0x8642: 0x54AE, //CJK UNIFIED IDEOGRAPH - 0x8643: 0x54B0, //CJK UNIFIED IDEOGRAPH - 0x8644: 0x54B2, //CJK UNIFIED IDEOGRAPH - 0x8645: 0x54B5, //CJK UNIFIED IDEOGRAPH - 0x8646: 0x54B6, //CJK UNIFIED IDEOGRAPH - 0x8647: 0x54B7, //CJK UNIFIED IDEOGRAPH - 0x8648: 0x54B9, //CJK UNIFIED IDEOGRAPH - 0x8649: 0x54BA, //CJK UNIFIED IDEOGRAPH - 0x864A: 0x54BC, //CJK UNIFIED IDEOGRAPH - 0x864B: 0x54BE, //CJK UNIFIED IDEOGRAPH - 0x864C: 0x54C3, //CJK UNIFIED IDEOGRAPH - 0x864D: 0x54C5, //CJK UNIFIED IDEOGRAPH - 0x864E: 0x54CA, //CJK UNIFIED IDEOGRAPH - 0x864F: 0x54CB, //CJK UNIFIED IDEOGRAPH - 0x8650: 0x54D6, //CJK UNIFIED IDEOGRAPH - 0x8651: 0x54D8, //CJK UNIFIED IDEOGRAPH - 0x8652: 0x54DB, //CJK UNIFIED IDEOGRAPH - 0x8653: 0x54E0, //CJK UNIFIED IDEOGRAPH - 0x8654: 0x54E1, //CJK UNIFIED IDEOGRAPH - 0x8655: 0x54E2, //CJK UNIFIED IDEOGRAPH - 0x8656: 0x54E3, //CJK UNIFIED IDEOGRAPH - 0x8657: 0x54E4, //CJK UNIFIED IDEOGRAPH - 0x8658: 0x54EB, //CJK UNIFIED IDEOGRAPH - 0x8659: 0x54EC, //CJK UNIFIED IDEOGRAPH - 0x865A: 0x54EF, //CJK UNIFIED IDEOGRAPH - 0x865B: 0x54F0, //CJK UNIFIED IDEOGRAPH - 0x865C: 0x54F1, //CJK UNIFIED IDEOGRAPH - 0x865D: 0x54F4, //CJK UNIFIED IDEOGRAPH - 0x865E: 0x54F5, //CJK UNIFIED IDEOGRAPH - 0x865F: 0x54F6, //CJK UNIFIED IDEOGRAPH - 0x8660: 0x54F7, //CJK UNIFIED IDEOGRAPH - 0x8661: 0x54F8, //CJK UNIFIED IDEOGRAPH - 0x8662: 0x54F9, //CJK UNIFIED IDEOGRAPH - 0x8663: 0x54FB, //CJK UNIFIED IDEOGRAPH - 0x8664: 0x54FE, //CJK UNIFIED IDEOGRAPH - 0x8665: 0x5500, //CJK UNIFIED IDEOGRAPH - 0x8666: 0x5502, //CJK UNIFIED IDEOGRAPH - 0x8667: 0x5503, //CJK UNIFIED IDEOGRAPH - 0x8668: 0x5504, //CJK UNIFIED IDEOGRAPH - 0x8669: 0x5505, //CJK UNIFIED IDEOGRAPH - 0x866A: 0x5508, //CJK UNIFIED IDEOGRAPH - 0x866B: 0x550A, //CJK UNIFIED IDEOGRAPH - 0x866C: 0x550B, //CJK UNIFIED IDEOGRAPH - 0x866D: 0x550C, //CJK UNIFIED IDEOGRAPH - 0x866E: 0x550D, //CJK UNIFIED IDEOGRAPH - 0x866F: 0x550E, //CJK UNIFIED IDEOGRAPH - 0x8670: 0x5512, //CJK UNIFIED IDEOGRAPH - 0x8671: 0x5513, //CJK UNIFIED IDEOGRAPH - 0x8672: 0x5515, //CJK UNIFIED IDEOGRAPH - 0x8673: 0x5516, //CJK UNIFIED IDEOGRAPH - 0x8674: 0x5517, //CJK UNIFIED IDEOGRAPH - 0x8675: 0x5518, //CJK UNIFIED IDEOGRAPH - 0x8676: 0x5519, //CJK UNIFIED IDEOGRAPH - 0x8677: 0x551A, //CJK UNIFIED IDEOGRAPH - 0x8678: 0x551C, //CJK UNIFIED IDEOGRAPH - 0x8679: 0x551D, //CJK UNIFIED IDEOGRAPH - 0x867A: 0x551E, //CJK UNIFIED IDEOGRAPH - 0x867B: 0x551F, //CJK UNIFIED IDEOGRAPH - 0x867C: 0x5521, //CJK UNIFIED IDEOGRAPH - 0x867D: 0x5525, //CJK UNIFIED IDEOGRAPH - 0x867E: 0x5526, //CJK UNIFIED IDEOGRAPH - 0x8680: 0x5528, //CJK UNIFIED IDEOGRAPH - 0x8681: 0x5529, //CJK UNIFIED IDEOGRAPH - 0x8682: 0x552B, //CJK UNIFIED IDEOGRAPH - 0x8683: 0x552D, //CJK UNIFIED IDEOGRAPH - 0x8684: 0x5532, //CJK UNIFIED IDEOGRAPH - 0x8685: 0x5534, //CJK UNIFIED IDEOGRAPH - 0x8686: 0x5535, //CJK UNIFIED IDEOGRAPH - 0x8687: 0x5536, //CJK UNIFIED IDEOGRAPH - 0x8688: 0x5538, //CJK UNIFIED IDEOGRAPH - 0x8689: 0x5539, //CJK UNIFIED IDEOGRAPH - 0x868A: 0x553A, //CJK UNIFIED IDEOGRAPH - 0x868B: 0x553B, //CJK UNIFIED IDEOGRAPH - 0x868C: 0x553D, //CJK UNIFIED IDEOGRAPH - 0x868D: 0x5540, //CJK UNIFIED IDEOGRAPH - 0x868E: 0x5542, //CJK UNIFIED IDEOGRAPH - 0x868F: 0x5545, //CJK UNIFIED IDEOGRAPH - 0x8690: 0x5547, //CJK UNIFIED IDEOGRAPH - 0x8691: 0x5548, //CJK UNIFIED IDEOGRAPH - 0x8692: 0x554B, //CJK UNIFIED IDEOGRAPH - 0x8693: 0x554C, //CJK UNIFIED IDEOGRAPH - 0x8694: 0x554D, //CJK UNIFIED IDEOGRAPH - 0x8695: 0x554E, //CJK UNIFIED IDEOGRAPH - 0x8696: 0x554F, //CJK UNIFIED IDEOGRAPH - 0x8697: 0x5551, //CJK UNIFIED IDEOGRAPH - 0x8698: 0x5552, //CJK UNIFIED IDEOGRAPH - 0x8699: 0x5553, //CJK UNIFIED IDEOGRAPH - 0x869A: 0x5554, //CJK UNIFIED IDEOGRAPH - 0x869B: 0x5557, //CJK UNIFIED IDEOGRAPH - 0x869C: 0x5558, //CJK UNIFIED IDEOGRAPH - 0x869D: 0x5559, //CJK UNIFIED IDEOGRAPH - 0x869E: 0x555A, //CJK UNIFIED IDEOGRAPH - 0x869F: 0x555B, //CJK UNIFIED IDEOGRAPH - 0x86A0: 0x555D, //CJK UNIFIED IDEOGRAPH - 0x86A1: 0x555E, //CJK UNIFIED IDEOGRAPH - 0x86A2: 0x555F, //CJK UNIFIED IDEOGRAPH - 0x86A3: 0x5560, //CJK UNIFIED IDEOGRAPH - 0x86A4: 0x5562, //CJK UNIFIED IDEOGRAPH - 0x86A5: 0x5563, //CJK UNIFIED IDEOGRAPH - 0x86A6: 0x5568, //CJK UNIFIED IDEOGRAPH - 0x86A7: 0x5569, //CJK UNIFIED IDEOGRAPH - 0x86A8: 0x556B, //CJK UNIFIED IDEOGRAPH - 0x86A9: 0x556F, //CJK UNIFIED IDEOGRAPH - 0x86AA: 0x5570, //CJK UNIFIED IDEOGRAPH - 0x86AB: 0x5571, //CJK UNIFIED IDEOGRAPH - 0x86AC: 0x5572, //CJK UNIFIED IDEOGRAPH - 0x86AD: 0x5573, //CJK UNIFIED IDEOGRAPH - 0x86AE: 0x5574, //CJK UNIFIED IDEOGRAPH - 0x86AF: 0x5579, //CJK UNIFIED IDEOGRAPH - 0x86B0: 0x557A, //CJK UNIFIED IDEOGRAPH - 0x86B1: 0x557D, //CJK UNIFIED IDEOGRAPH - 0x86B2: 0x557F, //CJK UNIFIED IDEOGRAPH - 0x86B3: 0x5585, //CJK UNIFIED IDEOGRAPH - 0x86B4: 0x5586, //CJK UNIFIED IDEOGRAPH - 0x86B5: 0x558C, //CJK UNIFIED IDEOGRAPH - 0x86B6: 0x558D, //CJK UNIFIED IDEOGRAPH - 0x86B7: 0x558E, //CJK UNIFIED IDEOGRAPH - 0x86B8: 0x5590, //CJK UNIFIED IDEOGRAPH - 0x86B9: 0x5592, //CJK UNIFIED IDEOGRAPH - 0x86BA: 0x5593, //CJK UNIFIED IDEOGRAPH - 0x86BB: 0x5595, //CJK UNIFIED IDEOGRAPH - 0x86BC: 0x5596, //CJK UNIFIED IDEOGRAPH - 0x86BD: 0x5597, //CJK UNIFIED IDEOGRAPH - 0x86BE: 0x559A, //CJK UNIFIED IDEOGRAPH - 0x86BF: 0x559B, //CJK UNIFIED IDEOGRAPH - 0x86C0: 0x559E, //CJK UNIFIED IDEOGRAPH - 0x86C1: 0x55A0, //CJK UNIFIED IDEOGRAPH - 0x86C2: 0x55A1, //CJK UNIFIED IDEOGRAPH - 0x86C3: 0x55A2, //CJK UNIFIED IDEOGRAPH - 0x86C4: 0x55A3, //CJK UNIFIED IDEOGRAPH - 0x86C5: 0x55A4, //CJK UNIFIED IDEOGRAPH - 0x86C6: 0x55A5, //CJK UNIFIED IDEOGRAPH - 0x86C7: 0x55A6, //CJK UNIFIED IDEOGRAPH - 0x86C8: 0x55A8, //CJK UNIFIED IDEOGRAPH - 0x86C9: 0x55A9, //CJK UNIFIED IDEOGRAPH - 0x86CA: 0x55AA, //CJK UNIFIED IDEOGRAPH - 0x86CB: 0x55AB, //CJK UNIFIED IDEOGRAPH - 0x86CC: 0x55AC, //CJK UNIFIED IDEOGRAPH - 0x86CD: 0x55AD, //CJK UNIFIED IDEOGRAPH - 0x86CE: 0x55AE, //CJK UNIFIED IDEOGRAPH - 0x86CF: 0x55AF, //CJK UNIFIED IDEOGRAPH - 0x86D0: 0x55B0, //CJK UNIFIED IDEOGRAPH - 0x86D1: 0x55B2, //CJK UNIFIED IDEOGRAPH - 0x86D2: 0x55B4, //CJK UNIFIED IDEOGRAPH - 0x86D3: 0x55B6, //CJK UNIFIED IDEOGRAPH - 0x86D4: 0x55B8, //CJK UNIFIED IDEOGRAPH - 0x86D5: 0x55BA, //CJK UNIFIED IDEOGRAPH - 0x86D6: 0x55BC, //CJK UNIFIED IDEOGRAPH - 0x86D7: 0x55BF, //CJK UNIFIED IDEOGRAPH - 0x86D8: 0x55C0, //CJK UNIFIED IDEOGRAPH - 0x86D9: 0x55C1, //CJK UNIFIED IDEOGRAPH - 0x86DA: 0x55C2, //CJK UNIFIED IDEOGRAPH - 0x86DB: 0x55C3, //CJK UNIFIED IDEOGRAPH - 0x86DC: 0x55C6, //CJK UNIFIED IDEOGRAPH - 0x86DD: 0x55C7, //CJK UNIFIED IDEOGRAPH - 0x86DE: 0x55C8, //CJK UNIFIED IDEOGRAPH - 0x86DF: 0x55CA, //CJK UNIFIED IDEOGRAPH - 0x86E0: 0x55CB, //CJK UNIFIED IDEOGRAPH - 0x86E1: 0x55CE, //CJK UNIFIED IDEOGRAPH - 0x86E2: 0x55CF, //CJK UNIFIED IDEOGRAPH - 0x86E3: 0x55D0, //CJK UNIFIED IDEOGRAPH - 0x86E4: 0x55D5, //CJK UNIFIED IDEOGRAPH - 0x86E5: 0x55D7, //CJK UNIFIED IDEOGRAPH - 0x86E6: 0x55D8, //CJK UNIFIED IDEOGRAPH - 0x86E7: 0x55D9, //CJK UNIFIED IDEOGRAPH - 0x86E8: 0x55DA, //CJK UNIFIED IDEOGRAPH - 0x86E9: 0x55DB, //CJK UNIFIED IDEOGRAPH - 0x86EA: 0x55DE, //CJK UNIFIED IDEOGRAPH - 0x86EB: 0x55E0, //CJK UNIFIED IDEOGRAPH - 0x86EC: 0x55E2, //CJK UNIFIED IDEOGRAPH - 0x86ED: 0x55E7, //CJK UNIFIED IDEOGRAPH - 0x86EE: 0x55E9, //CJK UNIFIED IDEOGRAPH - 0x86EF: 0x55ED, //CJK UNIFIED IDEOGRAPH - 0x86F0: 0x55EE, //CJK UNIFIED IDEOGRAPH - 0x86F1: 0x55F0, //CJK UNIFIED IDEOGRAPH - 0x86F2: 0x55F1, //CJK UNIFIED IDEOGRAPH - 0x86F3: 0x55F4, //CJK UNIFIED IDEOGRAPH - 0x86F4: 0x55F6, //CJK UNIFIED IDEOGRAPH - 0x86F5: 0x55F8, //CJK UNIFIED IDEOGRAPH - 0x86F6: 0x55F9, //CJK UNIFIED IDEOGRAPH - 0x86F7: 0x55FA, //CJK UNIFIED IDEOGRAPH - 0x86F8: 0x55FB, //CJK UNIFIED IDEOGRAPH - 0x86F9: 0x55FC, //CJK UNIFIED IDEOGRAPH - 0x86FA: 0x55FF, //CJK UNIFIED IDEOGRAPH - 0x86FB: 0x5602, //CJK UNIFIED IDEOGRAPH - 0x86FC: 0x5603, //CJK UNIFIED IDEOGRAPH - 0x86FD: 0x5604, //CJK UNIFIED IDEOGRAPH - 0x86FE: 0x5605, //CJK UNIFIED IDEOGRAPH - 0x8740: 0x5606, //CJK UNIFIED IDEOGRAPH - 0x8741: 0x5607, //CJK UNIFIED IDEOGRAPH - 0x8742: 0x560A, //CJK UNIFIED IDEOGRAPH - 0x8743: 0x560B, //CJK UNIFIED IDEOGRAPH - 0x8744: 0x560D, //CJK UNIFIED IDEOGRAPH - 0x8745: 0x5610, //CJK UNIFIED IDEOGRAPH - 0x8746: 0x5611, //CJK UNIFIED IDEOGRAPH - 0x8747: 0x5612, //CJK UNIFIED IDEOGRAPH - 0x8748: 0x5613, //CJK UNIFIED IDEOGRAPH - 0x8749: 0x5614, //CJK UNIFIED IDEOGRAPH - 0x874A: 0x5615, //CJK UNIFIED IDEOGRAPH - 0x874B: 0x5616, //CJK UNIFIED IDEOGRAPH - 0x874C: 0x5617, //CJK UNIFIED IDEOGRAPH - 0x874D: 0x5619, //CJK UNIFIED IDEOGRAPH - 0x874E: 0x561A, //CJK UNIFIED IDEOGRAPH - 0x874F: 0x561C, //CJK UNIFIED IDEOGRAPH - 0x8750: 0x561D, //CJK UNIFIED IDEOGRAPH - 0x8751: 0x5620, //CJK UNIFIED IDEOGRAPH - 0x8752: 0x5621, //CJK UNIFIED IDEOGRAPH - 0x8753: 0x5622, //CJK UNIFIED IDEOGRAPH - 0x8754: 0x5625, //CJK UNIFIED IDEOGRAPH - 0x8755: 0x5626, //CJK UNIFIED IDEOGRAPH - 0x8756: 0x5628, //CJK UNIFIED IDEOGRAPH - 0x8757: 0x5629, //CJK UNIFIED IDEOGRAPH - 0x8758: 0x562A, //CJK UNIFIED IDEOGRAPH - 0x8759: 0x562B, //CJK UNIFIED IDEOGRAPH - 0x875A: 0x562E, //CJK UNIFIED IDEOGRAPH - 0x875B: 0x562F, //CJK UNIFIED IDEOGRAPH - 0x875C: 0x5630, //CJK UNIFIED IDEOGRAPH - 0x875D: 0x5633, //CJK UNIFIED IDEOGRAPH - 0x875E: 0x5635, //CJK UNIFIED IDEOGRAPH - 0x875F: 0x5637, //CJK UNIFIED IDEOGRAPH - 0x8760: 0x5638, //CJK UNIFIED IDEOGRAPH - 0x8761: 0x563A, //CJK UNIFIED IDEOGRAPH - 0x8762: 0x563C, //CJK UNIFIED IDEOGRAPH - 0x8763: 0x563D, //CJK UNIFIED IDEOGRAPH - 0x8764: 0x563E, //CJK UNIFIED IDEOGRAPH - 0x8765: 0x5640, //CJK UNIFIED IDEOGRAPH - 0x8766: 0x5641, //CJK UNIFIED IDEOGRAPH - 0x8767: 0x5642, //CJK UNIFIED IDEOGRAPH - 0x8768: 0x5643, //CJK UNIFIED IDEOGRAPH - 0x8769: 0x5644, //CJK UNIFIED IDEOGRAPH - 0x876A: 0x5645, //CJK UNIFIED IDEOGRAPH - 0x876B: 0x5646, //CJK UNIFIED IDEOGRAPH - 0x876C: 0x5647, //CJK UNIFIED IDEOGRAPH - 0x876D: 0x5648, //CJK UNIFIED IDEOGRAPH - 0x876E: 0x5649, //CJK UNIFIED IDEOGRAPH - 0x876F: 0x564A, //CJK UNIFIED IDEOGRAPH - 0x8770: 0x564B, //CJK UNIFIED IDEOGRAPH - 0x8771: 0x564F, //CJK UNIFIED IDEOGRAPH - 0x8772: 0x5650, //CJK UNIFIED IDEOGRAPH - 0x8773: 0x5651, //CJK UNIFIED IDEOGRAPH - 0x8774: 0x5652, //CJK UNIFIED IDEOGRAPH - 0x8775: 0x5653, //CJK UNIFIED IDEOGRAPH - 0x8776: 0x5655, //CJK UNIFIED IDEOGRAPH - 0x8777: 0x5656, //CJK UNIFIED IDEOGRAPH - 0x8778: 0x565A, //CJK UNIFIED IDEOGRAPH - 0x8779: 0x565B, //CJK UNIFIED IDEOGRAPH - 0x877A: 0x565D, //CJK UNIFIED IDEOGRAPH - 0x877B: 0x565E, //CJK UNIFIED IDEOGRAPH - 0x877C: 0x565F, //CJK UNIFIED IDEOGRAPH - 0x877D: 0x5660, //CJK UNIFIED IDEOGRAPH - 0x877E: 0x5661, //CJK UNIFIED IDEOGRAPH - 0x8780: 0x5663, //CJK UNIFIED IDEOGRAPH - 0x8781: 0x5665, //CJK UNIFIED IDEOGRAPH - 0x8782: 0x5666, //CJK UNIFIED IDEOGRAPH - 0x8783: 0x5667, //CJK UNIFIED IDEOGRAPH - 0x8784: 0x566D, //CJK UNIFIED IDEOGRAPH - 0x8785: 0x566E, //CJK UNIFIED IDEOGRAPH - 0x8786: 0x566F, //CJK UNIFIED IDEOGRAPH - 0x8787: 0x5670, //CJK UNIFIED IDEOGRAPH - 0x8788: 0x5672, //CJK UNIFIED IDEOGRAPH - 0x8789: 0x5673, //CJK UNIFIED IDEOGRAPH - 0x878A: 0x5674, //CJK UNIFIED IDEOGRAPH - 0x878B: 0x5675, //CJK UNIFIED IDEOGRAPH - 0x878C: 0x5677, //CJK UNIFIED IDEOGRAPH - 0x878D: 0x5678, //CJK UNIFIED IDEOGRAPH - 0x878E: 0x5679, //CJK UNIFIED IDEOGRAPH - 0x878F: 0x567A, //CJK UNIFIED IDEOGRAPH - 0x8790: 0x567D, //CJK UNIFIED IDEOGRAPH - 0x8791: 0x567E, //CJK UNIFIED IDEOGRAPH - 0x8792: 0x567F, //CJK UNIFIED IDEOGRAPH - 0x8793: 0x5680, //CJK UNIFIED IDEOGRAPH - 0x8794: 0x5681, //CJK UNIFIED IDEOGRAPH - 0x8795: 0x5682, //CJK UNIFIED IDEOGRAPH - 0x8796: 0x5683, //CJK UNIFIED IDEOGRAPH - 0x8797: 0x5684, //CJK UNIFIED IDEOGRAPH - 0x8798: 0x5687, //CJK UNIFIED IDEOGRAPH - 0x8799: 0x5688, //CJK UNIFIED IDEOGRAPH - 0x879A: 0x5689, //CJK UNIFIED IDEOGRAPH - 0x879B: 0x568A, //CJK UNIFIED IDEOGRAPH - 0x879C: 0x568B, //CJK UNIFIED IDEOGRAPH - 0x879D: 0x568C, //CJK UNIFIED IDEOGRAPH - 0x879E: 0x568D, //CJK UNIFIED IDEOGRAPH - 0x879F: 0x5690, //CJK UNIFIED IDEOGRAPH - 0x87A0: 0x5691, //CJK UNIFIED IDEOGRAPH - 0x87A1: 0x5692, //CJK UNIFIED IDEOGRAPH - 0x87A2: 0x5694, //CJK UNIFIED IDEOGRAPH - 0x87A3: 0x5695, //CJK UNIFIED IDEOGRAPH - 0x87A4: 0x5696, //CJK UNIFIED IDEOGRAPH - 0x87A5: 0x5697, //CJK UNIFIED IDEOGRAPH - 0x87A6: 0x5698, //CJK UNIFIED IDEOGRAPH - 0x87A7: 0x5699, //CJK UNIFIED IDEOGRAPH - 0x87A8: 0x569A, //CJK UNIFIED IDEOGRAPH - 0x87A9: 0x569B, //CJK UNIFIED IDEOGRAPH - 0x87AA: 0x569C, //CJK UNIFIED IDEOGRAPH - 0x87AB: 0x569D, //CJK UNIFIED IDEOGRAPH - 0x87AC: 0x569E, //CJK UNIFIED IDEOGRAPH - 0x87AD: 0x569F, //CJK UNIFIED IDEOGRAPH - 0x87AE: 0x56A0, //CJK UNIFIED IDEOGRAPH - 0x87AF: 0x56A1, //CJK UNIFIED IDEOGRAPH - 0x87B0: 0x56A2, //CJK UNIFIED IDEOGRAPH - 0x87B1: 0x56A4, //CJK UNIFIED IDEOGRAPH - 0x87B2: 0x56A5, //CJK UNIFIED IDEOGRAPH - 0x87B3: 0x56A6, //CJK UNIFIED IDEOGRAPH - 0x87B4: 0x56A7, //CJK UNIFIED IDEOGRAPH - 0x87B5: 0x56A8, //CJK UNIFIED IDEOGRAPH - 0x87B6: 0x56A9, //CJK UNIFIED IDEOGRAPH - 0x87B7: 0x56AA, //CJK UNIFIED IDEOGRAPH - 0x87B8: 0x56AB, //CJK UNIFIED IDEOGRAPH - 0x87B9: 0x56AC, //CJK UNIFIED IDEOGRAPH - 0x87BA: 0x56AD, //CJK UNIFIED IDEOGRAPH - 0x87BB: 0x56AE, //CJK UNIFIED IDEOGRAPH - 0x87BC: 0x56B0, //CJK UNIFIED IDEOGRAPH - 0x87BD: 0x56B1, //CJK UNIFIED IDEOGRAPH - 0x87BE: 0x56B2, //CJK UNIFIED IDEOGRAPH - 0x87BF: 0x56B3, //CJK UNIFIED IDEOGRAPH - 0x87C0: 0x56B4, //CJK UNIFIED IDEOGRAPH - 0x87C1: 0x56B5, //CJK UNIFIED IDEOGRAPH - 0x87C2: 0x56B6, //CJK UNIFIED IDEOGRAPH - 0x87C3: 0x56B8, //CJK UNIFIED IDEOGRAPH - 0x87C4: 0x56B9, //CJK UNIFIED IDEOGRAPH - 0x87C5: 0x56BA, //CJK UNIFIED IDEOGRAPH - 0x87C6: 0x56BB, //CJK UNIFIED IDEOGRAPH - 0x87C7: 0x56BD, //CJK UNIFIED IDEOGRAPH - 0x87C8: 0x56BE, //CJK UNIFIED IDEOGRAPH - 0x87C9: 0x56BF, //CJK UNIFIED IDEOGRAPH - 0x87CA: 0x56C0, //CJK UNIFIED IDEOGRAPH - 0x87CB: 0x56C1, //CJK UNIFIED IDEOGRAPH - 0x87CC: 0x56C2, //CJK UNIFIED IDEOGRAPH - 0x87CD: 0x56C3, //CJK UNIFIED IDEOGRAPH - 0x87CE: 0x56C4, //CJK UNIFIED IDEOGRAPH - 0x87CF: 0x56C5, //CJK UNIFIED IDEOGRAPH - 0x87D0: 0x56C6, //CJK UNIFIED IDEOGRAPH - 0x87D1: 0x56C7, //CJK UNIFIED IDEOGRAPH - 0x87D2: 0x56C8, //CJK UNIFIED IDEOGRAPH - 0x87D3: 0x56C9, //CJK UNIFIED IDEOGRAPH - 0x87D4: 0x56CB, //CJK UNIFIED IDEOGRAPH - 0x87D5: 0x56CC, //CJK UNIFIED IDEOGRAPH - 0x87D6: 0x56CD, //CJK UNIFIED IDEOGRAPH - 0x87D7: 0x56CE, //CJK UNIFIED IDEOGRAPH - 0x87D8: 0x56CF, //CJK UNIFIED IDEOGRAPH - 0x87D9: 0x56D0, //CJK UNIFIED IDEOGRAPH - 0x87DA: 0x56D1, //CJK UNIFIED IDEOGRAPH - 0x87DB: 0x56D2, //CJK UNIFIED IDEOGRAPH - 0x87DC: 0x56D3, //CJK UNIFIED IDEOGRAPH - 0x87DD: 0x56D5, //CJK UNIFIED IDEOGRAPH - 0x87DE: 0x56D6, //CJK UNIFIED IDEOGRAPH - 0x87DF: 0x56D8, //CJK UNIFIED IDEOGRAPH - 0x87E0: 0x56D9, //CJK UNIFIED IDEOGRAPH - 0x87E1: 0x56DC, //CJK UNIFIED IDEOGRAPH - 0x87E2: 0x56E3, //CJK UNIFIED IDEOGRAPH - 0x87E3: 0x56E5, //CJK UNIFIED IDEOGRAPH - 0x87E4: 0x56E6, //CJK UNIFIED IDEOGRAPH - 0x87E5: 0x56E7, //CJK UNIFIED IDEOGRAPH - 0x87E6: 0x56E8, //CJK UNIFIED IDEOGRAPH - 0x87E7: 0x56E9, //CJK UNIFIED IDEOGRAPH - 0x87E8: 0x56EA, //CJK UNIFIED IDEOGRAPH - 0x87E9: 0x56EC, //CJK UNIFIED IDEOGRAPH - 0x87EA: 0x56EE, //CJK UNIFIED IDEOGRAPH - 0x87EB: 0x56EF, //CJK UNIFIED IDEOGRAPH - 0x87EC: 0x56F2, //CJK UNIFIED IDEOGRAPH - 0x87ED: 0x56F3, //CJK UNIFIED IDEOGRAPH - 0x87EE: 0x56F6, //CJK UNIFIED IDEOGRAPH - 0x87EF: 0x56F7, //CJK UNIFIED IDEOGRAPH - 0x87F0: 0x56F8, //CJK UNIFIED IDEOGRAPH - 0x87F1: 0x56FB, //CJK UNIFIED IDEOGRAPH - 0x87F2: 0x56FC, //CJK UNIFIED IDEOGRAPH - 0x87F3: 0x5700, //CJK UNIFIED IDEOGRAPH - 0x87F4: 0x5701, //CJK UNIFIED IDEOGRAPH - 0x87F5: 0x5702, //CJK UNIFIED IDEOGRAPH - 0x87F6: 0x5705, //CJK UNIFIED IDEOGRAPH - 0x87F7: 0x5707, //CJK UNIFIED IDEOGRAPH - 0x87F8: 0x570B, //CJK UNIFIED IDEOGRAPH - 0x87F9: 0x570C, //CJK UNIFIED IDEOGRAPH - 0x87FA: 0x570D, //CJK UNIFIED IDEOGRAPH - 0x87FB: 0x570E, //CJK UNIFIED IDEOGRAPH - 0x87FC: 0x570F, //CJK UNIFIED IDEOGRAPH - 0x87FD: 0x5710, //CJK UNIFIED IDEOGRAPH - 0x87FE: 0x5711, //CJK UNIFIED IDEOGRAPH - 0x8840: 0x5712, //CJK UNIFIED IDEOGRAPH - 0x8841: 0x5713, //CJK UNIFIED IDEOGRAPH - 0x8842: 0x5714, //CJK UNIFIED IDEOGRAPH - 0x8843: 0x5715, //CJK UNIFIED IDEOGRAPH - 0x8844: 0x5716, //CJK UNIFIED IDEOGRAPH - 0x8845: 0x5717, //CJK UNIFIED IDEOGRAPH - 0x8846: 0x5718, //CJK UNIFIED IDEOGRAPH - 0x8847: 0x5719, //CJK UNIFIED IDEOGRAPH - 0x8848: 0x571A, //CJK UNIFIED IDEOGRAPH - 0x8849: 0x571B, //CJK UNIFIED IDEOGRAPH - 0x884A: 0x571D, //CJK UNIFIED IDEOGRAPH - 0x884B: 0x571E, //CJK UNIFIED IDEOGRAPH - 0x884C: 0x5720, //CJK UNIFIED IDEOGRAPH - 0x884D: 0x5721, //CJK UNIFIED IDEOGRAPH - 0x884E: 0x5722, //CJK UNIFIED IDEOGRAPH - 0x884F: 0x5724, //CJK UNIFIED IDEOGRAPH - 0x8850: 0x5725, //CJK UNIFIED IDEOGRAPH - 0x8851: 0x5726, //CJK UNIFIED IDEOGRAPH - 0x8852: 0x5727, //CJK UNIFIED IDEOGRAPH - 0x8853: 0x572B, //CJK UNIFIED IDEOGRAPH - 0x8854: 0x5731, //CJK UNIFIED IDEOGRAPH - 0x8855: 0x5732, //CJK UNIFIED IDEOGRAPH - 0x8856: 0x5734, //CJK UNIFIED IDEOGRAPH - 0x8857: 0x5735, //CJK UNIFIED IDEOGRAPH - 0x8858: 0x5736, //CJK UNIFIED IDEOGRAPH - 0x8859: 0x5737, //CJK UNIFIED IDEOGRAPH - 0x885A: 0x5738, //CJK UNIFIED IDEOGRAPH - 0x885B: 0x573C, //CJK UNIFIED IDEOGRAPH - 0x885C: 0x573D, //CJK UNIFIED IDEOGRAPH - 0x885D: 0x573F, //CJK UNIFIED IDEOGRAPH - 0x885E: 0x5741, //CJK UNIFIED IDEOGRAPH - 0x885F: 0x5743, //CJK UNIFIED IDEOGRAPH - 0x8860: 0x5744, //CJK UNIFIED IDEOGRAPH - 0x8861: 0x5745, //CJK UNIFIED IDEOGRAPH - 0x8862: 0x5746, //CJK UNIFIED IDEOGRAPH - 0x8863: 0x5748, //CJK UNIFIED IDEOGRAPH - 0x8864: 0x5749, //CJK UNIFIED IDEOGRAPH - 0x8865: 0x574B, //CJK UNIFIED IDEOGRAPH - 0x8866: 0x5752, //CJK UNIFIED IDEOGRAPH - 0x8867: 0x5753, //CJK UNIFIED IDEOGRAPH - 0x8868: 0x5754, //CJK UNIFIED IDEOGRAPH - 0x8869: 0x5755, //CJK UNIFIED IDEOGRAPH - 0x886A: 0x5756, //CJK UNIFIED IDEOGRAPH - 0x886B: 0x5758, //CJK UNIFIED IDEOGRAPH - 0x886C: 0x5759, //CJK UNIFIED IDEOGRAPH - 0x886D: 0x5762, //CJK UNIFIED IDEOGRAPH - 0x886E: 0x5763, //CJK UNIFIED IDEOGRAPH - 0x886F: 0x5765, //CJK UNIFIED IDEOGRAPH - 0x8870: 0x5767, //CJK UNIFIED IDEOGRAPH - 0x8871: 0x576C, //CJK UNIFIED IDEOGRAPH - 0x8872: 0x576E, //CJK UNIFIED IDEOGRAPH - 0x8873: 0x5770, //CJK UNIFIED IDEOGRAPH - 0x8874: 0x5771, //CJK UNIFIED IDEOGRAPH - 0x8875: 0x5772, //CJK UNIFIED IDEOGRAPH - 0x8876: 0x5774, //CJK UNIFIED IDEOGRAPH - 0x8877: 0x5775, //CJK UNIFIED IDEOGRAPH - 0x8878: 0x5778, //CJK UNIFIED IDEOGRAPH - 0x8879: 0x5779, //CJK UNIFIED IDEOGRAPH - 0x887A: 0x577A, //CJK UNIFIED IDEOGRAPH - 0x887B: 0x577D, //CJK UNIFIED IDEOGRAPH - 0x887C: 0x577E, //CJK UNIFIED IDEOGRAPH - 0x887D: 0x577F, //CJK UNIFIED IDEOGRAPH - 0x887E: 0x5780, //CJK UNIFIED IDEOGRAPH - 0x8880: 0x5781, //CJK UNIFIED IDEOGRAPH - 0x8881: 0x5787, //CJK UNIFIED IDEOGRAPH - 0x8882: 0x5788, //CJK UNIFIED IDEOGRAPH - 0x8883: 0x5789, //CJK UNIFIED IDEOGRAPH - 0x8884: 0x578A, //CJK UNIFIED IDEOGRAPH - 0x8885: 0x578D, //CJK UNIFIED IDEOGRAPH - 0x8886: 0x578E, //CJK UNIFIED IDEOGRAPH - 0x8887: 0x578F, //CJK UNIFIED IDEOGRAPH - 0x8888: 0x5790, //CJK UNIFIED IDEOGRAPH - 0x8889: 0x5791, //CJK UNIFIED IDEOGRAPH - 0x888A: 0x5794, //CJK UNIFIED IDEOGRAPH - 0x888B: 0x5795, //CJK UNIFIED IDEOGRAPH - 0x888C: 0x5796, //CJK UNIFIED IDEOGRAPH - 0x888D: 0x5797, //CJK UNIFIED IDEOGRAPH - 0x888E: 0x5798, //CJK UNIFIED IDEOGRAPH - 0x888F: 0x5799, //CJK UNIFIED IDEOGRAPH - 0x8890: 0x579A, //CJK UNIFIED IDEOGRAPH - 0x8891: 0x579C, //CJK UNIFIED IDEOGRAPH - 0x8892: 0x579D, //CJK UNIFIED IDEOGRAPH - 0x8893: 0x579E, //CJK UNIFIED IDEOGRAPH - 0x8894: 0x579F, //CJK UNIFIED IDEOGRAPH - 0x8895: 0x57A5, //CJK UNIFIED IDEOGRAPH - 0x8896: 0x57A8, //CJK UNIFIED IDEOGRAPH - 0x8897: 0x57AA, //CJK UNIFIED IDEOGRAPH - 0x8898: 0x57AC, //CJK UNIFIED IDEOGRAPH - 0x8899: 0x57AF, //CJK UNIFIED IDEOGRAPH - 0x889A: 0x57B0, //CJK UNIFIED IDEOGRAPH - 0x889B: 0x57B1, //CJK UNIFIED IDEOGRAPH - 0x889C: 0x57B3, //CJK UNIFIED IDEOGRAPH - 0x889D: 0x57B5, //CJK UNIFIED IDEOGRAPH - 0x889E: 0x57B6, //CJK UNIFIED IDEOGRAPH - 0x889F: 0x57B7, //CJK UNIFIED IDEOGRAPH - 0x88A0: 0x57B9, //CJK UNIFIED IDEOGRAPH - 0x88A1: 0x57BA, //CJK UNIFIED IDEOGRAPH - 0x88A2: 0x57BB, //CJK UNIFIED IDEOGRAPH - 0x88A3: 0x57BC, //CJK UNIFIED IDEOGRAPH - 0x88A4: 0x57BD, //CJK UNIFIED IDEOGRAPH - 0x88A5: 0x57BE, //CJK UNIFIED IDEOGRAPH - 0x88A6: 0x57BF, //CJK UNIFIED IDEOGRAPH - 0x88A7: 0x57C0, //CJK UNIFIED IDEOGRAPH - 0x88A8: 0x57C1, //CJK UNIFIED IDEOGRAPH - 0x88A9: 0x57C4, //CJK UNIFIED IDEOGRAPH - 0x88AA: 0x57C5, //CJK UNIFIED IDEOGRAPH - 0x88AB: 0x57C6, //CJK UNIFIED IDEOGRAPH - 0x88AC: 0x57C7, //CJK UNIFIED IDEOGRAPH - 0x88AD: 0x57C8, //CJK UNIFIED IDEOGRAPH - 0x88AE: 0x57C9, //CJK UNIFIED IDEOGRAPH - 0x88AF: 0x57CA, //CJK UNIFIED IDEOGRAPH - 0x88B0: 0x57CC, //CJK UNIFIED IDEOGRAPH - 0x88B1: 0x57CD, //CJK UNIFIED IDEOGRAPH - 0x88B2: 0x57D0, //CJK UNIFIED IDEOGRAPH - 0x88B3: 0x57D1, //CJK UNIFIED IDEOGRAPH - 0x88B4: 0x57D3, //CJK UNIFIED IDEOGRAPH - 0x88B5: 0x57D6, //CJK UNIFIED IDEOGRAPH - 0x88B6: 0x57D7, //CJK UNIFIED IDEOGRAPH - 0x88B7: 0x57DB, //CJK UNIFIED IDEOGRAPH - 0x88B8: 0x57DC, //CJK UNIFIED IDEOGRAPH - 0x88B9: 0x57DE, //CJK UNIFIED IDEOGRAPH - 0x88BA: 0x57E1, //CJK UNIFIED IDEOGRAPH - 0x88BB: 0x57E2, //CJK UNIFIED IDEOGRAPH - 0x88BC: 0x57E3, //CJK UNIFIED IDEOGRAPH - 0x88BD: 0x57E5, //CJK UNIFIED IDEOGRAPH - 0x88BE: 0x57E6, //CJK UNIFIED IDEOGRAPH - 0x88BF: 0x57E7, //CJK UNIFIED IDEOGRAPH - 0x88C0: 0x57E8, //CJK UNIFIED IDEOGRAPH - 0x88C1: 0x57E9, //CJK UNIFIED IDEOGRAPH - 0x88C2: 0x57EA, //CJK UNIFIED IDEOGRAPH - 0x88C3: 0x57EB, //CJK UNIFIED IDEOGRAPH - 0x88C4: 0x57EC, //CJK UNIFIED IDEOGRAPH - 0x88C5: 0x57EE, //CJK UNIFIED IDEOGRAPH - 0x88C6: 0x57F0, //CJK UNIFIED IDEOGRAPH - 0x88C7: 0x57F1, //CJK UNIFIED IDEOGRAPH - 0x88C8: 0x57F2, //CJK UNIFIED IDEOGRAPH - 0x88C9: 0x57F3, //CJK UNIFIED IDEOGRAPH - 0x88CA: 0x57F5, //CJK UNIFIED IDEOGRAPH - 0x88CB: 0x57F6, //CJK UNIFIED IDEOGRAPH - 0x88CC: 0x57F7, //CJK UNIFIED IDEOGRAPH - 0x88CD: 0x57FB, //CJK UNIFIED IDEOGRAPH - 0x88CE: 0x57FC, //CJK UNIFIED IDEOGRAPH - 0x88CF: 0x57FE, //CJK UNIFIED IDEOGRAPH - 0x88D0: 0x57FF, //CJK UNIFIED IDEOGRAPH - 0x88D1: 0x5801, //CJK UNIFIED IDEOGRAPH - 0x88D2: 0x5803, //CJK UNIFIED IDEOGRAPH - 0x88D3: 0x5804, //CJK UNIFIED IDEOGRAPH - 0x88D4: 0x5805, //CJK UNIFIED IDEOGRAPH - 0x88D5: 0x5808, //CJK UNIFIED IDEOGRAPH - 0x88D6: 0x5809, //CJK UNIFIED IDEOGRAPH - 0x88D7: 0x580A, //CJK UNIFIED IDEOGRAPH - 0x88D8: 0x580C, //CJK UNIFIED IDEOGRAPH - 0x88D9: 0x580E, //CJK UNIFIED IDEOGRAPH - 0x88DA: 0x580F, //CJK UNIFIED IDEOGRAPH - 0x88DB: 0x5810, //CJK UNIFIED IDEOGRAPH - 0x88DC: 0x5812, //CJK UNIFIED IDEOGRAPH - 0x88DD: 0x5813, //CJK UNIFIED IDEOGRAPH - 0x88DE: 0x5814, //CJK UNIFIED IDEOGRAPH - 0x88DF: 0x5816, //CJK UNIFIED IDEOGRAPH - 0x88E0: 0x5817, //CJK UNIFIED IDEOGRAPH - 0x88E1: 0x5818, //CJK UNIFIED IDEOGRAPH - 0x88E2: 0x581A, //CJK UNIFIED IDEOGRAPH - 0x88E3: 0x581B, //CJK UNIFIED IDEOGRAPH - 0x88E4: 0x581C, //CJK UNIFIED IDEOGRAPH - 0x88E5: 0x581D, //CJK UNIFIED IDEOGRAPH - 0x88E6: 0x581F, //CJK UNIFIED IDEOGRAPH - 0x88E7: 0x5822, //CJK UNIFIED IDEOGRAPH - 0x88E8: 0x5823, //CJK UNIFIED IDEOGRAPH - 0x88E9: 0x5825, //CJK UNIFIED IDEOGRAPH - 0x88EA: 0x5826, //CJK UNIFIED IDEOGRAPH - 0x88EB: 0x5827, //CJK UNIFIED IDEOGRAPH - 0x88EC: 0x5828, //CJK UNIFIED IDEOGRAPH - 0x88ED: 0x5829, //CJK UNIFIED IDEOGRAPH - 0x88EE: 0x582B, //CJK UNIFIED IDEOGRAPH - 0x88EF: 0x582C, //CJK UNIFIED IDEOGRAPH - 0x88F0: 0x582D, //CJK UNIFIED IDEOGRAPH - 0x88F1: 0x582E, //CJK UNIFIED IDEOGRAPH - 0x88F2: 0x582F, //CJK UNIFIED IDEOGRAPH - 0x88F3: 0x5831, //CJK UNIFIED IDEOGRAPH - 0x88F4: 0x5832, //CJK UNIFIED IDEOGRAPH - 0x88F5: 0x5833, //CJK UNIFIED IDEOGRAPH - 0x88F6: 0x5834, //CJK UNIFIED IDEOGRAPH - 0x88F7: 0x5836, //CJK UNIFIED IDEOGRAPH - 0x88F8: 0x5837, //CJK UNIFIED IDEOGRAPH - 0x88F9: 0x5838, //CJK UNIFIED IDEOGRAPH - 0x88FA: 0x5839, //CJK UNIFIED IDEOGRAPH - 0x88FB: 0x583A, //CJK UNIFIED IDEOGRAPH - 0x88FC: 0x583B, //CJK UNIFIED IDEOGRAPH - 0x88FD: 0x583C, //CJK UNIFIED IDEOGRAPH - 0x88FE: 0x583D, //CJK UNIFIED IDEOGRAPH - 0x8940: 0x583E, //CJK UNIFIED IDEOGRAPH - 0x8941: 0x583F, //CJK UNIFIED IDEOGRAPH - 0x8942: 0x5840, //CJK UNIFIED IDEOGRAPH - 0x8943: 0x5841, //CJK UNIFIED IDEOGRAPH - 0x8944: 0x5842, //CJK UNIFIED IDEOGRAPH - 0x8945: 0x5843, //CJK UNIFIED IDEOGRAPH - 0x8946: 0x5845, //CJK UNIFIED IDEOGRAPH - 0x8947: 0x5846, //CJK UNIFIED IDEOGRAPH - 0x8948: 0x5847, //CJK UNIFIED IDEOGRAPH - 0x8949: 0x5848, //CJK UNIFIED IDEOGRAPH - 0x894A: 0x5849, //CJK UNIFIED IDEOGRAPH - 0x894B: 0x584A, //CJK UNIFIED IDEOGRAPH - 0x894C: 0x584B, //CJK UNIFIED IDEOGRAPH - 0x894D: 0x584E, //CJK UNIFIED IDEOGRAPH - 0x894E: 0x584F, //CJK UNIFIED IDEOGRAPH - 0x894F: 0x5850, //CJK UNIFIED IDEOGRAPH - 0x8950: 0x5852, //CJK UNIFIED IDEOGRAPH - 0x8951: 0x5853, //CJK UNIFIED IDEOGRAPH - 0x8952: 0x5855, //CJK UNIFIED IDEOGRAPH - 0x8953: 0x5856, //CJK UNIFIED IDEOGRAPH - 0x8954: 0x5857, //CJK UNIFIED IDEOGRAPH - 0x8955: 0x5859, //CJK UNIFIED IDEOGRAPH - 0x8956: 0x585A, //CJK UNIFIED IDEOGRAPH - 0x8957: 0x585B, //CJK UNIFIED IDEOGRAPH - 0x8958: 0x585C, //CJK UNIFIED IDEOGRAPH - 0x8959: 0x585D, //CJK UNIFIED IDEOGRAPH - 0x895A: 0x585F, //CJK UNIFIED IDEOGRAPH - 0x895B: 0x5860, //CJK UNIFIED IDEOGRAPH - 0x895C: 0x5861, //CJK UNIFIED IDEOGRAPH - 0x895D: 0x5862, //CJK UNIFIED IDEOGRAPH - 0x895E: 0x5863, //CJK UNIFIED IDEOGRAPH - 0x895F: 0x5864, //CJK UNIFIED IDEOGRAPH - 0x8960: 0x5866, //CJK UNIFIED IDEOGRAPH - 0x8961: 0x5867, //CJK UNIFIED IDEOGRAPH - 0x8962: 0x5868, //CJK UNIFIED IDEOGRAPH - 0x8963: 0x5869, //CJK UNIFIED IDEOGRAPH - 0x8964: 0x586A, //CJK UNIFIED IDEOGRAPH - 0x8965: 0x586D, //CJK UNIFIED IDEOGRAPH - 0x8966: 0x586E, //CJK UNIFIED IDEOGRAPH - 0x8967: 0x586F, //CJK UNIFIED IDEOGRAPH - 0x8968: 0x5870, //CJK UNIFIED IDEOGRAPH - 0x8969: 0x5871, //CJK UNIFIED IDEOGRAPH - 0x896A: 0x5872, //CJK UNIFIED IDEOGRAPH - 0x896B: 0x5873, //CJK UNIFIED IDEOGRAPH - 0x896C: 0x5874, //CJK UNIFIED IDEOGRAPH - 0x896D: 0x5875, //CJK UNIFIED IDEOGRAPH - 0x896E: 0x5876, //CJK UNIFIED IDEOGRAPH - 0x896F: 0x5877, //CJK UNIFIED IDEOGRAPH - 0x8970: 0x5878, //CJK UNIFIED IDEOGRAPH - 0x8971: 0x5879, //CJK UNIFIED IDEOGRAPH - 0x8972: 0x587A, //CJK UNIFIED IDEOGRAPH - 0x8973: 0x587B, //CJK UNIFIED IDEOGRAPH - 0x8974: 0x587C, //CJK UNIFIED IDEOGRAPH - 0x8975: 0x587D, //CJK UNIFIED IDEOGRAPH - 0x8976: 0x587F, //CJK UNIFIED IDEOGRAPH - 0x8977: 0x5882, //CJK UNIFIED IDEOGRAPH - 0x8978: 0x5884, //CJK UNIFIED IDEOGRAPH - 0x8979: 0x5886, //CJK UNIFIED IDEOGRAPH - 0x897A: 0x5887, //CJK UNIFIED IDEOGRAPH - 0x897B: 0x5888, //CJK UNIFIED IDEOGRAPH - 0x897C: 0x588A, //CJK UNIFIED IDEOGRAPH - 0x897D: 0x588B, //CJK UNIFIED IDEOGRAPH - 0x897E: 0x588C, //CJK UNIFIED IDEOGRAPH - 0x8980: 0x588D, //CJK UNIFIED IDEOGRAPH - 0x8981: 0x588E, //CJK UNIFIED IDEOGRAPH - 0x8982: 0x588F, //CJK UNIFIED IDEOGRAPH - 0x8983: 0x5890, //CJK UNIFIED IDEOGRAPH - 0x8984: 0x5891, //CJK UNIFIED IDEOGRAPH - 0x8985: 0x5894, //CJK UNIFIED IDEOGRAPH - 0x8986: 0x5895, //CJK UNIFIED IDEOGRAPH - 0x8987: 0x5896, //CJK UNIFIED IDEOGRAPH - 0x8988: 0x5897, //CJK UNIFIED IDEOGRAPH - 0x8989: 0x5898, //CJK UNIFIED IDEOGRAPH - 0x898A: 0x589B, //CJK UNIFIED IDEOGRAPH - 0x898B: 0x589C, //CJK UNIFIED IDEOGRAPH - 0x898C: 0x589D, //CJK UNIFIED IDEOGRAPH - 0x898D: 0x58A0, //CJK UNIFIED IDEOGRAPH - 0x898E: 0x58A1, //CJK UNIFIED IDEOGRAPH - 0x898F: 0x58A2, //CJK UNIFIED IDEOGRAPH - 0x8990: 0x58A3, //CJK UNIFIED IDEOGRAPH - 0x8991: 0x58A4, //CJK UNIFIED IDEOGRAPH - 0x8992: 0x58A5, //CJK UNIFIED IDEOGRAPH - 0x8993: 0x58A6, //CJK UNIFIED IDEOGRAPH - 0x8994: 0x58A7, //CJK UNIFIED IDEOGRAPH - 0x8995: 0x58AA, //CJK UNIFIED IDEOGRAPH - 0x8996: 0x58AB, //CJK UNIFIED IDEOGRAPH - 0x8997: 0x58AC, //CJK UNIFIED IDEOGRAPH - 0x8998: 0x58AD, //CJK UNIFIED IDEOGRAPH - 0x8999: 0x58AE, //CJK UNIFIED IDEOGRAPH - 0x899A: 0x58AF, //CJK UNIFIED IDEOGRAPH - 0x899B: 0x58B0, //CJK UNIFIED IDEOGRAPH - 0x899C: 0x58B1, //CJK UNIFIED IDEOGRAPH - 0x899D: 0x58B2, //CJK UNIFIED IDEOGRAPH - 0x899E: 0x58B3, //CJK UNIFIED IDEOGRAPH - 0x899F: 0x58B4, //CJK UNIFIED IDEOGRAPH - 0x89A0: 0x58B5, //CJK UNIFIED IDEOGRAPH - 0x89A1: 0x58B6, //CJK UNIFIED IDEOGRAPH - 0x89A2: 0x58B7, //CJK UNIFIED IDEOGRAPH - 0x89A3: 0x58B8, //CJK UNIFIED IDEOGRAPH - 0x89A4: 0x58B9, //CJK UNIFIED IDEOGRAPH - 0x89A5: 0x58BA, //CJK UNIFIED IDEOGRAPH - 0x89A6: 0x58BB, //CJK UNIFIED IDEOGRAPH - 0x89A7: 0x58BD, //CJK UNIFIED IDEOGRAPH - 0x89A8: 0x58BE, //CJK UNIFIED IDEOGRAPH - 0x89A9: 0x58BF, //CJK UNIFIED IDEOGRAPH - 0x89AA: 0x58C0, //CJK UNIFIED IDEOGRAPH - 0x89AB: 0x58C2, //CJK UNIFIED IDEOGRAPH - 0x89AC: 0x58C3, //CJK UNIFIED IDEOGRAPH - 0x89AD: 0x58C4, //CJK UNIFIED IDEOGRAPH - 0x89AE: 0x58C6, //CJK UNIFIED IDEOGRAPH - 0x89AF: 0x58C7, //CJK UNIFIED IDEOGRAPH - 0x89B0: 0x58C8, //CJK UNIFIED IDEOGRAPH - 0x89B1: 0x58C9, //CJK UNIFIED IDEOGRAPH - 0x89B2: 0x58CA, //CJK UNIFIED IDEOGRAPH - 0x89B3: 0x58CB, //CJK UNIFIED IDEOGRAPH - 0x89B4: 0x58CC, //CJK UNIFIED IDEOGRAPH - 0x89B5: 0x58CD, //CJK UNIFIED IDEOGRAPH - 0x89B6: 0x58CE, //CJK UNIFIED IDEOGRAPH - 0x89B7: 0x58CF, //CJK UNIFIED IDEOGRAPH - 0x89B8: 0x58D0, //CJK UNIFIED IDEOGRAPH - 0x89B9: 0x58D2, //CJK UNIFIED IDEOGRAPH - 0x89BA: 0x58D3, //CJK UNIFIED IDEOGRAPH - 0x89BB: 0x58D4, //CJK UNIFIED IDEOGRAPH - 0x89BC: 0x58D6, //CJK UNIFIED IDEOGRAPH - 0x89BD: 0x58D7, //CJK UNIFIED IDEOGRAPH - 0x89BE: 0x58D8, //CJK UNIFIED IDEOGRAPH - 0x89BF: 0x58D9, //CJK UNIFIED IDEOGRAPH - 0x89C0: 0x58DA, //CJK UNIFIED IDEOGRAPH - 0x89C1: 0x58DB, //CJK UNIFIED IDEOGRAPH - 0x89C2: 0x58DC, //CJK UNIFIED IDEOGRAPH - 0x89C3: 0x58DD, //CJK UNIFIED IDEOGRAPH - 0x89C4: 0x58DE, //CJK UNIFIED IDEOGRAPH - 0x89C5: 0x58DF, //CJK UNIFIED IDEOGRAPH - 0x89C6: 0x58E0, //CJK UNIFIED IDEOGRAPH - 0x89C7: 0x58E1, //CJK UNIFIED IDEOGRAPH - 0x89C8: 0x58E2, //CJK UNIFIED IDEOGRAPH - 0x89C9: 0x58E3, //CJK UNIFIED IDEOGRAPH - 0x89CA: 0x58E5, //CJK UNIFIED IDEOGRAPH - 0x89CB: 0x58E6, //CJK UNIFIED IDEOGRAPH - 0x89CC: 0x58E7, //CJK UNIFIED IDEOGRAPH - 0x89CD: 0x58E8, //CJK UNIFIED IDEOGRAPH - 0x89CE: 0x58E9, //CJK UNIFIED IDEOGRAPH - 0x89CF: 0x58EA, //CJK UNIFIED IDEOGRAPH - 0x89D0: 0x58ED, //CJK UNIFIED IDEOGRAPH - 0x89D1: 0x58EF, //CJK UNIFIED IDEOGRAPH - 0x89D2: 0x58F1, //CJK UNIFIED IDEOGRAPH - 0x89D3: 0x58F2, //CJK UNIFIED IDEOGRAPH - 0x89D4: 0x58F4, //CJK UNIFIED IDEOGRAPH - 0x89D5: 0x58F5, //CJK UNIFIED IDEOGRAPH - 0x89D6: 0x58F7, //CJK UNIFIED IDEOGRAPH - 0x89D7: 0x58F8, //CJK UNIFIED IDEOGRAPH - 0x89D8: 0x58FA, //CJK UNIFIED IDEOGRAPH - 0x89D9: 0x58FB, //CJK UNIFIED IDEOGRAPH - 0x89DA: 0x58FC, //CJK UNIFIED IDEOGRAPH - 0x89DB: 0x58FD, //CJK UNIFIED IDEOGRAPH - 0x89DC: 0x58FE, //CJK UNIFIED IDEOGRAPH - 0x89DD: 0x58FF, //CJK UNIFIED IDEOGRAPH - 0x89DE: 0x5900, //CJK UNIFIED IDEOGRAPH - 0x89DF: 0x5901, //CJK UNIFIED IDEOGRAPH - 0x89E0: 0x5903, //CJK UNIFIED IDEOGRAPH - 0x89E1: 0x5905, //CJK UNIFIED IDEOGRAPH - 0x89E2: 0x5906, //CJK UNIFIED IDEOGRAPH - 0x89E3: 0x5908, //CJK UNIFIED IDEOGRAPH - 0x89E4: 0x5909, //CJK UNIFIED IDEOGRAPH - 0x89E5: 0x590A, //CJK UNIFIED IDEOGRAPH - 0x89E6: 0x590B, //CJK UNIFIED IDEOGRAPH - 0x89E7: 0x590C, //CJK UNIFIED IDEOGRAPH - 0x89E8: 0x590E, //CJK UNIFIED IDEOGRAPH - 0x89E9: 0x5910, //CJK UNIFIED IDEOGRAPH - 0x89EA: 0x5911, //CJK UNIFIED IDEOGRAPH - 0x89EB: 0x5912, //CJK UNIFIED IDEOGRAPH - 0x89EC: 0x5913, //CJK UNIFIED IDEOGRAPH - 0x89ED: 0x5917, //CJK UNIFIED IDEOGRAPH - 0x89EE: 0x5918, //CJK UNIFIED IDEOGRAPH - 0x89EF: 0x591B, //CJK UNIFIED IDEOGRAPH - 0x89F0: 0x591D, //CJK UNIFIED IDEOGRAPH - 0x89F1: 0x591E, //CJK UNIFIED IDEOGRAPH - 0x89F2: 0x5920, //CJK UNIFIED IDEOGRAPH - 0x89F3: 0x5921, //CJK UNIFIED IDEOGRAPH - 0x89F4: 0x5922, //CJK UNIFIED IDEOGRAPH - 0x89F5: 0x5923, //CJK UNIFIED IDEOGRAPH - 0x89F6: 0x5926, //CJK UNIFIED IDEOGRAPH - 0x89F7: 0x5928, //CJK UNIFIED IDEOGRAPH - 0x89F8: 0x592C, //CJK UNIFIED IDEOGRAPH - 0x89F9: 0x5930, //CJK UNIFIED IDEOGRAPH - 0x89FA: 0x5932, //CJK UNIFIED IDEOGRAPH - 0x89FB: 0x5933, //CJK UNIFIED IDEOGRAPH - 0x89FC: 0x5935, //CJK UNIFIED IDEOGRAPH - 0x89FD: 0x5936, //CJK UNIFIED IDEOGRAPH - 0x89FE: 0x593B, //CJK UNIFIED IDEOGRAPH - 0x8A40: 0x593D, //CJK UNIFIED IDEOGRAPH - 0x8A41: 0x593E, //CJK UNIFIED IDEOGRAPH - 0x8A42: 0x593F, //CJK UNIFIED IDEOGRAPH - 0x8A43: 0x5940, //CJK UNIFIED IDEOGRAPH - 0x8A44: 0x5943, //CJK UNIFIED IDEOGRAPH - 0x8A45: 0x5945, //CJK UNIFIED IDEOGRAPH - 0x8A46: 0x5946, //CJK UNIFIED IDEOGRAPH - 0x8A47: 0x594A, //CJK UNIFIED IDEOGRAPH - 0x8A48: 0x594C, //CJK UNIFIED IDEOGRAPH - 0x8A49: 0x594D, //CJK UNIFIED IDEOGRAPH - 0x8A4A: 0x5950, //CJK UNIFIED IDEOGRAPH - 0x8A4B: 0x5952, //CJK UNIFIED IDEOGRAPH - 0x8A4C: 0x5953, //CJK UNIFIED IDEOGRAPH - 0x8A4D: 0x5959, //CJK UNIFIED IDEOGRAPH - 0x8A4E: 0x595B, //CJK UNIFIED IDEOGRAPH - 0x8A4F: 0x595C, //CJK UNIFIED IDEOGRAPH - 0x8A50: 0x595D, //CJK UNIFIED IDEOGRAPH - 0x8A51: 0x595E, //CJK UNIFIED IDEOGRAPH - 0x8A52: 0x595F, //CJK UNIFIED IDEOGRAPH - 0x8A53: 0x5961, //CJK UNIFIED IDEOGRAPH - 0x8A54: 0x5963, //CJK UNIFIED IDEOGRAPH - 0x8A55: 0x5964, //CJK UNIFIED IDEOGRAPH - 0x8A56: 0x5966, //CJK UNIFIED IDEOGRAPH - 0x8A57: 0x5967, //CJK UNIFIED IDEOGRAPH - 0x8A58: 0x5968, //CJK UNIFIED IDEOGRAPH - 0x8A59: 0x5969, //CJK UNIFIED IDEOGRAPH - 0x8A5A: 0x596A, //CJK UNIFIED IDEOGRAPH - 0x8A5B: 0x596B, //CJK UNIFIED IDEOGRAPH - 0x8A5C: 0x596C, //CJK UNIFIED IDEOGRAPH - 0x8A5D: 0x596D, //CJK UNIFIED IDEOGRAPH - 0x8A5E: 0x596E, //CJK UNIFIED IDEOGRAPH - 0x8A5F: 0x596F, //CJK UNIFIED IDEOGRAPH - 0x8A60: 0x5970, //CJK UNIFIED IDEOGRAPH - 0x8A61: 0x5971, //CJK UNIFIED IDEOGRAPH - 0x8A62: 0x5972, //CJK UNIFIED IDEOGRAPH - 0x8A63: 0x5975, //CJK UNIFIED IDEOGRAPH - 0x8A64: 0x5977, //CJK UNIFIED IDEOGRAPH - 0x8A65: 0x597A, //CJK UNIFIED IDEOGRAPH - 0x8A66: 0x597B, //CJK UNIFIED IDEOGRAPH - 0x8A67: 0x597C, //CJK UNIFIED IDEOGRAPH - 0x8A68: 0x597E, //CJK UNIFIED IDEOGRAPH - 0x8A69: 0x597F, //CJK UNIFIED IDEOGRAPH - 0x8A6A: 0x5980, //CJK UNIFIED IDEOGRAPH - 0x8A6B: 0x5985, //CJK UNIFIED IDEOGRAPH - 0x8A6C: 0x5989, //CJK UNIFIED IDEOGRAPH - 0x8A6D: 0x598B, //CJK UNIFIED IDEOGRAPH - 0x8A6E: 0x598C, //CJK UNIFIED IDEOGRAPH - 0x8A6F: 0x598E, //CJK UNIFIED IDEOGRAPH - 0x8A70: 0x598F, //CJK UNIFIED IDEOGRAPH - 0x8A71: 0x5990, //CJK UNIFIED IDEOGRAPH - 0x8A72: 0x5991, //CJK UNIFIED IDEOGRAPH - 0x8A73: 0x5994, //CJK UNIFIED IDEOGRAPH - 0x8A74: 0x5995, //CJK UNIFIED IDEOGRAPH - 0x8A75: 0x5998, //CJK UNIFIED IDEOGRAPH - 0x8A76: 0x599A, //CJK UNIFIED IDEOGRAPH - 0x8A77: 0x599B, //CJK UNIFIED IDEOGRAPH - 0x8A78: 0x599C, //CJK UNIFIED IDEOGRAPH - 0x8A79: 0x599D, //CJK UNIFIED IDEOGRAPH - 0x8A7A: 0x599F, //CJK UNIFIED IDEOGRAPH - 0x8A7B: 0x59A0, //CJK UNIFIED IDEOGRAPH - 0x8A7C: 0x59A1, //CJK UNIFIED IDEOGRAPH - 0x8A7D: 0x59A2, //CJK UNIFIED IDEOGRAPH - 0x8A7E: 0x59A6, //CJK UNIFIED IDEOGRAPH - 0x8A80: 0x59A7, //CJK UNIFIED IDEOGRAPH - 0x8A81: 0x59AC, //CJK UNIFIED IDEOGRAPH - 0x8A82: 0x59AD, //CJK UNIFIED IDEOGRAPH - 0x8A83: 0x59B0, //CJK UNIFIED IDEOGRAPH - 0x8A84: 0x59B1, //CJK UNIFIED IDEOGRAPH - 0x8A85: 0x59B3, //CJK UNIFIED IDEOGRAPH - 0x8A86: 0x59B4, //CJK UNIFIED IDEOGRAPH - 0x8A87: 0x59B5, //CJK UNIFIED IDEOGRAPH - 0x8A88: 0x59B6, //CJK UNIFIED IDEOGRAPH - 0x8A89: 0x59B7, //CJK UNIFIED IDEOGRAPH - 0x8A8A: 0x59B8, //CJK UNIFIED IDEOGRAPH - 0x8A8B: 0x59BA, //CJK UNIFIED IDEOGRAPH - 0x8A8C: 0x59BC, //CJK UNIFIED IDEOGRAPH - 0x8A8D: 0x59BD, //CJK UNIFIED IDEOGRAPH - 0x8A8E: 0x59BF, //CJK UNIFIED IDEOGRAPH - 0x8A8F: 0x59C0, //CJK UNIFIED IDEOGRAPH - 0x8A90: 0x59C1, //CJK UNIFIED IDEOGRAPH - 0x8A91: 0x59C2, //CJK UNIFIED IDEOGRAPH - 0x8A92: 0x59C3, //CJK UNIFIED IDEOGRAPH - 0x8A93: 0x59C4, //CJK UNIFIED IDEOGRAPH - 0x8A94: 0x59C5, //CJK UNIFIED IDEOGRAPH - 0x8A95: 0x59C7, //CJK UNIFIED IDEOGRAPH - 0x8A96: 0x59C8, //CJK UNIFIED IDEOGRAPH - 0x8A97: 0x59C9, //CJK UNIFIED IDEOGRAPH - 0x8A98: 0x59CC, //CJK UNIFIED IDEOGRAPH - 0x8A99: 0x59CD, //CJK UNIFIED IDEOGRAPH - 0x8A9A: 0x59CE, //CJK UNIFIED IDEOGRAPH - 0x8A9B: 0x59CF, //CJK UNIFIED IDEOGRAPH - 0x8A9C: 0x59D5, //CJK UNIFIED IDEOGRAPH - 0x8A9D: 0x59D6, //CJK UNIFIED IDEOGRAPH - 0x8A9E: 0x59D9, //CJK UNIFIED IDEOGRAPH - 0x8A9F: 0x59DB, //CJK UNIFIED IDEOGRAPH - 0x8AA0: 0x59DE, //CJK UNIFIED IDEOGRAPH - 0x8AA1: 0x59DF, //CJK UNIFIED IDEOGRAPH - 0x8AA2: 0x59E0, //CJK UNIFIED IDEOGRAPH - 0x8AA3: 0x59E1, //CJK UNIFIED IDEOGRAPH - 0x8AA4: 0x59E2, //CJK UNIFIED IDEOGRAPH - 0x8AA5: 0x59E4, //CJK UNIFIED IDEOGRAPH - 0x8AA6: 0x59E6, //CJK UNIFIED IDEOGRAPH - 0x8AA7: 0x59E7, //CJK UNIFIED IDEOGRAPH - 0x8AA8: 0x59E9, //CJK UNIFIED IDEOGRAPH - 0x8AA9: 0x59EA, //CJK UNIFIED IDEOGRAPH - 0x8AAA: 0x59EB, //CJK UNIFIED IDEOGRAPH - 0x8AAB: 0x59ED, //CJK UNIFIED IDEOGRAPH - 0x8AAC: 0x59EE, //CJK UNIFIED IDEOGRAPH - 0x8AAD: 0x59EF, //CJK UNIFIED IDEOGRAPH - 0x8AAE: 0x59F0, //CJK UNIFIED IDEOGRAPH - 0x8AAF: 0x59F1, //CJK UNIFIED IDEOGRAPH - 0x8AB0: 0x59F2, //CJK UNIFIED IDEOGRAPH - 0x8AB1: 0x59F3, //CJK UNIFIED IDEOGRAPH - 0x8AB2: 0x59F4, //CJK UNIFIED IDEOGRAPH - 0x8AB3: 0x59F5, //CJK UNIFIED IDEOGRAPH - 0x8AB4: 0x59F6, //CJK UNIFIED IDEOGRAPH - 0x8AB5: 0x59F7, //CJK UNIFIED IDEOGRAPH - 0x8AB6: 0x59F8, //CJK UNIFIED IDEOGRAPH - 0x8AB7: 0x59FA, //CJK UNIFIED IDEOGRAPH - 0x8AB8: 0x59FC, //CJK UNIFIED IDEOGRAPH - 0x8AB9: 0x59FD, //CJK UNIFIED IDEOGRAPH - 0x8ABA: 0x59FE, //CJK UNIFIED IDEOGRAPH - 0x8ABB: 0x5A00, //CJK UNIFIED IDEOGRAPH - 0x8ABC: 0x5A02, //CJK UNIFIED IDEOGRAPH - 0x8ABD: 0x5A0A, //CJK UNIFIED IDEOGRAPH - 0x8ABE: 0x5A0B, //CJK UNIFIED IDEOGRAPH - 0x8ABF: 0x5A0D, //CJK UNIFIED IDEOGRAPH - 0x8AC0: 0x5A0E, //CJK UNIFIED IDEOGRAPH - 0x8AC1: 0x5A0F, //CJK UNIFIED IDEOGRAPH - 0x8AC2: 0x5A10, //CJK UNIFIED IDEOGRAPH - 0x8AC3: 0x5A12, //CJK UNIFIED IDEOGRAPH - 0x8AC4: 0x5A14, //CJK UNIFIED IDEOGRAPH - 0x8AC5: 0x5A15, //CJK UNIFIED IDEOGRAPH - 0x8AC6: 0x5A16, //CJK UNIFIED IDEOGRAPH - 0x8AC7: 0x5A17, //CJK UNIFIED IDEOGRAPH - 0x8AC8: 0x5A19, //CJK UNIFIED IDEOGRAPH - 0x8AC9: 0x5A1A, //CJK UNIFIED IDEOGRAPH - 0x8ACA: 0x5A1B, //CJK UNIFIED IDEOGRAPH - 0x8ACB: 0x5A1D, //CJK UNIFIED IDEOGRAPH - 0x8ACC: 0x5A1E, //CJK UNIFIED IDEOGRAPH - 0x8ACD: 0x5A21, //CJK UNIFIED IDEOGRAPH - 0x8ACE: 0x5A22, //CJK UNIFIED IDEOGRAPH - 0x8ACF: 0x5A24, //CJK UNIFIED IDEOGRAPH - 0x8AD0: 0x5A26, //CJK UNIFIED IDEOGRAPH - 0x8AD1: 0x5A27, //CJK UNIFIED IDEOGRAPH - 0x8AD2: 0x5A28, //CJK UNIFIED IDEOGRAPH - 0x8AD3: 0x5A2A, //CJK UNIFIED IDEOGRAPH - 0x8AD4: 0x5A2B, //CJK UNIFIED IDEOGRAPH - 0x8AD5: 0x5A2C, //CJK UNIFIED IDEOGRAPH - 0x8AD6: 0x5A2D, //CJK UNIFIED IDEOGRAPH - 0x8AD7: 0x5A2E, //CJK UNIFIED IDEOGRAPH - 0x8AD8: 0x5A2F, //CJK UNIFIED IDEOGRAPH - 0x8AD9: 0x5A30, //CJK UNIFIED IDEOGRAPH - 0x8ADA: 0x5A33, //CJK UNIFIED IDEOGRAPH - 0x8ADB: 0x5A35, //CJK UNIFIED IDEOGRAPH - 0x8ADC: 0x5A37, //CJK UNIFIED IDEOGRAPH - 0x8ADD: 0x5A38, //CJK UNIFIED IDEOGRAPH - 0x8ADE: 0x5A39, //CJK UNIFIED IDEOGRAPH - 0x8ADF: 0x5A3A, //CJK UNIFIED IDEOGRAPH - 0x8AE0: 0x5A3B, //CJK UNIFIED IDEOGRAPH - 0x8AE1: 0x5A3D, //CJK UNIFIED IDEOGRAPH - 0x8AE2: 0x5A3E, //CJK UNIFIED IDEOGRAPH - 0x8AE3: 0x5A3F, //CJK UNIFIED IDEOGRAPH - 0x8AE4: 0x5A41, //CJK UNIFIED IDEOGRAPH - 0x8AE5: 0x5A42, //CJK UNIFIED IDEOGRAPH - 0x8AE6: 0x5A43, //CJK UNIFIED IDEOGRAPH - 0x8AE7: 0x5A44, //CJK UNIFIED IDEOGRAPH - 0x8AE8: 0x5A45, //CJK UNIFIED IDEOGRAPH - 0x8AE9: 0x5A47, //CJK UNIFIED IDEOGRAPH - 0x8AEA: 0x5A48, //CJK UNIFIED IDEOGRAPH - 0x8AEB: 0x5A4B, //CJK UNIFIED IDEOGRAPH - 0x8AEC: 0x5A4C, //CJK UNIFIED IDEOGRAPH - 0x8AED: 0x5A4D, //CJK UNIFIED IDEOGRAPH - 0x8AEE: 0x5A4E, //CJK UNIFIED IDEOGRAPH - 0x8AEF: 0x5A4F, //CJK UNIFIED IDEOGRAPH - 0x8AF0: 0x5A50, //CJK UNIFIED IDEOGRAPH - 0x8AF1: 0x5A51, //CJK UNIFIED IDEOGRAPH - 0x8AF2: 0x5A52, //CJK UNIFIED IDEOGRAPH - 0x8AF3: 0x5A53, //CJK UNIFIED IDEOGRAPH - 0x8AF4: 0x5A54, //CJK UNIFIED IDEOGRAPH - 0x8AF5: 0x5A56, //CJK UNIFIED IDEOGRAPH - 0x8AF6: 0x5A57, //CJK UNIFIED IDEOGRAPH - 0x8AF7: 0x5A58, //CJK UNIFIED IDEOGRAPH - 0x8AF8: 0x5A59, //CJK UNIFIED IDEOGRAPH - 0x8AF9: 0x5A5B, //CJK UNIFIED IDEOGRAPH - 0x8AFA: 0x5A5C, //CJK UNIFIED IDEOGRAPH - 0x8AFB: 0x5A5D, //CJK UNIFIED IDEOGRAPH - 0x8AFC: 0x5A5E, //CJK UNIFIED IDEOGRAPH - 0x8AFD: 0x5A5F, //CJK UNIFIED IDEOGRAPH - 0x8AFE: 0x5A60, //CJK UNIFIED IDEOGRAPH - 0x8B40: 0x5A61, //CJK UNIFIED IDEOGRAPH - 0x8B41: 0x5A63, //CJK UNIFIED IDEOGRAPH - 0x8B42: 0x5A64, //CJK UNIFIED IDEOGRAPH - 0x8B43: 0x5A65, //CJK UNIFIED IDEOGRAPH - 0x8B44: 0x5A66, //CJK UNIFIED IDEOGRAPH - 0x8B45: 0x5A68, //CJK UNIFIED IDEOGRAPH - 0x8B46: 0x5A69, //CJK UNIFIED IDEOGRAPH - 0x8B47: 0x5A6B, //CJK UNIFIED IDEOGRAPH - 0x8B48: 0x5A6C, //CJK UNIFIED IDEOGRAPH - 0x8B49: 0x5A6D, //CJK UNIFIED IDEOGRAPH - 0x8B4A: 0x5A6E, //CJK UNIFIED IDEOGRAPH - 0x8B4B: 0x5A6F, //CJK UNIFIED IDEOGRAPH - 0x8B4C: 0x5A70, //CJK UNIFIED IDEOGRAPH - 0x8B4D: 0x5A71, //CJK UNIFIED IDEOGRAPH - 0x8B4E: 0x5A72, //CJK UNIFIED IDEOGRAPH - 0x8B4F: 0x5A73, //CJK UNIFIED IDEOGRAPH - 0x8B50: 0x5A78, //CJK UNIFIED IDEOGRAPH - 0x8B51: 0x5A79, //CJK UNIFIED IDEOGRAPH - 0x8B52: 0x5A7B, //CJK UNIFIED IDEOGRAPH - 0x8B53: 0x5A7C, //CJK UNIFIED IDEOGRAPH - 0x8B54: 0x5A7D, //CJK UNIFIED IDEOGRAPH - 0x8B55: 0x5A7E, //CJK UNIFIED IDEOGRAPH - 0x8B56: 0x5A80, //CJK UNIFIED IDEOGRAPH - 0x8B57: 0x5A81, //CJK UNIFIED IDEOGRAPH - 0x8B58: 0x5A82, //CJK UNIFIED IDEOGRAPH - 0x8B59: 0x5A83, //CJK UNIFIED IDEOGRAPH - 0x8B5A: 0x5A84, //CJK UNIFIED IDEOGRAPH - 0x8B5B: 0x5A85, //CJK UNIFIED IDEOGRAPH - 0x8B5C: 0x5A86, //CJK UNIFIED IDEOGRAPH - 0x8B5D: 0x5A87, //CJK UNIFIED IDEOGRAPH - 0x8B5E: 0x5A88, //CJK UNIFIED IDEOGRAPH - 0x8B5F: 0x5A89, //CJK UNIFIED IDEOGRAPH - 0x8B60: 0x5A8A, //CJK UNIFIED IDEOGRAPH - 0x8B61: 0x5A8B, //CJK UNIFIED IDEOGRAPH - 0x8B62: 0x5A8C, //CJK UNIFIED IDEOGRAPH - 0x8B63: 0x5A8D, //CJK UNIFIED IDEOGRAPH - 0x8B64: 0x5A8E, //CJK UNIFIED IDEOGRAPH - 0x8B65: 0x5A8F, //CJK UNIFIED IDEOGRAPH - 0x8B66: 0x5A90, //CJK UNIFIED IDEOGRAPH - 0x8B67: 0x5A91, //CJK UNIFIED IDEOGRAPH - 0x8B68: 0x5A93, //CJK UNIFIED IDEOGRAPH - 0x8B69: 0x5A94, //CJK UNIFIED IDEOGRAPH - 0x8B6A: 0x5A95, //CJK UNIFIED IDEOGRAPH - 0x8B6B: 0x5A96, //CJK UNIFIED IDEOGRAPH - 0x8B6C: 0x5A97, //CJK UNIFIED IDEOGRAPH - 0x8B6D: 0x5A98, //CJK UNIFIED IDEOGRAPH - 0x8B6E: 0x5A99, //CJK UNIFIED IDEOGRAPH - 0x8B6F: 0x5A9C, //CJK UNIFIED IDEOGRAPH - 0x8B70: 0x5A9D, //CJK UNIFIED IDEOGRAPH - 0x8B71: 0x5A9E, //CJK UNIFIED IDEOGRAPH - 0x8B72: 0x5A9F, //CJK UNIFIED IDEOGRAPH - 0x8B73: 0x5AA0, //CJK UNIFIED IDEOGRAPH - 0x8B74: 0x5AA1, //CJK UNIFIED IDEOGRAPH - 0x8B75: 0x5AA2, //CJK UNIFIED IDEOGRAPH - 0x8B76: 0x5AA3, //CJK UNIFIED IDEOGRAPH - 0x8B77: 0x5AA4, //CJK UNIFIED IDEOGRAPH - 0x8B78: 0x5AA5, //CJK UNIFIED IDEOGRAPH - 0x8B79: 0x5AA6, //CJK UNIFIED IDEOGRAPH - 0x8B7A: 0x5AA7, //CJK UNIFIED IDEOGRAPH - 0x8B7B: 0x5AA8, //CJK UNIFIED IDEOGRAPH - 0x8B7C: 0x5AA9, //CJK UNIFIED IDEOGRAPH - 0x8B7D: 0x5AAB, //CJK UNIFIED IDEOGRAPH - 0x8B7E: 0x5AAC, //CJK UNIFIED IDEOGRAPH - 0x8B80: 0x5AAD, //CJK UNIFIED IDEOGRAPH - 0x8B81: 0x5AAE, //CJK UNIFIED IDEOGRAPH - 0x8B82: 0x5AAF, //CJK UNIFIED IDEOGRAPH - 0x8B83: 0x5AB0, //CJK UNIFIED IDEOGRAPH - 0x8B84: 0x5AB1, //CJK UNIFIED IDEOGRAPH - 0x8B85: 0x5AB4, //CJK UNIFIED IDEOGRAPH - 0x8B86: 0x5AB6, //CJK UNIFIED IDEOGRAPH - 0x8B87: 0x5AB7, //CJK UNIFIED IDEOGRAPH - 0x8B88: 0x5AB9, //CJK UNIFIED IDEOGRAPH - 0x8B89: 0x5ABA, //CJK UNIFIED IDEOGRAPH - 0x8B8A: 0x5ABB, //CJK UNIFIED IDEOGRAPH - 0x8B8B: 0x5ABC, //CJK UNIFIED IDEOGRAPH - 0x8B8C: 0x5ABD, //CJK UNIFIED IDEOGRAPH - 0x8B8D: 0x5ABF, //CJK UNIFIED IDEOGRAPH - 0x8B8E: 0x5AC0, //CJK UNIFIED IDEOGRAPH - 0x8B8F: 0x5AC3, //CJK UNIFIED IDEOGRAPH - 0x8B90: 0x5AC4, //CJK UNIFIED IDEOGRAPH - 0x8B91: 0x5AC5, //CJK UNIFIED IDEOGRAPH - 0x8B92: 0x5AC6, //CJK UNIFIED IDEOGRAPH - 0x8B93: 0x5AC7, //CJK UNIFIED IDEOGRAPH - 0x8B94: 0x5AC8, //CJK UNIFIED IDEOGRAPH - 0x8B95: 0x5ACA, //CJK UNIFIED IDEOGRAPH - 0x8B96: 0x5ACB, //CJK UNIFIED IDEOGRAPH - 0x8B97: 0x5ACD, //CJK UNIFIED IDEOGRAPH - 0x8B98: 0x5ACE, //CJK UNIFIED IDEOGRAPH - 0x8B99: 0x5ACF, //CJK UNIFIED IDEOGRAPH - 0x8B9A: 0x5AD0, //CJK UNIFIED IDEOGRAPH - 0x8B9B: 0x5AD1, //CJK UNIFIED IDEOGRAPH - 0x8B9C: 0x5AD3, //CJK UNIFIED IDEOGRAPH - 0x8B9D: 0x5AD5, //CJK UNIFIED IDEOGRAPH - 0x8B9E: 0x5AD7, //CJK UNIFIED IDEOGRAPH - 0x8B9F: 0x5AD9, //CJK UNIFIED IDEOGRAPH - 0x8BA0: 0x5ADA, //CJK UNIFIED IDEOGRAPH - 0x8BA1: 0x5ADB, //CJK UNIFIED IDEOGRAPH - 0x8BA2: 0x5ADD, //CJK UNIFIED IDEOGRAPH - 0x8BA3: 0x5ADE, //CJK UNIFIED IDEOGRAPH - 0x8BA4: 0x5ADF, //CJK UNIFIED IDEOGRAPH - 0x8BA5: 0x5AE2, //CJK UNIFIED IDEOGRAPH - 0x8BA6: 0x5AE4, //CJK UNIFIED IDEOGRAPH - 0x8BA7: 0x5AE5, //CJK UNIFIED IDEOGRAPH - 0x8BA8: 0x5AE7, //CJK UNIFIED IDEOGRAPH - 0x8BA9: 0x5AE8, //CJK UNIFIED IDEOGRAPH - 0x8BAA: 0x5AEA, //CJK UNIFIED IDEOGRAPH - 0x8BAB: 0x5AEC, //CJK UNIFIED IDEOGRAPH - 0x8BAC: 0x5AED, //CJK UNIFIED IDEOGRAPH - 0x8BAD: 0x5AEE, //CJK UNIFIED IDEOGRAPH - 0x8BAE: 0x5AEF, //CJK UNIFIED IDEOGRAPH - 0x8BAF: 0x5AF0, //CJK UNIFIED IDEOGRAPH - 0x8BB0: 0x5AF2, //CJK UNIFIED IDEOGRAPH - 0x8BB1: 0x5AF3, //CJK UNIFIED IDEOGRAPH - 0x8BB2: 0x5AF4, //CJK UNIFIED IDEOGRAPH - 0x8BB3: 0x5AF5, //CJK UNIFIED IDEOGRAPH - 0x8BB4: 0x5AF6, //CJK UNIFIED IDEOGRAPH - 0x8BB5: 0x5AF7, //CJK UNIFIED IDEOGRAPH - 0x8BB6: 0x5AF8, //CJK UNIFIED IDEOGRAPH - 0x8BB7: 0x5AF9, //CJK UNIFIED IDEOGRAPH - 0x8BB8: 0x5AFA, //CJK UNIFIED IDEOGRAPH - 0x8BB9: 0x5AFB, //CJK UNIFIED IDEOGRAPH - 0x8BBA: 0x5AFC, //CJK UNIFIED IDEOGRAPH - 0x8BBB: 0x5AFD, //CJK UNIFIED IDEOGRAPH - 0x8BBC: 0x5AFE, //CJK UNIFIED IDEOGRAPH - 0x8BBD: 0x5AFF, //CJK UNIFIED IDEOGRAPH - 0x8BBE: 0x5B00, //CJK UNIFIED IDEOGRAPH - 0x8BBF: 0x5B01, //CJK UNIFIED IDEOGRAPH - 0x8BC0: 0x5B02, //CJK UNIFIED IDEOGRAPH - 0x8BC1: 0x5B03, //CJK UNIFIED IDEOGRAPH - 0x8BC2: 0x5B04, //CJK UNIFIED IDEOGRAPH - 0x8BC3: 0x5B05, //CJK UNIFIED IDEOGRAPH - 0x8BC4: 0x5B06, //CJK UNIFIED IDEOGRAPH - 0x8BC5: 0x5B07, //CJK UNIFIED IDEOGRAPH - 0x8BC6: 0x5B08, //CJK UNIFIED IDEOGRAPH - 0x8BC7: 0x5B0A, //CJK UNIFIED IDEOGRAPH - 0x8BC8: 0x5B0B, //CJK UNIFIED IDEOGRAPH - 0x8BC9: 0x5B0C, //CJK UNIFIED IDEOGRAPH - 0x8BCA: 0x5B0D, //CJK UNIFIED IDEOGRAPH - 0x8BCB: 0x5B0E, //CJK UNIFIED IDEOGRAPH - 0x8BCC: 0x5B0F, //CJK UNIFIED IDEOGRAPH - 0x8BCD: 0x5B10, //CJK UNIFIED IDEOGRAPH - 0x8BCE: 0x5B11, //CJK UNIFIED IDEOGRAPH - 0x8BCF: 0x5B12, //CJK UNIFIED IDEOGRAPH - 0x8BD0: 0x5B13, //CJK UNIFIED IDEOGRAPH - 0x8BD1: 0x5B14, //CJK UNIFIED IDEOGRAPH - 0x8BD2: 0x5B15, //CJK UNIFIED IDEOGRAPH - 0x8BD3: 0x5B18, //CJK UNIFIED IDEOGRAPH - 0x8BD4: 0x5B19, //CJK UNIFIED IDEOGRAPH - 0x8BD5: 0x5B1A, //CJK UNIFIED IDEOGRAPH - 0x8BD6: 0x5B1B, //CJK UNIFIED IDEOGRAPH - 0x8BD7: 0x5B1C, //CJK UNIFIED IDEOGRAPH - 0x8BD8: 0x5B1D, //CJK UNIFIED IDEOGRAPH - 0x8BD9: 0x5B1E, //CJK UNIFIED IDEOGRAPH - 0x8BDA: 0x5B1F, //CJK UNIFIED IDEOGRAPH - 0x8BDB: 0x5B20, //CJK UNIFIED IDEOGRAPH - 0x8BDC: 0x5B21, //CJK UNIFIED IDEOGRAPH - 0x8BDD: 0x5B22, //CJK UNIFIED IDEOGRAPH - 0x8BDE: 0x5B23, //CJK UNIFIED IDEOGRAPH - 0x8BDF: 0x5B24, //CJK UNIFIED IDEOGRAPH - 0x8BE0: 0x5B25, //CJK UNIFIED IDEOGRAPH - 0x8BE1: 0x5B26, //CJK UNIFIED IDEOGRAPH - 0x8BE2: 0x5B27, //CJK UNIFIED IDEOGRAPH - 0x8BE3: 0x5B28, //CJK UNIFIED IDEOGRAPH - 0x8BE4: 0x5B29, //CJK UNIFIED IDEOGRAPH - 0x8BE5: 0x5B2A, //CJK UNIFIED IDEOGRAPH - 0x8BE6: 0x5B2B, //CJK UNIFIED IDEOGRAPH - 0x8BE7: 0x5B2C, //CJK UNIFIED IDEOGRAPH - 0x8BE8: 0x5B2D, //CJK UNIFIED IDEOGRAPH - 0x8BE9: 0x5B2E, //CJK UNIFIED IDEOGRAPH - 0x8BEA: 0x5B2F, //CJK UNIFIED IDEOGRAPH - 0x8BEB: 0x5B30, //CJK UNIFIED IDEOGRAPH - 0x8BEC: 0x5B31, //CJK UNIFIED IDEOGRAPH - 0x8BED: 0x5B33, //CJK UNIFIED IDEOGRAPH - 0x8BEE: 0x5B35, //CJK UNIFIED IDEOGRAPH - 0x8BEF: 0x5B36, //CJK UNIFIED IDEOGRAPH - 0x8BF0: 0x5B38, //CJK UNIFIED IDEOGRAPH - 0x8BF1: 0x5B39, //CJK UNIFIED IDEOGRAPH - 0x8BF2: 0x5B3A, //CJK UNIFIED IDEOGRAPH - 0x8BF3: 0x5B3B, //CJK UNIFIED IDEOGRAPH - 0x8BF4: 0x5B3C, //CJK UNIFIED IDEOGRAPH - 0x8BF5: 0x5B3D, //CJK UNIFIED IDEOGRAPH - 0x8BF6: 0x5B3E, //CJK UNIFIED IDEOGRAPH - 0x8BF7: 0x5B3F, //CJK UNIFIED IDEOGRAPH - 0x8BF8: 0x5B41, //CJK UNIFIED IDEOGRAPH - 0x8BF9: 0x5B42, //CJK UNIFIED IDEOGRAPH - 0x8BFA: 0x5B43, //CJK UNIFIED IDEOGRAPH - 0x8BFB: 0x5B44, //CJK UNIFIED IDEOGRAPH - 0x8BFC: 0x5B45, //CJK UNIFIED IDEOGRAPH - 0x8BFD: 0x5B46, //CJK UNIFIED IDEOGRAPH - 0x8BFE: 0x5B47, //CJK UNIFIED IDEOGRAPH - 0x8C40: 0x5B48, //CJK UNIFIED IDEOGRAPH - 0x8C41: 0x5B49, //CJK UNIFIED IDEOGRAPH - 0x8C42: 0x5B4A, //CJK UNIFIED IDEOGRAPH - 0x8C43: 0x5B4B, //CJK UNIFIED IDEOGRAPH - 0x8C44: 0x5B4C, //CJK UNIFIED IDEOGRAPH - 0x8C45: 0x5B4D, //CJK UNIFIED IDEOGRAPH - 0x8C46: 0x5B4E, //CJK UNIFIED IDEOGRAPH - 0x8C47: 0x5B4F, //CJK UNIFIED IDEOGRAPH - 0x8C48: 0x5B52, //CJK UNIFIED IDEOGRAPH - 0x8C49: 0x5B56, //CJK UNIFIED IDEOGRAPH - 0x8C4A: 0x5B5E, //CJK UNIFIED IDEOGRAPH - 0x8C4B: 0x5B60, //CJK UNIFIED IDEOGRAPH - 0x8C4C: 0x5B61, //CJK UNIFIED IDEOGRAPH - 0x8C4D: 0x5B67, //CJK UNIFIED IDEOGRAPH - 0x8C4E: 0x5B68, //CJK UNIFIED IDEOGRAPH - 0x8C4F: 0x5B6B, //CJK UNIFIED IDEOGRAPH - 0x8C50: 0x5B6D, //CJK UNIFIED IDEOGRAPH - 0x8C51: 0x5B6E, //CJK UNIFIED IDEOGRAPH - 0x8C52: 0x5B6F, //CJK UNIFIED IDEOGRAPH - 0x8C53: 0x5B72, //CJK UNIFIED IDEOGRAPH - 0x8C54: 0x5B74, //CJK UNIFIED IDEOGRAPH - 0x8C55: 0x5B76, //CJK UNIFIED IDEOGRAPH - 0x8C56: 0x5B77, //CJK UNIFIED IDEOGRAPH - 0x8C57: 0x5B78, //CJK UNIFIED IDEOGRAPH - 0x8C58: 0x5B79, //CJK UNIFIED IDEOGRAPH - 0x8C59: 0x5B7B, //CJK UNIFIED IDEOGRAPH - 0x8C5A: 0x5B7C, //CJK UNIFIED IDEOGRAPH - 0x8C5B: 0x5B7E, //CJK UNIFIED IDEOGRAPH - 0x8C5C: 0x5B7F, //CJK UNIFIED IDEOGRAPH - 0x8C5D: 0x5B82, //CJK UNIFIED IDEOGRAPH - 0x8C5E: 0x5B86, //CJK UNIFIED IDEOGRAPH - 0x8C5F: 0x5B8A, //CJK UNIFIED IDEOGRAPH - 0x8C60: 0x5B8D, //CJK UNIFIED IDEOGRAPH - 0x8C61: 0x5B8E, //CJK UNIFIED IDEOGRAPH - 0x8C62: 0x5B90, //CJK UNIFIED IDEOGRAPH - 0x8C63: 0x5B91, //CJK UNIFIED IDEOGRAPH - 0x8C64: 0x5B92, //CJK UNIFIED IDEOGRAPH - 0x8C65: 0x5B94, //CJK UNIFIED IDEOGRAPH - 0x8C66: 0x5B96, //CJK UNIFIED IDEOGRAPH - 0x8C67: 0x5B9F, //CJK UNIFIED IDEOGRAPH - 0x8C68: 0x5BA7, //CJK UNIFIED IDEOGRAPH - 0x8C69: 0x5BA8, //CJK UNIFIED IDEOGRAPH - 0x8C6A: 0x5BA9, //CJK UNIFIED IDEOGRAPH - 0x8C6B: 0x5BAC, //CJK UNIFIED IDEOGRAPH - 0x8C6C: 0x5BAD, //CJK UNIFIED IDEOGRAPH - 0x8C6D: 0x5BAE, //CJK UNIFIED IDEOGRAPH - 0x8C6E: 0x5BAF, //CJK UNIFIED IDEOGRAPH - 0x8C6F: 0x5BB1, //CJK UNIFIED IDEOGRAPH - 0x8C70: 0x5BB2, //CJK UNIFIED IDEOGRAPH - 0x8C71: 0x5BB7, //CJK UNIFIED IDEOGRAPH - 0x8C72: 0x5BBA, //CJK UNIFIED IDEOGRAPH - 0x8C73: 0x5BBB, //CJK UNIFIED IDEOGRAPH - 0x8C74: 0x5BBC, //CJK UNIFIED IDEOGRAPH - 0x8C75: 0x5BC0, //CJK UNIFIED IDEOGRAPH - 0x8C76: 0x5BC1, //CJK UNIFIED IDEOGRAPH - 0x8C77: 0x5BC3, //CJK UNIFIED IDEOGRAPH - 0x8C78: 0x5BC8, //CJK UNIFIED IDEOGRAPH - 0x8C79: 0x5BC9, //CJK UNIFIED IDEOGRAPH - 0x8C7A: 0x5BCA, //CJK UNIFIED IDEOGRAPH - 0x8C7B: 0x5BCB, //CJK UNIFIED IDEOGRAPH - 0x8C7C: 0x5BCD, //CJK UNIFIED IDEOGRAPH - 0x8C7D: 0x5BCE, //CJK UNIFIED IDEOGRAPH - 0x8C7E: 0x5BCF, //CJK UNIFIED IDEOGRAPH - 0x8C80: 0x5BD1, //CJK UNIFIED IDEOGRAPH - 0x8C81: 0x5BD4, //CJK UNIFIED IDEOGRAPH - 0x8C82: 0x5BD5, //CJK UNIFIED IDEOGRAPH - 0x8C83: 0x5BD6, //CJK UNIFIED IDEOGRAPH - 0x8C84: 0x5BD7, //CJK UNIFIED IDEOGRAPH - 0x8C85: 0x5BD8, //CJK UNIFIED IDEOGRAPH - 0x8C86: 0x5BD9, //CJK UNIFIED IDEOGRAPH - 0x8C87: 0x5BDA, //CJK UNIFIED IDEOGRAPH - 0x8C88: 0x5BDB, //CJK UNIFIED IDEOGRAPH - 0x8C89: 0x5BDC, //CJK UNIFIED IDEOGRAPH - 0x8C8A: 0x5BE0, //CJK UNIFIED IDEOGRAPH - 0x8C8B: 0x5BE2, //CJK UNIFIED IDEOGRAPH - 0x8C8C: 0x5BE3, //CJK UNIFIED IDEOGRAPH - 0x8C8D: 0x5BE6, //CJK UNIFIED IDEOGRAPH - 0x8C8E: 0x5BE7, //CJK UNIFIED IDEOGRAPH - 0x8C8F: 0x5BE9, //CJK UNIFIED IDEOGRAPH - 0x8C90: 0x5BEA, //CJK UNIFIED IDEOGRAPH - 0x8C91: 0x5BEB, //CJK UNIFIED IDEOGRAPH - 0x8C92: 0x5BEC, //CJK UNIFIED IDEOGRAPH - 0x8C93: 0x5BED, //CJK UNIFIED IDEOGRAPH - 0x8C94: 0x5BEF, //CJK UNIFIED IDEOGRAPH - 0x8C95: 0x5BF1, //CJK UNIFIED IDEOGRAPH - 0x8C96: 0x5BF2, //CJK UNIFIED IDEOGRAPH - 0x8C97: 0x5BF3, //CJK UNIFIED IDEOGRAPH - 0x8C98: 0x5BF4, //CJK UNIFIED IDEOGRAPH - 0x8C99: 0x5BF5, //CJK UNIFIED IDEOGRAPH - 0x8C9A: 0x5BF6, //CJK UNIFIED IDEOGRAPH - 0x8C9B: 0x5BF7, //CJK UNIFIED IDEOGRAPH - 0x8C9C: 0x5BFD, //CJK UNIFIED IDEOGRAPH - 0x8C9D: 0x5BFE, //CJK UNIFIED IDEOGRAPH - 0x8C9E: 0x5C00, //CJK UNIFIED IDEOGRAPH - 0x8C9F: 0x5C02, //CJK UNIFIED IDEOGRAPH - 0x8CA0: 0x5C03, //CJK UNIFIED IDEOGRAPH - 0x8CA1: 0x5C05, //CJK UNIFIED IDEOGRAPH - 0x8CA2: 0x5C07, //CJK UNIFIED IDEOGRAPH - 0x8CA3: 0x5C08, //CJK UNIFIED IDEOGRAPH - 0x8CA4: 0x5C0B, //CJK UNIFIED IDEOGRAPH - 0x8CA5: 0x5C0C, //CJK UNIFIED IDEOGRAPH - 0x8CA6: 0x5C0D, //CJK UNIFIED IDEOGRAPH - 0x8CA7: 0x5C0E, //CJK UNIFIED IDEOGRAPH - 0x8CA8: 0x5C10, //CJK UNIFIED IDEOGRAPH - 0x8CA9: 0x5C12, //CJK UNIFIED IDEOGRAPH - 0x8CAA: 0x5C13, //CJK UNIFIED IDEOGRAPH - 0x8CAB: 0x5C17, //CJK UNIFIED IDEOGRAPH - 0x8CAC: 0x5C19, //CJK UNIFIED IDEOGRAPH - 0x8CAD: 0x5C1B, //CJK UNIFIED IDEOGRAPH - 0x8CAE: 0x5C1E, //CJK UNIFIED IDEOGRAPH - 0x8CAF: 0x5C1F, //CJK UNIFIED IDEOGRAPH - 0x8CB0: 0x5C20, //CJK UNIFIED IDEOGRAPH - 0x8CB1: 0x5C21, //CJK UNIFIED IDEOGRAPH - 0x8CB2: 0x5C23, //CJK UNIFIED IDEOGRAPH - 0x8CB3: 0x5C26, //CJK UNIFIED IDEOGRAPH - 0x8CB4: 0x5C28, //CJK UNIFIED IDEOGRAPH - 0x8CB5: 0x5C29, //CJK UNIFIED IDEOGRAPH - 0x8CB6: 0x5C2A, //CJK UNIFIED IDEOGRAPH - 0x8CB7: 0x5C2B, //CJK UNIFIED IDEOGRAPH - 0x8CB8: 0x5C2D, //CJK UNIFIED IDEOGRAPH - 0x8CB9: 0x5C2E, //CJK UNIFIED IDEOGRAPH - 0x8CBA: 0x5C2F, //CJK UNIFIED IDEOGRAPH - 0x8CBB: 0x5C30, //CJK UNIFIED IDEOGRAPH - 0x8CBC: 0x5C32, //CJK UNIFIED IDEOGRAPH - 0x8CBD: 0x5C33, //CJK UNIFIED IDEOGRAPH - 0x8CBE: 0x5C35, //CJK UNIFIED IDEOGRAPH - 0x8CBF: 0x5C36, //CJK UNIFIED IDEOGRAPH - 0x8CC0: 0x5C37, //CJK UNIFIED IDEOGRAPH - 0x8CC1: 0x5C43, //CJK UNIFIED IDEOGRAPH - 0x8CC2: 0x5C44, //CJK UNIFIED IDEOGRAPH - 0x8CC3: 0x5C46, //CJK UNIFIED IDEOGRAPH - 0x8CC4: 0x5C47, //CJK UNIFIED IDEOGRAPH - 0x8CC5: 0x5C4C, //CJK UNIFIED IDEOGRAPH - 0x8CC6: 0x5C4D, //CJK UNIFIED IDEOGRAPH - 0x8CC7: 0x5C52, //CJK UNIFIED IDEOGRAPH - 0x8CC8: 0x5C53, //CJK UNIFIED IDEOGRAPH - 0x8CC9: 0x5C54, //CJK UNIFIED IDEOGRAPH - 0x8CCA: 0x5C56, //CJK UNIFIED IDEOGRAPH - 0x8CCB: 0x5C57, //CJK UNIFIED IDEOGRAPH - 0x8CCC: 0x5C58, //CJK UNIFIED IDEOGRAPH - 0x8CCD: 0x5C5A, //CJK UNIFIED IDEOGRAPH - 0x8CCE: 0x5C5B, //CJK UNIFIED IDEOGRAPH - 0x8CCF: 0x5C5C, //CJK UNIFIED IDEOGRAPH - 0x8CD0: 0x5C5D, //CJK UNIFIED IDEOGRAPH - 0x8CD1: 0x5C5F, //CJK UNIFIED IDEOGRAPH - 0x8CD2: 0x5C62, //CJK UNIFIED IDEOGRAPH - 0x8CD3: 0x5C64, //CJK UNIFIED IDEOGRAPH - 0x8CD4: 0x5C67, //CJK UNIFIED IDEOGRAPH - 0x8CD5: 0x5C68, //CJK UNIFIED IDEOGRAPH - 0x8CD6: 0x5C69, //CJK UNIFIED IDEOGRAPH - 0x8CD7: 0x5C6A, //CJK UNIFIED IDEOGRAPH - 0x8CD8: 0x5C6B, //CJK UNIFIED IDEOGRAPH - 0x8CD9: 0x5C6C, //CJK UNIFIED IDEOGRAPH - 0x8CDA: 0x5C6D, //CJK UNIFIED IDEOGRAPH - 0x8CDB: 0x5C70, //CJK UNIFIED IDEOGRAPH - 0x8CDC: 0x5C72, //CJK UNIFIED IDEOGRAPH - 0x8CDD: 0x5C73, //CJK UNIFIED IDEOGRAPH - 0x8CDE: 0x5C74, //CJK UNIFIED IDEOGRAPH - 0x8CDF: 0x5C75, //CJK UNIFIED IDEOGRAPH - 0x8CE0: 0x5C76, //CJK UNIFIED IDEOGRAPH - 0x8CE1: 0x5C77, //CJK UNIFIED IDEOGRAPH - 0x8CE2: 0x5C78, //CJK UNIFIED IDEOGRAPH - 0x8CE3: 0x5C7B, //CJK UNIFIED IDEOGRAPH - 0x8CE4: 0x5C7C, //CJK UNIFIED IDEOGRAPH - 0x8CE5: 0x5C7D, //CJK UNIFIED IDEOGRAPH - 0x8CE6: 0x5C7E, //CJK UNIFIED IDEOGRAPH - 0x8CE7: 0x5C80, //CJK UNIFIED IDEOGRAPH - 0x8CE8: 0x5C83, //CJK UNIFIED IDEOGRAPH - 0x8CE9: 0x5C84, //CJK UNIFIED IDEOGRAPH - 0x8CEA: 0x5C85, //CJK UNIFIED IDEOGRAPH - 0x8CEB: 0x5C86, //CJK UNIFIED IDEOGRAPH - 0x8CEC: 0x5C87, //CJK UNIFIED IDEOGRAPH - 0x8CED: 0x5C89, //CJK UNIFIED IDEOGRAPH - 0x8CEE: 0x5C8A, //CJK UNIFIED IDEOGRAPH - 0x8CEF: 0x5C8B, //CJK UNIFIED IDEOGRAPH - 0x8CF0: 0x5C8E, //CJK UNIFIED IDEOGRAPH - 0x8CF1: 0x5C8F, //CJK UNIFIED IDEOGRAPH - 0x8CF2: 0x5C92, //CJK UNIFIED IDEOGRAPH - 0x8CF3: 0x5C93, //CJK UNIFIED IDEOGRAPH - 0x8CF4: 0x5C95, //CJK UNIFIED IDEOGRAPH - 0x8CF5: 0x5C9D, //CJK UNIFIED IDEOGRAPH - 0x8CF6: 0x5C9E, //CJK UNIFIED IDEOGRAPH - 0x8CF7: 0x5C9F, //CJK UNIFIED IDEOGRAPH - 0x8CF8: 0x5CA0, //CJK UNIFIED IDEOGRAPH - 0x8CF9: 0x5CA1, //CJK UNIFIED IDEOGRAPH - 0x8CFA: 0x5CA4, //CJK UNIFIED IDEOGRAPH - 0x8CFB: 0x5CA5, //CJK UNIFIED IDEOGRAPH - 0x8CFC: 0x5CA6, //CJK UNIFIED IDEOGRAPH - 0x8CFD: 0x5CA7, //CJK UNIFIED IDEOGRAPH - 0x8CFE: 0x5CA8, //CJK UNIFIED IDEOGRAPH - 0x8D40: 0x5CAA, //CJK UNIFIED IDEOGRAPH - 0x8D41: 0x5CAE, //CJK UNIFIED IDEOGRAPH - 0x8D42: 0x5CAF, //CJK UNIFIED IDEOGRAPH - 0x8D43: 0x5CB0, //CJK UNIFIED IDEOGRAPH - 0x8D44: 0x5CB2, //CJK UNIFIED IDEOGRAPH - 0x8D45: 0x5CB4, //CJK UNIFIED IDEOGRAPH - 0x8D46: 0x5CB6, //CJK UNIFIED IDEOGRAPH - 0x8D47: 0x5CB9, //CJK UNIFIED IDEOGRAPH - 0x8D48: 0x5CBA, //CJK UNIFIED IDEOGRAPH - 0x8D49: 0x5CBB, //CJK UNIFIED IDEOGRAPH - 0x8D4A: 0x5CBC, //CJK UNIFIED IDEOGRAPH - 0x8D4B: 0x5CBE, //CJK UNIFIED IDEOGRAPH - 0x8D4C: 0x5CC0, //CJK UNIFIED IDEOGRAPH - 0x8D4D: 0x5CC2, //CJK UNIFIED IDEOGRAPH - 0x8D4E: 0x5CC3, //CJK UNIFIED IDEOGRAPH - 0x8D4F: 0x5CC5, //CJK UNIFIED IDEOGRAPH - 0x8D50: 0x5CC6, //CJK UNIFIED IDEOGRAPH - 0x8D51: 0x5CC7, //CJK UNIFIED IDEOGRAPH - 0x8D52: 0x5CC8, //CJK UNIFIED IDEOGRAPH - 0x8D53: 0x5CC9, //CJK UNIFIED IDEOGRAPH - 0x8D54: 0x5CCA, //CJK UNIFIED IDEOGRAPH - 0x8D55: 0x5CCC, //CJK UNIFIED IDEOGRAPH - 0x8D56: 0x5CCD, //CJK UNIFIED IDEOGRAPH - 0x8D57: 0x5CCE, //CJK UNIFIED IDEOGRAPH - 0x8D58: 0x5CCF, //CJK UNIFIED IDEOGRAPH - 0x8D59: 0x5CD0, //CJK UNIFIED IDEOGRAPH - 0x8D5A: 0x5CD1, //CJK UNIFIED IDEOGRAPH - 0x8D5B: 0x5CD3, //CJK UNIFIED IDEOGRAPH - 0x8D5C: 0x5CD4, //CJK UNIFIED IDEOGRAPH - 0x8D5D: 0x5CD5, //CJK UNIFIED IDEOGRAPH - 0x8D5E: 0x5CD6, //CJK UNIFIED IDEOGRAPH - 0x8D5F: 0x5CD7, //CJK UNIFIED IDEOGRAPH - 0x8D60: 0x5CD8, //CJK UNIFIED IDEOGRAPH - 0x8D61: 0x5CDA, //CJK UNIFIED IDEOGRAPH - 0x8D62: 0x5CDB, //CJK UNIFIED IDEOGRAPH - 0x8D63: 0x5CDC, //CJK UNIFIED IDEOGRAPH - 0x8D64: 0x5CDD, //CJK UNIFIED IDEOGRAPH - 0x8D65: 0x5CDE, //CJK UNIFIED IDEOGRAPH - 0x8D66: 0x5CDF, //CJK UNIFIED IDEOGRAPH - 0x8D67: 0x5CE0, //CJK UNIFIED IDEOGRAPH - 0x8D68: 0x5CE2, //CJK UNIFIED IDEOGRAPH - 0x8D69: 0x5CE3, //CJK UNIFIED IDEOGRAPH - 0x8D6A: 0x5CE7, //CJK UNIFIED IDEOGRAPH - 0x8D6B: 0x5CE9, //CJK UNIFIED IDEOGRAPH - 0x8D6C: 0x5CEB, //CJK UNIFIED IDEOGRAPH - 0x8D6D: 0x5CEC, //CJK UNIFIED IDEOGRAPH - 0x8D6E: 0x5CEE, //CJK UNIFIED IDEOGRAPH - 0x8D6F: 0x5CEF, //CJK UNIFIED IDEOGRAPH - 0x8D70: 0x5CF1, //CJK UNIFIED IDEOGRAPH - 0x8D71: 0x5CF2, //CJK UNIFIED IDEOGRAPH - 0x8D72: 0x5CF3, //CJK UNIFIED IDEOGRAPH - 0x8D73: 0x5CF4, //CJK UNIFIED IDEOGRAPH - 0x8D74: 0x5CF5, //CJK UNIFIED IDEOGRAPH - 0x8D75: 0x5CF6, //CJK UNIFIED IDEOGRAPH - 0x8D76: 0x5CF7, //CJK UNIFIED IDEOGRAPH - 0x8D77: 0x5CF8, //CJK UNIFIED IDEOGRAPH - 0x8D78: 0x5CF9, //CJK UNIFIED IDEOGRAPH - 0x8D79: 0x5CFA, //CJK UNIFIED IDEOGRAPH - 0x8D7A: 0x5CFC, //CJK UNIFIED IDEOGRAPH - 0x8D7B: 0x5CFD, //CJK UNIFIED IDEOGRAPH - 0x8D7C: 0x5CFE, //CJK UNIFIED IDEOGRAPH - 0x8D7D: 0x5CFF, //CJK UNIFIED IDEOGRAPH - 0x8D7E: 0x5D00, //CJK UNIFIED IDEOGRAPH - 0x8D80: 0x5D01, //CJK UNIFIED IDEOGRAPH - 0x8D81: 0x5D04, //CJK UNIFIED IDEOGRAPH - 0x8D82: 0x5D05, //CJK UNIFIED IDEOGRAPH - 0x8D83: 0x5D08, //CJK UNIFIED IDEOGRAPH - 0x8D84: 0x5D09, //CJK UNIFIED IDEOGRAPH - 0x8D85: 0x5D0A, //CJK UNIFIED IDEOGRAPH - 0x8D86: 0x5D0B, //CJK UNIFIED IDEOGRAPH - 0x8D87: 0x5D0C, //CJK UNIFIED IDEOGRAPH - 0x8D88: 0x5D0D, //CJK UNIFIED IDEOGRAPH - 0x8D89: 0x5D0F, //CJK UNIFIED IDEOGRAPH - 0x8D8A: 0x5D10, //CJK UNIFIED IDEOGRAPH - 0x8D8B: 0x5D11, //CJK UNIFIED IDEOGRAPH - 0x8D8C: 0x5D12, //CJK UNIFIED IDEOGRAPH - 0x8D8D: 0x5D13, //CJK UNIFIED IDEOGRAPH - 0x8D8E: 0x5D15, //CJK UNIFIED IDEOGRAPH - 0x8D8F: 0x5D17, //CJK UNIFIED IDEOGRAPH - 0x8D90: 0x5D18, //CJK UNIFIED IDEOGRAPH - 0x8D91: 0x5D19, //CJK UNIFIED IDEOGRAPH - 0x8D92: 0x5D1A, //CJK UNIFIED IDEOGRAPH - 0x8D93: 0x5D1C, //CJK UNIFIED IDEOGRAPH - 0x8D94: 0x5D1D, //CJK UNIFIED IDEOGRAPH - 0x8D95: 0x5D1F, //CJK UNIFIED IDEOGRAPH - 0x8D96: 0x5D20, //CJK UNIFIED IDEOGRAPH - 0x8D97: 0x5D21, //CJK UNIFIED IDEOGRAPH - 0x8D98: 0x5D22, //CJK UNIFIED IDEOGRAPH - 0x8D99: 0x5D23, //CJK UNIFIED IDEOGRAPH - 0x8D9A: 0x5D25, //CJK UNIFIED IDEOGRAPH - 0x8D9B: 0x5D28, //CJK UNIFIED IDEOGRAPH - 0x8D9C: 0x5D2A, //CJK UNIFIED IDEOGRAPH - 0x8D9D: 0x5D2B, //CJK UNIFIED IDEOGRAPH - 0x8D9E: 0x5D2C, //CJK UNIFIED IDEOGRAPH - 0x8D9F: 0x5D2F, //CJK UNIFIED IDEOGRAPH - 0x8DA0: 0x5D30, //CJK UNIFIED IDEOGRAPH - 0x8DA1: 0x5D31, //CJK UNIFIED IDEOGRAPH - 0x8DA2: 0x5D32, //CJK UNIFIED IDEOGRAPH - 0x8DA3: 0x5D33, //CJK UNIFIED IDEOGRAPH - 0x8DA4: 0x5D35, //CJK UNIFIED IDEOGRAPH - 0x8DA5: 0x5D36, //CJK UNIFIED IDEOGRAPH - 0x8DA6: 0x5D37, //CJK UNIFIED IDEOGRAPH - 0x8DA7: 0x5D38, //CJK UNIFIED IDEOGRAPH - 0x8DA8: 0x5D39, //CJK UNIFIED IDEOGRAPH - 0x8DA9: 0x5D3A, //CJK UNIFIED IDEOGRAPH - 0x8DAA: 0x5D3B, //CJK UNIFIED IDEOGRAPH - 0x8DAB: 0x5D3C, //CJK UNIFIED IDEOGRAPH - 0x8DAC: 0x5D3F, //CJK UNIFIED IDEOGRAPH - 0x8DAD: 0x5D40, //CJK UNIFIED IDEOGRAPH - 0x8DAE: 0x5D41, //CJK UNIFIED IDEOGRAPH - 0x8DAF: 0x5D42, //CJK UNIFIED IDEOGRAPH - 0x8DB0: 0x5D43, //CJK UNIFIED IDEOGRAPH - 0x8DB1: 0x5D44, //CJK UNIFIED IDEOGRAPH - 0x8DB2: 0x5D45, //CJK UNIFIED IDEOGRAPH - 0x8DB3: 0x5D46, //CJK UNIFIED IDEOGRAPH - 0x8DB4: 0x5D48, //CJK UNIFIED IDEOGRAPH - 0x8DB5: 0x5D49, //CJK UNIFIED IDEOGRAPH - 0x8DB6: 0x5D4D, //CJK UNIFIED IDEOGRAPH - 0x8DB7: 0x5D4E, //CJK UNIFIED IDEOGRAPH - 0x8DB8: 0x5D4F, //CJK UNIFIED IDEOGRAPH - 0x8DB9: 0x5D50, //CJK UNIFIED IDEOGRAPH - 0x8DBA: 0x5D51, //CJK UNIFIED IDEOGRAPH - 0x8DBB: 0x5D52, //CJK UNIFIED IDEOGRAPH - 0x8DBC: 0x5D53, //CJK UNIFIED IDEOGRAPH - 0x8DBD: 0x5D54, //CJK UNIFIED IDEOGRAPH - 0x8DBE: 0x5D55, //CJK UNIFIED IDEOGRAPH - 0x8DBF: 0x5D56, //CJK UNIFIED IDEOGRAPH - 0x8DC0: 0x5D57, //CJK UNIFIED IDEOGRAPH - 0x8DC1: 0x5D59, //CJK UNIFIED IDEOGRAPH - 0x8DC2: 0x5D5A, //CJK UNIFIED IDEOGRAPH - 0x8DC3: 0x5D5C, //CJK UNIFIED IDEOGRAPH - 0x8DC4: 0x5D5E, //CJK UNIFIED IDEOGRAPH - 0x8DC5: 0x5D5F, //CJK UNIFIED IDEOGRAPH - 0x8DC6: 0x5D60, //CJK UNIFIED IDEOGRAPH - 0x8DC7: 0x5D61, //CJK UNIFIED IDEOGRAPH - 0x8DC8: 0x5D62, //CJK UNIFIED IDEOGRAPH - 0x8DC9: 0x5D63, //CJK UNIFIED IDEOGRAPH - 0x8DCA: 0x5D64, //CJK UNIFIED IDEOGRAPH - 0x8DCB: 0x5D65, //CJK UNIFIED IDEOGRAPH - 0x8DCC: 0x5D66, //CJK UNIFIED IDEOGRAPH - 0x8DCD: 0x5D67, //CJK UNIFIED IDEOGRAPH - 0x8DCE: 0x5D68, //CJK UNIFIED IDEOGRAPH - 0x8DCF: 0x5D6A, //CJK UNIFIED IDEOGRAPH - 0x8DD0: 0x5D6D, //CJK UNIFIED IDEOGRAPH - 0x8DD1: 0x5D6E, //CJK UNIFIED IDEOGRAPH - 0x8DD2: 0x5D70, //CJK UNIFIED IDEOGRAPH - 0x8DD3: 0x5D71, //CJK UNIFIED IDEOGRAPH - 0x8DD4: 0x5D72, //CJK UNIFIED IDEOGRAPH - 0x8DD5: 0x5D73, //CJK UNIFIED IDEOGRAPH - 0x8DD6: 0x5D75, //CJK UNIFIED IDEOGRAPH - 0x8DD7: 0x5D76, //CJK UNIFIED IDEOGRAPH - 0x8DD8: 0x5D77, //CJK UNIFIED IDEOGRAPH - 0x8DD9: 0x5D78, //CJK UNIFIED IDEOGRAPH - 0x8DDA: 0x5D79, //CJK UNIFIED IDEOGRAPH - 0x8DDB: 0x5D7A, //CJK UNIFIED IDEOGRAPH - 0x8DDC: 0x5D7B, //CJK UNIFIED IDEOGRAPH - 0x8DDD: 0x5D7C, //CJK UNIFIED IDEOGRAPH - 0x8DDE: 0x5D7D, //CJK UNIFIED IDEOGRAPH - 0x8DDF: 0x5D7E, //CJK UNIFIED IDEOGRAPH - 0x8DE0: 0x5D7F, //CJK UNIFIED IDEOGRAPH - 0x8DE1: 0x5D80, //CJK UNIFIED IDEOGRAPH - 0x8DE2: 0x5D81, //CJK UNIFIED IDEOGRAPH - 0x8DE3: 0x5D83, //CJK UNIFIED IDEOGRAPH - 0x8DE4: 0x5D84, //CJK UNIFIED IDEOGRAPH - 0x8DE5: 0x5D85, //CJK UNIFIED IDEOGRAPH - 0x8DE6: 0x5D86, //CJK UNIFIED IDEOGRAPH - 0x8DE7: 0x5D87, //CJK UNIFIED IDEOGRAPH - 0x8DE8: 0x5D88, //CJK UNIFIED IDEOGRAPH - 0x8DE9: 0x5D89, //CJK UNIFIED IDEOGRAPH - 0x8DEA: 0x5D8A, //CJK UNIFIED IDEOGRAPH - 0x8DEB: 0x5D8B, //CJK UNIFIED IDEOGRAPH - 0x8DEC: 0x5D8C, //CJK UNIFIED IDEOGRAPH - 0x8DED: 0x5D8D, //CJK UNIFIED IDEOGRAPH - 0x8DEE: 0x5D8E, //CJK UNIFIED IDEOGRAPH - 0x8DEF: 0x5D8F, //CJK UNIFIED IDEOGRAPH - 0x8DF0: 0x5D90, //CJK UNIFIED IDEOGRAPH - 0x8DF1: 0x5D91, //CJK UNIFIED IDEOGRAPH - 0x8DF2: 0x5D92, //CJK UNIFIED IDEOGRAPH - 0x8DF3: 0x5D93, //CJK UNIFIED IDEOGRAPH - 0x8DF4: 0x5D94, //CJK UNIFIED IDEOGRAPH - 0x8DF5: 0x5D95, //CJK UNIFIED IDEOGRAPH - 0x8DF6: 0x5D96, //CJK UNIFIED IDEOGRAPH - 0x8DF7: 0x5D97, //CJK UNIFIED IDEOGRAPH - 0x8DF8: 0x5D98, //CJK UNIFIED IDEOGRAPH - 0x8DF9: 0x5D9A, //CJK UNIFIED IDEOGRAPH - 0x8DFA: 0x5D9B, //CJK UNIFIED IDEOGRAPH - 0x8DFB: 0x5D9C, //CJK UNIFIED IDEOGRAPH - 0x8DFC: 0x5D9E, //CJK UNIFIED IDEOGRAPH - 0x8DFD: 0x5D9F, //CJK UNIFIED IDEOGRAPH - 0x8DFE: 0x5DA0, //CJK UNIFIED IDEOGRAPH - 0x8E40: 0x5DA1, //CJK UNIFIED IDEOGRAPH - 0x8E41: 0x5DA2, //CJK UNIFIED IDEOGRAPH - 0x8E42: 0x5DA3, //CJK UNIFIED IDEOGRAPH - 0x8E43: 0x5DA4, //CJK UNIFIED IDEOGRAPH - 0x8E44: 0x5DA5, //CJK UNIFIED IDEOGRAPH - 0x8E45: 0x5DA6, //CJK UNIFIED IDEOGRAPH - 0x8E46: 0x5DA7, //CJK UNIFIED IDEOGRAPH - 0x8E47: 0x5DA8, //CJK UNIFIED IDEOGRAPH - 0x8E48: 0x5DA9, //CJK UNIFIED IDEOGRAPH - 0x8E49: 0x5DAA, //CJK UNIFIED IDEOGRAPH - 0x8E4A: 0x5DAB, //CJK UNIFIED IDEOGRAPH - 0x8E4B: 0x5DAC, //CJK UNIFIED IDEOGRAPH - 0x8E4C: 0x5DAD, //CJK UNIFIED IDEOGRAPH - 0x8E4D: 0x5DAE, //CJK UNIFIED IDEOGRAPH - 0x8E4E: 0x5DAF, //CJK UNIFIED IDEOGRAPH - 0x8E4F: 0x5DB0, //CJK UNIFIED IDEOGRAPH - 0x8E50: 0x5DB1, //CJK UNIFIED IDEOGRAPH - 0x8E51: 0x5DB2, //CJK UNIFIED IDEOGRAPH - 0x8E52: 0x5DB3, //CJK UNIFIED IDEOGRAPH - 0x8E53: 0x5DB4, //CJK UNIFIED IDEOGRAPH - 0x8E54: 0x5DB5, //CJK UNIFIED IDEOGRAPH - 0x8E55: 0x5DB6, //CJK UNIFIED IDEOGRAPH - 0x8E56: 0x5DB8, //CJK UNIFIED IDEOGRAPH - 0x8E57: 0x5DB9, //CJK UNIFIED IDEOGRAPH - 0x8E58: 0x5DBA, //CJK UNIFIED IDEOGRAPH - 0x8E59: 0x5DBB, //CJK UNIFIED IDEOGRAPH - 0x8E5A: 0x5DBC, //CJK UNIFIED IDEOGRAPH - 0x8E5B: 0x5DBD, //CJK UNIFIED IDEOGRAPH - 0x8E5C: 0x5DBE, //CJK UNIFIED IDEOGRAPH - 0x8E5D: 0x5DBF, //CJK UNIFIED IDEOGRAPH - 0x8E5E: 0x5DC0, //CJK UNIFIED IDEOGRAPH - 0x8E5F: 0x5DC1, //CJK UNIFIED IDEOGRAPH - 0x8E60: 0x5DC2, //CJK UNIFIED IDEOGRAPH - 0x8E61: 0x5DC3, //CJK UNIFIED IDEOGRAPH - 0x8E62: 0x5DC4, //CJK UNIFIED IDEOGRAPH - 0x8E63: 0x5DC6, //CJK UNIFIED IDEOGRAPH - 0x8E64: 0x5DC7, //CJK UNIFIED IDEOGRAPH - 0x8E65: 0x5DC8, //CJK UNIFIED IDEOGRAPH - 0x8E66: 0x5DC9, //CJK UNIFIED IDEOGRAPH - 0x8E67: 0x5DCA, //CJK UNIFIED IDEOGRAPH - 0x8E68: 0x5DCB, //CJK UNIFIED IDEOGRAPH - 0x8E69: 0x5DCC, //CJK UNIFIED IDEOGRAPH - 0x8E6A: 0x5DCE, //CJK UNIFIED IDEOGRAPH - 0x8E6B: 0x5DCF, //CJK UNIFIED IDEOGRAPH - 0x8E6C: 0x5DD0, //CJK UNIFIED IDEOGRAPH - 0x8E6D: 0x5DD1, //CJK UNIFIED IDEOGRAPH - 0x8E6E: 0x5DD2, //CJK UNIFIED IDEOGRAPH - 0x8E6F: 0x5DD3, //CJK UNIFIED IDEOGRAPH - 0x8E70: 0x5DD4, //CJK UNIFIED IDEOGRAPH - 0x8E71: 0x5DD5, //CJK UNIFIED IDEOGRAPH - 0x8E72: 0x5DD6, //CJK UNIFIED IDEOGRAPH - 0x8E73: 0x5DD7, //CJK UNIFIED IDEOGRAPH - 0x8E74: 0x5DD8, //CJK UNIFIED IDEOGRAPH - 0x8E75: 0x5DD9, //CJK UNIFIED IDEOGRAPH - 0x8E76: 0x5DDA, //CJK UNIFIED IDEOGRAPH - 0x8E77: 0x5DDC, //CJK UNIFIED IDEOGRAPH - 0x8E78: 0x5DDF, //CJK UNIFIED IDEOGRAPH - 0x8E79: 0x5DE0, //CJK UNIFIED IDEOGRAPH - 0x8E7A: 0x5DE3, //CJK UNIFIED IDEOGRAPH - 0x8E7B: 0x5DE4, //CJK UNIFIED IDEOGRAPH - 0x8E7C: 0x5DEA, //CJK UNIFIED IDEOGRAPH - 0x8E7D: 0x5DEC, //CJK UNIFIED IDEOGRAPH - 0x8E7E: 0x5DED, //CJK UNIFIED IDEOGRAPH - 0x8E80: 0x5DF0, //CJK UNIFIED IDEOGRAPH - 0x8E81: 0x5DF5, //CJK UNIFIED IDEOGRAPH - 0x8E82: 0x5DF6, //CJK UNIFIED IDEOGRAPH - 0x8E83: 0x5DF8, //CJK UNIFIED IDEOGRAPH - 0x8E84: 0x5DF9, //CJK UNIFIED IDEOGRAPH - 0x8E85: 0x5DFA, //CJK UNIFIED IDEOGRAPH - 0x8E86: 0x5DFB, //CJK UNIFIED IDEOGRAPH - 0x8E87: 0x5DFC, //CJK UNIFIED IDEOGRAPH - 0x8E88: 0x5DFF, //CJK UNIFIED IDEOGRAPH - 0x8E89: 0x5E00, //CJK UNIFIED IDEOGRAPH - 0x8E8A: 0x5E04, //CJK UNIFIED IDEOGRAPH - 0x8E8B: 0x5E07, //CJK UNIFIED IDEOGRAPH - 0x8E8C: 0x5E09, //CJK UNIFIED IDEOGRAPH - 0x8E8D: 0x5E0A, //CJK UNIFIED IDEOGRAPH - 0x8E8E: 0x5E0B, //CJK UNIFIED IDEOGRAPH - 0x8E8F: 0x5E0D, //CJK UNIFIED IDEOGRAPH - 0x8E90: 0x5E0E, //CJK UNIFIED IDEOGRAPH - 0x8E91: 0x5E12, //CJK UNIFIED IDEOGRAPH - 0x8E92: 0x5E13, //CJK UNIFIED IDEOGRAPH - 0x8E93: 0x5E17, //CJK UNIFIED IDEOGRAPH - 0x8E94: 0x5E1E, //CJK UNIFIED IDEOGRAPH - 0x8E95: 0x5E1F, //CJK UNIFIED IDEOGRAPH - 0x8E96: 0x5E20, //CJK UNIFIED IDEOGRAPH - 0x8E97: 0x5E21, //CJK UNIFIED IDEOGRAPH - 0x8E98: 0x5E22, //CJK UNIFIED IDEOGRAPH - 0x8E99: 0x5E23, //CJK UNIFIED IDEOGRAPH - 0x8E9A: 0x5E24, //CJK UNIFIED IDEOGRAPH - 0x8E9B: 0x5E25, //CJK UNIFIED IDEOGRAPH - 0x8E9C: 0x5E28, //CJK UNIFIED IDEOGRAPH - 0x8E9D: 0x5E29, //CJK UNIFIED IDEOGRAPH - 0x8E9E: 0x5E2A, //CJK UNIFIED IDEOGRAPH - 0x8E9F: 0x5E2B, //CJK UNIFIED IDEOGRAPH - 0x8EA0: 0x5E2C, //CJK UNIFIED IDEOGRAPH - 0x8EA1: 0x5E2F, //CJK UNIFIED IDEOGRAPH - 0x8EA2: 0x5E30, //CJK UNIFIED IDEOGRAPH - 0x8EA3: 0x5E32, //CJK UNIFIED IDEOGRAPH - 0x8EA4: 0x5E33, //CJK UNIFIED IDEOGRAPH - 0x8EA5: 0x5E34, //CJK UNIFIED IDEOGRAPH - 0x8EA6: 0x5E35, //CJK UNIFIED IDEOGRAPH - 0x8EA7: 0x5E36, //CJK UNIFIED IDEOGRAPH - 0x8EA8: 0x5E39, //CJK UNIFIED IDEOGRAPH - 0x8EA9: 0x5E3A, //CJK UNIFIED IDEOGRAPH - 0x8EAA: 0x5E3E, //CJK UNIFIED IDEOGRAPH - 0x8EAB: 0x5E3F, //CJK UNIFIED IDEOGRAPH - 0x8EAC: 0x5E40, //CJK UNIFIED IDEOGRAPH - 0x8EAD: 0x5E41, //CJK UNIFIED IDEOGRAPH - 0x8EAE: 0x5E43, //CJK UNIFIED IDEOGRAPH - 0x8EAF: 0x5E46, //CJK UNIFIED IDEOGRAPH - 0x8EB0: 0x5E47, //CJK UNIFIED IDEOGRAPH - 0x8EB1: 0x5E48, //CJK UNIFIED IDEOGRAPH - 0x8EB2: 0x5E49, //CJK UNIFIED IDEOGRAPH - 0x8EB3: 0x5E4A, //CJK UNIFIED IDEOGRAPH - 0x8EB4: 0x5E4B, //CJK UNIFIED IDEOGRAPH - 0x8EB5: 0x5E4D, //CJK UNIFIED IDEOGRAPH - 0x8EB6: 0x5E4E, //CJK UNIFIED IDEOGRAPH - 0x8EB7: 0x5E4F, //CJK UNIFIED IDEOGRAPH - 0x8EB8: 0x5E50, //CJK UNIFIED IDEOGRAPH - 0x8EB9: 0x5E51, //CJK UNIFIED IDEOGRAPH - 0x8EBA: 0x5E52, //CJK UNIFIED IDEOGRAPH - 0x8EBB: 0x5E53, //CJK UNIFIED IDEOGRAPH - 0x8EBC: 0x5E56, //CJK UNIFIED IDEOGRAPH - 0x8EBD: 0x5E57, //CJK UNIFIED IDEOGRAPH - 0x8EBE: 0x5E58, //CJK UNIFIED IDEOGRAPH - 0x8EBF: 0x5E59, //CJK UNIFIED IDEOGRAPH - 0x8EC0: 0x5E5A, //CJK UNIFIED IDEOGRAPH - 0x8EC1: 0x5E5C, //CJK UNIFIED IDEOGRAPH - 0x8EC2: 0x5E5D, //CJK UNIFIED IDEOGRAPH - 0x8EC3: 0x5E5F, //CJK UNIFIED IDEOGRAPH - 0x8EC4: 0x5E60, //CJK UNIFIED IDEOGRAPH - 0x8EC5: 0x5E63, //CJK UNIFIED IDEOGRAPH - 0x8EC6: 0x5E64, //CJK UNIFIED IDEOGRAPH - 0x8EC7: 0x5E65, //CJK UNIFIED IDEOGRAPH - 0x8EC8: 0x5E66, //CJK UNIFIED IDEOGRAPH - 0x8EC9: 0x5E67, //CJK UNIFIED IDEOGRAPH - 0x8ECA: 0x5E68, //CJK UNIFIED IDEOGRAPH - 0x8ECB: 0x5E69, //CJK UNIFIED IDEOGRAPH - 0x8ECC: 0x5E6A, //CJK UNIFIED IDEOGRAPH - 0x8ECD: 0x5E6B, //CJK UNIFIED IDEOGRAPH - 0x8ECE: 0x5E6C, //CJK UNIFIED IDEOGRAPH - 0x8ECF: 0x5E6D, //CJK UNIFIED IDEOGRAPH - 0x8ED0: 0x5E6E, //CJK UNIFIED IDEOGRAPH - 0x8ED1: 0x5E6F, //CJK UNIFIED IDEOGRAPH - 0x8ED2: 0x5E70, //CJK UNIFIED IDEOGRAPH - 0x8ED3: 0x5E71, //CJK UNIFIED IDEOGRAPH - 0x8ED4: 0x5E75, //CJK UNIFIED IDEOGRAPH - 0x8ED5: 0x5E77, //CJK UNIFIED IDEOGRAPH - 0x8ED6: 0x5E79, //CJK UNIFIED IDEOGRAPH - 0x8ED7: 0x5E7E, //CJK UNIFIED IDEOGRAPH - 0x8ED8: 0x5E81, //CJK UNIFIED IDEOGRAPH - 0x8ED9: 0x5E82, //CJK UNIFIED IDEOGRAPH - 0x8EDA: 0x5E83, //CJK UNIFIED IDEOGRAPH - 0x8EDB: 0x5E85, //CJK UNIFIED IDEOGRAPH - 0x8EDC: 0x5E88, //CJK UNIFIED IDEOGRAPH - 0x8EDD: 0x5E89, //CJK UNIFIED IDEOGRAPH - 0x8EDE: 0x5E8C, //CJK UNIFIED IDEOGRAPH - 0x8EDF: 0x5E8D, //CJK UNIFIED IDEOGRAPH - 0x8EE0: 0x5E8E, //CJK UNIFIED IDEOGRAPH - 0x8EE1: 0x5E92, //CJK UNIFIED IDEOGRAPH - 0x8EE2: 0x5E98, //CJK UNIFIED IDEOGRAPH - 0x8EE3: 0x5E9B, //CJK UNIFIED IDEOGRAPH - 0x8EE4: 0x5E9D, //CJK UNIFIED IDEOGRAPH - 0x8EE5: 0x5EA1, //CJK UNIFIED IDEOGRAPH - 0x8EE6: 0x5EA2, //CJK UNIFIED IDEOGRAPH - 0x8EE7: 0x5EA3, //CJK UNIFIED IDEOGRAPH - 0x8EE8: 0x5EA4, //CJK UNIFIED IDEOGRAPH - 0x8EE9: 0x5EA8, //CJK UNIFIED IDEOGRAPH - 0x8EEA: 0x5EA9, //CJK UNIFIED IDEOGRAPH - 0x8EEB: 0x5EAA, //CJK UNIFIED IDEOGRAPH - 0x8EEC: 0x5EAB, //CJK UNIFIED IDEOGRAPH - 0x8EED: 0x5EAC, //CJK UNIFIED IDEOGRAPH - 0x8EEE: 0x5EAE, //CJK UNIFIED IDEOGRAPH - 0x8EEF: 0x5EAF, //CJK UNIFIED IDEOGRAPH - 0x8EF0: 0x5EB0, //CJK UNIFIED IDEOGRAPH - 0x8EF1: 0x5EB1, //CJK UNIFIED IDEOGRAPH - 0x8EF2: 0x5EB2, //CJK UNIFIED IDEOGRAPH - 0x8EF3: 0x5EB4, //CJK UNIFIED IDEOGRAPH - 0x8EF4: 0x5EBA, //CJK UNIFIED IDEOGRAPH - 0x8EF5: 0x5EBB, //CJK UNIFIED IDEOGRAPH - 0x8EF6: 0x5EBC, //CJK UNIFIED IDEOGRAPH - 0x8EF7: 0x5EBD, //CJK UNIFIED IDEOGRAPH - 0x8EF8: 0x5EBF, //CJK UNIFIED IDEOGRAPH - 0x8EF9: 0x5EC0, //CJK UNIFIED IDEOGRAPH - 0x8EFA: 0x5EC1, //CJK UNIFIED IDEOGRAPH - 0x8EFB: 0x5EC2, //CJK UNIFIED IDEOGRAPH - 0x8EFC: 0x5EC3, //CJK UNIFIED IDEOGRAPH - 0x8EFD: 0x5EC4, //CJK UNIFIED IDEOGRAPH - 0x8EFE: 0x5EC5, //CJK UNIFIED IDEOGRAPH - 0x8F40: 0x5EC6, //CJK UNIFIED IDEOGRAPH - 0x8F41: 0x5EC7, //CJK UNIFIED IDEOGRAPH - 0x8F42: 0x5EC8, //CJK UNIFIED IDEOGRAPH - 0x8F43: 0x5ECB, //CJK UNIFIED IDEOGRAPH - 0x8F44: 0x5ECC, //CJK UNIFIED IDEOGRAPH - 0x8F45: 0x5ECD, //CJK UNIFIED IDEOGRAPH - 0x8F46: 0x5ECE, //CJK UNIFIED IDEOGRAPH - 0x8F47: 0x5ECF, //CJK UNIFIED IDEOGRAPH - 0x8F48: 0x5ED0, //CJK UNIFIED IDEOGRAPH - 0x8F49: 0x5ED4, //CJK UNIFIED IDEOGRAPH - 0x8F4A: 0x5ED5, //CJK UNIFIED IDEOGRAPH - 0x8F4B: 0x5ED7, //CJK UNIFIED IDEOGRAPH - 0x8F4C: 0x5ED8, //CJK UNIFIED IDEOGRAPH - 0x8F4D: 0x5ED9, //CJK UNIFIED IDEOGRAPH - 0x8F4E: 0x5EDA, //CJK UNIFIED IDEOGRAPH - 0x8F4F: 0x5EDC, //CJK UNIFIED IDEOGRAPH - 0x8F50: 0x5EDD, //CJK UNIFIED IDEOGRAPH - 0x8F51: 0x5EDE, //CJK UNIFIED IDEOGRAPH - 0x8F52: 0x5EDF, //CJK UNIFIED IDEOGRAPH - 0x8F53: 0x5EE0, //CJK UNIFIED IDEOGRAPH - 0x8F54: 0x5EE1, //CJK UNIFIED IDEOGRAPH - 0x8F55: 0x5EE2, //CJK UNIFIED IDEOGRAPH - 0x8F56: 0x5EE3, //CJK UNIFIED IDEOGRAPH - 0x8F57: 0x5EE4, //CJK UNIFIED IDEOGRAPH - 0x8F58: 0x5EE5, //CJK UNIFIED IDEOGRAPH - 0x8F59: 0x5EE6, //CJK UNIFIED IDEOGRAPH - 0x8F5A: 0x5EE7, //CJK UNIFIED IDEOGRAPH - 0x8F5B: 0x5EE9, //CJK UNIFIED IDEOGRAPH - 0x8F5C: 0x5EEB, //CJK UNIFIED IDEOGRAPH - 0x8F5D: 0x5EEC, //CJK UNIFIED IDEOGRAPH - 0x8F5E: 0x5EED, //CJK UNIFIED IDEOGRAPH - 0x8F5F: 0x5EEE, //CJK UNIFIED IDEOGRAPH - 0x8F60: 0x5EEF, //CJK UNIFIED IDEOGRAPH - 0x8F61: 0x5EF0, //CJK UNIFIED IDEOGRAPH - 0x8F62: 0x5EF1, //CJK UNIFIED IDEOGRAPH - 0x8F63: 0x5EF2, //CJK UNIFIED IDEOGRAPH - 0x8F64: 0x5EF3, //CJK UNIFIED IDEOGRAPH - 0x8F65: 0x5EF5, //CJK UNIFIED IDEOGRAPH - 0x8F66: 0x5EF8, //CJK UNIFIED IDEOGRAPH - 0x8F67: 0x5EF9, //CJK UNIFIED IDEOGRAPH - 0x8F68: 0x5EFB, //CJK UNIFIED IDEOGRAPH - 0x8F69: 0x5EFC, //CJK UNIFIED IDEOGRAPH - 0x8F6A: 0x5EFD, //CJK UNIFIED IDEOGRAPH - 0x8F6B: 0x5F05, //CJK UNIFIED IDEOGRAPH - 0x8F6C: 0x5F06, //CJK UNIFIED IDEOGRAPH - 0x8F6D: 0x5F07, //CJK UNIFIED IDEOGRAPH - 0x8F6E: 0x5F09, //CJK UNIFIED IDEOGRAPH - 0x8F6F: 0x5F0C, //CJK UNIFIED IDEOGRAPH - 0x8F70: 0x5F0D, //CJK UNIFIED IDEOGRAPH - 0x8F71: 0x5F0E, //CJK UNIFIED IDEOGRAPH - 0x8F72: 0x5F10, //CJK UNIFIED IDEOGRAPH - 0x8F73: 0x5F12, //CJK UNIFIED IDEOGRAPH - 0x8F74: 0x5F14, //CJK UNIFIED IDEOGRAPH - 0x8F75: 0x5F16, //CJK UNIFIED IDEOGRAPH - 0x8F76: 0x5F19, //CJK UNIFIED IDEOGRAPH - 0x8F77: 0x5F1A, //CJK UNIFIED IDEOGRAPH - 0x8F78: 0x5F1C, //CJK UNIFIED IDEOGRAPH - 0x8F79: 0x5F1D, //CJK UNIFIED IDEOGRAPH - 0x8F7A: 0x5F1E, //CJK UNIFIED IDEOGRAPH - 0x8F7B: 0x5F21, //CJK UNIFIED IDEOGRAPH - 0x8F7C: 0x5F22, //CJK UNIFIED IDEOGRAPH - 0x8F7D: 0x5F23, //CJK UNIFIED IDEOGRAPH - 0x8F7E: 0x5F24, //CJK UNIFIED IDEOGRAPH - 0x8F80: 0x5F28, //CJK UNIFIED IDEOGRAPH - 0x8F81: 0x5F2B, //CJK UNIFIED IDEOGRAPH - 0x8F82: 0x5F2C, //CJK UNIFIED IDEOGRAPH - 0x8F83: 0x5F2E, //CJK UNIFIED IDEOGRAPH - 0x8F84: 0x5F30, //CJK UNIFIED IDEOGRAPH - 0x8F85: 0x5F32, //CJK UNIFIED IDEOGRAPH - 0x8F86: 0x5F33, //CJK UNIFIED IDEOGRAPH - 0x8F87: 0x5F34, //CJK UNIFIED IDEOGRAPH - 0x8F88: 0x5F35, //CJK UNIFIED IDEOGRAPH - 0x8F89: 0x5F36, //CJK UNIFIED IDEOGRAPH - 0x8F8A: 0x5F37, //CJK UNIFIED IDEOGRAPH - 0x8F8B: 0x5F38, //CJK UNIFIED IDEOGRAPH - 0x8F8C: 0x5F3B, //CJK UNIFIED IDEOGRAPH - 0x8F8D: 0x5F3D, //CJK UNIFIED IDEOGRAPH - 0x8F8E: 0x5F3E, //CJK UNIFIED IDEOGRAPH - 0x8F8F: 0x5F3F, //CJK UNIFIED IDEOGRAPH - 0x8F90: 0x5F41, //CJK UNIFIED IDEOGRAPH - 0x8F91: 0x5F42, //CJK UNIFIED IDEOGRAPH - 0x8F92: 0x5F43, //CJK UNIFIED IDEOGRAPH - 0x8F93: 0x5F44, //CJK UNIFIED IDEOGRAPH - 0x8F94: 0x5F45, //CJK UNIFIED IDEOGRAPH - 0x8F95: 0x5F46, //CJK UNIFIED IDEOGRAPH - 0x8F96: 0x5F47, //CJK UNIFIED IDEOGRAPH - 0x8F97: 0x5F48, //CJK UNIFIED IDEOGRAPH - 0x8F98: 0x5F49, //CJK UNIFIED IDEOGRAPH - 0x8F99: 0x5F4A, //CJK UNIFIED IDEOGRAPH - 0x8F9A: 0x5F4B, //CJK UNIFIED IDEOGRAPH - 0x8F9B: 0x5F4C, //CJK UNIFIED IDEOGRAPH - 0x8F9C: 0x5F4D, //CJK UNIFIED IDEOGRAPH - 0x8F9D: 0x5F4E, //CJK UNIFIED IDEOGRAPH - 0x8F9E: 0x5F4F, //CJK UNIFIED IDEOGRAPH - 0x8F9F: 0x5F51, //CJK UNIFIED IDEOGRAPH - 0x8FA0: 0x5F54, //CJK UNIFIED IDEOGRAPH - 0x8FA1: 0x5F59, //CJK UNIFIED IDEOGRAPH - 0x8FA2: 0x5F5A, //CJK UNIFIED IDEOGRAPH - 0x8FA3: 0x5F5B, //CJK UNIFIED IDEOGRAPH - 0x8FA4: 0x5F5C, //CJK UNIFIED IDEOGRAPH - 0x8FA5: 0x5F5E, //CJK UNIFIED IDEOGRAPH - 0x8FA6: 0x5F5F, //CJK UNIFIED IDEOGRAPH - 0x8FA7: 0x5F60, //CJK UNIFIED IDEOGRAPH - 0x8FA8: 0x5F63, //CJK UNIFIED IDEOGRAPH - 0x8FA9: 0x5F65, //CJK UNIFIED IDEOGRAPH - 0x8FAA: 0x5F67, //CJK UNIFIED IDEOGRAPH - 0x8FAB: 0x5F68, //CJK UNIFIED IDEOGRAPH - 0x8FAC: 0x5F6B, //CJK UNIFIED IDEOGRAPH - 0x8FAD: 0x5F6E, //CJK UNIFIED IDEOGRAPH - 0x8FAE: 0x5F6F, //CJK UNIFIED IDEOGRAPH - 0x8FAF: 0x5F72, //CJK UNIFIED IDEOGRAPH - 0x8FB0: 0x5F74, //CJK UNIFIED IDEOGRAPH - 0x8FB1: 0x5F75, //CJK UNIFIED IDEOGRAPH - 0x8FB2: 0x5F76, //CJK UNIFIED IDEOGRAPH - 0x8FB3: 0x5F78, //CJK UNIFIED IDEOGRAPH - 0x8FB4: 0x5F7A, //CJK UNIFIED IDEOGRAPH - 0x8FB5: 0x5F7D, //CJK UNIFIED IDEOGRAPH - 0x8FB6: 0x5F7E, //CJK UNIFIED IDEOGRAPH - 0x8FB7: 0x5F7F, //CJK UNIFIED IDEOGRAPH - 0x8FB8: 0x5F83, //CJK UNIFIED IDEOGRAPH - 0x8FB9: 0x5F86, //CJK UNIFIED IDEOGRAPH - 0x8FBA: 0x5F8D, //CJK UNIFIED IDEOGRAPH - 0x8FBB: 0x5F8E, //CJK UNIFIED IDEOGRAPH - 0x8FBC: 0x5F8F, //CJK UNIFIED IDEOGRAPH - 0x8FBD: 0x5F91, //CJK UNIFIED IDEOGRAPH - 0x8FBE: 0x5F93, //CJK UNIFIED IDEOGRAPH - 0x8FBF: 0x5F94, //CJK UNIFIED IDEOGRAPH - 0x8FC0: 0x5F96, //CJK UNIFIED IDEOGRAPH - 0x8FC1: 0x5F9A, //CJK UNIFIED IDEOGRAPH - 0x8FC2: 0x5F9B, //CJK UNIFIED IDEOGRAPH - 0x8FC3: 0x5F9D, //CJK UNIFIED IDEOGRAPH - 0x8FC4: 0x5F9E, //CJK UNIFIED IDEOGRAPH - 0x8FC5: 0x5F9F, //CJK UNIFIED IDEOGRAPH - 0x8FC6: 0x5FA0, //CJK UNIFIED IDEOGRAPH - 0x8FC7: 0x5FA2, //CJK UNIFIED IDEOGRAPH - 0x8FC8: 0x5FA3, //CJK UNIFIED IDEOGRAPH - 0x8FC9: 0x5FA4, //CJK UNIFIED IDEOGRAPH - 0x8FCA: 0x5FA5, //CJK UNIFIED IDEOGRAPH - 0x8FCB: 0x5FA6, //CJK UNIFIED IDEOGRAPH - 0x8FCC: 0x5FA7, //CJK UNIFIED IDEOGRAPH - 0x8FCD: 0x5FA9, //CJK UNIFIED IDEOGRAPH - 0x8FCE: 0x5FAB, //CJK UNIFIED IDEOGRAPH - 0x8FCF: 0x5FAC, //CJK UNIFIED IDEOGRAPH - 0x8FD0: 0x5FAF, //CJK UNIFIED IDEOGRAPH - 0x8FD1: 0x5FB0, //CJK UNIFIED IDEOGRAPH - 0x8FD2: 0x5FB1, //CJK UNIFIED IDEOGRAPH - 0x8FD3: 0x5FB2, //CJK UNIFIED IDEOGRAPH - 0x8FD4: 0x5FB3, //CJK UNIFIED IDEOGRAPH - 0x8FD5: 0x5FB4, //CJK UNIFIED IDEOGRAPH - 0x8FD6: 0x5FB6, //CJK UNIFIED IDEOGRAPH - 0x8FD7: 0x5FB8, //CJK UNIFIED IDEOGRAPH - 0x8FD8: 0x5FB9, //CJK UNIFIED IDEOGRAPH - 0x8FD9: 0x5FBA, //CJK UNIFIED IDEOGRAPH - 0x8FDA: 0x5FBB, //CJK UNIFIED IDEOGRAPH - 0x8FDB: 0x5FBE, //CJK UNIFIED IDEOGRAPH - 0x8FDC: 0x5FBF, //CJK UNIFIED IDEOGRAPH - 0x8FDD: 0x5FC0, //CJK UNIFIED IDEOGRAPH - 0x8FDE: 0x5FC1, //CJK UNIFIED IDEOGRAPH - 0x8FDF: 0x5FC2, //CJK UNIFIED IDEOGRAPH - 0x8FE0: 0x5FC7, //CJK UNIFIED IDEOGRAPH - 0x8FE1: 0x5FC8, //CJK UNIFIED IDEOGRAPH - 0x8FE2: 0x5FCA, //CJK UNIFIED IDEOGRAPH - 0x8FE3: 0x5FCB, //CJK UNIFIED IDEOGRAPH - 0x8FE4: 0x5FCE, //CJK UNIFIED IDEOGRAPH - 0x8FE5: 0x5FD3, //CJK UNIFIED IDEOGRAPH - 0x8FE6: 0x5FD4, //CJK UNIFIED IDEOGRAPH - 0x8FE7: 0x5FD5, //CJK UNIFIED IDEOGRAPH - 0x8FE8: 0x5FDA, //CJK UNIFIED IDEOGRAPH - 0x8FE9: 0x5FDB, //CJK UNIFIED IDEOGRAPH - 0x8FEA: 0x5FDC, //CJK UNIFIED IDEOGRAPH - 0x8FEB: 0x5FDE, //CJK UNIFIED IDEOGRAPH - 0x8FEC: 0x5FDF, //CJK UNIFIED IDEOGRAPH - 0x8FED: 0x5FE2, //CJK UNIFIED IDEOGRAPH - 0x8FEE: 0x5FE3, //CJK UNIFIED IDEOGRAPH - 0x8FEF: 0x5FE5, //CJK UNIFIED IDEOGRAPH - 0x8FF0: 0x5FE6, //CJK UNIFIED IDEOGRAPH - 0x8FF1: 0x5FE8, //CJK UNIFIED IDEOGRAPH - 0x8FF2: 0x5FE9, //CJK UNIFIED IDEOGRAPH - 0x8FF3: 0x5FEC, //CJK UNIFIED IDEOGRAPH - 0x8FF4: 0x5FEF, //CJK UNIFIED IDEOGRAPH - 0x8FF5: 0x5FF0, //CJK UNIFIED IDEOGRAPH - 0x8FF6: 0x5FF2, //CJK UNIFIED IDEOGRAPH - 0x8FF7: 0x5FF3, //CJK UNIFIED IDEOGRAPH - 0x8FF8: 0x5FF4, //CJK UNIFIED IDEOGRAPH - 0x8FF9: 0x5FF6, //CJK UNIFIED IDEOGRAPH - 0x8FFA: 0x5FF7, //CJK UNIFIED IDEOGRAPH - 0x8FFB: 0x5FF9, //CJK UNIFIED IDEOGRAPH - 0x8FFC: 0x5FFA, //CJK UNIFIED IDEOGRAPH - 0x8FFD: 0x5FFC, //CJK UNIFIED IDEOGRAPH - 0x8FFE: 0x6007, //CJK UNIFIED IDEOGRAPH - 0x9040: 0x6008, //CJK UNIFIED IDEOGRAPH - 0x9041: 0x6009, //CJK UNIFIED IDEOGRAPH - 0x9042: 0x600B, //CJK UNIFIED IDEOGRAPH - 0x9043: 0x600C, //CJK UNIFIED IDEOGRAPH - 0x9044: 0x6010, //CJK UNIFIED IDEOGRAPH - 0x9045: 0x6011, //CJK UNIFIED IDEOGRAPH - 0x9046: 0x6013, //CJK UNIFIED IDEOGRAPH - 0x9047: 0x6017, //CJK UNIFIED IDEOGRAPH - 0x9048: 0x6018, //CJK UNIFIED IDEOGRAPH - 0x9049: 0x601A, //CJK UNIFIED IDEOGRAPH - 0x904A: 0x601E, //CJK UNIFIED IDEOGRAPH - 0x904B: 0x601F, //CJK UNIFIED IDEOGRAPH - 0x904C: 0x6022, //CJK UNIFIED IDEOGRAPH - 0x904D: 0x6023, //CJK UNIFIED IDEOGRAPH - 0x904E: 0x6024, //CJK UNIFIED IDEOGRAPH - 0x904F: 0x602C, //CJK UNIFIED IDEOGRAPH - 0x9050: 0x602D, //CJK UNIFIED IDEOGRAPH - 0x9051: 0x602E, //CJK UNIFIED IDEOGRAPH - 0x9052: 0x6030, //CJK UNIFIED IDEOGRAPH - 0x9053: 0x6031, //CJK UNIFIED IDEOGRAPH - 0x9054: 0x6032, //CJK UNIFIED IDEOGRAPH - 0x9055: 0x6033, //CJK UNIFIED IDEOGRAPH - 0x9056: 0x6034, //CJK UNIFIED IDEOGRAPH - 0x9057: 0x6036, //CJK UNIFIED IDEOGRAPH - 0x9058: 0x6037, //CJK UNIFIED IDEOGRAPH - 0x9059: 0x6038, //CJK UNIFIED IDEOGRAPH - 0x905A: 0x6039, //CJK UNIFIED IDEOGRAPH - 0x905B: 0x603A, //CJK UNIFIED IDEOGRAPH - 0x905C: 0x603D, //CJK UNIFIED IDEOGRAPH - 0x905D: 0x603E, //CJK UNIFIED IDEOGRAPH - 0x905E: 0x6040, //CJK UNIFIED IDEOGRAPH - 0x905F: 0x6044, //CJK UNIFIED IDEOGRAPH - 0x9060: 0x6045, //CJK UNIFIED IDEOGRAPH - 0x9061: 0x6046, //CJK UNIFIED IDEOGRAPH - 0x9062: 0x6047, //CJK UNIFIED IDEOGRAPH - 0x9063: 0x6048, //CJK UNIFIED IDEOGRAPH - 0x9064: 0x6049, //CJK UNIFIED IDEOGRAPH - 0x9065: 0x604A, //CJK UNIFIED IDEOGRAPH - 0x9066: 0x604C, //CJK UNIFIED IDEOGRAPH - 0x9067: 0x604E, //CJK UNIFIED IDEOGRAPH - 0x9068: 0x604F, //CJK UNIFIED IDEOGRAPH - 0x9069: 0x6051, //CJK UNIFIED IDEOGRAPH - 0x906A: 0x6053, //CJK UNIFIED IDEOGRAPH - 0x906B: 0x6054, //CJK UNIFIED IDEOGRAPH - 0x906C: 0x6056, //CJK UNIFIED IDEOGRAPH - 0x906D: 0x6057, //CJK UNIFIED IDEOGRAPH - 0x906E: 0x6058, //CJK UNIFIED IDEOGRAPH - 0x906F: 0x605B, //CJK UNIFIED IDEOGRAPH - 0x9070: 0x605C, //CJK UNIFIED IDEOGRAPH - 0x9071: 0x605E, //CJK UNIFIED IDEOGRAPH - 0x9072: 0x605F, //CJK UNIFIED IDEOGRAPH - 0x9073: 0x6060, //CJK UNIFIED IDEOGRAPH - 0x9074: 0x6061, //CJK UNIFIED IDEOGRAPH - 0x9075: 0x6065, //CJK UNIFIED IDEOGRAPH - 0x9076: 0x6066, //CJK UNIFIED IDEOGRAPH - 0x9077: 0x606E, //CJK UNIFIED IDEOGRAPH - 0x9078: 0x6071, //CJK UNIFIED IDEOGRAPH - 0x9079: 0x6072, //CJK UNIFIED IDEOGRAPH - 0x907A: 0x6074, //CJK UNIFIED IDEOGRAPH - 0x907B: 0x6075, //CJK UNIFIED IDEOGRAPH - 0x907C: 0x6077, //CJK UNIFIED IDEOGRAPH - 0x907D: 0x607E, //CJK UNIFIED IDEOGRAPH - 0x907E: 0x6080, //CJK UNIFIED IDEOGRAPH - 0x9080: 0x6081, //CJK UNIFIED IDEOGRAPH - 0x9081: 0x6082, //CJK UNIFIED IDEOGRAPH - 0x9082: 0x6085, //CJK UNIFIED IDEOGRAPH - 0x9083: 0x6086, //CJK UNIFIED IDEOGRAPH - 0x9084: 0x6087, //CJK UNIFIED IDEOGRAPH - 0x9085: 0x6088, //CJK UNIFIED IDEOGRAPH - 0x9086: 0x608A, //CJK UNIFIED IDEOGRAPH - 0x9087: 0x608B, //CJK UNIFIED IDEOGRAPH - 0x9088: 0x608E, //CJK UNIFIED IDEOGRAPH - 0x9089: 0x608F, //CJK UNIFIED IDEOGRAPH - 0x908A: 0x6090, //CJK UNIFIED IDEOGRAPH - 0x908B: 0x6091, //CJK UNIFIED IDEOGRAPH - 0x908C: 0x6093, //CJK UNIFIED IDEOGRAPH - 0x908D: 0x6095, //CJK UNIFIED IDEOGRAPH - 0x908E: 0x6097, //CJK UNIFIED IDEOGRAPH - 0x908F: 0x6098, //CJK UNIFIED IDEOGRAPH - 0x9090: 0x6099, //CJK UNIFIED IDEOGRAPH - 0x9091: 0x609C, //CJK UNIFIED IDEOGRAPH - 0x9092: 0x609E, //CJK UNIFIED IDEOGRAPH - 0x9093: 0x60A1, //CJK UNIFIED IDEOGRAPH - 0x9094: 0x60A2, //CJK UNIFIED IDEOGRAPH - 0x9095: 0x60A4, //CJK UNIFIED IDEOGRAPH - 0x9096: 0x60A5, //CJK UNIFIED IDEOGRAPH - 0x9097: 0x60A7, //CJK UNIFIED IDEOGRAPH - 0x9098: 0x60A9, //CJK UNIFIED IDEOGRAPH - 0x9099: 0x60AA, //CJK UNIFIED IDEOGRAPH - 0x909A: 0x60AE, //CJK UNIFIED IDEOGRAPH - 0x909B: 0x60B0, //CJK UNIFIED IDEOGRAPH - 0x909C: 0x60B3, //CJK UNIFIED IDEOGRAPH - 0x909D: 0x60B5, //CJK UNIFIED IDEOGRAPH - 0x909E: 0x60B6, //CJK UNIFIED IDEOGRAPH - 0x909F: 0x60B7, //CJK UNIFIED IDEOGRAPH - 0x90A0: 0x60B9, //CJK UNIFIED IDEOGRAPH - 0x90A1: 0x60BA, //CJK UNIFIED IDEOGRAPH - 0x90A2: 0x60BD, //CJK UNIFIED IDEOGRAPH - 0x90A3: 0x60BE, //CJK UNIFIED IDEOGRAPH - 0x90A4: 0x60BF, //CJK UNIFIED IDEOGRAPH - 0x90A5: 0x60C0, //CJK UNIFIED IDEOGRAPH - 0x90A6: 0x60C1, //CJK UNIFIED IDEOGRAPH - 0x90A7: 0x60C2, //CJK UNIFIED IDEOGRAPH - 0x90A8: 0x60C3, //CJK UNIFIED IDEOGRAPH - 0x90A9: 0x60C4, //CJK UNIFIED IDEOGRAPH - 0x90AA: 0x60C7, //CJK UNIFIED IDEOGRAPH - 0x90AB: 0x60C8, //CJK UNIFIED IDEOGRAPH - 0x90AC: 0x60C9, //CJK UNIFIED IDEOGRAPH - 0x90AD: 0x60CC, //CJK UNIFIED IDEOGRAPH - 0x90AE: 0x60CD, //CJK UNIFIED IDEOGRAPH - 0x90AF: 0x60CE, //CJK UNIFIED IDEOGRAPH - 0x90B0: 0x60CF, //CJK UNIFIED IDEOGRAPH - 0x90B1: 0x60D0, //CJK UNIFIED IDEOGRAPH - 0x90B2: 0x60D2, //CJK UNIFIED IDEOGRAPH - 0x90B3: 0x60D3, //CJK UNIFIED IDEOGRAPH - 0x90B4: 0x60D4, //CJK UNIFIED IDEOGRAPH - 0x90B5: 0x60D6, //CJK UNIFIED IDEOGRAPH - 0x90B6: 0x60D7, //CJK UNIFIED IDEOGRAPH - 0x90B7: 0x60D9, //CJK UNIFIED IDEOGRAPH - 0x90B8: 0x60DB, //CJK UNIFIED IDEOGRAPH - 0x90B9: 0x60DE, //CJK UNIFIED IDEOGRAPH - 0x90BA: 0x60E1, //CJK UNIFIED IDEOGRAPH - 0x90BB: 0x60E2, //CJK UNIFIED IDEOGRAPH - 0x90BC: 0x60E3, //CJK UNIFIED IDEOGRAPH - 0x90BD: 0x60E4, //CJK UNIFIED IDEOGRAPH - 0x90BE: 0x60E5, //CJK UNIFIED IDEOGRAPH - 0x90BF: 0x60EA, //CJK UNIFIED IDEOGRAPH - 0x90C0: 0x60F1, //CJK UNIFIED IDEOGRAPH - 0x90C1: 0x60F2, //CJK UNIFIED IDEOGRAPH - 0x90C2: 0x60F5, //CJK UNIFIED IDEOGRAPH - 0x90C3: 0x60F7, //CJK UNIFIED IDEOGRAPH - 0x90C4: 0x60F8, //CJK UNIFIED IDEOGRAPH - 0x90C5: 0x60FB, //CJK UNIFIED IDEOGRAPH - 0x90C6: 0x60FC, //CJK UNIFIED IDEOGRAPH - 0x90C7: 0x60FD, //CJK UNIFIED IDEOGRAPH - 0x90C8: 0x60FE, //CJK UNIFIED IDEOGRAPH - 0x90C9: 0x60FF, //CJK UNIFIED IDEOGRAPH - 0x90CA: 0x6102, //CJK UNIFIED IDEOGRAPH - 0x90CB: 0x6103, //CJK UNIFIED IDEOGRAPH - 0x90CC: 0x6104, //CJK UNIFIED IDEOGRAPH - 0x90CD: 0x6105, //CJK UNIFIED IDEOGRAPH - 0x90CE: 0x6107, //CJK UNIFIED IDEOGRAPH - 0x90CF: 0x610A, //CJK UNIFIED IDEOGRAPH - 0x90D0: 0x610B, //CJK UNIFIED IDEOGRAPH - 0x90D1: 0x610C, //CJK UNIFIED IDEOGRAPH - 0x90D2: 0x6110, //CJK UNIFIED IDEOGRAPH - 0x90D3: 0x6111, //CJK UNIFIED IDEOGRAPH - 0x90D4: 0x6112, //CJK UNIFIED IDEOGRAPH - 0x90D5: 0x6113, //CJK UNIFIED IDEOGRAPH - 0x90D6: 0x6114, //CJK UNIFIED IDEOGRAPH - 0x90D7: 0x6116, //CJK UNIFIED IDEOGRAPH - 0x90D8: 0x6117, //CJK UNIFIED IDEOGRAPH - 0x90D9: 0x6118, //CJK UNIFIED IDEOGRAPH - 0x90DA: 0x6119, //CJK UNIFIED IDEOGRAPH - 0x90DB: 0x611B, //CJK UNIFIED IDEOGRAPH - 0x90DC: 0x611C, //CJK UNIFIED IDEOGRAPH - 0x90DD: 0x611D, //CJK UNIFIED IDEOGRAPH - 0x90DE: 0x611E, //CJK UNIFIED IDEOGRAPH - 0x90DF: 0x6121, //CJK UNIFIED IDEOGRAPH - 0x90E0: 0x6122, //CJK UNIFIED IDEOGRAPH - 0x90E1: 0x6125, //CJK UNIFIED IDEOGRAPH - 0x90E2: 0x6128, //CJK UNIFIED IDEOGRAPH - 0x90E3: 0x6129, //CJK UNIFIED IDEOGRAPH - 0x90E4: 0x612A, //CJK UNIFIED IDEOGRAPH - 0x90E5: 0x612C, //CJK UNIFIED IDEOGRAPH - 0x90E6: 0x612D, //CJK UNIFIED IDEOGRAPH - 0x90E7: 0x612E, //CJK UNIFIED IDEOGRAPH - 0x90E8: 0x612F, //CJK UNIFIED IDEOGRAPH - 0x90E9: 0x6130, //CJK UNIFIED IDEOGRAPH - 0x90EA: 0x6131, //CJK UNIFIED IDEOGRAPH - 0x90EB: 0x6132, //CJK UNIFIED IDEOGRAPH - 0x90EC: 0x6133, //CJK UNIFIED IDEOGRAPH - 0x90ED: 0x6134, //CJK UNIFIED IDEOGRAPH - 0x90EE: 0x6135, //CJK UNIFIED IDEOGRAPH - 0x90EF: 0x6136, //CJK UNIFIED IDEOGRAPH - 0x90F0: 0x6137, //CJK UNIFIED IDEOGRAPH - 0x90F1: 0x6138, //CJK UNIFIED IDEOGRAPH - 0x90F2: 0x6139, //CJK UNIFIED IDEOGRAPH - 0x90F3: 0x613A, //CJK UNIFIED IDEOGRAPH - 0x90F4: 0x613B, //CJK UNIFIED IDEOGRAPH - 0x90F5: 0x613C, //CJK UNIFIED IDEOGRAPH - 0x90F6: 0x613D, //CJK UNIFIED IDEOGRAPH - 0x90F7: 0x613E, //CJK UNIFIED IDEOGRAPH - 0x90F8: 0x6140, //CJK UNIFIED IDEOGRAPH - 0x90F9: 0x6141, //CJK UNIFIED IDEOGRAPH - 0x90FA: 0x6142, //CJK UNIFIED IDEOGRAPH - 0x90FB: 0x6143, //CJK UNIFIED IDEOGRAPH - 0x90FC: 0x6144, //CJK UNIFIED IDEOGRAPH - 0x90FD: 0x6145, //CJK UNIFIED IDEOGRAPH - 0x90FE: 0x6146, //CJK UNIFIED IDEOGRAPH - 0x9140: 0x6147, //CJK UNIFIED IDEOGRAPH - 0x9141: 0x6149, //CJK UNIFIED IDEOGRAPH - 0x9142: 0x614B, //CJK UNIFIED IDEOGRAPH - 0x9143: 0x614D, //CJK UNIFIED IDEOGRAPH - 0x9144: 0x614F, //CJK UNIFIED IDEOGRAPH - 0x9145: 0x6150, //CJK UNIFIED IDEOGRAPH - 0x9146: 0x6152, //CJK UNIFIED IDEOGRAPH - 0x9147: 0x6153, //CJK UNIFIED IDEOGRAPH - 0x9148: 0x6154, //CJK UNIFIED IDEOGRAPH - 0x9149: 0x6156, //CJK UNIFIED IDEOGRAPH - 0x914A: 0x6157, //CJK UNIFIED IDEOGRAPH - 0x914B: 0x6158, //CJK UNIFIED IDEOGRAPH - 0x914C: 0x6159, //CJK UNIFIED IDEOGRAPH - 0x914D: 0x615A, //CJK UNIFIED IDEOGRAPH - 0x914E: 0x615B, //CJK UNIFIED IDEOGRAPH - 0x914F: 0x615C, //CJK UNIFIED IDEOGRAPH - 0x9150: 0x615E, //CJK UNIFIED IDEOGRAPH - 0x9151: 0x615F, //CJK UNIFIED IDEOGRAPH - 0x9152: 0x6160, //CJK UNIFIED IDEOGRAPH - 0x9153: 0x6161, //CJK UNIFIED IDEOGRAPH - 0x9154: 0x6163, //CJK UNIFIED IDEOGRAPH - 0x9155: 0x6164, //CJK UNIFIED IDEOGRAPH - 0x9156: 0x6165, //CJK UNIFIED IDEOGRAPH - 0x9157: 0x6166, //CJK UNIFIED IDEOGRAPH - 0x9158: 0x6169, //CJK UNIFIED IDEOGRAPH - 0x9159: 0x616A, //CJK UNIFIED IDEOGRAPH - 0x915A: 0x616B, //CJK UNIFIED IDEOGRAPH - 0x915B: 0x616C, //CJK UNIFIED IDEOGRAPH - 0x915C: 0x616D, //CJK UNIFIED IDEOGRAPH - 0x915D: 0x616E, //CJK UNIFIED IDEOGRAPH - 0x915E: 0x616F, //CJK UNIFIED IDEOGRAPH - 0x915F: 0x6171, //CJK UNIFIED IDEOGRAPH - 0x9160: 0x6172, //CJK UNIFIED IDEOGRAPH - 0x9161: 0x6173, //CJK UNIFIED IDEOGRAPH - 0x9162: 0x6174, //CJK UNIFIED IDEOGRAPH - 0x9163: 0x6176, //CJK UNIFIED IDEOGRAPH - 0x9164: 0x6178, //CJK UNIFIED IDEOGRAPH - 0x9165: 0x6179, //CJK UNIFIED IDEOGRAPH - 0x9166: 0x617A, //CJK UNIFIED IDEOGRAPH - 0x9167: 0x617B, //CJK UNIFIED IDEOGRAPH - 0x9168: 0x617C, //CJK UNIFIED IDEOGRAPH - 0x9169: 0x617D, //CJK UNIFIED IDEOGRAPH - 0x916A: 0x617E, //CJK UNIFIED IDEOGRAPH - 0x916B: 0x617F, //CJK UNIFIED IDEOGRAPH - 0x916C: 0x6180, //CJK UNIFIED IDEOGRAPH - 0x916D: 0x6181, //CJK UNIFIED IDEOGRAPH - 0x916E: 0x6182, //CJK UNIFIED IDEOGRAPH - 0x916F: 0x6183, //CJK UNIFIED IDEOGRAPH - 0x9170: 0x6184, //CJK UNIFIED IDEOGRAPH - 0x9171: 0x6185, //CJK UNIFIED IDEOGRAPH - 0x9172: 0x6186, //CJK UNIFIED IDEOGRAPH - 0x9173: 0x6187, //CJK UNIFIED IDEOGRAPH - 0x9174: 0x6188, //CJK UNIFIED IDEOGRAPH - 0x9175: 0x6189, //CJK UNIFIED IDEOGRAPH - 0x9176: 0x618A, //CJK UNIFIED IDEOGRAPH - 0x9177: 0x618C, //CJK UNIFIED IDEOGRAPH - 0x9178: 0x618D, //CJK UNIFIED IDEOGRAPH - 0x9179: 0x618F, //CJK UNIFIED IDEOGRAPH - 0x917A: 0x6190, //CJK UNIFIED IDEOGRAPH - 0x917B: 0x6191, //CJK UNIFIED IDEOGRAPH - 0x917C: 0x6192, //CJK UNIFIED IDEOGRAPH - 0x917D: 0x6193, //CJK UNIFIED IDEOGRAPH - 0x917E: 0x6195, //CJK UNIFIED IDEOGRAPH - 0x9180: 0x6196, //CJK UNIFIED IDEOGRAPH - 0x9181: 0x6197, //CJK UNIFIED IDEOGRAPH - 0x9182: 0x6198, //CJK UNIFIED IDEOGRAPH - 0x9183: 0x6199, //CJK UNIFIED IDEOGRAPH - 0x9184: 0x619A, //CJK UNIFIED IDEOGRAPH - 0x9185: 0x619B, //CJK UNIFIED IDEOGRAPH - 0x9186: 0x619C, //CJK UNIFIED IDEOGRAPH - 0x9187: 0x619E, //CJK UNIFIED IDEOGRAPH - 0x9188: 0x619F, //CJK UNIFIED IDEOGRAPH - 0x9189: 0x61A0, //CJK UNIFIED IDEOGRAPH - 0x918A: 0x61A1, //CJK UNIFIED IDEOGRAPH - 0x918B: 0x61A2, //CJK UNIFIED IDEOGRAPH - 0x918C: 0x61A3, //CJK UNIFIED IDEOGRAPH - 0x918D: 0x61A4, //CJK UNIFIED IDEOGRAPH - 0x918E: 0x61A5, //CJK UNIFIED IDEOGRAPH - 0x918F: 0x61A6, //CJK UNIFIED IDEOGRAPH - 0x9190: 0x61AA, //CJK UNIFIED IDEOGRAPH - 0x9191: 0x61AB, //CJK UNIFIED IDEOGRAPH - 0x9192: 0x61AD, //CJK UNIFIED IDEOGRAPH - 0x9193: 0x61AE, //CJK UNIFIED IDEOGRAPH - 0x9194: 0x61AF, //CJK UNIFIED IDEOGRAPH - 0x9195: 0x61B0, //CJK UNIFIED IDEOGRAPH - 0x9196: 0x61B1, //CJK UNIFIED IDEOGRAPH - 0x9197: 0x61B2, //CJK UNIFIED IDEOGRAPH - 0x9198: 0x61B3, //CJK UNIFIED IDEOGRAPH - 0x9199: 0x61B4, //CJK UNIFIED IDEOGRAPH - 0x919A: 0x61B5, //CJK UNIFIED IDEOGRAPH - 0x919B: 0x61B6, //CJK UNIFIED IDEOGRAPH - 0x919C: 0x61B8, //CJK UNIFIED IDEOGRAPH - 0x919D: 0x61B9, //CJK UNIFIED IDEOGRAPH - 0x919E: 0x61BA, //CJK UNIFIED IDEOGRAPH - 0x919F: 0x61BB, //CJK UNIFIED IDEOGRAPH - 0x91A0: 0x61BC, //CJK UNIFIED IDEOGRAPH - 0x91A1: 0x61BD, //CJK UNIFIED IDEOGRAPH - 0x91A2: 0x61BF, //CJK UNIFIED IDEOGRAPH - 0x91A3: 0x61C0, //CJK UNIFIED IDEOGRAPH - 0x91A4: 0x61C1, //CJK UNIFIED IDEOGRAPH - 0x91A5: 0x61C3, //CJK UNIFIED IDEOGRAPH - 0x91A6: 0x61C4, //CJK UNIFIED IDEOGRAPH - 0x91A7: 0x61C5, //CJK UNIFIED IDEOGRAPH - 0x91A8: 0x61C6, //CJK UNIFIED IDEOGRAPH - 0x91A9: 0x61C7, //CJK UNIFIED IDEOGRAPH - 0x91AA: 0x61C9, //CJK UNIFIED IDEOGRAPH - 0x91AB: 0x61CC, //CJK UNIFIED IDEOGRAPH - 0x91AC: 0x61CD, //CJK UNIFIED IDEOGRAPH - 0x91AD: 0x61CE, //CJK UNIFIED IDEOGRAPH - 0x91AE: 0x61CF, //CJK UNIFIED IDEOGRAPH - 0x91AF: 0x61D0, //CJK UNIFIED IDEOGRAPH - 0x91B0: 0x61D3, //CJK UNIFIED IDEOGRAPH - 0x91B1: 0x61D5, //CJK UNIFIED IDEOGRAPH - 0x91B2: 0x61D6, //CJK UNIFIED IDEOGRAPH - 0x91B3: 0x61D7, //CJK UNIFIED IDEOGRAPH - 0x91B4: 0x61D8, //CJK UNIFIED IDEOGRAPH - 0x91B5: 0x61D9, //CJK UNIFIED IDEOGRAPH - 0x91B6: 0x61DA, //CJK UNIFIED IDEOGRAPH - 0x91B7: 0x61DB, //CJK UNIFIED IDEOGRAPH - 0x91B8: 0x61DC, //CJK UNIFIED IDEOGRAPH - 0x91B9: 0x61DD, //CJK UNIFIED IDEOGRAPH - 0x91BA: 0x61DE, //CJK UNIFIED IDEOGRAPH - 0x91BB: 0x61DF, //CJK UNIFIED IDEOGRAPH - 0x91BC: 0x61E0, //CJK UNIFIED IDEOGRAPH - 0x91BD: 0x61E1, //CJK UNIFIED IDEOGRAPH - 0x91BE: 0x61E2, //CJK UNIFIED IDEOGRAPH - 0x91BF: 0x61E3, //CJK UNIFIED IDEOGRAPH - 0x91C0: 0x61E4, //CJK UNIFIED IDEOGRAPH - 0x91C1: 0x61E5, //CJK UNIFIED IDEOGRAPH - 0x91C2: 0x61E7, //CJK UNIFIED IDEOGRAPH - 0x91C3: 0x61E8, //CJK UNIFIED IDEOGRAPH - 0x91C4: 0x61E9, //CJK UNIFIED IDEOGRAPH - 0x91C5: 0x61EA, //CJK UNIFIED IDEOGRAPH - 0x91C6: 0x61EB, //CJK UNIFIED IDEOGRAPH - 0x91C7: 0x61EC, //CJK UNIFIED IDEOGRAPH - 0x91C8: 0x61ED, //CJK UNIFIED IDEOGRAPH - 0x91C9: 0x61EE, //CJK UNIFIED IDEOGRAPH - 0x91CA: 0x61EF, //CJK UNIFIED IDEOGRAPH - 0x91CB: 0x61F0, //CJK UNIFIED IDEOGRAPH - 0x91CC: 0x61F1, //CJK UNIFIED IDEOGRAPH - 0x91CD: 0x61F2, //CJK UNIFIED IDEOGRAPH - 0x91CE: 0x61F3, //CJK UNIFIED IDEOGRAPH - 0x91CF: 0x61F4, //CJK UNIFIED IDEOGRAPH - 0x91D0: 0x61F6, //CJK UNIFIED IDEOGRAPH - 0x91D1: 0x61F7, //CJK UNIFIED IDEOGRAPH - 0x91D2: 0x61F8, //CJK UNIFIED IDEOGRAPH - 0x91D3: 0x61F9, //CJK UNIFIED IDEOGRAPH - 0x91D4: 0x61FA, //CJK UNIFIED IDEOGRAPH - 0x91D5: 0x61FB, //CJK UNIFIED IDEOGRAPH - 0x91D6: 0x61FC, //CJK UNIFIED IDEOGRAPH - 0x91D7: 0x61FD, //CJK UNIFIED IDEOGRAPH - 0x91D8: 0x61FE, //CJK UNIFIED IDEOGRAPH - 0x91D9: 0x6200, //CJK UNIFIED IDEOGRAPH - 0x91DA: 0x6201, //CJK UNIFIED IDEOGRAPH - 0x91DB: 0x6202, //CJK UNIFIED IDEOGRAPH - 0x91DC: 0x6203, //CJK UNIFIED IDEOGRAPH - 0x91DD: 0x6204, //CJK UNIFIED IDEOGRAPH - 0x91DE: 0x6205, //CJK UNIFIED IDEOGRAPH - 0x91DF: 0x6207, //CJK UNIFIED IDEOGRAPH - 0x91E0: 0x6209, //CJK UNIFIED IDEOGRAPH - 0x91E1: 0x6213, //CJK UNIFIED IDEOGRAPH - 0x91E2: 0x6214, //CJK UNIFIED IDEOGRAPH - 0x91E3: 0x6219, //CJK UNIFIED IDEOGRAPH - 0x91E4: 0x621C, //CJK UNIFIED IDEOGRAPH - 0x91E5: 0x621D, //CJK UNIFIED IDEOGRAPH - 0x91E6: 0x621E, //CJK UNIFIED IDEOGRAPH - 0x91E7: 0x6220, //CJK UNIFIED IDEOGRAPH - 0x91E8: 0x6223, //CJK UNIFIED IDEOGRAPH - 0x91E9: 0x6226, //CJK UNIFIED IDEOGRAPH - 0x91EA: 0x6227, //CJK UNIFIED IDEOGRAPH - 0x91EB: 0x6228, //CJK UNIFIED IDEOGRAPH - 0x91EC: 0x6229, //CJK UNIFIED IDEOGRAPH - 0x91ED: 0x622B, //CJK UNIFIED IDEOGRAPH - 0x91EE: 0x622D, //CJK UNIFIED IDEOGRAPH - 0x91EF: 0x622F, //CJK UNIFIED IDEOGRAPH - 0x91F0: 0x6230, //CJK UNIFIED IDEOGRAPH - 0x91F1: 0x6231, //CJK UNIFIED IDEOGRAPH - 0x91F2: 0x6232, //CJK UNIFIED IDEOGRAPH - 0x91F3: 0x6235, //CJK UNIFIED IDEOGRAPH - 0x91F4: 0x6236, //CJK UNIFIED IDEOGRAPH - 0x91F5: 0x6238, //CJK UNIFIED IDEOGRAPH - 0x91F6: 0x6239, //CJK UNIFIED IDEOGRAPH - 0x91F7: 0x623A, //CJK UNIFIED IDEOGRAPH - 0x91F8: 0x623B, //CJK UNIFIED IDEOGRAPH - 0x91F9: 0x623C, //CJK UNIFIED IDEOGRAPH - 0x91FA: 0x6242, //CJK UNIFIED IDEOGRAPH - 0x91FB: 0x6244, //CJK UNIFIED IDEOGRAPH - 0x91FC: 0x6245, //CJK UNIFIED IDEOGRAPH - 0x91FD: 0x6246, //CJK UNIFIED IDEOGRAPH - 0x91FE: 0x624A, //CJK UNIFIED IDEOGRAPH - 0x9240: 0x624F, //CJK UNIFIED IDEOGRAPH - 0x9241: 0x6250, //CJK UNIFIED IDEOGRAPH - 0x9242: 0x6255, //CJK UNIFIED IDEOGRAPH - 0x9243: 0x6256, //CJK UNIFIED IDEOGRAPH - 0x9244: 0x6257, //CJK UNIFIED IDEOGRAPH - 0x9245: 0x6259, //CJK UNIFIED IDEOGRAPH - 0x9246: 0x625A, //CJK UNIFIED IDEOGRAPH - 0x9247: 0x625C, //CJK UNIFIED IDEOGRAPH - 0x9248: 0x625D, //CJK UNIFIED IDEOGRAPH - 0x9249: 0x625E, //CJK UNIFIED IDEOGRAPH - 0x924A: 0x625F, //CJK UNIFIED IDEOGRAPH - 0x924B: 0x6260, //CJK UNIFIED IDEOGRAPH - 0x924C: 0x6261, //CJK UNIFIED IDEOGRAPH - 0x924D: 0x6262, //CJK UNIFIED IDEOGRAPH - 0x924E: 0x6264, //CJK UNIFIED IDEOGRAPH - 0x924F: 0x6265, //CJK UNIFIED IDEOGRAPH - 0x9250: 0x6268, //CJK UNIFIED IDEOGRAPH - 0x9251: 0x6271, //CJK UNIFIED IDEOGRAPH - 0x9252: 0x6272, //CJK UNIFIED IDEOGRAPH - 0x9253: 0x6274, //CJK UNIFIED IDEOGRAPH - 0x9254: 0x6275, //CJK UNIFIED IDEOGRAPH - 0x9255: 0x6277, //CJK UNIFIED IDEOGRAPH - 0x9256: 0x6278, //CJK UNIFIED IDEOGRAPH - 0x9257: 0x627A, //CJK UNIFIED IDEOGRAPH - 0x9258: 0x627B, //CJK UNIFIED IDEOGRAPH - 0x9259: 0x627D, //CJK UNIFIED IDEOGRAPH - 0x925A: 0x6281, //CJK UNIFIED IDEOGRAPH - 0x925B: 0x6282, //CJK UNIFIED IDEOGRAPH - 0x925C: 0x6283, //CJK UNIFIED IDEOGRAPH - 0x925D: 0x6285, //CJK UNIFIED IDEOGRAPH - 0x925E: 0x6286, //CJK UNIFIED IDEOGRAPH - 0x925F: 0x6287, //CJK UNIFIED IDEOGRAPH - 0x9260: 0x6288, //CJK UNIFIED IDEOGRAPH - 0x9261: 0x628B, //CJK UNIFIED IDEOGRAPH - 0x9262: 0x628C, //CJK UNIFIED IDEOGRAPH - 0x9263: 0x628D, //CJK UNIFIED IDEOGRAPH - 0x9264: 0x628E, //CJK UNIFIED IDEOGRAPH - 0x9265: 0x628F, //CJK UNIFIED IDEOGRAPH - 0x9266: 0x6290, //CJK UNIFIED IDEOGRAPH - 0x9267: 0x6294, //CJK UNIFIED IDEOGRAPH - 0x9268: 0x6299, //CJK UNIFIED IDEOGRAPH - 0x9269: 0x629C, //CJK UNIFIED IDEOGRAPH - 0x926A: 0x629D, //CJK UNIFIED IDEOGRAPH - 0x926B: 0x629E, //CJK UNIFIED IDEOGRAPH - 0x926C: 0x62A3, //CJK UNIFIED IDEOGRAPH - 0x926D: 0x62A6, //CJK UNIFIED IDEOGRAPH - 0x926E: 0x62A7, //CJK UNIFIED IDEOGRAPH - 0x926F: 0x62A9, //CJK UNIFIED IDEOGRAPH - 0x9270: 0x62AA, //CJK UNIFIED IDEOGRAPH - 0x9271: 0x62AD, //CJK UNIFIED IDEOGRAPH - 0x9272: 0x62AE, //CJK UNIFIED IDEOGRAPH - 0x9273: 0x62AF, //CJK UNIFIED IDEOGRAPH - 0x9274: 0x62B0, //CJK UNIFIED IDEOGRAPH - 0x9275: 0x62B2, //CJK UNIFIED IDEOGRAPH - 0x9276: 0x62B3, //CJK UNIFIED IDEOGRAPH - 0x9277: 0x62B4, //CJK UNIFIED IDEOGRAPH - 0x9278: 0x62B6, //CJK UNIFIED IDEOGRAPH - 0x9279: 0x62B7, //CJK UNIFIED IDEOGRAPH - 0x927A: 0x62B8, //CJK UNIFIED IDEOGRAPH - 0x927B: 0x62BA, //CJK UNIFIED IDEOGRAPH - 0x927C: 0x62BE, //CJK UNIFIED IDEOGRAPH - 0x927D: 0x62C0, //CJK UNIFIED IDEOGRAPH - 0x927E: 0x62C1, //CJK UNIFIED IDEOGRAPH - 0x9280: 0x62C3, //CJK UNIFIED IDEOGRAPH - 0x9281: 0x62CB, //CJK UNIFIED IDEOGRAPH - 0x9282: 0x62CF, //CJK UNIFIED IDEOGRAPH - 0x9283: 0x62D1, //CJK UNIFIED IDEOGRAPH - 0x9284: 0x62D5, //CJK UNIFIED IDEOGRAPH - 0x9285: 0x62DD, //CJK UNIFIED IDEOGRAPH - 0x9286: 0x62DE, //CJK UNIFIED IDEOGRAPH - 0x9287: 0x62E0, //CJK UNIFIED IDEOGRAPH - 0x9288: 0x62E1, //CJK UNIFIED IDEOGRAPH - 0x9289: 0x62E4, //CJK UNIFIED IDEOGRAPH - 0x928A: 0x62EA, //CJK UNIFIED IDEOGRAPH - 0x928B: 0x62EB, //CJK UNIFIED IDEOGRAPH - 0x928C: 0x62F0, //CJK UNIFIED IDEOGRAPH - 0x928D: 0x62F2, //CJK UNIFIED IDEOGRAPH - 0x928E: 0x62F5, //CJK UNIFIED IDEOGRAPH - 0x928F: 0x62F8, //CJK UNIFIED IDEOGRAPH - 0x9290: 0x62F9, //CJK UNIFIED IDEOGRAPH - 0x9291: 0x62FA, //CJK UNIFIED IDEOGRAPH - 0x9292: 0x62FB, //CJK UNIFIED IDEOGRAPH - 0x9293: 0x6300, //CJK UNIFIED IDEOGRAPH - 0x9294: 0x6303, //CJK UNIFIED IDEOGRAPH - 0x9295: 0x6304, //CJK UNIFIED IDEOGRAPH - 0x9296: 0x6305, //CJK UNIFIED IDEOGRAPH - 0x9297: 0x6306, //CJK UNIFIED IDEOGRAPH - 0x9298: 0x630A, //CJK UNIFIED IDEOGRAPH - 0x9299: 0x630B, //CJK UNIFIED IDEOGRAPH - 0x929A: 0x630C, //CJK UNIFIED IDEOGRAPH - 0x929B: 0x630D, //CJK UNIFIED IDEOGRAPH - 0x929C: 0x630F, //CJK UNIFIED IDEOGRAPH - 0x929D: 0x6310, //CJK UNIFIED IDEOGRAPH - 0x929E: 0x6312, //CJK UNIFIED IDEOGRAPH - 0x929F: 0x6313, //CJK UNIFIED IDEOGRAPH - 0x92A0: 0x6314, //CJK UNIFIED IDEOGRAPH - 0x92A1: 0x6315, //CJK UNIFIED IDEOGRAPH - 0x92A2: 0x6317, //CJK UNIFIED IDEOGRAPH - 0x92A3: 0x6318, //CJK UNIFIED IDEOGRAPH - 0x92A4: 0x6319, //CJK UNIFIED IDEOGRAPH - 0x92A5: 0x631C, //CJK UNIFIED IDEOGRAPH - 0x92A6: 0x6326, //CJK UNIFIED IDEOGRAPH - 0x92A7: 0x6327, //CJK UNIFIED IDEOGRAPH - 0x92A8: 0x6329, //CJK UNIFIED IDEOGRAPH - 0x92A9: 0x632C, //CJK UNIFIED IDEOGRAPH - 0x92AA: 0x632D, //CJK UNIFIED IDEOGRAPH - 0x92AB: 0x632E, //CJK UNIFIED IDEOGRAPH - 0x92AC: 0x6330, //CJK UNIFIED IDEOGRAPH - 0x92AD: 0x6331, //CJK UNIFIED IDEOGRAPH - 0x92AE: 0x6333, //CJK UNIFIED IDEOGRAPH - 0x92AF: 0x6334, //CJK UNIFIED IDEOGRAPH - 0x92B0: 0x6335, //CJK UNIFIED IDEOGRAPH - 0x92B1: 0x6336, //CJK UNIFIED IDEOGRAPH - 0x92B2: 0x6337, //CJK UNIFIED IDEOGRAPH - 0x92B3: 0x6338, //CJK UNIFIED IDEOGRAPH - 0x92B4: 0x633B, //CJK UNIFIED IDEOGRAPH - 0x92B5: 0x633C, //CJK UNIFIED IDEOGRAPH - 0x92B6: 0x633E, //CJK UNIFIED IDEOGRAPH - 0x92B7: 0x633F, //CJK UNIFIED IDEOGRAPH - 0x92B8: 0x6340, //CJK UNIFIED IDEOGRAPH - 0x92B9: 0x6341, //CJK UNIFIED IDEOGRAPH - 0x92BA: 0x6344, //CJK UNIFIED IDEOGRAPH - 0x92BB: 0x6347, //CJK UNIFIED IDEOGRAPH - 0x92BC: 0x6348, //CJK UNIFIED IDEOGRAPH - 0x92BD: 0x634A, //CJK UNIFIED IDEOGRAPH - 0x92BE: 0x6351, //CJK UNIFIED IDEOGRAPH - 0x92BF: 0x6352, //CJK UNIFIED IDEOGRAPH - 0x92C0: 0x6353, //CJK UNIFIED IDEOGRAPH - 0x92C1: 0x6354, //CJK UNIFIED IDEOGRAPH - 0x92C2: 0x6356, //CJK UNIFIED IDEOGRAPH - 0x92C3: 0x6357, //CJK UNIFIED IDEOGRAPH - 0x92C4: 0x6358, //CJK UNIFIED IDEOGRAPH - 0x92C5: 0x6359, //CJK UNIFIED IDEOGRAPH - 0x92C6: 0x635A, //CJK UNIFIED IDEOGRAPH - 0x92C7: 0x635B, //CJK UNIFIED IDEOGRAPH - 0x92C8: 0x635C, //CJK UNIFIED IDEOGRAPH - 0x92C9: 0x635D, //CJK UNIFIED IDEOGRAPH - 0x92CA: 0x6360, //CJK UNIFIED IDEOGRAPH - 0x92CB: 0x6364, //CJK UNIFIED IDEOGRAPH - 0x92CC: 0x6365, //CJK UNIFIED IDEOGRAPH - 0x92CD: 0x6366, //CJK UNIFIED IDEOGRAPH - 0x92CE: 0x6368, //CJK UNIFIED IDEOGRAPH - 0x92CF: 0x636A, //CJK UNIFIED IDEOGRAPH - 0x92D0: 0x636B, //CJK UNIFIED IDEOGRAPH - 0x92D1: 0x636C, //CJK UNIFIED IDEOGRAPH - 0x92D2: 0x636F, //CJK UNIFIED IDEOGRAPH - 0x92D3: 0x6370, //CJK UNIFIED IDEOGRAPH - 0x92D4: 0x6372, //CJK UNIFIED IDEOGRAPH - 0x92D5: 0x6373, //CJK UNIFIED IDEOGRAPH - 0x92D6: 0x6374, //CJK UNIFIED IDEOGRAPH - 0x92D7: 0x6375, //CJK UNIFIED IDEOGRAPH - 0x92D8: 0x6378, //CJK UNIFIED IDEOGRAPH - 0x92D9: 0x6379, //CJK UNIFIED IDEOGRAPH - 0x92DA: 0x637C, //CJK UNIFIED IDEOGRAPH - 0x92DB: 0x637D, //CJK UNIFIED IDEOGRAPH - 0x92DC: 0x637E, //CJK UNIFIED IDEOGRAPH - 0x92DD: 0x637F, //CJK UNIFIED IDEOGRAPH - 0x92DE: 0x6381, //CJK UNIFIED IDEOGRAPH - 0x92DF: 0x6383, //CJK UNIFIED IDEOGRAPH - 0x92E0: 0x6384, //CJK UNIFIED IDEOGRAPH - 0x92E1: 0x6385, //CJK UNIFIED IDEOGRAPH - 0x92E2: 0x6386, //CJK UNIFIED IDEOGRAPH - 0x92E3: 0x638B, //CJK UNIFIED IDEOGRAPH - 0x92E4: 0x638D, //CJK UNIFIED IDEOGRAPH - 0x92E5: 0x6391, //CJK UNIFIED IDEOGRAPH - 0x92E6: 0x6393, //CJK UNIFIED IDEOGRAPH - 0x92E7: 0x6394, //CJK UNIFIED IDEOGRAPH - 0x92E8: 0x6395, //CJK UNIFIED IDEOGRAPH - 0x92E9: 0x6397, //CJK UNIFIED IDEOGRAPH - 0x92EA: 0x6399, //CJK UNIFIED IDEOGRAPH - 0x92EB: 0x639A, //CJK UNIFIED IDEOGRAPH - 0x92EC: 0x639B, //CJK UNIFIED IDEOGRAPH - 0x92ED: 0x639C, //CJK UNIFIED IDEOGRAPH - 0x92EE: 0x639D, //CJK UNIFIED IDEOGRAPH - 0x92EF: 0x639E, //CJK UNIFIED IDEOGRAPH - 0x92F0: 0x639F, //CJK UNIFIED IDEOGRAPH - 0x92F1: 0x63A1, //CJK UNIFIED IDEOGRAPH - 0x92F2: 0x63A4, //CJK UNIFIED IDEOGRAPH - 0x92F3: 0x63A6, //CJK UNIFIED IDEOGRAPH - 0x92F4: 0x63AB, //CJK UNIFIED IDEOGRAPH - 0x92F5: 0x63AF, //CJK UNIFIED IDEOGRAPH - 0x92F6: 0x63B1, //CJK UNIFIED IDEOGRAPH - 0x92F7: 0x63B2, //CJK UNIFIED IDEOGRAPH - 0x92F8: 0x63B5, //CJK UNIFIED IDEOGRAPH - 0x92F9: 0x63B6, //CJK UNIFIED IDEOGRAPH - 0x92FA: 0x63B9, //CJK UNIFIED IDEOGRAPH - 0x92FB: 0x63BB, //CJK UNIFIED IDEOGRAPH - 0x92FC: 0x63BD, //CJK UNIFIED IDEOGRAPH - 0x92FD: 0x63BF, //CJK UNIFIED IDEOGRAPH - 0x92FE: 0x63C0, //CJK UNIFIED IDEOGRAPH - 0x9340: 0x63C1, //CJK UNIFIED IDEOGRAPH - 0x9341: 0x63C2, //CJK UNIFIED IDEOGRAPH - 0x9342: 0x63C3, //CJK UNIFIED IDEOGRAPH - 0x9343: 0x63C5, //CJK UNIFIED IDEOGRAPH - 0x9344: 0x63C7, //CJK UNIFIED IDEOGRAPH - 0x9345: 0x63C8, //CJK UNIFIED IDEOGRAPH - 0x9346: 0x63CA, //CJK UNIFIED IDEOGRAPH - 0x9347: 0x63CB, //CJK UNIFIED IDEOGRAPH - 0x9348: 0x63CC, //CJK UNIFIED IDEOGRAPH - 0x9349: 0x63D1, //CJK UNIFIED IDEOGRAPH - 0x934A: 0x63D3, //CJK UNIFIED IDEOGRAPH - 0x934B: 0x63D4, //CJK UNIFIED IDEOGRAPH - 0x934C: 0x63D5, //CJK UNIFIED IDEOGRAPH - 0x934D: 0x63D7, //CJK UNIFIED IDEOGRAPH - 0x934E: 0x63D8, //CJK UNIFIED IDEOGRAPH - 0x934F: 0x63D9, //CJK UNIFIED IDEOGRAPH - 0x9350: 0x63DA, //CJK UNIFIED IDEOGRAPH - 0x9351: 0x63DB, //CJK UNIFIED IDEOGRAPH - 0x9352: 0x63DC, //CJK UNIFIED IDEOGRAPH - 0x9353: 0x63DD, //CJK UNIFIED IDEOGRAPH - 0x9354: 0x63DF, //CJK UNIFIED IDEOGRAPH - 0x9355: 0x63E2, //CJK UNIFIED IDEOGRAPH - 0x9356: 0x63E4, //CJK UNIFIED IDEOGRAPH - 0x9357: 0x63E5, //CJK UNIFIED IDEOGRAPH - 0x9358: 0x63E6, //CJK UNIFIED IDEOGRAPH - 0x9359: 0x63E7, //CJK UNIFIED IDEOGRAPH - 0x935A: 0x63E8, //CJK UNIFIED IDEOGRAPH - 0x935B: 0x63EB, //CJK UNIFIED IDEOGRAPH - 0x935C: 0x63EC, //CJK UNIFIED IDEOGRAPH - 0x935D: 0x63EE, //CJK UNIFIED IDEOGRAPH - 0x935E: 0x63EF, //CJK UNIFIED IDEOGRAPH - 0x935F: 0x63F0, //CJK UNIFIED IDEOGRAPH - 0x9360: 0x63F1, //CJK UNIFIED IDEOGRAPH - 0x9361: 0x63F3, //CJK UNIFIED IDEOGRAPH - 0x9362: 0x63F5, //CJK UNIFIED IDEOGRAPH - 0x9363: 0x63F7, //CJK UNIFIED IDEOGRAPH - 0x9364: 0x63F9, //CJK UNIFIED IDEOGRAPH - 0x9365: 0x63FA, //CJK UNIFIED IDEOGRAPH - 0x9366: 0x63FB, //CJK UNIFIED IDEOGRAPH - 0x9367: 0x63FC, //CJK UNIFIED IDEOGRAPH - 0x9368: 0x63FE, //CJK UNIFIED IDEOGRAPH - 0x9369: 0x6403, //CJK UNIFIED IDEOGRAPH - 0x936A: 0x6404, //CJK UNIFIED IDEOGRAPH - 0x936B: 0x6406, //CJK UNIFIED IDEOGRAPH - 0x936C: 0x6407, //CJK UNIFIED IDEOGRAPH - 0x936D: 0x6408, //CJK UNIFIED IDEOGRAPH - 0x936E: 0x6409, //CJK UNIFIED IDEOGRAPH - 0x936F: 0x640A, //CJK UNIFIED IDEOGRAPH - 0x9370: 0x640D, //CJK UNIFIED IDEOGRAPH - 0x9371: 0x640E, //CJK UNIFIED IDEOGRAPH - 0x9372: 0x6411, //CJK UNIFIED IDEOGRAPH - 0x9373: 0x6412, //CJK UNIFIED IDEOGRAPH - 0x9374: 0x6415, //CJK UNIFIED IDEOGRAPH - 0x9375: 0x6416, //CJK UNIFIED IDEOGRAPH - 0x9376: 0x6417, //CJK UNIFIED IDEOGRAPH - 0x9377: 0x6418, //CJK UNIFIED IDEOGRAPH - 0x9378: 0x6419, //CJK UNIFIED IDEOGRAPH - 0x9379: 0x641A, //CJK UNIFIED IDEOGRAPH - 0x937A: 0x641D, //CJK UNIFIED IDEOGRAPH - 0x937B: 0x641F, //CJK UNIFIED IDEOGRAPH - 0x937C: 0x6422, //CJK UNIFIED IDEOGRAPH - 0x937D: 0x6423, //CJK UNIFIED IDEOGRAPH - 0x937E: 0x6424, //CJK UNIFIED IDEOGRAPH - 0x9380: 0x6425, //CJK UNIFIED IDEOGRAPH - 0x9381: 0x6427, //CJK UNIFIED IDEOGRAPH - 0x9382: 0x6428, //CJK UNIFIED IDEOGRAPH - 0x9383: 0x6429, //CJK UNIFIED IDEOGRAPH - 0x9384: 0x642B, //CJK UNIFIED IDEOGRAPH - 0x9385: 0x642E, //CJK UNIFIED IDEOGRAPH - 0x9386: 0x642F, //CJK UNIFIED IDEOGRAPH - 0x9387: 0x6430, //CJK UNIFIED IDEOGRAPH - 0x9388: 0x6431, //CJK UNIFIED IDEOGRAPH - 0x9389: 0x6432, //CJK UNIFIED IDEOGRAPH - 0x938A: 0x6433, //CJK UNIFIED IDEOGRAPH - 0x938B: 0x6435, //CJK UNIFIED IDEOGRAPH - 0x938C: 0x6436, //CJK UNIFIED IDEOGRAPH - 0x938D: 0x6437, //CJK UNIFIED IDEOGRAPH - 0x938E: 0x6438, //CJK UNIFIED IDEOGRAPH - 0x938F: 0x6439, //CJK UNIFIED IDEOGRAPH - 0x9390: 0x643B, //CJK UNIFIED IDEOGRAPH - 0x9391: 0x643C, //CJK UNIFIED IDEOGRAPH - 0x9392: 0x643E, //CJK UNIFIED IDEOGRAPH - 0x9393: 0x6440, //CJK UNIFIED IDEOGRAPH - 0x9394: 0x6442, //CJK UNIFIED IDEOGRAPH - 0x9395: 0x6443, //CJK UNIFIED IDEOGRAPH - 0x9396: 0x6449, //CJK UNIFIED IDEOGRAPH - 0x9397: 0x644B, //CJK UNIFIED IDEOGRAPH - 0x9398: 0x644C, //CJK UNIFIED IDEOGRAPH - 0x9399: 0x644D, //CJK UNIFIED IDEOGRAPH - 0x939A: 0x644E, //CJK UNIFIED IDEOGRAPH - 0x939B: 0x644F, //CJK UNIFIED IDEOGRAPH - 0x939C: 0x6450, //CJK UNIFIED IDEOGRAPH - 0x939D: 0x6451, //CJK UNIFIED IDEOGRAPH - 0x939E: 0x6453, //CJK UNIFIED IDEOGRAPH - 0x939F: 0x6455, //CJK UNIFIED IDEOGRAPH - 0x93A0: 0x6456, //CJK UNIFIED IDEOGRAPH - 0x93A1: 0x6457, //CJK UNIFIED IDEOGRAPH - 0x93A2: 0x6459, //CJK UNIFIED IDEOGRAPH - 0x93A3: 0x645A, //CJK UNIFIED IDEOGRAPH - 0x93A4: 0x645B, //CJK UNIFIED IDEOGRAPH - 0x93A5: 0x645C, //CJK UNIFIED IDEOGRAPH - 0x93A6: 0x645D, //CJK UNIFIED IDEOGRAPH - 0x93A7: 0x645F, //CJK UNIFIED IDEOGRAPH - 0x93A8: 0x6460, //CJK UNIFIED IDEOGRAPH - 0x93A9: 0x6461, //CJK UNIFIED IDEOGRAPH - 0x93AA: 0x6462, //CJK UNIFIED IDEOGRAPH - 0x93AB: 0x6463, //CJK UNIFIED IDEOGRAPH - 0x93AC: 0x6464, //CJK UNIFIED IDEOGRAPH - 0x93AD: 0x6465, //CJK UNIFIED IDEOGRAPH - 0x93AE: 0x6466, //CJK UNIFIED IDEOGRAPH - 0x93AF: 0x6468, //CJK UNIFIED IDEOGRAPH - 0x93B0: 0x646A, //CJK UNIFIED IDEOGRAPH - 0x93B1: 0x646B, //CJK UNIFIED IDEOGRAPH - 0x93B2: 0x646C, //CJK UNIFIED IDEOGRAPH - 0x93B3: 0x646E, //CJK UNIFIED IDEOGRAPH - 0x93B4: 0x646F, //CJK UNIFIED IDEOGRAPH - 0x93B5: 0x6470, //CJK UNIFIED IDEOGRAPH - 0x93B6: 0x6471, //CJK UNIFIED IDEOGRAPH - 0x93B7: 0x6472, //CJK UNIFIED IDEOGRAPH - 0x93B8: 0x6473, //CJK UNIFIED IDEOGRAPH - 0x93B9: 0x6474, //CJK UNIFIED IDEOGRAPH - 0x93BA: 0x6475, //CJK UNIFIED IDEOGRAPH - 0x93BB: 0x6476, //CJK UNIFIED IDEOGRAPH - 0x93BC: 0x6477, //CJK UNIFIED IDEOGRAPH - 0x93BD: 0x647B, //CJK UNIFIED IDEOGRAPH - 0x93BE: 0x647C, //CJK UNIFIED IDEOGRAPH - 0x93BF: 0x647D, //CJK UNIFIED IDEOGRAPH - 0x93C0: 0x647E, //CJK UNIFIED IDEOGRAPH - 0x93C1: 0x647F, //CJK UNIFIED IDEOGRAPH - 0x93C2: 0x6480, //CJK UNIFIED IDEOGRAPH - 0x93C3: 0x6481, //CJK UNIFIED IDEOGRAPH - 0x93C4: 0x6483, //CJK UNIFIED IDEOGRAPH - 0x93C5: 0x6486, //CJK UNIFIED IDEOGRAPH - 0x93C6: 0x6488, //CJK UNIFIED IDEOGRAPH - 0x93C7: 0x6489, //CJK UNIFIED IDEOGRAPH - 0x93C8: 0x648A, //CJK UNIFIED IDEOGRAPH - 0x93C9: 0x648B, //CJK UNIFIED IDEOGRAPH - 0x93CA: 0x648C, //CJK UNIFIED IDEOGRAPH - 0x93CB: 0x648D, //CJK UNIFIED IDEOGRAPH - 0x93CC: 0x648E, //CJK UNIFIED IDEOGRAPH - 0x93CD: 0x648F, //CJK UNIFIED IDEOGRAPH - 0x93CE: 0x6490, //CJK UNIFIED IDEOGRAPH - 0x93CF: 0x6493, //CJK UNIFIED IDEOGRAPH - 0x93D0: 0x6494, //CJK UNIFIED IDEOGRAPH - 0x93D1: 0x6497, //CJK UNIFIED IDEOGRAPH - 0x93D2: 0x6498, //CJK UNIFIED IDEOGRAPH - 0x93D3: 0x649A, //CJK UNIFIED IDEOGRAPH - 0x93D4: 0x649B, //CJK UNIFIED IDEOGRAPH - 0x93D5: 0x649C, //CJK UNIFIED IDEOGRAPH - 0x93D6: 0x649D, //CJK UNIFIED IDEOGRAPH - 0x93D7: 0x649F, //CJK UNIFIED IDEOGRAPH - 0x93D8: 0x64A0, //CJK UNIFIED IDEOGRAPH - 0x93D9: 0x64A1, //CJK UNIFIED IDEOGRAPH - 0x93DA: 0x64A2, //CJK UNIFIED IDEOGRAPH - 0x93DB: 0x64A3, //CJK UNIFIED IDEOGRAPH - 0x93DC: 0x64A5, //CJK UNIFIED IDEOGRAPH - 0x93DD: 0x64A6, //CJK UNIFIED IDEOGRAPH - 0x93DE: 0x64A7, //CJK UNIFIED IDEOGRAPH - 0x93DF: 0x64A8, //CJK UNIFIED IDEOGRAPH - 0x93E0: 0x64AA, //CJK UNIFIED IDEOGRAPH - 0x93E1: 0x64AB, //CJK UNIFIED IDEOGRAPH - 0x93E2: 0x64AF, //CJK UNIFIED IDEOGRAPH - 0x93E3: 0x64B1, //CJK UNIFIED IDEOGRAPH - 0x93E4: 0x64B2, //CJK UNIFIED IDEOGRAPH - 0x93E5: 0x64B3, //CJK UNIFIED IDEOGRAPH - 0x93E6: 0x64B4, //CJK UNIFIED IDEOGRAPH - 0x93E7: 0x64B6, //CJK UNIFIED IDEOGRAPH - 0x93E8: 0x64B9, //CJK UNIFIED IDEOGRAPH - 0x93E9: 0x64BB, //CJK UNIFIED IDEOGRAPH - 0x93EA: 0x64BD, //CJK UNIFIED IDEOGRAPH - 0x93EB: 0x64BE, //CJK UNIFIED IDEOGRAPH - 0x93EC: 0x64BF, //CJK UNIFIED IDEOGRAPH - 0x93ED: 0x64C1, //CJK UNIFIED IDEOGRAPH - 0x93EE: 0x64C3, //CJK UNIFIED IDEOGRAPH - 0x93EF: 0x64C4, //CJK UNIFIED IDEOGRAPH - 0x93F0: 0x64C6, //CJK UNIFIED IDEOGRAPH - 0x93F1: 0x64C7, //CJK UNIFIED IDEOGRAPH - 0x93F2: 0x64C8, //CJK UNIFIED IDEOGRAPH - 0x93F3: 0x64C9, //CJK UNIFIED IDEOGRAPH - 0x93F4: 0x64CA, //CJK UNIFIED IDEOGRAPH - 0x93F5: 0x64CB, //CJK UNIFIED IDEOGRAPH - 0x93F6: 0x64CC, //CJK UNIFIED IDEOGRAPH - 0x93F7: 0x64CF, //CJK UNIFIED IDEOGRAPH - 0x93F8: 0x64D1, //CJK UNIFIED IDEOGRAPH - 0x93F9: 0x64D3, //CJK UNIFIED IDEOGRAPH - 0x93FA: 0x64D4, //CJK UNIFIED IDEOGRAPH - 0x93FB: 0x64D5, //CJK UNIFIED IDEOGRAPH - 0x93FC: 0x64D6, //CJK UNIFIED IDEOGRAPH - 0x93FD: 0x64D9, //CJK UNIFIED IDEOGRAPH - 0x93FE: 0x64DA, //CJK UNIFIED IDEOGRAPH - 0x9440: 0x64DB, //CJK UNIFIED IDEOGRAPH - 0x9441: 0x64DC, //CJK UNIFIED IDEOGRAPH - 0x9442: 0x64DD, //CJK UNIFIED IDEOGRAPH - 0x9443: 0x64DF, //CJK UNIFIED IDEOGRAPH - 0x9444: 0x64E0, //CJK UNIFIED IDEOGRAPH - 0x9445: 0x64E1, //CJK UNIFIED IDEOGRAPH - 0x9446: 0x64E3, //CJK UNIFIED IDEOGRAPH - 0x9447: 0x64E5, //CJK UNIFIED IDEOGRAPH - 0x9448: 0x64E7, //CJK UNIFIED IDEOGRAPH - 0x9449: 0x64E8, //CJK UNIFIED IDEOGRAPH - 0x944A: 0x64E9, //CJK UNIFIED IDEOGRAPH - 0x944B: 0x64EA, //CJK UNIFIED IDEOGRAPH - 0x944C: 0x64EB, //CJK UNIFIED IDEOGRAPH - 0x944D: 0x64EC, //CJK UNIFIED IDEOGRAPH - 0x944E: 0x64ED, //CJK UNIFIED IDEOGRAPH - 0x944F: 0x64EE, //CJK UNIFIED IDEOGRAPH - 0x9450: 0x64EF, //CJK UNIFIED IDEOGRAPH - 0x9451: 0x64F0, //CJK UNIFIED IDEOGRAPH - 0x9452: 0x64F1, //CJK UNIFIED IDEOGRAPH - 0x9453: 0x64F2, //CJK UNIFIED IDEOGRAPH - 0x9454: 0x64F3, //CJK UNIFIED IDEOGRAPH - 0x9455: 0x64F4, //CJK UNIFIED IDEOGRAPH - 0x9456: 0x64F5, //CJK UNIFIED IDEOGRAPH - 0x9457: 0x64F6, //CJK UNIFIED IDEOGRAPH - 0x9458: 0x64F7, //CJK UNIFIED IDEOGRAPH - 0x9459: 0x64F8, //CJK UNIFIED IDEOGRAPH - 0x945A: 0x64F9, //CJK UNIFIED IDEOGRAPH - 0x945B: 0x64FA, //CJK UNIFIED IDEOGRAPH - 0x945C: 0x64FB, //CJK UNIFIED IDEOGRAPH - 0x945D: 0x64FC, //CJK UNIFIED IDEOGRAPH - 0x945E: 0x64FD, //CJK UNIFIED IDEOGRAPH - 0x945F: 0x64FE, //CJK UNIFIED IDEOGRAPH - 0x9460: 0x64FF, //CJK UNIFIED IDEOGRAPH - 0x9461: 0x6501, //CJK UNIFIED IDEOGRAPH - 0x9462: 0x6502, //CJK UNIFIED IDEOGRAPH - 0x9463: 0x6503, //CJK UNIFIED IDEOGRAPH - 0x9464: 0x6504, //CJK UNIFIED IDEOGRAPH - 0x9465: 0x6505, //CJK UNIFIED IDEOGRAPH - 0x9466: 0x6506, //CJK UNIFIED IDEOGRAPH - 0x9467: 0x6507, //CJK UNIFIED IDEOGRAPH - 0x9468: 0x6508, //CJK UNIFIED IDEOGRAPH - 0x9469: 0x650A, //CJK UNIFIED IDEOGRAPH - 0x946A: 0x650B, //CJK UNIFIED IDEOGRAPH - 0x946B: 0x650C, //CJK UNIFIED IDEOGRAPH - 0x946C: 0x650D, //CJK UNIFIED IDEOGRAPH - 0x946D: 0x650E, //CJK UNIFIED IDEOGRAPH - 0x946E: 0x650F, //CJK UNIFIED IDEOGRAPH - 0x946F: 0x6510, //CJK UNIFIED IDEOGRAPH - 0x9470: 0x6511, //CJK UNIFIED IDEOGRAPH - 0x9471: 0x6513, //CJK UNIFIED IDEOGRAPH - 0x9472: 0x6514, //CJK UNIFIED IDEOGRAPH - 0x9473: 0x6515, //CJK UNIFIED IDEOGRAPH - 0x9474: 0x6516, //CJK UNIFIED IDEOGRAPH - 0x9475: 0x6517, //CJK UNIFIED IDEOGRAPH - 0x9476: 0x6519, //CJK UNIFIED IDEOGRAPH - 0x9477: 0x651A, //CJK UNIFIED IDEOGRAPH - 0x9478: 0x651B, //CJK UNIFIED IDEOGRAPH - 0x9479: 0x651C, //CJK UNIFIED IDEOGRAPH - 0x947A: 0x651D, //CJK UNIFIED IDEOGRAPH - 0x947B: 0x651E, //CJK UNIFIED IDEOGRAPH - 0x947C: 0x651F, //CJK UNIFIED IDEOGRAPH - 0x947D: 0x6520, //CJK UNIFIED IDEOGRAPH - 0x947E: 0x6521, //CJK UNIFIED IDEOGRAPH - 0x9480: 0x6522, //CJK UNIFIED IDEOGRAPH - 0x9481: 0x6523, //CJK UNIFIED IDEOGRAPH - 0x9482: 0x6524, //CJK UNIFIED IDEOGRAPH - 0x9483: 0x6526, //CJK UNIFIED IDEOGRAPH - 0x9484: 0x6527, //CJK UNIFIED IDEOGRAPH - 0x9485: 0x6528, //CJK UNIFIED IDEOGRAPH - 0x9486: 0x6529, //CJK UNIFIED IDEOGRAPH - 0x9487: 0x652A, //CJK UNIFIED IDEOGRAPH - 0x9488: 0x652C, //CJK UNIFIED IDEOGRAPH - 0x9489: 0x652D, //CJK UNIFIED IDEOGRAPH - 0x948A: 0x6530, //CJK UNIFIED IDEOGRAPH - 0x948B: 0x6531, //CJK UNIFIED IDEOGRAPH - 0x948C: 0x6532, //CJK UNIFIED IDEOGRAPH - 0x948D: 0x6533, //CJK UNIFIED IDEOGRAPH - 0x948E: 0x6537, //CJK UNIFIED IDEOGRAPH - 0x948F: 0x653A, //CJK UNIFIED IDEOGRAPH - 0x9490: 0x653C, //CJK UNIFIED IDEOGRAPH - 0x9491: 0x653D, //CJK UNIFIED IDEOGRAPH - 0x9492: 0x6540, //CJK UNIFIED IDEOGRAPH - 0x9493: 0x6541, //CJK UNIFIED IDEOGRAPH - 0x9494: 0x6542, //CJK UNIFIED IDEOGRAPH - 0x9495: 0x6543, //CJK UNIFIED IDEOGRAPH - 0x9496: 0x6544, //CJK UNIFIED IDEOGRAPH - 0x9497: 0x6546, //CJK UNIFIED IDEOGRAPH - 0x9498: 0x6547, //CJK UNIFIED IDEOGRAPH - 0x9499: 0x654A, //CJK UNIFIED IDEOGRAPH - 0x949A: 0x654B, //CJK UNIFIED IDEOGRAPH - 0x949B: 0x654D, //CJK UNIFIED IDEOGRAPH - 0x949C: 0x654E, //CJK UNIFIED IDEOGRAPH - 0x949D: 0x6550, //CJK UNIFIED IDEOGRAPH - 0x949E: 0x6552, //CJK UNIFIED IDEOGRAPH - 0x949F: 0x6553, //CJK UNIFIED IDEOGRAPH - 0x94A0: 0x6554, //CJK UNIFIED IDEOGRAPH - 0x94A1: 0x6557, //CJK UNIFIED IDEOGRAPH - 0x94A2: 0x6558, //CJK UNIFIED IDEOGRAPH - 0x94A3: 0x655A, //CJK UNIFIED IDEOGRAPH - 0x94A4: 0x655C, //CJK UNIFIED IDEOGRAPH - 0x94A5: 0x655F, //CJK UNIFIED IDEOGRAPH - 0x94A6: 0x6560, //CJK UNIFIED IDEOGRAPH - 0x94A7: 0x6561, //CJK UNIFIED IDEOGRAPH - 0x94A8: 0x6564, //CJK UNIFIED IDEOGRAPH - 0x94A9: 0x6565, //CJK UNIFIED IDEOGRAPH - 0x94AA: 0x6567, //CJK UNIFIED IDEOGRAPH - 0x94AB: 0x6568, //CJK UNIFIED IDEOGRAPH - 0x94AC: 0x6569, //CJK UNIFIED IDEOGRAPH - 0x94AD: 0x656A, //CJK UNIFIED IDEOGRAPH - 0x94AE: 0x656D, //CJK UNIFIED IDEOGRAPH - 0x94AF: 0x656E, //CJK UNIFIED IDEOGRAPH - 0x94B0: 0x656F, //CJK UNIFIED IDEOGRAPH - 0x94B1: 0x6571, //CJK UNIFIED IDEOGRAPH - 0x94B2: 0x6573, //CJK UNIFIED IDEOGRAPH - 0x94B3: 0x6575, //CJK UNIFIED IDEOGRAPH - 0x94B4: 0x6576, //CJK UNIFIED IDEOGRAPH - 0x94B5: 0x6578, //CJK UNIFIED IDEOGRAPH - 0x94B6: 0x6579, //CJK UNIFIED IDEOGRAPH - 0x94B7: 0x657A, //CJK UNIFIED IDEOGRAPH - 0x94B8: 0x657B, //CJK UNIFIED IDEOGRAPH - 0x94B9: 0x657C, //CJK UNIFIED IDEOGRAPH - 0x94BA: 0x657D, //CJK UNIFIED IDEOGRAPH - 0x94BB: 0x657E, //CJK UNIFIED IDEOGRAPH - 0x94BC: 0x657F, //CJK UNIFIED IDEOGRAPH - 0x94BD: 0x6580, //CJK UNIFIED IDEOGRAPH - 0x94BE: 0x6581, //CJK UNIFIED IDEOGRAPH - 0x94BF: 0x6582, //CJK UNIFIED IDEOGRAPH - 0x94C0: 0x6583, //CJK UNIFIED IDEOGRAPH - 0x94C1: 0x6584, //CJK UNIFIED IDEOGRAPH - 0x94C2: 0x6585, //CJK UNIFIED IDEOGRAPH - 0x94C3: 0x6586, //CJK UNIFIED IDEOGRAPH - 0x94C4: 0x6588, //CJK UNIFIED IDEOGRAPH - 0x94C5: 0x6589, //CJK UNIFIED IDEOGRAPH - 0x94C6: 0x658A, //CJK UNIFIED IDEOGRAPH - 0x94C7: 0x658D, //CJK UNIFIED IDEOGRAPH - 0x94C8: 0x658E, //CJK UNIFIED IDEOGRAPH - 0x94C9: 0x658F, //CJK UNIFIED IDEOGRAPH - 0x94CA: 0x6592, //CJK UNIFIED IDEOGRAPH - 0x94CB: 0x6594, //CJK UNIFIED IDEOGRAPH - 0x94CC: 0x6595, //CJK UNIFIED IDEOGRAPH - 0x94CD: 0x6596, //CJK UNIFIED IDEOGRAPH - 0x94CE: 0x6598, //CJK UNIFIED IDEOGRAPH - 0x94CF: 0x659A, //CJK UNIFIED IDEOGRAPH - 0x94D0: 0x659D, //CJK UNIFIED IDEOGRAPH - 0x94D1: 0x659E, //CJK UNIFIED IDEOGRAPH - 0x94D2: 0x65A0, //CJK UNIFIED IDEOGRAPH - 0x94D3: 0x65A2, //CJK UNIFIED IDEOGRAPH - 0x94D4: 0x65A3, //CJK UNIFIED IDEOGRAPH - 0x94D5: 0x65A6, //CJK UNIFIED IDEOGRAPH - 0x94D6: 0x65A8, //CJK UNIFIED IDEOGRAPH - 0x94D7: 0x65AA, //CJK UNIFIED IDEOGRAPH - 0x94D8: 0x65AC, //CJK UNIFIED IDEOGRAPH - 0x94D9: 0x65AE, //CJK UNIFIED IDEOGRAPH - 0x94DA: 0x65B1, //CJK UNIFIED IDEOGRAPH - 0x94DB: 0x65B2, //CJK UNIFIED IDEOGRAPH - 0x94DC: 0x65B3, //CJK UNIFIED IDEOGRAPH - 0x94DD: 0x65B4, //CJK UNIFIED IDEOGRAPH - 0x94DE: 0x65B5, //CJK UNIFIED IDEOGRAPH - 0x94DF: 0x65B6, //CJK UNIFIED IDEOGRAPH - 0x94E0: 0x65B7, //CJK UNIFIED IDEOGRAPH - 0x94E1: 0x65B8, //CJK UNIFIED IDEOGRAPH - 0x94E2: 0x65BA, //CJK UNIFIED IDEOGRAPH - 0x94E3: 0x65BB, //CJK UNIFIED IDEOGRAPH - 0x94E4: 0x65BE, //CJK UNIFIED IDEOGRAPH - 0x94E5: 0x65BF, //CJK UNIFIED IDEOGRAPH - 0x94E6: 0x65C0, //CJK UNIFIED IDEOGRAPH - 0x94E7: 0x65C2, //CJK UNIFIED IDEOGRAPH - 0x94E8: 0x65C7, //CJK UNIFIED IDEOGRAPH - 0x94E9: 0x65C8, //CJK UNIFIED IDEOGRAPH - 0x94EA: 0x65C9, //CJK UNIFIED IDEOGRAPH - 0x94EB: 0x65CA, //CJK UNIFIED IDEOGRAPH - 0x94EC: 0x65CD, //CJK UNIFIED IDEOGRAPH - 0x94ED: 0x65D0, //CJK UNIFIED IDEOGRAPH - 0x94EE: 0x65D1, //CJK UNIFIED IDEOGRAPH - 0x94EF: 0x65D3, //CJK UNIFIED IDEOGRAPH - 0x94F0: 0x65D4, //CJK UNIFIED IDEOGRAPH - 0x94F1: 0x65D5, //CJK UNIFIED IDEOGRAPH - 0x94F2: 0x65D8, //CJK UNIFIED IDEOGRAPH - 0x94F3: 0x65D9, //CJK UNIFIED IDEOGRAPH - 0x94F4: 0x65DA, //CJK UNIFIED IDEOGRAPH - 0x94F5: 0x65DB, //CJK UNIFIED IDEOGRAPH - 0x94F6: 0x65DC, //CJK UNIFIED IDEOGRAPH - 0x94F7: 0x65DD, //CJK UNIFIED IDEOGRAPH - 0x94F8: 0x65DE, //CJK UNIFIED IDEOGRAPH - 0x94F9: 0x65DF, //CJK UNIFIED IDEOGRAPH - 0x94FA: 0x65E1, //CJK UNIFIED IDEOGRAPH - 0x94FB: 0x65E3, //CJK UNIFIED IDEOGRAPH - 0x94FC: 0x65E4, //CJK UNIFIED IDEOGRAPH - 0x94FD: 0x65EA, //CJK UNIFIED IDEOGRAPH - 0x94FE: 0x65EB, //CJK UNIFIED IDEOGRAPH - 0x9540: 0x65F2, //CJK UNIFIED IDEOGRAPH - 0x9541: 0x65F3, //CJK UNIFIED IDEOGRAPH - 0x9542: 0x65F4, //CJK UNIFIED IDEOGRAPH - 0x9543: 0x65F5, //CJK UNIFIED IDEOGRAPH - 0x9544: 0x65F8, //CJK UNIFIED IDEOGRAPH - 0x9545: 0x65F9, //CJK UNIFIED IDEOGRAPH - 0x9546: 0x65FB, //CJK UNIFIED IDEOGRAPH - 0x9547: 0x65FC, //CJK UNIFIED IDEOGRAPH - 0x9548: 0x65FD, //CJK UNIFIED IDEOGRAPH - 0x9549: 0x65FE, //CJK UNIFIED IDEOGRAPH - 0x954A: 0x65FF, //CJK UNIFIED IDEOGRAPH - 0x954B: 0x6601, //CJK UNIFIED IDEOGRAPH - 0x954C: 0x6604, //CJK UNIFIED IDEOGRAPH - 0x954D: 0x6605, //CJK UNIFIED IDEOGRAPH - 0x954E: 0x6607, //CJK UNIFIED IDEOGRAPH - 0x954F: 0x6608, //CJK UNIFIED IDEOGRAPH - 0x9550: 0x6609, //CJK UNIFIED IDEOGRAPH - 0x9551: 0x660B, //CJK UNIFIED IDEOGRAPH - 0x9552: 0x660D, //CJK UNIFIED IDEOGRAPH - 0x9553: 0x6610, //CJK UNIFIED IDEOGRAPH - 0x9554: 0x6611, //CJK UNIFIED IDEOGRAPH - 0x9555: 0x6612, //CJK UNIFIED IDEOGRAPH - 0x9556: 0x6616, //CJK UNIFIED IDEOGRAPH - 0x9557: 0x6617, //CJK UNIFIED IDEOGRAPH - 0x9558: 0x6618, //CJK UNIFIED IDEOGRAPH - 0x9559: 0x661A, //CJK UNIFIED IDEOGRAPH - 0x955A: 0x661B, //CJK UNIFIED IDEOGRAPH - 0x955B: 0x661C, //CJK UNIFIED IDEOGRAPH - 0x955C: 0x661E, //CJK UNIFIED IDEOGRAPH - 0x955D: 0x6621, //CJK UNIFIED IDEOGRAPH - 0x955E: 0x6622, //CJK UNIFIED IDEOGRAPH - 0x955F: 0x6623, //CJK UNIFIED IDEOGRAPH - 0x9560: 0x6624, //CJK UNIFIED IDEOGRAPH - 0x9561: 0x6626, //CJK UNIFIED IDEOGRAPH - 0x9562: 0x6629, //CJK UNIFIED IDEOGRAPH - 0x9563: 0x662A, //CJK UNIFIED IDEOGRAPH - 0x9564: 0x662B, //CJK UNIFIED IDEOGRAPH - 0x9565: 0x662C, //CJK UNIFIED IDEOGRAPH - 0x9566: 0x662E, //CJK UNIFIED IDEOGRAPH - 0x9567: 0x6630, //CJK UNIFIED IDEOGRAPH - 0x9568: 0x6632, //CJK UNIFIED IDEOGRAPH - 0x9569: 0x6633, //CJK UNIFIED IDEOGRAPH - 0x956A: 0x6637, //CJK UNIFIED IDEOGRAPH - 0x956B: 0x6638, //CJK UNIFIED IDEOGRAPH - 0x956C: 0x6639, //CJK UNIFIED IDEOGRAPH - 0x956D: 0x663A, //CJK UNIFIED IDEOGRAPH - 0x956E: 0x663B, //CJK UNIFIED IDEOGRAPH - 0x956F: 0x663D, //CJK UNIFIED IDEOGRAPH - 0x9570: 0x663F, //CJK UNIFIED IDEOGRAPH - 0x9571: 0x6640, //CJK UNIFIED IDEOGRAPH - 0x9572: 0x6642, //CJK UNIFIED IDEOGRAPH - 0x9573: 0x6644, //CJK UNIFIED IDEOGRAPH - 0x9574: 0x6645, //CJK UNIFIED IDEOGRAPH - 0x9575: 0x6646, //CJK UNIFIED IDEOGRAPH - 0x9576: 0x6647, //CJK UNIFIED IDEOGRAPH - 0x9577: 0x6648, //CJK UNIFIED IDEOGRAPH - 0x9578: 0x6649, //CJK UNIFIED IDEOGRAPH - 0x9579: 0x664A, //CJK UNIFIED IDEOGRAPH - 0x957A: 0x664D, //CJK UNIFIED IDEOGRAPH - 0x957B: 0x664E, //CJK UNIFIED IDEOGRAPH - 0x957C: 0x6650, //CJK UNIFIED IDEOGRAPH - 0x957D: 0x6651, //CJK UNIFIED IDEOGRAPH - 0x957E: 0x6658, //CJK UNIFIED IDEOGRAPH - 0x9580: 0x6659, //CJK UNIFIED IDEOGRAPH - 0x9581: 0x665B, //CJK UNIFIED IDEOGRAPH - 0x9582: 0x665C, //CJK UNIFIED IDEOGRAPH - 0x9583: 0x665D, //CJK UNIFIED IDEOGRAPH - 0x9584: 0x665E, //CJK UNIFIED IDEOGRAPH - 0x9585: 0x6660, //CJK UNIFIED IDEOGRAPH - 0x9586: 0x6662, //CJK UNIFIED IDEOGRAPH - 0x9587: 0x6663, //CJK UNIFIED IDEOGRAPH - 0x9588: 0x6665, //CJK UNIFIED IDEOGRAPH - 0x9589: 0x6667, //CJK UNIFIED IDEOGRAPH - 0x958A: 0x6669, //CJK UNIFIED IDEOGRAPH - 0x958B: 0x666A, //CJK UNIFIED IDEOGRAPH - 0x958C: 0x666B, //CJK UNIFIED IDEOGRAPH - 0x958D: 0x666C, //CJK UNIFIED IDEOGRAPH - 0x958E: 0x666D, //CJK UNIFIED IDEOGRAPH - 0x958F: 0x6671, //CJK UNIFIED IDEOGRAPH - 0x9590: 0x6672, //CJK UNIFIED IDEOGRAPH - 0x9591: 0x6673, //CJK UNIFIED IDEOGRAPH - 0x9592: 0x6675, //CJK UNIFIED IDEOGRAPH - 0x9593: 0x6678, //CJK UNIFIED IDEOGRAPH - 0x9594: 0x6679, //CJK UNIFIED IDEOGRAPH - 0x9595: 0x667B, //CJK UNIFIED IDEOGRAPH - 0x9596: 0x667C, //CJK UNIFIED IDEOGRAPH - 0x9597: 0x667D, //CJK UNIFIED IDEOGRAPH - 0x9598: 0x667F, //CJK UNIFIED IDEOGRAPH - 0x9599: 0x6680, //CJK UNIFIED IDEOGRAPH - 0x959A: 0x6681, //CJK UNIFIED IDEOGRAPH - 0x959B: 0x6683, //CJK UNIFIED IDEOGRAPH - 0x959C: 0x6685, //CJK UNIFIED IDEOGRAPH - 0x959D: 0x6686, //CJK UNIFIED IDEOGRAPH - 0x959E: 0x6688, //CJK UNIFIED IDEOGRAPH - 0x959F: 0x6689, //CJK UNIFIED IDEOGRAPH - 0x95A0: 0x668A, //CJK UNIFIED IDEOGRAPH - 0x95A1: 0x668B, //CJK UNIFIED IDEOGRAPH - 0x95A2: 0x668D, //CJK UNIFIED IDEOGRAPH - 0x95A3: 0x668E, //CJK UNIFIED IDEOGRAPH - 0x95A4: 0x668F, //CJK UNIFIED IDEOGRAPH - 0x95A5: 0x6690, //CJK UNIFIED IDEOGRAPH - 0x95A6: 0x6692, //CJK UNIFIED IDEOGRAPH - 0x95A7: 0x6693, //CJK UNIFIED IDEOGRAPH - 0x95A8: 0x6694, //CJK UNIFIED IDEOGRAPH - 0x95A9: 0x6695, //CJK UNIFIED IDEOGRAPH - 0x95AA: 0x6698, //CJK UNIFIED IDEOGRAPH - 0x95AB: 0x6699, //CJK UNIFIED IDEOGRAPH - 0x95AC: 0x669A, //CJK UNIFIED IDEOGRAPH - 0x95AD: 0x669B, //CJK UNIFIED IDEOGRAPH - 0x95AE: 0x669C, //CJK UNIFIED IDEOGRAPH - 0x95AF: 0x669E, //CJK UNIFIED IDEOGRAPH - 0x95B0: 0x669F, //CJK UNIFIED IDEOGRAPH - 0x95B1: 0x66A0, //CJK UNIFIED IDEOGRAPH - 0x95B2: 0x66A1, //CJK UNIFIED IDEOGRAPH - 0x95B3: 0x66A2, //CJK UNIFIED IDEOGRAPH - 0x95B4: 0x66A3, //CJK UNIFIED IDEOGRAPH - 0x95B5: 0x66A4, //CJK UNIFIED IDEOGRAPH - 0x95B6: 0x66A5, //CJK UNIFIED IDEOGRAPH - 0x95B7: 0x66A6, //CJK UNIFIED IDEOGRAPH - 0x95B8: 0x66A9, //CJK UNIFIED IDEOGRAPH - 0x95B9: 0x66AA, //CJK UNIFIED IDEOGRAPH - 0x95BA: 0x66AB, //CJK UNIFIED IDEOGRAPH - 0x95BB: 0x66AC, //CJK UNIFIED IDEOGRAPH - 0x95BC: 0x66AD, //CJK UNIFIED IDEOGRAPH - 0x95BD: 0x66AF, //CJK UNIFIED IDEOGRAPH - 0x95BE: 0x66B0, //CJK UNIFIED IDEOGRAPH - 0x95BF: 0x66B1, //CJK UNIFIED IDEOGRAPH - 0x95C0: 0x66B2, //CJK UNIFIED IDEOGRAPH - 0x95C1: 0x66B3, //CJK UNIFIED IDEOGRAPH - 0x95C2: 0x66B5, //CJK UNIFIED IDEOGRAPH - 0x95C3: 0x66B6, //CJK UNIFIED IDEOGRAPH - 0x95C4: 0x66B7, //CJK UNIFIED IDEOGRAPH - 0x95C5: 0x66B8, //CJK UNIFIED IDEOGRAPH - 0x95C6: 0x66BA, //CJK UNIFIED IDEOGRAPH - 0x95C7: 0x66BB, //CJK UNIFIED IDEOGRAPH - 0x95C8: 0x66BC, //CJK UNIFIED IDEOGRAPH - 0x95C9: 0x66BD, //CJK UNIFIED IDEOGRAPH - 0x95CA: 0x66BF, //CJK UNIFIED IDEOGRAPH - 0x95CB: 0x66C0, //CJK UNIFIED IDEOGRAPH - 0x95CC: 0x66C1, //CJK UNIFIED IDEOGRAPH - 0x95CD: 0x66C2, //CJK UNIFIED IDEOGRAPH - 0x95CE: 0x66C3, //CJK UNIFIED IDEOGRAPH - 0x95CF: 0x66C4, //CJK UNIFIED IDEOGRAPH - 0x95D0: 0x66C5, //CJK UNIFIED IDEOGRAPH - 0x95D1: 0x66C6, //CJK UNIFIED IDEOGRAPH - 0x95D2: 0x66C7, //CJK UNIFIED IDEOGRAPH - 0x95D3: 0x66C8, //CJK UNIFIED IDEOGRAPH - 0x95D4: 0x66C9, //CJK UNIFIED IDEOGRAPH - 0x95D5: 0x66CA, //CJK UNIFIED IDEOGRAPH - 0x95D6: 0x66CB, //CJK UNIFIED IDEOGRAPH - 0x95D7: 0x66CC, //CJK UNIFIED IDEOGRAPH - 0x95D8: 0x66CD, //CJK UNIFIED IDEOGRAPH - 0x95D9: 0x66CE, //CJK UNIFIED IDEOGRAPH - 0x95DA: 0x66CF, //CJK UNIFIED IDEOGRAPH - 0x95DB: 0x66D0, //CJK UNIFIED IDEOGRAPH - 0x95DC: 0x66D1, //CJK UNIFIED IDEOGRAPH - 0x95DD: 0x66D2, //CJK UNIFIED IDEOGRAPH - 0x95DE: 0x66D3, //CJK UNIFIED IDEOGRAPH - 0x95DF: 0x66D4, //CJK UNIFIED IDEOGRAPH - 0x95E0: 0x66D5, //CJK UNIFIED IDEOGRAPH - 0x95E1: 0x66D6, //CJK UNIFIED IDEOGRAPH - 0x95E2: 0x66D7, //CJK UNIFIED IDEOGRAPH - 0x95E3: 0x66D8, //CJK UNIFIED IDEOGRAPH - 0x95E4: 0x66DA, //CJK UNIFIED IDEOGRAPH - 0x95E5: 0x66DE, //CJK UNIFIED IDEOGRAPH - 0x95E6: 0x66DF, //CJK UNIFIED IDEOGRAPH - 0x95E7: 0x66E0, //CJK UNIFIED IDEOGRAPH - 0x95E8: 0x66E1, //CJK UNIFIED IDEOGRAPH - 0x95E9: 0x66E2, //CJK UNIFIED IDEOGRAPH - 0x95EA: 0x66E3, //CJK UNIFIED IDEOGRAPH - 0x95EB: 0x66E4, //CJK UNIFIED IDEOGRAPH - 0x95EC: 0x66E5, //CJK UNIFIED IDEOGRAPH - 0x95ED: 0x66E7, //CJK UNIFIED IDEOGRAPH - 0x95EE: 0x66E8, //CJK UNIFIED IDEOGRAPH - 0x95EF: 0x66EA, //CJK UNIFIED IDEOGRAPH - 0x95F0: 0x66EB, //CJK UNIFIED IDEOGRAPH - 0x95F1: 0x66EC, //CJK UNIFIED IDEOGRAPH - 0x95F2: 0x66ED, //CJK UNIFIED IDEOGRAPH - 0x95F3: 0x66EE, //CJK UNIFIED IDEOGRAPH - 0x95F4: 0x66EF, //CJK UNIFIED IDEOGRAPH - 0x95F5: 0x66F1, //CJK UNIFIED IDEOGRAPH - 0x95F6: 0x66F5, //CJK UNIFIED IDEOGRAPH - 0x95F7: 0x66F6, //CJK UNIFIED IDEOGRAPH - 0x95F8: 0x66F8, //CJK UNIFIED IDEOGRAPH - 0x95F9: 0x66FA, //CJK UNIFIED IDEOGRAPH - 0x95FA: 0x66FB, //CJK UNIFIED IDEOGRAPH - 0x95FB: 0x66FD, //CJK UNIFIED IDEOGRAPH - 0x95FC: 0x6701, //CJK UNIFIED IDEOGRAPH - 0x95FD: 0x6702, //CJK UNIFIED IDEOGRAPH - 0x95FE: 0x6703, //CJK UNIFIED IDEOGRAPH - 0x9640: 0x6704, //CJK UNIFIED IDEOGRAPH - 0x9641: 0x6705, //CJK UNIFIED IDEOGRAPH - 0x9642: 0x6706, //CJK UNIFIED IDEOGRAPH - 0x9643: 0x6707, //CJK UNIFIED IDEOGRAPH - 0x9644: 0x670C, //CJK UNIFIED IDEOGRAPH - 0x9645: 0x670E, //CJK UNIFIED IDEOGRAPH - 0x9646: 0x670F, //CJK UNIFIED IDEOGRAPH - 0x9647: 0x6711, //CJK UNIFIED IDEOGRAPH - 0x9648: 0x6712, //CJK UNIFIED IDEOGRAPH - 0x9649: 0x6713, //CJK UNIFIED IDEOGRAPH - 0x964A: 0x6716, //CJK UNIFIED IDEOGRAPH - 0x964B: 0x6718, //CJK UNIFIED IDEOGRAPH - 0x964C: 0x6719, //CJK UNIFIED IDEOGRAPH - 0x964D: 0x671A, //CJK UNIFIED IDEOGRAPH - 0x964E: 0x671C, //CJK UNIFIED IDEOGRAPH - 0x964F: 0x671E, //CJK UNIFIED IDEOGRAPH - 0x9650: 0x6720, //CJK UNIFIED IDEOGRAPH - 0x9651: 0x6721, //CJK UNIFIED IDEOGRAPH - 0x9652: 0x6722, //CJK UNIFIED IDEOGRAPH - 0x9653: 0x6723, //CJK UNIFIED IDEOGRAPH - 0x9654: 0x6724, //CJK UNIFIED IDEOGRAPH - 0x9655: 0x6725, //CJK UNIFIED IDEOGRAPH - 0x9656: 0x6727, //CJK UNIFIED IDEOGRAPH - 0x9657: 0x6729, //CJK UNIFIED IDEOGRAPH - 0x9658: 0x672E, //CJK UNIFIED IDEOGRAPH - 0x9659: 0x6730, //CJK UNIFIED IDEOGRAPH - 0x965A: 0x6732, //CJK UNIFIED IDEOGRAPH - 0x965B: 0x6733, //CJK UNIFIED IDEOGRAPH - 0x965C: 0x6736, //CJK UNIFIED IDEOGRAPH - 0x965D: 0x6737, //CJK UNIFIED IDEOGRAPH - 0x965E: 0x6738, //CJK UNIFIED IDEOGRAPH - 0x965F: 0x6739, //CJK UNIFIED IDEOGRAPH - 0x9660: 0x673B, //CJK UNIFIED IDEOGRAPH - 0x9661: 0x673C, //CJK UNIFIED IDEOGRAPH - 0x9662: 0x673E, //CJK UNIFIED IDEOGRAPH - 0x9663: 0x673F, //CJK UNIFIED IDEOGRAPH - 0x9664: 0x6741, //CJK UNIFIED IDEOGRAPH - 0x9665: 0x6744, //CJK UNIFIED IDEOGRAPH - 0x9666: 0x6745, //CJK UNIFIED IDEOGRAPH - 0x9667: 0x6747, //CJK UNIFIED IDEOGRAPH - 0x9668: 0x674A, //CJK UNIFIED IDEOGRAPH - 0x9669: 0x674B, //CJK UNIFIED IDEOGRAPH - 0x966A: 0x674D, //CJK UNIFIED IDEOGRAPH - 0x966B: 0x6752, //CJK UNIFIED IDEOGRAPH - 0x966C: 0x6754, //CJK UNIFIED IDEOGRAPH - 0x966D: 0x6755, //CJK UNIFIED IDEOGRAPH - 0x966E: 0x6757, //CJK UNIFIED IDEOGRAPH - 0x966F: 0x6758, //CJK UNIFIED IDEOGRAPH - 0x9670: 0x6759, //CJK UNIFIED IDEOGRAPH - 0x9671: 0x675A, //CJK UNIFIED IDEOGRAPH - 0x9672: 0x675B, //CJK UNIFIED IDEOGRAPH - 0x9673: 0x675D, //CJK UNIFIED IDEOGRAPH - 0x9674: 0x6762, //CJK UNIFIED IDEOGRAPH - 0x9675: 0x6763, //CJK UNIFIED IDEOGRAPH - 0x9676: 0x6764, //CJK UNIFIED IDEOGRAPH - 0x9677: 0x6766, //CJK UNIFIED IDEOGRAPH - 0x9678: 0x6767, //CJK UNIFIED IDEOGRAPH - 0x9679: 0x676B, //CJK UNIFIED IDEOGRAPH - 0x967A: 0x676C, //CJK UNIFIED IDEOGRAPH - 0x967B: 0x676E, //CJK UNIFIED IDEOGRAPH - 0x967C: 0x6771, //CJK UNIFIED IDEOGRAPH - 0x967D: 0x6774, //CJK UNIFIED IDEOGRAPH - 0x967E: 0x6776, //CJK UNIFIED IDEOGRAPH - 0x9680: 0x6778, //CJK UNIFIED IDEOGRAPH - 0x9681: 0x6779, //CJK UNIFIED IDEOGRAPH - 0x9682: 0x677A, //CJK UNIFIED IDEOGRAPH - 0x9683: 0x677B, //CJK UNIFIED IDEOGRAPH - 0x9684: 0x677D, //CJK UNIFIED IDEOGRAPH - 0x9685: 0x6780, //CJK UNIFIED IDEOGRAPH - 0x9686: 0x6782, //CJK UNIFIED IDEOGRAPH - 0x9687: 0x6783, //CJK UNIFIED IDEOGRAPH - 0x9688: 0x6785, //CJK UNIFIED IDEOGRAPH - 0x9689: 0x6786, //CJK UNIFIED IDEOGRAPH - 0x968A: 0x6788, //CJK UNIFIED IDEOGRAPH - 0x968B: 0x678A, //CJK UNIFIED IDEOGRAPH - 0x968C: 0x678C, //CJK UNIFIED IDEOGRAPH - 0x968D: 0x678D, //CJK UNIFIED IDEOGRAPH - 0x968E: 0x678E, //CJK UNIFIED IDEOGRAPH - 0x968F: 0x678F, //CJK UNIFIED IDEOGRAPH - 0x9690: 0x6791, //CJK UNIFIED IDEOGRAPH - 0x9691: 0x6792, //CJK UNIFIED IDEOGRAPH - 0x9692: 0x6793, //CJK UNIFIED IDEOGRAPH - 0x9693: 0x6794, //CJK UNIFIED IDEOGRAPH - 0x9694: 0x6796, //CJK UNIFIED IDEOGRAPH - 0x9695: 0x6799, //CJK UNIFIED IDEOGRAPH - 0x9696: 0x679B, //CJK UNIFIED IDEOGRAPH - 0x9697: 0x679F, //CJK UNIFIED IDEOGRAPH - 0x9698: 0x67A0, //CJK UNIFIED IDEOGRAPH - 0x9699: 0x67A1, //CJK UNIFIED IDEOGRAPH - 0x969A: 0x67A4, //CJK UNIFIED IDEOGRAPH - 0x969B: 0x67A6, //CJK UNIFIED IDEOGRAPH - 0x969C: 0x67A9, //CJK UNIFIED IDEOGRAPH - 0x969D: 0x67AC, //CJK UNIFIED IDEOGRAPH - 0x969E: 0x67AE, //CJK UNIFIED IDEOGRAPH - 0x969F: 0x67B1, //CJK UNIFIED IDEOGRAPH - 0x96A0: 0x67B2, //CJK UNIFIED IDEOGRAPH - 0x96A1: 0x67B4, //CJK UNIFIED IDEOGRAPH - 0x96A2: 0x67B9, //CJK UNIFIED IDEOGRAPH - 0x96A3: 0x67BA, //CJK UNIFIED IDEOGRAPH - 0x96A4: 0x67BB, //CJK UNIFIED IDEOGRAPH - 0x96A5: 0x67BC, //CJK UNIFIED IDEOGRAPH - 0x96A6: 0x67BD, //CJK UNIFIED IDEOGRAPH - 0x96A7: 0x67BE, //CJK UNIFIED IDEOGRAPH - 0x96A8: 0x67BF, //CJK UNIFIED IDEOGRAPH - 0x96A9: 0x67C0, //CJK UNIFIED IDEOGRAPH - 0x96AA: 0x67C2, //CJK UNIFIED IDEOGRAPH - 0x96AB: 0x67C5, //CJK UNIFIED IDEOGRAPH - 0x96AC: 0x67C6, //CJK UNIFIED IDEOGRAPH - 0x96AD: 0x67C7, //CJK UNIFIED IDEOGRAPH - 0x96AE: 0x67C8, //CJK UNIFIED IDEOGRAPH - 0x96AF: 0x67C9, //CJK UNIFIED IDEOGRAPH - 0x96B0: 0x67CA, //CJK UNIFIED IDEOGRAPH - 0x96B1: 0x67CB, //CJK UNIFIED IDEOGRAPH - 0x96B2: 0x67CC, //CJK UNIFIED IDEOGRAPH - 0x96B3: 0x67CD, //CJK UNIFIED IDEOGRAPH - 0x96B4: 0x67CE, //CJK UNIFIED IDEOGRAPH - 0x96B5: 0x67D5, //CJK UNIFIED IDEOGRAPH - 0x96B6: 0x67D6, //CJK UNIFIED IDEOGRAPH - 0x96B7: 0x67D7, //CJK UNIFIED IDEOGRAPH - 0x96B8: 0x67DB, //CJK UNIFIED IDEOGRAPH - 0x96B9: 0x67DF, //CJK UNIFIED IDEOGRAPH - 0x96BA: 0x67E1, //CJK UNIFIED IDEOGRAPH - 0x96BB: 0x67E3, //CJK UNIFIED IDEOGRAPH - 0x96BC: 0x67E4, //CJK UNIFIED IDEOGRAPH - 0x96BD: 0x67E6, //CJK UNIFIED IDEOGRAPH - 0x96BE: 0x67E7, //CJK UNIFIED IDEOGRAPH - 0x96BF: 0x67E8, //CJK UNIFIED IDEOGRAPH - 0x96C0: 0x67EA, //CJK UNIFIED IDEOGRAPH - 0x96C1: 0x67EB, //CJK UNIFIED IDEOGRAPH - 0x96C2: 0x67ED, //CJK UNIFIED IDEOGRAPH - 0x96C3: 0x67EE, //CJK UNIFIED IDEOGRAPH - 0x96C4: 0x67F2, //CJK UNIFIED IDEOGRAPH - 0x96C5: 0x67F5, //CJK UNIFIED IDEOGRAPH - 0x96C6: 0x67F6, //CJK UNIFIED IDEOGRAPH - 0x96C7: 0x67F7, //CJK UNIFIED IDEOGRAPH - 0x96C8: 0x67F8, //CJK UNIFIED IDEOGRAPH - 0x96C9: 0x67F9, //CJK UNIFIED IDEOGRAPH - 0x96CA: 0x67FA, //CJK UNIFIED IDEOGRAPH - 0x96CB: 0x67FB, //CJK UNIFIED IDEOGRAPH - 0x96CC: 0x67FC, //CJK UNIFIED IDEOGRAPH - 0x96CD: 0x67FE, //CJK UNIFIED IDEOGRAPH - 0x96CE: 0x6801, //CJK UNIFIED IDEOGRAPH - 0x96CF: 0x6802, //CJK UNIFIED IDEOGRAPH - 0x96D0: 0x6803, //CJK UNIFIED IDEOGRAPH - 0x96D1: 0x6804, //CJK UNIFIED IDEOGRAPH - 0x96D2: 0x6806, //CJK UNIFIED IDEOGRAPH - 0x96D3: 0x680D, //CJK UNIFIED IDEOGRAPH - 0x96D4: 0x6810, //CJK UNIFIED IDEOGRAPH - 0x96D5: 0x6812, //CJK UNIFIED IDEOGRAPH - 0x96D6: 0x6814, //CJK UNIFIED IDEOGRAPH - 0x96D7: 0x6815, //CJK UNIFIED IDEOGRAPH - 0x96D8: 0x6818, //CJK UNIFIED IDEOGRAPH - 0x96D9: 0x6819, //CJK UNIFIED IDEOGRAPH - 0x96DA: 0x681A, //CJK UNIFIED IDEOGRAPH - 0x96DB: 0x681B, //CJK UNIFIED IDEOGRAPH - 0x96DC: 0x681C, //CJK UNIFIED IDEOGRAPH - 0x96DD: 0x681E, //CJK UNIFIED IDEOGRAPH - 0x96DE: 0x681F, //CJK UNIFIED IDEOGRAPH - 0x96DF: 0x6820, //CJK UNIFIED IDEOGRAPH - 0x96E0: 0x6822, //CJK UNIFIED IDEOGRAPH - 0x96E1: 0x6823, //CJK UNIFIED IDEOGRAPH - 0x96E2: 0x6824, //CJK UNIFIED IDEOGRAPH - 0x96E3: 0x6825, //CJK UNIFIED IDEOGRAPH - 0x96E4: 0x6826, //CJK UNIFIED IDEOGRAPH - 0x96E5: 0x6827, //CJK UNIFIED IDEOGRAPH - 0x96E6: 0x6828, //CJK UNIFIED IDEOGRAPH - 0x96E7: 0x682B, //CJK UNIFIED IDEOGRAPH - 0x96E8: 0x682C, //CJK UNIFIED IDEOGRAPH - 0x96E9: 0x682D, //CJK UNIFIED IDEOGRAPH - 0x96EA: 0x682E, //CJK UNIFIED IDEOGRAPH - 0x96EB: 0x682F, //CJK UNIFIED IDEOGRAPH - 0x96EC: 0x6830, //CJK UNIFIED IDEOGRAPH - 0x96ED: 0x6831, //CJK UNIFIED IDEOGRAPH - 0x96EE: 0x6834, //CJK UNIFIED IDEOGRAPH - 0x96EF: 0x6835, //CJK UNIFIED IDEOGRAPH - 0x96F0: 0x6836, //CJK UNIFIED IDEOGRAPH - 0x96F1: 0x683A, //CJK UNIFIED IDEOGRAPH - 0x96F2: 0x683B, //CJK UNIFIED IDEOGRAPH - 0x96F3: 0x683F, //CJK UNIFIED IDEOGRAPH - 0x96F4: 0x6847, //CJK UNIFIED IDEOGRAPH - 0x96F5: 0x684B, //CJK UNIFIED IDEOGRAPH - 0x96F6: 0x684D, //CJK UNIFIED IDEOGRAPH - 0x96F7: 0x684F, //CJK UNIFIED IDEOGRAPH - 0x96F8: 0x6852, //CJK UNIFIED IDEOGRAPH - 0x96F9: 0x6856, //CJK UNIFIED IDEOGRAPH - 0x96FA: 0x6857, //CJK UNIFIED IDEOGRAPH - 0x96FB: 0x6858, //CJK UNIFIED IDEOGRAPH - 0x96FC: 0x6859, //CJK UNIFIED IDEOGRAPH - 0x96FD: 0x685A, //CJK UNIFIED IDEOGRAPH - 0x96FE: 0x685B, //CJK UNIFIED IDEOGRAPH - 0x9740: 0x685C, //CJK UNIFIED IDEOGRAPH - 0x9741: 0x685D, //CJK UNIFIED IDEOGRAPH - 0x9742: 0x685E, //CJK UNIFIED IDEOGRAPH - 0x9743: 0x685F, //CJK UNIFIED IDEOGRAPH - 0x9744: 0x686A, //CJK UNIFIED IDEOGRAPH - 0x9745: 0x686C, //CJK UNIFIED IDEOGRAPH - 0x9746: 0x686D, //CJK UNIFIED IDEOGRAPH - 0x9747: 0x686E, //CJK UNIFIED IDEOGRAPH - 0x9748: 0x686F, //CJK UNIFIED IDEOGRAPH - 0x9749: 0x6870, //CJK UNIFIED IDEOGRAPH - 0x974A: 0x6871, //CJK UNIFIED IDEOGRAPH - 0x974B: 0x6872, //CJK UNIFIED IDEOGRAPH - 0x974C: 0x6873, //CJK UNIFIED IDEOGRAPH - 0x974D: 0x6875, //CJK UNIFIED IDEOGRAPH - 0x974E: 0x6878, //CJK UNIFIED IDEOGRAPH - 0x974F: 0x6879, //CJK UNIFIED IDEOGRAPH - 0x9750: 0x687A, //CJK UNIFIED IDEOGRAPH - 0x9751: 0x687B, //CJK UNIFIED IDEOGRAPH - 0x9752: 0x687C, //CJK UNIFIED IDEOGRAPH - 0x9753: 0x687D, //CJK UNIFIED IDEOGRAPH - 0x9754: 0x687E, //CJK UNIFIED IDEOGRAPH - 0x9755: 0x687F, //CJK UNIFIED IDEOGRAPH - 0x9756: 0x6880, //CJK UNIFIED IDEOGRAPH - 0x9757: 0x6882, //CJK UNIFIED IDEOGRAPH - 0x9758: 0x6884, //CJK UNIFIED IDEOGRAPH - 0x9759: 0x6887, //CJK UNIFIED IDEOGRAPH - 0x975A: 0x6888, //CJK UNIFIED IDEOGRAPH - 0x975B: 0x6889, //CJK UNIFIED IDEOGRAPH - 0x975C: 0x688A, //CJK UNIFIED IDEOGRAPH - 0x975D: 0x688B, //CJK UNIFIED IDEOGRAPH - 0x975E: 0x688C, //CJK UNIFIED IDEOGRAPH - 0x975F: 0x688D, //CJK UNIFIED IDEOGRAPH - 0x9760: 0x688E, //CJK UNIFIED IDEOGRAPH - 0x9761: 0x6890, //CJK UNIFIED IDEOGRAPH - 0x9762: 0x6891, //CJK UNIFIED IDEOGRAPH - 0x9763: 0x6892, //CJK UNIFIED IDEOGRAPH - 0x9764: 0x6894, //CJK UNIFIED IDEOGRAPH - 0x9765: 0x6895, //CJK UNIFIED IDEOGRAPH - 0x9766: 0x6896, //CJK UNIFIED IDEOGRAPH - 0x9767: 0x6898, //CJK UNIFIED IDEOGRAPH - 0x9768: 0x6899, //CJK UNIFIED IDEOGRAPH - 0x9769: 0x689A, //CJK UNIFIED IDEOGRAPH - 0x976A: 0x689B, //CJK UNIFIED IDEOGRAPH - 0x976B: 0x689C, //CJK UNIFIED IDEOGRAPH - 0x976C: 0x689D, //CJK UNIFIED IDEOGRAPH - 0x976D: 0x689E, //CJK UNIFIED IDEOGRAPH - 0x976E: 0x689F, //CJK UNIFIED IDEOGRAPH - 0x976F: 0x68A0, //CJK UNIFIED IDEOGRAPH - 0x9770: 0x68A1, //CJK UNIFIED IDEOGRAPH - 0x9771: 0x68A3, //CJK UNIFIED IDEOGRAPH - 0x9772: 0x68A4, //CJK UNIFIED IDEOGRAPH - 0x9773: 0x68A5, //CJK UNIFIED IDEOGRAPH - 0x9774: 0x68A9, //CJK UNIFIED IDEOGRAPH - 0x9775: 0x68AA, //CJK UNIFIED IDEOGRAPH - 0x9776: 0x68AB, //CJK UNIFIED IDEOGRAPH - 0x9777: 0x68AC, //CJK UNIFIED IDEOGRAPH - 0x9778: 0x68AE, //CJK UNIFIED IDEOGRAPH - 0x9779: 0x68B1, //CJK UNIFIED IDEOGRAPH - 0x977A: 0x68B2, //CJK UNIFIED IDEOGRAPH - 0x977B: 0x68B4, //CJK UNIFIED IDEOGRAPH - 0x977C: 0x68B6, //CJK UNIFIED IDEOGRAPH - 0x977D: 0x68B7, //CJK UNIFIED IDEOGRAPH - 0x977E: 0x68B8, //CJK UNIFIED IDEOGRAPH - 0x9780: 0x68B9, //CJK UNIFIED IDEOGRAPH - 0x9781: 0x68BA, //CJK UNIFIED IDEOGRAPH - 0x9782: 0x68BB, //CJK UNIFIED IDEOGRAPH - 0x9783: 0x68BC, //CJK UNIFIED IDEOGRAPH - 0x9784: 0x68BD, //CJK UNIFIED IDEOGRAPH - 0x9785: 0x68BE, //CJK UNIFIED IDEOGRAPH - 0x9786: 0x68BF, //CJK UNIFIED IDEOGRAPH - 0x9787: 0x68C1, //CJK UNIFIED IDEOGRAPH - 0x9788: 0x68C3, //CJK UNIFIED IDEOGRAPH - 0x9789: 0x68C4, //CJK UNIFIED IDEOGRAPH - 0x978A: 0x68C5, //CJK UNIFIED IDEOGRAPH - 0x978B: 0x68C6, //CJK UNIFIED IDEOGRAPH - 0x978C: 0x68C7, //CJK UNIFIED IDEOGRAPH - 0x978D: 0x68C8, //CJK UNIFIED IDEOGRAPH - 0x978E: 0x68CA, //CJK UNIFIED IDEOGRAPH - 0x978F: 0x68CC, //CJK UNIFIED IDEOGRAPH - 0x9790: 0x68CE, //CJK UNIFIED IDEOGRAPH - 0x9791: 0x68CF, //CJK UNIFIED IDEOGRAPH - 0x9792: 0x68D0, //CJK UNIFIED IDEOGRAPH - 0x9793: 0x68D1, //CJK UNIFIED IDEOGRAPH - 0x9794: 0x68D3, //CJK UNIFIED IDEOGRAPH - 0x9795: 0x68D4, //CJK UNIFIED IDEOGRAPH - 0x9796: 0x68D6, //CJK UNIFIED IDEOGRAPH - 0x9797: 0x68D7, //CJK UNIFIED IDEOGRAPH - 0x9798: 0x68D9, //CJK UNIFIED IDEOGRAPH - 0x9799: 0x68DB, //CJK UNIFIED IDEOGRAPH - 0x979A: 0x68DC, //CJK UNIFIED IDEOGRAPH - 0x979B: 0x68DD, //CJK UNIFIED IDEOGRAPH - 0x979C: 0x68DE, //CJK UNIFIED IDEOGRAPH - 0x979D: 0x68DF, //CJK UNIFIED IDEOGRAPH - 0x979E: 0x68E1, //CJK UNIFIED IDEOGRAPH - 0x979F: 0x68E2, //CJK UNIFIED IDEOGRAPH - 0x97A0: 0x68E4, //CJK UNIFIED IDEOGRAPH - 0x97A1: 0x68E5, //CJK UNIFIED IDEOGRAPH - 0x97A2: 0x68E6, //CJK UNIFIED IDEOGRAPH - 0x97A3: 0x68E7, //CJK UNIFIED IDEOGRAPH - 0x97A4: 0x68E8, //CJK UNIFIED IDEOGRAPH - 0x97A5: 0x68E9, //CJK UNIFIED IDEOGRAPH - 0x97A6: 0x68EA, //CJK UNIFIED IDEOGRAPH - 0x97A7: 0x68EB, //CJK UNIFIED IDEOGRAPH - 0x97A8: 0x68EC, //CJK UNIFIED IDEOGRAPH - 0x97A9: 0x68ED, //CJK UNIFIED IDEOGRAPH - 0x97AA: 0x68EF, //CJK UNIFIED IDEOGRAPH - 0x97AB: 0x68F2, //CJK UNIFIED IDEOGRAPH - 0x97AC: 0x68F3, //CJK UNIFIED IDEOGRAPH - 0x97AD: 0x68F4, //CJK UNIFIED IDEOGRAPH - 0x97AE: 0x68F6, //CJK UNIFIED IDEOGRAPH - 0x97AF: 0x68F7, //CJK UNIFIED IDEOGRAPH - 0x97B0: 0x68F8, //CJK UNIFIED IDEOGRAPH - 0x97B1: 0x68FB, //CJK UNIFIED IDEOGRAPH - 0x97B2: 0x68FD, //CJK UNIFIED IDEOGRAPH - 0x97B3: 0x68FE, //CJK UNIFIED IDEOGRAPH - 0x97B4: 0x68FF, //CJK UNIFIED IDEOGRAPH - 0x97B5: 0x6900, //CJK UNIFIED IDEOGRAPH - 0x97B6: 0x6902, //CJK UNIFIED IDEOGRAPH - 0x97B7: 0x6903, //CJK UNIFIED IDEOGRAPH - 0x97B8: 0x6904, //CJK UNIFIED IDEOGRAPH - 0x97B9: 0x6906, //CJK UNIFIED IDEOGRAPH - 0x97BA: 0x6907, //CJK UNIFIED IDEOGRAPH - 0x97BB: 0x6908, //CJK UNIFIED IDEOGRAPH - 0x97BC: 0x6909, //CJK UNIFIED IDEOGRAPH - 0x97BD: 0x690A, //CJK UNIFIED IDEOGRAPH - 0x97BE: 0x690C, //CJK UNIFIED IDEOGRAPH - 0x97BF: 0x690F, //CJK UNIFIED IDEOGRAPH - 0x97C0: 0x6911, //CJK UNIFIED IDEOGRAPH - 0x97C1: 0x6913, //CJK UNIFIED IDEOGRAPH - 0x97C2: 0x6914, //CJK UNIFIED IDEOGRAPH - 0x97C3: 0x6915, //CJK UNIFIED IDEOGRAPH - 0x97C4: 0x6916, //CJK UNIFIED IDEOGRAPH - 0x97C5: 0x6917, //CJK UNIFIED IDEOGRAPH - 0x97C6: 0x6918, //CJK UNIFIED IDEOGRAPH - 0x97C7: 0x6919, //CJK UNIFIED IDEOGRAPH - 0x97C8: 0x691A, //CJK UNIFIED IDEOGRAPH - 0x97C9: 0x691B, //CJK UNIFIED IDEOGRAPH - 0x97CA: 0x691C, //CJK UNIFIED IDEOGRAPH - 0x97CB: 0x691D, //CJK UNIFIED IDEOGRAPH - 0x97CC: 0x691E, //CJK UNIFIED IDEOGRAPH - 0x97CD: 0x6921, //CJK UNIFIED IDEOGRAPH - 0x97CE: 0x6922, //CJK UNIFIED IDEOGRAPH - 0x97CF: 0x6923, //CJK UNIFIED IDEOGRAPH - 0x97D0: 0x6925, //CJK UNIFIED IDEOGRAPH - 0x97D1: 0x6926, //CJK UNIFIED IDEOGRAPH - 0x97D2: 0x6927, //CJK UNIFIED IDEOGRAPH - 0x97D3: 0x6928, //CJK UNIFIED IDEOGRAPH - 0x97D4: 0x6929, //CJK UNIFIED IDEOGRAPH - 0x97D5: 0x692A, //CJK UNIFIED IDEOGRAPH - 0x97D6: 0x692B, //CJK UNIFIED IDEOGRAPH - 0x97D7: 0x692C, //CJK UNIFIED IDEOGRAPH - 0x97D8: 0x692E, //CJK UNIFIED IDEOGRAPH - 0x97D9: 0x692F, //CJK UNIFIED IDEOGRAPH - 0x97DA: 0x6931, //CJK UNIFIED IDEOGRAPH - 0x97DB: 0x6932, //CJK UNIFIED IDEOGRAPH - 0x97DC: 0x6933, //CJK UNIFIED IDEOGRAPH - 0x97DD: 0x6935, //CJK UNIFIED IDEOGRAPH - 0x97DE: 0x6936, //CJK UNIFIED IDEOGRAPH - 0x97DF: 0x6937, //CJK UNIFIED IDEOGRAPH - 0x97E0: 0x6938, //CJK UNIFIED IDEOGRAPH - 0x97E1: 0x693A, //CJK UNIFIED IDEOGRAPH - 0x97E2: 0x693B, //CJK UNIFIED IDEOGRAPH - 0x97E3: 0x693C, //CJK UNIFIED IDEOGRAPH - 0x97E4: 0x693E, //CJK UNIFIED IDEOGRAPH - 0x97E5: 0x6940, //CJK UNIFIED IDEOGRAPH - 0x97E6: 0x6941, //CJK UNIFIED IDEOGRAPH - 0x97E7: 0x6943, //CJK UNIFIED IDEOGRAPH - 0x97E8: 0x6944, //CJK UNIFIED IDEOGRAPH - 0x97E9: 0x6945, //CJK UNIFIED IDEOGRAPH - 0x97EA: 0x6946, //CJK UNIFIED IDEOGRAPH - 0x97EB: 0x6947, //CJK UNIFIED IDEOGRAPH - 0x97EC: 0x6948, //CJK UNIFIED IDEOGRAPH - 0x97ED: 0x6949, //CJK UNIFIED IDEOGRAPH - 0x97EE: 0x694A, //CJK UNIFIED IDEOGRAPH - 0x97EF: 0x694B, //CJK UNIFIED IDEOGRAPH - 0x97F0: 0x694C, //CJK UNIFIED IDEOGRAPH - 0x97F1: 0x694D, //CJK UNIFIED IDEOGRAPH - 0x97F2: 0x694E, //CJK UNIFIED IDEOGRAPH - 0x97F3: 0x694F, //CJK UNIFIED IDEOGRAPH - 0x97F4: 0x6950, //CJK UNIFIED IDEOGRAPH - 0x97F5: 0x6951, //CJK UNIFIED IDEOGRAPH - 0x97F6: 0x6952, //CJK UNIFIED IDEOGRAPH - 0x97F7: 0x6953, //CJK UNIFIED IDEOGRAPH - 0x97F8: 0x6955, //CJK UNIFIED IDEOGRAPH - 0x97F9: 0x6956, //CJK UNIFIED IDEOGRAPH - 0x97FA: 0x6958, //CJK UNIFIED IDEOGRAPH - 0x97FB: 0x6959, //CJK UNIFIED IDEOGRAPH - 0x97FC: 0x695B, //CJK UNIFIED IDEOGRAPH - 0x97FD: 0x695C, //CJK UNIFIED IDEOGRAPH - 0x97FE: 0x695F, //CJK UNIFIED IDEOGRAPH - 0x9840: 0x6961, //CJK UNIFIED IDEOGRAPH - 0x9841: 0x6962, //CJK UNIFIED IDEOGRAPH - 0x9842: 0x6964, //CJK UNIFIED IDEOGRAPH - 0x9843: 0x6965, //CJK UNIFIED IDEOGRAPH - 0x9844: 0x6967, //CJK UNIFIED IDEOGRAPH - 0x9845: 0x6968, //CJK UNIFIED IDEOGRAPH - 0x9846: 0x6969, //CJK UNIFIED IDEOGRAPH - 0x9847: 0x696A, //CJK UNIFIED IDEOGRAPH - 0x9848: 0x696C, //CJK UNIFIED IDEOGRAPH - 0x9849: 0x696D, //CJK UNIFIED IDEOGRAPH - 0x984A: 0x696F, //CJK UNIFIED IDEOGRAPH - 0x984B: 0x6970, //CJK UNIFIED IDEOGRAPH - 0x984C: 0x6972, //CJK UNIFIED IDEOGRAPH - 0x984D: 0x6973, //CJK UNIFIED IDEOGRAPH - 0x984E: 0x6974, //CJK UNIFIED IDEOGRAPH - 0x984F: 0x6975, //CJK UNIFIED IDEOGRAPH - 0x9850: 0x6976, //CJK UNIFIED IDEOGRAPH - 0x9851: 0x697A, //CJK UNIFIED IDEOGRAPH - 0x9852: 0x697B, //CJK UNIFIED IDEOGRAPH - 0x9853: 0x697D, //CJK UNIFIED IDEOGRAPH - 0x9854: 0x697E, //CJK UNIFIED IDEOGRAPH - 0x9855: 0x697F, //CJK UNIFIED IDEOGRAPH - 0x9856: 0x6981, //CJK UNIFIED IDEOGRAPH - 0x9857: 0x6983, //CJK UNIFIED IDEOGRAPH - 0x9858: 0x6985, //CJK UNIFIED IDEOGRAPH - 0x9859: 0x698A, //CJK UNIFIED IDEOGRAPH - 0x985A: 0x698B, //CJK UNIFIED IDEOGRAPH - 0x985B: 0x698C, //CJK UNIFIED IDEOGRAPH - 0x985C: 0x698E, //CJK UNIFIED IDEOGRAPH - 0x985D: 0x698F, //CJK UNIFIED IDEOGRAPH - 0x985E: 0x6990, //CJK UNIFIED IDEOGRAPH - 0x985F: 0x6991, //CJK UNIFIED IDEOGRAPH - 0x9860: 0x6992, //CJK UNIFIED IDEOGRAPH - 0x9861: 0x6993, //CJK UNIFIED IDEOGRAPH - 0x9862: 0x6996, //CJK UNIFIED IDEOGRAPH - 0x9863: 0x6997, //CJK UNIFIED IDEOGRAPH - 0x9864: 0x6999, //CJK UNIFIED IDEOGRAPH - 0x9865: 0x699A, //CJK UNIFIED IDEOGRAPH - 0x9866: 0x699D, //CJK UNIFIED IDEOGRAPH - 0x9867: 0x699E, //CJK UNIFIED IDEOGRAPH - 0x9868: 0x699F, //CJK UNIFIED IDEOGRAPH - 0x9869: 0x69A0, //CJK UNIFIED IDEOGRAPH - 0x986A: 0x69A1, //CJK UNIFIED IDEOGRAPH - 0x986B: 0x69A2, //CJK UNIFIED IDEOGRAPH - 0x986C: 0x69A3, //CJK UNIFIED IDEOGRAPH - 0x986D: 0x69A4, //CJK UNIFIED IDEOGRAPH - 0x986E: 0x69A5, //CJK UNIFIED IDEOGRAPH - 0x986F: 0x69A6, //CJK UNIFIED IDEOGRAPH - 0x9870: 0x69A9, //CJK UNIFIED IDEOGRAPH - 0x9871: 0x69AA, //CJK UNIFIED IDEOGRAPH - 0x9872: 0x69AC, //CJK UNIFIED IDEOGRAPH - 0x9873: 0x69AE, //CJK UNIFIED IDEOGRAPH - 0x9874: 0x69AF, //CJK UNIFIED IDEOGRAPH - 0x9875: 0x69B0, //CJK UNIFIED IDEOGRAPH - 0x9876: 0x69B2, //CJK UNIFIED IDEOGRAPH - 0x9877: 0x69B3, //CJK UNIFIED IDEOGRAPH - 0x9878: 0x69B5, //CJK UNIFIED IDEOGRAPH - 0x9879: 0x69B6, //CJK UNIFIED IDEOGRAPH - 0x987A: 0x69B8, //CJK UNIFIED IDEOGRAPH - 0x987B: 0x69B9, //CJK UNIFIED IDEOGRAPH - 0x987C: 0x69BA, //CJK UNIFIED IDEOGRAPH - 0x987D: 0x69BC, //CJK UNIFIED IDEOGRAPH - 0x987E: 0x69BD, //CJK UNIFIED IDEOGRAPH - 0x9880: 0x69BE, //CJK UNIFIED IDEOGRAPH - 0x9881: 0x69BF, //CJK UNIFIED IDEOGRAPH - 0x9882: 0x69C0, //CJK UNIFIED IDEOGRAPH - 0x9883: 0x69C2, //CJK UNIFIED IDEOGRAPH - 0x9884: 0x69C3, //CJK UNIFIED IDEOGRAPH - 0x9885: 0x69C4, //CJK UNIFIED IDEOGRAPH - 0x9886: 0x69C5, //CJK UNIFIED IDEOGRAPH - 0x9887: 0x69C6, //CJK UNIFIED IDEOGRAPH - 0x9888: 0x69C7, //CJK UNIFIED IDEOGRAPH - 0x9889: 0x69C8, //CJK UNIFIED IDEOGRAPH - 0x988A: 0x69C9, //CJK UNIFIED IDEOGRAPH - 0x988B: 0x69CB, //CJK UNIFIED IDEOGRAPH - 0x988C: 0x69CD, //CJK UNIFIED IDEOGRAPH - 0x988D: 0x69CF, //CJK UNIFIED IDEOGRAPH - 0x988E: 0x69D1, //CJK UNIFIED IDEOGRAPH - 0x988F: 0x69D2, //CJK UNIFIED IDEOGRAPH - 0x9890: 0x69D3, //CJK UNIFIED IDEOGRAPH - 0x9891: 0x69D5, //CJK UNIFIED IDEOGRAPH - 0x9892: 0x69D6, //CJK UNIFIED IDEOGRAPH - 0x9893: 0x69D7, //CJK UNIFIED IDEOGRAPH - 0x9894: 0x69D8, //CJK UNIFIED IDEOGRAPH - 0x9895: 0x69D9, //CJK UNIFIED IDEOGRAPH - 0x9896: 0x69DA, //CJK UNIFIED IDEOGRAPH - 0x9897: 0x69DC, //CJK UNIFIED IDEOGRAPH - 0x9898: 0x69DD, //CJK UNIFIED IDEOGRAPH - 0x9899: 0x69DE, //CJK UNIFIED IDEOGRAPH - 0x989A: 0x69E1, //CJK UNIFIED IDEOGRAPH - 0x989B: 0x69E2, //CJK UNIFIED IDEOGRAPH - 0x989C: 0x69E3, //CJK UNIFIED IDEOGRAPH - 0x989D: 0x69E4, //CJK UNIFIED IDEOGRAPH - 0x989E: 0x69E5, //CJK UNIFIED IDEOGRAPH - 0x989F: 0x69E6, //CJK UNIFIED IDEOGRAPH - 0x98A0: 0x69E7, //CJK UNIFIED IDEOGRAPH - 0x98A1: 0x69E8, //CJK UNIFIED IDEOGRAPH - 0x98A2: 0x69E9, //CJK UNIFIED IDEOGRAPH - 0x98A3: 0x69EA, //CJK UNIFIED IDEOGRAPH - 0x98A4: 0x69EB, //CJK UNIFIED IDEOGRAPH - 0x98A5: 0x69EC, //CJK UNIFIED IDEOGRAPH - 0x98A6: 0x69EE, //CJK UNIFIED IDEOGRAPH - 0x98A7: 0x69EF, //CJK UNIFIED IDEOGRAPH - 0x98A8: 0x69F0, //CJK UNIFIED IDEOGRAPH - 0x98A9: 0x69F1, //CJK UNIFIED IDEOGRAPH - 0x98AA: 0x69F3, //CJK UNIFIED IDEOGRAPH - 0x98AB: 0x69F4, //CJK UNIFIED IDEOGRAPH - 0x98AC: 0x69F5, //CJK UNIFIED IDEOGRAPH - 0x98AD: 0x69F6, //CJK UNIFIED IDEOGRAPH - 0x98AE: 0x69F7, //CJK UNIFIED IDEOGRAPH - 0x98AF: 0x69F8, //CJK UNIFIED IDEOGRAPH - 0x98B0: 0x69F9, //CJK UNIFIED IDEOGRAPH - 0x98B1: 0x69FA, //CJK UNIFIED IDEOGRAPH - 0x98B2: 0x69FB, //CJK UNIFIED IDEOGRAPH - 0x98B3: 0x69FC, //CJK UNIFIED IDEOGRAPH - 0x98B4: 0x69FE, //CJK UNIFIED IDEOGRAPH - 0x98B5: 0x6A00, //CJK UNIFIED IDEOGRAPH - 0x98B6: 0x6A01, //CJK UNIFIED IDEOGRAPH - 0x98B7: 0x6A02, //CJK UNIFIED IDEOGRAPH - 0x98B8: 0x6A03, //CJK UNIFIED IDEOGRAPH - 0x98B9: 0x6A04, //CJK UNIFIED IDEOGRAPH - 0x98BA: 0x6A05, //CJK UNIFIED IDEOGRAPH - 0x98BB: 0x6A06, //CJK UNIFIED IDEOGRAPH - 0x98BC: 0x6A07, //CJK UNIFIED IDEOGRAPH - 0x98BD: 0x6A08, //CJK UNIFIED IDEOGRAPH - 0x98BE: 0x6A09, //CJK UNIFIED IDEOGRAPH - 0x98BF: 0x6A0B, //CJK UNIFIED IDEOGRAPH - 0x98C0: 0x6A0C, //CJK UNIFIED IDEOGRAPH - 0x98C1: 0x6A0D, //CJK UNIFIED IDEOGRAPH - 0x98C2: 0x6A0E, //CJK UNIFIED IDEOGRAPH - 0x98C3: 0x6A0F, //CJK UNIFIED IDEOGRAPH - 0x98C4: 0x6A10, //CJK UNIFIED IDEOGRAPH - 0x98C5: 0x6A11, //CJK UNIFIED IDEOGRAPH - 0x98C6: 0x6A12, //CJK UNIFIED IDEOGRAPH - 0x98C7: 0x6A13, //CJK UNIFIED IDEOGRAPH - 0x98C8: 0x6A14, //CJK UNIFIED IDEOGRAPH - 0x98C9: 0x6A15, //CJK UNIFIED IDEOGRAPH - 0x98CA: 0x6A16, //CJK UNIFIED IDEOGRAPH - 0x98CB: 0x6A19, //CJK UNIFIED IDEOGRAPH - 0x98CC: 0x6A1A, //CJK UNIFIED IDEOGRAPH - 0x98CD: 0x6A1B, //CJK UNIFIED IDEOGRAPH - 0x98CE: 0x6A1C, //CJK UNIFIED IDEOGRAPH - 0x98CF: 0x6A1D, //CJK UNIFIED IDEOGRAPH - 0x98D0: 0x6A1E, //CJK UNIFIED IDEOGRAPH - 0x98D1: 0x6A20, //CJK UNIFIED IDEOGRAPH - 0x98D2: 0x6A22, //CJK UNIFIED IDEOGRAPH - 0x98D3: 0x6A23, //CJK UNIFIED IDEOGRAPH - 0x98D4: 0x6A24, //CJK UNIFIED IDEOGRAPH - 0x98D5: 0x6A25, //CJK UNIFIED IDEOGRAPH - 0x98D6: 0x6A26, //CJK UNIFIED IDEOGRAPH - 0x98D7: 0x6A27, //CJK UNIFIED IDEOGRAPH - 0x98D8: 0x6A29, //CJK UNIFIED IDEOGRAPH - 0x98D9: 0x6A2B, //CJK UNIFIED IDEOGRAPH - 0x98DA: 0x6A2C, //CJK UNIFIED IDEOGRAPH - 0x98DB: 0x6A2D, //CJK UNIFIED IDEOGRAPH - 0x98DC: 0x6A2E, //CJK UNIFIED IDEOGRAPH - 0x98DD: 0x6A30, //CJK UNIFIED IDEOGRAPH - 0x98DE: 0x6A32, //CJK UNIFIED IDEOGRAPH - 0x98DF: 0x6A33, //CJK UNIFIED IDEOGRAPH - 0x98E0: 0x6A34, //CJK UNIFIED IDEOGRAPH - 0x98E1: 0x6A36, //CJK UNIFIED IDEOGRAPH - 0x98E2: 0x6A37, //CJK UNIFIED IDEOGRAPH - 0x98E3: 0x6A38, //CJK UNIFIED IDEOGRAPH - 0x98E4: 0x6A39, //CJK UNIFIED IDEOGRAPH - 0x98E5: 0x6A3A, //CJK UNIFIED IDEOGRAPH - 0x98E6: 0x6A3B, //CJK UNIFIED IDEOGRAPH - 0x98E7: 0x6A3C, //CJK UNIFIED IDEOGRAPH - 0x98E8: 0x6A3F, //CJK UNIFIED IDEOGRAPH - 0x98E9: 0x6A40, //CJK UNIFIED IDEOGRAPH - 0x98EA: 0x6A41, //CJK UNIFIED IDEOGRAPH - 0x98EB: 0x6A42, //CJK UNIFIED IDEOGRAPH - 0x98EC: 0x6A43, //CJK UNIFIED IDEOGRAPH - 0x98ED: 0x6A45, //CJK UNIFIED IDEOGRAPH - 0x98EE: 0x6A46, //CJK UNIFIED IDEOGRAPH - 0x98EF: 0x6A48, //CJK UNIFIED IDEOGRAPH - 0x98F0: 0x6A49, //CJK UNIFIED IDEOGRAPH - 0x98F1: 0x6A4A, //CJK UNIFIED IDEOGRAPH - 0x98F2: 0x6A4B, //CJK UNIFIED IDEOGRAPH - 0x98F3: 0x6A4C, //CJK UNIFIED IDEOGRAPH - 0x98F4: 0x6A4D, //CJK UNIFIED IDEOGRAPH - 0x98F5: 0x6A4E, //CJK UNIFIED IDEOGRAPH - 0x98F6: 0x6A4F, //CJK UNIFIED IDEOGRAPH - 0x98F7: 0x6A51, //CJK UNIFIED IDEOGRAPH - 0x98F8: 0x6A52, //CJK UNIFIED IDEOGRAPH - 0x98F9: 0x6A53, //CJK UNIFIED IDEOGRAPH - 0x98FA: 0x6A54, //CJK UNIFIED IDEOGRAPH - 0x98FB: 0x6A55, //CJK UNIFIED IDEOGRAPH - 0x98FC: 0x6A56, //CJK UNIFIED IDEOGRAPH - 0x98FD: 0x6A57, //CJK UNIFIED IDEOGRAPH - 0x98FE: 0x6A5A, //CJK UNIFIED IDEOGRAPH - 0x9940: 0x6A5C, //CJK UNIFIED IDEOGRAPH - 0x9941: 0x6A5D, //CJK UNIFIED IDEOGRAPH - 0x9942: 0x6A5E, //CJK UNIFIED IDEOGRAPH - 0x9943: 0x6A5F, //CJK UNIFIED IDEOGRAPH - 0x9944: 0x6A60, //CJK UNIFIED IDEOGRAPH - 0x9945: 0x6A62, //CJK UNIFIED IDEOGRAPH - 0x9946: 0x6A63, //CJK UNIFIED IDEOGRAPH - 0x9947: 0x6A64, //CJK UNIFIED IDEOGRAPH - 0x9948: 0x6A66, //CJK UNIFIED IDEOGRAPH - 0x9949: 0x6A67, //CJK UNIFIED IDEOGRAPH - 0x994A: 0x6A68, //CJK UNIFIED IDEOGRAPH - 0x994B: 0x6A69, //CJK UNIFIED IDEOGRAPH - 0x994C: 0x6A6A, //CJK UNIFIED IDEOGRAPH - 0x994D: 0x6A6B, //CJK UNIFIED IDEOGRAPH - 0x994E: 0x6A6C, //CJK UNIFIED IDEOGRAPH - 0x994F: 0x6A6D, //CJK UNIFIED IDEOGRAPH - 0x9950: 0x6A6E, //CJK UNIFIED IDEOGRAPH - 0x9951: 0x6A6F, //CJK UNIFIED IDEOGRAPH - 0x9952: 0x6A70, //CJK UNIFIED IDEOGRAPH - 0x9953: 0x6A72, //CJK UNIFIED IDEOGRAPH - 0x9954: 0x6A73, //CJK UNIFIED IDEOGRAPH - 0x9955: 0x6A74, //CJK UNIFIED IDEOGRAPH - 0x9956: 0x6A75, //CJK UNIFIED IDEOGRAPH - 0x9957: 0x6A76, //CJK UNIFIED IDEOGRAPH - 0x9958: 0x6A77, //CJK UNIFIED IDEOGRAPH - 0x9959: 0x6A78, //CJK UNIFIED IDEOGRAPH - 0x995A: 0x6A7A, //CJK UNIFIED IDEOGRAPH - 0x995B: 0x6A7B, //CJK UNIFIED IDEOGRAPH - 0x995C: 0x6A7D, //CJK UNIFIED IDEOGRAPH - 0x995D: 0x6A7E, //CJK UNIFIED IDEOGRAPH - 0x995E: 0x6A7F, //CJK UNIFIED IDEOGRAPH - 0x995F: 0x6A81, //CJK UNIFIED IDEOGRAPH - 0x9960: 0x6A82, //CJK UNIFIED IDEOGRAPH - 0x9961: 0x6A83, //CJK UNIFIED IDEOGRAPH - 0x9962: 0x6A85, //CJK UNIFIED IDEOGRAPH - 0x9963: 0x6A86, //CJK UNIFIED IDEOGRAPH - 0x9964: 0x6A87, //CJK UNIFIED IDEOGRAPH - 0x9965: 0x6A88, //CJK UNIFIED IDEOGRAPH - 0x9966: 0x6A89, //CJK UNIFIED IDEOGRAPH - 0x9967: 0x6A8A, //CJK UNIFIED IDEOGRAPH - 0x9968: 0x6A8B, //CJK UNIFIED IDEOGRAPH - 0x9969: 0x6A8C, //CJK UNIFIED IDEOGRAPH - 0x996A: 0x6A8D, //CJK UNIFIED IDEOGRAPH - 0x996B: 0x6A8F, //CJK UNIFIED IDEOGRAPH - 0x996C: 0x6A92, //CJK UNIFIED IDEOGRAPH - 0x996D: 0x6A93, //CJK UNIFIED IDEOGRAPH - 0x996E: 0x6A94, //CJK UNIFIED IDEOGRAPH - 0x996F: 0x6A95, //CJK UNIFIED IDEOGRAPH - 0x9970: 0x6A96, //CJK UNIFIED IDEOGRAPH - 0x9971: 0x6A98, //CJK UNIFIED IDEOGRAPH - 0x9972: 0x6A99, //CJK UNIFIED IDEOGRAPH - 0x9973: 0x6A9A, //CJK UNIFIED IDEOGRAPH - 0x9974: 0x6A9B, //CJK UNIFIED IDEOGRAPH - 0x9975: 0x6A9C, //CJK UNIFIED IDEOGRAPH - 0x9976: 0x6A9D, //CJK UNIFIED IDEOGRAPH - 0x9977: 0x6A9E, //CJK UNIFIED IDEOGRAPH - 0x9978: 0x6A9F, //CJK UNIFIED IDEOGRAPH - 0x9979: 0x6AA1, //CJK UNIFIED IDEOGRAPH - 0x997A: 0x6AA2, //CJK UNIFIED IDEOGRAPH - 0x997B: 0x6AA3, //CJK UNIFIED IDEOGRAPH - 0x997C: 0x6AA4, //CJK UNIFIED IDEOGRAPH - 0x997D: 0x6AA5, //CJK UNIFIED IDEOGRAPH - 0x997E: 0x6AA6, //CJK UNIFIED IDEOGRAPH - 0x9980: 0x6AA7, //CJK UNIFIED IDEOGRAPH - 0x9981: 0x6AA8, //CJK UNIFIED IDEOGRAPH - 0x9982: 0x6AAA, //CJK UNIFIED IDEOGRAPH - 0x9983: 0x6AAD, //CJK UNIFIED IDEOGRAPH - 0x9984: 0x6AAE, //CJK UNIFIED IDEOGRAPH - 0x9985: 0x6AAF, //CJK UNIFIED IDEOGRAPH - 0x9986: 0x6AB0, //CJK UNIFIED IDEOGRAPH - 0x9987: 0x6AB1, //CJK UNIFIED IDEOGRAPH - 0x9988: 0x6AB2, //CJK UNIFIED IDEOGRAPH - 0x9989: 0x6AB3, //CJK UNIFIED IDEOGRAPH - 0x998A: 0x6AB4, //CJK UNIFIED IDEOGRAPH - 0x998B: 0x6AB5, //CJK UNIFIED IDEOGRAPH - 0x998C: 0x6AB6, //CJK UNIFIED IDEOGRAPH - 0x998D: 0x6AB7, //CJK UNIFIED IDEOGRAPH - 0x998E: 0x6AB8, //CJK UNIFIED IDEOGRAPH - 0x998F: 0x6AB9, //CJK UNIFIED IDEOGRAPH - 0x9990: 0x6ABA, //CJK UNIFIED IDEOGRAPH - 0x9991: 0x6ABB, //CJK UNIFIED IDEOGRAPH - 0x9992: 0x6ABC, //CJK UNIFIED IDEOGRAPH - 0x9993: 0x6ABD, //CJK UNIFIED IDEOGRAPH - 0x9994: 0x6ABE, //CJK UNIFIED IDEOGRAPH - 0x9995: 0x6ABF, //CJK UNIFIED IDEOGRAPH - 0x9996: 0x6AC0, //CJK UNIFIED IDEOGRAPH - 0x9997: 0x6AC1, //CJK UNIFIED IDEOGRAPH - 0x9998: 0x6AC2, //CJK UNIFIED IDEOGRAPH - 0x9999: 0x6AC3, //CJK UNIFIED IDEOGRAPH - 0x999A: 0x6AC4, //CJK UNIFIED IDEOGRAPH - 0x999B: 0x6AC5, //CJK UNIFIED IDEOGRAPH - 0x999C: 0x6AC6, //CJK UNIFIED IDEOGRAPH - 0x999D: 0x6AC7, //CJK UNIFIED IDEOGRAPH - 0x999E: 0x6AC8, //CJK UNIFIED IDEOGRAPH - 0x999F: 0x6AC9, //CJK UNIFIED IDEOGRAPH - 0x99A0: 0x6ACA, //CJK UNIFIED IDEOGRAPH - 0x99A1: 0x6ACB, //CJK UNIFIED IDEOGRAPH - 0x99A2: 0x6ACC, //CJK UNIFIED IDEOGRAPH - 0x99A3: 0x6ACD, //CJK UNIFIED IDEOGRAPH - 0x99A4: 0x6ACE, //CJK UNIFIED IDEOGRAPH - 0x99A5: 0x6ACF, //CJK UNIFIED IDEOGRAPH - 0x99A6: 0x6AD0, //CJK UNIFIED IDEOGRAPH - 0x99A7: 0x6AD1, //CJK UNIFIED IDEOGRAPH - 0x99A8: 0x6AD2, //CJK UNIFIED IDEOGRAPH - 0x99A9: 0x6AD3, //CJK UNIFIED IDEOGRAPH - 0x99AA: 0x6AD4, //CJK UNIFIED IDEOGRAPH - 0x99AB: 0x6AD5, //CJK UNIFIED IDEOGRAPH - 0x99AC: 0x6AD6, //CJK UNIFIED IDEOGRAPH - 0x99AD: 0x6AD7, //CJK UNIFIED IDEOGRAPH - 0x99AE: 0x6AD8, //CJK UNIFIED IDEOGRAPH - 0x99AF: 0x6AD9, //CJK UNIFIED IDEOGRAPH - 0x99B0: 0x6ADA, //CJK UNIFIED IDEOGRAPH - 0x99B1: 0x6ADB, //CJK UNIFIED IDEOGRAPH - 0x99B2: 0x6ADC, //CJK UNIFIED IDEOGRAPH - 0x99B3: 0x6ADD, //CJK UNIFIED IDEOGRAPH - 0x99B4: 0x6ADE, //CJK UNIFIED IDEOGRAPH - 0x99B5: 0x6ADF, //CJK UNIFIED IDEOGRAPH - 0x99B6: 0x6AE0, //CJK UNIFIED IDEOGRAPH - 0x99B7: 0x6AE1, //CJK UNIFIED IDEOGRAPH - 0x99B8: 0x6AE2, //CJK UNIFIED IDEOGRAPH - 0x99B9: 0x6AE3, //CJK UNIFIED IDEOGRAPH - 0x99BA: 0x6AE4, //CJK UNIFIED IDEOGRAPH - 0x99BB: 0x6AE5, //CJK UNIFIED IDEOGRAPH - 0x99BC: 0x6AE6, //CJK UNIFIED IDEOGRAPH - 0x99BD: 0x6AE7, //CJK UNIFIED IDEOGRAPH - 0x99BE: 0x6AE8, //CJK UNIFIED IDEOGRAPH - 0x99BF: 0x6AE9, //CJK UNIFIED IDEOGRAPH - 0x99C0: 0x6AEA, //CJK UNIFIED IDEOGRAPH - 0x99C1: 0x6AEB, //CJK UNIFIED IDEOGRAPH - 0x99C2: 0x6AEC, //CJK UNIFIED IDEOGRAPH - 0x99C3: 0x6AED, //CJK UNIFIED IDEOGRAPH - 0x99C4: 0x6AEE, //CJK UNIFIED IDEOGRAPH - 0x99C5: 0x6AEF, //CJK UNIFIED IDEOGRAPH - 0x99C6: 0x6AF0, //CJK UNIFIED IDEOGRAPH - 0x99C7: 0x6AF1, //CJK UNIFIED IDEOGRAPH - 0x99C8: 0x6AF2, //CJK UNIFIED IDEOGRAPH - 0x99C9: 0x6AF3, //CJK UNIFIED IDEOGRAPH - 0x99CA: 0x6AF4, //CJK UNIFIED IDEOGRAPH - 0x99CB: 0x6AF5, //CJK UNIFIED IDEOGRAPH - 0x99CC: 0x6AF6, //CJK UNIFIED IDEOGRAPH - 0x99CD: 0x6AF7, //CJK UNIFIED IDEOGRAPH - 0x99CE: 0x6AF8, //CJK UNIFIED IDEOGRAPH - 0x99CF: 0x6AF9, //CJK UNIFIED IDEOGRAPH - 0x99D0: 0x6AFA, //CJK UNIFIED IDEOGRAPH - 0x99D1: 0x6AFB, //CJK UNIFIED IDEOGRAPH - 0x99D2: 0x6AFC, //CJK UNIFIED IDEOGRAPH - 0x99D3: 0x6AFD, //CJK UNIFIED IDEOGRAPH - 0x99D4: 0x6AFE, //CJK UNIFIED IDEOGRAPH - 0x99D5: 0x6AFF, //CJK UNIFIED IDEOGRAPH - 0x99D6: 0x6B00, //CJK UNIFIED IDEOGRAPH - 0x99D7: 0x6B01, //CJK UNIFIED IDEOGRAPH - 0x99D8: 0x6B02, //CJK UNIFIED IDEOGRAPH - 0x99D9: 0x6B03, //CJK UNIFIED IDEOGRAPH - 0x99DA: 0x6B04, //CJK UNIFIED IDEOGRAPH - 0x99DB: 0x6B05, //CJK UNIFIED IDEOGRAPH - 0x99DC: 0x6B06, //CJK UNIFIED IDEOGRAPH - 0x99DD: 0x6B07, //CJK UNIFIED IDEOGRAPH - 0x99DE: 0x6B08, //CJK UNIFIED IDEOGRAPH - 0x99DF: 0x6B09, //CJK UNIFIED IDEOGRAPH - 0x99E0: 0x6B0A, //CJK UNIFIED IDEOGRAPH - 0x99E1: 0x6B0B, //CJK UNIFIED IDEOGRAPH - 0x99E2: 0x6B0C, //CJK UNIFIED IDEOGRAPH - 0x99E3: 0x6B0D, //CJK UNIFIED IDEOGRAPH - 0x99E4: 0x6B0E, //CJK UNIFIED IDEOGRAPH - 0x99E5: 0x6B0F, //CJK UNIFIED IDEOGRAPH - 0x99E6: 0x6B10, //CJK UNIFIED IDEOGRAPH - 0x99E7: 0x6B11, //CJK UNIFIED IDEOGRAPH - 0x99E8: 0x6B12, //CJK UNIFIED IDEOGRAPH - 0x99E9: 0x6B13, //CJK UNIFIED IDEOGRAPH - 0x99EA: 0x6B14, //CJK UNIFIED IDEOGRAPH - 0x99EB: 0x6B15, //CJK UNIFIED IDEOGRAPH - 0x99EC: 0x6B16, //CJK UNIFIED IDEOGRAPH - 0x99ED: 0x6B17, //CJK UNIFIED IDEOGRAPH - 0x99EE: 0x6B18, //CJK UNIFIED IDEOGRAPH - 0x99EF: 0x6B19, //CJK UNIFIED IDEOGRAPH - 0x99F0: 0x6B1A, //CJK UNIFIED IDEOGRAPH - 0x99F1: 0x6B1B, //CJK UNIFIED IDEOGRAPH - 0x99F2: 0x6B1C, //CJK UNIFIED IDEOGRAPH - 0x99F3: 0x6B1D, //CJK UNIFIED IDEOGRAPH - 0x99F4: 0x6B1E, //CJK UNIFIED IDEOGRAPH - 0x99F5: 0x6B1F, //CJK UNIFIED IDEOGRAPH - 0x99F6: 0x6B25, //CJK UNIFIED IDEOGRAPH - 0x99F7: 0x6B26, //CJK UNIFIED IDEOGRAPH - 0x99F8: 0x6B28, //CJK UNIFIED IDEOGRAPH - 0x99F9: 0x6B29, //CJK UNIFIED IDEOGRAPH - 0x99FA: 0x6B2A, //CJK UNIFIED IDEOGRAPH - 0x99FB: 0x6B2B, //CJK UNIFIED IDEOGRAPH - 0x99FC: 0x6B2C, //CJK UNIFIED IDEOGRAPH - 0x99FD: 0x6B2D, //CJK UNIFIED IDEOGRAPH - 0x99FE: 0x6B2E, //CJK UNIFIED IDEOGRAPH - 0x9A40: 0x6B2F, //CJK UNIFIED IDEOGRAPH - 0x9A41: 0x6B30, //CJK UNIFIED IDEOGRAPH - 0x9A42: 0x6B31, //CJK UNIFIED IDEOGRAPH - 0x9A43: 0x6B33, //CJK UNIFIED IDEOGRAPH - 0x9A44: 0x6B34, //CJK UNIFIED IDEOGRAPH - 0x9A45: 0x6B35, //CJK UNIFIED IDEOGRAPH - 0x9A46: 0x6B36, //CJK UNIFIED IDEOGRAPH - 0x9A47: 0x6B38, //CJK UNIFIED IDEOGRAPH - 0x9A48: 0x6B3B, //CJK UNIFIED IDEOGRAPH - 0x9A49: 0x6B3C, //CJK UNIFIED IDEOGRAPH - 0x9A4A: 0x6B3D, //CJK UNIFIED IDEOGRAPH - 0x9A4B: 0x6B3F, //CJK UNIFIED IDEOGRAPH - 0x9A4C: 0x6B40, //CJK UNIFIED IDEOGRAPH - 0x9A4D: 0x6B41, //CJK UNIFIED IDEOGRAPH - 0x9A4E: 0x6B42, //CJK UNIFIED IDEOGRAPH - 0x9A4F: 0x6B44, //CJK UNIFIED IDEOGRAPH - 0x9A50: 0x6B45, //CJK UNIFIED IDEOGRAPH - 0x9A51: 0x6B48, //CJK UNIFIED IDEOGRAPH - 0x9A52: 0x6B4A, //CJK UNIFIED IDEOGRAPH - 0x9A53: 0x6B4B, //CJK UNIFIED IDEOGRAPH - 0x9A54: 0x6B4D, //CJK UNIFIED IDEOGRAPH - 0x9A55: 0x6B4E, //CJK UNIFIED IDEOGRAPH - 0x9A56: 0x6B4F, //CJK UNIFIED IDEOGRAPH - 0x9A57: 0x6B50, //CJK UNIFIED IDEOGRAPH - 0x9A58: 0x6B51, //CJK UNIFIED IDEOGRAPH - 0x9A59: 0x6B52, //CJK UNIFIED IDEOGRAPH - 0x9A5A: 0x6B53, //CJK UNIFIED IDEOGRAPH - 0x9A5B: 0x6B54, //CJK UNIFIED IDEOGRAPH - 0x9A5C: 0x6B55, //CJK UNIFIED IDEOGRAPH - 0x9A5D: 0x6B56, //CJK UNIFIED IDEOGRAPH - 0x9A5E: 0x6B57, //CJK UNIFIED IDEOGRAPH - 0x9A5F: 0x6B58, //CJK UNIFIED IDEOGRAPH - 0x9A60: 0x6B5A, //CJK UNIFIED IDEOGRAPH - 0x9A61: 0x6B5B, //CJK UNIFIED IDEOGRAPH - 0x9A62: 0x6B5C, //CJK UNIFIED IDEOGRAPH - 0x9A63: 0x6B5D, //CJK UNIFIED IDEOGRAPH - 0x9A64: 0x6B5E, //CJK UNIFIED IDEOGRAPH - 0x9A65: 0x6B5F, //CJK UNIFIED IDEOGRAPH - 0x9A66: 0x6B60, //CJK UNIFIED IDEOGRAPH - 0x9A67: 0x6B61, //CJK UNIFIED IDEOGRAPH - 0x9A68: 0x6B68, //CJK UNIFIED IDEOGRAPH - 0x9A69: 0x6B69, //CJK UNIFIED IDEOGRAPH - 0x9A6A: 0x6B6B, //CJK UNIFIED IDEOGRAPH - 0x9A6B: 0x6B6C, //CJK UNIFIED IDEOGRAPH - 0x9A6C: 0x6B6D, //CJK UNIFIED IDEOGRAPH - 0x9A6D: 0x6B6E, //CJK UNIFIED IDEOGRAPH - 0x9A6E: 0x6B6F, //CJK UNIFIED IDEOGRAPH - 0x9A6F: 0x6B70, //CJK UNIFIED IDEOGRAPH - 0x9A70: 0x6B71, //CJK UNIFIED IDEOGRAPH - 0x9A71: 0x6B72, //CJK UNIFIED IDEOGRAPH - 0x9A72: 0x6B73, //CJK UNIFIED IDEOGRAPH - 0x9A73: 0x6B74, //CJK UNIFIED IDEOGRAPH - 0x9A74: 0x6B75, //CJK UNIFIED IDEOGRAPH - 0x9A75: 0x6B76, //CJK UNIFIED IDEOGRAPH - 0x9A76: 0x6B77, //CJK UNIFIED IDEOGRAPH - 0x9A77: 0x6B78, //CJK UNIFIED IDEOGRAPH - 0x9A78: 0x6B7A, //CJK UNIFIED IDEOGRAPH - 0x9A79: 0x6B7D, //CJK UNIFIED IDEOGRAPH - 0x9A7A: 0x6B7E, //CJK UNIFIED IDEOGRAPH - 0x9A7B: 0x6B7F, //CJK UNIFIED IDEOGRAPH - 0x9A7C: 0x6B80, //CJK UNIFIED IDEOGRAPH - 0x9A7D: 0x6B85, //CJK UNIFIED IDEOGRAPH - 0x9A7E: 0x6B88, //CJK UNIFIED IDEOGRAPH - 0x9A80: 0x6B8C, //CJK UNIFIED IDEOGRAPH - 0x9A81: 0x6B8E, //CJK UNIFIED IDEOGRAPH - 0x9A82: 0x6B8F, //CJK UNIFIED IDEOGRAPH - 0x9A83: 0x6B90, //CJK UNIFIED IDEOGRAPH - 0x9A84: 0x6B91, //CJK UNIFIED IDEOGRAPH - 0x9A85: 0x6B94, //CJK UNIFIED IDEOGRAPH - 0x9A86: 0x6B95, //CJK UNIFIED IDEOGRAPH - 0x9A87: 0x6B97, //CJK UNIFIED IDEOGRAPH - 0x9A88: 0x6B98, //CJK UNIFIED IDEOGRAPH - 0x9A89: 0x6B99, //CJK UNIFIED IDEOGRAPH - 0x9A8A: 0x6B9C, //CJK UNIFIED IDEOGRAPH - 0x9A8B: 0x6B9D, //CJK UNIFIED IDEOGRAPH - 0x9A8C: 0x6B9E, //CJK UNIFIED IDEOGRAPH - 0x9A8D: 0x6B9F, //CJK UNIFIED IDEOGRAPH - 0x9A8E: 0x6BA0, //CJK UNIFIED IDEOGRAPH - 0x9A8F: 0x6BA2, //CJK UNIFIED IDEOGRAPH - 0x9A90: 0x6BA3, //CJK UNIFIED IDEOGRAPH - 0x9A91: 0x6BA4, //CJK UNIFIED IDEOGRAPH - 0x9A92: 0x6BA5, //CJK UNIFIED IDEOGRAPH - 0x9A93: 0x6BA6, //CJK UNIFIED IDEOGRAPH - 0x9A94: 0x6BA7, //CJK UNIFIED IDEOGRAPH - 0x9A95: 0x6BA8, //CJK UNIFIED IDEOGRAPH - 0x9A96: 0x6BA9, //CJK UNIFIED IDEOGRAPH - 0x9A97: 0x6BAB, //CJK UNIFIED IDEOGRAPH - 0x9A98: 0x6BAC, //CJK UNIFIED IDEOGRAPH - 0x9A99: 0x6BAD, //CJK UNIFIED IDEOGRAPH - 0x9A9A: 0x6BAE, //CJK UNIFIED IDEOGRAPH - 0x9A9B: 0x6BAF, //CJK UNIFIED IDEOGRAPH - 0x9A9C: 0x6BB0, //CJK UNIFIED IDEOGRAPH - 0x9A9D: 0x6BB1, //CJK UNIFIED IDEOGRAPH - 0x9A9E: 0x6BB2, //CJK UNIFIED IDEOGRAPH - 0x9A9F: 0x6BB6, //CJK UNIFIED IDEOGRAPH - 0x9AA0: 0x6BB8, //CJK UNIFIED IDEOGRAPH - 0x9AA1: 0x6BB9, //CJK UNIFIED IDEOGRAPH - 0x9AA2: 0x6BBA, //CJK UNIFIED IDEOGRAPH - 0x9AA3: 0x6BBB, //CJK UNIFIED IDEOGRAPH - 0x9AA4: 0x6BBC, //CJK UNIFIED IDEOGRAPH - 0x9AA5: 0x6BBD, //CJK UNIFIED IDEOGRAPH - 0x9AA6: 0x6BBE, //CJK UNIFIED IDEOGRAPH - 0x9AA7: 0x6BC0, //CJK UNIFIED IDEOGRAPH - 0x9AA8: 0x6BC3, //CJK UNIFIED IDEOGRAPH - 0x9AA9: 0x6BC4, //CJK UNIFIED IDEOGRAPH - 0x9AAA: 0x6BC6, //CJK UNIFIED IDEOGRAPH - 0x9AAB: 0x6BC7, //CJK UNIFIED IDEOGRAPH - 0x9AAC: 0x6BC8, //CJK UNIFIED IDEOGRAPH - 0x9AAD: 0x6BC9, //CJK UNIFIED IDEOGRAPH - 0x9AAE: 0x6BCA, //CJK UNIFIED IDEOGRAPH - 0x9AAF: 0x6BCC, //CJK UNIFIED IDEOGRAPH - 0x9AB0: 0x6BCE, //CJK UNIFIED IDEOGRAPH - 0x9AB1: 0x6BD0, //CJK UNIFIED IDEOGRAPH - 0x9AB2: 0x6BD1, //CJK UNIFIED IDEOGRAPH - 0x9AB3: 0x6BD8, //CJK UNIFIED IDEOGRAPH - 0x9AB4: 0x6BDA, //CJK UNIFIED IDEOGRAPH - 0x9AB5: 0x6BDC, //CJK UNIFIED IDEOGRAPH - 0x9AB6: 0x6BDD, //CJK UNIFIED IDEOGRAPH - 0x9AB7: 0x6BDE, //CJK UNIFIED IDEOGRAPH - 0x9AB8: 0x6BDF, //CJK UNIFIED IDEOGRAPH - 0x9AB9: 0x6BE0, //CJK UNIFIED IDEOGRAPH - 0x9ABA: 0x6BE2, //CJK UNIFIED IDEOGRAPH - 0x9ABB: 0x6BE3, //CJK UNIFIED IDEOGRAPH - 0x9ABC: 0x6BE4, //CJK UNIFIED IDEOGRAPH - 0x9ABD: 0x6BE5, //CJK UNIFIED IDEOGRAPH - 0x9ABE: 0x6BE6, //CJK UNIFIED IDEOGRAPH - 0x9ABF: 0x6BE7, //CJK UNIFIED IDEOGRAPH - 0x9AC0: 0x6BE8, //CJK UNIFIED IDEOGRAPH - 0x9AC1: 0x6BE9, //CJK UNIFIED IDEOGRAPH - 0x9AC2: 0x6BEC, //CJK UNIFIED IDEOGRAPH - 0x9AC3: 0x6BED, //CJK UNIFIED IDEOGRAPH - 0x9AC4: 0x6BEE, //CJK UNIFIED IDEOGRAPH - 0x9AC5: 0x6BF0, //CJK UNIFIED IDEOGRAPH - 0x9AC6: 0x6BF1, //CJK UNIFIED IDEOGRAPH - 0x9AC7: 0x6BF2, //CJK UNIFIED IDEOGRAPH - 0x9AC8: 0x6BF4, //CJK UNIFIED IDEOGRAPH - 0x9AC9: 0x6BF6, //CJK UNIFIED IDEOGRAPH - 0x9ACA: 0x6BF7, //CJK UNIFIED IDEOGRAPH - 0x9ACB: 0x6BF8, //CJK UNIFIED IDEOGRAPH - 0x9ACC: 0x6BFA, //CJK UNIFIED IDEOGRAPH - 0x9ACD: 0x6BFB, //CJK UNIFIED IDEOGRAPH - 0x9ACE: 0x6BFC, //CJK UNIFIED IDEOGRAPH - 0x9ACF: 0x6BFE, //CJK UNIFIED IDEOGRAPH - 0x9AD0: 0x6BFF, //CJK UNIFIED IDEOGRAPH - 0x9AD1: 0x6C00, //CJK UNIFIED IDEOGRAPH - 0x9AD2: 0x6C01, //CJK UNIFIED IDEOGRAPH - 0x9AD3: 0x6C02, //CJK UNIFIED IDEOGRAPH - 0x9AD4: 0x6C03, //CJK UNIFIED IDEOGRAPH - 0x9AD5: 0x6C04, //CJK UNIFIED IDEOGRAPH - 0x9AD6: 0x6C08, //CJK UNIFIED IDEOGRAPH - 0x9AD7: 0x6C09, //CJK UNIFIED IDEOGRAPH - 0x9AD8: 0x6C0A, //CJK UNIFIED IDEOGRAPH - 0x9AD9: 0x6C0B, //CJK UNIFIED IDEOGRAPH - 0x9ADA: 0x6C0C, //CJK UNIFIED IDEOGRAPH - 0x9ADB: 0x6C0E, //CJK UNIFIED IDEOGRAPH - 0x9ADC: 0x6C12, //CJK UNIFIED IDEOGRAPH - 0x9ADD: 0x6C17, //CJK UNIFIED IDEOGRAPH - 0x9ADE: 0x6C1C, //CJK UNIFIED IDEOGRAPH - 0x9ADF: 0x6C1D, //CJK UNIFIED IDEOGRAPH - 0x9AE0: 0x6C1E, //CJK UNIFIED IDEOGRAPH - 0x9AE1: 0x6C20, //CJK UNIFIED IDEOGRAPH - 0x9AE2: 0x6C23, //CJK UNIFIED IDEOGRAPH - 0x9AE3: 0x6C25, //CJK UNIFIED IDEOGRAPH - 0x9AE4: 0x6C2B, //CJK UNIFIED IDEOGRAPH - 0x9AE5: 0x6C2C, //CJK UNIFIED IDEOGRAPH - 0x9AE6: 0x6C2D, //CJK UNIFIED IDEOGRAPH - 0x9AE7: 0x6C31, //CJK UNIFIED IDEOGRAPH - 0x9AE8: 0x6C33, //CJK UNIFIED IDEOGRAPH - 0x9AE9: 0x6C36, //CJK UNIFIED IDEOGRAPH - 0x9AEA: 0x6C37, //CJK UNIFIED IDEOGRAPH - 0x9AEB: 0x6C39, //CJK UNIFIED IDEOGRAPH - 0x9AEC: 0x6C3A, //CJK UNIFIED IDEOGRAPH - 0x9AED: 0x6C3B, //CJK UNIFIED IDEOGRAPH - 0x9AEE: 0x6C3C, //CJK UNIFIED IDEOGRAPH - 0x9AEF: 0x6C3E, //CJK UNIFIED IDEOGRAPH - 0x9AF0: 0x6C3F, //CJK UNIFIED IDEOGRAPH - 0x9AF1: 0x6C43, //CJK UNIFIED IDEOGRAPH - 0x9AF2: 0x6C44, //CJK UNIFIED IDEOGRAPH - 0x9AF3: 0x6C45, //CJK UNIFIED IDEOGRAPH - 0x9AF4: 0x6C48, //CJK UNIFIED IDEOGRAPH - 0x9AF5: 0x6C4B, //CJK UNIFIED IDEOGRAPH - 0x9AF6: 0x6C4C, //CJK UNIFIED IDEOGRAPH - 0x9AF7: 0x6C4D, //CJK UNIFIED IDEOGRAPH - 0x9AF8: 0x6C4E, //CJK UNIFIED IDEOGRAPH - 0x9AF9: 0x6C4F, //CJK UNIFIED IDEOGRAPH - 0x9AFA: 0x6C51, //CJK UNIFIED IDEOGRAPH - 0x9AFB: 0x6C52, //CJK UNIFIED IDEOGRAPH - 0x9AFC: 0x6C53, //CJK UNIFIED IDEOGRAPH - 0x9AFD: 0x6C56, //CJK UNIFIED IDEOGRAPH - 0x9AFE: 0x6C58, //CJK UNIFIED IDEOGRAPH - 0x9B40: 0x6C59, //CJK UNIFIED IDEOGRAPH - 0x9B41: 0x6C5A, //CJK UNIFIED IDEOGRAPH - 0x9B42: 0x6C62, //CJK UNIFIED IDEOGRAPH - 0x9B43: 0x6C63, //CJK UNIFIED IDEOGRAPH - 0x9B44: 0x6C65, //CJK UNIFIED IDEOGRAPH - 0x9B45: 0x6C66, //CJK UNIFIED IDEOGRAPH - 0x9B46: 0x6C67, //CJK UNIFIED IDEOGRAPH - 0x9B47: 0x6C6B, //CJK UNIFIED IDEOGRAPH - 0x9B48: 0x6C6C, //CJK UNIFIED IDEOGRAPH - 0x9B49: 0x6C6D, //CJK UNIFIED IDEOGRAPH - 0x9B4A: 0x6C6E, //CJK UNIFIED IDEOGRAPH - 0x9B4B: 0x6C6F, //CJK UNIFIED IDEOGRAPH - 0x9B4C: 0x6C71, //CJK UNIFIED IDEOGRAPH - 0x9B4D: 0x6C73, //CJK UNIFIED IDEOGRAPH - 0x9B4E: 0x6C75, //CJK UNIFIED IDEOGRAPH - 0x9B4F: 0x6C77, //CJK UNIFIED IDEOGRAPH - 0x9B50: 0x6C78, //CJK UNIFIED IDEOGRAPH - 0x9B51: 0x6C7A, //CJK UNIFIED IDEOGRAPH - 0x9B52: 0x6C7B, //CJK UNIFIED IDEOGRAPH - 0x9B53: 0x6C7C, //CJK UNIFIED IDEOGRAPH - 0x9B54: 0x6C7F, //CJK UNIFIED IDEOGRAPH - 0x9B55: 0x6C80, //CJK UNIFIED IDEOGRAPH - 0x9B56: 0x6C84, //CJK UNIFIED IDEOGRAPH - 0x9B57: 0x6C87, //CJK UNIFIED IDEOGRAPH - 0x9B58: 0x6C8A, //CJK UNIFIED IDEOGRAPH - 0x9B59: 0x6C8B, //CJK UNIFIED IDEOGRAPH - 0x9B5A: 0x6C8D, //CJK UNIFIED IDEOGRAPH - 0x9B5B: 0x6C8E, //CJK UNIFIED IDEOGRAPH - 0x9B5C: 0x6C91, //CJK UNIFIED IDEOGRAPH - 0x9B5D: 0x6C92, //CJK UNIFIED IDEOGRAPH - 0x9B5E: 0x6C95, //CJK UNIFIED IDEOGRAPH - 0x9B5F: 0x6C96, //CJK UNIFIED IDEOGRAPH - 0x9B60: 0x6C97, //CJK UNIFIED IDEOGRAPH - 0x9B61: 0x6C98, //CJK UNIFIED IDEOGRAPH - 0x9B62: 0x6C9A, //CJK UNIFIED IDEOGRAPH - 0x9B63: 0x6C9C, //CJK UNIFIED IDEOGRAPH - 0x9B64: 0x6C9D, //CJK UNIFIED IDEOGRAPH - 0x9B65: 0x6C9E, //CJK UNIFIED IDEOGRAPH - 0x9B66: 0x6CA0, //CJK UNIFIED IDEOGRAPH - 0x9B67: 0x6CA2, //CJK UNIFIED IDEOGRAPH - 0x9B68: 0x6CA8, //CJK UNIFIED IDEOGRAPH - 0x9B69: 0x6CAC, //CJK UNIFIED IDEOGRAPH - 0x9B6A: 0x6CAF, //CJK UNIFIED IDEOGRAPH - 0x9B6B: 0x6CB0, //CJK UNIFIED IDEOGRAPH - 0x9B6C: 0x6CB4, //CJK UNIFIED IDEOGRAPH - 0x9B6D: 0x6CB5, //CJK UNIFIED IDEOGRAPH - 0x9B6E: 0x6CB6, //CJK UNIFIED IDEOGRAPH - 0x9B6F: 0x6CB7, //CJK UNIFIED IDEOGRAPH - 0x9B70: 0x6CBA, //CJK UNIFIED IDEOGRAPH - 0x9B71: 0x6CC0, //CJK UNIFIED IDEOGRAPH - 0x9B72: 0x6CC1, //CJK UNIFIED IDEOGRAPH - 0x9B73: 0x6CC2, //CJK UNIFIED IDEOGRAPH - 0x9B74: 0x6CC3, //CJK UNIFIED IDEOGRAPH - 0x9B75: 0x6CC6, //CJK UNIFIED IDEOGRAPH - 0x9B76: 0x6CC7, //CJK UNIFIED IDEOGRAPH - 0x9B77: 0x6CC8, //CJK UNIFIED IDEOGRAPH - 0x9B78: 0x6CCB, //CJK UNIFIED IDEOGRAPH - 0x9B79: 0x6CCD, //CJK UNIFIED IDEOGRAPH - 0x9B7A: 0x6CCE, //CJK UNIFIED IDEOGRAPH - 0x9B7B: 0x6CCF, //CJK UNIFIED IDEOGRAPH - 0x9B7C: 0x6CD1, //CJK UNIFIED IDEOGRAPH - 0x9B7D: 0x6CD2, //CJK UNIFIED IDEOGRAPH - 0x9B7E: 0x6CD8, //CJK UNIFIED IDEOGRAPH - 0x9B80: 0x6CD9, //CJK UNIFIED IDEOGRAPH - 0x9B81: 0x6CDA, //CJK UNIFIED IDEOGRAPH - 0x9B82: 0x6CDC, //CJK UNIFIED IDEOGRAPH - 0x9B83: 0x6CDD, //CJK UNIFIED IDEOGRAPH - 0x9B84: 0x6CDF, //CJK UNIFIED IDEOGRAPH - 0x9B85: 0x6CE4, //CJK UNIFIED IDEOGRAPH - 0x9B86: 0x6CE6, //CJK UNIFIED IDEOGRAPH - 0x9B87: 0x6CE7, //CJK UNIFIED IDEOGRAPH - 0x9B88: 0x6CE9, //CJK UNIFIED IDEOGRAPH - 0x9B89: 0x6CEC, //CJK UNIFIED IDEOGRAPH - 0x9B8A: 0x6CED, //CJK UNIFIED IDEOGRAPH - 0x9B8B: 0x6CF2, //CJK UNIFIED IDEOGRAPH - 0x9B8C: 0x6CF4, //CJK UNIFIED IDEOGRAPH - 0x9B8D: 0x6CF9, //CJK UNIFIED IDEOGRAPH - 0x9B8E: 0x6CFF, //CJK UNIFIED IDEOGRAPH - 0x9B8F: 0x6D00, //CJK UNIFIED IDEOGRAPH - 0x9B90: 0x6D02, //CJK UNIFIED IDEOGRAPH - 0x9B91: 0x6D03, //CJK UNIFIED IDEOGRAPH - 0x9B92: 0x6D05, //CJK UNIFIED IDEOGRAPH - 0x9B93: 0x6D06, //CJK UNIFIED IDEOGRAPH - 0x9B94: 0x6D08, //CJK UNIFIED IDEOGRAPH - 0x9B95: 0x6D09, //CJK UNIFIED IDEOGRAPH - 0x9B96: 0x6D0A, //CJK UNIFIED IDEOGRAPH - 0x9B97: 0x6D0D, //CJK UNIFIED IDEOGRAPH - 0x9B98: 0x6D0F, //CJK UNIFIED IDEOGRAPH - 0x9B99: 0x6D10, //CJK UNIFIED IDEOGRAPH - 0x9B9A: 0x6D11, //CJK UNIFIED IDEOGRAPH - 0x9B9B: 0x6D13, //CJK UNIFIED IDEOGRAPH - 0x9B9C: 0x6D14, //CJK UNIFIED IDEOGRAPH - 0x9B9D: 0x6D15, //CJK UNIFIED IDEOGRAPH - 0x9B9E: 0x6D16, //CJK UNIFIED IDEOGRAPH - 0x9B9F: 0x6D18, //CJK UNIFIED IDEOGRAPH - 0x9BA0: 0x6D1C, //CJK UNIFIED IDEOGRAPH - 0x9BA1: 0x6D1D, //CJK UNIFIED IDEOGRAPH - 0x9BA2: 0x6D1F, //CJK UNIFIED IDEOGRAPH - 0x9BA3: 0x6D20, //CJK UNIFIED IDEOGRAPH - 0x9BA4: 0x6D21, //CJK UNIFIED IDEOGRAPH - 0x9BA5: 0x6D22, //CJK UNIFIED IDEOGRAPH - 0x9BA6: 0x6D23, //CJK UNIFIED IDEOGRAPH - 0x9BA7: 0x6D24, //CJK UNIFIED IDEOGRAPH - 0x9BA8: 0x6D26, //CJK UNIFIED IDEOGRAPH - 0x9BA9: 0x6D28, //CJK UNIFIED IDEOGRAPH - 0x9BAA: 0x6D29, //CJK UNIFIED IDEOGRAPH - 0x9BAB: 0x6D2C, //CJK UNIFIED IDEOGRAPH - 0x9BAC: 0x6D2D, //CJK UNIFIED IDEOGRAPH - 0x9BAD: 0x6D2F, //CJK UNIFIED IDEOGRAPH - 0x9BAE: 0x6D30, //CJK UNIFIED IDEOGRAPH - 0x9BAF: 0x6D34, //CJK UNIFIED IDEOGRAPH - 0x9BB0: 0x6D36, //CJK UNIFIED IDEOGRAPH - 0x9BB1: 0x6D37, //CJK UNIFIED IDEOGRAPH - 0x9BB2: 0x6D38, //CJK UNIFIED IDEOGRAPH - 0x9BB3: 0x6D3A, //CJK UNIFIED IDEOGRAPH - 0x9BB4: 0x6D3F, //CJK UNIFIED IDEOGRAPH - 0x9BB5: 0x6D40, //CJK UNIFIED IDEOGRAPH - 0x9BB6: 0x6D42, //CJK UNIFIED IDEOGRAPH - 0x9BB7: 0x6D44, //CJK UNIFIED IDEOGRAPH - 0x9BB8: 0x6D49, //CJK UNIFIED IDEOGRAPH - 0x9BB9: 0x6D4C, //CJK UNIFIED IDEOGRAPH - 0x9BBA: 0x6D50, //CJK UNIFIED IDEOGRAPH - 0x9BBB: 0x6D55, //CJK UNIFIED IDEOGRAPH - 0x9BBC: 0x6D56, //CJK UNIFIED IDEOGRAPH - 0x9BBD: 0x6D57, //CJK UNIFIED IDEOGRAPH - 0x9BBE: 0x6D58, //CJK UNIFIED IDEOGRAPH - 0x9BBF: 0x6D5B, //CJK UNIFIED IDEOGRAPH - 0x9BC0: 0x6D5D, //CJK UNIFIED IDEOGRAPH - 0x9BC1: 0x6D5F, //CJK UNIFIED IDEOGRAPH - 0x9BC2: 0x6D61, //CJK UNIFIED IDEOGRAPH - 0x9BC3: 0x6D62, //CJK UNIFIED IDEOGRAPH - 0x9BC4: 0x6D64, //CJK UNIFIED IDEOGRAPH - 0x9BC5: 0x6D65, //CJK UNIFIED IDEOGRAPH - 0x9BC6: 0x6D67, //CJK UNIFIED IDEOGRAPH - 0x9BC7: 0x6D68, //CJK UNIFIED IDEOGRAPH - 0x9BC8: 0x6D6B, //CJK UNIFIED IDEOGRAPH - 0x9BC9: 0x6D6C, //CJK UNIFIED IDEOGRAPH - 0x9BCA: 0x6D6D, //CJK UNIFIED IDEOGRAPH - 0x9BCB: 0x6D70, //CJK UNIFIED IDEOGRAPH - 0x9BCC: 0x6D71, //CJK UNIFIED IDEOGRAPH - 0x9BCD: 0x6D72, //CJK UNIFIED IDEOGRAPH - 0x9BCE: 0x6D73, //CJK UNIFIED IDEOGRAPH - 0x9BCF: 0x6D75, //CJK UNIFIED IDEOGRAPH - 0x9BD0: 0x6D76, //CJK UNIFIED IDEOGRAPH - 0x9BD1: 0x6D79, //CJK UNIFIED IDEOGRAPH - 0x9BD2: 0x6D7A, //CJK UNIFIED IDEOGRAPH - 0x9BD3: 0x6D7B, //CJK UNIFIED IDEOGRAPH - 0x9BD4: 0x6D7D, //CJK UNIFIED IDEOGRAPH - 0x9BD5: 0x6D7E, //CJK UNIFIED IDEOGRAPH - 0x9BD6: 0x6D7F, //CJK UNIFIED IDEOGRAPH - 0x9BD7: 0x6D80, //CJK UNIFIED IDEOGRAPH - 0x9BD8: 0x6D81, //CJK UNIFIED IDEOGRAPH - 0x9BD9: 0x6D83, //CJK UNIFIED IDEOGRAPH - 0x9BDA: 0x6D84, //CJK UNIFIED IDEOGRAPH - 0x9BDB: 0x6D86, //CJK UNIFIED IDEOGRAPH - 0x9BDC: 0x6D87, //CJK UNIFIED IDEOGRAPH - 0x9BDD: 0x6D8A, //CJK UNIFIED IDEOGRAPH - 0x9BDE: 0x6D8B, //CJK UNIFIED IDEOGRAPH - 0x9BDF: 0x6D8D, //CJK UNIFIED IDEOGRAPH - 0x9BE0: 0x6D8F, //CJK UNIFIED IDEOGRAPH - 0x9BE1: 0x6D90, //CJK UNIFIED IDEOGRAPH - 0x9BE2: 0x6D92, //CJK UNIFIED IDEOGRAPH - 0x9BE3: 0x6D96, //CJK UNIFIED IDEOGRAPH - 0x9BE4: 0x6D97, //CJK UNIFIED IDEOGRAPH - 0x9BE5: 0x6D98, //CJK UNIFIED IDEOGRAPH - 0x9BE6: 0x6D99, //CJK UNIFIED IDEOGRAPH - 0x9BE7: 0x6D9A, //CJK UNIFIED IDEOGRAPH - 0x9BE8: 0x6D9C, //CJK UNIFIED IDEOGRAPH - 0x9BE9: 0x6DA2, //CJK UNIFIED IDEOGRAPH - 0x9BEA: 0x6DA5, //CJK UNIFIED IDEOGRAPH - 0x9BEB: 0x6DAC, //CJK UNIFIED IDEOGRAPH - 0x9BEC: 0x6DAD, //CJK UNIFIED IDEOGRAPH - 0x9BED: 0x6DB0, //CJK UNIFIED IDEOGRAPH - 0x9BEE: 0x6DB1, //CJK UNIFIED IDEOGRAPH - 0x9BEF: 0x6DB3, //CJK UNIFIED IDEOGRAPH - 0x9BF0: 0x6DB4, //CJK UNIFIED IDEOGRAPH - 0x9BF1: 0x6DB6, //CJK UNIFIED IDEOGRAPH - 0x9BF2: 0x6DB7, //CJK UNIFIED IDEOGRAPH - 0x9BF3: 0x6DB9, //CJK UNIFIED IDEOGRAPH - 0x9BF4: 0x6DBA, //CJK UNIFIED IDEOGRAPH - 0x9BF5: 0x6DBB, //CJK UNIFIED IDEOGRAPH - 0x9BF6: 0x6DBC, //CJK UNIFIED IDEOGRAPH - 0x9BF7: 0x6DBD, //CJK UNIFIED IDEOGRAPH - 0x9BF8: 0x6DBE, //CJK UNIFIED IDEOGRAPH - 0x9BF9: 0x6DC1, //CJK UNIFIED IDEOGRAPH - 0x9BFA: 0x6DC2, //CJK UNIFIED IDEOGRAPH - 0x9BFB: 0x6DC3, //CJK UNIFIED IDEOGRAPH - 0x9BFC: 0x6DC8, //CJK UNIFIED IDEOGRAPH - 0x9BFD: 0x6DC9, //CJK UNIFIED IDEOGRAPH - 0x9BFE: 0x6DCA, //CJK UNIFIED IDEOGRAPH - 0x9C40: 0x6DCD, //CJK UNIFIED IDEOGRAPH - 0x9C41: 0x6DCE, //CJK UNIFIED IDEOGRAPH - 0x9C42: 0x6DCF, //CJK UNIFIED IDEOGRAPH - 0x9C43: 0x6DD0, //CJK UNIFIED IDEOGRAPH - 0x9C44: 0x6DD2, //CJK UNIFIED IDEOGRAPH - 0x9C45: 0x6DD3, //CJK UNIFIED IDEOGRAPH - 0x9C46: 0x6DD4, //CJK UNIFIED IDEOGRAPH - 0x9C47: 0x6DD5, //CJK UNIFIED IDEOGRAPH - 0x9C48: 0x6DD7, //CJK UNIFIED IDEOGRAPH - 0x9C49: 0x6DDA, //CJK UNIFIED IDEOGRAPH - 0x9C4A: 0x6DDB, //CJK UNIFIED IDEOGRAPH - 0x9C4B: 0x6DDC, //CJK UNIFIED IDEOGRAPH - 0x9C4C: 0x6DDF, //CJK UNIFIED IDEOGRAPH - 0x9C4D: 0x6DE2, //CJK UNIFIED IDEOGRAPH - 0x9C4E: 0x6DE3, //CJK UNIFIED IDEOGRAPH - 0x9C4F: 0x6DE5, //CJK UNIFIED IDEOGRAPH - 0x9C50: 0x6DE7, //CJK UNIFIED IDEOGRAPH - 0x9C51: 0x6DE8, //CJK UNIFIED IDEOGRAPH - 0x9C52: 0x6DE9, //CJK UNIFIED IDEOGRAPH - 0x9C53: 0x6DEA, //CJK UNIFIED IDEOGRAPH - 0x9C54: 0x6DED, //CJK UNIFIED IDEOGRAPH - 0x9C55: 0x6DEF, //CJK UNIFIED IDEOGRAPH - 0x9C56: 0x6DF0, //CJK UNIFIED IDEOGRAPH - 0x9C57: 0x6DF2, //CJK UNIFIED IDEOGRAPH - 0x9C58: 0x6DF4, //CJK UNIFIED IDEOGRAPH - 0x9C59: 0x6DF5, //CJK UNIFIED IDEOGRAPH - 0x9C5A: 0x6DF6, //CJK UNIFIED IDEOGRAPH - 0x9C5B: 0x6DF8, //CJK UNIFIED IDEOGRAPH - 0x9C5C: 0x6DFA, //CJK UNIFIED IDEOGRAPH - 0x9C5D: 0x6DFD, //CJK UNIFIED IDEOGRAPH - 0x9C5E: 0x6DFE, //CJK UNIFIED IDEOGRAPH - 0x9C5F: 0x6DFF, //CJK UNIFIED IDEOGRAPH - 0x9C60: 0x6E00, //CJK UNIFIED IDEOGRAPH - 0x9C61: 0x6E01, //CJK UNIFIED IDEOGRAPH - 0x9C62: 0x6E02, //CJK UNIFIED IDEOGRAPH - 0x9C63: 0x6E03, //CJK UNIFIED IDEOGRAPH - 0x9C64: 0x6E04, //CJK UNIFIED IDEOGRAPH - 0x9C65: 0x6E06, //CJK UNIFIED IDEOGRAPH - 0x9C66: 0x6E07, //CJK UNIFIED IDEOGRAPH - 0x9C67: 0x6E08, //CJK UNIFIED IDEOGRAPH - 0x9C68: 0x6E09, //CJK UNIFIED IDEOGRAPH - 0x9C69: 0x6E0B, //CJK UNIFIED IDEOGRAPH - 0x9C6A: 0x6E0F, //CJK UNIFIED IDEOGRAPH - 0x9C6B: 0x6E12, //CJK UNIFIED IDEOGRAPH - 0x9C6C: 0x6E13, //CJK UNIFIED IDEOGRAPH - 0x9C6D: 0x6E15, //CJK UNIFIED IDEOGRAPH - 0x9C6E: 0x6E18, //CJK UNIFIED IDEOGRAPH - 0x9C6F: 0x6E19, //CJK UNIFIED IDEOGRAPH - 0x9C70: 0x6E1B, //CJK UNIFIED IDEOGRAPH - 0x9C71: 0x6E1C, //CJK UNIFIED IDEOGRAPH - 0x9C72: 0x6E1E, //CJK UNIFIED IDEOGRAPH - 0x9C73: 0x6E1F, //CJK UNIFIED IDEOGRAPH - 0x9C74: 0x6E22, //CJK UNIFIED IDEOGRAPH - 0x9C75: 0x6E26, //CJK UNIFIED IDEOGRAPH - 0x9C76: 0x6E27, //CJK UNIFIED IDEOGRAPH - 0x9C77: 0x6E28, //CJK UNIFIED IDEOGRAPH - 0x9C78: 0x6E2A, //CJK UNIFIED IDEOGRAPH - 0x9C79: 0x6E2C, //CJK UNIFIED IDEOGRAPH - 0x9C7A: 0x6E2E, //CJK UNIFIED IDEOGRAPH - 0x9C7B: 0x6E30, //CJK UNIFIED IDEOGRAPH - 0x9C7C: 0x6E31, //CJK UNIFIED IDEOGRAPH - 0x9C7D: 0x6E33, //CJK UNIFIED IDEOGRAPH - 0x9C7E: 0x6E35, //CJK UNIFIED IDEOGRAPH - 0x9C80: 0x6E36, //CJK UNIFIED IDEOGRAPH - 0x9C81: 0x6E37, //CJK UNIFIED IDEOGRAPH - 0x9C82: 0x6E39, //CJK UNIFIED IDEOGRAPH - 0x9C83: 0x6E3B, //CJK UNIFIED IDEOGRAPH - 0x9C84: 0x6E3C, //CJK UNIFIED IDEOGRAPH - 0x9C85: 0x6E3D, //CJK UNIFIED IDEOGRAPH - 0x9C86: 0x6E3E, //CJK UNIFIED IDEOGRAPH - 0x9C87: 0x6E3F, //CJK UNIFIED IDEOGRAPH - 0x9C88: 0x6E40, //CJK UNIFIED IDEOGRAPH - 0x9C89: 0x6E41, //CJK UNIFIED IDEOGRAPH - 0x9C8A: 0x6E42, //CJK UNIFIED IDEOGRAPH - 0x9C8B: 0x6E45, //CJK UNIFIED IDEOGRAPH - 0x9C8C: 0x6E46, //CJK UNIFIED IDEOGRAPH - 0x9C8D: 0x6E47, //CJK UNIFIED IDEOGRAPH - 0x9C8E: 0x6E48, //CJK UNIFIED IDEOGRAPH - 0x9C8F: 0x6E49, //CJK UNIFIED IDEOGRAPH - 0x9C90: 0x6E4A, //CJK UNIFIED IDEOGRAPH - 0x9C91: 0x6E4B, //CJK UNIFIED IDEOGRAPH - 0x9C92: 0x6E4C, //CJK UNIFIED IDEOGRAPH - 0x9C93: 0x6E4F, //CJK UNIFIED IDEOGRAPH - 0x9C94: 0x6E50, //CJK UNIFIED IDEOGRAPH - 0x9C95: 0x6E51, //CJK UNIFIED IDEOGRAPH - 0x9C96: 0x6E52, //CJK UNIFIED IDEOGRAPH - 0x9C97: 0x6E55, //CJK UNIFIED IDEOGRAPH - 0x9C98: 0x6E57, //CJK UNIFIED IDEOGRAPH - 0x9C99: 0x6E59, //CJK UNIFIED IDEOGRAPH - 0x9C9A: 0x6E5A, //CJK UNIFIED IDEOGRAPH - 0x9C9B: 0x6E5C, //CJK UNIFIED IDEOGRAPH - 0x9C9C: 0x6E5D, //CJK UNIFIED IDEOGRAPH - 0x9C9D: 0x6E5E, //CJK UNIFIED IDEOGRAPH - 0x9C9E: 0x6E60, //CJK UNIFIED IDEOGRAPH - 0x9C9F: 0x6E61, //CJK UNIFIED IDEOGRAPH - 0x9CA0: 0x6E62, //CJK UNIFIED IDEOGRAPH - 0x9CA1: 0x6E63, //CJK UNIFIED IDEOGRAPH - 0x9CA2: 0x6E64, //CJK UNIFIED IDEOGRAPH - 0x9CA3: 0x6E65, //CJK UNIFIED IDEOGRAPH - 0x9CA4: 0x6E66, //CJK UNIFIED IDEOGRAPH - 0x9CA5: 0x6E67, //CJK UNIFIED IDEOGRAPH - 0x9CA6: 0x6E68, //CJK UNIFIED IDEOGRAPH - 0x9CA7: 0x6E69, //CJK UNIFIED IDEOGRAPH - 0x9CA8: 0x6E6A, //CJK UNIFIED IDEOGRAPH - 0x9CA9: 0x6E6C, //CJK UNIFIED IDEOGRAPH - 0x9CAA: 0x6E6D, //CJK UNIFIED IDEOGRAPH - 0x9CAB: 0x6E6F, //CJK UNIFIED IDEOGRAPH - 0x9CAC: 0x6E70, //CJK UNIFIED IDEOGRAPH - 0x9CAD: 0x6E71, //CJK UNIFIED IDEOGRAPH - 0x9CAE: 0x6E72, //CJK UNIFIED IDEOGRAPH - 0x9CAF: 0x6E73, //CJK UNIFIED IDEOGRAPH - 0x9CB0: 0x6E74, //CJK UNIFIED IDEOGRAPH - 0x9CB1: 0x6E75, //CJK UNIFIED IDEOGRAPH - 0x9CB2: 0x6E76, //CJK UNIFIED IDEOGRAPH - 0x9CB3: 0x6E77, //CJK UNIFIED IDEOGRAPH - 0x9CB4: 0x6E78, //CJK UNIFIED IDEOGRAPH - 0x9CB5: 0x6E79, //CJK UNIFIED IDEOGRAPH - 0x9CB6: 0x6E7A, //CJK UNIFIED IDEOGRAPH - 0x9CB7: 0x6E7B, //CJK UNIFIED IDEOGRAPH - 0x9CB8: 0x6E7C, //CJK UNIFIED IDEOGRAPH - 0x9CB9: 0x6E7D, //CJK UNIFIED IDEOGRAPH - 0x9CBA: 0x6E80, //CJK UNIFIED IDEOGRAPH - 0x9CBB: 0x6E81, //CJK UNIFIED IDEOGRAPH - 0x9CBC: 0x6E82, //CJK UNIFIED IDEOGRAPH - 0x9CBD: 0x6E84, //CJK UNIFIED IDEOGRAPH - 0x9CBE: 0x6E87, //CJK UNIFIED IDEOGRAPH - 0x9CBF: 0x6E88, //CJK UNIFIED IDEOGRAPH - 0x9CC0: 0x6E8A, //CJK UNIFIED IDEOGRAPH - 0x9CC1: 0x6E8B, //CJK UNIFIED IDEOGRAPH - 0x9CC2: 0x6E8C, //CJK UNIFIED IDEOGRAPH - 0x9CC3: 0x6E8D, //CJK UNIFIED IDEOGRAPH - 0x9CC4: 0x6E8E, //CJK UNIFIED IDEOGRAPH - 0x9CC5: 0x6E91, //CJK UNIFIED IDEOGRAPH - 0x9CC6: 0x6E92, //CJK UNIFIED IDEOGRAPH - 0x9CC7: 0x6E93, //CJK UNIFIED IDEOGRAPH - 0x9CC8: 0x6E94, //CJK UNIFIED IDEOGRAPH - 0x9CC9: 0x6E95, //CJK UNIFIED IDEOGRAPH - 0x9CCA: 0x6E96, //CJK UNIFIED IDEOGRAPH - 0x9CCB: 0x6E97, //CJK UNIFIED IDEOGRAPH - 0x9CCC: 0x6E99, //CJK UNIFIED IDEOGRAPH - 0x9CCD: 0x6E9A, //CJK UNIFIED IDEOGRAPH - 0x9CCE: 0x6E9B, //CJK UNIFIED IDEOGRAPH - 0x9CCF: 0x6E9D, //CJK UNIFIED IDEOGRAPH - 0x9CD0: 0x6E9E, //CJK UNIFIED IDEOGRAPH - 0x9CD1: 0x6EA0, //CJK UNIFIED IDEOGRAPH - 0x9CD2: 0x6EA1, //CJK UNIFIED IDEOGRAPH - 0x9CD3: 0x6EA3, //CJK UNIFIED IDEOGRAPH - 0x9CD4: 0x6EA4, //CJK UNIFIED IDEOGRAPH - 0x9CD5: 0x6EA6, //CJK UNIFIED IDEOGRAPH - 0x9CD6: 0x6EA8, //CJK UNIFIED IDEOGRAPH - 0x9CD7: 0x6EA9, //CJK UNIFIED IDEOGRAPH - 0x9CD8: 0x6EAB, //CJK UNIFIED IDEOGRAPH - 0x9CD9: 0x6EAC, //CJK UNIFIED IDEOGRAPH - 0x9CDA: 0x6EAD, //CJK UNIFIED IDEOGRAPH - 0x9CDB: 0x6EAE, //CJK UNIFIED IDEOGRAPH - 0x9CDC: 0x6EB0, //CJK UNIFIED IDEOGRAPH - 0x9CDD: 0x6EB3, //CJK UNIFIED IDEOGRAPH - 0x9CDE: 0x6EB5, //CJK UNIFIED IDEOGRAPH - 0x9CDF: 0x6EB8, //CJK UNIFIED IDEOGRAPH - 0x9CE0: 0x6EB9, //CJK UNIFIED IDEOGRAPH - 0x9CE1: 0x6EBC, //CJK UNIFIED IDEOGRAPH - 0x9CE2: 0x6EBE, //CJK UNIFIED IDEOGRAPH - 0x9CE3: 0x6EBF, //CJK UNIFIED IDEOGRAPH - 0x9CE4: 0x6EC0, //CJK UNIFIED IDEOGRAPH - 0x9CE5: 0x6EC3, //CJK UNIFIED IDEOGRAPH - 0x9CE6: 0x6EC4, //CJK UNIFIED IDEOGRAPH - 0x9CE7: 0x6EC5, //CJK UNIFIED IDEOGRAPH - 0x9CE8: 0x6EC6, //CJK UNIFIED IDEOGRAPH - 0x9CE9: 0x6EC8, //CJK UNIFIED IDEOGRAPH - 0x9CEA: 0x6EC9, //CJK UNIFIED IDEOGRAPH - 0x9CEB: 0x6ECA, //CJK UNIFIED IDEOGRAPH - 0x9CEC: 0x6ECC, //CJK UNIFIED IDEOGRAPH - 0x9CED: 0x6ECD, //CJK UNIFIED IDEOGRAPH - 0x9CEE: 0x6ECE, //CJK UNIFIED IDEOGRAPH - 0x9CEF: 0x6ED0, //CJK UNIFIED IDEOGRAPH - 0x9CF0: 0x6ED2, //CJK UNIFIED IDEOGRAPH - 0x9CF1: 0x6ED6, //CJK UNIFIED IDEOGRAPH - 0x9CF2: 0x6ED8, //CJK UNIFIED IDEOGRAPH - 0x9CF3: 0x6ED9, //CJK UNIFIED IDEOGRAPH - 0x9CF4: 0x6EDB, //CJK UNIFIED IDEOGRAPH - 0x9CF5: 0x6EDC, //CJK UNIFIED IDEOGRAPH - 0x9CF6: 0x6EDD, //CJK UNIFIED IDEOGRAPH - 0x9CF7: 0x6EE3, //CJK UNIFIED IDEOGRAPH - 0x9CF8: 0x6EE7, //CJK UNIFIED IDEOGRAPH - 0x9CF9: 0x6EEA, //CJK UNIFIED IDEOGRAPH - 0x9CFA: 0x6EEB, //CJK UNIFIED IDEOGRAPH - 0x9CFB: 0x6EEC, //CJK UNIFIED IDEOGRAPH - 0x9CFC: 0x6EED, //CJK UNIFIED IDEOGRAPH - 0x9CFD: 0x6EEE, //CJK UNIFIED IDEOGRAPH - 0x9CFE: 0x6EEF, //CJK UNIFIED IDEOGRAPH - 0x9D40: 0x6EF0, //CJK UNIFIED IDEOGRAPH - 0x9D41: 0x6EF1, //CJK UNIFIED IDEOGRAPH - 0x9D42: 0x6EF2, //CJK UNIFIED IDEOGRAPH - 0x9D43: 0x6EF3, //CJK UNIFIED IDEOGRAPH - 0x9D44: 0x6EF5, //CJK UNIFIED IDEOGRAPH - 0x9D45: 0x6EF6, //CJK UNIFIED IDEOGRAPH - 0x9D46: 0x6EF7, //CJK UNIFIED IDEOGRAPH - 0x9D47: 0x6EF8, //CJK UNIFIED IDEOGRAPH - 0x9D48: 0x6EFA, //CJK UNIFIED IDEOGRAPH - 0x9D49: 0x6EFB, //CJK UNIFIED IDEOGRAPH - 0x9D4A: 0x6EFC, //CJK UNIFIED IDEOGRAPH - 0x9D4B: 0x6EFD, //CJK UNIFIED IDEOGRAPH - 0x9D4C: 0x6EFE, //CJK UNIFIED IDEOGRAPH - 0x9D4D: 0x6EFF, //CJK UNIFIED IDEOGRAPH - 0x9D4E: 0x6F00, //CJK UNIFIED IDEOGRAPH - 0x9D4F: 0x6F01, //CJK UNIFIED IDEOGRAPH - 0x9D50: 0x6F03, //CJK UNIFIED IDEOGRAPH - 0x9D51: 0x6F04, //CJK UNIFIED IDEOGRAPH - 0x9D52: 0x6F05, //CJK UNIFIED IDEOGRAPH - 0x9D53: 0x6F07, //CJK UNIFIED IDEOGRAPH - 0x9D54: 0x6F08, //CJK UNIFIED IDEOGRAPH - 0x9D55: 0x6F0A, //CJK UNIFIED IDEOGRAPH - 0x9D56: 0x6F0B, //CJK UNIFIED IDEOGRAPH - 0x9D57: 0x6F0C, //CJK UNIFIED IDEOGRAPH - 0x9D58: 0x6F0D, //CJK UNIFIED IDEOGRAPH - 0x9D59: 0x6F0E, //CJK UNIFIED IDEOGRAPH - 0x9D5A: 0x6F10, //CJK UNIFIED IDEOGRAPH - 0x9D5B: 0x6F11, //CJK UNIFIED IDEOGRAPH - 0x9D5C: 0x6F12, //CJK UNIFIED IDEOGRAPH - 0x9D5D: 0x6F16, //CJK UNIFIED IDEOGRAPH - 0x9D5E: 0x6F17, //CJK UNIFIED IDEOGRAPH - 0x9D5F: 0x6F18, //CJK UNIFIED IDEOGRAPH - 0x9D60: 0x6F19, //CJK UNIFIED IDEOGRAPH - 0x9D61: 0x6F1A, //CJK UNIFIED IDEOGRAPH - 0x9D62: 0x6F1B, //CJK UNIFIED IDEOGRAPH - 0x9D63: 0x6F1C, //CJK UNIFIED IDEOGRAPH - 0x9D64: 0x6F1D, //CJK UNIFIED IDEOGRAPH - 0x9D65: 0x6F1E, //CJK UNIFIED IDEOGRAPH - 0x9D66: 0x6F1F, //CJK UNIFIED IDEOGRAPH - 0x9D67: 0x6F21, //CJK UNIFIED IDEOGRAPH - 0x9D68: 0x6F22, //CJK UNIFIED IDEOGRAPH - 0x9D69: 0x6F23, //CJK UNIFIED IDEOGRAPH - 0x9D6A: 0x6F25, //CJK UNIFIED IDEOGRAPH - 0x9D6B: 0x6F26, //CJK UNIFIED IDEOGRAPH - 0x9D6C: 0x6F27, //CJK UNIFIED IDEOGRAPH - 0x9D6D: 0x6F28, //CJK UNIFIED IDEOGRAPH - 0x9D6E: 0x6F2C, //CJK UNIFIED IDEOGRAPH - 0x9D6F: 0x6F2E, //CJK UNIFIED IDEOGRAPH - 0x9D70: 0x6F30, //CJK UNIFIED IDEOGRAPH - 0x9D71: 0x6F32, //CJK UNIFIED IDEOGRAPH - 0x9D72: 0x6F34, //CJK UNIFIED IDEOGRAPH - 0x9D73: 0x6F35, //CJK UNIFIED IDEOGRAPH - 0x9D74: 0x6F37, //CJK UNIFIED IDEOGRAPH - 0x9D75: 0x6F38, //CJK UNIFIED IDEOGRAPH - 0x9D76: 0x6F39, //CJK UNIFIED IDEOGRAPH - 0x9D77: 0x6F3A, //CJK UNIFIED IDEOGRAPH - 0x9D78: 0x6F3B, //CJK UNIFIED IDEOGRAPH - 0x9D79: 0x6F3C, //CJK UNIFIED IDEOGRAPH - 0x9D7A: 0x6F3D, //CJK UNIFIED IDEOGRAPH - 0x9D7B: 0x6F3F, //CJK UNIFIED IDEOGRAPH - 0x9D7C: 0x6F40, //CJK UNIFIED IDEOGRAPH - 0x9D7D: 0x6F41, //CJK UNIFIED IDEOGRAPH - 0x9D7E: 0x6F42, //CJK UNIFIED IDEOGRAPH - 0x9D80: 0x6F43, //CJK UNIFIED IDEOGRAPH - 0x9D81: 0x6F44, //CJK UNIFIED IDEOGRAPH - 0x9D82: 0x6F45, //CJK UNIFIED IDEOGRAPH - 0x9D83: 0x6F48, //CJK UNIFIED IDEOGRAPH - 0x9D84: 0x6F49, //CJK UNIFIED IDEOGRAPH - 0x9D85: 0x6F4A, //CJK UNIFIED IDEOGRAPH - 0x9D86: 0x6F4C, //CJK UNIFIED IDEOGRAPH - 0x9D87: 0x6F4E, //CJK UNIFIED IDEOGRAPH - 0x9D88: 0x6F4F, //CJK UNIFIED IDEOGRAPH - 0x9D89: 0x6F50, //CJK UNIFIED IDEOGRAPH - 0x9D8A: 0x6F51, //CJK UNIFIED IDEOGRAPH - 0x9D8B: 0x6F52, //CJK UNIFIED IDEOGRAPH - 0x9D8C: 0x6F53, //CJK UNIFIED IDEOGRAPH - 0x9D8D: 0x6F54, //CJK UNIFIED IDEOGRAPH - 0x9D8E: 0x6F55, //CJK UNIFIED IDEOGRAPH - 0x9D8F: 0x6F56, //CJK UNIFIED IDEOGRAPH - 0x9D90: 0x6F57, //CJK UNIFIED IDEOGRAPH - 0x9D91: 0x6F59, //CJK UNIFIED IDEOGRAPH - 0x9D92: 0x6F5A, //CJK UNIFIED IDEOGRAPH - 0x9D93: 0x6F5B, //CJK UNIFIED IDEOGRAPH - 0x9D94: 0x6F5D, //CJK UNIFIED IDEOGRAPH - 0x9D95: 0x6F5F, //CJK UNIFIED IDEOGRAPH - 0x9D96: 0x6F60, //CJK UNIFIED IDEOGRAPH - 0x9D97: 0x6F61, //CJK UNIFIED IDEOGRAPH - 0x9D98: 0x6F63, //CJK UNIFIED IDEOGRAPH - 0x9D99: 0x6F64, //CJK UNIFIED IDEOGRAPH - 0x9D9A: 0x6F65, //CJK UNIFIED IDEOGRAPH - 0x9D9B: 0x6F67, //CJK UNIFIED IDEOGRAPH - 0x9D9C: 0x6F68, //CJK UNIFIED IDEOGRAPH - 0x9D9D: 0x6F69, //CJK UNIFIED IDEOGRAPH - 0x9D9E: 0x6F6A, //CJK UNIFIED IDEOGRAPH - 0x9D9F: 0x6F6B, //CJK UNIFIED IDEOGRAPH - 0x9DA0: 0x6F6C, //CJK UNIFIED IDEOGRAPH - 0x9DA1: 0x6F6F, //CJK UNIFIED IDEOGRAPH - 0x9DA2: 0x6F70, //CJK UNIFIED IDEOGRAPH - 0x9DA3: 0x6F71, //CJK UNIFIED IDEOGRAPH - 0x9DA4: 0x6F73, //CJK UNIFIED IDEOGRAPH - 0x9DA5: 0x6F75, //CJK UNIFIED IDEOGRAPH - 0x9DA6: 0x6F76, //CJK UNIFIED IDEOGRAPH - 0x9DA7: 0x6F77, //CJK UNIFIED IDEOGRAPH - 0x9DA8: 0x6F79, //CJK UNIFIED IDEOGRAPH - 0x9DA9: 0x6F7B, //CJK UNIFIED IDEOGRAPH - 0x9DAA: 0x6F7D, //CJK UNIFIED IDEOGRAPH - 0x9DAB: 0x6F7E, //CJK UNIFIED IDEOGRAPH - 0x9DAC: 0x6F7F, //CJK UNIFIED IDEOGRAPH - 0x9DAD: 0x6F80, //CJK UNIFIED IDEOGRAPH - 0x9DAE: 0x6F81, //CJK UNIFIED IDEOGRAPH - 0x9DAF: 0x6F82, //CJK UNIFIED IDEOGRAPH - 0x9DB0: 0x6F83, //CJK UNIFIED IDEOGRAPH - 0x9DB1: 0x6F85, //CJK UNIFIED IDEOGRAPH - 0x9DB2: 0x6F86, //CJK UNIFIED IDEOGRAPH - 0x9DB3: 0x6F87, //CJK UNIFIED IDEOGRAPH - 0x9DB4: 0x6F8A, //CJK UNIFIED IDEOGRAPH - 0x9DB5: 0x6F8B, //CJK UNIFIED IDEOGRAPH - 0x9DB6: 0x6F8F, //CJK UNIFIED IDEOGRAPH - 0x9DB7: 0x6F90, //CJK UNIFIED IDEOGRAPH - 0x9DB8: 0x6F91, //CJK UNIFIED IDEOGRAPH - 0x9DB9: 0x6F92, //CJK UNIFIED IDEOGRAPH - 0x9DBA: 0x6F93, //CJK UNIFIED IDEOGRAPH - 0x9DBB: 0x6F94, //CJK UNIFIED IDEOGRAPH - 0x9DBC: 0x6F95, //CJK UNIFIED IDEOGRAPH - 0x9DBD: 0x6F96, //CJK UNIFIED IDEOGRAPH - 0x9DBE: 0x6F97, //CJK UNIFIED IDEOGRAPH - 0x9DBF: 0x6F98, //CJK UNIFIED IDEOGRAPH - 0x9DC0: 0x6F99, //CJK UNIFIED IDEOGRAPH - 0x9DC1: 0x6F9A, //CJK UNIFIED IDEOGRAPH - 0x9DC2: 0x6F9B, //CJK UNIFIED IDEOGRAPH - 0x9DC3: 0x6F9D, //CJK UNIFIED IDEOGRAPH - 0x9DC4: 0x6F9E, //CJK UNIFIED IDEOGRAPH - 0x9DC5: 0x6F9F, //CJK UNIFIED IDEOGRAPH - 0x9DC6: 0x6FA0, //CJK UNIFIED IDEOGRAPH - 0x9DC7: 0x6FA2, //CJK UNIFIED IDEOGRAPH - 0x9DC8: 0x6FA3, //CJK UNIFIED IDEOGRAPH - 0x9DC9: 0x6FA4, //CJK UNIFIED IDEOGRAPH - 0x9DCA: 0x6FA5, //CJK UNIFIED IDEOGRAPH - 0x9DCB: 0x6FA6, //CJK UNIFIED IDEOGRAPH - 0x9DCC: 0x6FA8, //CJK UNIFIED IDEOGRAPH - 0x9DCD: 0x6FA9, //CJK UNIFIED IDEOGRAPH - 0x9DCE: 0x6FAA, //CJK UNIFIED IDEOGRAPH - 0x9DCF: 0x6FAB, //CJK UNIFIED IDEOGRAPH - 0x9DD0: 0x6FAC, //CJK UNIFIED IDEOGRAPH - 0x9DD1: 0x6FAD, //CJK UNIFIED IDEOGRAPH - 0x9DD2: 0x6FAE, //CJK UNIFIED IDEOGRAPH - 0x9DD3: 0x6FAF, //CJK UNIFIED IDEOGRAPH - 0x9DD4: 0x6FB0, //CJK UNIFIED IDEOGRAPH - 0x9DD5: 0x6FB1, //CJK UNIFIED IDEOGRAPH - 0x9DD6: 0x6FB2, //CJK UNIFIED IDEOGRAPH - 0x9DD7: 0x6FB4, //CJK UNIFIED IDEOGRAPH - 0x9DD8: 0x6FB5, //CJK UNIFIED IDEOGRAPH - 0x9DD9: 0x6FB7, //CJK UNIFIED IDEOGRAPH - 0x9DDA: 0x6FB8, //CJK UNIFIED IDEOGRAPH - 0x9DDB: 0x6FBA, //CJK UNIFIED IDEOGRAPH - 0x9DDC: 0x6FBB, //CJK UNIFIED IDEOGRAPH - 0x9DDD: 0x6FBC, //CJK UNIFIED IDEOGRAPH - 0x9DDE: 0x6FBD, //CJK UNIFIED IDEOGRAPH - 0x9DDF: 0x6FBE, //CJK UNIFIED IDEOGRAPH - 0x9DE0: 0x6FBF, //CJK UNIFIED IDEOGRAPH - 0x9DE1: 0x6FC1, //CJK UNIFIED IDEOGRAPH - 0x9DE2: 0x6FC3, //CJK UNIFIED IDEOGRAPH - 0x9DE3: 0x6FC4, //CJK UNIFIED IDEOGRAPH - 0x9DE4: 0x6FC5, //CJK UNIFIED IDEOGRAPH - 0x9DE5: 0x6FC6, //CJK UNIFIED IDEOGRAPH - 0x9DE6: 0x6FC7, //CJK UNIFIED IDEOGRAPH - 0x9DE7: 0x6FC8, //CJK UNIFIED IDEOGRAPH - 0x9DE8: 0x6FCA, //CJK UNIFIED IDEOGRAPH - 0x9DE9: 0x6FCB, //CJK UNIFIED IDEOGRAPH - 0x9DEA: 0x6FCC, //CJK UNIFIED IDEOGRAPH - 0x9DEB: 0x6FCD, //CJK UNIFIED IDEOGRAPH - 0x9DEC: 0x6FCE, //CJK UNIFIED IDEOGRAPH - 0x9DED: 0x6FCF, //CJK UNIFIED IDEOGRAPH - 0x9DEE: 0x6FD0, //CJK UNIFIED IDEOGRAPH - 0x9DEF: 0x6FD3, //CJK UNIFIED IDEOGRAPH - 0x9DF0: 0x6FD4, //CJK UNIFIED IDEOGRAPH - 0x9DF1: 0x6FD5, //CJK UNIFIED IDEOGRAPH - 0x9DF2: 0x6FD6, //CJK UNIFIED IDEOGRAPH - 0x9DF3: 0x6FD7, //CJK UNIFIED IDEOGRAPH - 0x9DF4: 0x6FD8, //CJK UNIFIED IDEOGRAPH - 0x9DF5: 0x6FD9, //CJK UNIFIED IDEOGRAPH - 0x9DF6: 0x6FDA, //CJK UNIFIED IDEOGRAPH - 0x9DF7: 0x6FDB, //CJK UNIFIED IDEOGRAPH - 0x9DF8: 0x6FDC, //CJK UNIFIED IDEOGRAPH - 0x9DF9: 0x6FDD, //CJK UNIFIED IDEOGRAPH - 0x9DFA: 0x6FDF, //CJK UNIFIED IDEOGRAPH - 0x9DFB: 0x6FE2, //CJK UNIFIED IDEOGRAPH - 0x9DFC: 0x6FE3, //CJK UNIFIED IDEOGRAPH - 0x9DFD: 0x6FE4, //CJK UNIFIED IDEOGRAPH - 0x9DFE: 0x6FE5, //CJK UNIFIED IDEOGRAPH - 0x9E40: 0x6FE6, //CJK UNIFIED IDEOGRAPH - 0x9E41: 0x6FE7, //CJK UNIFIED IDEOGRAPH - 0x9E42: 0x6FE8, //CJK UNIFIED IDEOGRAPH - 0x9E43: 0x6FE9, //CJK UNIFIED IDEOGRAPH - 0x9E44: 0x6FEA, //CJK UNIFIED IDEOGRAPH - 0x9E45: 0x6FEB, //CJK UNIFIED IDEOGRAPH - 0x9E46: 0x6FEC, //CJK UNIFIED IDEOGRAPH - 0x9E47: 0x6FED, //CJK UNIFIED IDEOGRAPH - 0x9E48: 0x6FF0, //CJK UNIFIED IDEOGRAPH - 0x9E49: 0x6FF1, //CJK UNIFIED IDEOGRAPH - 0x9E4A: 0x6FF2, //CJK UNIFIED IDEOGRAPH - 0x9E4B: 0x6FF3, //CJK UNIFIED IDEOGRAPH - 0x9E4C: 0x6FF4, //CJK UNIFIED IDEOGRAPH - 0x9E4D: 0x6FF5, //CJK UNIFIED IDEOGRAPH - 0x9E4E: 0x6FF6, //CJK UNIFIED IDEOGRAPH - 0x9E4F: 0x6FF7, //CJK UNIFIED IDEOGRAPH - 0x9E50: 0x6FF8, //CJK UNIFIED IDEOGRAPH - 0x9E51: 0x6FF9, //CJK UNIFIED IDEOGRAPH - 0x9E52: 0x6FFA, //CJK UNIFIED IDEOGRAPH - 0x9E53: 0x6FFB, //CJK UNIFIED IDEOGRAPH - 0x9E54: 0x6FFC, //CJK UNIFIED IDEOGRAPH - 0x9E55: 0x6FFD, //CJK UNIFIED IDEOGRAPH - 0x9E56: 0x6FFE, //CJK UNIFIED IDEOGRAPH - 0x9E57: 0x6FFF, //CJK UNIFIED IDEOGRAPH - 0x9E58: 0x7000, //CJK UNIFIED IDEOGRAPH - 0x9E59: 0x7001, //CJK UNIFIED IDEOGRAPH - 0x9E5A: 0x7002, //CJK UNIFIED IDEOGRAPH - 0x9E5B: 0x7003, //CJK UNIFIED IDEOGRAPH - 0x9E5C: 0x7004, //CJK UNIFIED IDEOGRAPH - 0x9E5D: 0x7005, //CJK UNIFIED IDEOGRAPH - 0x9E5E: 0x7006, //CJK UNIFIED IDEOGRAPH - 0x9E5F: 0x7007, //CJK UNIFIED IDEOGRAPH - 0x9E60: 0x7008, //CJK UNIFIED IDEOGRAPH - 0x9E61: 0x7009, //CJK UNIFIED IDEOGRAPH - 0x9E62: 0x700A, //CJK UNIFIED IDEOGRAPH - 0x9E63: 0x700B, //CJK UNIFIED IDEOGRAPH - 0x9E64: 0x700C, //CJK UNIFIED IDEOGRAPH - 0x9E65: 0x700D, //CJK UNIFIED IDEOGRAPH - 0x9E66: 0x700E, //CJK UNIFIED IDEOGRAPH - 0x9E67: 0x700F, //CJK UNIFIED IDEOGRAPH - 0x9E68: 0x7010, //CJK UNIFIED IDEOGRAPH - 0x9E69: 0x7012, //CJK UNIFIED IDEOGRAPH - 0x9E6A: 0x7013, //CJK UNIFIED IDEOGRAPH - 0x9E6B: 0x7014, //CJK UNIFIED IDEOGRAPH - 0x9E6C: 0x7015, //CJK UNIFIED IDEOGRAPH - 0x9E6D: 0x7016, //CJK UNIFIED IDEOGRAPH - 0x9E6E: 0x7017, //CJK UNIFIED IDEOGRAPH - 0x9E6F: 0x7018, //CJK UNIFIED IDEOGRAPH - 0x9E70: 0x7019, //CJK UNIFIED IDEOGRAPH - 0x9E71: 0x701C, //CJK UNIFIED IDEOGRAPH - 0x9E72: 0x701D, //CJK UNIFIED IDEOGRAPH - 0x9E73: 0x701E, //CJK UNIFIED IDEOGRAPH - 0x9E74: 0x701F, //CJK UNIFIED IDEOGRAPH - 0x9E75: 0x7020, //CJK UNIFIED IDEOGRAPH - 0x9E76: 0x7021, //CJK UNIFIED IDEOGRAPH - 0x9E77: 0x7022, //CJK UNIFIED IDEOGRAPH - 0x9E78: 0x7024, //CJK UNIFIED IDEOGRAPH - 0x9E79: 0x7025, //CJK UNIFIED IDEOGRAPH - 0x9E7A: 0x7026, //CJK UNIFIED IDEOGRAPH - 0x9E7B: 0x7027, //CJK UNIFIED IDEOGRAPH - 0x9E7C: 0x7028, //CJK UNIFIED IDEOGRAPH - 0x9E7D: 0x7029, //CJK UNIFIED IDEOGRAPH - 0x9E7E: 0x702A, //CJK UNIFIED IDEOGRAPH - 0x9E80: 0x702B, //CJK UNIFIED IDEOGRAPH - 0x9E81: 0x702C, //CJK UNIFIED IDEOGRAPH - 0x9E82: 0x702D, //CJK UNIFIED IDEOGRAPH - 0x9E83: 0x702E, //CJK UNIFIED IDEOGRAPH - 0x9E84: 0x702F, //CJK UNIFIED IDEOGRAPH - 0x9E85: 0x7030, //CJK UNIFIED IDEOGRAPH - 0x9E86: 0x7031, //CJK UNIFIED IDEOGRAPH - 0x9E87: 0x7032, //CJK UNIFIED IDEOGRAPH - 0x9E88: 0x7033, //CJK UNIFIED IDEOGRAPH - 0x9E89: 0x7034, //CJK UNIFIED IDEOGRAPH - 0x9E8A: 0x7036, //CJK UNIFIED IDEOGRAPH - 0x9E8B: 0x7037, //CJK UNIFIED IDEOGRAPH - 0x9E8C: 0x7038, //CJK UNIFIED IDEOGRAPH - 0x9E8D: 0x703A, //CJK UNIFIED IDEOGRAPH - 0x9E8E: 0x703B, //CJK UNIFIED IDEOGRAPH - 0x9E8F: 0x703C, //CJK UNIFIED IDEOGRAPH - 0x9E90: 0x703D, //CJK UNIFIED IDEOGRAPH - 0x9E91: 0x703E, //CJK UNIFIED IDEOGRAPH - 0x9E92: 0x703F, //CJK UNIFIED IDEOGRAPH - 0x9E93: 0x7040, //CJK UNIFIED IDEOGRAPH - 0x9E94: 0x7041, //CJK UNIFIED IDEOGRAPH - 0x9E95: 0x7042, //CJK UNIFIED IDEOGRAPH - 0x9E96: 0x7043, //CJK UNIFIED IDEOGRAPH - 0x9E97: 0x7044, //CJK UNIFIED IDEOGRAPH - 0x9E98: 0x7045, //CJK UNIFIED IDEOGRAPH - 0x9E99: 0x7046, //CJK UNIFIED IDEOGRAPH - 0x9E9A: 0x7047, //CJK UNIFIED IDEOGRAPH - 0x9E9B: 0x7048, //CJK UNIFIED IDEOGRAPH - 0x9E9C: 0x7049, //CJK UNIFIED IDEOGRAPH - 0x9E9D: 0x704A, //CJK UNIFIED IDEOGRAPH - 0x9E9E: 0x704B, //CJK UNIFIED IDEOGRAPH - 0x9E9F: 0x704D, //CJK UNIFIED IDEOGRAPH - 0x9EA0: 0x704E, //CJK UNIFIED IDEOGRAPH - 0x9EA1: 0x7050, //CJK UNIFIED IDEOGRAPH - 0x9EA2: 0x7051, //CJK UNIFIED IDEOGRAPH - 0x9EA3: 0x7052, //CJK UNIFIED IDEOGRAPH - 0x9EA4: 0x7053, //CJK UNIFIED IDEOGRAPH - 0x9EA5: 0x7054, //CJK UNIFIED IDEOGRAPH - 0x9EA6: 0x7055, //CJK UNIFIED IDEOGRAPH - 0x9EA7: 0x7056, //CJK UNIFIED IDEOGRAPH - 0x9EA8: 0x7057, //CJK UNIFIED IDEOGRAPH - 0x9EA9: 0x7058, //CJK UNIFIED IDEOGRAPH - 0x9EAA: 0x7059, //CJK UNIFIED IDEOGRAPH - 0x9EAB: 0x705A, //CJK UNIFIED IDEOGRAPH - 0x9EAC: 0x705B, //CJK UNIFIED IDEOGRAPH - 0x9EAD: 0x705C, //CJK UNIFIED IDEOGRAPH - 0x9EAE: 0x705D, //CJK UNIFIED IDEOGRAPH - 0x9EAF: 0x705F, //CJK UNIFIED IDEOGRAPH - 0x9EB0: 0x7060, //CJK UNIFIED IDEOGRAPH - 0x9EB1: 0x7061, //CJK UNIFIED IDEOGRAPH - 0x9EB2: 0x7062, //CJK UNIFIED IDEOGRAPH - 0x9EB3: 0x7063, //CJK UNIFIED IDEOGRAPH - 0x9EB4: 0x7064, //CJK UNIFIED IDEOGRAPH - 0x9EB5: 0x7065, //CJK UNIFIED IDEOGRAPH - 0x9EB6: 0x7066, //CJK UNIFIED IDEOGRAPH - 0x9EB7: 0x7067, //CJK UNIFIED IDEOGRAPH - 0x9EB8: 0x7068, //CJK UNIFIED IDEOGRAPH - 0x9EB9: 0x7069, //CJK UNIFIED IDEOGRAPH - 0x9EBA: 0x706A, //CJK UNIFIED IDEOGRAPH - 0x9EBB: 0x706E, //CJK UNIFIED IDEOGRAPH - 0x9EBC: 0x7071, //CJK UNIFIED IDEOGRAPH - 0x9EBD: 0x7072, //CJK UNIFIED IDEOGRAPH - 0x9EBE: 0x7073, //CJK UNIFIED IDEOGRAPH - 0x9EBF: 0x7074, //CJK UNIFIED IDEOGRAPH - 0x9EC0: 0x7077, //CJK UNIFIED IDEOGRAPH - 0x9EC1: 0x7079, //CJK UNIFIED IDEOGRAPH - 0x9EC2: 0x707A, //CJK UNIFIED IDEOGRAPH - 0x9EC3: 0x707B, //CJK UNIFIED IDEOGRAPH - 0x9EC4: 0x707D, //CJK UNIFIED IDEOGRAPH - 0x9EC5: 0x7081, //CJK UNIFIED IDEOGRAPH - 0x9EC6: 0x7082, //CJK UNIFIED IDEOGRAPH - 0x9EC7: 0x7083, //CJK UNIFIED IDEOGRAPH - 0x9EC8: 0x7084, //CJK UNIFIED IDEOGRAPH - 0x9EC9: 0x7086, //CJK UNIFIED IDEOGRAPH - 0x9ECA: 0x7087, //CJK UNIFIED IDEOGRAPH - 0x9ECB: 0x7088, //CJK UNIFIED IDEOGRAPH - 0x9ECC: 0x708B, //CJK UNIFIED IDEOGRAPH - 0x9ECD: 0x708C, //CJK UNIFIED IDEOGRAPH - 0x9ECE: 0x708D, //CJK UNIFIED IDEOGRAPH - 0x9ECF: 0x708F, //CJK UNIFIED IDEOGRAPH - 0x9ED0: 0x7090, //CJK UNIFIED IDEOGRAPH - 0x9ED1: 0x7091, //CJK UNIFIED IDEOGRAPH - 0x9ED2: 0x7093, //CJK UNIFIED IDEOGRAPH - 0x9ED3: 0x7097, //CJK UNIFIED IDEOGRAPH - 0x9ED4: 0x7098, //CJK UNIFIED IDEOGRAPH - 0x9ED5: 0x709A, //CJK UNIFIED IDEOGRAPH - 0x9ED6: 0x709B, //CJK UNIFIED IDEOGRAPH - 0x9ED7: 0x709E, //CJK UNIFIED IDEOGRAPH - 0x9ED8: 0x709F, //CJK UNIFIED IDEOGRAPH - 0x9ED9: 0x70A0, //CJK UNIFIED IDEOGRAPH - 0x9EDA: 0x70A1, //CJK UNIFIED IDEOGRAPH - 0x9EDB: 0x70A2, //CJK UNIFIED IDEOGRAPH - 0x9EDC: 0x70A3, //CJK UNIFIED IDEOGRAPH - 0x9EDD: 0x70A4, //CJK UNIFIED IDEOGRAPH - 0x9EDE: 0x70A5, //CJK UNIFIED IDEOGRAPH - 0x9EDF: 0x70A6, //CJK UNIFIED IDEOGRAPH - 0x9EE0: 0x70A7, //CJK UNIFIED IDEOGRAPH - 0x9EE1: 0x70A8, //CJK UNIFIED IDEOGRAPH - 0x9EE2: 0x70A9, //CJK UNIFIED IDEOGRAPH - 0x9EE3: 0x70AA, //CJK UNIFIED IDEOGRAPH - 0x9EE4: 0x70B0, //CJK UNIFIED IDEOGRAPH - 0x9EE5: 0x70B2, //CJK UNIFIED IDEOGRAPH - 0x9EE6: 0x70B4, //CJK UNIFIED IDEOGRAPH - 0x9EE7: 0x70B5, //CJK UNIFIED IDEOGRAPH - 0x9EE8: 0x70B6, //CJK UNIFIED IDEOGRAPH - 0x9EE9: 0x70BA, //CJK UNIFIED IDEOGRAPH - 0x9EEA: 0x70BE, //CJK UNIFIED IDEOGRAPH - 0x9EEB: 0x70BF, //CJK UNIFIED IDEOGRAPH - 0x9EEC: 0x70C4, //CJK UNIFIED IDEOGRAPH - 0x9EED: 0x70C5, //CJK UNIFIED IDEOGRAPH - 0x9EEE: 0x70C6, //CJK UNIFIED IDEOGRAPH - 0x9EEF: 0x70C7, //CJK UNIFIED IDEOGRAPH - 0x9EF0: 0x70C9, //CJK UNIFIED IDEOGRAPH - 0x9EF1: 0x70CB, //CJK UNIFIED IDEOGRAPH - 0x9EF2: 0x70CC, //CJK UNIFIED IDEOGRAPH - 0x9EF3: 0x70CD, //CJK UNIFIED IDEOGRAPH - 0x9EF4: 0x70CE, //CJK UNIFIED IDEOGRAPH - 0x9EF5: 0x70CF, //CJK UNIFIED IDEOGRAPH - 0x9EF6: 0x70D0, //CJK UNIFIED IDEOGRAPH - 0x9EF7: 0x70D1, //CJK UNIFIED IDEOGRAPH - 0x9EF8: 0x70D2, //CJK UNIFIED IDEOGRAPH - 0x9EF9: 0x70D3, //CJK UNIFIED IDEOGRAPH - 0x9EFA: 0x70D4, //CJK UNIFIED IDEOGRAPH - 0x9EFB: 0x70D5, //CJK UNIFIED IDEOGRAPH - 0x9EFC: 0x70D6, //CJK UNIFIED IDEOGRAPH - 0x9EFD: 0x70D7, //CJK UNIFIED IDEOGRAPH - 0x9EFE: 0x70DA, //CJK UNIFIED IDEOGRAPH - 0x9F40: 0x70DC, //CJK UNIFIED IDEOGRAPH - 0x9F41: 0x70DD, //CJK UNIFIED IDEOGRAPH - 0x9F42: 0x70DE, //CJK UNIFIED IDEOGRAPH - 0x9F43: 0x70E0, //CJK UNIFIED IDEOGRAPH - 0x9F44: 0x70E1, //CJK UNIFIED IDEOGRAPH - 0x9F45: 0x70E2, //CJK UNIFIED IDEOGRAPH - 0x9F46: 0x70E3, //CJK UNIFIED IDEOGRAPH - 0x9F47: 0x70E5, //CJK UNIFIED IDEOGRAPH - 0x9F48: 0x70EA, //CJK UNIFIED IDEOGRAPH - 0x9F49: 0x70EE, //CJK UNIFIED IDEOGRAPH - 0x9F4A: 0x70F0, //CJK UNIFIED IDEOGRAPH - 0x9F4B: 0x70F1, //CJK UNIFIED IDEOGRAPH - 0x9F4C: 0x70F2, //CJK UNIFIED IDEOGRAPH - 0x9F4D: 0x70F3, //CJK UNIFIED IDEOGRAPH - 0x9F4E: 0x70F4, //CJK UNIFIED IDEOGRAPH - 0x9F4F: 0x70F5, //CJK UNIFIED IDEOGRAPH - 0x9F50: 0x70F6, //CJK UNIFIED IDEOGRAPH - 0x9F51: 0x70F8, //CJK UNIFIED IDEOGRAPH - 0x9F52: 0x70FA, //CJK UNIFIED IDEOGRAPH - 0x9F53: 0x70FB, //CJK UNIFIED IDEOGRAPH - 0x9F54: 0x70FC, //CJK UNIFIED IDEOGRAPH - 0x9F55: 0x70FE, //CJK UNIFIED IDEOGRAPH - 0x9F56: 0x70FF, //CJK UNIFIED IDEOGRAPH - 0x9F57: 0x7100, //CJK UNIFIED IDEOGRAPH - 0x9F58: 0x7101, //CJK UNIFIED IDEOGRAPH - 0x9F59: 0x7102, //CJK UNIFIED IDEOGRAPH - 0x9F5A: 0x7103, //CJK UNIFIED IDEOGRAPH - 0x9F5B: 0x7104, //CJK UNIFIED IDEOGRAPH - 0x9F5C: 0x7105, //CJK UNIFIED IDEOGRAPH - 0x9F5D: 0x7106, //CJK UNIFIED IDEOGRAPH - 0x9F5E: 0x7107, //CJK UNIFIED IDEOGRAPH - 0x9F5F: 0x7108, //CJK UNIFIED IDEOGRAPH - 0x9F60: 0x710B, //CJK UNIFIED IDEOGRAPH - 0x9F61: 0x710C, //CJK UNIFIED IDEOGRAPH - 0x9F62: 0x710D, //CJK UNIFIED IDEOGRAPH - 0x9F63: 0x710E, //CJK UNIFIED IDEOGRAPH - 0x9F64: 0x710F, //CJK UNIFIED IDEOGRAPH - 0x9F65: 0x7111, //CJK UNIFIED IDEOGRAPH - 0x9F66: 0x7112, //CJK UNIFIED IDEOGRAPH - 0x9F67: 0x7114, //CJK UNIFIED IDEOGRAPH - 0x9F68: 0x7117, //CJK UNIFIED IDEOGRAPH - 0x9F69: 0x711B, //CJK UNIFIED IDEOGRAPH - 0x9F6A: 0x711C, //CJK UNIFIED IDEOGRAPH - 0x9F6B: 0x711D, //CJK UNIFIED IDEOGRAPH - 0x9F6C: 0x711E, //CJK UNIFIED IDEOGRAPH - 0x9F6D: 0x711F, //CJK UNIFIED IDEOGRAPH - 0x9F6E: 0x7120, //CJK UNIFIED IDEOGRAPH - 0x9F6F: 0x7121, //CJK UNIFIED IDEOGRAPH - 0x9F70: 0x7122, //CJK UNIFIED IDEOGRAPH - 0x9F71: 0x7123, //CJK UNIFIED IDEOGRAPH - 0x9F72: 0x7124, //CJK UNIFIED IDEOGRAPH - 0x9F73: 0x7125, //CJK UNIFIED IDEOGRAPH - 0x9F74: 0x7127, //CJK UNIFIED IDEOGRAPH - 0x9F75: 0x7128, //CJK UNIFIED IDEOGRAPH - 0x9F76: 0x7129, //CJK UNIFIED IDEOGRAPH - 0x9F77: 0x712A, //CJK UNIFIED IDEOGRAPH - 0x9F78: 0x712B, //CJK UNIFIED IDEOGRAPH - 0x9F79: 0x712C, //CJK UNIFIED IDEOGRAPH - 0x9F7A: 0x712D, //CJK UNIFIED IDEOGRAPH - 0x9F7B: 0x712E, //CJK UNIFIED IDEOGRAPH - 0x9F7C: 0x7132, //CJK UNIFIED IDEOGRAPH - 0x9F7D: 0x7133, //CJK UNIFIED IDEOGRAPH - 0x9F7E: 0x7134, //CJK UNIFIED IDEOGRAPH - 0x9F80: 0x7135, //CJK UNIFIED IDEOGRAPH - 0x9F81: 0x7137, //CJK UNIFIED IDEOGRAPH - 0x9F82: 0x7138, //CJK UNIFIED IDEOGRAPH - 0x9F83: 0x7139, //CJK UNIFIED IDEOGRAPH - 0x9F84: 0x713A, //CJK UNIFIED IDEOGRAPH - 0x9F85: 0x713B, //CJK UNIFIED IDEOGRAPH - 0x9F86: 0x713C, //CJK UNIFIED IDEOGRAPH - 0x9F87: 0x713D, //CJK UNIFIED IDEOGRAPH - 0x9F88: 0x713E, //CJK UNIFIED IDEOGRAPH - 0x9F89: 0x713F, //CJK UNIFIED IDEOGRAPH - 0x9F8A: 0x7140, //CJK UNIFIED IDEOGRAPH - 0x9F8B: 0x7141, //CJK UNIFIED IDEOGRAPH - 0x9F8C: 0x7142, //CJK UNIFIED IDEOGRAPH - 0x9F8D: 0x7143, //CJK UNIFIED IDEOGRAPH - 0x9F8E: 0x7144, //CJK UNIFIED IDEOGRAPH - 0x9F8F: 0x7146, //CJK UNIFIED IDEOGRAPH - 0x9F90: 0x7147, //CJK UNIFIED IDEOGRAPH - 0x9F91: 0x7148, //CJK UNIFIED IDEOGRAPH - 0x9F92: 0x7149, //CJK UNIFIED IDEOGRAPH - 0x9F93: 0x714B, //CJK UNIFIED IDEOGRAPH - 0x9F94: 0x714D, //CJK UNIFIED IDEOGRAPH - 0x9F95: 0x714F, //CJK UNIFIED IDEOGRAPH - 0x9F96: 0x7150, //CJK UNIFIED IDEOGRAPH - 0x9F97: 0x7151, //CJK UNIFIED IDEOGRAPH - 0x9F98: 0x7152, //CJK UNIFIED IDEOGRAPH - 0x9F99: 0x7153, //CJK UNIFIED IDEOGRAPH - 0x9F9A: 0x7154, //CJK UNIFIED IDEOGRAPH - 0x9F9B: 0x7155, //CJK UNIFIED IDEOGRAPH - 0x9F9C: 0x7156, //CJK UNIFIED IDEOGRAPH - 0x9F9D: 0x7157, //CJK UNIFIED IDEOGRAPH - 0x9F9E: 0x7158, //CJK UNIFIED IDEOGRAPH - 0x9F9F: 0x7159, //CJK UNIFIED IDEOGRAPH - 0x9FA0: 0x715A, //CJK UNIFIED IDEOGRAPH - 0x9FA1: 0x715B, //CJK UNIFIED IDEOGRAPH - 0x9FA2: 0x715D, //CJK UNIFIED IDEOGRAPH - 0x9FA3: 0x715F, //CJK UNIFIED IDEOGRAPH - 0x9FA4: 0x7160, //CJK UNIFIED IDEOGRAPH - 0x9FA5: 0x7161, //CJK UNIFIED IDEOGRAPH - 0x9FA6: 0x7162, //CJK UNIFIED IDEOGRAPH - 0x9FA7: 0x7163, //CJK UNIFIED IDEOGRAPH - 0x9FA8: 0x7165, //CJK UNIFIED IDEOGRAPH - 0x9FA9: 0x7169, //CJK UNIFIED IDEOGRAPH - 0x9FAA: 0x716A, //CJK UNIFIED IDEOGRAPH - 0x9FAB: 0x716B, //CJK UNIFIED IDEOGRAPH - 0x9FAC: 0x716C, //CJK UNIFIED IDEOGRAPH - 0x9FAD: 0x716D, //CJK UNIFIED IDEOGRAPH - 0x9FAE: 0x716F, //CJK UNIFIED IDEOGRAPH - 0x9FAF: 0x7170, //CJK UNIFIED IDEOGRAPH - 0x9FB0: 0x7171, //CJK UNIFIED IDEOGRAPH - 0x9FB1: 0x7174, //CJK UNIFIED IDEOGRAPH - 0x9FB2: 0x7175, //CJK UNIFIED IDEOGRAPH - 0x9FB3: 0x7176, //CJK UNIFIED IDEOGRAPH - 0x9FB4: 0x7177, //CJK UNIFIED IDEOGRAPH - 0x9FB5: 0x7179, //CJK UNIFIED IDEOGRAPH - 0x9FB6: 0x717B, //CJK UNIFIED IDEOGRAPH - 0x9FB7: 0x717C, //CJK UNIFIED IDEOGRAPH - 0x9FB8: 0x717E, //CJK UNIFIED IDEOGRAPH - 0x9FB9: 0x717F, //CJK UNIFIED IDEOGRAPH - 0x9FBA: 0x7180, //CJK UNIFIED IDEOGRAPH - 0x9FBB: 0x7181, //CJK UNIFIED IDEOGRAPH - 0x9FBC: 0x7182, //CJK UNIFIED IDEOGRAPH - 0x9FBD: 0x7183, //CJK UNIFIED IDEOGRAPH - 0x9FBE: 0x7185, //CJK UNIFIED IDEOGRAPH - 0x9FBF: 0x7186, //CJK UNIFIED IDEOGRAPH - 0x9FC0: 0x7187, //CJK UNIFIED IDEOGRAPH - 0x9FC1: 0x7188, //CJK UNIFIED IDEOGRAPH - 0x9FC2: 0x7189, //CJK UNIFIED IDEOGRAPH - 0x9FC3: 0x718B, //CJK UNIFIED IDEOGRAPH - 0x9FC4: 0x718C, //CJK UNIFIED IDEOGRAPH - 0x9FC5: 0x718D, //CJK UNIFIED IDEOGRAPH - 0x9FC6: 0x718E, //CJK UNIFIED IDEOGRAPH - 0x9FC7: 0x7190, //CJK UNIFIED IDEOGRAPH - 0x9FC8: 0x7191, //CJK UNIFIED IDEOGRAPH - 0x9FC9: 0x7192, //CJK UNIFIED IDEOGRAPH - 0x9FCA: 0x7193, //CJK UNIFIED IDEOGRAPH - 0x9FCB: 0x7195, //CJK UNIFIED IDEOGRAPH - 0x9FCC: 0x7196, //CJK UNIFIED IDEOGRAPH - 0x9FCD: 0x7197, //CJK UNIFIED IDEOGRAPH - 0x9FCE: 0x719A, //CJK UNIFIED IDEOGRAPH - 0x9FCF: 0x719B, //CJK UNIFIED IDEOGRAPH - 0x9FD0: 0x719C, //CJK UNIFIED IDEOGRAPH - 0x9FD1: 0x719D, //CJK UNIFIED IDEOGRAPH - 0x9FD2: 0x719E, //CJK UNIFIED IDEOGRAPH - 0x9FD3: 0x71A1, //CJK UNIFIED IDEOGRAPH - 0x9FD4: 0x71A2, //CJK UNIFIED IDEOGRAPH - 0x9FD5: 0x71A3, //CJK UNIFIED IDEOGRAPH - 0x9FD6: 0x71A4, //CJK UNIFIED IDEOGRAPH - 0x9FD7: 0x71A5, //CJK UNIFIED IDEOGRAPH - 0x9FD8: 0x71A6, //CJK UNIFIED IDEOGRAPH - 0x9FD9: 0x71A7, //CJK UNIFIED IDEOGRAPH - 0x9FDA: 0x71A9, //CJK UNIFIED IDEOGRAPH - 0x9FDB: 0x71AA, //CJK UNIFIED IDEOGRAPH - 0x9FDC: 0x71AB, //CJK UNIFIED IDEOGRAPH - 0x9FDD: 0x71AD, //CJK UNIFIED IDEOGRAPH - 0x9FDE: 0x71AE, //CJK UNIFIED IDEOGRAPH - 0x9FDF: 0x71AF, //CJK UNIFIED IDEOGRAPH - 0x9FE0: 0x71B0, //CJK UNIFIED IDEOGRAPH - 0x9FE1: 0x71B1, //CJK UNIFIED IDEOGRAPH - 0x9FE2: 0x71B2, //CJK UNIFIED IDEOGRAPH - 0x9FE3: 0x71B4, //CJK UNIFIED IDEOGRAPH - 0x9FE4: 0x71B6, //CJK UNIFIED IDEOGRAPH - 0x9FE5: 0x71B7, //CJK UNIFIED IDEOGRAPH - 0x9FE6: 0x71B8, //CJK UNIFIED IDEOGRAPH - 0x9FE7: 0x71BA, //CJK UNIFIED IDEOGRAPH - 0x9FE8: 0x71BB, //CJK UNIFIED IDEOGRAPH - 0x9FE9: 0x71BC, //CJK UNIFIED IDEOGRAPH - 0x9FEA: 0x71BD, //CJK UNIFIED IDEOGRAPH - 0x9FEB: 0x71BE, //CJK UNIFIED IDEOGRAPH - 0x9FEC: 0x71BF, //CJK UNIFIED IDEOGRAPH - 0x9FED: 0x71C0, //CJK UNIFIED IDEOGRAPH - 0x9FEE: 0x71C1, //CJK UNIFIED IDEOGRAPH - 0x9FEF: 0x71C2, //CJK UNIFIED IDEOGRAPH - 0x9FF0: 0x71C4, //CJK UNIFIED IDEOGRAPH - 0x9FF1: 0x71C5, //CJK UNIFIED IDEOGRAPH - 0x9FF2: 0x71C6, //CJK UNIFIED IDEOGRAPH - 0x9FF3: 0x71C7, //CJK UNIFIED IDEOGRAPH - 0x9FF4: 0x71C8, //CJK UNIFIED IDEOGRAPH - 0x9FF5: 0x71C9, //CJK UNIFIED IDEOGRAPH - 0x9FF6: 0x71CA, //CJK UNIFIED IDEOGRAPH - 0x9FF7: 0x71CB, //CJK UNIFIED IDEOGRAPH - 0x9FF8: 0x71CC, //CJK UNIFIED IDEOGRAPH - 0x9FF9: 0x71CD, //CJK UNIFIED IDEOGRAPH - 0x9FFA: 0x71CF, //CJK UNIFIED IDEOGRAPH - 0x9FFB: 0x71D0, //CJK UNIFIED IDEOGRAPH - 0x9FFC: 0x71D1, //CJK UNIFIED IDEOGRAPH - 0x9FFD: 0x71D2, //CJK UNIFIED IDEOGRAPH - 0x9FFE: 0x71D3, //CJK UNIFIED IDEOGRAPH - 0xA040: 0x71D6, //CJK UNIFIED IDEOGRAPH - 0xA041: 0x71D7, //CJK UNIFIED IDEOGRAPH - 0xA042: 0x71D8, //CJK UNIFIED IDEOGRAPH - 0xA043: 0x71D9, //CJK UNIFIED IDEOGRAPH - 0xA044: 0x71DA, //CJK UNIFIED IDEOGRAPH - 0xA045: 0x71DB, //CJK UNIFIED IDEOGRAPH - 0xA046: 0x71DC, //CJK UNIFIED IDEOGRAPH - 0xA047: 0x71DD, //CJK UNIFIED IDEOGRAPH - 0xA048: 0x71DE, //CJK UNIFIED IDEOGRAPH - 0xA049: 0x71DF, //CJK UNIFIED IDEOGRAPH - 0xA04A: 0x71E1, //CJK UNIFIED IDEOGRAPH - 0xA04B: 0x71E2, //CJK UNIFIED IDEOGRAPH - 0xA04C: 0x71E3, //CJK UNIFIED IDEOGRAPH - 0xA04D: 0x71E4, //CJK UNIFIED IDEOGRAPH - 0xA04E: 0x71E6, //CJK UNIFIED IDEOGRAPH - 0xA04F: 0x71E8, //CJK UNIFIED IDEOGRAPH - 0xA050: 0x71E9, //CJK UNIFIED IDEOGRAPH - 0xA051: 0x71EA, //CJK UNIFIED IDEOGRAPH - 0xA052: 0x71EB, //CJK UNIFIED IDEOGRAPH - 0xA053: 0x71EC, //CJK UNIFIED IDEOGRAPH - 0xA054: 0x71ED, //CJK UNIFIED IDEOGRAPH - 0xA055: 0x71EF, //CJK UNIFIED IDEOGRAPH - 0xA056: 0x71F0, //CJK UNIFIED IDEOGRAPH - 0xA057: 0x71F1, //CJK UNIFIED IDEOGRAPH - 0xA058: 0x71F2, //CJK UNIFIED IDEOGRAPH - 0xA059: 0x71F3, //CJK UNIFIED IDEOGRAPH - 0xA05A: 0x71F4, //CJK UNIFIED IDEOGRAPH - 0xA05B: 0x71F5, //CJK UNIFIED IDEOGRAPH - 0xA05C: 0x71F6, //CJK UNIFIED IDEOGRAPH - 0xA05D: 0x71F7, //CJK UNIFIED IDEOGRAPH - 0xA05E: 0x71F8, //CJK UNIFIED IDEOGRAPH - 0xA05F: 0x71FA, //CJK UNIFIED IDEOGRAPH - 0xA060: 0x71FB, //CJK UNIFIED IDEOGRAPH - 0xA061: 0x71FC, //CJK UNIFIED IDEOGRAPH - 0xA062: 0x71FD, //CJK UNIFIED IDEOGRAPH - 0xA063: 0x71FE, //CJK UNIFIED IDEOGRAPH - 0xA064: 0x71FF, //CJK UNIFIED IDEOGRAPH - 0xA065: 0x7200, //CJK UNIFIED IDEOGRAPH - 0xA066: 0x7201, //CJK UNIFIED IDEOGRAPH - 0xA067: 0x7202, //CJK UNIFIED IDEOGRAPH - 0xA068: 0x7203, //CJK UNIFIED IDEOGRAPH - 0xA069: 0x7204, //CJK UNIFIED IDEOGRAPH - 0xA06A: 0x7205, //CJK UNIFIED IDEOGRAPH - 0xA06B: 0x7207, //CJK UNIFIED IDEOGRAPH - 0xA06C: 0x7208, //CJK UNIFIED IDEOGRAPH - 0xA06D: 0x7209, //CJK UNIFIED IDEOGRAPH - 0xA06E: 0x720A, //CJK UNIFIED IDEOGRAPH - 0xA06F: 0x720B, //CJK UNIFIED IDEOGRAPH - 0xA070: 0x720C, //CJK UNIFIED IDEOGRAPH - 0xA071: 0x720D, //CJK UNIFIED IDEOGRAPH - 0xA072: 0x720E, //CJK UNIFIED IDEOGRAPH - 0xA073: 0x720F, //CJK UNIFIED IDEOGRAPH - 0xA074: 0x7210, //CJK UNIFIED IDEOGRAPH - 0xA075: 0x7211, //CJK UNIFIED IDEOGRAPH - 0xA076: 0x7212, //CJK UNIFIED IDEOGRAPH - 0xA077: 0x7213, //CJK UNIFIED IDEOGRAPH - 0xA078: 0x7214, //CJK UNIFIED IDEOGRAPH - 0xA079: 0x7215, //CJK UNIFIED IDEOGRAPH - 0xA07A: 0x7216, //CJK UNIFIED IDEOGRAPH - 0xA07B: 0x7217, //CJK UNIFIED IDEOGRAPH - 0xA07C: 0x7218, //CJK UNIFIED IDEOGRAPH - 0xA07D: 0x7219, //CJK UNIFIED IDEOGRAPH - 0xA07E: 0x721A, //CJK UNIFIED IDEOGRAPH - 0xA080: 0x721B, //CJK UNIFIED IDEOGRAPH - 0xA081: 0x721C, //CJK UNIFIED IDEOGRAPH - 0xA082: 0x721E, //CJK UNIFIED IDEOGRAPH - 0xA083: 0x721F, //CJK UNIFIED IDEOGRAPH - 0xA084: 0x7220, //CJK UNIFIED IDEOGRAPH - 0xA085: 0x7221, //CJK UNIFIED IDEOGRAPH - 0xA086: 0x7222, //CJK UNIFIED IDEOGRAPH - 0xA087: 0x7223, //CJK UNIFIED IDEOGRAPH - 0xA088: 0x7224, //CJK UNIFIED IDEOGRAPH - 0xA089: 0x7225, //CJK UNIFIED IDEOGRAPH - 0xA08A: 0x7226, //CJK UNIFIED IDEOGRAPH - 0xA08B: 0x7227, //CJK UNIFIED IDEOGRAPH - 0xA08C: 0x7229, //CJK UNIFIED IDEOGRAPH - 0xA08D: 0x722B, //CJK UNIFIED IDEOGRAPH - 0xA08E: 0x722D, //CJK UNIFIED IDEOGRAPH - 0xA08F: 0x722E, //CJK UNIFIED IDEOGRAPH - 0xA090: 0x722F, //CJK UNIFIED IDEOGRAPH - 0xA091: 0x7232, //CJK UNIFIED IDEOGRAPH - 0xA092: 0x7233, //CJK UNIFIED IDEOGRAPH - 0xA093: 0x7234, //CJK UNIFIED IDEOGRAPH - 0xA094: 0x723A, //CJK UNIFIED IDEOGRAPH - 0xA095: 0x723C, //CJK UNIFIED IDEOGRAPH - 0xA096: 0x723E, //CJK UNIFIED IDEOGRAPH - 0xA097: 0x7240, //CJK UNIFIED IDEOGRAPH - 0xA098: 0x7241, //CJK UNIFIED IDEOGRAPH - 0xA099: 0x7242, //CJK UNIFIED IDEOGRAPH - 0xA09A: 0x7243, //CJK UNIFIED IDEOGRAPH - 0xA09B: 0x7244, //CJK UNIFIED IDEOGRAPH - 0xA09C: 0x7245, //CJK UNIFIED IDEOGRAPH - 0xA09D: 0x7246, //CJK UNIFIED IDEOGRAPH - 0xA09E: 0x7249, //CJK UNIFIED IDEOGRAPH - 0xA09F: 0x724A, //CJK UNIFIED IDEOGRAPH - 0xA0A0: 0x724B, //CJK UNIFIED IDEOGRAPH - 0xA0A1: 0x724E, //CJK UNIFIED IDEOGRAPH - 0xA0A2: 0x724F, //CJK UNIFIED IDEOGRAPH - 0xA0A3: 0x7250, //CJK UNIFIED IDEOGRAPH - 0xA0A4: 0x7251, //CJK UNIFIED IDEOGRAPH - 0xA0A5: 0x7253, //CJK UNIFIED IDEOGRAPH - 0xA0A6: 0x7254, //CJK UNIFIED IDEOGRAPH - 0xA0A7: 0x7255, //CJK UNIFIED IDEOGRAPH - 0xA0A8: 0x7257, //CJK UNIFIED IDEOGRAPH - 0xA0A9: 0x7258, //CJK UNIFIED IDEOGRAPH - 0xA0AA: 0x725A, //CJK UNIFIED IDEOGRAPH - 0xA0AB: 0x725C, //CJK UNIFIED IDEOGRAPH - 0xA0AC: 0x725E, //CJK UNIFIED IDEOGRAPH - 0xA0AD: 0x7260, //CJK UNIFIED IDEOGRAPH - 0xA0AE: 0x7263, //CJK UNIFIED IDEOGRAPH - 0xA0AF: 0x7264, //CJK UNIFIED IDEOGRAPH - 0xA0B0: 0x7265, //CJK UNIFIED IDEOGRAPH - 0xA0B1: 0x7268, //CJK UNIFIED IDEOGRAPH - 0xA0B2: 0x726A, //CJK UNIFIED IDEOGRAPH - 0xA0B3: 0x726B, //CJK UNIFIED IDEOGRAPH - 0xA0B4: 0x726C, //CJK UNIFIED IDEOGRAPH - 0xA0B5: 0x726D, //CJK UNIFIED IDEOGRAPH - 0xA0B6: 0x7270, //CJK UNIFIED IDEOGRAPH - 0xA0B7: 0x7271, //CJK UNIFIED IDEOGRAPH - 0xA0B8: 0x7273, //CJK UNIFIED IDEOGRAPH - 0xA0B9: 0x7274, //CJK UNIFIED IDEOGRAPH - 0xA0BA: 0x7276, //CJK UNIFIED IDEOGRAPH - 0xA0BB: 0x7277, //CJK UNIFIED IDEOGRAPH - 0xA0BC: 0x7278, //CJK UNIFIED IDEOGRAPH - 0xA0BD: 0x727B, //CJK UNIFIED IDEOGRAPH - 0xA0BE: 0x727C, //CJK UNIFIED IDEOGRAPH - 0xA0BF: 0x727D, //CJK UNIFIED IDEOGRAPH - 0xA0C0: 0x7282, //CJK UNIFIED IDEOGRAPH - 0xA0C1: 0x7283, //CJK UNIFIED IDEOGRAPH - 0xA0C2: 0x7285, //CJK UNIFIED IDEOGRAPH - 0xA0C3: 0x7286, //CJK UNIFIED IDEOGRAPH - 0xA0C4: 0x7287, //CJK UNIFIED IDEOGRAPH - 0xA0C5: 0x7288, //CJK UNIFIED IDEOGRAPH - 0xA0C6: 0x7289, //CJK UNIFIED IDEOGRAPH - 0xA0C7: 0x728C, //CJK UNIFIED IDEOGRAPH - 0xA0C8: 0x728E, //CJK UNIFIED IDEOGRAPH - 0xA0C9: 0x7290, //CJK UNIFIED IDEOGRAPH - 0xA0CA: 0x7291, //CJK UNIFIED IDEOGRAPH - 0xA0CB: 0x7293, //CJK UNIFIED IDEOGRAPH - 0xA0CC: 0x7294, //CJK UNIFIED IDEOGRAPH - 0xA0CD: 0x7295, //CJK UNIFIED IDEOGRAPH - 0xA0CE: 0x7296, //CJK UNIFIED IDEOGRAPH - 0xA0CF: 0x7297, //CJK UNIFIED IDEOGRAPH - 0xA0D0: 0x7298, //CJK UNIFIED IDEOGRAPH - 0xA0D1: 0x7299, //CJK UNIFIED IDEOGRAPH - 0xA0D2: 0x729A, //CJK UNIFIED IDEOGRAPH - 0xA0D3: 0x729B, //CJK UNIFIED IDEOGRAPH - 0xA0D4: 0x729C, //CJK UNIFIED IDEOGRAPH - 0xA0D5: 0x729D, //CJK UNIFIED IDEOGRAPH - 0xA0D6: 0x729E, //CJK UNIFIED IDEOGRAPH - 0xA0D7: 0x72A0, //CJK UNIFIED IDEOGRAPH - 0xA0D8: 0x72A1, //CJK UNIFIED IDEOGRAPH - 0xA0D9: 0x72A2, //CJK UNIFIED IDEOGRAPH - 0xA0DA: 0x72A3, //CJK UNIFIED IDEOGRAPH - 0xA0DB: 0x72A4, //CJK UNIFIED IDEOGRAPH - 0xA0DC: 0x72A5, //CJK UNIFIED IDEOGRAPH - 0xA0DD: 0x72A6, //CJK UNIFIED IDEOGRAPH - 0xA0DE: 0x72A7, //CJK UNIFIED IDEOGRAPH - 0xA0DF: 0x72A8, //CJK UNIFIED IDEOGRAPH - 0xA0E0: 0x72A9, //CJK UNIFIED IDEOGRAPH - 0xA0E1: 0x72AA, //CJK UNIFIED IDEOGRAPH - 0xA0E2: 0x72AB, //CJK UNIFIED IDEOGRAPH - 0xA0E3: 0x72AE, //CJK UNIFIED IDEOGRAPH - 0xA0E4: 0x72B1, //CJK UNIFIED IDEOGRAPH - 0xA0E5: 0x72B2, //CJK UNIFIED IDEOGRAPH - 0xA0E6: 0x72B3, //CJK UNIFIED IDEOGRAPH - 0xA0E7: 0x72B5, //CJK UNIFIED IDEOGRAPH - 0xA0E8: 0x72BA, //CJK UNIFIED IDEOGRAPH - 0xA0E9: 0x72BB, //CJK UNIFIED IDEOGRAPH - 0xA0EA: 0x72BC, //CJK UNIFIED IDEOGRAPH - 0xA0EB: 0x72BD, //CJK UNIFIED IDEOGRAPH - 0xA0EC: 0x72BE, //CJK UNIFIED IDEOGRAPH - 0xA0ED: 0x72BF, //CJK UNIFIED IDEOGRAPH - 0xA0EE: 0x72C0, //CJK UNIFIED IDEOGRAPH - 0xA0EF: 0x72C5, //CJK UNIFIED IDEOGRAPH - 0xA0F0: 0x72C6, //CJK UNIFIED IDEOGRAPH - 0xA0F1: 0x72C7, //CJK UNIFIED IDEOGRAPH - 0xA0F2: 0x72C9, //CJK UNIFIED IDEOGRAPH - 0xA0F3: 0x72CA, //CJK UNIFIED IDEOGRAPH - 0xA0F4: 0x72CB, //CJK UNIFIED IDEOGRAPH - 0xA0F5: 0x72CC, //CJK UNIFIED IDEOGRAPH - 0xA0F6: 0x72CF, //CJK UNIFIED IDEOGRAPH - 0xA0F7: 0x72D1, //CJK UNIFIED IDEOGRAPH - 0xA0F8: 0x72D3, //CJK UNIFIED IDEOGRAPH - 0xA0F9: 0x72D4, //CJK UNIFIED IDEOGRAPH - 0xA0FA: 0x72D5, //CJK UNIFIED IDEOGRAPH - 0xA0FB: 0x72D6, //CJK UNIFIED IDEOGRAPH - 0xA0FC: 0x72D8, //CJK UNIFIED IDEOGRAPH - 0xA0FD: 0x72DA, //CJK UNIFIED IDEOGRAPH - 0xA0FE: 0x72DB, //CJK UNIFIED IDEOGRAPH - 0xA1A1: 0x3000, //IDEOGRAPHIC SPACE - 0xA1A2: 0x3001, //IDEOGRAPHIC COMMA - 0xA1A3: 0x3002, //IDEOGRAPHIC FULL STOP - 0xA1A4: 0x00B7, //MIDDLE DOT - 0xA1A5: 0x02C9, //MODIFIER LETTER MACRON - 0xA1A6: 0x02C7, //CARON - 0xA1A7: 0x00A8, //DIAERESIS - 0xA1A8: 0x3003, //DITTO MARK - 0xA1A9: 0x3005, //IDEOGRAPHIC ITERATION MARK - 0xA1AA: 0x2014, //EM DASH - 0xA1AB: 0xFF5E, //FULLWIDTH TILDE - 0xA1AC: 0x2016, //DOUBLE VERTICAL LINE - 0xA1AD: 0x2026, //HORIZONTAL ELLIPSIS - 0xA1AE: 0x2018, //LEFT SINGLE QUOTATION MARK - 0xA1AF: 0x2019, //RIGHT SINGLE QUOTATION MARK - 0xA1B0: 0x201C, //LEFT DOUBLE QUOTATION MARK - 0xA1B1: 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0xA1B2: 0x3014, //LEFT TORTOISE SHELL BRACKET - 0xA1B3: 0x3015, //RIGHT TORTOISE SHELL BRACKET - 0xA1B4: 0x3008, //LEFT ANGLE BRACKET - 0xA1B5: 0x3009, //RIGHT ANGLE BRACKET - 0xA1B6: 0x300A, //LEFT DOUBLE ANGLE BRACKET - 0xA1B7: 0x300B, //RIGHT DOUBLE ANGLE BRACKET - 0xA1B8: 0x300C, //LEFT CORNER BRACKET - 0xA1B9: 0x300D, //RIGHT CORNER BRACKET - 0xA1BA: 0x300E, //LEFT WHITE CORNER BRACKET - 0xA1BB: 0x300F, //RIGHT WHITE CORNER BRACKET - 0xA1BC: 0x3016, //LEFT WHITE LENTICULAR BRACKET - 0xA1BD: 0x3017, //RIGHT WHITE LENTICULAR BRACKET - 0xA1BE: 0x3010, //LEFT BLACK LENTICULAR BRACKET - 0xA1BF: 0x3011, //RIGHT BLACK LENTICULAR BRACKET - 0xA1C0: 0x00B1, //PLUS-MINUS SIGN - 0xA1C1: 0x00D7, //MULTIPLICATION SIGN - 0xA1C2: 0x00F7, //DIVISION SIGN - 0xA1C3: 0x2236, //RATIO - 0xA1C4: 0x2227, //LOGICAL AND - 0xA1C5: 0x2228, //LOGICAL OR - 0xA1C6: 0x2211, //N-ARY SUMMATION - 0xA1C7: 0x220F, //N-ARY PRODUCT - 0xA1C8: 0x222A, //UNION - 0xA1C9: 0x2229, //INTERSECTION - 0xA1CA: 0x2208, //ELEMENT OF - 0xA1CB: 0x2237, //PROPORTION - 0xA1CC: 0x221A, //SQUARE ROOT - 0xA1CD: 0x22A5, //UP TACK - 0xA1CE: 0x2225, //PARALLEL TO - 0xA1CF: 0x2220, //ANGLE - 0xA1D0: 0x2312, //ARC - 0xA1D1: 0x2299, //CIRCLED DOT OPERATOR - 0xA1D2: 0x222B, //INTEGRAL - 0xA1D3: 0x222E, //CONTOUR INTEGRAL - 0xA1D4: 0x2261, //IDENTICAL TO - 0xA1D5: 0x224C, //ALL EQUAL TO - 0xA1D6: 0x2248, //ALMOST EQUAL TO - 0xA1D7: 0x223D, //REVERSED TILDE - 0xA1D8: 0x221D, //PROPORTIONAL TO - 0xA1D9: 0x2260, //NOT EQUAL TO - 0xA1DA: 0x226E, //NOT LESS-THAN - 0xA1DB: 0x226F, //NOT GREATER-THAN - 0xA1DC: 0x2264, //LESS-THAN OR EQUAL TO - 0xA1DD: 0x2265, //GREATER-THAN OR EQUAL TO - 0xA1DE: 0x221E, //INFINITY - 0xA1DF: 0x2235, //BECAUSE - 0xA1E0: 0x2234, //THEREFORE - 0xA1E1: 0x2642, //MALE SIGN - 0xA1E2: 0x2640, //FEMALE SIGN - 0xA1E3: 0x00B0, //DEGREE SIGN - 0xA1E4: 0x2032, //PRIME - 0xA1E5: 0x2033, //DOUBLE PRIME - 0xA1E6: 0x2103, //DEGREE CELSIUS - 0xA1E7: 0xFF04, //FULLWIDTH DOLLAR SIGN - 0xA1E8: 0x00A4, //CURRENCY SIGN - 0xA1E9: 0xFFE0, //FULLWIDTH CENT SIGN - 0xA1EA: 0xFFE1, //FULLWIDTH POUND SIGN - 0xA1EB: 0x2030, //PER MILLE SIGN - 0xA1EC: 0x00A7, //SECTION SIGN - 0xA1ED: 0x2116, //NUMERO SIGN - 0xA1EE: 0x2606, //WHITE STAR - 0xA1EF: 0x2605, //BLACK STAR - 0xA1F0: 0x25CB, //WHITE CIRCLE - 0xA1F1: 0x25CF, //BLACK CIRCLE - 0xA1F2: 0x25CE, //BULLSEYE - 0xA1F3: 0x25C7, //WHITE DIAMOND - 0xA1F4: 0x25C6, //BLACK DIAMOND - 0xA1F5: 0x25A1, //WHITE SQUARE - 0xA1F6: 0x25A0, //BLACK SQUARE - 0xA1F7: 0x25B3, //WHITE UP-POINTING TRIANGLE - 0xA1F8: 0x25B2, //BLACK UP-POINTING TRIANGLE - 0xA1F9: 0x203B, //REFERENCE MARK - 0xA1FA: 0x2192, //RIGHTWARDS ARROW - 0xA1FB: 0x2190, //LEFTWARDS ARROW - 0xA1FC: 0x2191, //UPWARDS ARROW - 0xA1FD: 0x2193, //DOWNWARDS ARROW - 0xA1FE: 0x3013, //GETA MARK - 0xA2A1: 0x2170, //SMALL ROMAN NUMERAL ONE - 0xA2A2: 0x2171, //SMALL ROMAN NUMERAL TWO - 0xA2A3: 0x2172, //SMALL ROMAN NUMERAL THREE - 0xA2A4: 0x2173, //SMALL ROMAN NUMERAL FOUR - 0xA2A5: 0x2174, //SMALL ROMAN NUMERAL FIVE - 0xA2A6: 0x2175, //SMALL ROMAN NUMERAL SIX - 0xA2A7: 0x2176, //SMALL ROMAN NUMERAL SEVEN - 0xA2A8: 0x2177, //SMALL ROMAN NUMERAL EIGHT - 0xA2A9: 0x2178, //SMALL ROMAN NUMERAL NINE - 0xA2AA: 0x2179, //SMALL ROMAN NUMERAL TEN - 0xA2B1: 0x2488, //DIGIT ONE FULL STOP - 0xA2B2: 0x2489, //DIGIT TWO FULL STOP - 0xA2B3: 0x248A, //DIGIT THREE FULL STOP - 0xA2B4: 0x248B, //DIGIT FOUR FULL STOP - 0xA2B5: 0x248C, //DIGIT FIVE FULL STOP - 0xA2B6: 0x248D, //DIGIT SIX FULL STOP - 0xA2B7: 0x248E, //DIGIT SEVEN FULL STOP - 0xA2B8: 0x248F, //DIGIT EIGHT FULL STOP - 0xA2B9: 0x2490, //DIGIT NINE FULL STOP - 0xA2BA: 0x2491, //NUMBER TEN FULL STOP - 0xA2BB: 0x2492, //NUMBER ELEVEN FULL STOP - 0xA2BC: 0x2493, //NUMBER TWELVE FULL STOP - 0xA2BD: 0x2494, //NUMBER THIRTEEN FULL STOP - 0xA2BE: 0x2495, //NUMBER FOURTEEN FULL STOP - 0xA2BF: 0x2496, //NUMBER FIFTEEN FULL STOP - 0xA2C0: 0x2497, //NUMBER SIXTEEN FULL STOP - 0xA2C1: 0x2498, //NUMBER SEVENTEEN FULL STOP - 0xA2C2: 0x2499, //NUMBER EIGHTEEN FULL STOP - 0xA2C3: 0x249A, //NUMBER NINETEEN FULL STOP - 0xA2C4: 0x249B, //NUMBER TWENTY FULL STOP - 0xA2C5: 0x2474, //PARENTHESIZED DIGIT ONE - 0xA2C6: 0x2475, //PARENTHESIZED DIGIT TWO - 0xA2C7: 0x2476, //PARENTHESIZED DIGIT THREE - 0xA2C8: 0x2477, //PARENTHESIZED DIGIT FOUR - 0xA2C9: 0x2478, //PARENTHESIZED DIGIT FIVE - 0xA2CA: 0x2479, //PARENTHESIZED DIGIT SIX - 0xA2CB: 0x247A, //PARENTHESIZED DIGIT SEVEN - 0xA2CC: 0x247B, //PARENTHESIZED DIGIT EIGHT - 0xA2CD: 0x247C, //PARENTHESIZED DIGIT NINE - 0xA2CE: 0x247D, //PARENTHESIZED NUMBER TEN - 0xA2CF: 0x247E, //PARENTHESIZED NUMBER ELEVEN - 0xA2D0: 0x247F, //PARENTHESIZED NUMBER TWELVE - 0xA2D1: 0x2480, //PARENTHESIZED NUMBER THIRTEEN - 0xA2D2: 0x2481, //PARENTHESIZED NUMBER FOURTEEN - 0xA2D3: 0x2482, //PARENTHESIZED NUMBER FIFTEEN - 0xA2D4: 0x2483, //PARENTHESIZED NUMBER SIXTEEN - 0xA2D5: 0x2484, //PARENTHESIZED NUMBER SEVENTEEN - 0xA2D6: 0x2485, //PARENTHESIZED NUMBER EIGHTEEN - 0xA2D7: 0x2486, //PARENTHESIZED NUMBER NINETEEN - 0xA2D8: 0x2487, //PARENTHESIZED NUMBER TWENTY - 0xA2D9: 0x2460, //CIRCLED DIGIT ONE - 0xA2DA: 0x2461, //CIRCLED DIGIT TWO - 0xA2DB: 0x2462, //CIRCLED DIGIT THREE - 0xA2DC: 0x2463, //CIRCLED DIGIT FOUR - 0xA2DD: 0x2464, //CIRCLED DIGIT FIVE - 0xA2DE: 0x2465, //CIRCLED DIGIT SIX - 0xA2DF: 0x2466, //CIRCLED DIGIT SEVEN - 0xA2E0: 0x2467, //CIRCLED DIGIT EIGHT - 0xA2E1: 0x2468, //CIRCLED DIGIT NINE - 0xA2E2: 0x2469, //CIRCLED NUMBER TEN - 0xA2E5: 0x3220, //PARENTHESIZED IDEOGRAPH ONE - 0xA2E6: 0x3221, //PARENTHESIZED IDEOGRAPH TWO - 0xA2E7: 0x3222, //PARENTHESIZED IDEOGRAPH THREE - 0xA2E8: 0x3223, //PARENTHESIZED IDEOGRAPH FOUR - 0xA2E9: 0x3224, //PARENTHESIZED IDEOGRAPH FIVE - 0xA2EA: 0x3225, //PARENTHESIZED IDEOGRAPH SIX - 0xA2EB: 0x3226, //PARENTHESIZED IDEOGRAPH SEVEN - 0xA2EC: 0x3227, //PARENTHESIZED IDEOGRAPH EIGHT - 0xA2ED: 0x3228, //PARENTHESIZED IDEOGRAPH NINE - 0xA2EE: 0x3229, //PARENTHESIZED IDEOGRAPH TEN - 0xA2F1: 0x2160, //ROMAN NUMERAL ONE - 0xA2F2: 0x2161, //ROMAN NUMERAL TWO - 0xA2F3: 0x2162, //ROMAN NUMERAL THREE - 0xA2F4: 0x2163, //ROMAN NUMERAL FOUR - 0xA2F5: 0x2164, //ROMAN NUMERAL FIVE - 0xA2F6: 0x2165, //ROMAN NUMERAL SIX - 0xA2F7: 0x2166, //ROMAN NUMERAL SEVEN - 0xA2F8: 0x2167, //ROMAN NUMERAL EIGHT - 0xA2F9: 0x2168, //ROMAN NUMERAL NINE - 0xA2FA: 0x2169, //ROMAN NUMERAL TEN - 0xA2FB: 0x216A, //ROMAN NUMERAL ELEVEN - 0xA2FC: 0x216B, //ROMAN NUMERAL TWELVE - 0xA3A1: 0xFF01, //FULLWIDTH EXCLAMATION MARK - 0xA3A2: 0xFF02, //FULLWIDTH QUOTATION MARK - 0xA3A3: 0xFF03, //FULLWIDTH NUMBER SIGN - 0xA3A4: 0xFFE5, //FULLWIDTH YEN SIGN - 0xA3A5: 0xFF05, //FULLWIDTH PERCENT SIGN - 0xA3A6: 0xFF06, //FULLWIDTH AMPERSAND - 0xA3A7: 0xFF07, //FULLWIDTH APOSTROPHE - 0xA3A8: 0xFF08, //FULLWIDTH LEFT PARENTHESIS - 0xA3A9: 0xFF09, //FULLWIDTH RIGHT PARENTHESIS - 0xA3AA: 0xFF0A, //FULLWIDTH ASTERISK - 0xA3AB: 0xFF0B, //FULLWIDTH PLUS SIGN - 0xA3AC: 0xFF0C, //FULLWIDTH COMMA - 0xA3AD: 0xFF0D, //FULLWIDTH HYPHEN-MINUS - 0xA3AE: 0xFF0E, //FULLWIDTH FULL STOP - 0xA3AF: 0xFF0F, //FULLWIDTH SOLIDUS - 0xA3B0: 0xFF10, //FULLWIDTH DIGIT ZERO - 0xA3B1: 0xFF11, //FULLWIDTH DIGIT ONE - 0xA3B2: 0xFF12, //FULLWIDTH DIGIT TWO - 0xA3B3: 0xFF13, //FULLWIDTH DIGIT THREE - 0xA3B4: 0xFF14, //FULLWIDTH DIGIT FOUR - 0xA3B5: 0xFF15, //FULLWIDTH DIGIT FIVE - 0xA3B6: 0xFF16, //FULLWIDTH DIGIT SIX - 0xA3B7: 0xFF17, //FULLWIDTH DIGIT SEVEN - 0xA3B8: 0xFF18, //FULLWIDTH DIGIT EIGHT - 0xA3B9: 0xFF19, //FULLWIDTH DIGIT NINE - 0xA3BA: 0xFF1A, //FULLWIDTH COLON - 0xA3BB: 0xFF1B, //FULLWIDTH SEMICOLON - 0xA3BC: 0xFF1C, //FULLWIDTH LESS-THAN SIGN - 0xA3BD: 0xFF1D, //FULLWIDTH EQUALS SIGN - 0xA3BE: 0xFF1E, //FULLWIDTH GREATER-THAN SIGN - 0xA3BF: 0xFF1F, //FULLWIDTH QUESTION MARK - 0xA3C0: 0xFF20, //FULLWIDTH COMMERCIAL AT - 0xA3C1: 0xFF21, //FULLWIDTH LATIN CAPITAL LETTER A - 0xA3C2: 0xFF22, //FULLWIDTH LATIN CAPITAL LETTER B - 0xA3C3: 0xFF23, //FULLWIDTH LATIN CAPITAL LETTER C - 0xA3C4: 0xFF24, //FULLWIDTH LATIN CAPITAL LETTER D - 0xA3C5: 0xFF25, //FULLWIDTH LATIN CAPITAL LETTER E - 0xA3C6: 0xFF26, //FULLWIDTH LATIN CAPITAL LETTER F - 0xA3C7: 0xFF27, //FULLWIDTH LATIN CAPITAL LETTER G - 0xA3C8: 0xFF28, //FULLWIDTH LATIN CAPITAL LETTER H - 0xA3C9: 0xFF29, //FULLWIDTH LATIN CAPITAL LETTER I - 0xA3CA: 0xFF2A, //FULLWIDTH LATIN CAPITAL LETTER J - 0xA3CB: 0xFF2B, //FULLWIDTH LATIN CAPITAL LETTER K - 0xA3CC: 0xFF2C, //FULLWIDTH LATIN CAPITAL LETTER L - 0xA3CD: 0xFF2D, //FULLWIDTH LATIN CAPITAL LETTER M - 0xA3CE: 0xFF2E, //FULLWIDTH LATIN CAPITAL LETTER N - 0xA3CF: 0xFF2F, //FULLWIDTH LATIN CAPITAL LETTER O - 0xA3D0: 0xFF30, //FULLWIDTH LATIN CAPITAL LETTER P - 0xA3D1: 0xFF31, //FULLWIDTH LATIN CAPITAL LETTER Q - 0xA3D2: 0xFF32, //FULLWIDTH LATIN CAPITAL LETTER R - 0xA3D3: 0xFF33, //FULLWIDTH LATIN CAPITAL LETTER S - 0xA3D4: 0xFF34, //FULLWIDTH LATIN CAPITAL LETTER T - 0xA3D5: 0xFF35, //FULLWIDTH LATIN CAPITAL LETTER U - 0xA3D6: 0xFF36, //FULLWIDTH LATIN CAPITAL LETTER V - 0xA3D7: 0xFF37, //FULLWIDTH LATIN CAPITAL LETTER W - 0xA3D8: 0xFF38, //FULLWIDTH LATIN CAPITAL LETTER X - 0xA3D9: 0xFF39, //FULLWIDTH LATIN CAPITAL LETTER Y - 0xA3DA: 0xFF3A, //FULLWIDTH LATIN CAPITAL LETTER Z - 0xA3DB: 0xFF3B, //FULLWIDTH LEFT SQUARE BRACKET - 0xA3DC: 0xFF3C, //FULLWIDTH REVERSE SOLIDUS - 0xA3DD: 0xFF3D, //FULLWIDTH RIGHT SQUARE BRACKET - 0xA3DE: 0xFF3E, //FULLWIDTH CIRCUMFLEX ACCENT - 0xA3DF: 0xFF3F, //FULLWIDTH LOW LINE - 0xA3E0: 0xFF40, //FULLWIDTH GRAVE ACCENT - 0xA3E1: 0xFF41, //FULLWIDTH LATIN SMALL LETTER A - 0xA3E2: 0xFF42, //FULLWIDTH LATIN SMALL LETTER B - 0xA3E3: 0xFF43, //FULLWIDTH LATIN SMALL LETTER C - 0xA3E4: 0xFF44, //FULLWIDTH LATIN SMALL LETTER D - 0xA3E5: 0xFF45, //FULLWIDTH LATIN SMALL LETTER E - 0xA3E6: 0xFF46, //FULLWIDTH LATIN SMALL LETTER F - 0xA3E7: 0xFF47, //FULLWIDTH LATIN SMALL LETTER G - 0xA3E8: 0xFF48, //FULLWIDTH LATIN SMALL LETTER H - 0xA3E9: 0xFF49, //FULLWIDTH LATIN SMALL LETTER I - 0xA3EA: 0xFF4A, //FULLWIDTH LATIN SMALL LETTER J - 0xA3EB: 0xFF4B, //FULLWIDTH LATIN SMALL LETTER K - 0xA3EC: 0xFF4C, //FULLWIDTH LATIN SMALL LETTER L - 0xA3ED: 0xFF4D, //FULLWIDTH LATIN SMALL LETTER M - 0xA3EE: 0xFF4E, //FULLWIDTH LATIN SMALL LETTER N - 0xA3EF: 0xFF4F, //FULLWIDTH LATIN SMALL LETTER O - 0xA3F0: 0xFF50, //FULLWIDTH LATIN SMALL LETTER P - 0xA3F1: 0xFF51, //FULLWIDTH LATIN SMALL LETTER Q - 0xA3F2: 0xFF52, //FULLWIDTH LATIN SMALL LETTER R - 0xA3F3: 0xFF53, //FULLWIDTH LATIN SMALL LETTER S - 0xA3F4: 0xFF54, //FULLWIDTH LATIN SMALL LETTER T - 0xA3F5: 0xFF55, //FULLWIDTH LATIN SMALL LETTER U - 0xA3F6: 0xFF56, //FULLWIDTH LATIN SMALL LETTER V - 0xA3F7: 0xFF57, //FULLWIDTH LATIN SMALL LETTER W - 0xA3F8: 0xFF58, //FULLWIDTH LATIN SMALL LETTER X - 0xA3F9: 0xFF59, //FULLWIDTH LATIN SMALL LETTER Y - 0xA3FA: 0xFF5A, //FULLWIDTH LATIN SMALL LETTER Z - 0xA3FB: 0xFF5B, //FULLWIDTH LEFT CURLY BRACKET - 0xA3FC: 0xFF5C, //FULLWIDTH VERTICAL LINE - 0xA3FD: 0xFF5D, //FULLWIDTH RIGHT CURLY BRACKET - 0xA3FE: 0xFFE3, //FULLWIDTH MACRON - 0xA4A1: 0x3041, //HIRAGANA LETTER SMALL A - 0xA4A2: 0x3042, //HIRAGANA LETTER A - 0xA4A3: 0x3043, //HIRAGANA LETTER SMALL I - 0xA4A4: 0x3044, //HIRAGANA LETTER I - 0xA4A5: 0x3045, //HIRAGANA LETTER SMALL U - 0xA4A6: 0x3046, //HIRAGANA LETTER U - 0xA4A7: 0x3047, //HIRAGANA LETTER SMALL E - 0xA4A8: 0x3048, //HIRAGANA LETTER E - 0xA4A9: 0x3049, //HIRAGANA LETTER SMALL O - 0xA4AA: 0x304A, //HIRAGANA LETTER O - 0xA4AB: 0x304B, //HIRAGANA LETTER KA - 0xA4AC: 0x304C, //HIRAGANA LETTER GA - 0xA4AD: 0x304D, //HIRAGANA LETTER KI - 0xA4AE: 0x304E, //HIRAGANA LETTER GI - 0xA4AF: 0x304F, //HIRAGANA LETTER KU - 0xA4B0: 0x3050, //HIRAGANA LETTER GU - 0xA4B1: 0x3051, //HIRAGANA LETTER KE - 0xA4B2: 0x3052, //HIRAGANA LETTER GE - 0xA4B3: 0x3053, //HIRAGANA LETTER KO - 0xA4B4: 0x3054, //HIRAGANA LETTER GO - 0xA4B5: 0x3055, //HIRAGANA LETTER SA - 0xA4B6: 0x3056, //HIRAGANA LETTER ZA - 0xA4B7: 0x3057, //HIRAGANA LETTER SI - 0xA4B8: 0x3058, //HIRAGANA LETTER ZI - 0xA4B9: 0x3059, //HIRAGANA LETTER SU - 0xA4BA: 0x305A, //HIRAGANA LETTER ZU - 0xA4BB: 0x305B, //HIRAGANA LETTER SE - 0xA4BC: 0x305C, //HIRAGANA LETTER ZE - 0xA4BD: 0x305D, //HIRAGANA LETTER SO - 0xA4BE: 0x305E, //HIRAGANA LETTER ZO - 0xA4BF: 0x305F, //HIRAGANA LETTER TA - 0xA4C0: 0x3060, //HIRAGANA LETTER DA - 0xA4C1: 0x3061, //HIRAGANA LETTER TI - 0xA4C2: 0x3062, //HIRAGANA LETTER DI - 0xA4C3: 0x3063, //HIRAGANA LETTER SMALL TU - 0xA4C4: 0x3064, //HIRAGANA LETTER TU - 0xA4C5: 0x3065, //HIRAGANA LETTER DU - 0xA4C6: 0x3066, //HIRAGANA LETTER TE - 0xA4C7: 0x3067, //HIRAGANA LETTER DE - 0xA4C8: 0x3068, //HIRAGANA LETTER TO - 0xA4C9: 0x3069, //HIRAGANA LETTER DO - 0xA4CA: 0x306A, //HIRAGANA LETTER NA - 0xA4CB: 0x306B, //HIRAGANA LETTER NI - 0xA4CC: 0x306C, //HIRAGANA LETTER NU - 0xA4CD: 0x306D, //HIRAGANA LETTER NE - 0xA4CE: 0x306E, //HIRAGANA LETTER NO - 0xA4CF: 0x306F, //HIRAGANA LETTER HA - 0xA4D0: 0x3070, //HIRAGANA LETTER BA - 0xA4D1: 0x3071, //HIRAGANA LETTER PA - 0xA4D2: 0x3072, //HIRAGANA LETTER HI - 0xA4D3: 0x3073, //HIRAGANA LETTER BI - 0xA4D4: 0x3074, //HIRAGANA LETTER PI - 0xA4D5: 0x3075, //HIRAGANA LETTER HU - 0xA4D6: 0x3076, //HIRAGANA LETTER BU - 0xA4D7: 0x3077, //HIRAGANA LETTER PU - 0xA4D8: 0x3078, //HIRAGANA LETTER HE - 0xA4D9: 0x3079, //HIRAGANA LETTER BE - 0xA4DA: 0x307A, //HIRAGANA LETTER PE - 0xA4DB: 0x307B, //HIRAGANA LETTER HO - 0xA4DC: 0x307C, //HIRAGANA LETTER BO - 0xA4DD: 0x307D, //HIRAGANA LETTER PO - 0xA4DE: 0x307E, //HIRAGANA LETTER MA - 0xA4DF: 0x307F, //HIRAGANA LETTER MI - 0xA4E0: 0x3080, //HIRAGANA LETTER MU - 0xA4E1: 0x3081, //HIRAGANA LETTER ME - 0xA4E2: 0x3082, //HIRAGANA LETTER MO - 0xA4E3: 0x3083, //HIRAGANA LETTER SMALL YA - 0xA4E4: 0x3084, //HIRAGANA LETTER YA - 0xA4E5: 0x3085, //HIRAGANA LETTER SMALL YU - 0xA4E6: 0x3086, //HIRAGANA LETTER YU - 0xA4E7: 0x3087, //HIRAGANA LETTER SMALL YO - 0xA4E8: 0x3088, //HIRAGANA LETTER YO - 0xA4E9: 0x3089, //HIRAGANA LETTER RA - 0xA4EA: 0x308A, //HIRAGANA LETTER RI - 0xA4EB: 0x308B, //HIRAGANA LETTER RU - 0xA4EC: 0x308C, //HIRAGANA LETTER RE - 0xA4ED: 0x308D, //HIRAGANA LETTER RO - 0xA4EE: 0x308E, //HIRAGANA LETTER SMALL WA - 0xA4EF: 0x308F, //HIRAGANA LETTER WA - 0xA4F0: 0x3090, //HIRAGANA LETTER WI - 0xA4F1: 0x3091, //HIRAGANA LETTER WE - 0xA4F2: 0x3092, //HIRAGANA LETTER WO - 0xA4F3: 0x3093, //HIRAGANA LETTER N - 0xA5A1: 0x30A1, //KATAKANA LETTER SMALL A - 0xA5A2: 0x30A2, //KATAKANA LETTER A - 0xA5A3: 0x30A3, //KATAKANA LETTER SMALL I - 0xA5A4: 0x30A4, //KATAKANA LETTER I - 0xA5A5: 0x30A5, //KATAKANA LETTER SMALL U - 0xA5A6: 0x30A6, //KATAKANA LETTER U - 0xA5A7: 0x30A7, //KATAKANA LETTER SMALL E - 0xA5A8: 0x30A8, //KATAKANA LETTER E - 0xA5A9: 0x30A9, //KATAKANA LETTER SMALL O - 0xA5AA: 0x30AA, //KATAKANA LETTER O - 0xA5AB: 0x30AB, //KATAKANA LETTER KA - 0xA5AC: 0x30AC, //KATAKANA LETTER GA - 0xA5AD: 0x30AD, //KATAKANA LETTER KI - 0xA5AE: 0x30AE, //KATAKANA LETTER GI - 0xA5AF: 0x30AF, //KATAKANA LETTER KU - 0xA5B0: 0x30B0, //KATAKANA LETTER GU - 0xA5B1: 0x30B1, //KATAKANA LETTER KE - 0xA5B2: 0x30B2, //KATAKANA LETTER GE - 0xA5B3: 0x30B3, //KATAKANA LETTER KO - 0xA5B4: 0x30B4, //KATAKANA LETTER GO - 0xA5B5: 0x30B5, //KATAKANA LETTER SA - 0xA5B6: 0x30B6, //KATAKANA LETTER ZA - 0xA5B7: 0x30B7, //KATAKANA LETTER SI - 0xA5B8: 0x30B8, //KATAKANA LETTER ZI - 0xA5B9: 0x30B9, //KATAKANA LETTER SU - 0xA5BA: 0x30BA, //KATAKANA LETTER ZU - 0xA5BB: 0x30BB, //KATAKANA LETTER SE - 0xA5BC: 0x30BC, //KATAKANA LETTER ZE - 0xA5BD: 0x30BD, //KATAKANA LETTER SO - 0xA5BE: 0x30BE, //KATAKANA LETTER ZO - 0xA5BF: 0x30BF, //KATAKANA LETTER TA - 0xA5C0: 0x30C0, //KATAKANA LETTER DA - 0xA5C1: 0x30C1, //KATAKANA LETTER TI - 0xA5C2: 0x30C2, //KATAKANA LETTER DI - 0xA5C3: 0x30C3, //KATAKANA LETTER SMALL TU - 0xA5C4: 0x30C4, //KATAKANA LETTER TU - 0xA5C5: 0x30C5, //KATAKANA LETTER DU - 0xA5C6: 0x30C6, //KATAKANA LETTER TE - 0xA5C7: 0x30C7, //KATAKANA LETTER DE - 0xA5C8: 0x30C8, //KATAKANA LETTER TO - 0xA5C9: 0x30C9, //KATAKANA LETTER DO - 0xA5CA: 0x30CA, //KATAKANA LETTER NA - 0xA5CB: 0x30CB, //KATAKANA LETTER NI - 0xA5CC: 0x30CC, //KATAKANA LETTER NU - 0xA5CD: 0x30CD, //KATAKANA LETTER NE - 0xA5CE: 0x30CE, //KATAKANA LETTER NO - 0xA5CF: 0x30CF, //KATAKANA LETTER HA - 0xA5D0: 0x30D0, //KATAKANA LETTER BA - 0xA5D1: 0x30D1, //KATAKANA LETTER PA - 0xA5D2: 0x30D2, //KATAKANA LETTER HI - 0xA5D3: 0x30D3, //KATAKANA LETTER BI - 0xA5D4: 0x30D4, //KATAKANA LETTER PI - 0xA5D5: 0x30D5, //KATAKANA LETTER HU - 0xA5D6: 0x30D6, //KATAKANA LETTER BU - 0xA5D7: 0x30D7, //KATAKANA LETTER PU - 0xA5D8: 0x30D8, //KATAKANA LETTER HE - 0xA5D9: 0x30D9, //KATAKANA LETTER BE - 0xA5DA: 0x30DA, //KATAKANA LETTER PE - 0xA5DB: 0x30DB, //KATAKANA LETTER HO - 0xA5DC: 0x30DC, //KATAKANA LETTER BO - 0xA5DD: 0x30DD, //KATAKANA LETTER PO - 0xA5DE: 0x30DE, //KATAKANA LETTER MA - 0xA5DF: 0x30DF, //KATAKANA LETTER MI - 0xA5E0: 0x30E0, //KATAKANA LETTER MU - 0xA5E1: 0x30E1, //KATAKANA LETTER ME - 0xA5E2: 0x30E2, //KATAKANA LETTER MO - 0xA5E3: 0x30E3, //KATAKANA LETTER SMALL YA - 0xA5E4: 0x30E4, //KATAKANA LETTER YA - 0xA5E5: 0x30E5, //KATAKANA LETTER SMALL YU - 0xA5E6: 0x30E6, //KATAKANA LETTER YU - 0xA5E7: 0x30E7, //KATAKANA LETTER SMALL YO - 0xA5E8: 0x30E8, //KATAKANA LETTER YO - 0xA5E9: 0x30E9, //KATAKANA LETTER RA - 0xA5EA: 0x30EA, //KATAKANA LETTER RI - 0xA5EB: 0x30EB, //KATAKANA LETTER RU - 0xA5EC: 0x30EC, //KATAKANA LETTER RE - 0xA5ED: 0x30ED, //KATAKANA LETTER RO - 0xA5EE: 0x30EE, //KATAKANA LETTER SMALL WA - 0xA5EF: 0x30EF, //KATAKANA LETTER WA - 0xA5F0: 0x30F0, //KATAKANA LETTER WI - 0xA5F1: 0x30F1, //KATAKANA LETTER WE - 0xA5F2: 0x30F2, //KATAKANA LETTER WO - 0xA5F3: 0x30F3, //KATAKANA LETTER N - 0xA5F4: 0x30F4, //KATAKANA LETTER VU - 0xA5F5: 0x30F5, //KATAKANA LETTER SMALL KA - 0xA5F6: 0x30F6, //KATAKANA LETTER SMALL KE - 0xA6A1: 0x0391, //GREEK CAPITAL LETTER ALPHA - 0xA6A2: 0x0392, //GREEK CAPITAL LETTER BETA - 0xA6A3: 0x0393, //GREEK CAPITAL LETTER GAMMA - 0xA6A4: 0x0394, //GREEK CAPITAL LETTER DELTA - 0xA6A5: 0x0395, //GREEK CAPITAL LETTER EPSILON - 0xA6A6: 0x0396, //GREEK CAPITAL LETTER ZETA - 0xA6A7: 0x0397, //GREEK CAPITAL LETTER ETA - 0xA6A8: 0x0398, //GREEK CAPITAL LETTER THETA - 0xA6A9: 0x0399, //GREEK CAPITAL LETTER IOTA - 0xA6AA: 0x039A, //GREEK CAPITAL LETTER KAPPA - 0xA6AB: 0x039B, //GREEK CAPITAL LETTER LAMDA - 0xA6AC: 0x039C, //GREEK CAPITAL LETTER MU - 0xA6AD: 0x039D, //GREEK CAPITAL LETTER NU - 0xA6AE: 0x039E, //GREEK CAPITAL LETTER XI - 0xA6AF: 0x039F, //GREEK CAPITAL LETTER OMICRON - 0xA6B0: 0x03A0, //GREEK CAPITAL LETTER PI - 0xA6B1: 0x03A1, //GREEK CAPITAL LETTER RHO - 0xA6B2: 0x03A3, //GREEK CAPITAL LETTER SIGMA - 0xA6B3: 0x03A4, //GREEK CAPITAL LETTER TAU - 0xA6B4: 0x03A5, //GREEK CAPITAL LETTER UPSILON - 0xA6B5: 0x03A6, //GREEK CAPITAL LETTER PHI - 0xA6B6: 0x03A7, //GREEK CAPITAL LETTER CHI - 0xA6B7: 0x03A8, //GREEK CAPITAL LETTER PSI - 0xA6B8: 0x03A9, //GREEK CAPITAL LETTER OMEGA - 0xA6C1: 0x03B1, //GREEK SMALL LETTER ALPHA - 0xA6C2: 0x03B2, //GREEK SMALL LETTER BETA - 0xA6C3: 0x03B3, //GREEK SMALL LETTER GAMMA - 0xA6C4: 0x03B4, //GREEK SMALL LETTER DELTA - 0xA6C5: 0x03B5, //GREEK SMALL LETTER EPSILON - 0xA6C6: 0x03B6, //GREEK SMALL LETTER ZETA - 0xA6C7: 0x03B7, //GREEK SMALL LETTER ETA - 0xA6C8: 0x03B8, //GREEK SMALL LETTER THETA - 0xA6C9: 0x03B9, //GREEK SMALL LETTER IOTA - 0xA6CA: 0x03BA, //GREEK SMALL LETTER KAPPA - 0xA6CB: 0x03BB, //GREEK SMALL LETTER LAMDA - 0xA6CC: 0x03BC, //GREEK SMALL LETTER MU - 0xA6CD: 0x03BD, //GREEK SMALL LETTER NU - 0xA6CE: 0x03BE, //GREEK SMALL LETTER XI - 0xA6CF: 0x03BF, //GREEK SMALL LETTER OMICRON - 0xA6D0: 0x03C0, //GREEK SMALL LETTER PI - 0xA6D1: 0x03C1, //GREEK SMALL LETTER RHO - 0xA6D2: 0x03C3, //GREEK SMALL LETTER SIGMA - 0xA6D3: 0x03C4, //GREEK SMALL LETTER TAU - 0xA6D4: 0x03C5, //GREEK SMALL LETTER UPSILON - 0xA6D5: 0x03C6, //GREEK SMALL LETTER PHI - 0xA6D6: 0x03C7, //GREEK SMALL LETTER CHI - 0xA6D7: 0x03C8, //GREEK SMALL LETTER PSI - 0xA6D8: 0x03C9, //GREEK SMALL LETTER OMEGA - 0xA6E0: 0xFE35, //PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - 0xA6E1: 0xFE36, //PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - 0xA6E2: 0xFE39, //PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - 0xA6E3: 0xFE3A, //PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - 0xA6E4: 0xFE3F, //PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - 0xA6E5: 0xFE40, //PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - 0xA6E6: 0xFE3D, //PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - 0xA6E7: 0xFE3E, //PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - 0xA6E8: 0xFE41, //PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - 0xA6E9: 0xFE42, //PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - 0xA6EA: 0xFE43, //PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - 0xA6EB: 0xFE44, //PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - 0xA6EE: 0xFE3B, //PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - 0xA6EF: 0xFE3C, //PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - 0xA6F0: 0xFE37, //PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - 0xA6F1: 0xFE38, //PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - 0xA6F2: 0xFE31, //PRESENTATION FORM FOR VERTICAL EM DASH - 0xA6F4: 0xFE33, //PRESENTATION FORM FOR VERTICAL LOW LINE - 0xA6F5: 0xFE34, //PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - 0xA7A1: 0x0410, //CYRILLIC CAPITAL LETTER A - 0xA7A2: 0x0411, //CYRILLIC CAPITAL LETTER BE - 0xA7A3: 0x0412, //CYRILLIC CAPITAL LETTER VE - 0xA7A4: 0x0413, //CYRILLIC CAPITAL LETTER GHE - 0xA7A5: 0x0414, //CYRILLIC CAPITAL LETTER DE - 0xA7A6: 0x0415, //CYRILLIC CAPITAL LETTER IE - 0xA7A7: 0x0401, //CYRILLIC CAPITAL LETTER IO - 0xA7A8: 0x0416, //CYRILLIC CAPITAL LETTER ZHE - 0xA7A9: 0x0417, //CYRILLIC CAPITAL LETTER ZE - 0xA7AA: 0x0418, //CYRILLIC CAPITAL LETTER I - 0xA7AB: 0x0419, //CYRILLIC CAPITAL LETTER SHORT I - 0xA7AC: 0x041A, //CYRILLIC CAPITAL LETTER KA - 0xA7AD: 0x041B, //CYRILLIC CAPITAL LETTER EL - 0xA7AE: 0x041C, //CYRILLIC CAPITAL LETTER EM - 0xA7AF: 0x041D, //CYRILLIC CAPITAL LETTER EN - 0xA7B0: 0x041E, //CYRILLIC CAPITAL LETTER O - 0xA7B1: 0x041F, //CYRILLIC CAPITAL LETTER PE - 0xA7B2: 0x0420, //CYRILLIC CAPITAL LETTER ER - 0xA7B3: 0x0421, //CYRILLIC CAPITAL LETTER ES - 0xA7B4: 0x0422, //CYRILLIC CAPITAL LETTER TE - 0xA7B5: 0x0423, //CYRILLIC CAPITAL LETTER U - 0xA7B6: 0x0424, //CYRILLIC CAPITAL LETTER EF - 0xA7B7: 0x0425, //CYRILLIC CAPITAL LETTER HA - 0xA7B8: 0x0426, //CYRILLIC CAPITAL LETTER TSE - 0xA7B9: 0x0427, //CYRILLIC CAPITAL LETTER CHE - 0xA7BA: 0x0428, //CYRILLIC CAPITAL LETTER SHA - 0xA7BB: 0x0429, //CYRILLIC CAPITAL LETTER SHCHA - 0xA7BC: 0x042A, //CYRILLIC CAPITAL LETTER HARD SIGN - 0xA7BD: 0x042B, //CYRILLIC CAPITAL LETTER YERU - 0xA7BE: 0x042C, //CYRILLIC CAPITAL LETTER SOFT SIGN - 0xA7BF: 0x042D, //CYRILLIC CAPITAL LETTER E - 0xA7C0: 0x042E, //CYRILLIC CAPITAL LETTER YU - 0xA7C1: 0x042F, //CYRILLIC CAPITAL LETTER YA - 0xA7D1: 0x0430, //CYRILLIC SMALL LETTER A - 0xA7D2: 0x0431, //CYRILLIC SMALL LETTER BE - 0xA7D3: 0x0432, //CYRILLIC SMALL LETTER VE - 0xA7D4: 0x0433, //CYRILLIC SMALL LETTER GHE - 0xA7D5: 0x0434, //CYRILLIC SMALL LETTER DE - 0xA7D6: 0x0435, //CYRILLIC SMALL LETTER IE - 0xA7D7: 0x0451, //CYRILLIC SMALL LETTER IO - 0xA7D8: 0x0436, //CYRILLIC SMALL LETTER ZHE - 0xA7D9: 0x0437, //CYRILLIC SMALL LETTER ZE - 0xA7DA: 0x0438, //CYRILLIC SMALL LETTER I - 0xA7DB: 0x0439, //CYRILLIC SMALL LETTER SHORT I - 0xA7DC: 0x043A, //CYRILLIC SMALL LETTER KA - 0xA7DD: 0x043B, //CYRILLIC SMALL LETTER EL - 0xA7DE: 0x043C, //CYRILLIC SMALL LETTER EM - 0xA7DF: 0x043D, //CYRILLIC SMALL LETTER EN - 0xA7E0: 0x043E, //CYRILLIC SMALL LETTER O - 0xA7E1: 0x043F, //CYRILLIC SMALL LETTER PE - 0xA7E2: 0x0440, //CYRILLIC SMALL LETTER ER - 0xA7E3: 0x0441, //CYRILLIC SMALL LETTER ES - 0xA7E4: 0x0442, //CYRILLIC SMALL LETTER TE - 0xA7E5: 0x0443, //CYRILLIC SMALL LETTER U - 0xA7E6: 0x0444, //CYRILLIC SMALL LETTER EF - 0xA7E7: 0x0445, //CYRILLIC SMALL LETTER HA - 0xA7E8: 0x0446, //CYRILLIC SMALL LETTER TSE - 0xA7E9: 0x0447, //CYRILLIC SMALL LETTER CHE - 0xA7EA: 0x0448, //CYRILLIC SMALL LETTER SHA - 0xA7EB: 0x0449, //CYRILLIC SMALL LETTER SHCHA - 0xA7EC: 0x044A, //CYRILLIC SMALL LETTER HARD SIGN - 0xA7ED: 0x044B, //CYRILLIC SMALL LETTER YERU - 0xA7EE: 0x044C, //CYRILLIC SMALL LETTER SOFT SIGN - 0xA7EF: 0x044D, //CYRILLIC SMALL LETTER E - 0xA7F0: 0x044E, //CYRILLIC SMALL LETTER YU - 0xA7F1: 0x044F, //CYRILLIC SMALL LETTER YA - 0xA840: 0x02CA, //MODIFIER LETTER ACUTE ACCENT - 0xA841: 0x02CB, //MODIFIER LETTER GRAVE ACCENT - 0xA842: 0x02D9, //DOT ABOVE - 0xA843: 0x2013, //EN DASH - 0xA844: 0x2015, //HORIZONTAL BAR - 0xA845: 0x2025, //TWO DOT LEADER - 0xA846: 0x2035, //REVERSED PRIME - 0xA847: 0x2105, //CARE OF - 0xA848: 0x2109, //DEGREE FAHRENHEIT - 0xA849: 0x2196, //NORTH WEST ARROW - 0xA84A: 0x2197, //NORTH EAST ARROW - 0xA84B: 0x2198, //SOUTH EAST ARROW - 0xA84C: 0x2199, //SOUTH WEST ARROW - 0xA84D: 0x2215, //DIVISION SLASH - 0xA84E: 0x221F, //RIGHT ANGLE - 0xA84F: 0x2223, //DIVIDES - 0xA850: 0x2252, //APPROXIMATELY EQUAL TO OR THE IMAGE OF - 0xA851: 0x2266, //LESS-THAN OVER EQUAL TO - 0xA852: 0x2267, //GREATER-THAN OVER EQUAL TO - 0xA853: 0x22BF, //RIGHT TRIANGLE - 0xA854: 0x2550, //BOX DRAWINGS DOUBLE HORIZONTAL - 0xA855: 0x2551, //BOX DRAWINGS DOUBLE VERTICAL - 0xA856: 0x2552, //BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE - 0xA857: 0x2553, //BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE - 0xA858: 0x2554, //BOX DRAWINGS DOUBLE DOWN AND RIGHT - 0xA859: 0x2555, //BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE - 0xA85A: 0x2556, //BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE - 0xA85B: 0x2557, //BOX DRAWINGS DOUBLE DOWN AND LEFT - 0xA85C: 0x2558, //BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE - 0xA85D: 0x2559, //BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE - 0xA85E: 0x255A, //BOX DRAWINGS DOUBLE UP AND RIGHT - 0xA85F: 0x255B, //BOX DRAWINGS UP SINGLE AND LEFT DOUBLE - 0xA860: 0x255C, //BOX DRAWINGS UP DOUBLE AND LEFT SINGLE - 0xA861: 0x255D, //BOX DRAWINGS DOUBLE UP AND LEFT - 0xA862: 0x255E, //BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - 0xA863: 0x255F, //BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE - 0xA864: 0x2560, //BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - 0xA865: 0x2561, //BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - 0xA866: 0x2562, //BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE - 0xA867: 0x2563, //BOX DRAWINGS DOUBLE VERTICAL AND LEFT - 0xA868: 0x2564, //BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE - 0xA869: 0x2565, //BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE - 0xA86A: 0x2566, //BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - 0xA86B: 0x2567, //BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE - 0xA86C: 0x2568, //BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE - 0xA86D: 0x2569, //BOX DRAWINGS DOUBLE UP AND HORIZONTAL - 0xA86E: 0x256A, //BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - 0xA86F: 0x256B, //BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE - 0xA870: 0x256C, //BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - 0xA871: 0x256D, //BOX DRAWINGS LIGHT ARC DOWN AND RIGHT - 0xA872: 0x256E, //BOX DRAWINGS LIGHT ARC DOWN AND LEFT - 0xA873: 0x256F, //BOX DRAWINGS LIGHT ARC UP AND LEFT - 0xA874: 0x2570, //BOX DRAWINGS LIGHT ARC UP AND RIGHT - 0xA875: 0x2571, //BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT - 0xA876: 0x2572, //BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT - 0xA877: 0x2573, //BOX DRAWINGS LIGHT DIAGONAL CROSS - 0xA878: 0x2581, //LOWER ONE EIGHTH BLOCK - 0xA879: 0x2582, //LOWER ONE QUARTER BLOCK - 0xA87A: 0x2583, //LOWER THREE EIGHTHS BLOCK - 0xA87B: 0x2584, //LOWER HALF BLOCK - 0xA87C: 0x2585, //LOWER FIVE EIGHTHS BLOCK - 0xA87D: 0x2586, //LOWER THREE QUARTERS BLOCK - 0xA87E: 0x2587, //LOWER SEVEN EIGHTHS BLOCK - 0xA880: 0x2588, //FULL BLOCK - 0xA881: 0x2589, //LEFT SEVEN EIGHTHS BLOCK - 0xA882: 0x258A, //LEFT THREE QUARTERS BLOCK - 0xA883: 0x258B, //LEFT FIVE EIGHTHS BLOCK - 0xA884: 0x258C, //LEFT HALF BLOCK - 0xA885: 0x258D, //LEFT THREE EIGHTHS BLOCK - 0xA886: 0x258E, //LEFT ONE QUARTER BLOCK - 0xA887: 0x258F, //LEFT ONE EIGHTH BLOCK - 0xA888: 0x2593, //DARK SHADE - 0xA889: 0x2594, //UPPER ONE EIGHTH BLOCK - 0xA88A: 0x2595, //RIGHT ONE EIGHTH BLOCK - 0xA88B: 0x25BC, //BLACK DOWN-POINTING TRIANGLE - 0xA88C: 0x25BD, //WHITE DOWN-POINTING TRIANGLE - 0xA88D: 0x25E2, //BLACK LOWER RIGHT TRIANGLE - 0xA88E: 0x25E3, //BLACK LOWER LEFT TRIANGLE - 0xA88F: 0x25E4, //BLACK UPPER LEFT TRIANGLE - 0xA890: 0x25E5, //BLACK UPPER RIGHT TRIANGLE - 0xA891: 0x2609, //SUN - 0xA892: 0x2295, //CIRCLED PLUS - 0xA893: 0x3012, //POSTAL MARK - 0xA894: 0x301D, //REVERSED DOUBLE PRIME QUOTATION MARK - 0xA895: 0x301E, //DOUBLE PRIME QUOTATION MARK - 0xA8A1: 0x0101, //LATIN SMALL LETTER A WITH MACRON - 0xA8A2: 0x00E1, //LATIN SMALL LETTER A WITH ACUTE - 0xA8A3: 0x01CE, //LATIN SMALL LETTER A WITH CARON - 0xA8A4: 0x00E0, //LATIN SMALL LETTER A WITH GRAVE - 0xA8A5: 0x0113, //LATIN SMALL LETTER E WITH MACRON - 0xA8A6: 0x00E9, //LATIN SMALL LETTER E WITH ACUTE - 0xA8A7: 0x011B, //LATIN SMALL LETTER E WITH CARON - 0xA8A8: 0x00E8, //LATIN SMALL LETTER E WITH GRAVE - 0xA8A9: 0x012B, //LATIN SMALL LETTER I WITH MACRON - 0xA8AA: 0x00ED, //LATIN SMALL LETTER I WITH ACUTE - 0xA8AB: 0x01D0, //LATIN SMALL LETTER I WITH CARON - 0xA8AC: 0x00EC, //LATIN SMALL LETTER I WITH GRAVE - 0xA8AD: 0x014D, //LATIN SMALL LETTER O WITH MACRON - 0xA8AE: 0x00F3, //LATIN SMALL LETTER O WITH ACUTE - 0xA8AF: 0x01D2, //LATIN SMALL LETTER O WITH CARON - 0xA8B0: 0x00F2, //LATIN SMALL LETTER O WITH GRAVE - 0xA8B1: 0x016B, //LATIN SMALL LETTER U WITH MACRON - 0xA8B2: 0x00FA, //LATIN SMALL LETTER U WITH ACUTE - 0xA8B3: 0x01D4, //LATIN SMALL LETTER U WITH CARON - 0xA8B4: 0x00F9, //LATIN SMALL LETTER U WITH GRAVE - 0xA8B5: 0x01D6, //LATIN SMALL LETTER U WITH DIAERESIS AND MACRON - 0xA8B6: 0x01D8, //LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE - 0xA8B7: 0x01DA, //LATIN SMALL LETTER U WITH DIAERESIS AND CARON - 0xA8B8: 0x01DC, //LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE - 0xA8B9: 0x00FC, //LATIN SMALL LETTER U WITH DIAERESIS - 0xA8BA: 0x00EA, //LATIN SMALL LETTER E WITH CIRCUMFLEX - 0xA8BB: 0x0251, //LATIN SMALL LETTER ALPHA - 0xA8BD: 0x0144, //LATIN SMALL LETTER N WITH ACUTE - 0xA8BE: 0x0148, //LATIN SMALL LETTER N WITH CARON - 0xA8C0: 0x0261, //LATIN SMALL LETTER SCRIPT G - 0xA8C5: 0x3105, //BOPOMOFO LETTER B - 0xA8C6: 0x3106, //BOPOMOFO LETTER P - 0xA8C7: 0x3107, //BOPOMOFO LETTER M - 0xA8C8: 0x3108, //BOPOMOFO LETTER F - 0xA8C9: 0x3109, //BOPOMOFO LETTER D - 0xA8CA: 0x310A, //BOPOMOFO LETTER T - 0xA8CB: 0x310B, //BOPOMOFO LETTER N - 0xA8CC: 0x310C, //BOPOMOFO LETTER L - 0xA8CD: 0x310D, //BOPOMOFO LETTER G - 0xA8CE: 0x310E, //BOPOMOFO LETTER K - 0xA8CF: 0x310F, //BOPOMOFO LETTER H - 0xA8D0: 0x3110, //BOPOMOFO LETTER J - 0xA8D1: 0x3111, //BOPOMOFO LETTER Q - 0xA8D2: 0x3112, //BOPOMOFO LETTER X - 0xA8D3: 0x3113, //BOPOMOFO LETTER ZH - 0xA8D4: 0x3114, //BOPOMOFO LETTER CH - 0xA8D5: 0x3115, //BOPOMOFO LETTER SH - 0xA8D6: 0x3116, //BOPOMOFO LETTER R - 0xA8D7: 0x3117, //BOPOMOFO LETTER Z - 0xA8D8: 0x3118, //BOPOMOFO LETTER C - 0xA8D9: 0x3119, //BOPOMOFO LETTER S - 0xA8DA: 0x311A, //BOPOMOFO LETTER A - 0xA8DB: 0x311B, //BOPOMOFO LETTER O - 0xA8DC: 0x311C, //BOPOMOFO LETTER E - 0xA8DD: 0x311D, //BOPOMOFO LETTER EH - 0xA8DE: 0x311E, //BOPOMOFO LETTER AI - 0xA8DF: 0x311F, //BOPOMOFO LETTER EI - 0xA8E0: 0x3120, //BOPOMOFO LETTER AU - 0xA8E1: 0x3121, //BOPOMOFO LETTER OU - 0xA8E2: 0x3122, //BOPOMOFO LETTER AN - 0xA8E3: 0x3123, //BOPOMOFO LETTER EN - 0xA8E4: 0x3124, //BOPOMOFO LETTER ANG - 0xA8E5: 0x3125, //BOPOMOFO LETTER ENG - 0xA8E6: 0x3126, //BOPOMOFO LETTER ER - 0xA8E7: 0x3127, //BOPOMOFO LETTER I - 0xA8E8: 0x3128, //BOPOMOFO LETTER U - 0xA8E9: 0x3129, //BOPOMOFO LETTER IU - 0xA940: 0x3021, //HANGZHOU NUMERAL ONE - 0xA941: 0x3022, //HANGZHOU NUMERAL TWO - 0xA942: 0x3023, //HANGZHOU NUMERAL THREE - 0xA943: 0x3024, //HANGZHOU NUMERAL FOUR - 0xA944: 0x3025, //HANGZHOU NUMERAL FIVE - 0xA945: 0x3026, //HANGZHOU NUMERAL SIX - 0xA946: 0x3027, //HANGZHOU NUMERAL SEVEN - 0xA947: 0x3028, //HANGZHOU NUMERAL EIGHT - 0xA948: 0x3029, //HANGZHOU NUMERAL NINE - 0xA949: 0x32A3, //CIRCLED IDEOGRAPH CORRECT - 0xA94A: 0x338E, //SQUARE MG - 0xA94B: 0x338F, //SQUARE KG - 0xA94C: 0x339C, //SQUARE MM - 0xA94D: 0x339D, //SQUARE CM - 0xA94E: 0x339E, //SQUARE KM - 0xA94F: 0x33A1, //SQUARE M SQUARED - 0xA950: 0x33C4, //SQUARE CC - 0xA951: 0x33CE, //SQUARE KM CAPITAL - 0xA952: 0x33D1, //SQUARE LN - 0xA953: 0x33D2, //SQUARE LOG - 0xA954: 0x33D5, //SQUARE MIL - 0xA955: 0xFE30, //PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - 0xA956: 0xFFE2, //FULLWIDTH NOT SIGN - 0xA957: 0xFFE4, //FULLWIDTH BROKEN BAR - 0xA959: 0x2121, //TELEPHONE SIGN - 0xA95A: 0x3231, //PARENTHESIZED IDEOGRAPH STOCK - 0xA95C: 0x2010, //HYPHEN - 0xA960: 0x30FC, //KATAKANA-HIRAGANA PROLONGED SOUND MARK - 0xA961: 0x309B, //KATAKANA-HIRAGANA VOICED SOUND MARK - 0xA962: 0x309C, //KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - 0xA963: 0x30FD, //KATAKANA ITERATION MARK - 0xA964: 0x30FE, //KATAKANA VOICED ITERATION MARK - 0xA965: 0x3006, //IDEOGRAPHIC CLOSING MARK - 0xA966: 0x309D, //HIRAGANA ITERATION MARK - 0xA967: 0x309E, //HIRAGANA VOICED ITERATION MARK - 0xA968: 0xFE49, //DASHED OVERLINE - 0xA969: 0xFE4A, //CENTRELINE OVERLINE - 0xA96A: 0xFE4B, //WAVY OVERLINE - 0xA96B: 0xFE4C, //DOUBLE WAVY OVERLINE - 0xA96C: 0xFE4D, //DASHED LOW LINE - 0xA96D: 0xFE4E, //CENTRELINE LOW LINE - 0xA96E: 0xFE4F, //WAVY LOW LINE - 0xA96F: 0xFE50, //SMALL COMMA - 0xA970: 0xFE51, //SMALL IDEOGRAPHIC COMMA - 0xA971: 0xFE52, //SMALL FULL STOP - 0xA972: 0xFE54, //SMALL SEMICOLON - 0xA973: 0xFE55, //SMALL COLON - 0xA974: 0xFE56, //SMALL QUESTION MARK - 0xA975: 0xFE57, //SMALL EXCLAMATION MARK - 0xA976: 0xFE59, //SMALL LEFT PARENTHESIS - 0xA977: 0xFE5A, //SMALL RIGHT PARENTHESIS - 0xA978: 0xFE5B, //SMALL LEFT CURLY BRACKET - 0xA979: 0xFE5C, //SMALL RIGHT CURLY BRACKET - 0xA97A: 0xFE5D, //SMALL LEFT TORTOISE SHELL BRACKET - 0xA97B: 0xFE5E, //SMALL RIGHT TORTOISE SHELL BRACKET - 0xA97C: 0xFE5F, //SMALL NUMBER SIGN - 0xA97D: 0xFE60, //SMALL AMPERSAND - 0xA97E: 0xFE61, //SMALL ASTERISK - 0xA980: 0xFE62, //SMALL PLUS SIGN - 0xA981: 0xFE63, //SMALL HYPHEN-MINUS - 0xA982: 0xFE64, //SMALL LESS-THAN SIGN - 0xA983: 0xFE65, //SMALL GREATER-THAN SIGN - 0xA984: 0xFE66, //SMALL EQUALS SIGN - 0xA985: 0xFE68, //SMALL REVERSE SOLIDUS - 0xA986: 0xFE69, //SMALL DOLLAR SIGN - 0xA987: 0xFE6A, //SMALL PERCENT SIGN - 0xA988: 0xFE6B, //SMALL COMMERCIAL AT - 0xA996: 0x3007, //IDEOGRAPHIC NUMBER ZERO - 0xA9A4: 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0xA9A5: 0x2501, //BOX DRAWINGS HEAVY HORIZONTAL - 0xA9A6: 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0xA9A7: 0x2503, //BOX DRAWINGS HEAVY VERTICAL - 0xA9A8: 0x2504, //BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL - 0xA9A9: 0x2505, //BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL - 0xA9AA: 0x2506, //BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL - 0xA9AB: 0x2507, //BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL - 0xA9AC: 0x2508, //BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL - 0xA9AD: 0x2509, //BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL - 0xA9AE: 0x250A, //BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL - 0xA9AF: 0x250B, //BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL - 0xA9B0: 0x250C, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0xA9B1: 0x250D, //BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY - 0xA9B2: 0x250E, //BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT - 0xA9B3: 0x250F, //BOX DRAWINGS HEAVY DOWN AND RIGHT - 0xA9B4: 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0xA9B5: 0x2511, //BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY - 0xA9B6: 0x2512, //BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT - 0xA9B7: 0x2513, //BOX DRAWINGS HEAVY DOWN AND LEFT - 0xA9B8: 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0xA9B9: 0x2515, //BOX DRAWINGS UP LIGHT AND RIGHT HEAVY - 0xA9BA: 0x2516, //BOX DRAWINGS UP HEAVY AND RIGHT LIGHT - 0xA9BB: 0x2517, //BOX DRAWINGS HEAVY UP AND RIGHT - 0xA9BC: 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0xA9BD: 0x2519, //BOX DRAWINGS UP LIGHT AND LEFT HEAVY - 0xA9BE: 0x251A, //BOX DRAWINGS UP HEAVY AND LEFT LIGHT - 0xA9BF: 0x251B, //BOX DRAWINGS HEAVY UP AND LEFT - 0xA9C0: 0x251C, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0xA9C1: 0x251D, //BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY - 0xA9C2: 0x251E, //BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT - 0xA9C3: 0x251F, //BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT - 0xA9C4: 0x2520, //BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT - 0xA9C5: 0x2521, //BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY - 0xA9C6: 0x2522, //BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY - 0xA9C7: 0x2523, //BOX DRAWINGS HEAVY VERTICAL AND RIGHT - 0xA9C8: 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0xA9C9: 0x2525, //BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY - 0xA9CA: 0x2526, //BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT - 0xA9CB: 0x2527, //BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT - 0xA9CC: 0x2528, //BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT - 0xA9CD: 0x2529, //BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY - 0xA9CE: 0x252A, //BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY - 0xA9CF: 0x252B, //BOX DRAWINGS HEAVY VERTICAL AND LEFT - 0xA9D0: 0x252C, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0xA9D1: 0x252D, //BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT - 0xA9D2: 0x252E, //BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT - 0xA9D3: 0x252F, //BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY - 0xA9D4: 0x2530, //BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT - 0xA9D5: 0x2531, //BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY - 0xA9D6: 0x2532, //BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY - 0xA9D7: 0x2533, //BOX DRAWINGS HEAVY DOWN AND HORIZONTAL - 0xA9D8: 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0xA9D9: 0x2535, //BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT - 0xA9DA: 0x2536, //BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT - 0xA9DB: 0x2537, //BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY - 0xA9DC: 0x2538, //BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT - 0xA9DD: 0x2539, //BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY - 0xA9DE: 0x253A, //BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY - 0xA9DF: 0x253B, //BOX DRAWINGS HEAVY UP AND HORIZONTAL - 0xA9E0: 0x253C, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0xA9E1: 0x253D, //BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT - 0xA9E2: 0x253E, //BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT - 0xA9E3: 0x253F, //BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY - 0xA9E4: 0x2540, //BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT - 0xA9E5: 0x2541, //BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT - 0xA9E6: 0x2542, //BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT - 0xA9E7: 0x2543, //BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT - 0xA9E8: 0x2544, //BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT - 0xA9E9: 0x2545, //BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT - 0xA9EA: 0x2546, //BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT - 0xA9EB: 0x2547, //BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY - 0xA9EC: 0x2548, //BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY - 0xA9ED: 0x2549, //BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY - 0xA9EE: 0x254A, //BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY - 0xA9EF: 0x254B, //BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - 0xAA40: 0x72DC, //CJK UNIFIED IDEOGRAPH - 0xAA41: 0x72DD, //CJK UNIFIED IDEOGRAPH - 0xAA42: 0x72DF, //CJK UNIFIED IDEOGRAPH - 0xAA43: 0x72E2, //CJK UNIFIED IDEOGRAPH - 0xAA44: 0x72E3, //CJK UNIFIED IDEOGRAPH - 0xAA45: 0x72E4, //CJK UNIFIED IDEOGRAPH - 0xAA46: 0x72E5, //CJK UNIFIED IDEOGRAPH - 0xAA47: 0x72E6, //CJK UNIFIED IDEOGRAPH - 0xAA48: 0x72E7, //CJK UNIFIED IDEOGRAPH - 0xAA49: 0x72EA, //CJK UNIFIED IDEOGRAPH - 0xAA4A: 0x72EB, //CJK UNIFIED IDEOGRAPH - 0xAA4B: 0x72F5, //CJK UNIFIED IDEOGRAPH - 0xAA4C: 0x72F6, //CJK UNIFIED IDEOGRAPH - 0xAA4D: 0x72F9, //CJK UNIFIED IDEOGRAPH - 0xAA4E: 0x72FD, //CJK UNIFIED IDEOGRAPH - 0xAA4F: 0x72FE, //CJK UNIFIED IDEOGRAPH - 0xAA50: 0x72FF, //CJK UNIFIED IDEOGRAPH - 0xAA51: 0x7300, //CJK UNIFIED IDEOGRAPH - 0xAA52: 0x7302, //CJK UNIFIED IDEOGRAPH - 0xAA53: 0x7304, //CJK UNIFIED IDEOGRAPH - 0xAA54: 0x7305, //CJK UNIFIED IDEOGRAPH - 0xAA55: 0x7306, //CJK UNIFIED IDEOGRAPH - 0xAA56: 0x7307, //CJK UNIFIED IDEOGRAPH - 0xAA57: 0x7308, //CJK UNIFIED IDEOGRAPH - 0xAA58: 0x7309, //CJK UNIFIED IDEOGRAPH - 0xAA59: 0x730B, //CJK UNIFIED IDEOGRAPH - 0xAA5A: 0x730C, //CJK UNIFIED IDEOGRAPH - 0xAA5B: 0x730D, //CJK UNIFIED IDEOGRAPH - 0xAA5C: 0x730F, //CJK UNIFIED IDEOGRAPH - 0xAA5D: 0x7310, //CJK UNIFIED IDEOGRAPH - 0xAA5E: 0x7311, //CJK UNIFIED IDEOGRAPH - 0xAA5F: 0x7312, //CJK UNIFIED IDEOGRAPH - 0xAA60: 0x7314, //CJK UNIFIED IDEOGRAPH - 0xAA61: 0x7318, //CJK UNIFIED IDEOGRAPH - 0xAA62: 0x7319, //CJK UNIFIED IDEOGRAPH - 0xAA63: 0x731A, //CJK UNIFIED IDEOGRAPH - 0xAA64: 0x731F, //CJK UNIFIED IDEOGRAPH - 0xAA65: 0x7320, //CJK UNIFIED IDEOGRAPH - 0xAA66: 0x7323, //CJK UNIFIED IDEOGRAPH - 0xAA67: 0x7324, //CJK UNIFIED IDEOGRAPH - 0xAA68: 0x7326, //CJK UNIFIED IDEOGRAPH - 0xAA69: 0x7327, //CJK UNIFIED IDEOGRAPH - 0xAA6A: 0x7328, //CJK UNIFIED IDEOGRAPH - 0xAA6B: 0x732D, //CJK UNIFIED IDEOGRAPH - 0xAA6C: 0x732F, //CJK UNIFIED IDEOGRAPH - 0xAA6D: 0x7330, //CJK UNIFIED IDEOGRAPH - 0xAA6E: 0x7332, //CJK UNIFIED IDEOGRAPH - 0xAA6F: 0x7333, //CJK UNIFIED IDEOGRAPH - 0xAA70: 0x7335, //CJK UNIFIED IDEOGRAPH - 0xAA71: 0x7336, //CJK UNIFIED IDEOGRAPH - 0xAA72: 0x733A, //CJK UNIFIED IDEOGRAPH - 0xAA73: 0x733B, //CJK UNIFIED IDEOGRAPH - 0xAA74: 0x733C, //CJK UNIFIED IDEOGRAPH - 0xAA75: 0x733D, //CJK UNIFIED IDEOGRAPH - 0xAA76: 0x7340, //CJK UNIFIED IDEOGRAPH - 0xAA77: 0x7341, //CJK UNIFIED IDEOGRAPH - 0xAA78: 0x7342, //CJK UNIFIED IDEOGRAPH - 0xAA79: 0x7343, //CJK UNIFIED IDEOGRAPH - 0xAA7A: 0x7344, //CJK UNIFIED IDEOGRAPH - 0xAA7B: 0x7345, //CJK UNIFIED IDEOGRAPH - 0xAA7C: 0x7346, //CJK UNIFIED IDEOGRAPH - 0xAA7D: 0x7347, //CJK UNIFIED IDEOGRAPH - 0xAA7E: 0x7348, //CJK UNIFIED IDEOGRAPH - 0xAA80: 0x7349, //CJK UNIFIED IDEOGRAPH - 0xAA81: 0x734A, //CJK UNIFIED IDEOGRAPH - 0xAA82: 0x734B, //CJK UNIFIED IDEOGRAPH - 0xAA83: 0x734C, //CJK UNIFIED IDEOGRAPH - 0xAA84: 0x734E, //CJK UNIFIED IDEOGRAPH - 0xAA85: 0x734F, //CJK UNIFIED IDEOGRAPH - 0xAA86: 0x7351, //CJK UNIFIED IDEOGRAPH - 0xAA87: 0x7353, //CJK UNIFIED IDEOGRAPH - 0xAA88: 0x7354, //CJK UNIFIED IDEOGRAPH - 0xAA89: 0x7355, //CJK UNIFIED IDEOGRAPH - 0xAA8A: 0x7356, //CJK UNIFIED IDEOGRAPH - 0xAA8B: 0x7358, //CJK UNIFIED IDEOGRAPH - 0xAA8C: 0x7359, //CJK UNIFIED IDEOGRAPH - 0xAA8D: 0x735A, //CJK UNIFIED IDEOGRAPH - 0xAA8E: 0x735B, //CJK UNIFIED IDEOGRAPH - 0xAA8F: 0x735C, //CJK UNIFIED IDEOGRAPH - 0xAA90: 0x735D, //CJK UNIFIED IDEOGRAPH - 0xAA91: 0x735E, //CJK UNIFIED IDEOGRAPH - 0xAA92: 0x735F, //CJK UNIFIED IDEOGRAPH - 0xAA93: 0x7361, //CJK UNIFIED IDEOGRAPH - 0xAA94: 0x7362, //CJK UNIFIED IDEOGRAPH - 0xAA95: 0x7363, //CJK UNIFIED IDEOGRAPH - 0xAA96: 0x7364, //CJK UNIFIED IDEOGRAPH - 0xAA97: 0x7365, //CJK UNIFIED IDEOGRAPH - 0xAA98: 0x7366, //CJK UNIFIED IDEOGRAPH - 0xAA99: 0x7367, //CJK UNIFIED IDEOGRAPH - 0xAA9A: 0x7368, //CJK UNIFIED IDEOGRAPH - 0xAA9B: 0x7369, //CJK UNIFIED IDEOGRAPH - 0xAA9C: 0x736A, //CJK UNIFIED IDEOGRAPH - 0xAA9D: 0x736B, //CJK UNIFIED IDEOGRAPH - 0xAA9E: 0x736E, //CJK UNIFIED IDEOGRAPH - 0xAA9F: 0x7370, //CJK UNIFIED IDEOGRAPH - 0xAAA0: 0x7371, //CJK UNIFIED IDEOGRAPH - 0xAB40: 0x7372, //CJK UNIFIED IDEOGRAPH - 0xAB41: 0x7373, //CJK UNIFIED IDEOGRAPH - 0xAB42: 0x7374, //CJK UNIFIED IDEOGRAPH - 0xAB43: 0x7375, //CJK UNIFIED IDEOGRAPH - 0xAB44: 0x7376, //CJK UNIFIED IDEOGRAPH - 0xAB45: 0x7377, //CJK UNIFIED IDEOGRAPH - 0xAB46: 0x7378, //CJK UNIFIED IDEOGRAPH - 0xAB47: 0x7379, //CJK UNIFIED IDEOGRAPH - 0xAB48: 0x737A, //CJK UNIFIED IDEOGRAPH - 0xAB49: 0x737B, //CJK UNIFIED IDEOGRAPH - 0xAB4A: 0x737C, //CJK UNIFIED IDEOGRAPH - 0xAB4B: 0x737D, //CJK UNIFIED IDEOGRAPH - 0xAB4C: 0x737F, //CJK UNIFIED IDEOGRAPH - 0xAB4D: 0x7380, //CJK UNIFIED IDEOGRAPH - 0xAB4E: 0x7381, //CJK UNIFIED IDEOGRAPH - 0xAB4F: 0x7382, //CJK UNIFIED IDEOGRAPH - 0xAB50: 0x7383, //CJK UNIFIED IDEOGRAPH - 0xAB51: 0x7385, //CJK UNIFIED IDEOGRAPH - 0xAB52: 0x7386, //CJK UNIFIED IDEOGRAPH - 0xAB53: 0x7388, //CJK UNIFIED IDEOGRAPH - 0xAB54: 0x738A, //CJK UNIFIED IDEOGRAPH - 0xAB55: 0x738C, //CJK UNIFIED IDEOGRAPH - 0xAB56: 0x738D, //CJK UNIFIED IDEOGRAPH - 0xAB57: 0x738F, //CJK UNIFIED IDEOGRAPH - 0xAB58: 0x7390, //CJK UNIFIED IDEOGRAPH - 0xAB59: 0x7392, //CJK UNIFIED IDEOGRAPH - 0xAB5A: 0x7393, //CJK UNIFIED IDEOGRAPH - 0xAB5B: 0x7394, //CJK UNIFIED IDEOGRAPH - 0xAB5C: 0x7395, //CJK UNIFIED IDEOGRAPH - 0xAB5D: 0x7397, //CJK UNIFIED IDEOGRAPH - 0xAB5E: 0x7398, //CJK UNIFIED IDEOGRAPH - 0xAB5F: 0x7399, //CJK UNIFIED IDEOGRAPH - 0xAB60: 0x739A, //CJK UNIFIED IDEOGRAPH - 0xAB61: 0x739C, //CJK UNIFIED IDEOGRAPH - 0xAB62: 0x739D, //CJK UNIFIED IDEOGRAPH - 0xAB63: 0x739E, //CJK UNIFIED IDEOGRAPH - 0xAB64: 0x73A0, //CJK UNIFIED IDEOGRAPH - 0xAB65: 0x73A1, //CJK UNIFIED IDEOGRAPH - 0xAB66: 0x73A3, //CJK UNIFIED IDEOGRAPH - 0xAB67: 0x73A4, //CJK UNIFIED IDEOGRAPH - 0xAB68: 0x73A5, //CJK UNIFIED IDEOGRAPH - 0xAB69: 0x73A6, //CJK UNIFIED IDEOGRAPH - 0xAB6A: 0x73A7, //CJK UNIFIED IDEOGRAPH - 0xAB6B: 0x73A8, //CJK UNIFIED IDEOGRAPH - 0xAB6C: 0x73AA, //CJK UNIFIED IDEOGRAPH - 0xAB6D: 0x73AC, //CJK UNIFIED IDEOGRAPH - 0xAB6E: 0x73AD, //CJK UNIFIED IDEOGRAPH - 0xAB6F: 0x73B1, //CJK UNIFIED IDEOGRAPH - 0xAB70: 0x73B4, //CJK UNIFIED IDEOGRAPH - 0xAB71: 0x73B5, //CJK UNIFIED IDEOGRAPH - 0xAB72: 0x73B6, //CJK UNIFIED IDEOGRAPH - 0xAB73: 0x73B8, //CJK UNIFIED IDEOGRAPH - 0xAB74: 0x73B9, //CJK UNIFIED IDEOGRAPH - 0xAB75: 0x73BC, //CJK UNIFIED IDEOGRAPH - 0xAB76: 0x73BD, //CJK UNIFIED IDEOGRAPH - 0xAB77: 0x73BE, //CJK UNIFIED IDEOGRAPH - 0xAB78: 0x73BF, //CJK UNIFIED IDEOGRAPH - 0xAB79: 0x73C1, //CJK UNIFIED IDEOGRAPH - 0xAB7A: 0x73C3, //CJK UNIFIED IDEOGRAPH - 0xAB7B: 0x73C4, //CJK UNIFIED IDEOGRAPH - 0xAB7C: 0x73C5, //CJK UNIFIED IDEOGRAPH - 0xAB7D: 0x73C6, //CJK UNIFIED IDEOGRAPH - 0xAB7E: 0x73C7, //CJK UNIFIED IDEOGRAPH - 0xAB80: 0x73CB, //CJK UNIFIED IDEOGRAPH - 0xAB81: 0x73CC, //CJK UNIFIED IDEOGRAPH - 0xAB82: 0x73CE, //CJK UNIFIED IDEOGRAPH - 0xAB83: 0x73D2, //CJK UNIFIED IDEOGRAPH - 0xAB84: 0x73D3, //CJK UNIFIED IDEOGRAPH - 0xAB85: 0x73D4, //CJK UNIFIED IDEOGRAPH - 0xAB86: 0x73D5, //CJK UNIFIED IDEOGRAPH - 0xAB87: 0x73D6, //CJK UNIFIED IDEOGRAPH - 0xAB88: 0x73D7, //CJK UNIFIED IDEOGRAPH - 0xAB89: 0x73D8, //CJK UNIFIED IDEOGRAPH - 0xAB8A: 0x73DA, //CJK UNIFIED IDEOGRAPH - 0xAB8B: 0x73DB, //CJK UNIFIED IDEOGRAPH - 0xAB8C: 0x73DC, //CJK UNIFIED IDEOGRAPH - 0xAB8D: 0x73DD, //CJK UNIFIED IDEOGRAPH - 0xAB8E: 0x73DF, //CJK UNIFIED IDEOGRAPH - 0xAB8F: 0x73E1, //CJK UNIFIED IDEOGRAPH - 0xAB90: 0x73E2, //CJK UNIFIED IDEOGRAPH - 0xAB91: 0x73E3, //CJK UNIFIED IDEOGRAPH - 0xAB92: 0x73E4, //CJK UNIFIED IDEOGRAPH - 0xAB93: 0x73E6, //CJK UNIFIED IDEOGRAPH - 0xAB94: 0x73E8, //CJK UNIFIED IDEOGRAPH - 0xAB95: 0x73EA, //CJK UNIFIED IDEOGRAPH - 0xAB96: 0x73EB, //CJK UNIFIED IDEOGRAPH - 0xAB97: 0x73EC, //CJK UNIFIED IDEOGRAPH - 0xAB98: 0x73EE, //CJK UNIFIED IDEOGRAPH - 0xAB99: 0x73EF, //CJK UNIFIED IDEOGRAPH - 0xAB9A: 0x73F0, //CJK UNIFIED IDEOGRAPH - 0xAB9B: 0x73F1, //CJK UNIFIED IDEOGRAPH - 0xAB9C: 0x73F3, //CJK UNIFIED IDEOGRAPH - 0xAB9D: 0x73F4, //CJK UNIFIED IDEOGRAPH - 0xAB9E: 0x73F5, //CJK UNIFIED IDEOGRAPH - 0xAB9F: 0x73F6, //CJK UNIFIED IDEOGRAPH - 0xABA0: 0x73F7, //CJK UNIFIED IDEOGRAPH - 0xAC40: 0x73F8, //CJK UNIFIED IDEOGRAPH - 0xAC41: 0x73F9, //CJK UNIFIED IDEOGRAPH - 0xAC42: 0x73FA, //CJK UNIFIED IDEOGRAPH - 0xAC43: 0x73FB, //CJK UNIFIED IDEOGRAPH - 0xAC44: 0x73FC, //CJK UNIFIED IDEOGRAPH - 0xAC45: 0x73FD, //CJK UNIFIED IDEOGRAPH - 0xAC46: 0x73FE, //CJK UNIFIED IDEOGRAPH - 0xAC47: 0x73FF, //CJK UNIFIED IDEOGRAPH - 0xAC48: 0x7400, //CJK UNIFIED IDEOGRAPH - 0xAC49: 0x7401, //CJK UNIFIED IDEOGRAPH - 0xAC4A: 0x7402, //CJK UNIFIED IDEOGRAPH - 0xAC4B: 0x7404, //CJK UNIFIED IDEOGRAPH - 0xAC4C: 0x7407, //CJK UNIFIED IDEOGRAPH - 0xAC4D: 0x7408, //CJK UNIFIED IDEOGRAPH - 0xAC4E: 0x740B, //CJK UNIFIED IDEOGRAPH - 0xAC4F: 0x740C, //CJK UNIFIED IDEOGRAPH - 0xAC50: 0x740D, //CJK UNIFIED IDEOGRAPH - 0xAC51: 0x740E, //CJK UNIFIED IDEOGRAPH - 0xAC52: 0x7411, //CJK UNIFIED IDEOGRAPH - 0xAC53: 0x7412, //CJK UNIFIED IDEOGRAPH - 0xAC54: 0x7413, //CJK UNIFIED IDEOGRAPH - 0xAC55: 0x7414, //CJK UNIFIED IDEOGRAPH - 0xAC56: 0x7415, //CJK UNIFIED IDEOGRAPH - 0xAC57: 0x7416, //CJK UNIFIED IDEOGRAPH - 0xAC58: 0x7417, //CJK UNIFIED IDEOGRAPH - 0xAC59: 0x7418, //CJK UNIFIED IDEOGRAPH - 0xAC5A: 0x7419, //CJK UNIFIED IDEOGRAPH - 0xAC5B: 0x741C, //CJK UNIFIED IDEOGRAPH - 0xAC5C: 0x741D, //CJK UNIFIED IDEOGRAPH - 0xAC5D: 0x741E, //CJK UNIFIED IDEOGRAPH - 0xAC5E: 0x741F, //CJK UNIFIED IDEOGRAPH - 0xAC5F: 0x7420, //CJK UNIFIED IDEOGRAPH - 0xAC60: 0x7421, //CJK UNIFIED IDEOGRAPH - 0xAC61: 0x7423, //CJK UNIFIED IDEOGRAPH - 0xAC62: 0x7424, //CJK UNIFIED IDEOGRAPH - 0xAC63: 0x7427, //CJK UNIFIED IDEOGRAPH - 0xAC64: 0x7429, //CJK UNIFIED IDEOGRAPH - 0xAC65: 0x742B, //CJK UNIFIED IDEOGRAPH - 0xAC66: 0x742D, //CJK UNIFIED IDEOGRAPH - 0xAC67: 0x742F, //CJK UNIFIED IDEOGRAPH - 0xAC68: 0x7431, //CJK UNIFIED IDEOGRAPH - 0xAC69: 0x7432, //CJK UNIFIED IDEOGRAPH - 0xAC6A: 0x7437, //CJK UNIFIED IDEOGRAPH - 0xAC6B: 0x7438, //CJK UNIFIED IDEOGRAPH - 0xAC6C: 0x7439, //CJK UNIFIED IDEOGRAPH - 0xAC6D: 0x743A, //CJK UNIFIED IDEOGRAPH - 0xAC6E: 0x743B, //CJK UNIFIED IDEOGRAPH - 0xAC6F: 0x743D, //CJK UNIFIED IDEOGRAPH - 0xAC70: 0x743E, //CJK UNIFIED IDEOGRAPH - 0xAC71: 0x743F, //CJK UNIFIED IDEOGRAPH - 0xAC72: 0x7440, //CJK UNIFIED IDEOGRAPH - 0xAC73: 0x7442, //CJK UNIFIED IDEOGRAPH - 0xAC74: 0x7443, //CJK UNIFIED IDEOGRAPH - 0xAC75: 0x7444, //CJK UNIFIED IDEOGRAPH - 0xAC76: 0x7445, //CJK UNIFIED IDEOGRAPH - 0xAC77: 0x7446, //CJK UNIFIED IDEOGRAPH - 0xAC78: 0x7447, //CJK UNIFIED IDEOGRAPH - 0xAC79: 0x7448, //CJK UNIFIED IDEOGRAPH - 0xAC7A: 0x7449, //CJK UNIFIED IDEOGRAPH - 0xAC7B: 0x744A, //CJK UNIFIED IDEOGRAPH - 0xAC7C: 0x744B, //CJK UNIFIED IDEOGRAPH - 0xAC7D: 0x744C, //CJK UNIFIED IDEOGRAPH - 0xAC7E: 0x744D, //CJK UNIFIED IDEOGRAPH - 0xAC80: 0x744E, //CJK UNIFIED IDEOGRAPH - 0xAC81: 0x744F, //CJK UNIFIED IDEOGRAPH - 0xAC82: 0x7450, //CJK UNIFIED IDEOGRAPH - 0xAC83: 0x7451, //CJK UNIFIED IDEOGRAPH - 0xAC84: 0x7452, //CJK UNIFIED IDEOGRAPH - 0xAC85: 0x7453, //CJK UNIFIED IDEOGRAPH - 0xAC86: 0x7454, //CJK UNIFIED IDEOGRAPH - 0xAC87: 0x7456, //CJK UNIFIED IDEOGRAPH - 0xAC88: 0x7458, //CJK UNIFIED IDEOGRAPH - 0xAC89: 0x745D, //CJK UNIFIED IDEOGRAPH - 0xAC8A: 0x7460, //CJK UNIFIED IDEOGRAPH - 0xAC8B: 0x7461, //CJK UNIFIED IDEOGRAPH - 0xAC8C: 0x7462, //CJK UNIFIED IDEOGRAPH - 0xAC8D: 0x7463, //CJK UNIFIED IDEOGRAPH - 0xAC8E: 0x7464, //CJK UNIFIED IDEOGRAPH - 0xAC8F: 0x7465, //CJK UNIFIED IDEOGRAPH - 0xAC90: 0x7466, //CJK UNIFIED IDEOGRAPH - 0xAC91: 0x7467, //CJK UNIFIED IDEOGRAPH - 0xAC92: 0x7468, //CJK UNIFIED IDEOGRAPH - 0xAC93: 0x7469, //CJK UNIFIED IDEOGRAPH - 0xAC94: 0x746A, //CJK UNIFIED IDEOGRAPH - 0xAC95: 0x746B, //CJK UNIFIED IDEOGRAPH - 0xAC96: 0x746C, //CJK UNIFIED IDEOGRAPH - 0xAC97: 0x746E, //CJK UNIFIED IDEOGRAPH - 0xAC98: 0x746F, //CJK UNIFIED IDEOGRAPH - 0xAC99: 0x7471, //CJK UNIFIED IDEOGRAPH - 0xAC9A: 0x7472, //CJK UNIFIED IDEOGRAPH - 0xAC9B: 0x7473, //CJK UNIFIED IDEOGRAPH - 0xAC9C: 0x7474, //CJK UNIFIED IDEOGRAPH - 0xAC9D: 0x7475, //CJK UNIFIED IDEOGRAPH - 0xAC9E: 0x7478, //CJK UNIFIED IDEOGRAPH - 0xAC9F: 0x7479, //CJK UNIFIED IDEOGRAPH - 0xACA0: 0x747A, //CJK UNIFIED IDEOGRAPH - 0xAD40: 0x747B, //CJK UNIFIED IDEOGRAPH - 0xAD41: 0x747C, //CJK UNIFIED IDEOGRAPH - 0xAD42: 0x747D, //CJK UNIFIED IDEOGRAPH - 0xAD43: 0x747F, //CJK UNIFIED IDEOGRAPH - 0xAD44: 0x7482, //CJK UNIFIED IDEOGRAPH - 0xAD45: 0x7484, //CJK UNIFIED IDEOGRAPH - 0xAD46: 0x7485, //CJK UNIFIED IDEOGRAPH - 0xAD47: 0x7486, //CJK UNIFIED IDEOGRAPH - 0xAD48: 0x7488, //CJK UNIFIED IDEOGRAPH - 0xAD49: 0x7489, //CJK UNIFIED IDEOGRAPH - 0xAD4A: 0x748A, //CJK UNIFIED IDEOGRAPH - 0xAD4B: 0x748C, //CJK UNIFIED IDEOGRAPH - 0xAD4C: 0x748D, //CJK UNIFIED IDEOGRAPH - 0xAD4D: 0x748F, //CJK UNIFIED IDEOGRAPH - 0xAD4E: 0x7491, //CJK UNIFIED IDEOGRAPH - 0xAD4F: 0x7492, //CJK UNIFIED IDEOGRAPH - 0xAD50: 0x7493, //CJK UNIFIED IDEOGRAPH - 0xAD51: 0x7494, //CJK UNIFIED IDEOGRAPH - 0xAD52: 0x7495, //CJK UNIFIED IDEOGRAPH - 0xAD53: 0x7496, //CJK UNIFIED IDEOGRAPH - 0xAD54: 0x7497, //CJK UNIFIED IDEOGRAPH - 0xAD55: 0x7498, //CJK UNIFIED IDEOGRAPH - 0xAD56: 0x7499, //CJK UNIFIED IDEOGRAPH - 0xAD57: 0x749A, //CJK UNIFIED IDEOGRAPH - 0xAD58: 0x749B, //CJK UNIFIED IDEOGRAPH - 0xAD59: 0x749D, //CJK UNIFIED IDEOGRAPH - 0xAD5A: 0x749F, //CJK UNIFIED IDEOGRAPH - 0xAD5B: 0x74A0, //CJK UNIFIED IDEOGRAPH - 0xAD5C: 0x74A1, //CJK UNIFIED IDEOGRAPH - 0xAD5D: 0x74A2, //CJK UNIFIED IDEOGRAPH - 0xAD5E: 0x74A3, //CJK UNIFIED IDEOGRAPH - 0xAD5F: 0x74A4, //CJK UNIFIED IDEOGRAPH - 0xAD60: 0x74A5, //CJK UNIFIED IDEOGRAPH - 0xAD61: 0x74A6, //CJK UNIFIED IDEOGRAPH - 0xAD62: 0x74AA, //CJK UNIFIED IDEOGRAPH - 0xAD63: 0x74AB, //CJK UNIFIED IDEOGRAPH - 0xAD64: 0x74AC, //CJK UNIFIED IDEOGRAPH - 0xAD65: 0x74AD, //CJK UNIFIED IDEOGRAPH - 0xAD66: 0x74AE, //CJK UNIFIED IDEOGRAPH - 0xAD67: 0x74AF, //CJK UNIFIED IDEOGRAPH - 0xAD68: 0x74B0, //CJK UNIFIED IDEOGRAPH - 0xAD69: 0x74B1, //CJK UNIFIED IDEOGRAPH - 0xAD6A: 0x74B2, //CJK UNIFIED IDEOGRAPH - 0xAD6B: 0x74B3, //CJK UNIFIED IDEOGRAPH - 0xAD6C: 0x74B4, //CJK UNIFIED IDEOGRAPH - 0xAD6D: 0x74B5, //CJK UNIFIED IDEOGRAPH - 0xAD6E: 0x74B6, //CJK UNIFIED IDEOGRAPH - 0xAD6F: 0x74B7, //CJK UNIFIED IDEOGRAPH - 0xAD70: 0x74B8, //CJK UNIFIED IDEOGRAPH - 0xAD71: 0x74B9, //CJK UNIFIED IDEOGRAPH - 0xAD72: 0x74BB, //CJK UNIFIED IDEOGRAPH - 0xAD73: 0x74BC, //CJK UNIFIED IDEOGRAPH - 0xAD74: 0x74BD, //CJK UNIFIED IDEOGRAPH - 0xAD75: 0x74BE, //CJK UNIFIED IDEOGRAPH - 0xAD76: 0x74BF, //CJK UNIFIED IDEOGRAPH - 0xAD77: 0x74C0, //CJK UNIFIED IDEOGRAPH - 0xAD78: 0x74C1, //CJK UNIFIED IDEOGRAPH - 0xAD79: 0x74C2, //CJK UNIFIED IDEOGRAPH - 0xAD7A: 0x74C3, //CJK UNIFIED IDEOGRAPH - 0xAD7B: 0x74C4, //CJK UNIFIED IDEOGRAPH - 0xAD7C: 0x74C5, //CJK UNIFIED IDEOGRAPH - 0xAD7D: 0x74C6, //CJK UNIFIED IDEOGRAPH - 0xAD7E: 0x74C7, //CJK UNIFIED IDEOGRAPH - 0xAD80: 0x74C8, //CJK UNIFIED IDEOGRAPH - 0xAD81: 0x74C9, //CJK UNIFIED IDEOGRAPH - 0xAD82: 0x74CA, //CJK UNIFIED IDEOGRAPH - 0xAD83: 0x74CB, //CJK UNIFIED IDEOGRAPH - 0xAD84: 0x74CC, //CJK UNIFIED IDEOGRAPH - 0xAD85: 0x74CD, //CJK UNIFIED IDEOGRAPH - 0xAD86: 0x74CE, //CJK UNIFIED IDEOGRAPH - 0xAD87: 0x74CF, //CJK UNIFIED IDEOGRAPH - 0xAD88: 0x74D0, //CJK UNIFIED IDEOGRAPH - 0xAD89: 0x74D1, //CJK UNIFIED IDEOGRAPH - 0xAD8A: 0x74D3, //CJK UNIFIED IDEOGRAPH - 0xAD8B: 0x74D4, //CJK UNIFIED IDEOGRAPH - 0xAD8C: 0x74D5, //CJK UNIFIED IDEOGRAPH - 0xAD8D: 0x74D6, //CJK UNIFIED IDEOGRAPH - 0xAD8E: 0x74D7, //CJK UNIFIED IDEOGRAPH - 0xAD8F: 0x74D8, //CJK UNIFIED IDEOGRAPH - 0xAD90: 0x74D9, //CJK UNIFIED IDEOGRAPH - 0xAD91: 0x74DA, //CJK UNIFIED IDEOGRAPH - 0xAD92: 0x74DB, //CJK UNIFIED IDEOGRAPH - 0xAD93: 0x74DD, //CJK UNIFIED IDEOGRAPH - 0xAD94: 0x74DF, //CJK UNIFIED IDEOGRAPH - 0xAD95: 0x74E1, //CJK UNIFIED IDEOGRAPH - 0xAD96: 0x74E5, //CJK UNIFIED IDEOGRAPH - 0xAD97: 0x74E7, //CJK UNIFIED IDEOGRAPH - 0xAD98: 0x74E8, //CJK UNIFIED IDEOGRAPH - 0xAD99: 0x74E9, //CJK UNIFIED IDEOGRAPH - 0xAD9A: 0x74EA, //CJK UNIFIED IDEOGRAPH - 0xAD9B: 0x74EB, //CJK UNIFIED IDEOGRAPH - 0xAD9C: 0x74EC, //CJK UNIFIED IDEOGRAPH - 0xAD9D: 0x74ED, //CJK UNIFIED IDEOGRAPH - 0xAD9E: 0x74F0, //CJK UNIFIED IDEOGRAPH - 0xAD9F: 0x74F1, //CJK UNIFIED IDEOGRAPH - 0xADA0: 0x74F2, //CJK UNIFIED IDEOGRAPH - 0xAE40: 0x74F3, //CJK UNIFIED IDEOGRAPH - 0xAE41: 0x74F5, //CJK UNIFIED IDEOGRAPH - 0xAE42: 0x74F8, //CJK UNIFIED IDEOGRAPH - 0xAE43: 0x74F9, //CJK UNIFIED IDEOGRAPH - 0xAE44: 0x74FA, //CJK UNIFIED IDEOGRAPH - 0xAE45: 0x74FB, //CJK UNIFIED IDEOGRAPH - 0xAE46: 0x74FC, //CJK UNIFIED IDEOGRAPH - 0xAE47: 0x74FD, //CJK UNIFIED IDEOGRAPH - 0xAE48: 0x74FE, //CJK UNIFIED IDEOGRAPH - 0xAE49: 0x7500, //CJK UNIFIED IDEOGRAPH - 0xAE4A: 0x7501, //CJK UNIFIED IDEOGRAPH - 0xAE4B: 0x7502, //CJK UNIFIED IDEOGRAPH - 0xAE4C: 0x7503, //CJK UNIFIED IDEOGRAPH - 0xAE4D: 0x7505, //CJK UNIFIED IDEOGRAPH - 0xAE4E: 0x7506, //CJK UNIFIED IDEOGRAPH - 0xAE4F: 0x7507, //CJK UNIFIED IDEOGRAPH - 0xAE50: 0x7508, //CJK UNIFIED IDEOGRAPH - 0xAE51: 0x7509, //CJK UNIFIED IDEOGRAPH - 0xAE52: 0x750A, //CJK UNIFIED IDEOGRAPH - 0xAE53: 0x750B, //CJK UNIFIED IDEOGRAPH - 0xAE54: 0x750C, //CJK UNIFIED IDEOGRAPH - 0xAE55: 0x750E, //CJK UNIFIED IDEOGRAPH - 0xAE56: 0x7510, //CJK UNIFIED IDEOGRAPH - 0xAE57: 0x7512, //CJK UNIFIED IDEOGRAPH - 0xAE58: 0x7514, //CJK UNIFIED IDEOGRAPH - 0xAE59: 0x7515, //CJK UNIFIED IDEOGRAPH - 0xAE5A: 0x7516, //CJK UNIFIED IDEOGRAPH - 0xAE5B: 0x7517, //CJK UNIFIED IDEOGRAPH - 0xAE5C: 0x751B, //CJK UNIFIED IDEOGRAPH - 0xAE5D: 0x751D, //CJK UNIFIED IDEOGRAPH - 0xAE5E: 0x751E, //CJK UNIFIED IDEOGRAPH - 0xAE5F: 0x7520, //CJK UNIFIED IDEOGRAPH - 0xAE60: 0x7521, //CJK UNIFIED IDEOGRAPH - 0xAE61: 0x7522, //CJK UNIFIED IDEOGRAPH - 0xAE62: 0x7523, //CJK UNIFIED IDEOGRAPH - 0xAE63: 0x7524, //CJK UNIFIED IDEOGRAPH - 0xAE64: 0x7526, //CJK UNIFIED IDEOGRAPH - 0xAE65: 0x7527, //CJK UNIFIED IDEOGRAPH - 0xAE66: 0x752A, //CJK UNIFIED IDEOGRAPH - 0xAE67: 0x752E, //CJK UNIFIED IDEOGRAPH - 0xAE68: 0x7534, //CJK UNIFIED IDEOGRAPH - 0xAE69: 0x7536, //CJK UNIFIED IDEOGRAPH - 0xAE6A: 0x7539, //CJK UNIFIED IDEOGRAPH - 0xAE6B: 0x753C, //CJK UNIFIED IDEOGRAPH - 0xAE6C: 0x753D, //CJK UNIFIED IDEOGRAPH - 0xAE6D: 0x753F, //CJK UNIFIED IDEOGRAPH - 0xAE6E: 0x7541, //CJK UNIFIED IDEOGRAPH - 0xAE6F: 0x7542, //CJK UNIFIED IDEOGRAPH - 0xAE70: 0x7543, //CJK UNIFIED IDEOGRAPH - 0xAE71: 0x7544, //CJK UNIFIED IDEOGRAPH - 0xAE72: 0x7546, //CJK UNIFIED IDEOGRAPH - 0xAE73: 0x7547, //CJK UNIFIED IDEOGRAPH - 0xAE74: 0x7549, //CJK UNIFIED IDEOGRAPH - 0xAE75: 0x754A, //CJK UNIFIED IDEOGRAPH - 0xAE76: 0x754D, //CJK UNIFIED IDEOGRAPH - 0xAE77: 0x7550, //CJK UNIFIED IDEOGRAPH - 0xAE78: 0x7551, //CJK UNIFIED IDEOGRAPH - 0xAE79: 0x7552, //CJK UNIFIED IDEOGRAPH - 0xAE7A: 0x7553, //CJK UNIFIED IDEOGRAPH - 0xAE7B: 0x7555, //CJK UNIFIED IDEOGRAPH - 0xAE7C: 0x7556, //CJK UNIFIED IDEOGRAPH - 0xAE7D: 0x7557, //CJK UNIFIED IDEOGRAPH - 0xAE7E: 0x7558, //CJK UNIFIED IDEOGRAPH - 0xAE80: 0x755D, //CJK UNIFIED IDEOGRAPH - 0xAE81: 0x755E, //CJK UNIFIED IDEOGRAPH - 0xAE82: 0x755F, //CJK UNIFIED IDEOGRAPH - 0xAE83: 0x7560, //CJK UNIFIED IDEOGRAPH - 0xAE84: 0x7561, //CJK UNIFIED IDEOGRAPH - 0xAE85: 0x7562, //CJK UNIFIED IDEOGRAPH - 0xAE86: 0x7563, //CJK UNIFIED IDEOGRAPH - 0xAE87: 0x7564, //CJK UNIFIED IDEOGRAPH - 0xAE88: 0x7567, //CJK UNIFIED IDEOGRAPH - 0xAE89: 0x7568, //CJK UNIFIED IDEOGRAPH - 0xAE8A: 0x7569, //CJK UNIFIED IDEOGRAPH - 0xAE8B: 0x756B, //CJK UNIFIED IDEOGRAPH - 0xAE8C: 0x756C, //CJK UNIFIED IDEOGRAPH - 0xAE8D: 0x756D, //CJK UNIFIED IDEOGRAPH - 0xAE8E: 0x756E, //CJK UNIFIED IDEOGRAPH - 0xAE8F: 0x756F, //CJK UNIFIED IDEOGRAPH - 0xAE90: 0x7570, //CJK UNIFIED IDEOGRAPH - 0xAE91: 0x7571, //CJK UNIFIED IDEOGRAPH - 0xAE92: 0x7573, //CJK UNIFIED IDEOGRAPH - 0xAE93: 0x7575, //CJK UNIFIED IDEOGRAPH - 0xAE94: 0x7576, //CJK UNIFIED IDEOGRAPH - 0xAE95: 0x7577, //CJK UNIFIED IDEOGRAPH - 0xAE96: 0x757A, //CJK UNIFIED IDEOGRAPH - 0xAE97: 0x757B, //CJK UNIFIED IDEOGRAPH - 0xAE98: 0x757C, //CJK UNIFIED IDEOGRAPH - 0xAE99: 0x757D, //CJK UNIFIED IDEOGRAPH - 0xAE9A: 0x757E, //CJK UNIFIED IDEOGRAPH - 0xAE9B: 0x7580, //CJK UNIFIED IDEOGRAPH - 0xAE9C: 0x7581, //CJK UNIFIED IDEOGRAPH - 0xAE9D: 0x7582, //CJK UNIFIED IDEOGRAPH - 0xAE9E: 0x7584, //CJK UNIFIED IDEOGRAPH - 0xAE9F: 0x7585, //CJK UNIFIED IDEOGRAPH - 0xAEA0: 0x7587, //CJK UNIFIED IDEOGRAPH - 0xAF40: 0x7588, //CJK UNIFIED IDEOGRAPH - 0xAF41: 0x7589, //CJK UNIFIED IDEOGRAPH - 0xAF42: 0x758A, //CJK UNIFIED IDEOGRAPH - 0xAF43: 0x758C, //CJK UNIFIED IDEOGRAPH - 0xAF44: 0x758D, //CJK UNIFIED IDEOGRAPH - 0xAF45: 0x758E, //CJK UNIFIED IDEOGRAPH - 0xAF46: 0x7590, //CJK UNIFIED IDEOGRAPH - 0xAF47: 0x7593, //CJK UNIFIED IDEOGRAPH - 0xAF48: 0x7595, //CJK UNIFIED IDEOGRAPH - 0xAF49: 0x7598, //CJK UNIFIED IDEOGRAPH - 0xAF4A: 0x759B, //CJK UNIFIED IDEOGRAPH - 0xAF4B: 0x759C, //CJK UNIFIED IDEOGRAPH - 0xAF4C: 0x759E, //CJK UNIFIED IDEOGRAPH - 0xAF4D: 0x75A2, //CJK UNIFIED IDEOGRAPH - 0xAF4E: 0x75A6, //CJK UNIFIED IDEOGRAPH - 0xAF4F: 0x75A7, //CJK UNIFIED IDEOGRAPH - 0xAF50: 0x75A8, //CJK UNIFIED IDEOGRAPH - 0xAF51: 0x75A9, //CJK UNIFIED IDEOGRAPH - 0xAF52: 0x75AA, //CJK UNIFIED IDEOGRAPH - 0xAF53: 0x75AD, //CJK UNIFIED IDEOGRAPH - 0xAF54: 0x75B6, //CJK UNIFIED IDEOGRAPH - 0xAF55: 0x75B7, //CJK UNIFIED IDEOGRAPH - 0xAF56: 0x75BA, //CJK UNIFIED IDEOGRAPH - 0xAF57: 0x75BB, //CJK UNIFIED IDEOGRAPH - 0xAF58: 0x75BF, //CJK UNIFIED IDEOGRAPH - 0xAF59: 0x75C0, //CJK UNIFIED IDEOGRAPH - 0xAF5A: 0x75C1, //CJK UNIFIED IDEOGRAPH - 0xAF5B: 0x75C6, //CJK UNIFIED IDEOGRAPH - 0xAF5C: 0x75CB, //CJK UNIFIED IDEOGRAPH - 0xAF5D: 0x75CC, //CJK UNIFIED IDEOGRAPH - 0xAF5E: 0x75CE, //CJK UNIFIED IDEOGRAPH - 0xAF5F: 0x75CF, //CJK UNIFIED IDEOGRAPH - 0xAF60: 0x75D0, //CJK UNIFIED IDEOGRAPH - 0xAF61: 0x75D1, //CJK UNIFIED IDEOGRAPH - 0xAF62: 0x75D3, //CJK UNIFIED IDEOGRAPH - 0xAF63: 0x75D7, //CJK UNIFIED IDEOGRAPH - 0xAF64: 0x75D9, //CJK UNIFIED IDEOGRAPH - 0xAF65: 0x75DA, //CJK UNIFIED IDEOGRAPH - 0xAF66: 0x75DC, //CJK UNIFIED IDEOGRAPH - 0xAF67: 0x75DD, //CJK UNIFIED IDEOGRAPH - 0xAF68: 0x75DF, //CJK UNIFIED IDEOGRAPH - 0xAF69: 0x75E0, //CJK UNIFIED IDEOGRAPH - 0xAF6A: 0x75E1, //CJK UNIFIED IDEOGRAPH - 0xAF6B: 0x75E5, //CJK UNIFIED IDEOGRAPH - 0xAF6C: 0x75E9, //CJK UNIFIED IDEOGRAPH - 0xAF6D: 0x75EC, //CJK UNIFIED IDEOGRAPH - 0xAF6E: 0x75ED, //CJK UNIFIED IDEOGRAPH - 0xAF6F: 0x75EE, //CJK UNIFIED IDEOGRAPH - 0xAF70: 0x75EF, //CJK UNIFIED IDEOGRAPH - 0xAF71: 0x75F2, //CJK UNIFIED IDEOGRAPH - 0xAF72: 0x75F3, //CJK UNIFIED IDEOGRAPH - 0xAF73: 0x75F5, //CJK UNIFIED IDEOGRAPH - 0xAF74: 0x75F6, //CJK UNIFIED IDEOGRAPH - 0xAF75: 0x75F7, //CJK UNIFIED IDEOGRAPH - 0xAF76: 0x75F8, //CJK UNIFIED IDEOGRAPH - 0xAF77: 0x75FA, //CJK UNIFIED IDEOGRAPH - 0xAF78: 0x75FB, //CJK UNIFIED IDEOGRAPH - 0xAF79: 0x75FD, //CJK UNIFIED IDEOGRAPH - 0xAF7A: 0x75FE, //CJK UNIFIED IDEOGRAPH - 0xAF7B: 0x7602, //CJK UNIFIED IDEOGRAPH - 0xAF7C: 0x7604, //CJK UNIFIED IDEOGRAPH - 0xAF7D: 0x7606, //CJK UNIFIED IDEOGRAPH - 0xAF7E: 0x7607, //CJK UNIFIED IDEOGRAPH - 0xAF80: 0x7608, //CJK UNIFIED IDEOGRAPH - 0xAF81: 0x7609, //CJK UNIFIED IDEOGRAPH - 0xAF82: 0x760B, //CJK UNIFIED IDEOGRAPH - 0xAF83: 0x760D, //CJK UNIFIED IDEOGRAPH - 0xAF84: 0x760E, //CJK UNIFIED IDEOGRAPH - 0xAF85: 0x760F, //CJK UNIFIED IDEOGRAPH - 0xAF86: 0x7611, //CJK UNIFIED IDEOGRAPH - 0xAF87: 0x7612, //CJK UNIFIED IDEOGRAPH - 0xAF88: 0x7613, //CJK UNIFIED IDEOGRAPH - 0xAF89: 0x7614, //CJK UNIFIED IDEOGRAPH - 0xAF8A: 0x7616, //CJK UNIFIED IDEOGRAPH - 0xAF8B: 0x761A, //CJK UNIFIED IDEOGRAPH - 0xAF8C: 0x761C, //CJK UNIFIED IDEOGRAPH - 0xAF8D: 0x761D, //CJK UNIFIED IDEOGRAPH - 0xAF8E: 0x761E, //CJK UNIFIED IDEOGRAPH - 0xAF8F: 0x7621, //CJK UNIFIED IDEOGRAPH - 0xAF90: 0x7623, //CJK UNIFIED IDEOGRAPH - 0xAF91: 0x7627, //CJK UNIFIED IDEOGRAPH - 0xAF92: 0x7628, //CJK UNIFIED IDEOGRAPH - 0xAF93: 0x762C, //CJK UNIFIED IDEOGRAPH - 0xAF94: 0x762E, //CJK UNIFIED IDEOGRAPH - 0xAF95: 0x762F, //CJK UNIFIED IDEOGRAPH - 0xAF96: 0x7631, //CJK UNIFIED IDEOGRAPH - 0xAF97: 0x7632, //CJK UNIFIED IDEOGRAPH - 0xAF98: 0x7636, //CJK UNIFIED IDEOGRAPH - 0xAF99: 0x7637, //CJK UNIFIED IDEOGRAPH - 0xAF9A: 0x7639, //CJK UNIFIED IDEOGRAPH - 0xAF9B: 0x763A, //CJK UNIFIED IDEOGRAPH - 0xAF9C: 0x763B, //CJK UNIFIED IDEOGRAPH - 0xAF9D: 0x763D, //CJK UNIFIED IDEOGRAPH - 0xAF9E: 0x7641, //CJK UNIFIED IDEOGRAPH - 0xAF9F: 0x7642, //CJK UNIFIED IDEOGRAPH - 0xAFA0: 0x7644, //CJK UNIFIED IDEOGRAPH - 0xB040: 0x7645, //CJK UNIFIED IDEOGRAPH - 0xB041: 0x7646, //CJK UNIFIED IDEOGRAPH - 0xB042: 0x7647, //CJK UNIFIED IDEOGRAPH - 0xB043: 0x7648, //CJK UNIFIED IDEOGRAPH - 0xB044: 0x7649, //CJK UNIFIED IDEOGRAPH - 0xB045: 0x764A, //CJK UNIFIED IDEOGRAPH - 0xB046: 0x764B, //CJK UNIFIED IDEOGRAPH - 0xB047: 0x764E, //CJK UNIFIED IDEOGRAPH - 0xB048: 0x764F, //CJK UNIFIED IDEOGRAPH - 0xB049: 0x7650, //CJK UNIFIED IDEOGRAPH - 0xB04A: 0x7651, //CJK UNIFIED IDEOGRAPH - 0xB04B: 0x7652, //CJK UNIFIED IDEOGRAPH - 0xB04C: 0x7653, //CJK UNIFIED IDEOGRAPH - 0xB04D: 0x7655, //CJK UNIFIED IDEOGRAPH - 0xB04E: 0x7657, //CJK UNIFIED IDEOGRAPH - 0xB04F: 0x7658, //CJK UNIFIED IDEOGRAPH - 0xB050: 0x7659, //CJK UNIFIED IDEOGRAPH - 0xB051: 0x765A, //CJK UNIFIED IDEOGRAPH - 0xB052: 0x765B, //CJK UNIFIED IDEOGRAPH - 0xB053: 0x765D, //CJK UNIFIED IDEOGRAPH - 0xB054: 0x765F, //CJK UNIFIED IDEOGRAPH - 0xB055: 0x7660, //CJK UNIFIED IDEOGRAPH - 0xB056: 0x7661, //CJK UNIFIED IDEOGRAPH - 0xB057: 0x7662, //CJK UNIFIED IDEOGRAPH - 0xB058: 0x7664, //CJK UNIFIED IDEOGRAPH - 0xB059: 0x7665, //CJK UNIFIED IDEOGRAPH - 0xB05A: 0x7666, //CJK UNIFIED IDEOGRAPH - 0xB05B: 0x7667, //CJK UNIFIED IDEOGRAPH - 0xB05C: 0x7668, //CJK UNIFIED IDEOGRAPH - 0xB05D: 0x7669, //CJK UNIFIED IDEOGRAPH - 0xB05E: 0x766A, //CJK UNIFIED IDEOGRAPH - 0xB05F: 0x766C, //CJK UNIFIED IDEOGRAPH - 0xB060: 0x766D, //CJK UNIFIED IDEOGRAPH - 0xB061: 0x766E, //CJK UNIFIED IDEOGRAPH - 0xB062: 0x7670, //CJK UNIFIED IDEOGRAPH - 0xB063: 0x7671, //CJK UNIFIED IDEOGRAPH - 0xB064: 0x7672, //CJK UNIFIED IDEOGRAPH - 0xB065: 0x7673, //CJK UNIFIED IDEOGRAPH - 0xB066: 0x7674, //CJK UNIFIED IDEOGRAPH - 0xB067: 0x7675, //CJK UNIFIED IDEOGRAPH - 0xB068: 0x7676, //CJK UNIFIED IDEOGRAPH - 0xB069: 0x7677, //CJK UNIFIED IDEOGRAPH - 0xB06A: 0x7679, //CJK UNIFIED IDEOGRAPH - 0xB06B: 0x767A, //CJK UNIFIED IDEOGRAPH - 0xB06C: 0x767C, //CJK UNIFIED IDEOGRAPH - 0xB06D: 0x767F, //CJK UNIFIED IDEOGRAPH - 0xB06E: 0x7680, //CJK UNIFIED IDEOGRAPH - 0xB06F: 0x7681, //CJK UNIFIED IDEOGRAPH - 0xB070: 0x7683, //CJK UNIFIED IDEOGRAPH - 0xB071: 0x7685, //CJK UNIFIED IDEOGRAPH - 0xB072: 0x7689, //CJK UNIFIED IDEOGRAPH - 0xB073: 0x768A, //CJK UNIFIED IDEOGRAPH - 0xB074: 0x768C, //CJK UNIFIED IDEOGRAPH - 0xB075: 0x768D, //CJK UNIFIED IDEOGRAPH - 0xB076: 0x768F, //CJK UNIFIED IDEOGRAPH - 0xB077: 0x7690, //CJK UNIFIED IDEOGRAPH - 0xB078: 0x7692, //CJK UNIFIED IDEOGRAPH - 0xB079: 0x7694, //CJK UNIFIED IDEOGRAPH - 0xB07A: 0x7695, //CJK UNIFIED IDEOGRAPH - 0xB07B: 0x7697, //CJK UNIFIED IDEOGRAPH - 0xB07C: 0x7698, //CJK UNIFIED IDEOGRAPH - 0xB07D: 0x769A, //CJK UNIFIED IDEOGRAPH - 0xB07E: 0x769B, //CJK UNIFIED IDEOGRAPH - 0xB080: 0x769C, //CJK UNIFIED IDEOGRAPH - 0xB081: 0x769D, //CJK UNIFIED IDEOGRAPH - 0xB082: 0x769E, //CJK UNIFIED IDEOGRAPH - 0xB083: 0x769F, //CJK UNIFIED IDEOGRAPH - 0xB084: 0x76A0, //CJK UNIFIED IDEOGRAPH - 0xB085: 0x76A1, //CJK UNIFIED IDEOGRAPH - 0xB086: 0x76A2, //CJK UNIFIED IDEOGRAPH - 0xB087: 0x76A3, //CJK UNIFIED IDEOGRAPH - 0xB088: 0x76A5, //CJK UNIFIED IDEOGRAPH - 0xB089: 0x76A6, //CJK UNIFIED IDEOGRAPH - 0xB08A: 0x76A7, //CJK UNIFIED IDEOGRAPH - 0xB08B: 0x76A8, //CJK UNIFIED IDEOGRAPH - 0xB08C: 0x76A9, //CJK UNIFIED IDEOGRAPH - 0xB08D: 0x76AA, //CJK UNIFIED IDEOGRAPH - 0xB08E: 0x76AB, //CJK UNIFIED IDEOGRAPH - 0xB08F: 0x76AC, //CJK UNIFIED IDEOGRAPH - 0xB090: 0x76AD, //CJK UNIFIED IDEOGRAPH - 0xB091: 0x76AF, //CJK UNIFIED IDEOGRAPH - 0xB092: 0x76B0, //CJK UNIFIED IDEOGRAPH - 0xB093: 0x76B3, //CJK UNIFIED IDEOGRAPH - 0xB094: 0x76B5, //CJK UNIFIED IDEOGRAPH - 0xB095: 0x76B6, //CJK UNIFIED IDEOGRAPH - 0xB096: 0x76B7, //CJK UNIFIED IDEOGRAPH - 0xB097: 0x76B8, //CJK UNIFIED IDEOGRAPH - 0xB098: 0x76B9, //CJK UNIFIED IDEOGRAPH - 0xB099: 0x76BA, //CJK UNIFIED IDEOGRAPH - 0xB09A: 0x76BB, //CJK UNIFIED IDEOGRAPH - 0xB09B: 0x76BC, //CJK UNIFIED IDEOGRAPH - 0xB09C: 0x76BD, //CJK UNIFIED IDEOGRAPH - 0xB09D: 0x76BE, //CJK UNIFIED IDEOGRAPH - 0xB09E: 0x76C0, //CJK UNIFIED IDEOGRAPH - 0xB09F: 0x76C1, //CJK UNIFIED IDEOGRAPH - 0xB0A0: 0x76C3, //CJK UNIFIED IDEOGRAPH - 0xB0A1: 0x554A, //CJK UNIFIED IDEOGRAPH - 0xB0A2: 0x963F, //CJK UNIFIED IDEOGRAPH - 0xB0A3: 0x57C3, //CJK UNIFIED IDEOGRAPH - 0xB0A4: 0x6328, //CJK UNIFIED IDEOGRAPH - 0xB0A5: 0x54CE, //CJK UNIFIED IDEOGRAPH - 0xB0A6: 0x5509, //CJK UNIFIED IDEOGRAPH - 0xB0A7: 0x54C0, //CJK UNIFIED IDEOGRAPH - 0xB0A8: 0x7691, //CJK UNIFIED IDEOGRAPH - 0xB0A9: 0x764C, //CJK UNIFIED IDEOGRAPH - 0xB0AA: 0x853C, //CJK UNIFIED IDEOGRAPH - 0xB0AB: 0x77EE, //CJK UNIFIED IDEOGRAPH - 0xB0AC: 0x827E, //CJK UNIFIED IDEOGRAPH - 0xB0AD: 0x788D, //CJK UNIFIED IDEOGRAPH - 0xB0AE: 0x7231, //CJK UNIFIED IDEOGRAPH - 0xB0AF: 0x9698, //CJK UNIFIED IDEOGRAPH - 0xB0B0: 0x978D, //CJK UNIFIED IDEOGRAPH - 0xB0B1: 0x6C28, //CJK UNIFIED IDEOGRAPH - 0xB0B2: 0x5B89, //CJK UNIFIED IDEOGRAPH - 0xB0B3: 0x4FFA, //CJK UNIFIED IDEOGRAPH - 0xB0B4: 0x6309, //CJK UNIFIED IDEOGRAPH - 0xB0B5: 0x6697, //CJK UNIFIED IDEOGRAPH - 0xB0B6: 0x5CB8, //CJK UNIFIED IDEOGRAPH - 0xB0B7: 0x80FA, //CJK UNIFIED IDEOGRAPH - 0xB0B8: 0x6848, //CJK UNIFIED IDEOGRAPH - 0xB0B9: 0x80AE, //CJK UNIFIED IDEOGRAPH - 0xB0BA: 0x6602, //CJK UNIFIED IDEOGRAPH - 0xB0BB: 0x76CE, //CJK UNIFIED IDEOGRAPH - 0xB0BC: 0x51F9, //CJK UNIFIED IDEOGRAPH - 0xB0BD: 0x6556, //CJK UNIFIED IDEOGRAPH - 0xB0BE: 0x71AC, //CJK UNIFIED IDEOGRAPH - 0xB0BF: 0x7FF1, //CJK UNIFIED IDEOGRAPH - 0xB0C0: 0x8884, //CJK UNIFIED IDEOGRAPH - 0xB0C1: 0x50B2, //CJK UNIFIED IDEOGRAPH - 0xB0C2: 0x5965, //CJK UNIFIED IDEOGRAPH - 0xB0C3: 0x61CA, //CJK UNIFIED IDEOGRAPH - 0xB0C4: 0x6FB3, //CJK UNIFIED IDEOGRAPH - 0xB0C5: 0x82AD, //CJK UNIFIED IDEOGRAPH - 0xB0C6: 0x634C, //CJK UNIFIED IDEOGRAPH - 0xB0C7: 0x6252, //CJK UNIFIED IDEOGRAPH - 0xB0C8: 0x53ED, //CJK UNIFIED IDEOGRAPH - 0xB0C9: 0x5427, //CJK UNIFIED IDEOGRAPH - 0xB0CA: 0x7B06, //CJK UNIFIED IDEOGRAPH - 0xB0CB: 0x516B, //CJK UNIFIED IDEOGRAPH - 0xB0CC: 0x75A4, //CJK UNIFIED IDEOGRAPH - 0xB0CD: 0x5DF4, //CJK UNIFIED IDEOGRAPH - 0xB0CE: 0x62D4, //CJK UNIFIED IDEOGRAPH - 0xB0CF: 0x8DCB, //CJK UNIFIED IDEOGRAPH - 0xB0D0: 0x9776, //CJK UNIFIED IDEOGRAPH - 0xB0D1: 0x628A, //CJK UNIFIED IDEOGRAPH - 0xB0D2: 0x8019, //CJK UNIFIED IDEOGRAPH - 0xB0D3: 0x575D, //CJK UNIFIED IDEOGRAPH - 0xB0D4: 0x9738, //CJK UNIFIED IDEOGRAPH - 0xB0D5: 0x7F62, //CJK UNIFIED IDEOGRAPH - 0xB0D6: 0x7238, //CJK UNIFIED IDEOGRAPH - 0xB0D7: 0x767D, //CJK UNIFIED IDEOGRAPH - 0xB0D8: 0x67CF, //CJK UNIFIED IDEOGRAPH - 0xB0D9: 0x767E, //CJK UNIFIED IDEOGRAPH - 0xB0DA: 0x6446, //CJK UNIFIED IDEOGRAPH - 0xB0DB: 0x4F70, //CJK UNIFIED IDEOGRAPH - 0xB0DC: 0x8D25, //CJK UNIFIED IDEOGRAPH - 0xB0DD: 0x62DC, //CJK UNIFIED IDEOGRAPH - 0xB0DE: 0x7A17, //CJK UNIFIED IDEOGRAPH - 0xB0DF: 0x6591, //CJK UNIFIED IDEOGRAPH - 0xB0E0: 0x73ED, //CJK UNIFIED IDEOGRAPH - 0xB0E1: 0x642C, //CJK UNIFIED IDEOGRAPH - 0xB0E2: 0x6273, //CJK UNIFIED IDEOGRAPH - 0xB0E3: 0x822C, //CJK UNIFIED IDEOGRAPH - 0xB0E4: 0x9881, //CJK UNIFIED IDEOGRAPH - 0xB0E5: 0x677F, //CJK UNIFIED IDEOGRAPH - 0xB0E6: 0x7248, //CJK UNIFIED IDEOGRAPH - 0xB0E7: 0x626E, //CJK UNIFIED IDEOGRAPH - 0xB0E8: 0x62CC, //CJK UNIFIED IDEOGRAPH - 0xB0E9: 0x4F34, //CJK UNIFIED IDEOGRAPH - 0xB0EA: 0x74E3, //CJK UNIFIED IDEOGRAPH - 0xB0EB: 0x534A, //CJK UNIFIED IDEOGRAPH - 0xB0EC: 0x529E, //CJK UNIFIED IDEOGRAPH - 0xB0ED: 0x7ECA, //CJK UNIFIED IDEOGRAPH - 0xB0EE: 0x90A6, //CJK UNIFIED IDEOGRAPH - 0xB0EF: 0x5E2E, //CJK UNIFIED IDEOGRAPH - 0xB0F0: 0x6886, //CJK UNIFIED IDEOGRAPH - 0xB0F1: 0x699C, //CJK UNIFIED IDEOGRAPH - 0xB0F2: 0x8180, //CJK UNIFIED IDEOGRAPH - 0xB0F3: 0x7ED1, //CJK UNIFIED IDEOGRAPH - 0xB0F4: 0x68D2, //CJK UNIFIED IDEOGRAPH - 0xB0F5: 0x78C5, //CJK UNIFIED IDEOGRAPH - 0xB0F6: 0x868C, //CJK UNIFIED IDEOGRAPH - 0xB0F7: 0x9551, //CJK UNIFIED IDEOGRAPH - 0xB0F8: 0x508D, //CJK UNIFIED IDEOGRAPH - 0xB0F9: 0x8C24, //CJK UNIFIED IDEOGRAPH - 0xB0FA: 0x82DE, //CJK UNIFIED IDEOGRAPH - 0xB0FB: 0x80DE, //CJK UNIFIED IDEOGRAPH - 0xB0FC: 0x5305, //CJK UNIFIED IDEOGRAPH - 0xB0FD: 0x8912, //CJK UNIFIED IDEOGRAPH - 0xB0FE: 0x5265, //CJK UNIFIED IDEOGRAPH - 0xB140: 0x76C4, //CJK UNIFIED IDEOGRAPH - 0xB141: 0x76C7, //CJK UNIFIED IDEOGRAPH - 0xB142: 0x76C9, //CJK UNIFIED IDEOGRAPH - 0xB143: 0x76CB, //CJK UNIFIED IDEOGRAPH - 0xB144: 0x76CC, //CJK UNIFIED IDEOGRAPH - 0xB145: 0x76D3, //CJK UNIFIED IDEOGRAPH - 0xB146: 0x76D5, //CJK UNIFIED IDEOGRAPH - 0xB147: 0x76D9, //CJK UNIFIED IDEOGRAPH - 0xB148: 0x76DA, //CJK UNIFIED IDEOGRAPH - 0xB149: 0x76DC, //CJK UNIFIED IDEOGRAPH - 0xB14A: 0x76DD, //CJK UNIFIED IDEOGRAPH - 0xB14B: 0x76DE, //CJK UNIFIED IDEOGRAPH - 0xB14C: 0x76E0, //CJK UNIFIED IDEOGRAPH - 0xB14D: 0x76E1, //CJK UNIFIED IDEOGRAPH - 0xB14E: 0x76E2, //CJK UNIFIED IDEOGRAPH - 0xB14F: 0x76E3, //CJK UNIFIED IDEOGRAPH - 0xB150: 0x76E4, //CJK UNIFIED IDEOGRAPH - 0xB151: 0x76E6, //CJK UNIFIED IDEOGRAPH - 0xB152: 0x76E7, //CJK UNIFIED IDEOGRAPH - 0xB153: 0x76E8, //CJK UNIFIED IDEOGRAPH - 0xB154: 0x76E9, //CJK UNIFIED IDEOGRAPH - 0xB155: 0x76EA, //CJK UNIFIED IDEOGRAPH - 0xB156: 0x76EB, //CJK UNIFIED IDEOGRAPH - 0xB157: 0x76EC, //CJK UNIFIED IDEOGRAPH - 0xB158: 0x76ED, //CJK UNIFIED IDEOGRAPH - 0xB159: 0x76F0, //CJK UNIFIED IDEOGRAPH - 0xB15A: 0x76F3, //CJK UNIFIED IDEOGRAPH - 0xB15B: 0x76F5, //CJK UNIFIED IDEOGRAPH - 0xB15C: 0x76F6, //CJK UNIFIED IDEOGRAPH - 0xB15D: 0x76F7, //CJK UNIFIED IDEOGRAPH - 0xB15E: 0x76FA, //CJK UNIFIED IDEOGRAPH - 0xB15F: 0x76FB, //CJK UNIFIED IDEOGRAPH - 0xB160: 0x76FD, //CJK UNIFIED IDEOGRAPH - 0xB161: 0x76FF, //CJK UNIFIED IDEOGRAPH - 0xB162: 0x7700, //CJK UNIFIED IDEOGRAPH - 0xB163: 0x7702, //CJK UNIFIED IDEOGRAPH - 0xB164: 0x7703, //CJK UNIFIED IDEOGRAPH - 0xB165: 0x7705, //CJK UNIFIED IDEOGRAPH - 0xB166: 0x7706, //CJK UNIFIED IDEOGRAPH - 0xB167: 0x770A, //CJK UNIFIED IDEOGRAPH - 0xB168: 0x770C, //CJK UNIFIED IDEOGRAPH - 0xB169: 0x770E, //CJK UNIFIED IDEOGRAPH - 0xB16A: 0x770F, //CJK UNIFIED IDEOGRAPH - 0xB16B: 0x7710, //CJK UNIFIED IDEOGRAPH - 0xB16C: 0x7711, //CJK UNIFIED IDEOGRAPH - 0xB16D: 0x7712, //CJK UNIFIED IDEOGRAPH - 0xB16E: 0x7713, //CJK UNIFIED IDEOGRAPH - 0xB16F: 0x7714, //CJK UNIFIED IDEOGRAPH - 0xB170: 0x7715, //CJK UNIFIED IDEOGRAPH - 0xB171: 0x7716, //CJK UNIFIED IDEOGRAPH - 0xB172: 0x7717, //CJK UNIFIED IDEOGRAPH - 0xB173: 0x7718, //CJK UNIFIED IDEOGRAPH - 0xB174: 0x771B, //CJK UNIFIED IDEOGRAPH - 0xB175: 0x771C, //CJK UNIFIED IDEOGRAPH - 0xB176: 0x771D, //CJK UNIFIED IDEOGRAPH - 0xB177: 0x771E, //CJK UNIFIED IDEOGRAPH - 0xB178: 0x7721, //CJK UNIFIED IDEOGRAPH - 0xB179: 0x7723, //CJK UNIFIED IDEOGRAPH - 0xB17A: 0x7724, //CJK UNIFIED IDEOGRAPH - 0xB17B: 0x7725, //CJK UNIFIED IDEOGRAPH - 0xB17C: 0x7727, //CJK UNIFIED IDEOGRAPH - 0xB17D: 0x772A, //CJK UNIFIED IDEOGRAPH - 0xB17E: 0x772B, //CJK UNIFIED IDEOGRAPH - 0xB180: 0x772C, //CJK UNIFIED IDEOGRAPH - 0xB181: 0x772E, //CJK UNIFIED IDEOGRAPH - 0xB182: 0x7730, //CJK UNIFIED IDEOGRAPH - 0xB183: 0x7731, //CJK UNIFIED IDEOGRAPH - 0xB184: 0x7732, //CJK UNIFIED IDEOGRAPH - 0xB185: 0x7733, //CJK UNIFIED IDEOGRAPH - 0xB186: 0x7734, //CJK UNIFIED IDEOGRAPH - 0xB187: 0x7739, //CJK UNIFIED IDEOGRAPH - 0xB188: 0x773B, //CJK UNIFIED IDEOGRAPH - 0xB189: 0x773D, //CJK UNIFIED IDEOGRAPH - 0xB18A: 0x773E, //CJK UNIFIED IDEOGRAPH - 0xB18B: 0x773F, //CJK UNIFIED IDEOGRAPH - 0xB18C: 0x7742, //CJK UNIFIED IDEOGRAPH - 0xB18D: 0x7744, //CJK UNIFIED IDEOGRAPH - 0xB18E: 0x7745, //CJK UNIFIED IDEOGRAPH - 0xB18F: 0x7746, //CJK UNIFIED IDEOGRAPH - 0xB190: 0x7748, //CJK UNIFIED IDEOGRAPH - 0xB191: 0x7749, //CJK UNIFIED IDEOGRAPH - 0xB192: 0x774A, //CJK UNIFIED IDEOGRAPH - 0xB193: 0x774B, //CJK UNIFIED IDEOGRAPH - 0xB194: 0x774C, //CJK UNIFIED IDEOGRAPH - 0xB195: 0x774D, //CJK UNIFIED IDEOGRAPH - 0xB196: 0x774E, //CJK UNIFIED IDEOGRAPH - 0xB197: 0x774F, //CJK UNIFIED IDEOGRAPH - 0xB198: 0x7752, //CJK UNIFIED IDEOGRAPH - 0xB199: 0x7753, //CJK UNIFIED IDEOGRAPH - 0xB19A: 0x7754, //CJK UNIFIED IDEOGRAPH - 0xB19B: 0x7755, //CJK UNIFIED IDEOGRAPH - 0xB19C: 0x7756, //CJK UNIFIED IDEOGRAPH - 0xB19D: 0x7757, //CJK UNIFIED IDEOGRAPH - 0xB19E: 0x7758, //CJK UNIFIED IDEOGRAPH - 0xB19F: 0x7759, //CJK UNIFIED IDEOGRAPH - 0xB1A0: 0x775C, //CJK UNIFIED IDEOGRAPH - 0xB1A1: 0x8584, //CJK UNIFIED IDEOGRAPH - 0xB1A2: 0x96F9, //CJK UNIFIED IDEOGRAPH - 0xB1A3: 0x4FDD, //CJK UNIFIED IDEOGRAPH - 0xB1A4: 0x5821, //CJK UNIFIED IDEOGRAPH - 0xB1A5: 0x9971, //CJK UNIFIED IDEOGRAPH - 0xB1A6: 0x5B9D, //CJK UNIFIED IDEOGRAPH - 0xB1A7: 0x62B1, //CJK UNIFIED IDEOGRAPH - 0xB1A8: 0x62A5, //CJK UNIFIED IDEOGRAPH - 0xB1A9: 0x66B4, //CJK UNIFIED IDEOGRAPH - 0xB1AA: 0x8C79, //CJK UNIFIED IDEOGRAPH - 0xB1AB: 0x9C8D, //CJK UNIFIED IDEOGRAPH - 0xB1AC: 0x7206, //CJK UNIFIED IDEOGRAPH - 0xB1AD: 0x676F, //CJK UNIFIED IDEOGRAPH - 0xB1AE: 0x7891, //CJK UNIFIED IDEOGRAPH - 0xB1AF: 0x60B2, //CJK UNIFIED IDEOGRAPH - 0xB1B0: 0x5351, //CJK UNIFIED IDEOGRAPH - 0xB1B1: 0x5317, //CJK UNIFIED IDEOGRAPH - 0xB1B2: 0x8F88, //CJK UNIFIED IDEOGRAPH - 0xB1B3: 0x80CC, //CJK UNIFIED IDEOGRAPH - 0xB1B4: 0x8D1D, //CJK UNIFIED IDEOGRAPH - 0xB1B5: 0x94A1, //CJK UNIFIED IDEOGRAPH - 0xB1B6: 0x500D, //CJK UNIFIED IDEOGRAPH - 0xB1B7: 0x72C8, //CJK UNIFIED IDEOGRAPH - 0xB1B8: 0x5907, //CJK UNIFIED IDEOGRAPH - 0xB1B9: 0x60EB, //CJK UNIFIED IDEOGRAPH - 0xB1BA: 0x7119, //CJK UNIFIED IDEOGRAPH - 0xB1BB: 0x88AB, //CJK UNIFIED IDEOGRAPH - 0xB1BC: 0x5954, //CJK UNIFIED IDEOGRAPH - 0xB1BD: 0x82EF, //CJK UNIFIED IDEOGRAPH - 0xB1BE: 0x672C, //CJK UNIFIED IDEOGRAPH - 0xB1BF: 0x7B28, //CJK UNIFIED IDEOGRAPH - 0xB1C0: 0x5D29, //CJK UNIFIED IDEOGRAPH - 0xB1C1: 0x7EF7, //CJK UNIFIED IDEOGRAPH - 0xB1C2: 0x752D, //CJK UNIFIED IDEOGRAPH - 0xB1C3: 0x6CF5, //CJK UNIFIED IDEOGRAPH - 0xB1C4: 0x8E66, //CJK UNIFIED IDEOGRAPH - 0xB1C5: 0x8FF8, //CJK UNIFIED IDEOGRAPH - 0xB1C6: 0x903C, //CJK UNIFIED IDEOGRAPH - 0xB1C7: 0x9F3B, //CJK UNIFIED IDEOGRAPH - 0xB1C8: 0x6BD4, //CJK UNIFIED IDEOGRAPH - 0xB1C9: 0x9119, //CJK UNIFIED IDEOGRAPH - 0xB1CA: 0x7B14, //CJK UNIFIED IDEOGRAPH - 0xB1CB: 0x5F7C, //CJK UNIFIED IDEOGRAPH - 0xB1CC: 0x78A7, //CJK UNIFIED IDEOGRAPH - 0xB1CD: 0x84D6, //CJK UNIFIED IDEOGRAPH - 0xB1CE: 0x853D, //CJK UNIFIED IDEOGRAPH - 0xB1CF: 0x6BD5, //CJK UNIFIED IDEOGRAPH - 0xB1D0: 0x6BD9, //CJK UNIFIED IDEOGRAPH - 0xB1D1: 0x6BD6, //CJK UNIFIED IDEOGRAPH - 0xB1D2: 0x5E01, //CJK UNIFIED IDEOGRAPH - 0xB1D3: 0x5E87, //CJK UNIFIED IDEOGRAPH - 0xB1D4: 0x75F9, //CJK UNIFIED IDEOGRAPH - 0xB1D5: 0x95ED, //CJK UNIFIED IDEOGRAPH - 0xB1D6: 0x655D, //CJK UNIFIED IDEOGRAPH - 0xB1D7: 0x5F0A, //CJK UNIFIED IDEOGRAPH - 0xB1D8: 0x5FC5, //CJK UNIFIED IDEOGRAPH - 0xB1D9: 0x8F9F, //CJK UNIFIED IDEOGRAPH - 0xB1DA: 0x58C1, //CJK UNIFIED IDEOGRAPH - 0xB1DB: 0x81C2, //CJK UNIFIED IDEOGRAPH - 0xB1DC: 0x907F, //CJK UNIFIED IDEOGRAPH - 0xB1DD: 0x965B, //CJK UNIFIED IDEOGRAPH - 0xB1DE: 0x97AD, //CJK UNIFIED IDEOGRAPH - 0xB1DF: 0x8FB9, //CJK UNIFIED IDEOGRAPH - 0xB1E0: 0x7F16, //CJK UNIFIED IDEOGRAPH - 0xB1E1: 0x8D2C, //CJK UNIFIED IDEOGRAPH - 0xB1E2: 0x6241, //CJK UNIFIED IDEOGRAPH - 0xB1E3: 0x4FBF, //CJK UNIFIED IDEOGRAPH - 0xB1E4: 0x53D8, //CJK UNIFIED IDEOGRAPH - 0xB1E5: 0x535E, //CJK UNIFIED IDEOGRAPH - 0xB1E6: 0x8FA8, //CJK UNIFIED IDEOGRAPH - 0xB1E7: 0x8FA9, //CJK UNIFIED IDEOGRAPH - 0xB1E8: 0x8FAB, //CJK UNIFIED IDEOGRAPH - 0xB1E9: 0x904D, //CJK UNIFIED IDEOGRAPH - 0xB1EA: 0x6807, //CJK UNIFIED IDEOGRAPH - 0xB1EB: 0x5F6A, //CJK UNIFIED IDEOGRAPH - 0xB1EC: 0x8198, //CJK UNIFIED IDEOGRAPH - 0xB1ED: 0x8868, //CJK UNIFIED IDEOGRAPH - 0xB1EE: 0x9CD6, //CJK UNIFIED IDEOGRAPH - 0xB1EF: 0x618B, //CJK UNIFIED IDEOGRAPH - 0xB1F0: 0x522B, //CJK UNIFIED IDEOGRAPH - 0xB1F1: 0x762A, //CJK UNIFIED IDEOGRAPH - 0xB1F2: 0x5F6C, //CJK UNIFIED IDEOGRAPH - 0xB1F3: 0x658C, //CJK UNIFIED IDEOGRAPH - 0xB1F4: 0x6FD2, //CJK UNIFIED IDEOGRAPH - 0xB1F5: 0x6EE8, //CJK UNIFIED IDEOGRAPH - 0xB1F6: 0x5BBE, //CJK UNIFIED IDEOGRAPH - 0xB1F7: 0x6448, //CJK UNIFIED IDEOGRAPH - 0xB1F8: 0x5175, //CJK UNIFIED IDEOGRAPH - 0xB1F9: 0x51B0, //CJK UNIFIED IDEOGRAPH - 0xB1FA: 0x67C4, //CJK UNIFIED IDEOGRAPH - 0xB1FB: 0x4E19, //CJK UNIFIED IDEOGRAPH - 0xB1FC: 0x79C9, //CJK UNIFIED IDEOGRAPH - 0xB1FD: 0x997C, //CJK UNIFIED IDEOGRAPH - 0xB1FE: 0x70B3, //CJK UNIFIED IDEOGRAPH - 0xB240: 0x775D, //CJK UNIFIED IDEOGRAPH - 0xB241: 0x775E, //CJK UNIFIED IDEOGRAPH - 0xB242: 0x775F, //CJK UNIFIED IDEOGRAPH - 0xB243: 0x7760, //CJK UNIFIED IDEOGRAPH - 0xB244: 0x7764, //CJK UNIFIED IDEOGRAPH - 0xB245: 0x7767, //CJK UNIFIED IDEOGRAPH - 0xB246: 0x7769, //CJK UNIFIED IDEOGRAPH - 0xB247: 0x776A, //CJK UNIFIED IDEOGRAPH - 0xB248: 0x776D, //CJK UNIFIED IDEOGRAPH - 0xB249: 0x776E, //CJK UNIFIED IDEOGRAPH - 0xB24A: 0x776F, //CJK UNIFIED IDEOGRAPH - 0xB24B: 0x7770, //CJK UNIFIED IDEOGRAPH - 0xB24C: 0x7771, //CJK UNIFIED IDEOGRAPH - 0xB24D: 0x7772, //CJK UNIFIED IDEOGRAPH - 0xB24E: 0x7773, //CJK UNIFIED IDEOGRAPH - 0xB24F: 0x7774, //CJK UNIFIED IDEOGRAPH - 0xB250: 0x7775, //CJK UNIFIED IDEOGRAPH - 0xB251: 0x7776, //CJK UNIFIED IDEOGRAPH - 0xB252: 0x7777, //CJK UNIFIED IDEOGRAPH - 0xB253: 0x7778, //CJK UNIFIED IDEOGRAPH - 0xB254: 0x777A, //CJK UNIFIED IDEOGRAPH - 0xB255: 0x777B, //CJK UNIFIED IDEOGRAPH - 0xB256: 0x777C, //CJK UNIFIED IDEOGRAPH - 0xB257: 0x7781, //CJK UNIFIED IDEOGRAPH - 0xB258: 0x7782, //CJK UNIFIED IDEOGRAPH - 0xB259: 0x7783, //CJK UNIFIED IDEOGRAPH - 0xB25A: 0x7786, //CJK UNIFIED IDEOGRAPH - 0xB25B: 0x7787, //CJK UNIFIED IDEOGRAPH - 0xB25C: 0x7788, //CJK UNIFIED IDEOGRAPH - 0xB25D: 0x7789, //CJK UNIFIED IDEOGRAPH - 0xB25E: 0x778A, //CJK UNIFIED IDEOGRAPH - 0xB25F: 0x778B, //CJK UNIFIED IDEOGRAPH - 0xB260: 0x778F, //CJK UNIFIED IDEOGRAPH - 0xB261: 0x7790, //CJK UNIFIED IDEOGRAPH - 0xB262: 0x7793, //CJK UNIFIED IDEOGRAPH - 0xB263: 0x7794, //CJK UNIFIED IDEOGRAPH - 0xB264: 0x7795, //CJK UNIFIED IDEOGRAPH - 0xB265: 0x7796, //CJK UNIFIED IDEOGRAPH - 0xB266: 0x7797, //CJK UNIFIED IDEOGRAPH - 0xB267: 0x7798, //CJK UNIFIED IDEOGRAPH - 0xB268: 0x7799, //CJK UNIFIED IDEOGRAPH - 0xB269: 0x779A, //CJK UNIFIED IDEOGRAPH - 0xB26A: 0x779B, //CJK UNIFIED IDEOGRAPH - 0xB26B: 0x779C, //CJK UNIFIED IDEOGRAPH - 0xB26C: 0x779D, //CJK UNIFIED IDEOGRAPH - 0xB26D: 0x779E, //CJK UNIFIED IDEOGRAPH - 0xB26E: 0x77A1, //CJK UNIFIED IDEOGRAPH - 0xB26F: 0x77A3, //CJK UNIFIED IDEOGRAPH - 0xB270: 0x77A4, //CJK UNIFIED IDEOGRAPH - 0xB271: 0x77A6, //CJK UNIFIED IDEOGRAPH - 0xB272: 0x77A8, //CJK UNIFIED IDEOGRAPH - 0xB273: 0x77AB, //CJK UNIFIED IDEOGRAPH - 0xB274: 0x77AD, //CJK UNIFIED IDEOGRAPH - 0xB275: 0x77AE, //CJK UNIFIED IDEOGRAPH - 0xB276: 0x77AF, //CJK UNIFIED IDEOGRAPH - 0xB277: 0x77B1, //CJK UNIFIED IDEOGRAPH - 0xB278: 0x77B2, //CJK UNIFIED IDEOGRAPH - 0xB279: 0x77B4, //CJK UNIFIED IDEOGRAPH - 0xB27A: 0x77B6, //CJK UNIFIED IDEOGRAPH - 0xB27B: 0x77B7, //CJK UNIFIED IDEOGRAPH - 0xB27C: 0x77B8, //CJK UNIFIED IDEOGRAPH - 0xB27D: 0x77B9, //CJK UNIFIED IDEOGRAPH - 0xB27E: 0x77BA, //CJK UNIFIED IDEOGRAPH - 0xB280: 0x77BC, //CJK UNIFIED IDEOGRAPH - 0xB281: 0x77BE, //CJK UNIFIED IDEOGRAPH - 0xB282: 0x77C0, //CJK UNIFIED IDEOGRAPH - 0xB283: 0x77C1, //CJK UNIFIED IDEOGRAPH - 0xB284: 0x77C2, //CJK UNIFIED IDEOGRAPH - 0xB285: 0x77C3, //CJK UNIFIED IDEOGRAPH - 0xB286: 0x77C4, //CJK UNIFIED IDEOGRAPH - 0xB287: 0x77C5, //CJK UNIFIED IDEOGRAPH - 0xB288: 0x77C6, //CJK UNIFIED IDEOGRAPH - 0xB289: 0x77C7, //CJK UNIFIED IDEOGRAPH - 0xB28A: 0x77C8, //CJK UNIFIED IDEOGRAPH - 0xB28B: 0x77C9, //CJK UNIFIED IDEOGRAPH - 0xB28C: 0x77CA, //CJK UNIFIED IDEOGRAPH - 0xB28D: 0x77CB, //CJK UNIFIED IDEOGRAPH - 0xB28E: 0x77CC, //CJK UNIFIED IDEOGRAPH - 0xB28F: 0x77CE, //CJK UNIFIED IDEOGRAPH - 0xB290: 0x77CF, //CJK UNIFIED IDEOGRAPH - 0xB291: 0x77D0, //CJK UNIFIED IDEOGRAPH - 0xB292: 0x77D1, //CJK UNIFIED IDEOGRAPH - 0xB293: 0x77D2, //CJK UNIFIED IDEOGRAPH - 0xB294: 0x77D3, //CJK UNIFIED IDEOGRAPH - 0xB295: 0x77D4, //CJK UNIFIED IDEOGRAPH - 0xB296: 0x77D5, //CJK UNIFIED IDEOGRAPH - 0xB297: 0x77D6, //CJK UNIFIED IDEOGRAPH - 0xB298: 0x77D8, //CJK UNIFIED IDEOGRAPH - 0xB299: 0x77D9, //CJK UNIFIED IDEOGRAPH - 0xB29A: 0x77DA, //CJK UNIFIED IDEOGRAPH - 0xB29B: 0x77DD, //CJK UNIFIED IDEOGRAPH - 0xB29C: 0x77DE, //CJK UNIFIED IDEOGRAPH - 0xB29D: 0x77DF, //CJK UNIFIED IDEOGRAPH - 0xB29E: 0x77E0, //CJK UNIFIED IDEOGRAPH - 0xB29F: 0x77E1, //CJK UNIFIED IDEOGRAPH - 0xB2A0: 0x77E4, //CJK UNIFIED IDEOGRAPH - 0xB2A1: 0x75C5, //CJK UNIFIED IDEOGRAPH - 0xB2A2: 0x5E76, //CJK UNIFIED IDEOGRAPH - 0xB2A3: 0x73BB, //CJK UNIFIED IDEOGRAPH - 0xB2A4: 0x83E0, //CJK UNIFIED IDEOGRAPH - 0xB2A5: 0x64AD, //CJK UNIFIED IDEOGRAPH - 0xB2A6: 0x62E8, //CJK UNIFIED IDEOGRAPH - 0xB2A7: 0x94B5, //CJK UNIFIED IDEOGRAPH - 0xB2A8: 0x6CE2, //CJK UNIFIED IDEOGRAPH - 0xB2A9: 0x535A, //CJK UNIFIED IDEOGRAPH - 0xB2AA: 0x52C3, //CJK UNIFIED IDEOGRAPH - 0xB2AB: 0x640F, //CJK UNIFIED IDEOGRAPH - 0xB2AC: 0x94C2, //CJK UNIFIED IDEOGRAPH - 0xB2AD: 0x7B94, //CJK UNIFIED IDEOGRAPH - 0xB2AE: 0x4F2F, //CJK UNIFIED IDEOGRAPH - 0xB2AF: 0x5E1B, //CJK UNIFIED IDEOGRAPH - 0xB2B0: 0x8236, //CJK UNIFIED IDEOGRAPH - 0xB2B1: 0x8116, //CJK UNIFIED IDEOGRAPH - 0xB2B2: 0x818A, //CJK UNIFIED IDEOGRAPH - 0xB2B3: 0x6E24, //CJK UNIFIED IDEOGRAPH - 0xB2B4: 0x6CCA, //CJK UNIFIED IDEOGRAPH - 0xB2B5: 0x9A73, //CJK UNIFIED IDEOGRAPH - 0xB2B6: 0x6355, //CJK UNIFIED IDEOGRAPH - 0xB2B7: 0x535C, //CJK UNIFIED IDEOGRAPH - 0xB2B8: 0x54FA, //CJK UNIFIED IDEOGRAPH - 0xB2B9: 0x8865, //CJK UNIFIED IDEOGRAPH - 0xB2BA: 0x57E0, //CJK UNIFIED IDEOGRAPH - 0xB2BB: 0x4E0D, //CJK UNIFIED IDEOGRAPH - 0xB2BC: 0x5E03, //CJK UNIFIED IDEOGRAPH - 0xB2BD: 0x6B65, //CJK UNIFIED IDEOGRAPH - 0xB2BE: 0x7C3F, //CJK UNIFIED IDEOGRAPH - 0xB2BF: 0x90E8, //CJK UNIFIED IDEOGRAPH - 0xB2C0: 0x6016, //CJK UNIFIED IDEOGRAPH - 0xB2C1: 0x64E6, //CJK UNIFIED IDEOGRAPH - 0xB2C2: 0x731C, //CJK UNIFIED IDEOGRAPH - 0xB2C3: 0x88C1, //CJK UNIFIED IDEOGRAPH - 0xB2C4: 0x6750, //CJK UNIFIED IDEOGRAPH - 0xB2C5: 0x624D, //CJK UNIFIED IDEOGRAPH - 0xB2C6: 0x8D22, //CJK UNIFIED IDEOGRAPH - 0xB2C7: 0x776C, //CJK UNIFIED IDEOGRAPH - 0xB2C8: 0x8E29, //CJK UNIFIED IDEOGRAPH - 0xB2C9: 0x91C7, //CJK UNIFIED IDEOGRAPH - 0xB2CA: 0x5F69, //CJK UNIFIED IDEOGRAPH - 0xB2CB: 0x83DC, //CJK UNIFIED IDEOGRAPH - 0xB2CC: 0x8521, //CJK UNIFIED IDEOGRAPH - 0xB2CD: 0x9910, //CJK UNIFIED IDEOGRAPH - 0xB2CE: 0x53C2, //CJK UNIFIED IDEOGRAPH - 0xB2CF: 0x8695, //CJK UNIFIED IDEOGRAPH - 0xB2D0: 0x6B8B, //CJK UNIFIED IDEOGRAPH - 0xB2D1: 0x60ED, //CJK UNIFIED IDEOGRAPH - 0xB2D2: 0x60E8, //CJK UNIFIED IDEOGRAPH - 0xB2D3: 0x707F, //CJK UNIFIED IDEOGRAPH - 0xB2D4: 0x82CD, //CJK UNIFIED IDEOGRAPH - 0xB2D5: 0x8231, //CJK UNIFIED IDEOGRAPH - 0xB2D6: 0x4ED3, //CJK UNIFIED IDEOGRAPH - 0xB2D7: 0x6CA7, //CJK UNIFIED IDEOGRAPH - 0xB2D8: 0x85CF, //CJK UNIFIED IDEOGRAPH - 0xB2D9: 0x64CD, //CJK UNIFIED IDEOGRAPH - 0xB2DA: 0x7CD9, //CJK UNIFIED IDEOGRAPH - 0xB2DB: 0x69FD, //CJK UNIFIED IDEOGRAPH - 0xB2DC: 0x66F9, //CJK UNIFIED IDEOGRAPH - 0xB2DD: 0x8349, //CJK UNIFIED IDEOGRAPH - 0xB2DE: 0x5395, //CJK UNIFIED IDEOGRAPH - 0xB2DF: 0x7B56, //CJK UNIFIED IDEOGRAPH - 0xB2E0: 0x4FA7, //CJK UNIFIED IDEOGRAPH - 0xB2E1: 0x518C, //CJK UNIFIED IDEOGRAPH - 0xB2E2: 0x6D4B, //CJK UNIFIED IDEOGRAPH - 0xB2E3: 0x5C42, //CJK UNIFIED IDEOGRAPH - 0xB2E4: 0x8E6D, //CJK UNIFIED IDEOGRAPH - 0xB2E5: 0x63D2, //CJK UNIFIED IDEOGRAPH - 0xB2E6: 0x53C9, //CJK UNIFIED IDEOGRAPH - 0xB2E7: 0x832C, //CJK UNIFIED IDEOGRAPH - 0xB2E8: 0x8336, //CJK UNIFIED IDEOGRAPH - 0xB2E9: 0x67E5, //CJK UNIFIED IDEOGRAPH - 0xB2EA: 0x78B4, //CJK UNIFIED IDEOGRAPH - 0xB2EB: 0x643D, //CJK UNIFIED IDEOGRAPH - 0xB2EC: 0x5BDF, //CJK UNIFIED IDEOGRAPH - 0xB2ED: 0x5C94, //CJK UNIFIED IDEOGRAPH - 0xB2EE: 0x5DEE, //CJK UNIFIED IDEOGRAPH - 0xB2EF: 0x8BE7, //CJK UNIFIED IDEOGRAPH - 0xB2F0: 0x62C6, //CJK UNIFIED IDEOGRAPH - 0xB2F1: 0x67F4, //CJK UNIFIED IDEOGRAPH - 0xB2F2: 0x8C7A, //CJK UNIFIED IDEOGRAPH - 0xB2F3: 0x6400, //CJK UNIFIED IDEOGRAPH - 0xB2F4: 0x63BA, //CJK UNIFIED IDEOGRAPH - 0xB2F5: 0x8749, //CJK UNIFIED IDEOGRAPH - 0xB2F6: 0x998B, //CJK UNIFIED IDEOGRAPH - 0xB2F7: 0x8C17, //CJK UNIFIED IDEOGRAPH - 0xB2F8: 0x7F20, //CJK UNIFIED IDEOGRAPH - 0xB2F9: 0x94F2, //CJK UNIFIED IDEOGRAPH - 0xB2FA: 0x4EA7, //CJK UNIFIED IDEOGRAPH - 0xB2FB: 0x9610, //CJK UNIFIED IDEOGRAPH - 0xB2FC: 0x98A4, //CJK UNIFIED IDEOGRAPH - 0xB2FD: 0x660C, //CJK UNIFIED IDEOGRAPH - 0xB2FE: 0x7316, //CJK UNIFIED IDEOGRAPH - 0xB340: 0x77E6, //CJK UNIFIED IDEOGRAPH - 0xB341: 0x77E8, //CJK UNIFIED IDEOGRAPH - 0xB342: 0x77EA, //CJK UNIFIED IDEOGRAPH - 0xB343: 0x77EF, //CJK UNIFIED IDEOGRAPH - 0xB344: 0x77F0, //CJK UNIFIED IDEOGRAPH - 0xB345: 0x77F1, //CJK UNIFIED IDEOGRAPH - 0xB346: 0x77F2, //CJK UNIFIED IDEOGRAPH - 0xB347: 0x77F4, //CJK UNIFIED IDEOGRAPH - 0xB348: 0x77F5, //CJK UNIFIED IDEOGRAPH - 0xB349: 0x77F7, //CJK UNIFIED IDEOGRAPH - 0xB34A: 0x77F9, //CJK UNIFIED IDEOGRAPH - 0xB34B: 0x77FA, //CJK UNIFIED IDEOGRAPH - 0xB34C: 0x77FB, //CJK UNIFIED IDEOGRAPH - 0xB34D: 0x77FC, //CJK UNIFIED IDEOGRAPH - 0xB34E: 0x7803, //CJK UNIFIED IDEOGRAPH - 0xB34F: 0x7804, //CJK UNIFIED IDEOGRAPH - 0xB350: 0x7805, //CJK UNIFIED IDEOGRAPH - 0xB351: 0x7806, //CJK UNIFIED IDEOGRAPH - 0xB352: 0x7807, //CJK UNIFIED IDEOGRAPH - 0xB353: 0x7808, //CJK UNIFIED IDEOGRAPH - 0xB354: 0x780A, //CJK UNIFIED IDEOGRAPH - 0xB355: 0x780B, //CJK UNIFIED IDEOGRAPH - 0xB356: 0x780E, //CJK UNIFIED IDEOGRAPH - 0xB357: 0x780F, //CJK UNIFIED IDEOGRAPH - 0xB358: 0x7810, //CJK UNIFIED IDEOGRAPH - 0xB359: 0x7813, //CJK UNIFIED IDEOGRAPH - 0xB35A: 0x7815, //CJK UNIFIED IDEOGRAPH - 0xB35B: 0x7819, //CJK UNIFIED IDEOGRAPH - 0xB35C: 0x781B, //CJK UNIFIED IDEOGRAPH - 0xB35D: 0x781E, //CJK UNIFIED IDEOGRAPH - 0xB35E: 0x7820, //CJK UNIFIED IDEOGRAPH - 0xB35F: 0x7821, //CJK UNIFIED IDEOGRAPH - 0xB360: 0x7822, //CJK UNIFIED IDEOGRAPH - 0xB361: 0x7824, //CJK UNIFIED IDEOGRAPH - 0xB362: 0x7828, //CJK UNIFIED IDEOGRAPH - 0xB363: 0x782A, //CJK UNIFIED IDEOGRAPH - 0xB364: 0x782B, //CJK UNIFIED IDEOGRAPH - 0xB365: 0x782E, //CJK UNIFIED IDEOGRAPH - 0xB366: 0x782F, //CJK UNIFIED IDEOGRAPH - 0xB367: 0x7831, //CJK UNIFIED IDEOGRAPH - 0xB368: 0x7832, //CJK UNIFIED IDEOGRAPH - 0xB369: 0x7833, //CJK UNIFIED IDEOGRAPH - 0xB36A: 0x7835, //CJK UNIFIED IDEOGRAPH - 0xB36B: 0x7836, //CJK UNIFIED IDEOGRAPH - 0xB36C: 0x783D, //CJK UNIFIED IDEOGRAPH - 0xB36D: 0x783F, //CJK UNIFIED IDEOGRAPH - 0xB36E: 0x7841, //CJK UNIFIED IDEOGRAPH - 0xB36F: 0x7842, //CJK UNIFIED IDEOGRAPH - 0xB370: 0x7843, //CJK UNIFIED IDEOGRAPH - 0xB371: 0x7844, //CJK UNIFIED IDEOGRAPH - 0xB372: 0x7846, //CJK UNIFIED IDEOGRAPH - 0xB373: 0x7848, //CJK UNIFIED IDEOGRAPH - 0xB374: 0x7849, //CJK UNIFIED IDEOGRAPH - 0xB375: 0x784A, //CJK UNIFIED IDEOGRAPH - 0xB376: 0x784B, //CJK UNIFIED IDEOGRAPH - 0xB377: 0x784D, //CJK UNIFIED IDEOGRAPH - 0xB378: 0x784F, //CJK UNIFIED IDEOGRAPH - 0xB379: 0x7851, //CJK UNIFIED IDEOGRAPH - 0xB37A: 0x7853, //CJK UNIFIED IDEOGRAPH - 0xB37B: 0x7854, //CJK UNIFIED IDEOGRAPH - 0xB37C: 0x7858, //CJK UNIFIED IDEOGRAPH - 0xB37D: 0x7859, //CJK UNIFIED IDEOGRAPH - 0xB37E: 0x785A, //CJK UNIFIED IDEOGRAPH - 0xB380: 0x785B, //CJK UNIFIED IDEOGRAPH - 0xB381: 0x785C, //CJK UNIFIED IDEOGRAPH - 0xB382: 0x785E, //CJK UNIFIED IDEOGRAPH - 0xB383: 0x785F, //CJK UNIFIED IDEOGRAPH - 0xB384: 0x7860, //CJK UNIFIED IDEOGRAPH - 0xB385: 0x7861, //CJK UNIFIED IDEOGRAPH - 0xB386: 0x7862, //CJK UNIFIED IDEOGRAPH - 0xB387: 0x7863, //CJK UNIFIED IDEOGRAPH - 0xB388: 0x7864, //CJK UNIFIED IDEOGRAPH - 0xB389: 0x7865, //CJK UNIFIED IDEOGRAPH - 0xB38A: 0x7866, //CJK UNIFIED IDEOGRAPH - 0xB38B: 0x7867, //CJK UNIFIED IDEOGRAPH - 0xB38C: 0x7868, //CJK UNIFIED IDEOGRAPH - 0xB38D: 0x7869, //CJK UNIFIED IDEOGRAPH - 0xB38E: 0x786F, //CJK UNIFIED IDEOGRAPH - 0xB38F: 0x7870, //CJK UNIFIED IDEOGRAPH - 0xB390: 0x7871, //CJK UNIFIED IDEOGRAPH - 0xB391: 0x7872, //CJK UNIFIED IDEOGRAPH - 0xB392: 0x7873, //CJK UNIFIED IDEOGRAPH - 0xB393: 0x7874, //CJK UNIFIED IDEOGRAPH - 0xB394: 0x7875, //CJK UNIFIED IDEOGRAPH - 0xB395: 0x7876, //CJK UNIFIED IDEOGRAPH - 0xB396: 0x7878, //CJK UNIFIED IDEOGRAPH - 0xB397: 0x7879, //CJK UNIFIED IDEOGRAPH - 0xB398: 0x787A, //CJK UNIFIED IDEOGRAPH - 0xB399: 0x787B, //CJK UNIFIED IDEOGRAPH - 0xB39A: 0x787D, //CJK UNIFIED IDEOGRAPH - 0xB39B: 0x787E, //CJK UNIFIED IDEOGRAPH - 0xB39C: 0x787F, //CJK UNIFIED IDEOGRAPH - 0xB39D: 0x7880, //CJK UNIFIED IDEOGRAPH - 0xB39E: 0x7881, //CJK UNIFIED IDEOGRAPH - 0xB39F: 0x7882, //CJK UNIFIED IDEOGRAPH - 0xB3A0: 0x7883, //CJK UNIFIED IDEOGRAPH - 0xB3A1: 0x573A, //CJK UNIFIED IDEOGRAPH - 0xB3A2: 0x5C1D, //CJK UNIFIED IDEOGRAPH - 0xB3A3: 0x5E38, //CJK UNIFIED IDEOGRAPH - 0xB3A4: 0x957F, //CJK UNIFIED IDEOGRAPH - 0xB3A5: 0x507F, //CJK UNIFIED IDEOGRAPH - 0xB3A6: 0x80A0, //CJK UNIFIED IDEOGRAPH - 0xB3A7: 0x5382, //CJK UNIFIED IDEOGRAPH - 0xB3A8: 0x655E, //CJK UNIFIED IDEOGRAPH - 0xB3A9: 0x7545, //CJK UNIFIED IDEOGRAPH - 0xB3AA: 0x5531, //CJK UNIFIED IDEOGRAPH - 0xB3AB: 0x5021, //CJK UNIFIED IDEOGRAPH - 0xB3AC: 0x8D85, //CJK UNIFIED IDEOGRAPH - 0xB3AD: 0x6284, //CJK UNIFIED IDEOGRAPH - 0xB3AE: 0x949E, //CJK UNIFIED IDEOGRAPH - 0xB3AF: 0x671D, //CJK UNIFIED IDEOGRAPH - 0xB3B0: 0x5632, //CJK UNIFIED IDEOGRAPH - 0xB3B1: 0x6F6E, //CJK UNIFIED IDEOGRAPH - 0xB3B2: 0x5DE2, //CJK UNIFIED IDEOGRAPH - 0xB3B3: 0x5435, //CJK UNIFIED IDEOGRAPH - 0xB3B4: 0x7092, //CJK UNIFIED IDEOGRAPH - 0xB3B5: 0x8F66, //CJK UNIFIED IDEOGRAPH - 0xB3B6: 0x626F, //CJK UNIFIED IDEOGRAPH - 0xB3B7: 0x64A4, //CJK UNIFIED IDEOGRAPH - 0xB3B8: 0x63A3, //CJK UNIFIED IDEOGRAPH - 0xB3B9: 0x5F7B, //CJK UNIFIED IDEOGRAPH - 0xB3BA: 0x6F88, //CJK UNIFIED IDEOGRAPH - 0xB3BB: 0x90F4, //CJK UNIFIED IDEOGRAPH - 0xB3BC: 0x81E3, //CJK UNIFIED IDEOGRAPH - 0xB3BD: 0x8FB0, //CJK UNIFIED IDEOGRAPH - 0xB3BE: 0x5C18, //CJK UNIFIED IDEOGRAPH - 0xB3BF: 0x6668, //CJK UNIFIED IDEOGRAPH - 0xB3C0: 0x5FF1, //CJK UNIFIED IDEOGRAPH - 0xB3C1: 0x6C89, //CJK UNIFIED IDEOGRAPH - 0xB3C2: 0x9648, //CJK UNIFIED IDEOGRAPH - 0xB3C3: 0x8D81, //CJK UNIFIED IDEOGRAPH - 0xB3C4: 0x886C, //CJK UNIFIED IDEOGRAPH - 0xB3C5: 0x6491, //CJK UNIFIED IDEOGRAPH - 0xB3C6: 0x79F0, //CJK UNIFIED IDEOGRAPH - 0xB3C7: 0x57CE, //CJK UNIFIED IDEOGRAPH - 0xB3C8: 0x6A59, //CJK UNIFIED IDEOGRAPH - 0xB3C9: 0x6210, //CJK UNIFIED IDEOGRAPH - 0xB3CA: 0x5448, //CJK UNIFIED IDEOGRAPH - 0xB3CB: 0x4E58, //CJK UNIFIED IDEOGRAPH - 0xB3CC: 0x7A0B, //CJK UNIFIED IDEOGRAPH - 0xB3CD: 0x60E9, //CJK UNIFIED IDEOGRAPH - 0xB3CE: 0x6F84, //CJK UNIFIED IDEOGRAPH - 0xB3CF: 0x8BDA, //CJK UNIFIED IDEOGRAPH - 0xB3D0: 0x627F, //CJK UNIFIED IDEOGRAPH - 0xB3D1: 0x901E, //CJK UNIFIED IDEOGRAPH - 0xB3D2: 0x9A8B, //CJK UNIFIED IDEOGRAPH - 0xB3D3: 0x79E4, //CJK UNIFIED IDEOGRAPH - 0xB3D4: 0x5403, //CJK UNIFIED IDEOGRAPH - 0xB3D5: 0x75F4, //CJK UNIFIED IDEOGRAPH - 0xB3D6: 0x6301, //CJK UNIFIED IDEOGRAPH - 0xB3D7: 0x5319, //CJK UNIFIED IDEOGRAPH - 0xB3D8: 0x6C60, //CJK UNIFIED IDEOGRAPH - 0xB3D9: 0x8FDF, //CJK UNIFIED IDEOGRAPH - 0xB3DA: 0x5F1B, //CJK UNIFIED IDEOGRAPH - 0xB3DB: 0x9A70, //CJK UNIFIED IDEOGRAPH - 0xB3DC: 0x803B, //CJK UNIFIED IDEOGRAPH - 0xB3DD: 0x9F7F, //CJK UNIFIED IDEOGRAPH - 0xB3DE: 0x4F88, //CJK UNIFIED IDEOGRAPH - 0xB3DF: 0x5C3A, //CJK UNIFIED IDEOGRAPH - 0xB3E0: 0x8D64, //CJK UNIFIED IDEOGRAPH - 0xB3E1: 0x7FC5, //CJK UNIFIED IDEOGRAPH - 0xB3E2: 0x65A5, //CJK UNIFIED IDEOGRAPH - 0xB3E3: 0x70BD, //CJK UNIFIED IDEOGRAPH - 0xB3E4: 0x5145, //CJK UNIFIED IDEOGRAPH - 0xB3E5: 0x51B2, //CJK UNIFIED IDEOGRAPH - 0xB3E6: 0x866B, //CJK UNIFIED IDEOGRAPH - 0xB3E7: 0x5D07, //CJK UNIFIED IDEOGRAPH - 0xB3E8: 0x5BA0, //CJK UNIFIED IDEOGRAPH - 0xB3E9: 0x62BD, //CJK UNIFIED IDEOGRAPH - 0xB3EA: 0x916C, //CJK UNIFIED IDEOGRAPH - 0xB3EB: 0x7574, //CJK UNIFIED IDEOGRAPH - 0xB3EC: 0x8E0C, //CJK UNIFIED IDEOGRAPH - 0xB3ED: 0x7A20, //CJK UNIFIED IDEOGRAPH - 0xB3EE: 0x6101, //CJK UNIFIED IDEOGRAPH - 0xB3EF: 0x7B79, //CJK UNIFIED IDEOGRAPH - 0xB3F0: 0x4EC7, //CJK UNIFIED IDEOGRAPH - 0xB3F1: 0x7EF8, //CJK UNIFIED IDEOGRAPH - 0xB3F2: 0x7785, //CJK UNIFIED IDEOGRAPH - 0xB3F3: 0x4E11, //CJK UNIFIED IDEOGRAPH - 0xB3F4: 0x81ED, //CJK UNIFIED IDEOGRAPH - 0xB3F5: 0x521D, //CJK UNIFIED IDEOGRAPH - 0xB3F6: 0x51FA, //CJK UNIFIED IDEOGRAPH - 0xB3F7: 0x6A71, //CJK UNIFIED IDEOGRAPH - 0xB3F8: 0x53A8, //CJK UNIFIED IDEOGRAPH - 0xB3F9: 0x8E87, //CJK UNIFIED IDEOGRAPH - 0xB3FA: 0x9504, //CJK UNIFIED IDEOGRAPH - 0xB3FB: 0x96CF, //CJK UNIFIED IDEOGRAPH - 0xB3FC: 0x6EC1, //CJK UNIFIED IDEOGRAPH - 0xB3FD: 0x9664, //CJK UNIFIED IDEOGRAPH - 0xB3FE: 0x695A, //CJK UNIFIED IDEOGRAPH - 0xB440: 0x7884, //CJK UNIFIED IDEOGRAPH - 0xB441: 0x7885, //CJK UNIFIED IDEOGRAPH - 0xB442: 0x7886, //CJK UNIFIED IDEOGRAPH - 0xB443: 0x7888, //CJK UNIFIED IDEOGRAPH - 0xB444: 0x788A, //CJK UNIFIED IDEOGRAPH - 0xB445: 0x788B, //CJK UNIFIED IDEOGRAPH - 0xB446: 0x788F, //CJK UNIFIED IDEOGRAPH - 0xB447: 0x7890, //CJK UNIFIED IDEOGRAPH - 0xB448: 0x7892, //CJK UNIFIED IDEOGRAPH - 0xB449: 0x7894, //CJK UNIFIED IDEOGRAPH - 0xB44A: 0x7895, //CJK UNIFIED IDEOGRAPH - 0xB44B: 0x7896, //CJK UNIFIED IDEOGRAPH - 0xB44C: 0x7899, //CJK UNIFIED IDEOGRAPH - 0xB44D: 0x789D, //CJK UNIFIED IDEOGRAPH - 0xB44E: 0x789E, //CJK UNIFIED IDEOGRAPH - 0xB44F: 0x78A0, //CJK UNIFIED IDEOGRAPH - 0xB450: 0x78A2, //CJK UNIFIED IDEOGRAPH - 0xB451: 0x78A4, //CJK UNIFIED IDEOGRAPH - 0xB452: 0x78A6, //CJK UNIFIED IDEOGRAPH - 0xB453: 0x78A8, //CJK UNIFIED IDEOGRAPH - 0xB454: 0x78A9, //CJK UNIFIED IDEOGRAPH - 0xB455: 0x78AA, //CJK UNIFIED IDEOGRAPH - 0xB456: 0x78AB, //CJK UNIFIED IDEOGRAPH - 0xB457: 0x78AC, //CJK UNIFIED IDEOGRAPH - 0xB458: 0x78AD, //CJK UNIFIED IDEOGRAPH - 0xB459: 0x78AE, //CJK UNIFIED IDEOGRAPH - 0xB45A: 0x78AF, //CJK UNIFIED IDEOGRAPH - 0xB45B: 0x78B5, //CJK UNIFIED IDEOGRAPH - 0xB45C: 0x78B6, //CJK UNIFIED IDEOGRAPH - 0xB45D: 0x78B7, //CJK UNIFIED IDEOGRAPH - 0xB45E: 0x78B8, //CJK UNIFIED IDEOGRAPH - 0xB45F: 0x78BA, //CJK UNIFIED IDEOGRAPH - 0xB460: 0x78BB, //CJK UNIFIED IDEOGRAPH - 0xB461: 0x78BC, //CJK UNIFIED IDEOGRAPH - 0xB462: 0x78BD, //CJK UNIFIED IDEOGRAPH - 0xB463: 0x78BF, //CJK UNIFIED IDEOGRAPH - 0xB464: 0x78C0, //CJK UNIFIED IDEOGRAPH - 0xB465: 0x78C2, //CJK UNIFIED IDEOGRAPH - 0xB466: 0x78C3, //CJK UNIFIED IDEOGRAPH - 0xB467: 0x78C4, //CJK UNIFIED IDEOGRAPH - 0xB468: 0x78C6, //CJK UNIFIED IDEOGRAPH - 0xB469: 0x78C7, //CJK UNIFIED IDEOGRAPH - 0xB46A: 0x78C8, //CJK UNIFIED IDEOGRAPH - 0xB46B: 0x78CC, //CJK UNIFIED IDEOGRAPH - 0xB46C: 0x78CD, //CJK UNIFIED IDEOGRAPH - 0xB46D: 0x78CE, //CJK UNIFIED IDEOGRAPH - 0xB46E: 0x78CF, //CJK UNIFIED IDEOGRAPH - 0xB46F: 0x78D1, //CJK UNIFIED IDEOGRAPH - 0xB470: 0x78D2, //CJK UNIFIED IDEOGRAPH - 0xB471: 0x78D3, //CJK UNIFIED IDEOGRAPH - 0xB472: 0x78D6, //CJK UNIFIED IDEOGRAPH - 0xB473: 0x78D7, //CJK UNIFIED IDEOGRAPH - 0xB474: 0x78D8, //CJK UNIFIED IDEOGRAPH - 0xB475: 0x78DA, //CJK UNIFIED IDEOGRAPH - 0xB476: 0x78DB, //CJK UNIFIED IDEOGRAPH - 0xB477: 0x78DC, //CJK UNIFIED IDEOGRAPH - 0xB478: 0x78DD, //CJK UNIFIED IDEOGRAPH - 0xB479: 0x78DE, //CJK UNIFIED IDEOGRAPH - 0xB47A: 0x78DF, //CJK UNIFIED IDEOGRAPH - 0xB47B: 0x78E0, //CJK UNIFIED IDEOGRAPH - 0xB47C: 0x78E1, //CJK UNIFIED IDEOGRAPH - 0xB47D: 0x78E2, //CJK UNIFIED IDEOGRAPH - 0xB47E: 0x78E3, //CJK UNIFIED IDEOGRAPH - 0xB480: 0x78E4, //CJK UNIFIED IDEOGRAPH - 0xB481: 0x78E5, //CJK UNIFIED IDEOGRAPH - 0xB482: 0x78E6, //CJK UNIFIED IDEOGRAPH - 0xB483: 0x78E7, //CJK UNIFIED IDEOGRAPH - 0xB484: 0x78E9, //CJK UNIFIED IDEOGRAPH - 0xB485: 0x78EA, //CJK UNIFIED IDEOGRAPH - 0xB486: 0x78EB, //CJK UNIFIED IDEOGRAPH - 0xB487: 0x78ED, //CJK UNIFIED IDEOGRAPH - 0xB488: 0x78EE, //CJK UNIFIED IDEOGRAPH - 0xB489: 0x78EF, //CJK UNIFIED IDEOGRAPH - 0xB48A: 0x78F0, //CJK UNIFIED IDEOGRAPH - 0xB48B: 0x78F1, //CJK UNIFIED IDEOGRAPH - 0xB48C: 0x78F3, //CJK UNIFIED IDEOGRAPH - 0xB48D: 0x78F5, //CJK UNIFIED IDEOGRAPH - 0xB48E: 0x78F6, //CJK UNIFIED IDEOGRAPH - 0xB48F: 0x78F8, //CJK UNIFIED IDEOGRAPH - 0xB490: 0x78F9, //CJK UNIFIED IDEOGRAPH - 0xB491: 0x78FB, //CJK UNIFIED IDEOGRAPH - 0xB492: 0x78FC, //CJK UNIFIED IDEOGRAPH - 0xB493: 0x78FD, //CJK UNIFIED IDEOGRAPH - 0xB494: 0x78FE, //CJK UNIFIED IDEOGRAPH - 0xB495: 0x78FF, //CJK UNIFIED IDEOGRAPH - 0xB496: 0x7900, //CJK UNIFIED IDEOGRAPH - 0xB497: 0x7902, //CJK UNIFIED IDEOGRAPH - 0xB498: 0x7903, //CJK UNIFIED IDEOGRAPH - 0xB499: 0x7904, //CJK UNIFIED IDEOGRAPH - 0xB49A: 0x7906, //CJK UNIFIED IDEOGRAPH - 0xB49B: 0x7907, //CJK UNIFIED IDEOGRAPH - 0xB49C: 0x7908, //CJK UNIFIED IDEOGRAPH - 0xB49D: 0x7909, //CJK UNIFIED IDEOGRAPH - 0xB49E: 0x790A, //CJK UNIFIED IDEOGRAPH - 0xB49F: 0x790B, //CJK UNIFIED IDEOGRAPH - 0xB4A0: 0x790C, //CJK UNIFIED IDEOGRAPH - 0xB4A1: 0x7840, //CJK UNIFIED IDEOGRAPH - 0xB4A2: 0x50A8, //CJK UNIFIED IDEOGRAPH - 0xB4A3: 0x77D7, //CJK UNIFIED IDEOGRAPH - 0xB4A4: 0x6410, //CJK UNIFIED IDEOGRAPH - 0xB4A5: 0x89E6, //CJK UNIFIED IDEOGRAPH - 0xB4A6: 0x5904, //CJK UNIFIED IDEOGRAPH - 0xB4A7: 0x63E3, //CJK UNIFIED IDEOGRAPH - 0xB4A8: 0x5DDD, //CJK UNIFIED IDEOGRAPH - 0xB4A9: 0x7A7F, //CJK UNIFIED IDEOGRAPH - 0xB4AA: 0x693D, //CJK UNIFIED IDEOGRAPH - 0xB4AB: 0x4F20, //CJK UNIFIED IDEOGRAPH - 0xB4AC: 0x8239, //CJK UNIFIED IDEOGRAPH - 0xB4AD: 0x5598, //CJK UNIFIED IDEOGRAPH - 0xB4AE: 0x4E32, //CJK UNIFIED IDEOGRAPH - 0xB4AF: 0x75AE, //CJK UNIFIED IDEOGRAPH - 0xB4B0: 0x7A97, //CJK UNIFIED IDEOGRAPH - 0xB4B1: 0x5E62, //CJK UNIFIED IDEOGRAPH - 0xB4B2: 0x5E8A, //CJK UNIFIED IDEOGRAPH - 0xB4B3: 0x95EF, //CJK UNIFIED IDEOGRAPH - 0xB4B4: 0x521B, //CJK UNIFIED IDEOGRAPH - 0xB4B5: 0x5439, //CJK UNIFIED IDEOGRAPH - 0xB4B6: 0x708A, //CJK UNIFIED IDEOGRAPH - 0xB4B7: 0x6376, //CJK UNIFIED IDEOGRAPH - 0xB4B8: 0x9524, //CJK UNIFIED IDEOGRAPH - 0xB4B9: 0x5782, //CJK UNIFIED IDEOGRAPH - 0xB4BA: 0x6625, //CJK UNIFIED IDEOGRAPH - 0xB4BB: 0x693F, //CJK UNIFIED IDEOGRAPH - 0xB4BC: 0x9187, //CJK UNIFIED IDEOGRAPH - 0xB4BD: 0x5507, //CJK UNIFIED IDEOGRAPH - 0xB4BE: 0x6DF3, //CJK UNIFIED IDEOGRAPH - 0xB4BF: 0x7EAF, //CJK UNIFIED IDEOGRAPH - 0xB4C0: 0x8822, //CJK UNIFIED IDEOGRAPH - 0xB4C1: 0x6233, //CJK UNIFIED IDEOGRAPH - 0xB4C2: 0x7EF0, //CJK UNIFIED IDEOGRAPH - 0xB4C3: 0x75B5, //CJK UNIFIED IDEOGRAPH - 0xB4C4: 0x8328, //CJK UNIFIED IDEOGRAPH - 0xB4C5: 0x78C1, //CJK UNIFIED IDEOGRAPH - 0xB4C6: 0x96CC, //CJK UNIFIED IDEOGRAPH - 0xB4C7: 0x8F9E, //CJK UNIFIED IDEOGRAPH - 0xB4C8: 0x6148, //CJK UNIFIED IDEOGRAPH - 0xB4C9: 0x74F7, //CJK UNIFIED IDEOGRAPH - 0xB4CA: 0x8BCD, //CJK UNIFIED IDEOGRAPH - 0xB4CB: 0x6B64, //CJK UNIFIED IDEOGRAPH - 0xB4CC: 0x523A, //CJK UNIFIED IDEOGRAPH - 0xB4CD: 0x8D50, //CJK UNIFIED IDEOGRAPH - 0xB4CE: 0x6B21, //CJK UNIFIED IDEOGRAPH - 0xB4CF: 0x806A, //CJK UNIFIED IDEOGRAPH - 0xB4D0: 0x8471, //CJK UNIFIED IDEOGRAPH - 0xB4D1: 0x56F1, //CJK UNIFIED IDEOGRAPH - 0xB4D2: 0x5306, //CJK UNIFIED IDEOGRAPH - 0xB4D3: 0x4ECE, //CJK UNIFIED IDEOGRAPH - 0xB4D4: 0x4E1B, //CJK UNIFIED IDEOGRAPH - 0xB4D5: 0x51D1, //CJK UNIFIED IDEOGRAPH - 0xB4D6: 0x7C97, //CJK UNIFIED IDEOGRAPH - 0xB4D7: 0x918B, //CJK UNIFIED IDEOGRAPH - 0xB4D8: 0x7C07, //CJK UNIFIED IDEOGRAPH - 0xB4D9: 0x4FC3, //CJK UNIFIED IDEOGRAPH - 0xB4DA: 0x8E7F, //CJK UNIFIED IDEOGRAPH - 0xB4DB: 0x7BE1, //CJK UNIFIED IDEOGRAPH - 0xB4DC: 0x7A9C, //CJK UNIFIED IDEOGRAPH - 0xB4DD: 0x6467, //CJK UNIFIED IDEOGRAPH - 0xB4DE: 0x5D14, //CJK UNIFIED IDEOGRAPH - 0xB4DF: 0x50AC, //CJK UNIFIED IDEOGRAPH - 0xB4E0: 0x8106, //CJK UNIFIED IDEOGRAPH - 0xB4E1: 0x7601, //CJK UNIFIED IDEOGRAPH - 0xB4E2: 0x7CB9, //CJK UNIFIED IDEOGRAPH - 0xB4E3: 0x6DEC, //CJK UNIFIED IDEOGRAPH - 0xB4E4: 0x7FE0, //CJK UNIFIED IDEOGRAPH - 0xB4E5: 0x6751, //CJK UNIFIED IDEOGRAPH - 0xB4E6: 0x5B58, //CJK UNIFIED IDEOGRAPH - 0xB4E7: 0x5BF8, //CJK UNIFIED IDEOGRAPH - 0xB4E8: 0x78CB, //CJK UNIFIED IDEOGRAPH - 0xB4E9: 0x64AE, //CJK UNIFIED IDEOGRAPH - 0xB4EA: 0x6413, //CJK UNIFIED IDEOGRAPH - 0xB4EB: 0x63AA, //CJK UNIFIED IDEOGRAPH - 0xB4EC: 0x632B, //CJK UNIFIED IDEOGRAPH - 0xB4ED: 0x9519, //CJK UNIFIED IDEOGRAPH - 0xB4EE: 0x642D, //CJK UNIFIED IDEOGRAPH - 0xB4EF: 0x8FBE, //CJK UNIFIED IDEOGRAPH - 0xB4F0: 0x7B54, //CJK UNIFIED IDEOGRAPH - 0xB4F1: 0x7629, //CJK UNIFIED IDEOGRAPH - 0xB4F2: 0x6253, //CJK UNIFIED IDEOGRAPH - 0xB4F3: 0x5927, //CJK UNIFIED IDEOGRAPH - 0xB4F4: 0x5446, //CJK UNIFIED IDEOGRAPH - 0xB4F5: 0x6B79, //CJK UNIFIED IDEOGRAPH - 0xB4F6: 0x50A3, //CJK UNIFIED IDEOGRAPH - 0xB4F7: 0x6234, //CJK UNIFIED IDEOGRAPH - 0xB4F8: 0x5E26, //CJK UNIFIED IDEOGRAPH - 0xB4F9: 0x6B86, //CJK UNIFIED IDEOGRAPH - 0xB4FA: 0x4EE3, //CJK UNIFIED IDEOGRAPH - 0xB4FB: 0x8D37, //CJK UNIFIED IDEOGRAPH - 0xB4FC: 0x888B, //CJK UNIFIED IDEOGRAPH - 0xB4FD: 0x5F85, //CJK UNIFIED IDEOGRAPH - 0xB4FE: 0x902E, //CJK UNIFIED IDEOGRAPH - 0xB540: 0x790D, //CJK UNIFIED IDEOGRAPH - 0xB541: 0x790E, //CJK UNIFIED IDEOGRAPH - 0xB542: 0x790F, //CJK UNIFIED IDEOGRAPH - 0xB543: 0x7910, //CJK UNIFIED IDEOGRAPH - 0xB544: 0x7911, //CJK UNIFIED IDEOGRAPH - 0xB545: 0x7912, //CJK UNIFIED IDEOGRAPH - 0xB546: 0x7914, //CJK UNIFIED IDEOGRAPH - 0xB547: 0x7915, //CJK UNIFIED IDEOGRAPH - 0xB548: 0x7916, //CJK UNIFIED IDEOGRAPH - 0xB549: 0x7917, //CJK UNIFIED IDEOGRAPH - 0xB54A: 0x7918, //CJK UNIFIED IDEOGRAPH - 0xB54B: 0x7919, //CJK UNIFIED IDEOGRAPH - 0xB54C: 0x791A, //CJK UNIFIED IDEOGRAPH - 0xB54D: 0x791B, //CJK UNIFIED IDEOGRAPH - 0xB54E: 0x791C, //CJK UNIFIED IDEOGRAPH - 0xB54F: 0x791D, //CJK UNIFIED IDEOGRAPH - 0xB550: 0x791F, //CJK UNIFIED IDEOGRAPH - 0xB551: 0x7920, //CJK UNIFIED IDEOGRAPH - 0xB552: 0x7921, //CJK UNIFIED IDEOGRAPH - 0xB553: 0x7922, //CJK UNIFIED IDEOGRAPH - 0xB554: 0x7923, //CJK UNIFIED IDEOGRAPH - 0xB555: 0x7925, //CJK UNIFIED IDEOGRAPH - 0xB556: 0x7926, //CJK UNIFIED IDEOGRAPH - 0xB557: 0x7927, //CJK UNIFIED IDEOGRAPH - 0xB558: 0x7928, //CJK UNIFIED IDEOGRAPH - 0xB559: 0x7929, //CJK UNIFIED IDEOGRAPH - 0xB55A: 0x792A, //CJK UNIFIED IDEOGRAPH - 0xB55B: 0x792B, //CJK UNIFIED IDEOGRAPH - 0xB55C: 0x792C, //CJK UNIFIED IDEOGRAPH - 0xB55D: 0x792D, //CJK UNIFIED IDEOGRAPH - 0xB55E: 0x792E, //CJK UNIFIED IDEOGRAPH - 0xB55F: 0x792F, //CJK UNIFIED IDEOGRAPH - 0xB560: 0x7930, //CJK UNIFIED IDEOGRAPH - 0xB561: 0x7931, //CJK UNIFIED IDEOGRAPH - 0xB562: 0x7932, //CJK UNIFIED IDEOGRAPH - 0xB563: 0x7933, //CJK UNIFIED IDEOGRAPH - 0xB564: 0x7935, //CJK UNIFIED IDEOGRAPH - 0xB565: 0x7936, //CJK UNIFIED IDEOGRAPH - 0xB566: 0x7937, //CJK UNIFIED IDEOGRAPH - 0xB567: 0x7938, //CJK UNIFIED IDEOGRAPH - 0xB568: 0x7939, //CJK UNIFIED IDEOGRAPH - 0xB569: 0x793D, //CJK UNIFIED IDEOGRAPH - 0xB56A: 0x793F, //CJK UNIFIED IDEOGRAPH - 0xB56B: 0x7942, //CJK UNIFIED IDEOGRAPH - 0xB56C: 0x7943, //CJK UNIFIED IDEOGRAPH - 0xB56D: 0x7944, //CJK UNIFIED IDEOGRAPH - 0xB56E: 0x7945, //CJK UNIFIED IDEOGRAPH - 0xB56F: 0x7947, //CJK UNIFIED IDEOGRAPH - 0xB570: 0x794A, //CJK UNIFIED IDEOGRAPH - 0xB571: 0x794B, //CJK UNIFIED IDEOGRAPH - 0xB572: 0x794C, //CJK UNIFIED IDEOGRAPH - 0xB573: 0x794D, //CJK UNIFIED IDEOGRAPH - 0xB574: 0x794E, //CJK UNIFIED IDEOGRAPH - 0xB575: 0x794F, //CJK UNIFIED IDEOGRAPH - 0xB576: 0x7950, //CJK UNIFIED IDEOGRAPH - 0xB577: 0x7951, //CJK UNIFIED IDEOGRAPH - 0xB578: 0x7952, //CJK UNIFIED IDEOGRAPH - 0xB579: 0x7954, //CJK UNIFIED IDEOGRAPH - 0xB57A: 0x7955, //CJK UNIFIED IDEOGRAPH - 0xB57B: 0x7958, //CJK UNIFIED IDEOGRAPH - 0xB57C: 0x7959, //CJK UNIFIED IDEOGRAPH - 0xB57D: 0x7961, //CJK UNIFIED IDEOGRAPH - 0xB57E: 0x7963, //CJK UNIFIED IDEOGRAPH - 0xB580: 0x7964, //CJK UNIFIED IDEOGRAPH - 0xB581: 0x7966, //CJK UNIFIED IDEOGRAPH - 0xB582: 0x7969, //CJK UNIFIED IDEOGRAPH - 0xB583: 0x796A, //CJK UNIFIED IDEOGRAPH - 0xB584: 0x796B, //CJK UNIFIED IDEOGRAPH - 0xB585: 0x796C, //CJK UNIFIED IDEOGRAPH - 0xB586: 0x796E, //CJK UNIFIED IDEOGRAPH - 0xB587: 0x7970, //CJK UNIFIED IDEOGRAPH - 0xB588: 0x7971, //CJK UNIFIED IDEOGRAPH - 0xB589: 0x7972, //CJK UNIFIED IDEOGRAPH - 0xB58A: 0x7973, //CJK UNIFIED IDEOGRAPH - 0xB58B: 0x7974, //CJK UNIFIED IDEOGRAPH - 0xB58C: 0x7975, //CJK UNIFIED IDEOGRAPH - 0xB58D: 0x7976, //CJK UNIFIED IDEOGRAPH - 0xB58E: 0x7979, //CJK UNIFIED IDEOGRAPH - 0xB58F: 0x797B, //CJK UNIFIED IDEOGRAPH - 0xB590: 0x797C, //CJK UNIFIED IDEOGRAPH - 0xB591: 0x797D, //CJK UNIFIED IDEOGRAPH - 0xB592: 0x797E, //CJK UNIFIED IDEOGRAPH - 0xB593: 0x797F, //CJK UNIFIED IDEOGRAPH - 0xB594: 0x7982, //CJK UNIFIED IDEOGRAPH - 0xB595: 0x7983, //CJK UNIFIED IDEOGRAPH - 0xB596: 0x7986, //CJK UNIFIED IDEOGRAPH - 0xB597: 0x7987, //CJK UNIFIED IDEOGRAPH - 0xB598: 0x7988, //CJK UNIFIED IDEOGRAPH - 0xB599: 0x7989, //CJK UNIFIED IDEOGRAPH - 0xB59A: 0x798B, //CJK UNIFIED IDEOGRAPH - 0xB59B: 0x798C, //CJK UNIFIED IDEOGRAPH - 0xB59C: 0x798D, //CJK UNIFIED IDEOGRAPH - 0xB59D: 0x798E, //CJK UNIFIED IDEOGRAPH - 0xB59E: 0x7990, //CJK UNIFIED IDEOGRAPH - 0xB59F: 0x7991, //CJK UNIFIED IDEOGRAPH - 0xB5A0: 0x7992, //CJK UNIFIED IDEOGRAPH - 0xB5A1: 0x6020, //CJK UNIFIED IDEOGRAPH - 0xB5A2: 0x803D, //CJK UNIFIED IDEOGRAPH - 0xB5A3: 0x62C5, //CJK UNIFIED IDEOGRAPH - 0xB5A4: 0x4E39, //CJK UNIFIED IDEOGRAPH - 0xB5A5: 0x5355, //CJK UNIFIED IDEOGRAPH - 0xB5A6: 0x90F8, //CJK UNIFIED IDEOGRAPH - 0xB5A7: 0x63B8, //CJK UNIFIED IDEOGRAPH - 0xB5A8: 0x80C6, //CJK UNIFIED IDEOGRAPH - 0xB5A9: 0x65E6, //CJK UNIFIED IDEOGRAPH - 0xB5AA: 0x6C2E, //CJK UNIFIED IDEOGRAPH - 0xB5AB: 0x4F46, //CJK UNIFIED IDEOGRAPH - 0xB5AC: 0x60EE, //CJK UNIFIED IDEOGRAPH - 0xB5AD: 0x6DE1, //CJK UNIFIED IDEOGRAPH - 0xB5AE: 0x8BDE, //CJK UNIFIED IDEOGRAPH - 0xB5AF: 0x5F39, //CJK UNIFIED IDEOGRAPH - 0xB5B0: 0x86CB, //CJK UNIFIED IDEOGRAPH - 0xB5B1: 0x5F53, //CJK UNIFIED IDEOGRAPH - 0xB5B2: 0x6321, //CJK UNIFIED IDEOGRAPH - 0xB5B3: 0x515A, //CJK UNIFIED IDEOGRAPH - 0xB5B4: 0x8361, //CJK UNIFIED IDEOGRAPH - 0xB5B5: 0x6863, //CJK UNIFIED IDEOGRAPH - 0xB5B6: 0x5200, //CJK UNIFIED IDEOGRAPH - 0xB5B7: 0x6363, //CJK UNIFIED IDEOGRAPH - 0xB5B8: 0x8E48, //CJK UNIFIED IDEOGRAPH - 0xB5B9: 0x5012, //CJK UNIFIED IDEOGRAPH - 0xB5BA: 0x5C9B, //CJK UNIFIED IDEOGRAPH - 0xB5BB: 0x7977, //CJK UNIFIED IDEOGRAPH - 0xB5BC: 0x5BFC, //CJK UNIFIED IDEOGRAPH - 0xB5BD: 0x5230, //CJK UNIFIED IDEOGRAPH - 0xB5BE: 0x7A3B, //CJK UNIFIED IDEOGRAPH - 0xB5BF: 0x60BC, //CJK UNIFIED IDEOGRAPH - 0xB5C0: 0x9053, //CJK UNIFIED IDEOGRAPH - 0xB5C1: 0x76D7, //CJK UNIFIED IDEOGRAPH - 0xB5C2: 0x5FB7, //CJK UNIFIED IDEOGRAPH - 0xB5C3: 0x5F97, //CJK UNIFIED IDEOGRAPH - 0xB5C4: 0x7684, //CJK UNIFIED IDEOGRAPH - 0xB5C5: 0x8E6C, //CJK UNIFIED IDEOGRAPH - 0xB5C6: 0x706F, //CJK UNIFIED IDEOGRAPH - 0xB5C7: 0x767B, //CJK UNIFIED IDEOGRAPH - 0xB5C8: 0x7B49, //CJK UNIFIED IDEOGRAPH - 0xB5C9: 0x77AA, //CJK UNIFIED IDEOGRAPH - 0xB5CA: 0x51F3, //CJK UNIFIED IDEOGRAPH - 0xB5CB: 0x9093, //CJK UNIFIED IDEOGRAPH - 0xB5CC: 0x5824, //CJK UNIFIED IDEOGRAPH - 0xB5CD: 0x4F4E, //CJK UNIFIED IDEOGRAPH - 0xB5CE: 0x6EF4, //CJK UNIFIED IDEOGRAPH - 0xB5CF: 0x8FEA, //CJK UNIFIED IDEOGRAPH - 0xB5D0: 0x654C, //CJK UNIFIED IDEOGRAPH - 0xB5D1: 0x7B1B, //CJK UNIFIED IDEOGRAPH - 0xB5D2: 0x72C4, //CJK UNIFIED IDEOGRAPH - 0xB5D3: 0x6DA4, //CJK UNIFIED IDEOGRAPH - 0xB5D4: 0x7FDF, //CJK UNIFIED IDEOGRAPH - 0xB5D5: 0x5AE1, //CJK UNIFIED IDEOGRAPH - 0xB5D6: 0x62B5, //CJK UNIFIED IDEOGRAPH - 0xB5D7: 0x5E95, //CJK UNIFIED IDEOGRAPH - 0xB5D8: 0x5730, //CJK UNIFIED IDEOGRAPH - 0xB5D9: 0x8482, //CJK UNIFIED IDEOGRAPH - 0xB5DA: 0x7B2C, //CJK UNIFIED IDEOGRAPH - 0xB5DB: 0x5E1D, //CJK UNIFIED IDEOGRAPH - 0xB5DC: 0x5F1F, //CJK UNIFIED IDEOGRAPH - 0xB5DD: 0x9012, //CJK UNIFIED IDEOGRAPH - 0xB5DE: 0x7F14, //CJK UNIFIED IDEOGRAPH - 0xB5DF: 0x98A0, //CJK UNIFIED IDEOGRAPH - 0xB5E0: 0x6382, //CJK UNIFIED IDEOGRAPH - 0xB5E1: 0x6EC7, //CJK UNIFIED IDEOGRAPH - 0xB5E2: 0x7898, //CJK UNIFIED IDEOGRAPH - 0xB5E3: 0x70B9, //CJK UNIFIED IDEOGRAPH - 0xB5E4: 0x5178, //CJK UNIFIED IDEOGRAPH - 0xB5E5: 0x975B, //CJK UNIFIED IDEOGRAPH - 0xB5E6: 0x57AB, //CJK UNIFIED IDEOGRAPH - 0xB5E7: 0x7535, //CJK UNIFIED IDEOGRAPH - 0xB5E8: 0x4F43, //CJK UNIFIED IDEOGRAPH - 0xB5E9: 0x7538, //CJK UNIFIED IDEOGRAPH - 0xB5EA: 0x5E97, //CJK UNIFIED IDEOGRAPH - 0xB5EB: 0x60E6, //CJK UNIFIED IDEOGRAPH - 0xB5EC: 0x5960, //CJK UNIFIED IDEOGRAPH - 0xB5ED: 0x6DC0, //CJK UNIFIED IDEOGRAPH - 0xB5EE: 0x6BBF, //CJK UNIFIED IDEOGRAPH - 0xB5EF: 0x7889, //CJK UNIFIED IDEOGRAPH - 0xB5F0: 0x53FC, //CJK UNIFIED IDEOGRAPH - 0xB5F1: 0x96D5, //CJK UNIFIED IDEOGRAPH - 0xB5F2: 0x51CB, //CJK UNIFIED IDEOGRAPH - 0xB5F3: 0x5201, //CJK UNIFIED IDEOGRAPH - 0xB5F4: 0x6389, //CJK UNIFIED IDEOGRAPH - 0xB5F5: 0x540A, //CJK UNIFIED IDEOGRAPH - 0xB5F6: 0x9493, //CJK UNIFIED IDEOGRAPH - 0xB5F7: 0x8C03, //CJK UNIFIED IDEOGRAPH - 0xB5F8: 0x8DCC, //CJK UNIFIED IDEOGRAPH - 0xB5F9: 0x7239, //CJK UNIFIED IDEOGRAPH - 0xB5FA: 0x789F, //CJK UNIFIED IDEOGRAPH - 0xB5FB: 0x8776, //CJK UNIFIED IDEOGRAPH - 0xB5FC: 0x8FED, //CJK UNIFIED IDEOGRAPH - 0xB5FD: 0x8C0D, //CJK UNIFIED IDEOGRAPH - 0xB5FE: 0x53E0, //CJK UNIFIED IDEOGRAPH - 0xB640: 0x7993, //CJK UNIFIED IDEOGRAPH - 0xB641: 0x7994, //CJK UNIFIED IDEOGRAPH - 0xB642: 0x7995, //CJK UNIFIED IDEOGRAPH - 0xB643: 0x7996, //CJK UNIFIED IDEOGRAPH - 0xB644: 0x7997, //CJK UNIFIED IDEOGRAPH - 0xB645: 0x7998, //CJK UNIFIED IDEOGRAPH - 0xB646: 0x7999, //CJK UNIFIED IDEOGRAPH - 0xB647: 0x799B, //CJK UNIFIED IDEOGRAPH - 0xB648: 0x799C, //CJK UNIFIED IDEOGRAPH - 0xB649: 0x799D, //CJK UNIFIED IDEOGRAPH - 0xB64A: 0x799E, //CJK UNIFIED IDEOGRAPH - 0xB64B: 0x799F, //CJK UNIFIED IDEOGRAPH - 0xB64C: 0x79A0, //CJK UNIFIED IDEOGRAPH - 0xB64D: 0x79A1, //CJK UNIFIED IDEOGRAPH - 0xB64E: 0x79A2, //CJK UNIFIED IDEOGRAPH - 0xB64F: 0x79A3, //CJK UNIFIED IDEOGRAPH - 0xB650: 0x79A4, //CJK UNIFIED IDEOGRAPH - 0xB651: 0x79A5, //CJK UNIFIED IDEOGRAPH - 0xB652: 0x79A6, //CJK UNIFIED IDEOGRAPH - 0xB653: 0x79A8, //CJK UNIFIED IDEOGRAPH - 0xB654: 0x79A9, //CJK UNIFIED IDEOGRAPH - 0xB655: 0x79AA, //CJK UNIFIED IDEOGRAPH - 0xB656: 0x79AB, //CJK UNIFIED IDEOGRAPH - 0xB657: 0x79AC, //CJK UNIFIED IDEOGRAPH - 0xB658: 0x79AD, //CJK UNIFIED IDEOGRAPH - 0xB659: 0x79AE, //CJK UNIFIED IDEOGRAPH - 0xB65A: 0x79AF, //CJK UNIFIED IDEOGRAPH - 0xB65B: 0x79B0, //CJK UNIFIED IDEOGRAPH - 0xB65C: 0x79B1, //CJK UNIFIED IDEOGRAPH - 0xB65D: 0x79B2, //CJK UNIFIED IDEOGRAPH - 0xB65E: 0x79B4, //CJK UNIFIED IDEOGRAPH - 0xB65F: 0x79B5, //CJK UNIFIED IDEOGRAPH - 0xB660: 0x79B6, //CJK UNIFIED IDEOGRAPH - 0xB661: 0x79B7, //CJK UNIFIED IDEOGRAPH - 0xB662: 0x79B8, //CJK UNIFIED IDEOGRAPH - 0xB663: 0x79BC, //CJK UNIFIED IDEOGRAPH - 0xB664: 0x79BF, //CJK UNIFIED IDEOGRAPH - 0xB665: 0x79C2, //CJK UNIFIED IDEOGRAPH - 0xB666: 0x79C4, //CJK UNIFIED IDEOGRAPH - 0xB667: 0x79C5, //CJK UNIFIED IDEOGRAPH - 0xB668: 0x79C7, //CJK UNIFIED IDEOGRAPH - 0xB669: 0x79C8, //CJK UNIFIED IDEOGRAPH - 0xB66A: 0x79CA, //CJK UNIFIED IDEOGRAPH - 0xB66B: 0x79CC, //CJK UNIFIED IDEOGRAPH - 0xB66C: 0x79CE, //CJK UNIFIED IDEOGRAPH - 0xB66D: 0x79CF, //CJK UNIFIED IDEOGRAPH - 0xB66E: 0x79D0, //CJK UNIFIED IDEOGRAPH - 0xB66F: 0x79D3, //CJK UNIFIED IDEOGRAPH - 0xB670: 0x79D4, //CJK UNIFIED IDEOGRAPH - 0xB671: 0x79D6, //CJK UNIFIED IDEOGRAPH - 0xB672: 0x79D7, //CJK UNIFIED IDEOGRAPH - 0xB673: 0x79D9, //CJK UNIFIED IDEOGRAPH - 0xB674: 0x79DA, //CJK UNIFIED IDEOGRAPH - 0xB675: 0x79DB, //CJK UNIFIED IDEOGRAPH - 0xB676: 0x79DC, //CJK UNIFIED IDEOGRAPH - 0xB677: 0x79DD, //CJK UNIFIED IDEOGRAPH - 0xB678: 0x79DE, //CJK UNIFIED IDEOGRAPH - 0xB679: 0x79E0, //CJK UNIFIED IDEOGRAPH - 0xB67A: 0x79E1, //CJK UNIFIED IDEOGRAPH - 0xB67B: 0x79E2, //CJK UNIFIED IDEOGRAPH - 0xB67C: 0x79E5, //CJK UNIFIED IDEOGRAPH - 0xB67D: 0x79E8, //CJK UNIFIED IDEOGRAPH - 0xB67E: 0x79EA, //CJK UNIFIED IDEOGRAPH - 0xB680: 0x79EC, //CJK UNIFIED IDEOGRAPH - 0xB681: 0x79EE, //CJK UNIFIED IDEOGRAPH - 0xB682: 0x79F1, //CJK UNIFIED IDEOGRAPH - 0xB683: 0x79F2, //CJK UNIFIED IDEOGRAPH - 0xB684: 0x79F3, //CJK UNIFIED IDEOGRAPH - 0xB685: 0x79F4, //CJK UNIFIED IDEOGRAPH - 0xB686: 0x79F5, //CJK UNIFIED IDEOGRAPH - 0xB687: 0x79F6, //CJK UNIFIED IDEOGRAPH - 0xB688: 0x79F7, //CJK UNIFIED IDEOGRAPH - 0xB689: 0x79F9, //CJK UNIFIED IDEOGRAPH - 0xB68A: 0x79FA, //CJK UNIFIED IDEOGRAPH - 0xB68B: 0x79FC, //CJK UNIFIED IDEOGRAPH - 0xB68C: 0x79FE, //CJK UNIFIED IDEOGRAPH - 0xB68D: 0x79FF, //CJK UNIFIED IDEOGRAPH - 0xB68E: 0x7A01, //CJK UNIFIED IDEOGRAPH - 0xB68F: 0x7A04, //CJK UNIFIED IDEOGRAPH - 0xB690: 0x7A05, //CJK UNIFIED IDEOGRAPH - 0xB691: 0x7A07, //CJK UNIFIED IDEOGRAPH - 0xB692: 0x7A08, //CJK UNIFIED IDEOGRAPH - 0xB693: 0x7A09, //CJK UNIFIED IDEOGRAPH - 0xB694: 0x7A0A, //CJK UNIFIED IDEOGRAPH - 0xB695: 0x7A0C, //CJK UNIFIED IDEOGRAPH - 0xB696: 0x7A0F, //CJK UNIFIED IDEOGRAPH - 0xB697: 0x7A10, //CJK UNIFIED IDEOGRAPH - 0xB698: 0x7A11, //CJK UNIFIED IDEOGRAPH - 0xB699: 0x7A12, //CJK UNIFIED IDEOGRAPH - 0xB69A: 0x7A13, //CJK UNIFIED IDEOGRAPH - 0xB69B: 0x7A15, //CJK UNIFIED IDEOGRAPH - 0xB69C: 0x7A16, //CJK UNIFIED IDEOGRAPH - 0xB69D: 0x7A18, //CJK UNIFIED IDEOGRAPH - 0xB69E: 0x7A19, //CJK UNIFIED IDEOGRAPH - 0xB69F: 0x7A1B, //CJK UNIFIED IDEOGRAPH - 0xB6A0: 0x7A1C, //CJK UNIFIED IDEOGRAPH - 0xB6A1: 0x4E01, //CJK UNIFIED IDEOGRAPH - 0xB6A2: 0x76EF, //CJK UNIFIED IDEOGRAPH - 0xB6A3: 0x53EE, //CJK UNIFIED IDEOGRAPH - 0xB6A4: 0x9489, //CJK UNIFIED IDEOGRAPH - 0xB6A5: 0x9876, //CJK UNIFIED IDEOGRAPH - 0xB6A6: 0x9F0E, //CJK UNIFIED IDEOGRAPH - 0xB6A7: 0x952D, //CJK UNIFIED IDEOGRAPH - 0xB6A8: 0x5B9A, //CJK UNIFIED IDEOGRAPH - 0xB6A9: 0x8BA2, //CJK UNIFIED IDEOGRAPH - 0xB6AA: 0x4E22, //CJK UNIFIED IDEOGRAPH - 0xB6AB: 0x4E1C, //CJK UNIFIED IDEOGRAPH - 0xB6AC: 0x51AC, //CJK UNIFIED IDEOGRAPH - 0xB6AD: 0x8463, //CJK UNIFIED IDEOGRAPH - 0xB6AE: 0x61C2, //CJK UNIFIED IDEOGRAPH - 0xB6AF: 0x52A8, //CJK UNIFIED IDEOGRAPH - 0xB6B0: 0x680B, //CJK UNIFIED IDEOGRAPH - 0xB6B1: 0x4F97, //CJK UNIFIED IDEOGRAPH - 0xB6B2: 0x606B, //CJK UNIFIED IDEOGRAPH - 0xB6B3: 0x51BB, //CJK UNIFIED IDEOGRAPH - 0xB6B4: 0x6D1E, //CJK UNIFIED IDEOGRAPH - 0xB6B5: 0x515C, //CJK UNIFIED IDEOGRAPH - 0xB6B6: 0x6296, //CJK UNIFIED IDEOGRAPH - 0xB6B7: 0x6597, //CJK UNIFIED IDEOGRAPH - 0xB6B8: 0x9661, //CJK UNIFIED IDEOGRAPH - 0xB6B9: 0x8C46, //CJK UNIFIED IDEOGRAPH - 0xB6BA: 0x9017, //CJK UNIFIED IDEOGRAPH - 0xB6BB: 0x75D8, //CJK UNIFIED IDEOGRAPH - 0xB6BC: 0x90FD, //CJK UNIFIED IDEOGRAPH - 0xB6BD: 0x7763, //CJK UNIFIED IDEOGRAPH - 0xB6BE: 0x6BD2, //CJK UNIFIED IDEOGRAPH - 0xB6BF: 0x728A, //CJK UNIFIED IDEOGRAPH - 0xB6C0: 0x72EC, //CJK UNIFIED IDEOGRAPH - 0xB6C1: 0x8BFB, //CJK UNIFIED IDEOGRAPH - 0xB6C2: 0x5835, //CJK UNIFIED IDEOGRAPH - 0xB6C3: 0x7779, //CJK UNIFIED IDEOGRAPH - 0xB6C4: 0x8D4C, //CJK UNIFIED IDEOGRAPH - 0xB6C5: 0x675C, //CJK UNIFIED IDEOGRAPH - 0xB6C6: 0x9540, //CJK UNIFIED IDEOGRAPH - 0xB6C7: 0x809A, //CJK UNIFIED IDEOGRAPH - 0xB6C8: 0x5EA6, //CJK UNIFIED IDEOGRAPH - 0xB6C9: 0x6E21, //CJK UNIFIED IDEOGRAPH - 0xB6CA: 0x5992, //CJK UNIFIED IDEOGRAPH - 0xB6CB: 0x7AEF, //CJK UNIFIED IDEOGRAPH - 0xB6CC: 0x77ED, //CJK UNIFIED IDEOGRAPH - 0xB6CD: 0x953B, //CJK UNIFIED IDEOGRAPH - 0xB6CE: 0x6BB5, //CJK UNIFIED IDEOGRAPH - 0xB6CF: 0x65AD, //CJK UNIFIED IDEOGRAPH - 0xB6D0: 0x7F0E, //CJK UNIFIED IDEOGRAPH - 0xB6D1: 0x5806, //CJK UNIFIED IDEOGRAPH - 0xB6D2: 0x5151, //CJK UNIFIED IDEOGRAPH - 0xB6D3: 0x961F, //CJK UNIFIED IDEOGRAPH - 0xB6D4: 0x5BF9, //CJK UNIFIED IDEOGRAPH - 0xB6D5: 0x58A9, //CJK UNIFIED IDEOGRAPH - 0xB6D6: 0x5428, //CJK UNIFIED IDEOGRAPH - 0xB6D7: 0x8E72, //CJK UNIFIED IDEOGRAPH - 0xB6D8: 0x6566, //CJK UNIFIED IDEOGRAPH - 0xB6D9: 0x987F, //CJK UNIFIED IDEOGRAPH - 0xB6DA: 0x56E4, //CJK UNIFIED IDEOGRAPH - 0xB6DB: 0x949D, //CJK UNIFIED IDEOGRAPH - 0xB6DC: 0x76FE, //CJK UNIFIED IDEOGRAPH - 0xB6DD: 0x9041, //CJK UNIFIED IDEOGRAPH - 0xB6DE: 0x6387, //CJK UNIFIED IDEOGRAPH - 0xB6DF: 0x54C6, //CJK UNIFIED IDEOGRAPH - 0xB6E0: 0x591A, //CJK UNIFIED IDEOGRAPH - 0xB6E1: 0x593A, //CJK UNIFIED IDEOGRAPH - 0xB6E2: 0x579B, //CJK UNIFIED IDEOGRAPH - 0xB6E3: 0x8EB2, //CJK UNIFIED IDEOGRAPH - 0xB6E4: 0x6735, //CJK UNIFIED IDEOGRAPH - 0xB6E5: 0x8DFA, //CJK UNIFIED IDEOGRAPH - 0xB6E6: 0x8235, //CJK UNIFIED IDEOGRAPH - 0xB6E7: 0x5241, //CJK UNIFIED IDEOGRAPH - 0xB6E8: 0x60F0, //CJK UNIFIED IDEOGRAPH - 0xB6E9: 0x5815, //CJK UNIFIED IDEOGRAPH - 0xB6EA: 0x86FE, //CJK UNIFIED IDEOGRAPH - 0xB6EB: 0x5CE8, //CJK UNIFIED IDEOGRAPH - 0xB6EC: 0x9E45, //CJK UNIFIED IDEOGRAPH - 0xB6ED: 0x4FC4, //CJK UNIFIED IDEOGRAPH - 0xB6EE: 0x989D, //CJK UNIFIED IDEOGRAPH - 0xB6EF: 0x8BB9, //CJK UNIFIED IDEOGRAPH - 0xB6F0: 0x5A25, //CJK UNIFIED IDEOGRAPH - 0xB6F1: 0x6076, //CJK UNIFIED IDEOGRAPH - 0xB6F2: 0x5384, //CJK UNIFIED IDEOGRAPH - 0xB6F3: 0x627C, //CJK UNIFIED IDEOGRAPH - 0xB6F4: 0x904F, //CJK UNIFIED IDEOGRAPH - 0xB6F5: 0x9102, //CJK UNIFIED IDEOGRAPH - 0xB6F6: 0x997F, //CJK UNIFIED IDEOGRAPH - 0xB6F7: 0x6069, //CJK UNIFIED IDEOGRAPH - 0xB6F8: 0x800C, //CJK UNIFIED IDEOGRAPH - 0xB6F9: 0x513F, //CJK UNIFIED IDEOGRAPH - 0xB6FA: 0x8033, //CJK UNIFIED IDEOGRAPH - 0xB6FB: 0x5C14, //CJK UNIFIED IDEOGRAPH - 0xB6FC: 0x9975, //CJK UNIFIED IDEOGRAPH - 0xB6FD: 0x6D31, //CJK UNIFIED IDEOGRAPH - 0xB6FE: 0x4E8C, //CJK UNIFIED IDEOGRAPH - 0xB740: 0x7A1D, //CJK UNIFIED IDEOGRAPH - 0xB741: 0x7A1F, //CJK UNIFIED IDEOGRAPH - 0xB742: 0x7A21, //CJK UNIFIED IDEOGRAPH - 0xB743: 0x7A22, //CJK UNIFIED IDEOGRAPH - 0xB744: 0x7A24, //CJK UNIFIED IDEOGRAPH - 0xB745: 0x7A25, //CJK UNIFIED IDEOGRAPH - 0xB746: 0x7A26, //CJK UNIFIED IDEOGRAPH - 0xB747: 0x7A27, //CJK UNIFIED IDEOGRAPH - 0xB748: 0x7A28, //CJK UNIFIED IDEOGRAPH - 0xB749: 0x7A29, //CJK UNIFIED IDEOGRAPH - 0xB74A: 0x7A2A, //CJK UNIFIED IDEOGRAPH - 0xB74B: 0x7A2B, //CJK UNIFIED IDEOGRAPH - 0xB74C: 0x7A2C, //CJK UNIFIED IDEOGRAPH - 0xB74D: 0x7A2D, //CJK UNIFIED IDEOGRAPH - 0xB74E: 0x7A2E, //CJK UNIFIED IDEOGRAPH - 0xB74F: 0x7A2F, //CJK UNIFIED IDEOGRAPH - 0xB750: 0x7A30, //CJK UNIFIED IDEOGRAPH - 0xB751: 0x7A31, //CJK UNIFIED IDEOGRAPH - 0xB752: 0x7A32, //CJK UNIFIED IDEOGRAPH - 0xB753: 0x7A34, //CJK UNIFIED IDEOGRAPH - 0xB754: 0x7A35, //CJK UNIFIED IDEOGRAPH - 0xB755: 0x7A36, //CJK UNIFIED IDEOGRAPH - 0xB756: 0x7A38, //CJK UNIFIED IDEOGRAPH - 0xB757: 0x7A3A, //CJK UNIFIED IDEOGRAPH - 0xB758: 0x7A3E, //CJK UNIFIED IDEOGRAPH - 0xB759: 0x7A40, //CJK UNIFIED IDEOGRAPH - 0xB75A: 0x7A41, //CJK UNIFIED IDEOGRAPH - 0xB75B: 0x7A42, //CJK UNIFIED IDEOGRAPH - 0xB75C: 0x7A43, //CJK UNIFIED IDEOGRAPH - 0xB75D: 0x7A44, //CJK UNIFIED IDEOGRAPH - 0xB75E: 0x7A45, //CJK UNIFIED IDEOGRAPH - 0xB75F: 0x7A47, //CJK UNIFIED IDEOGRAPH - 0xB760: 0x7A48, //CJK UNIFIED IDEOGRAPH - 0xB761: 0x7A49, //CJK UNIFIED IDEOGRAPH - 0xB762: 0x7A4A, //CJK UNIFIED IDEOGRAPH - 0xB763: 0x7A4B, //CJK UNIFIED IDEOGRAPH - 0xB764: 0x7A4C, //CJK UNIFIED IDEOGRAPH - 0xB765: 0x7A4D, //CJK UNIFIED IDEOGRAPH - 0xB766: 0x7A4E, //CJK UNIFIED IDEOGRAPH - 0xB767: 0x7A4F, //CJK UNIFIED IDEOGRAPH - 0xB768: 0x7A50, //CJK UNIFIED IDEOGRAPH - 0xB769: 0x7A52, //CJK UNIFIED IDEOGRAPH - 0xB76A: 0x7A53, //CJK UNIFIED IDEOGRAPH - 0xB76B: 0x7A54, //CJK UNIFIED IDEOGRAPH - 0xB76C: 0x7A55, //CJK UNIFIED IDEOGRAPH - 0xB76D: 0x7A56, //CJK UNIFIED IDEOGRAPH - 0xB76E: 0x7A58, //CJK UNIFIED IDEOGRAPH - 0xB76F: 0x7A59, //CJK UNIFIED IDEOGRAPH - 0xB770: 0x7A5A, //CJK UNIFIED IDEOGRAPH - 0xB771: 0x7A5B, //CJK UNIFIED IDEOGRAPH - 0xB772: 0x7A5C, //CJK UNIFIED IDEOGRAPH - 0xB773: 0x7A5D, //CJK UNIFIED IDEOGRAPH - 0xB774: 0x7A5E, //CJK UNIFIED IDEOGRAPH - 0xB775: 0x7A5F, //CJK UNIFIED IDEOGRAPH - 0xB776: 0x7A60, //CJK UNIFIED IDEOGRAPH - 0xB777: 0x7A61, //CJK UNIFIED IDEOGRAPH - 0xB778: 0x7A62, //CJK UNIFIED IDEOGRAPH - 0xB779: 0x7A63, //CJK UNIFIED IDEOGRAPH - 0xB77A: 0x7A64, //CJK UNIFIED IDEOGRAPH - 0xB77B: 0x7A65, //CJK UNIFIED IDEOGRAPH - 0xB77C: 0x7A66, //CJK UNIFIED IDEOGRAPH - 0xB77D: 0x7A67, //CJK UNIFIED IDEOGRAPH - 0xB77E: 0x7A68, //CJK UNIFIED IDEOGRAPH - 0xB780: 0x7A69, //CJK UNIFIED IDEOGRAPH - 0xB781: 0x7A6A, //CJK UNIFIED IDEOGRAPH - 0xB782: 0x7A6B, //CJK UNIFIED IDEOGRAPH - 0xB783: 0x7A6C, //CJK UNIFIED IDEOGRAPH - 0xB784: 0x7A6D, //CJK UNIFIED IDEOGRAPH - 0xB785: 0x7A6E, //CJK UNIFIED IDEOGRAPH - 0xB786: 0x7A6F, //CJK UNIFIED IDEOGRAPH - 0xB787: 0x7A71, //CJK UNIFIED IDEOGRAPH - 0xB788: 0x7A72, //CJK UNIFIED IDEOGRAPH - 0xB789: 0x7A73, //CJK UNIFIED IDEOGRAPH - 0xB78A: 0x7A75, //CJK UNIFIED IDEOGRAPH - 0xB78B: 0x7A7B, //CJK UNIFIED IDEOGRAPH - 0xB78C: 0x7A7C, //CJK UNIFIED IDEOGRAPH - 0xB78D: 0x7A7D, //CJK UNIFIED IDEOGRAPH - 0xB78E: 0x7A7E, //CJK UNIFIED IDEOGRAPH - 0xB78F: 0x7A82, //CJK UNIFIED IDEOGRAPH - 0xB790: 0x7A85, //CJK UNIFIED IDEOGRAPH - 0xB791: 0x7A87, //CJK UNIFIED IDEOGRAPH - 0xB792: 0x7A89, //CJK UNIFIED IDEOGRAPH - 0xB793: 0x7A8A, //CJK UNIFIED IDEOGRAPH - 0xB794: 0x7A8B, //CJK UNIFIED IDEOGRAPH - 0xB795: 0x7A8C, //CJK UNIFIED IDEOGRAPH - 0xB796: 0x7A8E, //CJK UNIFIED IDEOGRAPH - 0xB797: 0x7A8F, //CJK UNIFIED IDEOGRAPH - 0xB798: 0x7A90, //CJK UNIFIED IDEOGRAPH - 0xB799: 0x7A93, //CJK UNIFIED IDEOGRAPH - 0xB79A: 0x7A94, //CJK UNIFIED IDEOGRAPH - 0xB79B: 0x7A99, //CJK UNIFIED IDEOGRAPH - 0xB79C: 0x7A9A, //CJK UNIFIED IDEOGRAPH - 0xB79D: 0x7A9B, //CJK UNIFIED IDEOGRAPH - 0xB79E: 0x7A9E, //CJK UNIFIED IDEOGRAPH - 0xB79F: 0x7AA1, //CJK UNIFIED IDEOGRAPH - 0xB7A0: 0x7AA2, //CJK UNIFIED IDEOGRAPH - 0xB7A1: 0x8D30, //CJK UNIFIED IDEOGRAPH - 0xB7A2: 0x53D1, //CJK UNIFIED IDEOGRAPH - 0xB7A3: 0x7F5A, //CJK UNIFIED IDEOGRAPH - 0xB7A4: 0x7B4F, //CJK UNIFIED IDEOGRAPH - 0xB7A5: 0x4F10, //CJK UNIFIED IDEOGRAPH - 0xB7A6: 0x4E4F, //CJK UNIFIED IDEOGRAPH - 0xB7A7: 0x9600, //CJK UNIFIED IDEOGRAPH - 0xB7A8: 0x6CD5, //CJK UNIFIED IDEOGRAPH - 0xB7A9: 0x73D0, //CJK UNIFIED IDEOGRAPH - 0xB7AA: 0x85E9, //CJK UNIFIED IDEOGRAPH - 0xB7AB: 0x5E06, //CJK UNIFIED IDEOGRAPH - 0xB7AC: 0x756A, //CJK UNIFIED IDEOGRAPH - 0xB7AD: 0x7FFB, //CJK UNIFIED IDEOGRAPH - 0xB7AE: 0x6A0A, //CJK UNIFIED IDEOGRAPH - 0xB7AF: 0x77FE, //CJK UNIFIED IDEOGRAPH - 0xB7B0: 0x9492, //CJK UNIFIED IDEOGRAPH - 0xB7B1: 0x7E41, //CJK UNIFIED IDEOGRAPH - 0xB7B2: 0x51E1, //CJK UNIFIED IDEOGRAPH - 0xB7B3: 0x70E6, //CJK UNIFIED IDEOGRAPH - 0xB7B4: 0x53CD, //CJK UNIFIED IDEOGRAPH - 0xB7B5: 0x8FD4, //CJK UNIFIED IDEOGRAPH - 0xB7B6: 0x8303, //CJK UNIFIED IDEOGRAPH - 0xB7B7: 0x8D29, //CJK UNIFIED IDEOGRAPH - 0xB7B8: 0x72AF, //CJK UNIFIED IDEOGRAPH - 0xB7B9: 0x996D, //CJK UNIFIED IDEOGRAPH - 0xB7BA: 0x6CDB, //CJK UNIFIED IDEOGRAPH - 0xB7BB: 0x574A, //CJK UNIFIED IDEOGRAPH - 0xB7BC: 0x82B3, //CJK UNIFIED IDEOGRAPH - 0xB7BD: 0x65B9, //CJK UNIFIED IDEOGRAPH - 0xB7BE: 0x80AA, //CJK UNIFIED IDEOGRAPH - 0xB7BF: 0x623F, //CJK UNIFIED IDEOGRAPH - 0xB7C0: 0x9632, //CJK UNIFIED IDEOGRAPH - 0xB7C1: 0x59A8, //CJK UNIFIED IDEOGRAPH - 0xB7C2: 0x4EFF, //CJK UNIFIED IDEOGRAPH - 0xB7C3: 0x8BBF, //CJK UNIFIED IDEOGRAPH - 0xB7C4: 0x7EBA, //CJK UNIFIED IDEOGRAPH - 0xB7C5: 0x653E, //CJK UNIFIED IDEOGRAPH - 0xB7C6: 0x83F2, //CJK UNIFIED IDEOGRAPH - 0xB7C7: 0x975E, //CJK UNIFIED IDEOGRAPH - 0xB7C8: 0x5561, //CJK UNIFIED IDEOGRAPH - 0xB7C9: 0x98DE, //CJK UNIFIED IDEOGRAPH - 0xB7CA: 0x80A5, //CJK UNIFIED IDEOGRAPH - 0xB7CB: 0x532A, //CJK UNIFIED IDEOGRAPH - 0xB7CC: 0x8BFD, //CJK UNIFIED IDEOGRAPH - 0xB7CD: 0x5420, //CJK UNIFIED IDEOGRAPH - 0xB7CE: 0x80BA, //CJK UNIFIED IDEOGRAPH - 0xB7CF: 0x5E9F, //CJK UNIFIED IDEOGRAPH - 0xB7D0: 0x6CB8, //CJK UNIFIED IDEOGRAPH - 0xB7D1: 0x8D39, //CJK UNIFIED IDEOGRAPH - 0xB7D2: 0x82AC, //CJK UNIFIED IDEOGRAPH - 0xB7D3: 0x915A, //CJK UNIFIED IDEOGRAPH - 0xB7D4: 0x5429, //CJK UNIFIED IDEOGRAPH - 0xB7D5: 0x6C1B, //CJK UNIFIED IDEOGRAPH - 0xB7D6: 0x5206, //CJK UNIFIED IDEOGRAPH - 0xB7D7: 0x7EB7, //CJK UNIFIED IDEOGRAPH - 0xB7D8: 0x575F, //CJK UNIFIED IDEOGRAPH - 0xB7D9: 0x711A, //CJK UNIFIED IDEOGRAPH - 0xB7DA: 0x6C7E, //CJK UNIFIED IDEOGRAPH - 0xB7DB: 0x7C89, //CJK UNIFIED IDEOGRAPH - 0xB7DC: 0x594B, //CJK UNIFIED IDEOGRAPH - 0xB7DD: 0x4EFD, //CJK UNIFIED IDEOGRAPH - 0xB7DE: 0x5FFF, //CJK UNIFIED IDEOGRAPH - 0xB7DF: 0x6124, //CJK UNIFIED IDEOGRAPH - 0xB7E0: 0x7CAA, //CJK UNIFIED IDEOGRAPH - 0xB7E1: 0x4E30, //CJK UNIFIED IDEOGRAPH - 0xB7E2: 0x5C01, //CJK UNIFIED IDEOGRAPH - 0xB7E3: 0x67AB, //CJK UNIFIED IDEOGRAPH - 0xB7E4: 0x8702, //CJK UNIFIED IDEOGRAPH - 0xB7E5: 0x5CF0, //CJK UNIFIED IDEOGRAPH - 0xB7E6: 0x950B, //CJK UNIFIED IDEOGRAPH - 0xB7E7: 0x98CE, //CJK UNIFIED IDEOGRAPH - 0xB7E8: 0x75AF, //CJK UNIFIED IDEOGRAPH - 0xB7E9: 0x70FD, //CJK UNIFIED IDEOGRAPH - 0xB7EA: 0x9022, //CJK UNIFIED IDEOGRAPH - 0xB7EB: 0x51AF, //CJK UNIFIED IDEOGRAPH - 0xB7EC: 0x7F1D, //CJK UNIFIED IDEOGRAPH - 0xB7ED: 0x8BBD, //CJK UNIFIED IDEOGRAPH - 0xB7EE: 0x5949, //CJK UNIFIED IDEOGRAPH - 0xB7EF: 0x51E4, //CJK UNIFIED IDEOGRAPH - 0xB7F0: 0x4F5B, //CJK UNIFIED IDEOGRAPH - 0xB7F1: 0x5426, //CJK UNIFIED IDEOGRAPH - 0xB7F2: 0x592B, //CJK UNIFIED IDEOGRAPH - 0xB7F3: 0x6577, //CJK UNIFIED IDEOGRAPH - 0xB7F4: 0x80A4, //CJK UNIFIED IDEOGRAPH - 0xB7F5: 0x5B75, //CJK UNIFIED IDEOGRAPH - 0xB7F6: 0x6276, //CJK UNIFIED IDEOGRAPH - 0xB7F7: 0x62C2, //CJK UNIFIED IDEOGRAPH - 0xB7F8: 0x8F90, //CJK UNIFIED IDEOGRAPH - 0xB7F9: 0x5E45, //CJK UNIFIED IDEOGRAPH - 0xB7FA: 0x6C1F, //CJK UNIFIED IDEOGRAPH - 0xB7FB: 0x7B26, //CJK UNIFIED IDEOGRAPH - 0xB7FC: 0x4F0F, //CJK UNIFIED IDEOGRAPH - 0xB7FD: 0x4FD8, //CJK UNIFIED IDEOGRAPH - 0xB7FE: 0x670D, //CJK UNIFIED IDEOGRAPH - 0xB840: 0x7AA3, //CJK UNIFIED IDEOGRAPH - 0xB841: 0x7AA4, //CJK UNIFIED IDEOGRAPH - 0xB842: 0x7AA7, //CJK UNIFIED IDEOGRAPH - 0xB843: 0x7AA9, //CJK UNIFIED IDEOGRAPH - 0xB844: 0x7AAA, //CJK UNIFIED IDEOGRAPH - 0xB845: 0x7AAB, //CJK UNIFIED IDEOGRAPH - 0xB846: 0x7AAE, //CJK UNIFIED IDEOGRAPH - 0xB847: 0x7AAF, //CJK UNIFIED IDEOGRAPH - 0xB848: 0x7AB0, //CJK UNIFIED IDEOGRAPH - 0xB849: 0x7AB1, //CJK UNIFIED IDEOGRAPH - 0xB84A: 0x7AB2, //CJK UNIFIED IDEOGRAPH - 0xB84B: 0x7AB4, //CJK UNIFIED IDEOGRAPH - 0xB84C: 0x7AB5, //CJK UNIFIED IDEOGRAPH - 0xB84D: 0x7AB6, //CJK UNIFIED IDEOGRAPH - 0xB84E: 0x7AB7, //CJK UNIFIED IDEOGRAPH - 0xB84F: 0x7AB8, //CJK UNIFIED IDEOGRAPH - 0xB850: 0x7AB9, //CJK UNIFIED IDEOGRAPH - 0xB851: 0x7ABA, //CJK UNIFIED IDEOGRAPH - 0xB852: 0x7ABB, //CJK UNIFIED IDEOGRAPH - 0xB853: 0x7ABC, //CJK UNIFIED IDEOGRAPH - 0xB854: 0x7ABD, //CJK UNIFIED IDEOGRAPH - 0xB855: 0x7ABE, //CJK UNIFIED IDEOGRAPH - 0xB856: 0x7AC0, //CJK UNIFIED IDEOGRAPH - 0xB857: 0x7AC1, //CJK UNIFIED IDEOGRAPH - 0xB858: 0x7AC2, //CJK UNIFIED IDEOGRAPH - 0xB859: 0x7AC3, //CJK UNIFIED IDEOGRAPH - 0xB85A: 0x7AC4, //CJK UNIFIED IDEOGRAPH - 0xB85B: 0x7AC5, //CJK UNIFIED IDEOGRAPH - 0xB85C: 0x7AC6, //CJK UNIFIED IDEOGRAPH - 0xB85D: 0x7AC7, //CJK UNIFIED IDEOGRAPH - 0xB85E: 0x7AC8, //CJK UNIFIED IDEOGRAPH - 0xB85F: 0x7AC9, //CJK UNIFIED IDEOGRAPH - 0xB860: 0x7ACA, //CJK UNIFIED IDEOGRAPH - 0xB861: 0x7ACC, //CJK UNIFIED IDEOGRAPH - 0xB862: 0x7ACD, //CJK UNIFIED IDEOGRAPH - 0xB863: 0x7ACE, //CJK UNIFIED IDEOGRAPH - 0xB864: 0x7ACF, //CJK UNIFIED IDEOGRAPH - 0xB865: 0x7AD0, //CJK UNIFIED IDEOGRAPH - 0xB866: 0x7AD1, //CJK UNIFIED IDEOGRAPH - 0xB867: 0x7AD2, //CJK UNIFIED IDEOGRAPH - 0xB868: 0x7AD3, //CJK UNIFIED IDEOGRAPH - 0xB869: 0x7AD4, //CJK UNIFIED IDEOGRAPH - 0xB86A: 0x7AD5, //CJK UNIFIED IDEOGRAPH - 0xB86B: 0x7AD7, //CJK UNIFIED IDEOGRAPH - 0xB86C: 0x7AD8, //CJK UNIFIED IDEOGRAPH - 0xB86D: 0x7ADA, //CJK UNIFIED IDEOGRAPH - 0xB86E: 0x7ADB, //CJK UNIFIED IDEOGRAPH - 0xB86F: 0x7ADC, //CJK UNIFIED IDEOGRAPH - 0xB870: 0x7ADD, //CJK UNIFIED IDEOGRAPH - 0xB871: 0x7AE1, //CJK UNIFIED IDEOGRAPH - 0xB872: 0x7AE2, //CJK UNIFIED IDEOGRAPH - 0xB873: 0x7AE4, //CJK UNIFIED IDEOGRAPH - 0xB874: 0x7AE7, //CJK UNIFIED IDEOGRAPH - 0xB875: 0x7AE8, //CJK UNIFIED IDEOGRAPH - 0xB876: 0x7AE9, //CJK UNIFIED IDEOGRAPH - 0xB877: 0x7AEA, //CJK UNIFIED IDEOGRAPH - 0xB878: 0x7AEB, //CJK UNIFIED IDEOGRAPH - 0xB879: 0x7AEC, //CJK UNIFIED IDEOGRAPH - 0xB87A: 0x7AEE, //CJK UNIFIED IDEOGRAPH - 0xB87B: 0x7AF0, //CJK UNIFIED IDEOGRAPH - 0xB87C: 0x7AF1, //CJK UNIFIED IDEOGRAPH - 0xB87D: 0x7AF2, //CJK UNIFIED IDEOGRAPH - 0xB87E: 0x7AF3, //CJK UNIFIED IDEOGRAPH - 0xB880: 0x7AF4, //CJK UNIFIED IDEOGRAPH - 0xB881: 0x7AF5, //CJK UNIFIED IDEOGRAPH - 0xB882: 0x7AF6, //CJK UNIFIED IDEOGRAPH - 0xB883: 0x7AF7, //CJK UNIFIED IDEOGRAPH - 0xB884: 0x7AF8, //CJK UNIFIED IDEOGRAPH - 0xB885: 0x7AFB, //CJK UNIFIED IDEOGRAPH - 0xB886: 0x7AFC, //CJK UNIFIED IDEOGRAPH - 0xB887: 0x7AFE, //CJK UNIFIED IDEOGRAPH - 0xB888: 0x7B00, //CJK UNIFIED IDEOGRAPH - 0xB889: 0x7B01, //CJK UNIFIED IDEOGRAPH - 0xB88A: 0x7B02, //CJK UNIFIED IDEOGRAPH - 0xB88B: 0x7B05, //CJK UNIFIED IDEOGRAPH - 0xB88C: 0x7B07, //CJK UNIFIED IDEOGRAPH - 0xB88D: 0x7B09, //CJK UNIFIED IDEOGRAPH - 0xB88E: 0x7B0C, //CJK UNIFIED IDEOGRAPH - 0xB88F: 0x7B0D, //CJK UNIFIED IDEOGRAPH - 0xB890: 0x7B0E, //CJK UNIFIED IDEOGRAPH - 0xB891: 0x7B10, //CJK UNIFIED IDEOGRAPH - 0xB892: 0x7B12, //CJK UNIFIED IDEOGRAPH - 0xB893: 0x7B13, //CJK UNIFIED IDEOGRAPH - 0xB894: 0x7B16, //CJK UNIFIED IDEOGRAPH - 0xB895: 0x7B17, //CJK UNIFIED IDEOGRAPH - 0xB896: 0x7B18, //CJK UNIFIED IDEOGRAPH - 0xB897: 0x7B1A, //CJK UNIFIED IDEOGRAPH - 0xB898: 0x7B1C, //CJK UNIFIED IDEOGRAPH - 0xB899: 0x7B1D, //CJK UNIFIED IDEOGRAPH - 0xB89A: 0x7B1F, //CJK UNIFIED IDEOGRAPH - 0xB89B: 0x7B21, //CJK UNIFIED IDEOGRAPH - 0xB89C: 0x7B22, //CJK UNIFIED IDEOGRAPH - 0xB89D: 0x7B23, //CJK UNIFIED IDEOGRAPH - 0xB89E: 0x7B27, //CJK UNIFIED IDEOGRAPH - 0xB89F: 0x7B29, //CJK UNIFIED IDEOGRAPH - 0xB8A0: 0x7B2D, //CJK UNIFIED IDEOGRAPH - 0xB8A1: 0x6D6E, //CJK UNIFIED IDEOGRAPH - 0xB8A2: 0x6DAA, //CJK UNIFIED IDEOGRAPH - 0xB8A3: 0x798F, //CJK UNIFIED IDEOGRAPH - 0xB8A4: 0x88B1, //CJK UNIFIED IDEOGRAPH - 0xB8A5: 0x5F17, //CJK UNIFIED IDEOGRAPH - 0xB8A6: 0x752B, //CJK UNIFIED IDEOGRAPH - 0xB8A7: 0x629A, //CJK UNIFIED IDEOGRAPH - 0xB8A8: 0x8F85, //CJK UNIFIED IDEOGRAPH - 0xB8A9: 0x4FEF, //CJK UNIFIED IDEOGRAPH - 0xB8AA: 0x91DC, //CJK UNIFIED IDEOGRAPH - 0xB8AB: 0x65A7, //CJK UNIFIED IDEOGRAPH - 0xB8AC: 0x812F, //CJK UNIFIED IDEOGRAPH - 0xB8AD: 0x8151, //CJK UNIFIED IDEOGRAPH - 0xB8AE: 0x5E9C, //CJK UNIFIED IDEOGRAPH - 0xB8AF: 0x8150, //CJK UNIFIED IDEOGRAPH - 0xB8B0: 0x8D74, //CJK UNIFIED IDEOGRAPH - 0xB8B1: 0x526F, //CJK UNIFIED IDEOGRAPH - 0xB8B2: 0x8986, //CJK UNIFIED IDEOGRAPH - 0xB8B3: 0x8D4B, //CJK UNIFIED IDEOGRAPH - 0xB8B4: 0x590D, //CJK UNIFIED IDEOGRAPH - 0xB8B5: 0x5085, //CJK UNIFIED IDEOGRAPH - 0xB8B6: 0x4ED8, //CJK UNIFIED IDEOGRAPH - 0xB8B7: 0x961C, //CJK UNIFIED IDEOGRAPH - 0xB8B8: 0x7236, //CJK UNIFIED IDEOGRAPH - 0xB8B9: 0x8179, //CJK UNIFIED IDEOGRAPH - 0xB8BA: 0x8D1F, //CJK UNIFIED IDEOGRAPH - 0xB8BB: 0x5BCC, //CJK UNIFIED IDEOGRAPH - 0xB8BC: 0x8BA3, //CJK UNIFIED IDEOGRAPH - 0xB8BD: 0x9644, //CJK UNIFIED IDEOGRAPH - 0xB8BE: 0x5987, //CJK UNIFIED IDEOGRAPH - 0xB8BF: 0x7F1A, //CJK UNIFIED IDEOGRAPH - 0xB8C0: 0x5490, //CJK UNIFIED IDEOGRAPH - 0xB8C1: 0x5676, //CJK UNIFIED IDEOGRAPH - 0xB8C2: 0x560E, //CJK UNIFIED IDEOGRAPH - 0xB8C3: 0x8BE5, //CJK UNIFIED IDEOGRAPH - 0xB8C4: 0x6539, //CJK UNIFIED IDEOGRAPH - 0xB8C5: 0x6982, //CJK UNIFIED IDEOGRAPH - 0xB8C6: 0x9499, //CJK UNIFIED IDEOGRAPH - 0xB8C7: 0x76D6, //CJK UNIFIED IDEOGRAPH - 0xB8C8: 0x6E89, //CJK UNIFIED IDEOGRAPH - 0xB8C9: 0x5E72, //CJK UNIFIED IDEOGRAPH - 0xB8CA: 0x7518, //CJK UNIFIED IDEOGRAPH - 0xB8CB: 0x6746, //CJK UNIFIED IDEOGRAPH - 0xB8CC: 0x67D1, //CJK UNIFIED IDEOGRAPH - 0xB8CD: 0x7AFF, //CJK UNIFIED IDEOGRAPH - 0xB8CE: 0x809D, //CJK UNIFIED IDEOGRAPH - 0xB8CF: 0x8D76, //CJK UNIFIED IDEOGRAPH - 0xB8D0: 0x611F, //CJK UNIFIED IDEOGRAPH - 0xB8D1: 0x79C6, //CJK UNIFIED IDEOGRAPH - 0xB8D2: 0x6562, //CJK UNIFIED IDEOGRAPH - 0xB8D3: 0x8D63, //CJK UNIFIED IDEOGRAPH - 0xB8D4: 0x5188, //CJK UNIFIED IDEOGRAPH - 0xB8D5: 0x521A, //CJK UNIFIED IDEOGRAPH - 0xB8D6: 0x94A2, //CJK UNIFIED IDEOGRAPH - 0xB8D7: 0x7F38, //CJK UNIFIED IDEOGRAPH - 0xB8D8: 0x809B, //CJK UNIFIED IDEOGRAPH - 0xB8D9: 0x7EB2, //CJK UNIFIED IDEOGRAPH - 0xB8DA: 0x5C97, //CJK UNIFIED IDEOGRAPH - 0xB8DB: 0x6E2F, //CJK UNIFIED IDEOGRAPH - 0xB8DC: 0x6760, //CJK UNIFIED IDEOGRAPH - 0xB8DD: 0x7BD9, //CJK UNIFIED IDEOGRAPH - 0xB8DE: 0x768B, //CJK UNIFIED IDEOGRAPH - 0xB8DF: 0x9AD8, //CJK UNIFIED IDEOGRAPH - 0xB8E0: 0x818F, //CJK UNIFIED IDEOGRAPH - 0xB8E1: 0x7F94, //CJK UNIFIED IDEOGRAPH - 0xB8E2: 0x7CD5, //CJK UNIFIED IDEOGRAPH - 0xB8E3: 0x641E, //CJK UNIFIED IDEOGRAPH - 0xB8E4: 0x9550, //CJK UNIFIED IDEOGRAPH - 0xB8E5: 0x7A3F, //CJK UNIFIED IDEOGRAPH - 0xB8E6: 0x544A, //CJK UNIFIED IDEOGRAPH - 0xB8E7: 0x54E5, //CJK UNIFIED IDEOGRAPH - 0xB8E8: 0x6B4C, //CJK UNIFIED IDEOGRAPH - 0xB8E9: 0x6401, //CJK UNIFIED IDEOGRAPH - 0xB8EA: 0x6208, //CJK UNIFIED IDEOGRAPH - 0xB8EB: 0x9E3D, //CJK UNIFIED IDEOGRAPH - 0xB8EC: 0x80F3, //CJK UNIFIED IDEOGRAPH - 0xB8ED: 0x7599, //CJK UNIFIED IDEOGRAPH - 0xB8EE: 0x5272, //CJK UNIFIED IDEOGRAPH - 0xB8EF: 0x9769, //CJK UNIFIED IDEOGRAPH - 0xB8F0: 0x845B, //CJK UNIFIED IDEOGRAPH - 0xB8F1: 0x683C, //CJK UNIFIED IDEOGRAPH - 0xB8F2: 0x86E4, //CJK UNIFIED IDEOGRAPH - 0xB8F3: 0x9601, //CJK UNIFIED IDEOGRAPH - 0xB8F4: 0x9694, //CJK UNIFIED IDEOGRAPH - 0xB8F5: 0x94EC, //CJK UNIFIED IDEOGRAPH - 0xB8F6: 0x4E2A, //CJK UNIFIED IDEOGRAPH - 0xB8F7: 0x5404, //CJK UNIFIED IDEOGRAPH - 0xB8F8: 0x7ED9, //CJK UNIFIED IDEOGRAPH - 0xB8F9: 0x6839, //CJK UNIFIED IDEOGRAPH - 0xB8FA: 0x8DDF, //CJK UNIFIED IDEOGRAPH - 0xB8FB: 0x8015, //CJK UNIFIED IDEOGRAPH - 0xB8FC: 0x66F4, //CJK UNIFIED IDEOGRAPH - 0xB8FD: 0x5E9A, //CJK UNIFIED IDEOGRAPH - 0xB8FE: 0x7FB9, //CJK UNIFIED IDEOGRAPH - 0xB940: 0x7B2F, //CJK UNIFIED IDEOGRAPH - 0xB941: 0x7B30, //CJK UNIFIED IDEOGRAPH - 0xB942: 0x7B32, //CJK UNIFIED IDEOGRAPH - 0xB943: 0x7B34, //CJK UNIFIED IDEOGRAPH - 0xB944: 0x7B35, //CJK UNIFIED IDEOGRAPH - 0xB945: 0x7B36, //CJK UNIFIED IDEOGRAPH - 0xB946: 0x7B37, //CJK UNIFIED IDEOGRAPH - 0xB947: 0x7B39, //CJK UNIFIED IDEOGRAPH - 0xB948: 0x7B3B, //CJK UNIFIED IDEOGRAPH - 0xB949: 0x7B3D, //CJK UNIFIED IDEOGRAPH - 0xB94A: 0x7B3F, //CJK UNIFIED IDEOGRAPH - 0xB94B: 0x7B40, //CJK UNIFIED IDEOGRAPH - 0xB94C: 0x7B41, //CJK UNIFIED IDEOGRAPH - 0xB94D: 0x7B42, //CJK UNIFIED IDEOGRAPH - 0xB94E: 0x7B43, //CJK UNIFIED IDEOGRAPH - 0xB94F: 0x7B44, //CJK UNIFIED IDEOGRAPH - 0xB950: 0x7B46, //CJK UNIFIED IDEOGRAPH - 0xB951: 0x7B48, //CJK UNIFIED IDEOGRAPH - 0xB952: 0x7B4A, //CJK UNIFIED IDEOGRAPH - 0xB953: 0x7B4D, //CJK UNIFIED IDEOGRAPH - 0xB954: 0x7B4E, //CJK UNIFIED IDEOGRAPH - 0xB955: 0x7B53, //CJK UNIFIED IDEOGRAPH - 0xB956: 0x7B55, //CJK UNIFIED IDEOGRAPH - 0xB957: 0x7B57, //CJK UNIFIED IDEOGRAPH - 0xB958: 0x7B59, //CJK UNIFIED IDEOGRAPH - 0xB959: 0x7B5C, //CJK UNIFIED IDEOGRAPH - 0xB95A: 0x7B5E, //CJK UNIFIED IDEOGRAPH - 0xB95B: 0x7B5F, //CJK UNIFIED IDEOGRAPH - 0xB95C: 0x7B61, //CJK UNIFIED IDEOGRAPH - 0xB95D: 0x7B63, //CJK UNIFIED IDEOGRAPH - 0xB95E: 0x7B64, //CJK UNIFIED IDEOGRAPH - 0xB95F: 0x7B65, //CJK UNIFIED IDEOGRAPH - 0xB960: 0x7B66, //CJK UNIFIED IDEOGRAPH - 0xB961: 0x7B67, //CJK UNIFIED IDEOGRAPH - 0xB962: 0x7B68, //CJK UNIFIED IDEOGRAPH - 0xB963: 0x7B69, //CJK UNIFIED IDEOGRAPH - 0xB964: 0x7B6A, //CJK UNIFIED IDEOGRAPH - 0xB965: 0x7B6B, //CJK UNIFIED IDEOGRAPH - 0xB966: 0x7B6C, //CJK UNIFIED IDEOGRAPH - 0xB967: 0x7B6D, //CJK UNIFIED IDEOGRAPH - 0xB968: 0x7B6F, //CJK UNIFIED IDEOGRAPH - 0xB969: 0x7B70, //CJK UNIFIED IDEOGRAPH - 0xB96A: 0x7B73, //CJK UNIFIED IDEOGRAPH - 0xB96B: 0x7B74, //CJK UNIFIED IDEOGRAPH - 0xB96C: 0x7B76, //CJK UNIFIED IDEOGRAPH - 0xB96D: 0x7B78, //CJK UNIFIED IDEOGRAPH - 0xB96E: 0x7B7A, //CJK UNIFIED IDEOGRAPH - 0xB96F: 0x7B7C, //CJK UNIFIED IDEOGRAPH - 0xB970: 0x7B7D, //CJK UNIFIED IDEOGRAPH - 0xB971: 0x7B7F, //CJK UNIFIED IDEOGRAPH - 0xB972: 0x7B81, //CJK UNIFIED IDEOGRAPH - 0xB973: 0x7B82, //CJK UNIFIED IDEOGRAPH - 0xB974: 0x7B83, //CJK UNIFIED IDEOGRAPH - 0xB975: 0x7B84, //CJK UNIFIED IDEOGRAPH - 0xB976: 0x7B86, //CJK UNIFIED IDEOGRAPH - 0xB977: 0x7B87, //CJK UNIFIED IDEOGRAPH - 0xB978: 0x7B88, //CJK UNIFIED IDEOGRAPH - 0xB979: 0x7B89, //CJK UNIFIED IDEOGRAPH - 0xB97A: 0x7B8A, //CJK UNIFIED IDEOGRAPH - 0xB97B: 0x7B8B, //CJK UNIFIED IDEOGRAPH - 0xB97C: 0x7B8C, //CJK UNIFIED IDEOGRAPH - 0xB97D: 0x7B8E, //CJK UNIFIED IDEOGRAPH - 0xB97E: 0x7B8F, //CJK UNIFIED IDEOGRAPH - 0xB980: 0x7B91, //CJK UNIFIED IDEOGRAPH - 0xB981: 0x7B92, //CJK UNIFIED IDEOGRAPH - 0xB982: 0x7B93, //CJK UNIFIED IDEOGRAPH - 0xB983: 0x7B96, //CJK UNIFIED IDEOGRAPH - 0xB984: 0x7B98, //CJK UNIFIED IDEOGRAPH - 0xB985: 0x7B99, //CJK UNIFIED IDEOGRAPH - 0xB986: 0x7B9A, //CJK UNIFIED IDEOGRAPH - 0xB987: 0x7B9B, //CJK UNIFIED IDEOGRAPH - 0xB988: 0x7B9E, //CJK UNIFIED IDEOGRAPH - 0xB989: 0x7B9F, //CJK UNIFIED IDEOGRAPH - 0xB98A: 0x7BA0, //CJK UNIFIED IDEOGRAPH - 0xB98B: 0x7BA3, //CJK UNIFIED IDEOGRAPH - 0xB98C: 0x7BA4, //CJK UNIFIED IDEOGRAPH - 0xB98D: 0x7BA5, //CJK UNIFIED IDEOGRAPH - 0xB98E: 0x7BAE, //CJK UNIFIED IDEOGRAPH - 0xB98F: 0x7BAF, //CJK UNIFIED IDEOGRAPH - 0xB990: 0x7BB0, //CJK UNIFIED IDEOGRAPH - 0xB991: 0x7BB2, //CJK UNIFIED IDEOGRAPH - 0xB992: 0x7BB3, //CJK UNIFIED IDEOGRAPH - 0xB993: 0x7BB5, //CJK UNIFIED IDEOGRAPH - 0xB994: 0x7BB6, //CJK UNIFIED IDEOGRAPH - 0xB995: 0x7BB7, //CJK UNIFIED IDEOGRAPH - 0xB996: 0x7BB9, //CJK UNIFIED IDEOGRAPH - 0xB997: 0x7BBA, //CJK UNIFIED IDEOGRAPH - 0xB998: 0x7BBB, //CJK UNIFIED IDEOGRAPH - 0xB999: 0x7BBC, //CJK UNIFIED IDEOGRAPH - 0xB99A: 0x7BBD, //CJK UNIFIED IDEOGRAPH - 0xB99B: 0x7BBE, //CJK UNIFIED IDEOGRAPH - 0xB99C: 0x7BBF, //CJK UNIFIED IDEOGRAPH - 0xB99D: 0x7BC0, //CJK UNIFIED IDEOGRAPH - 0xB99E: 0x7BC2, //CJK UNIFIED IDEOGRAPH - 0xB99F: 0x7BC3, //CJK UNIFIED IDEOGRAPH - 0xB9A0: 0x7BC4, //CJK UNIFIED IDEOGRAPH - 0xB9A1: 0x57C2, //CJK UNIFIED IDEOGRAPH - 0xB9A2: 0x803F, //CJK UNIFIED IDEOGRAPH - 0xB9A3: 0x6897, //CJK UNIFIED IDEOGRAPH - 0xB9A4: 0x5DE5, //CJK UNIFIED IDEOGRAPH - 0xB9A5: 0x653B, //CJK UNIFIED IDEOGRAPH - 0xB9A6: 0x529F, //CJK UNIFIED IDEOGRAPH - 0xB9A7: 0x606D, //CJK UNIFIED IDEOGRAPH - 0xB9A8: 0x9F9A, //CJK UNIFIED IDEOGRAPH - 0xB9A9: 0x4F9B, //CJK UNIFIED IDEOGRAPH - 0xB9AA: 0x8EAC, //CJK UNIFIED IDEOGRAPH - 0xB9AB: 0x516C, //CJK UNIFIED IDEOGRAPH - 0xB9AC: 0x5BAB, //CJK UNIFIED IDEOGRAPH - 0xB9AD: 0x5F13, //CJK UNIFIED IDEOGRAPH - 0xB9AE: 0x5DE9, //CJK UNIFIED IDEOGRAPH - 0xB9AF: 0x6C5E, //CJK UNIFIED IDEOGRAPH - 0xB9B0: 0x62F1, //CJK UNIFIED IDEOGRAPH - 0xB9B1: 0x8D21, //CJK UNIFIED IDEOGRAPH - 0xB9B2: 0x5171, //CJK UNIFIED IDEOGRAPH - 0xB9B3: 0x94A9, //CJK UNIFIED IDEOGRAPH - 0xB9B4: 0x52FE, //CJK UNIFIED IDEOGRAPH - 0xB9B5: 0x6C9F, //CJK UNIFIED IDEOGRAPH - 0xB9B6: 0x82DF, //CJK UNIFIED IDEOGRAPH - 0xB9B7: 0x72D7, //CJK UNIFIED IDEOGRAPH - 0xB9B8: 0x57A2, //CJK UNIFIED IDEOGRAPH - 0xB9B9: 0x6784, //CJK UNIFIED IDEOGRAPH - 0xB9BA: 0x8D2D, //CJK UNIFIED IDEOGRAPH - 0xB9BB: 0x591F, //CJK UNIFIED IDEOGRAPH - 0xB9BC: 0x8F9C, //CJK UNIFIED IDEOGRAPH - 0xB9BD: 0x83C7, //CJK UNIFIED IDEOGRAPH - 0xB9BE: 0x5495, //CJK UNIFIED IDEOGRAPH - 0xB9BF: 0x7B8D, //CJK UNIFIED IDEOGRAPH - 0xB9C0: 0x4F30, //CJK UNIFIED IDEOGRAPH - 0xB9C1: 0x6CBD, //CJK UNIFIED IDEOGRAPH - 0xB9C2: 0x5B64, //CJK UNIFIED IDEOGRAPH - 0xB9C3: 0x59D1, //CJK UNIFIED IDEOGRAPH - 0xB9C4: 0x9F13, //CJK UNIFIED IDEOGRAPH - 0xB9C5: 0x53E4, //CJK UNIFIED IDEOGRAPH - 0xB9C6: 0x86CA, //CJK UNIFIED IDEOGRAPH - 0xB9C7: 0x9AA8, //CJK UNIFIED IDEOGRAPH - 0xB9C8: 0x8C37, //CJK UNIFIED IDEOGRAPH - 0xB9C9: 0x80A1, //CJK UNIFIED IDEOGRAPH - 0xB9CA: 0x6545, //CJK UNIFIED IDEOGRAPH - 0xB9CB: 0x987E, //CJK UNIFIED IDEOGRAPH - 0xB9CC: 0x56FA, //CJK UNIFIED IDEOGRAPH - 0xB9CD: 0x96C7, //CJK UNIFIED IDEOGRAPH - 0xB9CE: 0x522E, //CJK UNIFIED IDEOGRAPH - 0xB9CF: 0x74DC, //CJK UNIFIED IDEOGRAPH - 0xB9D0: 0x5250, //CJK UNIFIED IDEOGRAPH - 0xB9D1: 0x5BE1, //CJK UNIFIED IDEOGRAPH - 0xB9D2: 0x6302, //CJK UNIFIED IDEOGRAPH - 0xB9D3: 0x8902, //CJK UNIFIED IDEOGRAPH - 0xB9D4: 0x4E56, //CJK UNIFIED IDEOGRAPH - 0xB9D5: 0x62D0, //CJK UNIFIED IDEOGRAPH - 0xB9D6: 0x602A, //CJK UNIFIED IDEOGRAPH - 0xB9D7: 0x68FA, //CJK UNIFIED IDEOGRAPH - 0xB9D8: 0x5173, //CJK UNIFIED IDEOGRAPH - 0xB9D9: 0x5B98, //CJK UNIFIED IDEOGRAPH - 0xB9DA: 0x51A0, //CJK UNIFIED IDEOGRAPH - 0xB9DB: 0x89C2, //CJK UNIFIED IDEOGRAPH - 0xB9DC: 0x7BA1, //CJK UNIFIED IDEOGRAPH - 0xB9DD: 0x9986, //CJK UNIFIED IDEOGRAPH - 0xB9DE: 0x7F50, //CJK UNIFIED IDEOGRAPH - 0xB9DF: 0x60EF, //CJK UNIFIED IDEOGRAPH - 0xB9E0: 0x704C, //CJK UNIFIED IDEOGRAPH - 0xB9E1: 0x8D2F, //CJK UNIFIED IDEOGRAPH - 0xB9E2: 0x5149, //CJK UNIFIED IDEOGRAPH - 0xB9E3: 0x5E7F, //CJK UNIFIED IDEOGRAPH - 0xB9E4: 0x901B, //CJK UNIFIED IDEOGRAPH - 0xB9E5: 0x7470, //CJK UNIFIED IDEOGRAPH - 0xB9E6: 0x89C4, //CJK UNIFIED IDEOGRAPH - 0xB9E7: 0x572D, //CJK UNIFIED IDEOGRAPH - 0xB9E8: 0x7845, //CJK UNIFIED IDEOGRAPH - 0xB9E9: 0x5F52, //CJK UNIFIED IDEOGRAPH - 0xB9EA: 0x9F9F, //CJK UNIFIED IDEOGRAPH - 0xB9EB: 0x95FA, //CJK UNIFIED IDEOGRAPH - 0xB9EC: 0x8F68, //CJK UNIFIED IDEOGRAPH - 0xB9ED: 0x9B3C, //CJK UNIFIED IDEOGRAPH - 0xB9EE: 0x8BE1, //CJK UNIFIED IDEOGRAPH - 0xB9EF: 0x7678, //CJK UNIFIED IDEOGRAPH - 0xB9F0: 0x6842, //CJK UNIFIED IDEOGRAPH - 0xB9F1: 0x67DC, //CJK UNIFIED IDEOGRAPH - 0xB9F2: 0x8DEA, //CJK UNIFIED IDEOGRAPH - 0xB9F3: 0x8D35, //CJK UNIFIED IDEOGRAPH - 0xB9F4: 0x523D, //CJK UNIFIED IDEOGRAPH - 0xB9F5: 0x8F8A, //CJK UNIFIED IDEOGRAPH - 0xB9F6: 0x6EDA, //CJK UNIFIED IDEOGRAPH - 0xB9F7: 0x68CD, //CJK UNIFIED IDEOGRAPH - 0xB9F8: 0x9505, //CJK UNIFIED IDEOGRAPH - 0xB9F9: 0x90ED, //CJK UNIFIED IDEOGRAPH - 0xB9FA: 0x56FD, //CJK UNIFIED IDEOGRAPH - 0xB9FB: 0x679C, //CJK UNIFIED IDEOGRAPH - 0xB9FC: 0x88F9, //CJK UNIFIED IDEOGRAPH - 0xB9FD: 0x8FC7, //CJK UNIFIED IDEOGRAPH - 0xB9FE: 0x54C8, //CJK UNIFIED IDEOGRAPH - 0xBA40: 0x7BC5, //CJK UNIFIED IDEOGRAPH - 0xBA41: 0x7BC8, //CJK UNIFIED IDEOGRAPH - 0xBA42: 0x7BC9, //CJK UNIFIED IDEOGRAPH - 0xBA43: 0x7BCA, //CJK UNIFIED IDEOGRAPH - 0xBA44: 0x7BCB, //CJK UNIFIED IDEOGRAPH - 0xBA45: 0x7BCD, //CJK UNIFIED IDEOGRAPH - 0xBA46: 0x7BCE, //CJK UNIFIED IDEOGRAPH - 0xBA47: 0x7BCF, //CJK UNIFIED IDEOGRAPH - 0xBA48: 0x7BD0, //CJK UNIFIED IDEOGRAPH - 0xBA49: 0x7BD2, //CJK UNIFIED IDEOGRAPH - 0xBA4A: 0x7BD4, //CJK UNIFIED IDEOGRAPH - 0xBA4B: 0x7BD5, //CJK UNIFIED IDEOGRAPH - 0xBA4C: 0x7BD6, //CJK UNIFIED IDEOGRAPH - 0xBA4D: 0x7BD7, //CJK UNIFIED IDEOGRAPH - 0xBA4E: 0x7BD8, //CJK UNIFIED IDEOGRAPH - 0xBA4F: 0x7BDB, //CJK UNIFIED IDEOGRAPH - 0xBA50: 0x7BDC, //CJK UNIFIED IDEOGRAPH - 0xBA51: 0x7BDE, //CJK UNIFIED IDEOGRAPH - 0xBA52: 0x7BDF, //CJK UNIFIED IDEOGRAPH - 0xBA53: 0x7BE0, //CJK UNIFIED IDEOGRAPH - 0xBA54: 0x7BE2, //CJK UNIFIED IDEOGRAPH - 0xBA55: 0x7BE3, //CJK UNIFIED IDEOGRAPH - 0xBA56: 0x7BE4, //CJK UNIFIED IDEOGRAPH - 0xBA57: 0x7BE7, //CJK UNIFIED IDEOGRAPH - 0xBA58: 0x7BE8, //CJK UNIFIED IDEOGRAPH - 0xBA59: 0x7BE9, //CJK UNIFIED IDEOGRAPH - 0xBA5A: 0x7BEB, //CJK UNIFIED IDEOGRAPH - 0xBA5B: 0x7BEC, //CJK UNIFIED IDEOGRAPH - 0xBA5C: 0x7BED, //CJK UNIFIED IDEOGRAPH - 0xBA5D: 0x7BEF, //CJK UNIFIED IDEOGRAPH - 0xBA5E: 0x7BF0, //CJK UNIFIED IDEOGRAPH - 0xBA5F: 0x7BF2, //CJK UNIFIED IDEOGRAPH - 0xBA60: 0x7BF3, //CJK UNIFIED IDEOGRAPH - 0xBA61: 0x7BF4, //CJK UNIFIED IDEOGRAPH - 0xBA62: 0x7BF5, //CJK UNIFIED IDEOGRAPH - 0xBA63: 0x7BF6, //CJK UNIFIED IDEOGRAPH - 0xBA64: 0x7BF8, //CJK UNIFIED IDEOGRAPH - 0xBA65: 0x7BF9, //CJK UNIFIED IDEOGRAPH - 0xBA66: 0x7BFA, //CJK UNIFIED IDEOGRAPH - 0xBA67: 0x7BFB, //CJK UNIFIED IDEOGRAPH - 0xBA68: 0x7BFD, //CJK UNIFIED IDEOGRAPH - 0xBA69: 0x7BFF, //CJK UNIFIED IDEOGRAPH - 0xBA6A: 0x7C00, //CJK UNIFIED IDEOGRAPH - 0xBA6B: 0x7C01, //CJK UNIFIED IDEOGRAPH - 0xBA6C: 0x7C02, //CJK UNIFIED IDEOGRAPH - 0xBA6D: 0x7C03, //CJK UNIFIED IDEOGRAPH - 0xBA6E: 0x7C04, //CJK UNIFIED IDEOGRAPH - 0xBA6F: 0x7C05, //CJK UNIFIED IDEOGRAPH - 0xBA70: 0x7C06, //CJK UNIFIED IDEOGRAPH - 0xBA71: 0x7C08, //CJK UNIFIED IDEOGRAPH - 0xBA72: 0x7C09, //CJK UNIFIED IDEOGRAPH - 0xBA73: 0x7C0A, //CJK UNIFIED IDEOGRAPH - 0xBA74: 0x7C0D, //CJK UNIFIED IDEOGRAPH - 0xBA75: 0x7C0E, //CJK UNIFIED IDEOGRAPH - 0xBA76: 0x7C10, //CJK UNIFIED IDEOGRAPH - 0xBA77: 0x7C11, //CJK UNIFIED IDEOGRAPH - 0xBA78: 0x7C12, //CJK UNIFIED IDEOGRAPH - 0xBA79: 0x7C13, //CJK UNIFIED IDEOGRAPH - 0xBA7A: 0x7C14, //CJK UNIFIED IDEOGRAPH - 0xBA7B: 0x7C15, //CJK UNIFIED IDEOGRAPH - 0xBA7C: 0x7C17, //CJK UNIFIED IDEOGRAPH - 0xBA7D: 0x7C18, //CJK UNIFIED IDEOGRAPH - 0xBA7E: 0x7C19, //CJK UNIFIED IDEOGRAPH - 0xBA80: 0x7C1A, //CJK UNIFIED IDEOGRAPH - 0xBA81: 0x7C1B, //CJK UNIFIED IDEOGRAPH - 0xBA82: 0x7C1C, //CJK UNIFIED IDEOGRAPH - 0xBA83: 0x7C1D, //CJK UNIFIED IDEOGRAPH - 0xBA84: 0x7C1E, //CJK UNIFIED IDEOGRAPH - 0xBA85: 0x7C20, //CJK UNIFIED IDEOGRAPH - 0xBA86: 0x7C21, //CJK UNIFIED IDEOGRAPH - 0xBA87: 0x7C22, //CJK UNIFIED IDEOGRAPH - 0xBA88: 0x7C23, //CJK UNIFIED IDEOGRAPH - 0xBA89: 0x7C24, //CJK UNIFIED IDEOGRAPH - 0xBA8A: 0x7C25, //CJK UNIFIED IDEOGRAPH - 0xBA8B: 0x7C28, //CJK UNIFIED IDEOGRAPH - 0xBA8C: 0x7C29, //CJK UNIFIED IDEOGRAPH - 0xBA8D: 0x7C2B, //CJK UNIFIED IDEOGRAPH - 0xBA8E: 0x7C2C, //CJK UNIFIED IDEOGRAPH - 0xBA8F: 0x7C2D, //CJK UNIFIED IDEOGRAPH - 0xBA90: 0x7C2E, //CJK UNIFIED IDEOGRAPH - 0xBA91: 0x7C2F, //CJK UNIFIED IDEOGRAPH - 0xBA92: 0x7C30, //CJK UNIFIED IDEOGRAPH - 0xBA93: 0x7C31, //CJK UNIFIED IDEOGRAPH - 0xBA94: 0x7C32, //CJK UNIFIED IDEOGRAPH - 0xBA95: 0x7C33, //CJK UNIFIED IDEOGRAPH - 0xBA96: 0x7C34, //CJK UNIFIED IDEOGRAPH - 0xBA97: 0x7C35, //CJK UNIFIED IDEOGRAPH - 0xBA98: 0x7C36, //CJK UNIFIED IDEOGRAPH - 0xBA99: 0x7C37, //CJK UNIFIED IDEOGRAPH - 0xBA9A: 0x7C39, //CJK UNIFIED IDEOGRAPH - 0xBA9B: 0x7C3A, //CJK UNIFIED IDEOGRAPH - 0xBA9C: 0x7C3B, //CJK UNIFIED IDEOGRAPH - 0xBA9D: 0x7C3C, //CJK UNIFIED IDEOGRAPH - 0xBA9E: 0x7C3D, //CJK UNIFIED IDEOGRAPH - 0xBA9F: 0x7C3E, //CJK UNIFIED IDEOGRAPH - 0xBAA0: 0x7C42, //CJK UNIFIED IDEOGRAPH - 0xBAA1: 0x9AB8, //CJK UNIFIED IDEOGRAPH - 0xBAA2: 0x5B69, //CJK UNIFIED IDEOGRAPH - 0xBAA3: 0x6D77, //CJK UNIFIED IDEOGRAPH - 0xBAA4: 0x6C26, //CJK UNIFIED IDEOGRAPH - 0xBAA5: 0x4EA5, //CJK UNIFIED IDEOGRAPH - 0xBAA6: 0x5BB3, //CJK UNIFIED IDEOGRAPH - 0xBAA7: 0x9A87, //CJK UNIFIED IDEOGRAPH - 0xBAA8: 0x9163, //CJK UNIFIED IDEOGRAPH - 0xBAA9: 0x61A8, //CJK UNIFIED IDEOGRAPH - 0xBAAA: 0x90AF, //CJK UNIFIED IDEOGRAPH - 0xBAAB: 0x97E9, //CJK UNIFIED IDEOGRAPH - 0xBAAC: 0x542B, //CJK UNIFIED IDEOGRAPH - 0xBAAD: 0x6DB5, //CJK UNIFIED IDEOGRAPH - 0xBAAE: 0x5BD2, //CJK UNIFIED IDEOGRAPH - 0xBAAF: 0x51FD, //CJK UNIFIED IDEOGRAPH - 0xBAB0: 0x558A, //CJK UNIFIED IDEOGRAPH - 0xBAB1: 0x7F55, //CJK UNIFIED IDEOGRAPH - 0xBAB2: 0x7FF0, //CJK UNIFIED IDEOGRAPH - 0xBAB3: 0x64BC, //CJK UNIFIED IDEOGRAPH - 0xBAB4: 0x634D, //CJK UNIFIED IDEOGRAPH - 0xBAB5: 0x65F1, //CJK UNIFIED IDEOGRAPH - 0xBAB6: 0x61BE, //CJK UNIFIED IDEOGRAPH - 0xBAB7: 0x608D, //CJK UNIFIED IDEOGRAPH - 0xBAB8: 0x710A, //CJK UNIFIED IDEOGRAPH - 0xBAB9: 0x6C57, //CJK UNIFIED IDEOGRAPH - 0xBABA: 0x6C49, //CJK UNIFIED IDEOGRAPH - 0xBABB: 0x592F, //CJK UNIFIED IDEOGRAPH - 0xBABC: 0x676D, //CJK UNIFIED IDEOGRAPH - 0xBABD: 0x822A, //CJK UNIFIED IDEOGRAPH - 0xBABE: 0x58D5, //CJK UNIFIED IDEOGRAPH - 0xBABF: 0x568E, //CJK UNIFIED IDEOGRAPH - 0xBAC0: 0x8C6A, //CJK UNIFIED IDEOGRAPH - 0xBAC1: 0x6BEB, //CJK UNIFIED IDEOGRAPH - 0xBAC2: 0x90DD, //CJK UNIFIED IDEOGRAPH - 0xBAC3: 0x597D, //CJK UNIFIED IDEOGRAPH - 0xBAC4: 0x8017, //CJK UNIFIED IDEOGRAPH - 0xBAC5: 0x53F7, //CJK UNIFIED IDEOGRAPH - 0xBAC6: 0x6D69, //CJK UNIFIED IDEOGRAPH - 0xBAC7: 0x5475, //CJK UNIFIED IDEOGRAPH - 0xBAC8: 0x559D, //CJK UNIFIED IDEOGRAPH - 0xBAC9: 0x8377, //CJK UNIFIED IDEOGRAPH - 0xBACA: 0x83CF, //CJK UNIFIED IDEOGRAPH - 0xBACB: 0x6838, //CJK UNIFIED IDEOGRAPH - 0xBACC: 0x79BE, //CJK UNIFIED IDEOGRAPH - 0xBACD: 0x548C, //CJK UNIFIED IDEOGRAPH - 0xBACE: 0x4F55, //CJK UNIFIED IDEOGRAPH - 0xBACF: 0x5408, //CJK UNIFIED IDEOGRAPH - 0xBAD0: 0x76D2, //CJK UNIFIED IDEOGRAPH - 0xBAD1: 0x8C89, //CJK UNIFIED IDEOGRAPH - 0xBAD2: 0x9602, //CJK UNIFIED IDEOGRAPH - 0xBAD3: 0x6CB3, //CJK UNIFIED IDEOGRAPH - 0xBAD4: 0x6DB8, //CJK UNIFIED IDEOGRAPH - 0xBAD5: 0x8D6B, //CJK UNIFIED IDEOGRAPH - 0xBAD6: 0x8910, //CJK UNIFIED IDEOGRAPH - 0xBAD7: 0x9E64, //CJK UNIFIED IDEOGRAPH - 0xBAD8: 0x8D3A, //CJK UNIFIED IDEOGRAPH - 0xBAD9: 0x563F, //CJK UNIFIED IDEOGRAPH - 0xBADA: 0x9ED1, //CJK UNIFIED IDEOGRAPH - 0xBADB: 0x75D5, //CJK UNIFIED IDEOGRAPH - 0xBADC: 0x5F88, //CJK UNIFIED IDEOGRAPH - 0xBADD: 0x72E0, //CJK UNIFIED IDEOGRAPH - 0xBADE: 0x6068, //CJK UNIFIED IDEOGRAPH - 0xBADF: 0x54FC, //CJK UNIFIED IDEOGRAPH - 0xBAE0: 0x4EA8, //CJK UNIFIED IDEOGRAPH - 0xBAE1: 0x6A2A, //CJK UNIFIED IDEOGRAPH - 0xBAE2: 0x8861, //CJK UNIFIED IDEOGRAPH - 0xBAE3: 0x6052, //CJK UNIFIED IDEOGRAPH - 0xBAE4: 0x8F70, //CJK UNIFIED IDEOGRAPH - 0xBAE5: 0x54C4, //CJK UNIFIED IDEOGRAPH - 0xBAE6: 0x70D8, //CJK UNIFIED IDEOGRAPH - 0xBAE7: 0x8679, //CJK UNIFIED IDEOGRAPH - 0xBAE8: 0x9E3F, //CJK UNIFIED IDEOGRAPH - 0xBAE9: 0x6D2A, //CJK UNIFIED IDEOGRAPH - 0xBAEA: 0x5B8F, //CJK UNIFIED IDEOGRAPH - 0xBAEB: 0x5F18, //CJK UNIFIED IDEOGRAPH - 0xBAEC: 0x7EA2, //CJK UNIFIED IDEOGRAPH - 0xBAED: 0x5589, //CJK UNIFIED IDEOGRAPH - 0xBAEE: 0x4FAF, //CJK UNIFIED IDEOGRAPH - 0xBAEF: 0x7334, //CJK UNIFIED IDEOGRAPH - 0xBAF0: 0x543C, //CJK UNIFIED IDEOGRAPH - 0xBAF1: 0x539A, //CJK UNIFIED IDEOGRAPH - 0xBAF2: 0x5019, //CJK UNIFIED IDEOGRAPH - 0xBAF3: 0x540E, //CJK UNIFIED IDEOGRAPH - 0xBAF4: 0x547C, //CJK UNIFIED IDEOGRAPH - 0xBAF5: 0x4E4E, //CJK UNIFIED IDEOGRAPH - 0xBAF6: 0x5FFD, //CJK UNIFIED IDEOGRAPH - 0xBAF7: 0x745A, //CJK UNIFIED IDEOGRAPH - 0xBAF8: 0x58F6, //CJK UNIFIED IDEOGRAPH - 0xBAF9: 0x846B, //CJK UNIFIED IDEOGRAPH - 0xBAFA: 0x80E1, //CJK UNIFIED IDEOGRAPH - 0xBAFB: 0x8774, //CJK UNIFIED IDEOGRAPH - 0xBAFC: 0x72D0, //CJK UNIFIED IDEOGRAPH - 0xBAFD: 0x7CCA, //CJK UNIFIED IDEOGRAPH - 0xBAFE: 0x6E56, //CJK UNIFIED IDEOGRAPH - 0xBB40: 0x7C43, //CJK UNIFIED IDEOGRAPH - 0xBB41: 0x7C44, //CJK UNIFIED IDEOGRAPH - 0xBB42: 0x7C45, //CJK UNIFIED IDEOGRAPH - 0xBB43: 0x7C46, //CJK UNIFIED IDEOGRAPH - 0xBB44: 0x7C47, //CJK UNIFIED IDEOGRAPH - 0xBB45: 0x7C48, //CJK UNIFIED IDEOGRAPH - 0xBB46: 0x7C49, //CJK UNIFIED IDEOGRAPH - 0xBB47: 0x7C4A, //CJK UNIFIED IDEOGRAPH - 0xBB48: 0x7C4B, //CJK UNIFIED IDEOGRAPH - 0xBB49: 0x7C4C, //CJK UNIFIED IDEOGRAPH - 0xBB4A: 0x7C4E, //CJK UNIFIED IDEOGRAPH - 0xBB4B: 0x7C4F, //CJK UNIFIED IDEOGRAPH - 0xBB4C: 0x7C50, //CJK UNIFIED IDEOGRAPH - 0xBB4D: 0x7C51, //CJK UNIFIED IDEOGRAPH - 0xBB4E: 0x7C52, //CJK UNIFIED IDEOGRAPH - 0xBB4F: 0x7C53, //CJK UNIFIED IDEOGRAPH - 0xBB50: 0x7C54, //CJK UNIFIED IDEOGRAPH - 0xBB51: 0x7C55, //CJK UNIFIED IDEOGRAPH - 0xBB52: 0x7C56, //CJK UNIFIED IDEOGRAPH - 0xBB53: 0x7C57, //CJK UNIFIED IDEOGRAPH - 0xBB54: 0x7C58, //CJK UNIFIED IDEOGRAPH - 0xBB55: 0x7C59, //CJK UNIFIED IDEOGRAPH - 0xBB56: 0x7C5A, //CJK UNIFIED IDEOGRAPH - 0xBB57: 0x7C5B, //CJK UNIFIED IDEOGRAPH - 0xBB58: 0x7C5C, //CJK UNIFIED IDEOGRAPH - 0xBB59: 0x7C5D, //CJK UNIFIED IDEOGRAPH - 0xBB5A: 0x7C5E, //CJK UNIFIED IDEOGRAPH - 0xBB5B: 0x7C5F, //CJK UNIFIED IDEOGRAPH - 0xBB5C: 0x7C60, //CJK UNIFIED IDEOGRAPH - 0xBB5D: 0x7C61, //CJK UNIFIED IDEOGRAPH - 0xBB5E: 0x7C62, //CJK UNIFIED IDEOGRAPH - 0xBB5F: 0x7C63, //CJK UNIFIED IDEOGRAPH - 0xBB60: 0x7C64, //CJK UNIFIED IDEOGRAPH - 0xBB61: 0x7C65, //CJK UNIFIED IDEOGRAPH - 0xBB62: 0x7C66, //CJK UNIFIED IDEOGRAPH - 0xBB63: 0x7C67, //CJK UNIFIED IDEOGRAPH - 0xBB64: 0x7C68, //CJK UNIFIED IDEOGRAPH - 0xBB65: 0x7C69, //CJK UNIFIED IDEOGRAPH - 0xBB66: 0x7C6A, //CJK UNIFIED IDEOGRAPH - 0xBB67: 0x7C6B, //CJK UNIFIED IDEOGRAPH - 0xBB68: 0x7C6C, //CJK UNIFIED IDEOGRAPH - 0xBB69: 0x7C6D, //CJK UNIFIED IDEOGRAPH - 0xBB6A: 0x7C6E, //CJK UNIFIED IDEOGRAPH - 0xBB6B: 0x7C6F, //CJK UNIFIED IDEOGRAPH - 0xBB6C: 0x7C70, //CJK UNIFIED IDEOGRAPH - 0xBB6D: 0x7C71, //CJK UNIFIED IDEOGRAPH - 0xBB6E: 0x7C72, //CJK UNIFIED IDEOGRAPH - 0xBB6F: 0x7C75, //CJK UNIFIED IDEOGRAPH - 0xBB70: 0x7C76, //CJK UNIFIED IDEOGRAPH - 0xBB71: 0x7C77, //CJK UNIFIED IDEOGRAPH - 0xBB72: 0x7C78, //CJK UNIFIED IDEOGRAPH - 0xBB73: 0x7C79, //CJK UNIFIED IDEOGRAPH - 0xBB74: 0x7C7A, //CJK UNIFIED IDEOGRAPH - 0xBB75: 0x7C7E, //CJK UNIFIED IDEOGRAPH - 0xBB76: 0x7C7F, //CJK UNIFIED IDEOGRAPH - 0xBB77: 0x7C80, //CJK UNIFIED IDEOGRAPH - 0xBB78: 0x7C81, //CJK UNIFIED IDEOGRAPH - 0xBB79: 0x7C82, //CJK UNIFIED IDEOGRAPH - 0xBB7A: 0x7C83, //CJK UNIFIED IDEOGRAPH - 0xBB7B: 0x7C84, //CJK UNIFIED IDEOGRAPH - 0xBB7C: 0x7C85, //CJK UNIFIED IDEOGRAPH - 0xBB7D: 0x7C86, //CJK UNIFIED IDEOGRAPH - 0xBB7E: 0x7C87, //CJK UNIFIED IDEOGRAPH - 0xBB80: 0x7C88, //CJK UNIFIED IDEOGRAPH - 0xBB81: 0x7C8A, //CJK UNIFIED IDEOGRAPH - 0xBB82: 0x7C8B, //CJK UNIFIED IDEOGRAPH - 0xBB83: 0x7C8C, //CJK UNIFIED IDEOGRAPH - 0xBB84: 0x7C8D, //CJK UNIFIED IDEOGRAPH - 0xBB85: 0x7C8E, //CJK UNIFIED IDEOGRAPH - 0xBB86: 0x7C8F, //CJK UNIFIED IDEOGRAPH - 0xBB87: 0x7C90, //CJK UNIFIED IDEOGRAPH - 0xBB88: 0x7C93, //CJK UNIFIED IDEOGRAPH - 0xBB89: 0x7C94, //CJK UNIFIED IDEOGRAPH - 0xBB8A: 0x7C96, //CJK UNIFIED IDEOGRAPH - 0xBB8B: 0x7C99, //CJK UNIFIED IDEOGRAPH - 0xBB8C: 0x7C9A, //CJK UNIFIED IDEOGRAPH - 0xBB8D: 0x7C9B, //CJK UNIFIED IDEOGRAPH - 0xBB8E: 0x7CA0, //CJK UNIFIED IDEOGRAPH - 0xBB8F: 0x7CA1, //CJK UNIFIED IDEOGRAPH - 0xBB90: 0x7CA3, //CJK UNIFIED IDEOGRAPH - 0xBB91: 0x7CA6, //CJK UNIFIED IDEOGRAPH - 0xBB92: 0x7CA7, //CJK UNIFIED IDEOGRAPH - 0xBB93: 0x7CA8, //CJK UNIFIED IDEOGRAPH - 0xBB94: 0x7CA9, //CJK UNIFIED IDEOGRAPH - 0xBB95: 0x7CAB, //CJK UNIFIED IDEOGRAPH - 0xBB96: 0x7CAC, //CJK UNIFIED IDEOGRAPH - 0xBB97: 0x7CAD, //CJK UNIFIED IDEOGRAPH - 0xBB98: 0x7CAF, //CJK UNIFIED IDEOGRAPH - 0xBB99: 0x7CB0, //CJK UNIFIED IDEOGRAPH - 0xBB9A: 0x7CB4, //CJK UNIFIED IDEOGRAPH - 0xBB9B: 0x7CB5, //CJK UNIFIED IDEOGRAPH - 0xBB9C: 0x7CB6, //CJK UNIFIED IDEOGRAPH - 0xBB9D: 0x7CB7, //CJK UNIFIED IDEOGRAPH - 0xBB9E: 0x7CB8, //CJK UNIFIED IDEOGRAPH - 0xBB9F: 0x7CBA, //CJK UNIFIED IDEOGRAPH - 0xBBA0: 0x7CBB, //CJK UNIFIED IDEOGRAPH - 0xBBA1: 0x5F27, //CJK UNIFIED IDEOGRAPH - 0xBBA2: 0x864E, //CJK UNIFIED IDEOGRAPH - 0xBBA3: 0x552C, //CJK UNIFIED IDEOGRAPH - 0xBBA4: 0x62A4, //CJK UNIFIED IDEOGRAPH - 0xBBA5: 0x4E92, //CJK UNIFIED IDEOGRAPH - 0xBBA6: 0x6CAA, //CJK UNIFIED IDEOGRAPH - 0xBBA7: 0x6237, //CJK UNIFIED IDEOGRAPH - 0xBBA8: 0x82B1, //CJK UNIFIED IDEOGRAPH - 0xBBA9: 0x54D7, //CJK UNIFIED IDEOGRAPH - 0xBBAA: 0x534E, //CJK UNIFIED IDEOGRAPH - 0xBBAB: 0x733E, //CJK UNIFIED IDEOGRAPH - 0xBBAC: 0x6ED1, //CJK UNIFIED IDEOGRAPH - 0xBBAD: 0x753B, //CJK UNIFIED IDEOGRAPH - 0xBBAE: 0x5212, //CJK UNIFIED IDEOGRAPH - 0xBBAF: 0x5316, //CJK UNIFIED IDEOGRAPH - 0xBBB0: 0x8BDD, //CJK UNIFIED IDEOGRAPH - 0xBBB1: 0x69D0, //CJK UNIFIED IDEOGRAPH - 0xBBB2: 0x5F8A, //CJK UNIFIED IDEOGRAPH - 0xBBB3: 0x6000, //CJK UNIFIED IDEOGRAPH - 0xBBB4: 0x6DEE, //CJK UNIFIED IDEOGRAPH - 0xBBB5: 0x574F, //CJK UNIFIED IDEOGRAPH - 0xBBB6: 0x6B22, //CJK UNIFIED IDEOGRAPH - 0xBBB7: 0x73AF, //CJK UNIFIED IDEOGRAPH - 0xBBB8: 0x6853, //CJK UNIFIED IDEOGRAPH - 0xBBB9: 0x8FD8, //CJK UNIFIED IDEOGRAPH - 0xBBBA: 0x7F13, //CJK UNIFIED IDEOGRAPH - 0xBBBB: 0x6362, //CJK UNIFIED IDEOGRAPH - 0xBBBC: 0x60A3, //CJK UNIFIED IDEOGRAPH - 0xBBBD: 0x5524, //CJK UNIFIED IDEOGRAPH - 0xBBBE: 0x75EA, //CJK UNIFIED IDEOGRAPH - 0xBBBF: 0x8C62, //CJK UNIFIED IDEOGRAPH - 0xBBC0: 0x7115, //CJK UNIFIED IDEOGRAPH - 0xBBC1: 0x6DA3, //CJK UNIFIED IDEOGRAPH - 0xBBC2: 0x5BA6, //CJK UNIFIED IDEOGRAPH - 0xBBC3: 0x5E7B, //CJK UNIFIED IDEOGRAPH - 0xBBC4: 0x8352, //CJK UNIFIED IDEOGRAPH - 0xBBC5: 0x614C, //CJK UNIFIED IDEOGRAPH - 0xBBC6: 0x9EC4, //CJK UNIFIED IDEOGRAPH - 0xBBC7: 0x78FA, //CJK UNIFIED IDEOGRAPH - 0xBBC8: 0x8757, //CJK UNIFIED IDEOGRAPH - 0xBBC9: 0x7C27, //CJK UNIFIED IDEOGRAPH - 0xBBCA: 0x7687, //CJK UNIFIED IDEOGRAPH - 0xBBCB: 0x51F0, //CJK UNIFIED IDEOGRAPH - 0xBBCC: 0x60F6, //CJK UNIFIED IDEOGRAPH - 0xBBCD: 0x714C, //CJK UNIFIED IDEOGRAPH - 0xBBCE: 0x6643, //CJK UNIFIED IDEOGRAPH - 0xBBCF: 0x5E4C, //CJK UNIFIED IDEOGRAPH - 0xBBD0: 0x604D, //CJK UNIFIED IDEOGRAPH - 0xBBD1: 0x8C0E, //CJK UNIFIED IDEOGRAPH - 0xBBD2: 0x7070, //CJK UNIFIED IDEOGRAPH - 0xBBD3: 0x6325, //CJK UNIFIED IDEOGRAPH - 0xBBD4: 0x8F89, //CJK UNIFIED IDEOGRAPH - 0xBBD5: 0x5FBD, //CJK UNIFIED IDEOGRAPH - 0xBBD6: 0x6062, //CJK UNIFIED IDEOGRAPH - 0xBBD7: 0x86D4, //CJK UNIFIED IDEOGRAPH - 0xBBD8: 0x56DE, //CJK UNIFIED IDEOGRAPH - 0xBBD9: 0x6BC1, //CJK UNIFIED IDEOGRAPH - 0xBBDA: 0x6094, //CJK UNIFIED IDEOGRAPH - 0xBBDB: 0x6167, //CJK UNIFIED IDEOGRAPH - 0xBBDC: 0x5349, //CJK UNIFIED IDEOGRAPH - 0xBBDD: 0x60E0, //CJK UNIFIED IDEOGRAPH - 0xBBDE: 0x6666, //CJK UNIFIED IDEOGRAPH - 0xBBDF: 0x8D3F, //CJK UNIFIED IDEOGRAPH - 0xBBE0: 0x79FD, //CJK UNIFIED IDEOGRAPH - 0xBBE1: 0x4F1A, //CJK UNIFIED IDEOGRAPH - 0xBBE2: 0x70E9, //CJK UNIFIED IDEOGRAPH - 0xBBE3: 0x6C47, //CJK UNIFIED IDEOGRAPH - 0xBBE4: 0x8BB3, //CJK UNIFIED IDEOGRAPH - 0xBBE5: 0x8BF2, //CJK UNIFIED IDEOGRAPH - 0xBBE6: 0x7ED8, //CJK UNIFIED IDEOGRAPH - 0xBBE7: 0x8364, //CJK UNIFIED IDEOGRAPH - 0xBBE8: 0x660F, //CJK UNIFIED IDEOGRAPH - 0xBBE9: 0x5A5A, //CJK UNIFIED IDEOGRAPH - 0xBBEA: 0x9B42, //CJK UNIFIED IDEOGRAPH - 0xBBEB: 0x6D51, //CJK UNIFIED IDEOGRAPH - 0xBBEC: 0x6DF7, //CJK UNIFIED IDEOGRAPH - 0xBBED: 0x8C41, //CJK UNIFIED IDEOGRAPH - 0xBBEE: 0x6D3B, //CJK UNIFIED IDEOGRAPH - 0xBBEF: 0x4F19, //CJK UNIFIED IDEOGRAPH - 0xBBF0: 0x706B, //CJK UNIFIED IDEOGRAPH - 0xBBF1: 0x83B7, //CJK UNIFIED IDEOGRAPH - 0xBBF2: 0x6216, //CJK UNIFIED IDEOGRAPH - 0xBBF3: 0x60D1, //CJK UNIFIED IDEOGRAPH - 0xBBF4: 0x970D, //CJK UNIFIED IDEOGRAPH - 0xBBF5: 0x8D27, //CJK UNIFIED IDEOGRAPH - 0xBBF6: 0x7978, //CJK UNIFIED IDEOGRAPH - 0xBBF7: 0x51FB, //CJK UNIFIED IDEOGRAPH - 0xBBF8: 0x573E, //CJK UNIFIED IDEOGRAPH - 0xBBF9: 0x57FA, //CJK UNIFIED IDEOGRAPH - 0xBBFA: 0x673A, //CJK UNIFIED IDEOGRAPH - 0xBBFB: 0x7578, //CJK UNIFIED IDEOGRAPH - 0xBBFC: 0x7A3D, //CJK UNIFIED IDEOGRAPH - 0xBBFD: 0x79EF, //CJK UNIFIED IDEOGRAPH - 0xBBFE: 0x7B95, //CJK UNIFIED IDEOGRAPH - 0xBC40: 0x7CBF, //CJK UNIFIED IDEOGRAPH - 0xBC41: 0x7CC0, //CJK UNIFIED IDEOGRAPH - 0xBC42: 0x7CC2, //CJK UNIFIED IDEOGRAPH - 0xBC43: 0x7CC3, //CJK UNIFIED IDEOGRAPH - 0xBC44: 0x7CC4, //CJK UNIFIED IDEOGRAPH - 0xBC45: 0x7CC6, //CJK UNIFIED IDEOGRAPH - 0xBC46: 0x7CC9, //CJK UNIFIED IDEOGRAPH - 0xBC47: 0x7CCB, //CJK UNIFIED IDEOGRAPH - 0xBC48: 0x7CCE, //CJK UNIFIED IDEOGRAPH - 0xBC49: 0x7CCF, //CJK UNIFIED IDEOGRAPH - 0xBC4A: 0x7CD0, //CJK UNIFIED IDEOGRAPH - 0xBC4B: 0x7CD1, //CJK UNIFIED IDEOGRAPH - 0xBC4C: 0x7CD2, //CJK UNIFIED IDEOGRAPH - 0xBC4D: 0x7CD3, //CJK UNIFIED IDEOGRAPH - 0xBC4E: 0x7CD4, //CJK UNIFIED IDEOGRAPH - 0xBC4F: 0x7CD8, //CJK UNIFIED IDEOGRAPH - 0xBC50: 0x7CDA, //CJK UNIFIED IDEOGRAPH - 0xBC51: 0x7CDB, //CJK UNIFIED IDEOGRAPH - 0xBC52: 0x7CDD, //CJK UNIFIED IDEOGRAPH - 0xBC53: 0x7CDE, //CJK UNIFIED IDEOGRAPH - 0xBC54: 0x7CE1, //CJK UNIFIED IDEOGRAPH - 0xBC55: 0x7CE2, //CJK UNIFIED IDEOGRAPH - 0xBC56: 0x7CE3, //CJK UNIFIED IDEOGRAPH - 0xBC57: 0x7CE4, //CJK UNIFIED IDEOGRAPH - 0xBC58: 0x7CE5, //CJK UNIFIED IDEOGRAPH - 0xBC59: 0x7CE6, //CJK UNIFIED IDEOGRAPH - 0xBC5A: 0x7CE7, //CJK UNIFIED IDEOGRAPH - 0xBC5B: 0x7CE9, //CJK UNIFIED IDEOGRAPH - 0xBC5C: 0x7CEA, //CJK UNIFIED IDEOGRAPH - 0xBC5D: 0x7CEB, //CJK UNIFIED IDEOGRAPH - 0xBC5E: 0x7CEC, //CJK UNIFIED IDEOGRAPH - 0xBC5F: 0x7CED, //CJK UNIFIED IDEOGRAPH - 0xBC60: 0x7CEE, //CJK UNIFIED IDEOGRAPH - 0xBC61: 0x7CF0, //CJK UNIFIED IDEOGRAPH - 0xBC62: 0x7CF1, //CJK UNIFIED IDEOGRAPH - 0xBC63: 0x7CF2, //CJK UNIFIED IDEOGRAPH - 0xBC64: 0x7CF3, //CJK UNIFIED IDEOGRAPH - 0xBC65: 0x7CF4, //CJK UNIFIED IDEOGRAPH - 0xBC66: 0x7CF5, //CJK UNIFIED IDEOGRAPH - 0xBC67: 0x7CF6, //CJK UNIFIED IDEOGRAPH - 0xBC68: 0x7CF7, //CJK UNIFIED IDEOGRAPH - 0xBC69: 0x7CF9, //CJK UNIFIED IDEOGRAPH - 0xBC6A: 0x7CFA, //CJK UNIFIED IDEOGRAPH - 0xBC6B: 0x7CFC, //CJK UNIFIED IDEOGRAPH - 0xBC6C: 0x7CFD, //CJK UNIFIED IDEOGRAPH - 0xBC6D: 0x7CFE, //CJK UNIFIED IDEOGRAPH - 0xBC6E: 0x7CFF, //CJK UNIFIED IDEOGRAPH - 0xBC6F: 0x7D00, //CJK UNIFIED IDEOGRAPH - 0xBC70: 0x7D01, //CJK UNIFIED IDEOGRAPH - 0xBC71: 0x7D02, //CJK UNIFIED IDEOGRAPH - 0xBC72: 0x7D03, //CJK UNIFIED IDEOGRAPH - 0xBC73: 0x7D04, //CJK UNIFIED IDEOGRAPH - 0xBC74: 0x7D05, //CJK UNIFIED IDEOGRAPH - 0xBC75: 0x7D06, //CJK UNIFIED IDEOGRAPH - 0xBC76: 0x7D07, //CJK UNIFIED IDEOGRAPH - 0xBC77: 0x7D08, //CJK UNIFIED IDEOGRAPH - 0xBC78: 0x7D09, //CJK UNIFIED IDEOGRAPH - 0xBC79: 0x7D0B, //CJK UNIFIED IDEOGRAPH - 0xBC7A: 0x7D0C, //CJK UNIFIED IDEOGRAPH - 0xBC7B: 0x7D0D, //CJK UNIFIED IDEOGRAPH - 0xBC7C: 0x7D0E, //CJK UNIFIED IDEOGRAPH - 0xBC7D: 0x7D0F, //CJK UNIFIED IDEOGRAPH - 0xBC7E: 0x7D10, //CJK UNIFIED IDEOGRAPH - 0xBC80: 0x7D11, //CJK UNIFIED IDEOGRAPH - 0xBC81: 0x7D12, //CJK UNIFIED IDEOGRAPH - 0xBC82: 0x7D13, //CJK UNIFIED IDEOGRAPH - 0xBC83: 0x7D14, //CJK UNIFIED IDEOGRAPH - 0xBC84: 0x7D15, //CJK UNIFIED IDEOGRAPH - 0xBC85: 0x7D16, //CJK UNIFIED IDEOGRAPH - 0xBC86: 0x7D17, //CJK UNIFIED IDEOGRAPH - 0xBC87: 0x7D18, //CJK UNIFIED IDEOGRAPH - 0xBC88: 0x7D19, //CJK UNIFIED IDEOGRAPH - 0xBC89: 0x7D1A, //CJK UNIFIED IDEOGRAPH - 0xBC8A: 0x7D1B, //CJK UNIFIED IDEOGRAPH - 0xBC8B: 0x7D1C, //CJK UNIFIED IDEOGRAPH - 0xBC8C: 0x7D1D, //CJK UNIFIED IDEOGRAPH - 0xBC8D: 0x7D1E, //CJK UNIFIED IDEOGRAPH - 0xBC8E: 0x7D1F, //CJK UNIFIED IDEOGRAPH - 0xBC8F: 0x7D21, //CJK UNIFIED IDEOGRAPH - 0xBC90: 0x7D23, //CJK UNIFIED IDEOGRAPH - 0xBC91: 0x7D24, //CJK UNIFIED IDEOGRAPH - 0xBC92: 0x7D25, //CJK UNIFIED IDEOGRAPH - 0xBC93: 0x7D26, //CJK UNIFIED IDEOGRAPH - 0xBC94: 0x7D28, //CJK UNIFIED IDEOGRAPH - 0xBC95: 0x7D29, //CJK UNIFIED IDEOGRAPH - 0xBC96: 0x7D2A, //CJK UNIFIED IDEOGRAPH - 0xBC97: 0x7D2C, //CJK UNIFIED IDEOGRAPH - 0xBC98: 0x7D2D, //CJK UNIFIED IDEOGRAPH - 0xBC99: 0x7D2E, //CJK UNIFIED IDEOGRAPH - 0xBC9A: 0x7D30, //CJK UNIFIED IDEOGRAPH - 0xBC9B: 0x7D31, //CJK UNIFIED IDEOGRAPH - 0xBC9C: 0x7D32, //CJK UNIFIED IDEOGRAPH - 0xBC9D: 0x7D33, //CJK UNIFIED IDEOGRAPH - 0xBC9E: 0x7D34, //CJK UNIFIED IDEOGRAPH - 0xBC9F: 0x7D35, //CJK UNIFIED IDEOGRAPH - 0xBCA0: 0x7D36, //CJK UNIFIED IDEOGRAPH - 0xBCA1: 0x808C, //CJK UNIFIED IDEOGRAPH - 0xBCA2: 0x9965, //CJK UNIFIED IDEOGRAPH - 0xBCA3: 0x8FF9, //CJK UNIFIED IDEOGRAPH - 0xBCA4: 0x6FC0, //CJK UNIFIED IDEOGRAPH - 0xBCA5: 0x8BA5, //CJK UNIFIED IDEOGRAPH - 0xBCA6: 0x9E21, //CJK UNIFIED IDEOGRAPH - 0xBCA7: 0x59EC, //CJK UNIFIED IDEOGRAPH - 0xBCA8: 0x7EE9, //CJK UNIFIED IDEOGRAPH - 0xBCA9: 0x7F09, //CJK UNIFIED IDEOGRAPH - 0xBCAA: 0x5409, //CJK UNIFIED IDEOGRAPH - 0xBCAB: 0x6781, //CJK UNIFIED IDEOGRAPH - 0xBCAC: 0x68D8, //CJK UNIFIED IDEOGRAPH - 0xBCAD: 0x8F91, //CJK UNIFIED IDEOGRAPH - 0xBCAE: 0x7C4D, //CJK UNIFIED IDEOGRAPH - 0xBCAF: 0x96C6, //CJK UNIFIED IDEOGRAPH - 0xBCB0: 0x53CA, //CJK UNIFIED IDEOGRAPH - 0xBCB1: 0x6025, //CJK UNIFIED IDEOGRAPH - 0xBCB2: 0x75BE, //CJK UNIFIED IDEOGRAPH - 0xBCB3: 0x6C72, //CJK UNIFIED IDEOGRAPH - 0xBCB4: 0x5373, //CJK UNIFIED IDEOGRAPH - 0xBCB5: 0x5AC9, //CJK UNIFIED IDEOGRAPH - 0xBCB6: 0x7EA7, //CJK UNIFIED IDEOGRAPH - 0xBCB7: 0x6324, //CJK UNIFIED IDEOGRAPH - 0xBCB8: 0x51E0, //CJK UNIFIED IDEOGRAPH - 0xBCB9: 0x810A, //CJK UNIFIED IDEOGRAPH - 0xBCBA: 0x5DF1, //CJK UNIFIED IDEOGRAPH - 0xBCBB: 0x84DF, //CJK UNIFIED IDEOGRAPH - 0xBCBC: 0x6280, //CJK UNIFIED IDEOGRAPH - 0xBCBD: 0x5180, //CJK UNIFIED IDEOGRAPH - 0xBCBE: 0x5B63, //CJK UNIFIED IDEOGRAPH - 0xBCBF: 0x4F0E, //CJK UNIFIED IDEOGRAPH - 0xBCC0: 0x796D, //CJK UNIFIED IDEOGRAPH - 0xBCC1: 0x5242, //CJK UNIFIED IDEOGRAPH - 0xBCC2: 0x60B8, //CJK UNIFIED IDEOGRAPH - 0xBCC3: 0x6D4E, //CJK UNIFIED IDEOGRAPH - 0xBCC4: 0x5BC4, //CJK UNIFIED IDEOGRAPH - 0xBCC5: 0x5BC2, //CJK UNIFIED IDEOGRAPH - 0xBCC6: 0x8BA1, //CJK UNIFIED IDEOGRAPH - 0xBCC7: 0x8BB0, //CJK UNIFIED IDEOGRAPH - 0xBCC8: 0x65E2, //CJK UNIFIED IDEOGRAPH - 0xBCC9: 0x5FCC, //CJK UNIFIED IDEOGRAPH - 0xBCCA: 0x9645, //CJK UNIFIED IDEOGRAPH - 0xBCCB: 0x5993, //CJK UNIFIED IDEOGRAPH - 0xBCCC: 0x7EE7, //CJK UNIFIED IDEOGRAPH - 0xBCCD: 0x7EAA, //CJK UNIFIED IDEOGRAPH - 0xBCCE: 0x5609, //CJK UNIFIED IDEOGRAPH - 0xBCCF: 0x67B7, //CJK UNIFIED IDEOGRAPH - 0xBCD0: 0x5939, //CJK UNIFIED IDEOGRAPH - 0xBCD1: 0x4F73, //CJK UNIFIED IDEOGRAPH - 0xBCD2: 0x5BB6, //CJK UNIFIED IDEOGRAPH - 0xBCD3: 0x52A0, //CJK UNIFIED IDEOGRAPH - 0xBCD4: 0x835A, //CJK UNIFIED IDEOGRAPH - 0xBCD5: 0x988A, //CJK UNIFIED IDEOGRAPH - 0xBCD6: 0x8D3E, //CJK UNIFIED IDEOGRAPH - 0xBCD7: 0x7532, //CJK UNIFIED IDEOGRAPH - 0xBCD8: 0x94BE, //CJK UNIFIED IDEOGRAPH - 0xBCD9: 0x5047, //CJK UNIFIED IDEOGRAPH - 0xBCDA: 0x7A3C, //CJK UNIFIED IDEOGRAPH - 0xBCDB: 0x4EF7, //CJK UNIFIED IDEOGRAPH - 0xBCDC: 0x67B6, //CJK UNIFIED IDEOGRAPH - 0xBCDD: 0x9A7E, //CJK UNIFIED IDEOGRAPH - 0xBCDE: 0x5AC1, //CJK UNIFIED IDEOGRAPH - 0xBCDF: 0x6B7C, //CJK UNIFIED IDEOGRAPH - 0xBCE0: 0x76D1, //CJK UNIFIED IDEOGRAPH - 0xBCE1: 0x575A, //CJK UNIFIED IDEOGRAPH - 0xBCE2: 0x5C16, //CJK UNIFIED IDEOGRAPH - 0xBCE3: 0x7B3A, //CJK UNIFIED IDEOGRAPH - 0xBCE4: 0x95F4, //CJK UNIFIED IDEOGRAPH - 0xBCE5: 0x714E, //CJK UNIFIED IDEOGRAPH - 0xBCE6: 0x517C, //CJK UNIFIED IDEOGRAPH - 0xBCE7: 0x80A9, //CJK UNIFIED IDEOGRAPH - 0xBCE8: 0x8270, //CJK UNIFIED IDEOGRAPH - 0xBCE9: 0x5978, //CJK UNIFIED IDEOGRAPH - 0xBCEA: 0x7F04, //CJK UNIFIED IDEOGRAPH - 0xBCEB: 0x8327, //CJK UNIFIED IDEOGRAPH - 0xBCEC: 0x68C0, //CJK UNIFIED IDEOGRAPH - 0xBCED: 0x67EC, //CJK UNIFIED IDEOGRAPH - 0xBCEE: 0x78B1, //CJK UNIFIED IDEOGRAPH - 0xBCEF: 0x7877, //CJK UNIFIED IDEOGRAPH - 0xBCF0: 0x62E3, //CJK UNIFIED IDEOGRAPH - 0xBCF1: 0x6361, //CJK UNIFIED IDEOGRAPH - 0xBCF2: 0x7B80, //CJK UNIFIED IDEOGRAPH - 0xBCF3: 0x4FED, //CJK UNIFIED IDEOGRAPH - 0xBCF4: 0x526A, //CJK UNIFIED IDEOGRAPH - 0xBCF5: 0x51CF, //CJK UNIFIED IDEOGRAPH - 0xBCF6: 0x8350, //CJK UNIFIED IDEOGRAPH - 0xBCF7: 0x69DB, //CJK UNIFIED IDEOGRAPH - 0xBCF8: 0x9274, //CJK UNIFIED IDEOGRAPH - 0xBCF9: 0x8DF5, //CJK UNIFIED IDEOGRAPH - 0xBCFA: 0x8D31, //CJK UNIFIED IDEOGRAPH - 0xBCFB: 0x89C1, //CJK UNIFIED IDEOGRAPH - 0xBCFC: 0x952E, //CJK UNIFIED IDEOGRAPH - 0xBCFD: 0x7BAD, //CJK UNIFIED IDEOGRAPH - 0xBCFE: 0x4EF6, //CJK UNIFIED IDEOGRAPH - 0xBD40: 0x7D37, //CJK UNIFIED IDEOGRAPH - 0xBD41: 0x7D38, //CJK UNIFIED IDEOGRAPH - 0xBD42: 0x7D39, //CJK UNIFIED IDEOGRAPH - 0xBD43: 0x7D3A, //CJK UNIFIED IDEOGRAPH - 0xBD44: 0x7D3B, //CJK UNIFIED IDEOGRAPH - 0xBD45: 0x7D3C, //CJK UNIFIED IDEOGRAPH - 0xBD46: 0x7D3D, //CJK UNIFIED IDEOGRAPH - 0xBD47: 0x7D3E, //CJK UNIFIED IDEOGRAPH - 0xBD48: 0x7D3F, //CJK UNIFIED IDEOGRAPH - 0xBD49: 0x7D40, //CJK UNIFIED IDEOGRAPH - 0xBD4A: 0x7D41, //CJK UNIFIED IDEOGRAPH - 0xBD4B: 0x7D42, //CJK UNIFIED IDEOGRAPH - 0xBD4C: 0x7D43, //CJK UNIFIED IDEOGRAPH - 0xBD4D: 0x7D44, //CJK UNIFIED IDEOGRAPH - 0xBD4E: 0x7D45, //CJK UNIFIED IDEOGRAPH - 0xBD4F: 0x7D46, //CJK UNIFIED IDEOGRAPH - 0xBD50: 0x7D47, //CJK UNIFIED IDEOGRAPH - 0xBD51: 0x7D48, //CJK UNIFIED IDEOGRAPH - 0xBD52: 0x7D49, //CJK UNIFIED IDEOGRAPH - 0xBD53: 0x7D4A, //CJK UNIFIED IDEOGRAPH - 0xBD54: 0x7D4B, //CJK UNIFIED IDEOGRAPH - 0xBD55: 0x7D4C, //CJK UNIFIED IDEOGRAPH - 0xBD56: 0x7D4D, //CJK UNIFIED IDEOGRAPH - 0xBD57: 0x7D4E, //CJK UNIFIED IDEOGRAPH - 0xBD58: 0x7D4F, //CJK UNIFIED IDEOGRAPH - 0xBD59: 0x7D50, //CJK UNIFIED IDEOGRAPH - 0xBD5A: 0x7D51, //CJK UNIFIED IDEOGRAPH - 0xBD5B: 0x7D52, //CJK UNIFIED IDEOGRAPH - 0xBD5C: 0x7D53, //CJK UNIFIED IDEOGRAPH - 0xBD5D: 0x7D54, //CJK UNIFIED IDEOGRAPH - 0xBD5E: 0x7D55, //CJK UNIFIED IDEOGRAPH - 0xBD5F: 0x7D56, //CJK UNIFIED IDEOGRAPH - 0xBD60: 0x7D57, //CJK UNIFIED IDEOGRAPH - 0xBD61: 0x7D58, //CJK UNIFIED IDEOGRAPH - 0xBD62: 0x7D59, //CJK UNIFIED IDEOGRAPH - 0xBD63: 0x7D5A, //CJK UNIFIED IDEOGRAPH - 0xBD64: 0x7D5B, //CJK UNIFIED IDEOGRAPH - 0xBD65: 0x7D5C, //CJK UNIFIED IDEOGRAPH - 0xBD66: 0x7D5D, //CJK UNIFIED IDEOGRAPH - 0xBD67: 0x7D5E, //CJK UNIFIED IDEOGRAPH - 0xBD68: 0x7D5F, //CJK UNIFIED IDEOGRAPH - 0xBD69: 0x7D60, //CJK UNIFIED IDEOGRAPH - 0xBD6A: 0x7D61, //CJK UNIFIED IDEOGRAPH - 0xBD6B: 0x7D62, //CJK UNIFIED IDEOGRAPH - 0xBD6C: 0x7D63, //CJK UNIFIED IDEOGRAPH - 0xBD6D: 0x7D64, //CJK UNIFIED IDEOGRAPH - 0xBD6E: 0x7D65, //CJK UNIFIED IDEOGRAPH - 0xBD6F: 0x7D66, //CJK UNIFIED IDEOGRAPH - 0xBD70: 0x7D67, //CJK UNIFIED IDEOGRAPH - 0xBD71: 0x7D68, //CJK UNIFIED IDEOGRAPH - 0xBD72: 0x7D69, //CJK UNIFIED IDEOGRAPH - 0xBD73: 0x7D6A, //CJK UNIFIED IDEOGRAPH - 0xBD74: 0x7D6B, //CJK UNIFIED IDEOGRAPH - 0xBD75: 0x7D6C, //CJK UNIFIED IDEOGRAPH - 0xBD76: 0x7D6D, //CJK UNIFIED IDEOGRAPH - 0xBD77: 0x7D6F, //CJK UNIFIED IDEOGRAPH - 0xBD78: 0x7D70, //CJK UNIFIED IDEOGRAPH - 0xBD79: 0x7D71, //CJK UNIFIED IDEOGRAPH - 0xBD7A: 0x7D72, //CJK UNIFIED IDEOGRAPH - 0xBD7B: 0x7D73, //CJK UNIFIED IDEOGRAPH - 0xBD7C: 0x7D74, //CJK UNIFIED IDEOGRAPH - 0xBD7D: 0x7D75, //CJK UNIFIED IDEOGRAPH - 0xBD7E: 0x7D76, //CJK UNIFIED IDEOGRAPH - 0xBD80: 0x7D78, //CJK UNIFIED IDEOGRAPH - 0xBD81: 0x7D79, //CJK UNIFIED IDEOGRAPH - 0xBD82: 0x7D7A, //CJK UNIFIED IDEOGRAPH - 0xBD83: 0x7D7B, //CJK UNIFIED IDEOGRAPH - 0xBD84: 0x7D7C, //CJK UNIFIED IDEOGRAPH - 0xBD85: 0x7D7D, //CJK UNIFIED IDEOGRAPH - 0xBD86: 0x7D7E, //CJK UNIFIED IDEOGRAPH - 0xBD87: 0x7D7F, //CJK UNIFIED IDEOGRAPH - 0xBD88: 0x7D80, //CJK UNIFIED IDEOGRAPH - 0xBD89: 0x7D81, //CJK UNIFIED IDEOGRAPH - 0xBD8A: 0x7D82, //CJK UNIFIED IDEOGRAPH - 0xBD8B: 0x7D83, //CJK UNIFIED IDEOGRAPH - 0xBD8C: 0x7D84, //CJK UNIFIED IDEOGRAPH - 0xBD8D: 0x7D85, //CJK UNIFIED IDEOGRAPH - 0xBD8E: 0x7D86, //CJK UNIFIED IDEOGRAPH - 0xBD8F: 0x7D87, //CJK UNIFIED IDEOGRAPH - 0xBD90: 0x7D88, //CJK UNIFIED IDEOGRAPH - 0xBD91: 0x7D89, //CJK UNIFIED IDEOGRAPH - 0xBD92: 0x7D8A, //CJK UNIFIED IDEOGRAPH - 0xBD93: 0x7D8B, //CJK UNIFIED IDEOGRAPH - 0xBD94: 0x7D8C, //CJK UNIFIED IDEOGRAPH - 0xBD95: 0x7D8D, //CJK UNIFIED IDEOGRAPH - 0xBD96: 0x7D8E, //CJK UNIFIED IDEOGRAPH - 0xBD97: 0x7D8F, //CJK UNIFIED IDEOGRAPH - 0xBD98: 0x7D90, //CJK UNIFIED IDEOGRAPH - 0xBD99: 0x7D91, //CJK UNIFIED IDEOGRAPH - 0xBD9A: 0x7D92, //CJK UNIFIED IDEOGRAPH - 0xBD9B: 0x7D93, //CJK UNIFIED IDEOGRAPH - 0xBD9C: 0x7D94, //CJK UNIFIED IDEOGRAPH - 0xBD9D: 0x7D95, //CJK UNIFIED IDEOGRAPH - 0xBD9E: 0x7D96, //CJK UNIFIED IDEOGRAPH - 0xBD9F: 0x7D97, //CJK UNIFIED IDEOGRAPH - 0xBDA0: 0x7D98, //CJK UNIFIED IDEOGRAPH - 0xBDA1: 0x5065, //CJK UNIFIED IDEOGRAPH - 0xBDA2: 0x8230, //CJK UNIFIED IDEOGRAPH - 0xBDA3: 0x5251, //CJK UNIFIED IDEOGRAPH - 0xBDA4: 0x996F, //CJK UNIFIED IDEOGRAPH - 0xBDA5: 0x6E10, //CJK UNIFIED IDEOGRAPH - 0xBDA6: 0x6E85, //CJK UNIFIED IDEOGRAPH - 0xBDA7: 0x6DA7, //CJK UNIFIED IDEOGRAPH - 0xBDA8: 0x5EFA, //CJK UNIFIED IDEOGRAPH - 0xBDA9: 0x50F5, //CJK UNIFIED IDEOGRAPH - 0xBDAA: 0x59DC, //CJK UNIFIED IDEOGRAPH - 0xBDAB: 0x5C06, //CJK UNIFIED IDEOGRAPH - 0xBDAC: 0x6D46, //CJK UNIFIED IDEOGRAPH - 0xBDAD: 0x6C5F, //CJK UNIFIED IDEOGRAPH - 0xBDAE: 0x7586, //CJK UNIFIED IDEOGRAPH - 0xBDAF: 0x848B, //CJK UNIFIED IDEOGRAPH - 0xBDB0: 0x6868, //CJK UNIFIED IDEOGRAPH - 0xBDB1: 0x5956, //CJK UNIFIED IDEOGRAPH - 0xBDB2: 0x8BB2, //CJK UNIFIED IDEOGRAPH - 0xBDB3: 0x5320, //CJK UNIFIED IDEOGRAPH - 0xBDB4: 0x9171, //CJK UNIFIED IDEOGRAPH - 0xBDB5: 0x964D, //CJK UNIFIED IDEOGRAPH - 0xBDB6: 0x8549, //CJK UNIFIED IDEOGRAPH - 0xBDB7: 0x6912, //CJK UNIFIED IDEOGRAPH - 0xBDB8: 0x7901, //CJK UNIFIED IDEOGRAPH - 0xBDB9: 0x7126, //CJK UNIFIED IDEOGRAPH - 0xBDBA: 0x80F6, //CJK UNIFIED IDEOGRAPH - 0xBDBB: 0x4EA4, //CJK UNIFIED IDEOGRAPH - 0xBDBC: 0x90CA, //CJK UNIFIED IDEOGRAPH - 0xBDBD: 0x6D47, //CJK UNIFIED IDEOGRAPH - 0xBDBE: 0x9A84, //CJK UNIFIED IDEOGRAPH - 0xBDBF: 0x5A07, //CJK UNIFIED IDEOGRAPH - 0xBDC0: 0x56BC, //CJK UNIFIED IDEOGRAPH - 0xBDC1: 0x6405, //CJK UNIFIED IDEOGRAPH - 0xBDC2: 0x94F0, //CJK UNIFIED IDEOGRAPH - 0xBDC3: 0x77EB, //CJK UNIFIED IDEOGRAPH - 0xBDC4: 0x4FA5, //CJK UNIFIED IDEOGRAPH - 0xBDC5: 0x811A, //CJK UNIFIED IDEOGRAPH - 0xBDC6: 0x72E1, //CJK UNIFIED IDEOGRAPH - 0xBDC7: 0x89D2, //CJK UNIFIED IDEOGRAPH - 0xBDC8: 0x997A, //CJK UNIFIED IDEOGRAPH - 0xBDC9: 0x7F34, //CJK UNIFIED IDEOGRAPH - 0xBDCA: 0x7EDE, //CJK UNIFIED IDEOGRAPH - 0xBDCB: 0x527F, //CJK UNIFIED IDEOGRAPH - 0xBDCC: 0x6559, //CJK UNIFIED IDEOGRAPH - 0xBDCD: 0x9175, //CJK UNIFIED IDEOGRAPH - 0xBDCE: 0x8F7F, //CJK UNIFIED IDEOGRAPH - 0xBDCF: 0x8F83, //CJK UNIFIED IDEOGRAPH - 0xBDD0: 0x53EB, //CJK UNIFIED IDEOGRAPH - 0xBDD1: 0x7A96, //CJK UNIFIED IDEOGRAPH - 0xBDD2: 0x63ED, //CJK UNIFIED IDEOGRAPH - 0xBDD3: 0x63A5, //CJK UNIFIED IDEOGRAPH - 0xBDD4: 0x7686, //CJK UNIFIED IDEOGRAPH - 0xBDD5: 0x79F8, //CJK UNIFIED IDEOGRAPH - 0xBDD6: 0x8857, //CJK UNIFIED IDEOGRAPH - 0xBDD7: 0x9636, //CJK UNIFIED IDEOGRAPH - 0xBDD8: 0x622A, //CJK UNIFIED IDEOGRAPH - 0xBDD9: 0x52AB, //CJK UNIFIED IDEOGRAPH - 0xBDDA: 0x8282, //CJK UNIFIED IDEOGRAPH - 0xBDDB: 0x6854, //CJK UNIFIED IDEOGRAPH - 0xBDDC: 0x6770, //CJK UNIFIED IDEOGRAPH - 0xBDDD: 0x6377, //CJK UNIFIED IDEOGRAPH - 0xBDDE: 0x776B, //CJK UNIFIED IDEOGRAPH - 0xBDDF: 0x7AED, //CJK UNIFIED IDEOGRAPH - 0xBDE0: 0x6D01, //CJK UNIFIED IDEOGRAPH - 0xBDE1: 0x7ED3, //CJK UNIFIED IDEOGRAPH - 0xBDE2: 0x89E3, //CJK UNIFIED IDEOGRAPH - 0xBDE3: 0x59D0, //CJK UNIFIED IDEOGRAPH - 0xBDE4: 0x6212, //CJK UNIFIED IDEOGRAPH - 0xBDE5: 0x85C9, //CJK UNIFIED IDEOGRAPH - 0xBDE6: 0x82A5, //CJK UNIFIED IDEOGRAPH - 0xBDE7: 0x754C, //CJK UNIFIED IDEOGRAPH - 0xBDE8: 0x501F, //CJK UNIFIED IDEOGRAPH - 0xBDE9: 0x4ECB, //CJK UNIFIED IDEOGRAPH - 0xBDEA: 0x75A5, //CJK UNIFIED IDEOGRAPH - 0xBDEB: 0x8BEB, //CJK UNIFIED IDEOGRAPH - 0xBDEC: 0x5C4A, //CJK UNIFIED IDEOGRAPH - 0xBDED: 0x5DFE, //CJK UNIFIED IDEOGRAPH - 0xBDEE: 0x7B4B, //CJK UNIFIED IDEOGRAPH - 0xBDEF: 0x65A4, //CJK UNIFIED IDEOGRAPH - 0xBDF0: 0x91D1, //CJK UNIFIED IDEOGRAPH - 0xBDF1: 0x4ECA, //CJK UNIFIED IDEOGRAPH - 0xBDF2: 0x6D25, //CJK UNIFIED IDEOGRAPH - 0xBDF3: 0x895F, //CJK UNIFIED IDEOGRAPH - 0xBDF4: 0x7D27, //CJK UNIFIED IDEOGRAPH - 0xBDF5: 0x9526, //CJK UNIFIED IDEOGRAPH - 0xBDF6: 0x4EC5, //CJK UNIFIED IDEOGRAPH - 0xBDF7: 0x8C28, //CJK UNIFIED IDEOGRAPH - 0xBDF8: 0x8FDB, //CJK UNIFIED IDEOGRAPH - 0xBDF9: 0x9773, //CJK UNIFIED IDEOGRAPH - 0xBDFA: 0x664B, //CJK UNIFIED IDEOGRAPH - 0xBDFB: 0x7981, //CJK UNIFIED IDEOGRAPH - 0xBDFC: 0x8FD1, //CJK UNIFIED IDEOGRAPH - 0xBDFD: 0x70EC, //CJK UNIFIED IDEOGRAPH - 0xBDFE: 0x6D78, //CJK UNIFIED IDEOGRAPH - 0xBE40: 0x7D99, //CJK UNIFIED IDEOGRAPH - 0xBE41: 0x7D9A, //CJK UNIFIED IDEOGRAPH - 0xBE42: 0x7D9B, //CJK UNIFIED IDEOGRAPH - 0xBE43: 0x7D9C, //CJK UNIFIED IDEOGRAPH - 0xBE44: 0x7D9D, //CJK UNIFIED IDEOGRAPH - 0xBE45: 0x7D9E, //CJK UNIFIED IDEOGRAPH - 0xBE46: 0x7D9F, //CJK UNIFIED IDEOGRAPH - 0xBE47: 0x7DA0, //CJK UNIFIED IDEOGRAPH - 0xBE48: 0x7DA1, //CJK UNIFIED IDEOGRAPH - 0xBE49: 0x7DA2, //CJK UNIFIED IDEOGRAPH - 0xBE4A: 0x7DA3, //CJK UNIFIED IDEOGRAPH - 0xBE4B: 0x7DA4, //CJK UNIFIED IDEOGRAPH - 0xBE4C: 0x7DA5, //CJK UNIFIED IDEOGRAPH - 0xBE4D: 0x7DA7, //CJK UNIFIED IDEOGRAPH - 0xBE4E: 0x7DA8, //CJK UNIFIED IDEOGRAPH - 0xBE4F: 0x7DA9, //CJK UNIFIED IDEOGRAPH - 0xBE50: 0x7DAA, //CJK UNIFIED IDEOGRAPH - 0xBE51: 0x7DAB, //CJK UNIFIED IDEOGRAPH - 0xBE52: 0x7DAC, //CJK UNIFIED IDEOGRAPH - 0xBE53: 0x7DAD, //CJK UNIFIED IDEOGRAPH - 0xBE54: 0x7DAF, //CJK UNIFIED IDEOGRAPH - 0xBE55: 0x7DB0, //CJK UNIFIED IDEOGRAPH - 0xBE56: 0x7DB1, //CJK UNIFIED IDEOGRAPH - 0xBE57: 0x7DB2, //CJK UNIFIED IDEOGRAPH - 0xBE58: 0x7DB3, //CJK UNIFIED IDEOGRAPH - 0xBE59: 0x7DB4, //CJK UNIFIED IDEOGRAPH - 0xBE5A: 0x7DB5, //CJK UNIFIED IDEOGRAPH - 0xBE5B: 0x7DB6, //CJK UNIFIED IDEOGRAPH - 0xBE5C: 0x7DB7, //CJK UNIFIED IDEOGRAPH - 0xBE5D: 0x7DB8, //CJK UNIFIED IDEOGRAPH - 0xBE5E: 0x7DB9, //CJK UNIFIED IDEOGRAPH - 0xBE5F: 0x7DBA, //CJK UNIFIED IDEOGRAPH - 0xBE60: 0x7DBB, //CJK UNIFIED IDEOGRAPH - 0xBE61: 0x7DBC, //CJK UNIFIED IDEOGRAPH - 0xBE62: 0x7DBD, //CJK UNIFIED IDEOGRAPH - 0xBE63: 0x7DBE, //CJK UNIFIED IDEOGRAPH - 0xBE64: 0x7DBF, //CJK UNIFIED IDEOGRAPH - 0xBE65: 0x7DC0, //CJK UNIFIED IDEOGRAPH - 0xBE66: 0x7DC1, //CJK UNIFIED IDEOGRAPH - 0xBE67: 0x7DC2, //CJK UNIFIED IDEOGRAPH - 0xBE68: 0x7DC3, //CJK UNIFIED IDEOGRAPH - 0xBE69: 0x7DC4, //CJK UNIFIED IDEOGRAPH - 0xBE6A: 0x7DC5, //CJK UNIFIED IDEOGRAPH - 0xBE6B: 0x7DC6, //CJK UNIFIED IDEOGRAPH - 0xBE6C: 0x7DC7, //CJK UNIFIED IDEOGRAPH - 0xBE6D: 0x7DC8, //CJK UNIFIED IDEOGRAPH - 0xBE6E: 0x7DC9, //CJK UNIFIED IDEOGRAPH - 0xBE6F: 0x7DCA, //CJK UNIFIED IDEOGRAPH - 0xBE70: 0x7DCB, //CJK UNIFIED IDEOGRAPH - 0xBE71: 0x7DCC, //CJK UNIFIED IDEOGRAPH - 0xBE72: 0x7DCD, //CJK UNIFIED IDEOGRAPH - 0xBE73: 0x7DCE, //CJK UNIFIED IDEOGRAPH - 0xBE74: 0x7DCF, //CJK UNIFIED IDEOGRAPH - 0xBE75: 0x7DD0, //CJK UNIFIED IDEOGRAPH - 0xBE76: 0x7DD1, //CJK UNIFIED IDEOGRAPH - 0xBE77: 0x7DD2, //CJK UNIFIED IDEOGRAPH - 0xBE78: 0x7DD3, //CJK UNIFIED IDEOGRAPH - 0xBE79: 0x7DD4, //CJK UNIFIED IDEOGRAPH - 0xBE7A: 0x7DD5, //CJK UNIFIED IDEOGRAPH - 0xBE7B: 0x7DD6, //CJK UNIFIED IDEOGRAPH - 0xBE7C: 0x7DD7, //CJK UNIFIED IDEOGRAPH - 0xBE7D: 0x7DD8, //CJK UNIFIED IDEOGRAPH - 0xBE7E: 0x7DD9, //CJK UNIFIED IDEOGRAPH - 0xBE80: 0x7DDA, //CJK UNIFIED IDEOGRAPH - 0xBE81: 0x7DDB, //CJK UNIFIED IDEOGRAPH - 0xBE82: 0x7DDC, //CJK UNIFIED IDEOGRAPH - 0xBE83: 0x7DDD, //CJK UNIFIED IDEOGRAPH - 0xBE84: 0x7DDE, //CJK UNIFIED IDEOGRAPH - 0xBE85: 0x7DDF, //CJK UNIFIED IDEOGRAPH - 0xBE86: 0x7DE0, //CJK UNIFIED IDEOGRAPH - 0xBE87: 0x7DE1, //CJK UNIFIED IDEOGRAPH - 0xBE88: 0x7DE2, //CJK UNIFIED IDEOGRAPH - 0xBE89: 0x7DE3, //CJK UNIFIED IDEOGRAPH - 0xBE8A: 0x7DE4, //CJK UNIFIED IDEOGRAPH - 0xBE8B: 0x7DE5, //CJK UNIFIED IDEOGRAPH - 0xBE8C: 0x7DE6, //CJK UNIFIED IDEOGRAPH - 0xBE8D: 0x7DE7, //CJK UNIFIED IDEOGRAPH - 0xBE8E: 0x7DE8, //CJK UNIFIED IDEOGRAPH - 0xBE8F: 0x7DE9, //CJK UNIFIED IDEOGRAPH - 0xBE90: 0x7DEA, //CJK UNIFIED IDEOGRAPH - 0xBE91: 0x7DEB, //CJK UNIFIED IDEOGRAPH - 0xBE92: 0x7DEC, //CJK UNIFIED IDEOGRAPH - 0xBE93: 0x7DED, //CJK UNIFIED IDEOGRAPH - 0xBE94: 0x7DEE, //CJK UNIFIED IDEOGRAPH - 0xBE95: 0x7DEF, //CJK UNIFIED IDEOGRAPH - 0xBE96: 0x7DF0, //CJK UNIFIED IDEOGRAPH - 0xBE97: 0x7DF1, //CJK UNIFIED IDEOGRAPH - 0xBE98: 0x7DF2, //CJK UNIFIED IDEOGRAPH - 0xBE99: 0x7DF3, //CJK UNIFIED IDEOGRAPH - 0xBE9A: 0x7DF4, //CJK UNIFIED IDEOGRAPH - 0xBE9B: 0x7DF5, //CJK UNIFIED IDEOGRAPH - 0xBE9C: 0x7DF6, //CJK UNIFIED IDEOGRAPH - 0xBE9D: 0x7DF7, //CJK UNIFIED IDEOGRAPH - 0xBE9E: 0x7DF8, //CJK UNIFIED IDEOGRAPH - 0xBE9F: 0x7DF9, //CJK UNIFIED IDEOGRAPH - 0xBEA0: 0x7DFA, //CJK UNIFIED IDEOGRAPH - 0xBEA1: 0x5C3D, //CJK UNIFIED IDEOGRAPH - 0xBEA2: 0x52B2, //CJK UNIFIED IDEOGRAPH - 0xBEA3: 0x8346, //CJK UNIFIED IDEOGRAPH - 0xBEA4: 0x5162, //CJK UNIFIED IDEOGRAPH - 0xBEA5: 0x830E, //CJK UNIFIED IDEOGRAPH - 0xBEA6: 0x775B, //CJK UNIFIED IDEOGRAPH - 0xBEA7: 0x6676, //CJK UNIFIED IDEOGRAPH - 0xBEA8: 0x9CB8, //CJK UNIFIED IDEOGRAPH - 0xBEA9: 0x4EAC, //CJK UNIFIED IDEOGRAPH - 0xBEAA: 0x60CA, //CJK UNIFIED IDEOGRAPH - 0xBEAB: 0x7CBE, //CJK UNIFIED IDEOGRAPH - 0xBEAC: 0x7CB3, //CJK UNIFIED IDEOGRAPH - 0xBEAD: 0x7ECF, //CJK UNIFIED IDEOGRAPH - 0xBEAE: 0x4E95, //CJK UNIFIED IDEOGRAPH - 0xBEAF: 0x8B66, //CJK UNIFIED IDEOGRAPH - 0xBEB0: 0x666F, //CJK UNIFIED IDEOGRAPH - 0xBEB1: 0x9888, //CJK UNIFIED IDEOGRAPH - 0xBEB2: 0x9759, //CJK UNIFIED IDEOGRAPH - 0xBEB3: 0x5883, //CJK UNIFIED IDEOGRAPH - 0xBEB4: 0x656C, //CJK UNIFIED IDEOGRAPH - 0xBEB5: 0x955C, //CJK UNIFIED IDEOGRAPH - 0xBEB6: 0x5F84, //CJK UNIFIED IDEOGRAPH - 0xBEB7: 0x75C9, //CJK UNIFIED IDEOGRAPH - 0xBEB8: 0x9756, //CJK UNIFIED IDEOGRAPH - 0xBEB9: 0x7ADF, //CJK UNIFIED IDEOGRAPH - 0xBEBA: 0x7ADE, //CJK UNIFIED IDEOGRAPH - 0xBEBB: 0x51C0, //CJK UNIFIED IDEOGRAPH - 0xBEBC: 0x70AF, //CJK UNIFIED IDEOGRAPH - 0xBEBD: 0x7A98, //CJK UNIFIED IDEOGRAPH - 0xBEBE: 0x63EA, //CJK UNIFIED IDEOGRAPH - 0xBEBF: 0x7A76, //CJK UNIFIED IDEOGRAPH - 0xBEC0: 0x7EA0, //CJK UNIFIED IDEOGRAPH - 0xBEC1: 0x7396, //CJK UNIFIED IDEOGRAPH - 0xBEC2: 0x97ED, //CJK UNIFIED IDEOGRAPH - 0xBEC3: 0x4E45, //CJK UNIFIED IDEOGRAPH - 0xBEC4: 0x7078, //CJK UNIFIED IDEOGRAPH - 0xBEC5: 0x4E5D, //CJK UNIFIED IDEOGRAPH - 0xBEC6: 0x9152, //CJK UNIFIED IDEOGRAPH - 0xBEC7: 0x53A9, //CJK UNIFIED IDEOGRAPH - 0xBEC8: 0x6551, //CJK UNIFIED IDEOGRAPH - 0xBEC9: 0x65E7, //CJK UNIFIED IDEOGRAPH - 0xBECA: 0x81FC, //CJK UNIFIED IDEOGRAPH - 0xBECB: 0x8205, //CJK UNIFIED IDEOGRAPH - 0xBECC: 0x548E, //CJK UNIFIED IDEOGRAPH - 0xBECD: 0x5C31, //CJK UNIFIED IDEOGRAPH - 0xBECE: 0x759A, //CJK UNIFIED IDEOGRAPH - 0xBECF: 0x97A0, //CJK UNIFIED IDEOGRAPH - 0xBED0: 0x62D8, //CJK UNIFIED IDEOGRAPH - 0xBED1: 0x72D9, //CJK UNIFIED IDEOGRAPH - 0xBED2: 0x75BD, //CJK UNIFIED IDEOGRAPH - 0xBED3: 0x5C45, //CJK UNIFIED IDEOGRAPH - 0xBED4: 0x9A79, //CJK UNIFIED IDEOGRAPH - 0xBED5: 0x83CA, //CJK UNIFIED IDEOGRAPH - 0xBED6: 0x5C40, //CJK UNIFIED IDEOGRAPH - 0xBED7: 0x5480, //CJK UNIFIED IDEOGRAPH - 0xBED8: 0x77E9, //CJK UNIFIED IDEOGRAPH - 0xBED9: 0x4E3E, //CJK UNIFIED IDEOGRAPH - 0xBEDA: 0x6CAE, //CJK UNIFIED IDEOGRAPH - 0xBEDB: 0x805A, //CJK UNIFIED IDEOGRAPH - 0xBEDC: 0x62D2, //CJK UNIFIED IDEOGRAPH - 0xBEDD: 0x636E, //CJK UNIFIED IDEOGRAPH - 0xBEDE: 0x5DE8, //CJK UNIFIED IDEOGRAPH - 0xBEDF: 0x5177, //CJK UNIFIED IDEOGRAPH - 0xBEE0: 0x8DDD, //CJK UNIFIED IDEOGRAPH - 0xBEE1: 0x8E1E, //CJK UNIFIED IDEOGRAPH - 0xBEE2: 0x952F, //CJK UNIFIED IDEOGRAPH - 0xBEE3: 0x4FF1, //CJK UNIFIED IDEOGRAPH - 0xBEE4: 0x53E5, //CJK UNIFIED IDEOGRAPH - 0xBEE5: 0x60E7, //CJK UNIFIED IDEOGRAPH - 0xBEE6: 0x70AC, //CJK UNIFIED IDEOGRAPH - 0xBEE7: 0x5267, //CJK UNIFIED IDEOGRAPH - 0xBEE8: 0x6350, //CJK UNIFIED IDEOGRAPH - 0xBEE9: 0x9E43, //CJK UNIFIED IDEOGRAPH - 0xBEEA: 0x5A1F, //CJK UNIFIED IDEOGRAPH - 0xBEEB: 0x5026, //CJK UNIFIED IDEOGRAPH - 0xBEEC: 0x7737, //CJK UNIFIED IDEOGRAPH - 0xBEED: 0x5377, //CJK UNIFIED IDEOGRAPH - 0xBEEE: 0x7EE2, //CJK UNIFIED IDEOGRAPH - 0xBEEF: 0x6485, //CJK UNIFIED IDEOGRAPH - 0xBEF0: 0x652B, //CJK UNIFIED IDEOGRAPH - 0xBEF1: 0x6289, //CJK UNIFIED IDEOGRAPH - 0xBEF2: 0x6398, //CJK UNIFIED IDEOGRAPH - 0xBEF3: 0x5014, //CJK UNIFIED IDEOGRAPH - 0xBEF4: 0x7235, //CJK UNIFIED IDEOGRAPH - 0xBEF5: 0x89C9, //CJK UNIFIED IDEOGRAPH - 0xBEF6: 0x51B3, //CJK UNIFIED IDEOGRAPH - 0xBEF7: 0x8BC0, //CJK UNIFIED IDEOGRAPH - 0xBEF8: 0x7EDD, //CJK UNIFIED IDEOGRAPH - 0xBEF9: 0x5747, //CJK UNIFIED IDEOGRAPH - 0xBEFA: 0x83CC, //CJK UNIFIED IDEOGRAPH - 0xBEFB: 0x94A7, //CJK UNIFIED IDEOGRAPH - 0xBEFC: 0x519B, //CJK UNIFIED IDEOGRAPH - 0xBEFD: 0x541B, //CJK UNIFIED IDEOGRAPH - 0xBEFE: 0x5CFB, //CJK UNIFIED IDEOGRAPH - 0xBF40: 0x7DFB, //CJK UNIFIED IDEOGRAPH - 0xBF41: 0x7DFC, //CJK UNIFIED IDEOGRAPH - 0xBF42: 0x7DFD, //CJK UNIFIED IDEOGRAPH - 0xBF43: 0x7DFE, //CJK UNIFIED IDEOGRAPH - 0xBF44: 0x7DFF, //CJK UNIFIED IDEOGRAPH - 0xBF45: 0x7E00, //CJK UNIFIED IDEOGRAPH - 0xBF46: 0x7E01, //CJK UNIFIED IDEOGRAPH - 0xBF47: 0x7E02, //CJK UNIFIED IDEOGRAPH - 0xBF48: 0x7E03, //CJK UNIFIED IDEOGRAPH - 0xBF49: 0x7E04, //CJK UNIFIED IDEOGRAPH - 0xBF4A: 0x7E05, //CJK UNIFIED IDEOGRAPH - 0xBF4B: 0x7E06, //CJK UNIFIED IDEOGRAPH - 0xBF4C: 0x7E07, //CJK UNIFIED IDEOGRAPH - 0xBF4D: 0x7E08, //CJK UNIFIED IDEOGRAPH - 0xBF4E: 0x7E09, //CJK UNIFIED IDEOGRAPH - 0xBF4F: 0x7E0A, //CJK UNIFIED IDEOGRAPH - 0xBF50: 0x7E0B, //CJK UNIFIED IDEOGRAPH - 0xBF51: 0x7E0C, //CJK UNIFIED IDEOGRAPH - 0xBF52: 0x7E0D, //CJK UNIFIED IDEOGRAPH - 0xBF53: 0x7E0E, //CJK UNIFIED IDEOGRAPH - 0xBF54: 0x7E0F, //CJK UNIFIED IDEOGRAPH - 0xBF55: 0x7E10, //CJK UNIFIED IDEOGRAPH - 0xBF56: 0x7E11, //CJK UNIFIED IDEOGRAPH - 0xBF57: 0x7E12, //CJK UNIFIED IDEOGRAPH - 0xBF58: 0x7E13, //CJK UNIFIED IDEOGRAPH - 0xBF59: 0x7E14, //CJK UNIFIED IDEOGRAPH - 0xBF5A: 0x7E15, //CJK UNIFIED IDEOGRAPH - 0xBF5B: 0x7E16, //CJK UNIFIED IDEOGRAPH - 0xBF5C: 0x7E17, //CJK UNIFIED IDEOGRAPH - 0xBF5D: 0x7E18, //CJK UNIFIED IDEOGRAPH - 0xBF5E: 0x7E19, //CJK UNIFIED IDEOGRAPH - 0xBF5F: 0x7E1A, //CJK UNIFIED IDEOGRAPH - 0xBF60: 0x7E1B, //CJK UNIFIED IDEOGRAPH - 0xBF61: 0x7E1C, //CJK UNIFIED IDEOGRAPH - 0xBF62: 0x7E1D, //CJK UNIFIED IDEOGRAPH - 0xBF63: 0x7E1E, //CJK UNIFIED IDEOGRAPH - 0xBF64: 0x7E1F, //CJK UNIFIED IDEOGRAPH - 0xBF65: 0x7E20, //CJK UNIFIED IDEOGRAPH - 0xBF66: 0x7E21, //CJK UNIFIED IDEOGRAPH - 0xBF67: 0x7E22, //CJK UNIFIED IDEOGRAPH - 0xBF68: 0x7E23, //CJK UNIFIED IDEOGRAPH - 0xBF69: 0x7E24, //CJK UNIFIED IDEOGRAPH - 0xBF6A: 0x7E25, //CJK UNIFIED IDEOGRAPH - 0xBF6B: 0x7E26, //CJK UNIFIED IDEOGRAPH - 0xBF6C: 0x7E27, //CJK UNIFIED IDEOGRAPH - 0xBF6D: 0x7E28, //CJK UNIFIED IDEOGRAPH - 0xBF6E: 0x7E29, //CJK UNIFIED IDEOGRAPH - 0xBF6F: 0x7E2A, //CJK UNIFIED IDEOGRAPH - 0xBF70: 0x7E2B, //CJK UNIFIED IDEOGRAPH - 0xBF71: 0x7E2C, //CJK UNIFIED IDEOGRAPH - 0xBF72: 0x7E2D, //CJK UNIFIED IDEOGRAPH - 0xBF73: 0x7E2E, //CJK UNIFIED IDEOGRAPH - 0xBF74: 0x7E2F, //CJK UNIFIED IDEOGRAPH - 0xBF75: 0x7E30, //CJK UNIFIED IDEOGRAPH - 0xBF76: 0x7E31, //CJK UNIFIED IDEOGRAPH - 0xBF77: 0x7E32, //CJK UNIFIED IDEOGRAPH - 0xBF78: 0x7E33, //CJK UNIFIED IDEOGRAPH - 0xBF79: 0x7E34, //CJK UNIFIED IDEOGRAPH - 0xBF7A: 0x7E35, //CJK UNIFIED IDEOGRAPH - 0xBF7B: 0x7E36, //CJK UNIFIED IDEOGRAPH - 0xBF7C: 0x7E37, //CJK UNIFIED IDEOGRAPH - 0xBF7D: 0x7E38, //CJK UNIFIED IDEOGRAPH - 0xBF7E: 0x7E39, //CJK UNIFIED IDEOGRAPH - 0xBF80: 0x7E3A, //CJK UNIFIED IDEOGRAPH - 0xBF81: 0x7E3C, //CJK UNIFIED IDEOGRAPH - 0xBF82: 0x7E3D, //CJK UNIFIED IDEOGRAPH - 0xBF83: 0x7E3E, //CJK UNIFIED IDEOGRAPH - 0xBF84: 0x7E3F, //CJK UNIFIED IDEOGRAPH - 0xBF85: 0x7E40, //CJK UNIFIED IDEOGRAPH - 0xBF86: 0x7E42, //CJK UNIFIED IDEOGRAPH - 0xBF87: 0x7E43, //CJK UNIFIED IDEOGRAPH - 0xBF88: 0x7E44, //CJK UNIFIED IDEOGRAPH - 0xBF89: 0x7E45, //CJK UNIFIED IDEOGRAPH - 0xBF8A: 0x7E46, //CJK UNIFIED IDEOGRAPH - 0xBF8B: 0x7E48, //CJK UNIFIED IDEOGRAPH - 0xBF8C: 0x7E49, //CJK UNIFIED IDEOGRAPH - 0xBF8D: 0x7E4A, //CJK UNIFIED IDEOGRAPH - 0xBF8E: 0x7E4B, //CJK UNIFIED IDEOGRAPH - 0xBF8F: 0x7E4C, //CJK UNIFIED IDEOGRAPH - 0xBF90: 0x7E4D, //CJK UNIFIED IDEOGRAPH - 0xBF91: 0x7E4E, //CJK UNIFIED IDEOGRAPH - 0xBF92: 0x7E4F, //CJK UNIFIED IDEOGRAPH - 0xBF93: 0x7E50, //CJK UNIFIED IDEOGRAPH - 0xBF94: 0x7E51, //CJK UNIFIED IDEOGRAPH - 0xBF95: 0x7E52, //CJK UNIFIED IDEOGRAPH - 0xBF96: 0x7E53, //CJK UNIFIED IDEOGRAPH - 0xBF97: 0x7E54, //CJK UNIFIED IDEOGRAPH - 0xBF98: 0x7E55, //CJK UNIFIED IDEOGRAPH - 0xBF99: 0x7E56, //CJK UNIFIED IDEOGRAPH - 0xBF9A: 0x7E57, //CJK UNIFIED IDEOGRAPH - 0xBF9B: 0x7E58, //CJK UNIFIED IDEOGRAPH - 0xBF9C: 0x7E59, //CJK UNIFIED IDEOGRAPH - 0xBF9D: 0x7E5A, //CJK UNIFIED IDEOGRAPH - 0xBF9E: 0x7E5B, //CJK UNIFIED IDEOGRAPH - 0xBF9F: 0x7E5C, //CJK UNIFIED IDEOGRAPH - 0xBFA0: 0x7E5D, //CJK UNIFIED IDEOGRAPH - 0xBFA1: 0x4FCA, //CJK UNIFIED IDEOGRAPH - 0xBFA2: 0x7AE3, //CJK UNIFIED IDEOGRAPH - 0xBFA3: 0x6D5A, //CJK UNIFIED IDEOGRAPH - 0xBFA4: 0x90E1, //CJK UNIFIED IDEOGRAPH - 0xBFA5: 0x9A8F, //CJK UNIFIED IDEOGRAPH - 0xBFA6: 0x5580, //CJK UNIFIED IDEOGRAPH - 0xBFA7: 0x5496, //CJK UNIFIED IDEOGRAPH - 0xBFA8: 0x5361, //CJK UNIFIED IDEOGRAPH - 0xBFA9: 0x54AF, //CJK UNIFIED IDEOGRAPH - 0xBFAA: 0x5F00, //CJK UNIFIED IDEOGRAPH - 0xBFAB: 0x63E9, //CJK UNIFIED IDEOGRAPH - 0xBFAC: 0x6977, //CJK UNIFIED IDEOGRAPH - 0xBFAD: 0x51EF, //CJK UNIFIED IDEOGRAPH - 0xBFAE: 0x6168, //CJK UNIFIED IDEOGRAPH - 0xBFAF: 0x520A, //CJK UNIFIED IDEOGRAPH - 0xBFB0: 0x582A, //CJK UNIFIED IDEOGRAPH - 0xBFB1: 0x52D8, //CJK UNIFIED IDEOGRAPH - 0xBFB2: 0x574E, //CJK UNIFIED IDEOGRAPH - 0xBFB3: 0x780D, //CJK UNIFIED IDEOGRAPH - 0xBFB4: 0x770B, //CJK UNIFIED IDEOGRAPH - 0xBFB5: 0x5EB7, //CJK UNIFIED IDEOGRAPH - 0xBFB6: 0x6177, //CJK UNIFIED IDEOGRAPH - 0xBFB7: 0x7CE0, //CJK UNIFIED IDEOGRAPH - 0xBFB8: 0x625B, //CJK UNIFIED IDEOGRAPH - 0xBFB9: 0x6297, //CJK UNIFIED IDEOGRAPH - 0xBFBA: 0x4EA2, //CJK UNIFIED IDEOGRAPH - 0xBFBB: 0x7095, //CJK UNIFIED IDEOGRAPH - 0xBFBC: 0x8003, //CJK UNIFIED IDEOGRAPH - 0xBFBD: 0x62F7, //CJK UNIFIED IDEOGRAPH - 0xBFBE: 0x70E4, //CJK UNIFIED IDEOGRAPH - 0xBFBF: 0x9760, //CJK UNIFIED IDEOGRAPH - 0xBFC0: 0x5777, //CJK UNIFIED IDEOGRAPH - 0xBFC1: 0x82DB, //CJK UNIFIED IDEOGRAPH - 0xBFC2: 0x67EF, //CJK UNIFIED IDEOGRAPH - 0xBFC3: 0x68F5, //CJK UNIFIED IDEOGRAPH - 0xBFC4: 0x78D5, //CJK UNIFIED IDEOGRAPH - 0xBFC5: 0x9897, //CJK UNIFIED IDEOGRAPH - 0xBFC6: 0x79D1, //CJK UNIFIED IDEOGRAPH - 0xBFC7: 0x58F3, //CJK UNIFIED IDEOGRAPH - 0xBFC8: 0x54B3, //CJK UNIFIED IDEOGRAPH - 0xBFC9: 0x53EF, //CJK UNIFIED IDEOGRAPH - 0xBFCA: 0x6E34, //CJK UNIFIED IDEOGRAPH - 0xBFCB: 0x514B, //CJK UNIFIED IDEOGRAPH - 0xBFCC: 0x523B, //CJK UNIFIED IDEOGRAPH - 0xBFCD: 0x5BA2, //CJK UNIFIED IDEOGRAPH - 0xBFCE: 0x8BFE, //CJK UNIFIED IDEOGRAPH - 0xBFCF: 0x80AF, //CJK UNIFIED IDEOGRAPH - 0xBFD0: 0x5543, //CJK UNIFIED IDEOGRAPH - 0xBFD1: 0x57A6, //CJK UNIFIED IDEOGRAPH - 0xBFD2: 0x6073, //CJK UNIFIED IDEOGRAPH - 0xBFD3: 0x5751, //CJK UNIFIED IDEOGRAPH - 0xBFD4: 0x542D, //CJK UNIFIED IDEOGRAPH - 0xBFD5: 0x7A7A, //CJK UNIFIED IDEOGRAPH - 0xBFD6: 0x6050, //CJK UNIFIED IDEOGRAPH - 0xBFD7: 0x5B54, //CJK UNIFIED IDEOGRAPH - 0xBFD8: 0x63A7, //CJK UNIFIED IDEOGRAPH - 0xBFD9: 0x62A0, //CJK UNIFIED IDEOGRAPH - 0xBFDA: 0x53E3, //CJK UNIFIED IDEOGRAPH - 0xBFDB: 0x6263, //CJK UNIFIED IDEOGRAPH - 0xBFDC: 0x5BC7, //CJK UNIFIED IDEOGRAPH - 0xBFDD: 0x67AF, //CJK UNIFIED IDEOGRAPH - 0xBFDE: 0x54ED, //CJK UNIFIED IDEOGRAPH - 0xBFDF: 0x7A9F, //CJK UNIFIED IDEOGRAPH - 0xBFE0: 0x82E6, //CJK UNIFIED IDEOGRAPH - 0xBFE1: 0x9177, //CJK UNIFIED IDEOGRAPH - 0xBFE2: 0x5E93, //CJK UNIFIED IDEOGRAPH - 0xBFE3: 0x88E4, //CJK UNIFIED IDEOGRAPH - 0xBFE4: 0x5938, //CJK UNIFIED IDEOGRAPH - 0xBFE5: 0x57AE, //CJK UNIFIED IDEOGRAPH - 0xBFE6: 0x630E, //CJK UNIFIED IDEOGRAPH - 0xBFE7: 0x8DE8, //CJK UNIFIED IDEOGRAPH - 0xBFE8: 0x80EF, //CJK UNIFIED IDEOGRAPH - 0xBFE9: 0x5757, //CJK UNIFIED IDEOGRAPH - 0xBFEA: 0x7B77, //CJK UNIFIED IDEOGRAPH - 0xBFEB: 0x4FA9, //CJK UNIFIED IDEOGRAPH - 0xBFEC: 0x5FEB, //CJK UNIFIED IDEOGRAPH - 0xBFED: 0x5BBD, //CJK UNIFIED IDEOGRAPH - 0xBFEE: 0x6B3E, //CJK UNIFIED IDEOGRAPH - 0xBFEF: 0x5321, //CJK UNIFIED IDEOGRAPH - 0xBFF0: 0x7B50, //CJK UNIFIED IDEOGRAPH - 0xBFF1: 0x72C2, //CJK UNIFIED IDEOGRAPH - 0xBFF2: 0x6846, //CJK UNIFIED IDEOGRAPH - 0xBFF3: 0x77FF, //CJK UNIFIED IDEOGRAPH - 0xBFF4: 0x7736, //CJK UNIFIED IDEOGRAPH - 0xBFF5: 0x65F7, //CJK UNIFIED IDEOGRAPH - 0xBFF6: 0x51B5, //CJK UNIFIED IDEOGRAPH - 0xBFF7: 0x4E8F, //CJK UNIFIED IDEOGRAPH - 0xBFF8: 0x76D4, //CJK UNIFIED IDEOGRAPH - 0xBFF9: 0x5CBF, //CJK UNIFIED IDEOGRAPH - 0xBFFA: 0x7AA5, //CJK UNIFIED IDEOGRAPH - 0xBFFB: 0x8475, //CJK UNIFIED IDEOGRAPH - 0xBFFC: 0x594E, //CJK UNIFIED IDEOGRAPH - 0xBFFD: 0x9B41, //CJK UNIFIED IDEOGRAPH - 0xBFFE: 0x5080, //CJK UNIFIED IDEOGRAPH - 0xC040: 0x7E5E, //CJK UNIFIED IDEOGRAPH - 0xC041: 0x7E5F, //CJK UNIFIED IDEOGRAPH - 0xC042: 0x7E60, //CJK UNIFIED IDEOGRAPH - 0xC043: 0x7E61, //CJK UNIFIED IDEOGRAPH - 0xC044: 0x7E62, //CJK UNIFIED IDEOGRAPH - 0xC045: 0x7E63, //CJK UNIFIED IDEOGRAPH - 0xC046: 0x7E64, //CJK UNIFIED IDEOGRAPH - 0xC047: 0x7E65, //CJK UNIFIED IDEOGRAPH - 0xC048: 0x7E66, //CJK UNIFIED IDEOGRAPH - 0xC049: 0x7E67, //CJK UNIFIED IDEOGRAPH - 0xC04A: 0x7E68, //CJK UNIFIED IDEOGRAPH - 0xC04B: 0x7E69, //CJK UNIFIED IDEOGRAPH - 0xC04C: 0x7E6A, //CJK UNIFIED IDEOGRAPH - 0xC04D: 0x7E6B, //CJK UNIFIED IDEOGRAPH - 0xC04E: 0x7E6C, //CJK UNIFIED IDEOGRAPH - 0xC04F: 0x7E6D, //CJK UNIFIED IDEOGRAPH - 0xC050: 0x7E6E, //CJK UNIFIED IDEOGRAPH - 0xC051: 0x7E6F, //CJK UNIFIED IDEOGRAPH - 0xC052: 0x7E70, //CJK UNIFIED IDEOGRAPH - 0xC053: 0x7E71, //CJK UNIFIED IDEOGRAPH - 0xC054: 0x7E72, //CJK UNIFIED IDEOGRAPH - 0xC055: 0x7E73, //CJK UNIFIED IDEOGRAPH - 0xC056: 0x7E74, //CJK UNIFIED IDEOGRAPH - 0xC057: 0x7E75, //CJK UNIFIED IDEOGRAPH - 0xC058: 0x7E76, //CJK UNIFIED IDEOGRAPH - 0xC059: 0x7E77, //CJK UNIFIED IDEOGRAPH - 0xC05A: 0x7E78, //CJK UNIFIED IDEOGRAPH - 0xC05B: 0x7E79, //CJK UNIFIED IDEOGRAPH - 0xC05C: 0x7E7A, //CJK UNIFIED IDEOGRAPH - 0xC05D: 0x7E7B, //CJK UNIFIED IDEOGRAPH - 0xC05E: 0x7E7C, //CJK UNIFIED IDEOGRAPH - 0xC05F: 0x7E7D, //CJK UNIFIED IDEOGRAPH - 0xC060: 0x7E7E, //CJK UNIFIED IDEOGRAPH - 0xC061: 0x7E7F, //CJK UNIFIED IDEOGRAPH - 0xC062: 0x7E80, //CJK UNIFIED IDEOGRAPH - 0xC063: 0x7E81, //CJK UNIFIED IDEOGRAPH - 0xC064: 0x7E83, //CJK UNIFIED IDEOGRAPH - 0xC065: 0x7E84, //CJK UNIFIED IDEOGRAPH - 0xC066: 0x7E85, //CJK UNIFIED IDEOGRAPH - 0xC067: 0x7E86, //CJK UNIFIED IDEOGRAPH - 0xC068: 0x7E87, //CJK UNIFIED IDEOGRAPH - 0xC069: 0x7E88, //CJK UNIFIED IDEOGRAPH - 0xC06A: 0x7E89, //CJK UNIFIED IDEOGRAPH - 0xC06B: 0x7E8A, //CJK UNIFIED IDEOGRAPH - 0xC06C: 0x7E8B, //CJK UNIFIED IDEOGRAPH - 0xC06D: 0x7E8C, //CJK UNIFIED IDEOGRAPH - 0xC06E: 0x7E8D, //CJK UNIFIED IDEOGRAPH - 0xC06F: 0x7E8E, //CJK UNIFIED IDEOGRAPH - 0xC070: 0x7E8F, //CJK UNIFIED IDEOGRAPH - 0xC071: 0x7E90, //CJK UNIFIED IDEOGRAPH - 0xC072: 0x7E91, //CJK UNIFIED IDEOGRAPH - 0xC073: 0x7E92, //CJK UNIFIED IDEOGRAPH - 0xC074: 0x7E93, //CJK UNIFIED IDEOGRAPH - 0xC075: 0x7E94, //CJK UNIFIED IDEOGRAPH - 0xC076: 0x7E95, //CJK UNIFIED IDEOGRAPH - 0xC077: 0x7E96, //CJK UNIFIED IDEOGRAPH - 0xC078: 0x7E97, //CJK UNIFIED IDEOGRAPH - 0xC079: 0x7E98, //CJK UNIFIED IDEOGRAPH - 0xC07A: 0x7E99, //CJK UNIFIED IDEOGRAPH - 0xC07B: 0x7E9A, //CJK UNIFIED IDEOGRAPH - 0xC07C: 0x7E9C, //CJK UNIFIED IDEOGRAPH - 0xC07D: 0x7E9D, //CJK UNIFIED IDEOGRAPH - 0xC07E: 0x7E9E, //CJK UNIFIED IDEOGRAPH - 0xC080: 0x7EAE, //CJK UNIFIED IDEOGRAPH - 0xC081: 0x7EB4, //CJK UNIFIED IDEOGRAPH - 0xC082: 0x7EBB, //CJK UNIFIED IDEOGRAPH - 0xC083: 0x7EBC, //CJK UNIFIED IDEOGRAPH - 0xC084: 0x7ED6, //CJK UNIFIED IDEOGRAPH - 0xC085: 0x7EE4, //CJK UNIFIED IDEOGRAPH - 0xC086: 0x7EEC, //CJK UNIFIED IDEOGRAPH - 0xC087: 0x7EF9, //CJK UNIFIED IDEOGRAPH - 0xC088: 0x7F0A, //CJK UNIFIED IDEOGRAPH - 0xC089: 0x7F10, //CJK UNIFIED IDEOGRAPH - 0xC08A: 0x7F1E, //CJK UNIFIED IDEOGRAPH - 0xC08B: 0x7F37, //CJK UNIFIED IDEOGRAPH - 0xC08C: 0x7F39, //CJK UNIFIED IDEOGRAPH - 0xC08D: 0x7F3B, //CJK UNIFIED IDEOGRAPH - 0xC08E: 0x7F3C, //CJK UNIFIED IDEOGRAPH - 0xC08F: 0x7F3D, //CJK UNIFIED IDEOGRAPH - 0xC090: 0x7F3E, //CJK UNIFIED IDEOGRAPH - 0xC091: 0x7F3F, //CJK UNIFIED IDEOGRAPH - 0xC092: 0x7F40, //CJK UNIFIED IDEOGRAPH - 0xC093: 0x7F41, //CJK UNIFIED IDEOGRAPH - 0xC094: 0x7F43, //CJK UNIFIED IDEOGRAPH - 0xC095: 0x7F46, //CJK UNIFIED IDEOGRAPH - 0xC096: 0x7F47, //CJK UNIFIED IDEOGRAPH - 0xC097: 0x7F48, //CJK UNIFIED IDEOGRAPH - 0xC098: 0x7F49, //CJK UNIFIED IDEOGRAPH - 0xC099: 0x7F4A, //CJK UNIFIED IDEOGRAPH - 0xC09A: 0x7F4B, //CJK UNIFIED IDEOGRAPH - 0xC09B: 0x7F4C, //CJK UNIFIED IDEOGRAPH - 0xC09C: 0x7F4D, //CJK UNIFIED IDEOGRAPH - 0xC09D: 0x7F4E, //CJK UNIFIED IDEOGRAPH - 0xC09E: 0x7F4F, //CJK UNIFIED IDEOGRAPH - 0xC09F: 0x7F52, //CJK UNIFIED IDEOGRAPH - 0xC0A0: 0x7F53, //CJK UNIFIED IDEOGRAPH - 0xC0A1: 0x9988, //CJK UNIFIED IDEOGRAPH - 0xC0A2: 0x6127, //CJK UNIFIED IDEOGRAPH - 0xC0A3: 0x6E83, //CJK UNIFIED IDEOGRAPH - 0xC0A4: 0x5764, //CJK UNIFIED IDEOGRAPH - 0xC0A5: 0x6606, //CJK UNIFIED IDEOGRAPH - 0xC0A6: 0x6346, //CJK UNIFIED IDEOGRAPH - 0xC0A7: 0x56F0, //CJK UNIFIED IDEOGRAPH - 0xC0A8: 0x62EC, //CJK UNIFIED IDEOGRAPH - 0xC0A9: 0x6269, //CJK UNIFIED IDEOGRAPH - 0xC0AA: 0x5ED3, //CJK UNIFIED IDEOGRAPH - 0xC0AB: 0x9614, //CJK UNIFIED IDEOGRAPH - 0xC0AC: 0x5783, //CJK UNIFIED IDEOGRAPH - 0xC0AD: 0x62C9, //CJK UNIFIED IDEOGRAPH - 0xC0AE: 0x5587, //CJK UNIFIED IDEOGRAPH - 0xC0AF: 0x8721, //CJK UNIFIED IDEOGRAPH - 0xC0B0: 0x814A, //CJK UNIFIED IDEOGRAPH - 0xC0B1: 0x8FA3, //CJK UNIFIED IDEOGRAPH - 0xC0B2: 0x5566, //CJK UNIFIED IDEOGRAPH - 0xC0B3: 0x83B1, //CJK UNIFIED IDEOGRAPH - 0xC0B4: 0x6765, //CJK UNIFIED IDEOGRAPH - 0xC0B5: 0x8D56, //CJK UNIFIED IDEOGRAPH - 0xC0B6: 0x84DD, //CJK UNIFIED IDEOGRAPH - 0xC0B7: 0x5A6A, //CJK UNIFIED IDEOGRAPH - 0xC0B8: 0x680F, //CJK UNIFIED IDEOGRAPH - 0xC0B9: 0x62E6, //CJK UNIFIED IDEOGRAPH - 0xC0BA: 0x7BEE, //CJK UNIFIED IDEOGRAPH - 0xC0BB: 0x9611, //CJK UNIFIED IDEOGRAPH - 0xC0BC: 0x5170, //CJK UNIFIED IDEOGRAPH - 0xC0BD: 0x6F9C, //CJK UNIFIED IDEOGRAPH - 0xC0BE: 0x8C30, //CJK UNIFIED IDEOGRAPH - 0xC0BF: 0x63FD, //CJK UNIFIED IDEOGRAPH - 0xC0C0: 0x89C8, //CJK UNIFIED IDEOGRAPH - 0xC0C1: 0x61D2, //CJK UNIFIED IDEOGRAPH - 0xC0C2: 0x7F06, //CJK UNIFIED IDEOGRAPH - 0xC0C3: 0x70C2, //CJK UNIFIED IDEOGRAPH - 0xC0C4: 0x6EE5, //CJK UNIFIED IDEOGRAPH - 0xC0C5: 0x7405, //CJK UNIFIED IDEOGRAPH - 0xC0C6: 0x6994, //CJK UNIFIED IDEOGRAPH - 0xC0C7: 0x72FC, //CJK UNIFIED IDEOGRAPH - 0xC0C8: 0x5ECA, //CJK UNIFIED IDEOGRAPH - 0xC0C9: 0x90CE, //CJK UNIFIED IDEOGRAPH - 0xC0CA: 0x6717, //CJK UNIFIED IDEOGRAPH - 0xC0CB: 0x6D6A, //CJK UNIFIED IDEOGRAPH - 0xC0CC: 0x635E, //CJK UNIFIED IDEOGRAPH - 0xC0CD: 0x52B3, //CJK UNIFIED IDEOGRAPH - 0xC0CE: 0x7262, //CJK UNIFIED IDEOGRAPH - 0xC0CF: 0x8001, //CJK UNIFIED IDEOGRAPH - 0xC0D0: 0x4F6C, //CJK UNIFIED IDEOGRAPH - 0xC0D1: 0x59E5, //CJK UNIFIED IDEOGRAPH - 0xC0D2: 0x916A, //CJK UNIFIED IDEOGRAPH - 0xC0D3: 0x70D9, //CJK UNIFIED IDEOGRAPH - 0xC0D4: 0x6D9D, //CJK UNIFIED IDEOGRAPH - 0xC0D5: 0x52D2, //CJK UNIFIED IDEOGRAPH - 0xC0D6: 0x4E50, //CJK UNIFIED IDEOGRAPH - 0xC0D7: 0x96F7, //CJK UNIFIED IDEOGRAPH - 0xC0D8: 0x956D, //CJK UNIFIED IDEOGRAPH - 0xC0D9: 0x857E, //CJK UNIFIED IDEOGRAPH - 0xC0DA: 0x78CA, //CJK UNIFIED IDEOGRAPH - 0xC0DB: 0x7D2F, //CJK UNIFIED IDEOGRAPH - 0xC0DC: 0x5121, //CJK UNIFIED IDEOGRAPH - 0xC0DD: 0x5792, //CJK UNIFIED IDEOGRAPH - 0xC0DE: 0x64C2, //CJK UNIFIED IDEOGRAPH - 0xC0DF: 0x808B, //CJK UNIFIED IDEOGRAPH - 0xC0E0: 0x7C7B, //CJK UNIFIED IDEOGRAPH - 0xC0E1: 0x6CEA, //CJK UNIFIED IDEOGRAPH - 0xC0E2: 0x68F1, //CJK UNIFIED IDEOGRAPH - 0xC0E3: 0x695E, //CJK UNIFIED IDEOGRAPH - 0xC0E4: 0x51B7, //CJK UNIFIED IDEOGRAPH - 0xC0E5: 0x5398, //CJK UNIFIED IDEOGRAPH - 0xC0E6: 0x68A8, //CJK UNIFIED IDEOGRAPH - 0xC0E7: 0x7281, //CJK UNIFIED IDEOGRAPH - 0xC0E8: 0x9ECE, //CJK UNIFIED IDEOGRAPH - 0xC0E9: 0x7BF1, //CJK UNIFIED IDEOGRAPH - 0xC0EA: 0x72F8, //CJK UNIFIED IDEOGRAPH - 0xC0EB: 0x79BB, //CJK UNIFIED IDEOGRAPH - 0xC0EC: 0x6F13, //CJK UNIFIED IDEOGRAPH - 0xC0ED: 0x7406, //CJK UNIFIED IDEOGRAPH - 0xC0EE: 0x674E, //CJK UNIFIED IDEOGRAPH - 0xC0EF: 0x91CC, //CJK UNIFIED IDEOGRAPH - 0xC0F0: 0x9CA4, //CJK UNIFIED IDEOGRAPH - 0xC0F1: 0x793C, //CJK UNIFIED IDEOGRAPH - 0xC0F2: 0x8389, //CJK UNIFIED IDEOGRAPH - 0xC0F3: 0x8354, //CJK UNIFIED IDEOGRAPH - 0xC0F4: 0x540F, //CJK UNIFIED IDEOGRAPH - 0xC0F5: 0x6817, //CJK UNIFIED IDEOGRAPH - 0xC0F6: 0x4E3D, //CJK UNIFIED IDEOGRAPH - 0xC0F7: 0x5389, //CJK UNIFIED IDEOGRAPH - 0xC0F8: 0x52B1, //CJK UNIFIED IDEOGRAPH - 0xC0F9: 0x783E, //CJK UNIFIED IDEOGRAPH - 0xC0FA: 0x5386, //CJK UNIFIED IDEOGRAPH - 0xC0FB: 0x5229, //CJK UNIFIED IDEOGRAPH - 0xC0FC: 0x5088, //CJK UNIFIED IDEOGRAPH - 0xC0FD: 0x4F8B, //CJK UNIFIED IDEOGRAPH - 0xC0FE: 0x4FD0, //CJK UNIFIED IDEOGRAPH - 0xC140: 0x7F56, //CJK UNIFIED IDEOGRAPH - 0xC141: 0x7F59, //CJK UNIFIED IDEOGRAPH - 0xC142: 0x7F5B, //CJK UNIFIED IDEOGRAPH - 0xC143: 0x7F5C, //CJK UNIFIED IDEOGRAPH - 0xC144: 0x7F5D, //CJK UNIFIED IDEOGRAPH - 0xC145: 0x7F5E, //CJK UNIFIED IDEOGRAPH - 0xC146: 0x7F60, //CJK UNIFIED IDEOGRAPH - 0xC147: 0x7F63, //CJK UNIFIED IDEOGRAPH - 0xC148: 0x7F64, //CJK UNIFIED IDEOGRAPH - 0xC149: 0x7F65, //CJK UNIFIED IDEOGRAPH - 0xC14A: 0x7F66, //CJK UNIFIED IDEOGRAPH - 0xC14B: 0x7F67, //CJK UNIFIED IDEOGRAPH - 0xC14C: 0x7F6B, //CJK UNIFIED IDEOGRAPH - 0xC14D: 0x7F6C, //CJK UNIFIED IDEOGRAPH - 0xC14E: 0x7F6D, //CJK UNIFIED IDEOGRAPH - 0xC14F: 0x7F6F, //CJK UNIFIED IDEOGRAPH - 0xC150: 0x7F70, //CJK UNIFIED IDEOGRAPH - 0xC151: 0x7F73, //CJK UNIFIED IDEOGRAPH - 0xC152: 0x7F75, //CJK UNIFIED IDEOGRAPH - 0xC153: 0x7F76, //CJK UNIFIED IDEOGRAPH - 0xC154: 0x7F77, //CJK UNIFIED IDEOGRAPH - 0xC155: 0x7F78, //CJK UNIFIED IDEOGRAPH - 0xC156: 0x7F7A, //CJK UNIFIED IDEOGRAPH - 0xC157: 0x7F7B, //CJK UNIFIED IDEOGRAPH - 0xC158: 0x7F7C, //CJK UNIFIED IDEOGRAPH - 0xC159: 0x7F7D, //CJK UNIFIED IDEOGRAPH - 0xC15A: 0x7F7F, //CJK UNIFIED IDEOGRAPH - 0xC15B: 0x7F80, //CJK UNIFIED IDEOGRAPH - 0xC15C: 0x7F82, //CJK UNIFIED IDEOGRAPH - 0xC15D: 0x7F83, //CJK UNIFIED IDEOGRAPH - 0xC15E: 0x7F84, //CJK UNIFIED IDEOGRAPH - 0xC15F: 0x7F85, //CJK UNIFIED IDEOGRAPH - 0xC160: 0x7F86, //CJK UNIFIED IDEOGRAPH - 0xC161: 0x7F87, //CJK UNIFIED IDEOGRAPH - 0xC162: 0x7F88, //CJK UNIFIED IDEOGRAPH - 0xC163: 0x7F89, //CJK UNIFIED IDEOGRAPH - 0xC164: 0x7F8B, //CJK UNIFIED IDEOGRAPH - 0xC165: 0x7F8D, //CJK UNIFIED IDEOGRAPH - 0xC166: 0x7F8F, //CJK UNIFIED IDEOGRAPH - 0xC167: 0x7F90, //CJK UNIFIED IDEOGRAPH - 0xC168: 0x7F91, //CJK UNIFIED IDEOGRAPH - 0xC169: 0x7F92, //CJK UNIFIED IDEOGRAPH - 0xC16A: 0x7F93, //CJK UNIFIED IDEOGRAPH - 0xC16B: 0x7F95, //CJK UNIFIED IDEOGRAPH - 0xC16C: 0x7F96, //CJK UNIFIED IDEOGRAPH - 0xC16D: 0x7F97, //CJK UNIFIED IDEOGRAPH - 0xC16E: 0x7F98, //CJK UNIFIED IDEOGRAPH - 0xC16F: 0x7F99, //CJK UNIFIED IDEOGRAPH - 0xC170: 0x7F9B, //CJK UNIFIED IDEOGRAPH - 0xC171: 0x7F9C, //CJK UNIFIED IDEOGRAPH - 0xC172: 0x7FA0, //CJK UNIFIED IDEOGRAPH - 0xC173: 0x7FA2, //CJK UNIFIED IDEOGRAPH - 0xC174: 0x7FA3, //CJK UNIFIED IDEOGRAPH - 0xC175: 0x7FA5, //CJK UNIFIED IDEOGRAPH - 0xC176: 0x7FA6, //CJK UNIFIED IDEOGRAPH - 0xC177: 0x7FA8, //CJK UNIFIED IDEOGRAPH - 0xC178: 0x7FA9, //CJK UNIFIED IDEOGRAPH - 0xC179: 0x7FAA, //CJK UNIFIED IDEOGRAPH - 0xC17A: 0x7FAB, //CJK UNIFIED IDEOGRAPH - 0xC17B: 0x7FAC, //CJK UNIFIED IDEOGRAPH - 0xC17C: 0x7FAD, //CJK UNIFIED IDEOGRAPH - 0xC17D: 0x7FAE, //CJK UNIFIED IDEOGRAPH - 0xC17E: 0x7FB1, //CJK UNIFIED IDEOGRAPH - 0xC180: 0x7FB3, //CJK UNIFIED IDEOGRAPH - 0xC181: 0x7FB4, //CJK UNIFIED IDEOGRAPH - 0xC182: 0x7FB5, //CJK UNIFIED IDEOGRAPH - 0xC183: 0x7FB6, //CJK UNIFIED IDEOGRAPH - 0xC184: 0x7FB7, //CJK UNIFIED IDEOGRAPH - 0xC185: 0x7FBA, //CJK UNIFIED IDEOGRAPH - 0xC186: 0x7FBB, //CJK UNIFIED IDEOGRAPH - 0xC187: 0x7FBE, //CJK UNIFIED IDEOGRAPH - 0xC188: 0x7FC0, //CJK UNIFIED IDEOGRAPH - 0xC189: 0x7FC2, //CJK UNIFIED IDEOGRAPH - 0xC18A: 0x7FC3, //CJK UNIFIED IDEOGRAPH - 0xC18B: 0x7FC4, //CJK UNIFIED IDEOGRAPH - 0xC18C: 0x7FC6, //CJK UNIFIED IDEOGRAPH - 0xC18D: 0x7FC7, //CJK UNIFIED IDEOGRAPH - 0xC18E: 0x7FC8, //CJK UNIFIED IDEOGRAPH - 0xC18F: 0x7FC9, //CJK UNIFIED IDEOGRAPH - 0xC190: 0x7FCB, //CJK UNIFIED IDEOGRAPH - 0xC191: 0x7FCD, //CJK UNIFIED IDEOGRAPH - 0xC192: 0x7FCF, //CJK UNIFIED IDEOGRAPH - 0xC193: 0x7FD0, //CJK UNIFIED IDEOGRAPH - 0xC194: 0x7FD1, //CJK UNIFIED IDEOGRAPH - 0xC195: 0x7FD2, //CJK UNIFIED IDEOGRAPH - 0xC196: 0x7FD3, //CJK UNIFIED IDEOGRAPH - 0xC197: 0x7FD6, //CJK UNIFIED IDEOGRAPH - 0xC198: 0x7FD7, //CJK UNIFIED IDEOGRAPH - 0xC199: 0x7FD9, //CJK UNIFIED IDEOGRAPH - 0xC19A: 0x7FDA, //CJK UNIFIED IDEOGRAPH - 0xC19B: 0x7FDB, //CJK UNIFIED IDEOGRAPH - 0xC19C: 0x7FDC, //CJK UNIFIED IDEOGRAPH - 0xC19D: 0x7FDD, //CJK UNIFIED IDEOGRAPH - 0xC19E: 0x7FDE, //CJK UNIFIED IDEOGRAPH - 0xC19F: 0x7FE2, //CJK UNIFIED IDEOGRAPH - 0xC1A0: 0x7FE3, //CJK UNIFIED IDEOGRAPH - 0xC1A1: 0x75E2, //CJK UNIFIED IDEOGRAPH - 0xC1A2: 0x7ACB, //CJK UNIFIED IDEOGRAPH - 0xC1A3: 0x7C92, //CJK UNIFIED IDEOGRAPH - 0xC1A4: 0x6CA5, //CJK UNIFIED IDEOGRAPH - 0xC1A5: 0x96B6, //CJK UNIFIED IDEOGRAPH - 0xC1A6: 0x529B, //CJK UNIFIED IDEOGRAPH - 0xC1A7: 0x7483, //CJK UNIFIED IDEOGRAPH - 0xC1A8: 0x54E9, //CJK UNIFIED IDEOGRAPH - 0xC1A9: 0x4FE9, //CJK UNIFIED IDEOGRAPH - 0xC1AA: 0x8054, //CJK UNIFIED IDEOGRAPH - 0xC1AB: 0x83B2, //CJK UNIFIED IDEOGRAPH - 0xC1AC: 0x8FDE, //CJK UNIFIED IDEOGRAPH - 0xC1AD: 0x9570, //CJK UNIFIED IDEOGRAPH - 0xC1AE: 0x5EC9, //CJK UNIFIED IDEOGRAPH - 0xC1AF: 0x601C, //CJK UNIFIED IDEOGRAPH - 0xC1B0: 0x6D9F, //CJK UNIFIED IDEOGRAPH - 0xC1B1: 0x5E18, //CJK UNIFIED IDEOGRAPH - 0xC1B2: 0x655B, //CJK UNIFIED IDEOGRAPH - 0xC1B3: 0x8138, //CJK UNIFIED IDEOGRAPH - 0xC1B4: 0x94FE, //CJK UNIFIED IDEOGRAPH - 0xC1B5: 0x604B, //CJK UNIFIED IDEOGRAPH - 0xC1B6: 0x70BC, //CJK UNIFIED IDEOGRAPH - 0xC1B7: 0x7EC3, //CJK UNIFIED IDEOGRAPH - 0xC1B8: 0x7CAE, //CJK UNIFIED IDEOGRAPH - 0xC1B9: 0x51C9, //CJK UNIFIED IDEOGRAPH - 0xC1BA: 0x6881, //CJK UNIFIED IDEOGRAPH - 0xC1BB: 0x7CB1, //CJK UNIFIED IDEOGRAPH - 0xC1BC: 0x826F, //CJK UNIFIED IDEOGRAPH - 0xC1BD: 0x4E24, //CJK UNIFIED IDEOGRAPH - 0xC1BE: 0x8F86, //CJK UNIFIED IDEOGRAPH - 0xC1BF: 0x91CF, //CJK UNIFIED IDEOGRAPH - 0xC1C0: 0x667E, //CJK UNIFIED IDEOGRAPH - 0xC1C1: 0x4EAE, //CJK UNIFIED IDEOGRAPH - 0xC1C2: 0x8C05, //CJK UNIFIED IDEOGRAPH - 0xC1C3: 0x64A9, //CJK UNIFIED IDEOGRAPH - 0xC1C4: 0x804A, //CJK UNIFIED IDEOGRAPH - 0xC1C5: 0x50DA, //CJK UNIFIED IDEOGRAPH - 0xC1C6: 0x7597, //CJK UNIFIED IDEOGRAPH - 0xC1C7: 0x71CE, //CJK UNIFIED IDEOGRAPH - 0xC1C8: 0x5BE5, //CJK UNIFIED IDEOGRAPH - 0xC1C9: 0x8FBD, //CJK UNIFIED IDEOGRAPH - 0xC1CA: 0x6F66, //CJK UNIFIED IDEOGRAPH - 0xC1CB: 0x4E86, //CJK UNIFIED IDEOGRAPH - 0xC1CC: 0x6482, //CJK UNIFIED IDEOGRAPH - 0xC1CD: 0x9563, //CJK UNIFIED IDEOGRAPH - 0xC1CE: 0x5ED6, //CJK UNIFIED IDEOGRAPH - 0xC1CF: 0x6599, //CJK UNIFIED IDEOGRAPH - 0xC1D0: 0x5217, //CJK UNIFIED IDEOGRAPH - 0xC1D1: 0x88C2, //CJK UNIFIED IDEOGRAPH - 0xC1D2: 0x70C8, //CJK UNIFIED IDEOGRAPH - 0xC1D3: 0x52A3, //CJK UNIFIED IDEOGRAPH - 0xC1D4: 0x730E, //CJK UNIFIED IDEOGRAPH - 0xC1D5: 0x7433, //CJK UNIFIED IDEOGRAPH - 0xC1D6: 0x6797, //CJK UNIFIED IDEOGRAPH - 0xC1D7: 0x78F7, //CJK UNIFIED IDEOGRAPH - 0xC1D8: 0x9716, //CJK UNIFIED IDEOGRAPH - 0xC1D9: 0x4E34, //CJK UNIFIED IDEOGRAPH - 0xC1DA: 0x90BB, //CJK UNIFIED IDEOGRAPH - 0xC1DB: 0x9CDE, //CJK UNIFIED IDEOGRAPH - 0xC1DC: 0x6DCB, //CJK UNIFIED IDEOGRAPH - 0xC1DD: 0x51DB, //CJK UNIFIED IDEOGRAPH - 0xC1DE: 0x8D41, //CJK UNIFIED IDEOGRAPH - 0xC1DF: 0x541D, //CJK UNIFIED IDEOGRAPH - 0xC1E0: 0x62CE, //CJK UNIFIED IDEOGRAPH - 0xC1E1: 0x73B2, //CJK UNIFIED IDEOGRAPH - 0xC1E2: 0x83F1, //CJK UNIFIED IDEOGRAPH - 0xC1E3: 0x96F6, //CJK UNIFIED IDEOGRAPH - 0xC1E4: 0x9F84, //CJK UNIFIED IDEOGRAPH - 0xC1E5: 0x94C3, //CJK UNIFIED IDEOGRAPH - 0xC1E6: 0x4F36, //CJK UNIFIED IDEOGRAPH - 0xC1E7: 0x7F9A, //CJK UNIFIED IDEOGRAPH - 0xC1E8: 0x51CC, //CJK UNIFIED IDEOGRAPH - 0xC1E9: 0x7075, //CJK UNIFIED IDEOGRAPH - 0xC1EA: 0x9675, //CJK UNIFIED IDEOGRAPH - 0xC1EB: 0x5CAD, //CJK UNIFIED IDEOGRAPH - 0xC1EC: 0x9886, //CJK UNIFIED IDEOGRAPH - 0xC1ED: 0x53E6, //CJK UNIFIED IDEOGRAPH - 0xC1EE: 0x4EE4, //CJK UNIFIED IDEOGRAPH - 0xC1EF: 0x6E9C, //CJK UNIFIED IDEOGRAPH - 0xC1F0: 0x7409, //CJK UNIFIED IDEOGRAPH - 0xC1F1: 0x69B4, //CJK UNIFIED IDEOGRAPH - 0xC1F2: 0x786B, //CJK UNIFIED IDEOGRAPH - 0xC1F3: 0x998F, //CJK UNIFIED IDEOGRAPH - 0xC1F4: 0x7559, //CJK UNIFIED IDEOGRAPH - 0xC1F5: 0x5218, //CJK UNIFIED IDEOGRAPH - 0xC1F6: 0x7624, //CJK UNIFIED IDEOGRAPH - 0xC1F7: 0x6D41, //CJK UNIFIED IDEOGRAPH - 0xC1F8: 0x67F3, //CJK UNIFIED IDEOGRAPH - 0xC1F9: 0x516D, //CJK UNIFIED IDEOGRAPH - 0xC1FA: 0x9F99, //CJK UNIFIED IDEOGRAPH - 0xC1FB: 0x804B, //CJK UNIFIED IDEOGRAPH - 0xC1FC: 0x5499, //CJK UNIFIED IDEOGRAPH - 0xC1FD: 0x7B3C, //CJK UNIFIED IDEOGRAPH - 0xC1FE: 0x7ABF, //CJK UNIFIED IDEOGRAPH - 0xC240: 0x7FE4, //CJK UNIFIED IDEOGRAPH - 0xC241: 0x7FE7, //CJK UNIFIED IDEOGRAPH - 0xC242: 0x7FE8, //CJK UNIFIED IDEOGRAPH - 0xC243: 0x7FEA, //CJK UNIFIED IDEOGRAPH - 0xC244: 0x7FEB, //CJK UNIFIED IDEOGRAPH - 0xC245: 0x7FEC, //CJK UNIFIED IDEOGRAPH - 0xC246: 0x7FED, //CJK UNIFIED IDEOGRAPH - 0xC247: 0x7FEF, //CJK UNIFIED IDEOGRAPH - 0xC248: 0x7FF2, //CJK UNIFIED IDEOGRAPH - 0xC249: 0x7FF4, //CJK UNIFIED IDEOGRAPH - 0xC24A: 0x7FF5, //CJK UNIFIED IDEOGRAPH - 0xC24B: 0x7FF6, //CJK UNIFIED IDEOGRAPH - 0xC24C: 0x7FF7, //CJK UNIFIED IDEOGRAPH - 0xC24D: 0x7FF8, //CJK UNIFIED IDEOGRAPH - 0xC24E: 0x7FF9, //CJK UNIFIED IDEOGRAPH - 0xC24F: 0x7FFA, //CJK UNIFIED IDEOGRAPH - 0xC250: 0x7FFD, //CJK UNIFIED IDEOGRAPH - 0xC251: 0x7FFE, //CJK UNIFIED IDEOGRAPH - 0xC252: 0x7FFF, //CJK UNIFIED IDEOGRAPH - 0xC253: 0x8002, //CJK UNIFIED IDEOGRAPH - 0xC254: 0x8007, //CJK UNIFIED IDEOGRAPH - 0xC255: 0x8008, //CJK UNIFIED IDEOGRAPH - 0xC256: 0x8009, //CJK UNIFIED IDEOGRAPH - 0xC257: 0x800A, //CJK UNIFIED IDEOGRAPH - 0xC258: 0x800E, //CJK UNIFIED IDEOGRAPH - 0xC259: 0x800F, //CJK UNIFIED IDEOGRAPH - 0xC25A: 0x8011, //CJK UNIFIED IDEOGRAPH - 0xC25B: 0x8013, //CJK UNIFIED IDEOGRAPH - 0xC25C: 0x801A, //CJK UNIFIED IDEOGRAPH - 0xC25D: 0x801B, //CJK UNIFIED IDEOGRAPH - 0xC25E: 0x801D, //CJK UNIFIED IDEOGRAPH - 0xC25F: 0x801E, //CJK UNIFIED IDEOGRAPH - 0xC260: 0x801F, //CJK UNIFIED IDEOGRAPH - 0xC261: 0x8021, //CJK UNIFIED IDEOGRAPH - 0xC262: 0x8023, //CJK UNIFIED IDEOGRAPH - 0xC263: 0x8024, //CJK UNIFIED IDEOGRAPH - 0xC264: 0x802B, //CJK UNIFIED IDEOGRAPH - 0xC265: 0x802C, //CJK UNIFIED IDEOGRAPH - 0xC266: 0x802D, //CJK UNIFIED IDEOGRAPH - 0xC267: 0x802E, //CJK UNIFIED IDEOGRAPH - 0xC268: 0x802F, //CJK UNIFIED IDEOGRAPH - 0xC269: 0x8030, //CJK UNIFIED IDEOGRAPH - 0xC26A: 0x8032, //CJK UNIFIED IDEOGRAPH - 0xC26B: 0x8034, //CJK UNIFIED IDEOGRAPH - 0xC26C: 0x8039, //CJK UNIFIED IDEOGRAPH - 0xC26D: 0x803A, //CJK UNIFIED IDEOGRAPH - 0xC26E: 0x803C, //CJK UNIFIED IDEOGRAPH - 0xC26F: 0x803E, //CJK UNIFIED IDEOGRAPH - 0xC270: 0x8040, //CJK UNIFIED IDEOGRAPH - 0xC271: 0x8041, //CJK UNIFIED IDEOGRAPH - 0xC272: 0x8044, //CJK UNIFIED IDEOGRAPH - 0xC273: 0x8045, //CJK UNIFIED IDEOGRAPH - 0xC274: 0x8047, //CJK UNIFIED IDEOGRAPH - 0xC275: 0x8048, //CJK UNIFIED IDEOGRAPH - 0xC276: 0x8049, //CJK UNIFIED IDEOGRAPH - 0xC277: 0x804E, //CJK UNIFIED IDEOGRAPH - 0xC278: 0x804F, //CJK UNIFIED IDEOGRAPH - 0xC279: 0x8050, //CJK UNIFIED IDEOGRAPH - 0xC27A: 0x8051, //CJK UNIFIED IDEOGRAPH - 0xC27B: 0x8053, //CJK UNIFIED IDEOGRAPH - 0xC27C: 0x8055, //CJK UNIFIED IDEOGRAPH - 0xC27D: 0x8056, //CJK UNIFIED IDEOGRAPH - 0xC27E: 0x8057, //CJK UNIFIED IDEOGRAPH - 0xC280: 0x8059, //CJK UNIFIED IDEOGRAPH - 0xC281: 0x805B, //CJK UNIFIED IDEOGRAPH - 0xC282: 0x805C, //CJK UNIFIED IDEOGRAPH - 0xC283: 0x805D, //CJK UNIFIED IDEOGRAPH - 0xC284: 0x805E, //CJK UNIFIED IDEOGRAPH - 0xC285: 0x805F, //CJK UNIFIED IDEOGRAPH - 0xC286: 0x8060, //CJK UNIFIED IDEOGRAPH - 0xC287: 0x8061, //CJK UNIFIED IDEOGRAPH - 0xC288: 0x8062, //CJK UNIFIED IDEOGRAPH - 0xC289: 0x8063, //CJK UNIFIED IDEOGRAPH - 0xC28A: 0x8064, //CJK UNIFIED IDEOGRAPH - 0xC28B: 0x8065, //CJK UNIFIED IDEOGRAPH - 0xC28C: 0x8066, //CJK UNIFIED IDEOGRAPH - 0xC28D: 0x8067, //CJK UNIFIED IDEOGRAPH - 0xC28E: 0x8068, //CJK UNIFIED IDEOGRAPH - 0xC28F: 0x806B, //CJK UNIFIED IDEOGRAPH - 0xC290: 0x806C, //CJK UNIFIED IDEOGRAPH - 0xC291: 0x806D, //CJK UNIFIED IDEOGRAPH - 0xC292: 0x806E, //CJK UNIFIED IDEOGRAPH - 0xC293: 0x806F, //CJK UNIFIED IDEOGRAPH - 0xC294: 0x8070, //CJK UNIFIED IDEOGRAPH - 0xC295: 0x8072, //CJK UNIFIED IDEOGRAPH - 0xC296: 0x8073, //CJK UNIFIED IDEOGRAPH - 0xC297: 0x8074, //CJK UNIFIED IDEOGRAPH - 0xC298: 0x8075, //CJK UNIFIED IDEOGRAPH - 0xC299: 0x8076, //CJK UNIFIED IDEOGRAPH - 0xC29A: 0x8077, //CJK UNIFIED IDEOGRAPH - 0xC29B: 0x8078, //CJK UNIFIED IDEOGRAPH - 0xC29C: 0x8079, //CJK UNIFIED IDEOGRAPH - 0xC29D: 0x807A, //CJK UNIFIED IDEOGRAPH - 0xC29E: 0x807B, //CJK UNIFIED IDEOGRAPH - 0xC29F: 0x807C, //CJK UNIFIED IDEOGRAPH - 0xC2A0: 0x807D, //CJK UNIFIED IDEOGRAPH - 0xC2A1: 0x9686, //CJK UNIFIED IDEOGRAPH - 0xC2A2: 0x5784, //CJK UNIFIED IDEOGRAPH - 0xC2A3: 0x62E2, //CJK UNIFIED IDEOGRAPH - 0xC2A4: 0x9647, //CJK UNIFIED IDEOGRAPH - 0xC2A5: 0x697C, //CJK UNIFIED IDEOGRAPH - 0xC2A6: 0x5A04, //CJK UNIFIED IDEOGRAPH - 0xC2A7: 0x6402, //CJK UNIFIED IDEOGRAPH - 0xC2A8: 0x7BD3, //CJK UNIFIED IDEOGRAPH - 0xC2A9: 0x6F0F, //CJK UNIFIED IDEOGRAPH - 0xC2AA: 0x964B, //CJK UNIFIED IDEOGRAPH - 0xC2AB: 0x82A6, //CJK UNIFIED IDEOGRAPH - 0xC2AC: 0x5362, //CJK UNIFIED IDEOGRAPH - 0xC2AD: 0x9885, //CJK UNIFIED IDEOGRAPH - 0xC2AE: 0x5E90, //CJK UNIFIED IDEOGRAPH - 0xC2AF: 0x7089, //CJK UNIFIED IDEOGRAPH - 0xC2B0: 0x63B3, //CJK UNIFIED IDEOGRAPH - 0xC2B1: 0x5364, //CJK UNIFIED IDEOGRAPH - 0xC2B2: 0x864F, //CJK UNIFIED IDEOGRAPH - 0xC2B3: 0x9C81, //CJK UNIFIED IDEOGRAPH - 0xC2B4: 0x9E93, //CJK UNIFIED IDEOGRAPH - 0xC2B5: 0x788C, //CJK UNIFIED IDEOGRAPH - 0xC2B6: 0x9732, //CJK UNIFIED IDEOGRAPH - 0xC2B7: 0x8DEF, //CJK UNIFIED IDEOGRAPH - 0xC2B8: 0x8D42, //CJK UNIFIED IDEOGRAPH - 0xC2B9: 0x9E7F, //CJK UNIFIED IDEOGRAPH - 0xC2BA: 0x6F5E, //CJK UNIFIED IDEOGRAPH - 0xC2BB: 0x7984, //CJK UNIFIED IDEOGRAPH - 0xC2BC: 0x5F55, //CJK UNIFIED IDEOGRAPH - 0xC2BD: 0x9646, //CJK UNIFIED IDEOGRAPH - 0xC2BE: 0x622E, //CJK UNIFIED IDEOGRAPH - 0xC2BF: 0x9A74, //CJK UNIFIED IDEOGRAPH - 0xC2C0: 0x5415, //CJK UNIFIED IDEOGRAPH - 0xC2C1: 0x94DD, //CJK UNIFIED IDEOGRAPH - 0xC2C2: 0x4FA3, //CJK UNIFIED IDEOGRAPH - 0xC2C3: 0x65C5, //CJK UNIFIED IDEOGRAPH - 0xC2C4: 0x5C65, //CJK UNIFIED IDEOGRAPH - 0xC2C5: 0x5C61, //CJK UNIFIED IDEOGRAPH - 0xC2C6: 0x7F15, //CJK UNIFIED IDEOGRAPH - 0xC2C7: 0x8651, //CJK UNIFIED IDEOGRAPH - 0xC2C8: 0x6C2F, //CJK UNIFIED IDEOGRAPH - 0xC2C9: 0x5F8B, //CJK UNIFIED IDEOGRAPH - 0xC2CA: 0x7387, //CJK UNIFIED IDEOGRAPH - 0xC2CB: 0x6EE4, //CJK UNIFIED IDEOGRAPH - 0xC2CC: 0x7EFF, //CJK UNIFIED IDEOGRAPH - 0xC2CD: 0x5CE6, //CJK UNIFIED IDEOGRAPH - 0xC2CE: 0x631B, //CJK UNIFIED IDEOGRAPH - 0xC2CF: 0x5B6A, //CJK UNIFIED IDEOGRAPH - 0xC2D0: 0x6EE6, //CJK UNIFIED IDEOGRAPH - 0xC2D1: 0x5375, //CJK UNIFIED IDEOGRAPH - 0xC2D2: 0x4E71, //CJK UNIFIED IDEOGRAPH - 0xC2D3: 0x63A0, //CJK UNIFIED IDEOGRAPH - 0xC2D4: 0x7565, //CJK UNIFIED IDEOGRAPH - 0xC2D5: 0x62A1, //CJK UNIFIED IDEOGRAPH - 0xC2D6: 0x8F6E, //CJK UNIFIED IDEOGRAPH - 0xC2D7: 0x4F26, //CJK UNIFIED IDEOGRAPH - 0xC2D8: 0x4ED1, //CJK UNIFIED IDEOGRAPH - 0xC2D9: 0x6CA6, //CJK UNIFIED IDEOGRAPH - 0xC2DA: 0x7EB6, //CJK UNIFIED IDEOGRAPH - 0xC2DB: 0x8BBA, //CJK UNIFIED IDEOGRAPH - 0xC2DC: 0x841D, //CJK UNIFIED IDEOGRAPH - 0xC2DD: 0x87BA, //CJK UNIFIED IDEOGRAPH - 0xC2DE: 0x7F57, //CJK UNIFIED IDEOGRAPH - 0xC2DF: 0x903B, //CJK UNIFIED IDEOGRAPH - 0xC2E0: 0x9523, //CJK UNIFIED IDEOGRAPH - 0xC2E1: 0x7BA9, //CJK UNIFIED IDEOGRAPH - 0xC2E2: 0x9AA1, //CJK UNIFIED IDEOGRAPH - 0xC2E3: 0x88F8, //CJK UNIFIED IDEOGRAPH - 0xC2E4: 0x843D, //CJK UNIFIED IDEOGRAPH - 0xC2E5: 0x6D1B, //CJK UNIFIED IDEOGRAPH - 0xC2E6: 0x9A86, //CJK UNIFIED IDEOGRAPH - 0xC2E7: 0x7EDC, //CJK UNIFIED IDEOGRAPH - 0xC2E8: 0x5988, //CJK UNIFIED IDEOGRAPH - 0xC2E9: 0x9EBB, //CJK UNIFIED IDEOGRAPH - 0xC2EA: 0x739B, //CJK UNIFIED IDEOGRAPH - 0xC2EB: 0x7801, //CJK UNIFIED IDEOGRAPH - 0xC2EC: 0x8682, //CJK UNIFIED IDEOGRAPH - 0xC2ED: 0x9A6C, //CJK UNIFIED IDEOGRAPH - 0xC2EE: 0x9A82, //CJK UNIFIED IDEOGRAPH - 0xC2EF: 0x561B, //CJK UNIFIED IDEOGRAPH - 0xC2F0: 0x5417, //CJK UNIFIED IDEOGRAPH - 0xC2F1: 0x57CB, //CJK UNIFIED IDEOGRAPH - 0xC2F2: 0x4E70, //CJK UNIFIED IDEOGRAPH - 0xC2F3: 0x9EA6, //CJK UNIFIED IDEOGRAPH - 0xC2F4: 0x5356, //CJK UNIFIED IDEOGRAPH - 0xC2F5: 0x8FC8, //CJK UNIFIED IDEOGRAPH - 0xC2F6: 0x8109, //CJK UNIFIED IDEOGRAPH - 0xC2F7: 0x7792, //CJK UNIFIED IDEOGRAPH - 0xC2F8: 0x9992, //CJK UNIFIED IDEOGRAPH - 0xC2F9: 0x86EE, //CJK UNIFIED IDEOGRAPH - 0xC2FA: 0x6EE1, //CJK UNIFIED IDEOGRAPH - 0xC2FB: 0x8513, //CJK UNIFIED IDEOGRAPH - 0xC2FC: 0x66FC, //CJK UNIFIED IDEOGRAPH - 0xC2FD: 0x6162, //CJK UNIFIED IDEOGRAPH - 0xC2FE: 0x6F2B, //CJK UNIFIED IDEOGRAPH - 0xC340: 0x807E, //CJK UNIFIED IDEOGRAPH - 0xC341: 0x8081, //CJK UNIFIED IDEOGRAPH - 0xC342: 0x8082, //CJK UNIFIED IDEOGRAPH - 0xC343: 0x8085, //CJK UNIFIED IDEOGRAPH - 0xC344: 0x8088, //CJK UNIFIED IDEOGRAPH - 0xC345: 0x808A, //CJK UNIFIED IDEOGRAPH - 0xC346: 0x808D, //CJK UNIFIED IDEOGRAPH - 0xC347: 0x808E, //CJK UNIFIED IDEOGRAPH - 0xC348: 0x808F, //CJK UNIFIED IDEOGRAPH - 0xC349: 0x8090, //CJK UNIFIED IDEOGRAPH - 0xC34A: 0x8091, //CJK UNIFIED IDEOGRAPH - 0xC34B: 0x8092, //CJK UNIFIED IDEOGRAPH - 0xC34C: 0x8094, //CJK UNIFIED IDEOGRAPH - 0xC34D: 0x8095, //CJK UNIFIED IDEOGRAPH - 0xC34E: 0x8097, //CJK UNIFIED IDEOGRAPH - 0xC34F: 0x8099, //CJK UNIFIED IDEOGRAPH - 0xC350: 0x809E, //CJK UNIFIED IDEOGRAPH - 0xC351: 0x80A3, //CJK UNIFIED IDEOGRAPH - 0xC352: 0x80A6, //CJK UNIFIED IDEOGRAPH - 0xC353: 0x80A7, //CJK UNIFIED IDEOGRAPH - 0xC354: 0x80A8, //CJK UNIFIED IDEOGRAPH - 0xC355: 0x80AC, //CJK UNIFIED IDEOGRAPH - 0xC356: 0x80B0, //CJK UNIFIED IDEOGRAPH - 0xC357: 0x80B3, //CJK UNIFIED IDEOGRAPH - 0xC358: 0x80B5, //CJK UNIFIED IDEOGRAPH - 0xC359: 0x80B6, //CJK UNIFIED IDEOGRAPH - 0xC35A: 0x80B8, //CJK UNIFIED IDEOGRAPH - 0xC35B: 0x80B9, //CJK UNIFIED IDEOGRAPH - 0xC35C: 0x80BB, //CJK UNIFIED IDEOGRAPH - 0xC35D: 0x80C5, //CJK UNIFIED IDEOGRAPH - 0xC35E: 0x80C7, //CJK UNIFIED IDEOGRAPH - 0xC35F: 0x80C8, //CJK UNIFIED IDEOGRAPH - 0xC360: 0x80C9, //CJK UNIFIED IDEOGRAPH - 0xC361: 0x80CA, //CJK UNIFIED IDEOGRAPH - 0xC362: 0x80CB, //CJK UNIFIED IDEOGRAPH - 0xC363: 0x80CF, //CJK UNIFIED IDEOGRAPH - 0xC364: 0x80D0, //CJK UNIFIED IDEOGRAPH - 0xC365: 0x80D1, //CJK UNIFIED IDEOGRAPH - 0xC366: 0x80D2, //CJK UNIFIED IDEOGRAPH - 0xC367: 0x80D3, //CJK UNIFIED IDEOGRAPH - 0xC368: 0x80D4, //CJK UNIFIED IDEOGRAPH - 0xC369: 0x80D5, //CJK UNIFIED IDEOGRAPH - 0xC36A: 0x80D8, //CJK UNIFIED IDEOGRAPH - 0xC36B: 0x80DF, //CJK UNIFIED IDEOGRAPH - 0xC36C: 0x80E0, //CJK UNIFIED IDEOGRAPH - 0xC36D: 0x80E2, //CJK UNIFIED IDEOGRAPH - 0xC36E: 0x80E3, //CJK UNIFIED IDEOGRAPH - 0xC36F: 0x80E6, //CJK UNIFIED IDEOGRAPH - 0xC370: 0x80EE, //CJK UNIFIED IDEOGRAPH - 0xC371: 0x80F5, //CJK UNIFIED IDEOGRAPH - 0xC372: 0x80F7, //CJK UNIFIED IDEOGRAPH - 0xC373: 0x80F9, //CJK UNIFIED IDEOGRAPH - 0xC374: 0x80FB, //CJK UNIFIED IDEOGRAPH - 0xC375: 0x80FE, //CJK UNIFIED IDEOGRAPH - 0xC376: 0x80FF, //CJK UNIFIED IDEOGRAPH - 0xC377: 0x8100, //CJK UNIFIED IDEOGRAPH - 0xC378: 0x8101, //CJK UNIFIED IDEOGRAPH - 0xC379: 0x8103, //CJK UNIFIED IDEOGRAPH - 0xC37A: 0x8104, //CJK UNIFIED IDEOGRAPH - 0xC37B: 0x8105, //CJK UNIFIED IDEOGRAPH - 0xC37C: 0x8107, //CJK UNIFIED IDEOGRAPH - 0xC37D: 0x8108, //CJK UNIFIED IDEOGRAPH - 0xC37E: 0x810B, //CJK UNIFIED IDEOGRAPH - 0xC380: 0x810C, //CJK UNIFIED IDEOGRAPH - 0xC381: 0x8115, //CJK UNIFIED IDEOGRAPH - 0xC382: 0x8117, //CJK UNIFIED IDEOGRAPH - 0xC383: 0x8119, //CJK UNIFIED IDEOGRAPH - 0xC384: 0x811B, //CJK UNIFIED IDEOGRAPH - 0xC385: 0x811C, //CJK UNIFIED IDEOGRAPH - 0xC386: 0x811D, //CJK UNIFIED IDEOGRAPH - 0xC387: 0x811F, //CJK UNIFIED IDEOGRAPH - 0xC388: 0x8120, //CJK UNIFIED IDEOGRAPH - 0xC389: 0x8121, //CJK UNIFIED IDEOGRAPH - 0xC38A: 0x8122, //CJK UNIFIED IDEOGRAPH - 0xC38B: 0x8123, //CJK UNIFIED IDEOGRAPH - 0xC38C: 0x8124, //CJK UNIFIED IDEOGRAPH - 0xC38D: 0x8125, //CJK UNIFIED IDEOGRAPH - 0xC38E: 0x8126, //CJK UNIFIED IDEOGRAPH - 0xC38F: 0x8127, //CJK UNIFIED IDEOGRAPH - 0xC390: 0x8128, //CJK UNIFIED IDEOGRAPH - 0xC391: 0x8129, //CJK UNIFIED IDEOGRAPH - 0xC392: 0x812A, //CJK UNIFIED IDEOGRAPH - 0xC393: 0x812B, //CJK UNIFIED IDEOGRAPH - 0xC394: 0x812D, //CJK UNIFIED IDEOGRAPH - 0xC395: 0x812E, //CJK UNIFIED IDEOGRAPH - 0xC396: 0x8130, //CJK UNIFIED IDEOGRAPH - 0xC397: 0x8133, //CJK UNIFIED IDEOGRAPH - 0xC398: 0x8134, //CJK UNIFIED IDEOGRAPH - 0xC399: 0x8135, //CJK UNIFIED IDEOGRAPH - 0xC39A: 0x8137, //CJK UNIFIED IDEOGRAPH - 0xC39B: 0x8139, //CJK UNIFIED IDEOGRAPH - 0xC39C: 0x813A, //CJK UNIFIED IDEOGRAPH - 0xC39D: 0x813B, //CJK UNIFIED IDEOGRAPH - 0xC39E: 0x813C, //CJK UNIFIED IDEOGRAPH - 0xC39F: 0x813D, //CJK UNIFIED IDEOGRAPH - 0xC3A0: 0x813F, //CJK UNIFIED IDEOGRAPH - 0xC3A1: 0x8C29, //CJK UNIFIED IDEOGRAPH - 0xC3A2: 0x8292, //CJK UNIFIED IDEOGRAPH - 0xC3A3: 0x832B, //CJK UNIFIED IDEOGRAPH - 0xC3A4: 0x76F2, //CJK UNIFIED IDEOGRAPH - 0xC3A5: 0x6C13, //CJK UNIFIED IDEOGRAPH - 0xC3A6: 0x5FD9, //CJK UNIFIED IDEOGRAPH - 0xC3A7: 0x83BD, //CJK UNIFIED IDEOGRAPH - 0xC3A8: 0x732B, //CJK UNIFIED IDEOGRAPH - 0xC3A9: 0x8305, //CJK UNIFIED IDEOGRAPH - 0xC3AA: 0x951A, //CJK UNIFIED IDEOGRAPH - 0xC3AB: 0x6BDB, //CJK UNIFIED IDEOGRAPH - 0xC3AC: 0x77DB, //CJK UNIFIED IDEOGRAPH - 0xC3AD: 0x94C6, //CJK UNIFIED IDEOGRAPH - 0xC3AE: 0x536F, //CJK UNIFIED IDEOGRAPH - 0xC3AF: 0x8302, //CJK UNIFIED IDEOGRAPH - 0xC3B0: 0x5192, //CJK UNIFIED IDEOGRAPH - 0xC3B1: 0x5E3D, //CJK UNIFIED IDEOGRAPH - 0xC3B2: 0x8C8C, //CJK UNIFIED IDEOGRAPH - 0xC3B3: 0x8D38, //CJK UNIFIED IDEOGRAPH - 0xC3B4: 0x4E48, //CJK UNIFIED IDEOGRAPH - 0xC3B5: 0x73AB, //CJK UNIFIED IDEOGRAPH - 0xC3B6: 0x679A, //CJK UNIFIED IDEOGRAPH - 0xC3B7: 0x6885, //CJK UNIFIED IDEOGRAPH - 0xC3B8: 0x9176, //CJK UNIFIED IDEOGRAPH - 0xC3B9: 0x9709, //CJK UNIFIED IDEOGRAPH - 0xC3BA: 0x7164, //CJK UNIFIED IDEOGRAPH - 0xC3BB: 0x6CA1, //CJK UNIFIED IDEOGRAPH - 0xC3BC: 0x7709, //CJK UNIFIED IDEOGRAPH - 0xC3BD: 0x5A92, //CJK UNIFIED IDEOGRAPH - 0xC3BE: 0x9541, //CJK UNIFIED IDEOGRAPH - 0xC3BF: 0x6BCF, //CJK UNIFIED IDEOGRAPH - 0xC3C0: 0x7F8E, //CJK UNIFIED IDEOGRAPH - 0xC3C1: 0x6627, //CJK UNIFIED IDEOGRAPH - 0xC3C2: 0x5BD0, //CJK UNIFIED IDEOGRAPH - 0xC3C3: 0x59B9, //CJK UNIFIED IDEOGRAPH - 0xC3C4: 0x5A9A, //CJK UNIFIED IDEOGRAPH - 0xC3C5: 0x95E8, //CJK UNIFIED IDEOGRAPH - 0xC3C6: 0x95F7, //CJK UNIFIED IDEOGRAPH - 0xC3C7: 0x4EEC, //CJK UNIFIED IDEOGRAPH - 0xC3C8: 0x840C, //CJK UNIFIED IDEOGRAPH - 0xC3C9: 0x8499, //CJK UNIFIED IDEOGRAPH - 0xC3CA: 0x6AAC, //CJK UNIFIED IDEOGRAPH - 0xC3CB: 0x76DF, //CJK UNIFIED IDEOGRAPH - 0xC3CC: 0x9530, //CJK UNIFIED IDEOGRAPH - 0xC3CD: 0x731B, //CJK UNIFIED IDEOGRAPH - 0xC3CE: 0x68A6, //CJK UNIFIED IDEOGRAPH - 0xC3CF: 0x5B5F, //CJK UNIFIED IDEOGRAPH - 0xC3D0: 0x772F, //CJK UNIFIED IDEOGRAPH - 0xC3D1: 0x919A, //CJK UNIFIED IDEOGRAPH - 0xC3D2: 0x9761, //CJK UNIFIED IDEOGRAPH - 0xC3D3: 0x7CDC, //CJK UNIFIED IDEOGRAPH - 0xC3D4: 0x8FF7, //CJK UNIFIED IDEOGRAPH - 0xC3D5: 0x8C1C, //CJK UNIFIED IDEOGRAPH - 0xC3D6: 0x5F25, //CJK UNIFIED IDEOGRAPH - 0xC3D7: 0x7C73, //CJK UNIFIED IDEOGRAPH - 0xC3D8: 0x79D8, //CJK UNIFIED IDEOGRAPH - 0xC3D9: 0x89C5, //CJK UNIFIED IDEOGRAPH - 0xC3DA: 0x6CCC, //CJK UNIFIED IDEOGRAPH - 0xC3DB: 0x871C, //CJK UNIFIED IDEOGRAPH - 0xC3DC: 0x5BC6, //CJK UNIFIED IDEOGRAPH - 0xC3DD: 0x5E42, //CJK UNIFIED IDEOGRAPH - 0xC3DE: 0x68C9, //CJK UNIFIED IDEOGRAPH - 0xC3DF: 0x7720, //CJK UNIFIED IDEOGRAPH - 0xC3E0: 0x7EF5, //CJK UNIFIED IDEOGRAPH - 0xC3E1: 0x5195, //CJK UNIFIED IDEOGRAPH - 0xC3E2: 0x514D, //CJK UNIFIED IDEOGRAPH - 0xC3E3: 0x52C9, //CJK UNIFIED IDEOGRAPH - 0xC3E4: 0x5A29, //CJK UNIFIED IDEOGRAPH - 0xC3E5: 0x7F05, //CJK UNIFIED IDEOGRAPH - 0xC3E6: 0x9762, //CJK UNIFIED IDEOGRAPH - 0xC3E7: 0x82D7, //CJK UNIFIED IDEOGRAPH - 0xC3E8: 0x63CF, //CJK UNIFIED IDEOGRAPH - 0xC3E9: 0x7784, //CJK UNIFIED IDEOGRAPH - 0xC3EA: 0x85D0, //CJK UNIFIED IDEOGRAPH - 0xC3EB: 0x79D2, //CJK UNIFIED IDEOGRAPH - 0xC3EC: 0x6E3A, //CJK UNIFIED IDEOGRAPH - 0xC3ED: 0x5E99, //CJK UNIFIED IDEOGRAPH - 0xC3EE: 0x5999, //CJK UNIFIED IDEOGRAPH - 0xC3EF: 0x8511, //CJK UNIFIED IDEOGRAPH - 0xC3F0: 0x706D, //CJK UNIFIED IDEOGRAPH - 0xC3F1: 0x6C11, //CJK UNIFIED IDEOGRAPH - 0xC3F2: 0x62BF, //CJK UNIFIED IDEOGRAPH - 0xC3F3: 0x76BF, //CJK UNIFIED IDEOGRAPH - 0xC3F4: 0x654F, //CJK UNIFIED IDEOGRAPH - 0xC3F5: 0x60AF, //CJK UNIFIED IDEOGRAPH - 0xC3F6: 0x95FD, //CJK UNIFIED IDEOGRAPH - 0xC3F7: 0x660E, //CJK UNIFIED IDEOGRAPH - 0xC3F8: 0x879F, //CJK UNIFIED IDEOGRAPH - 0xC3F9: 0x9E23, //CJK UNIFIED IDEOGRAPH - 0xC3FA: 0x94ED, //CJK UNIFIED IDEOGRAPH - 0xC3FB: 0x540D, //CJK UNIFIED IDEOGRAPH - 0xC3FC: 0x547D, //CJK UNIFIED IDEOGRAPH - 0xC3FD: 0x8C2C, //CJK UNIFIED IDEOGRAPH - 0xC3FE: 0x6478, //CJK UNIFIED IDEOGRAPH - 0xC440: 0x8140, //CJK UNIFIED IDEOGRAPH - 0xC441: 0x8141, //CJK UNIFIED IDEOGRAPH - 0xC442: 0x8142, //CJK UNIFIED IDEOGRAPH - 0xC443: 0x8143, //CJK UNIFIED IDEOGRAPH - 0xC444: 0x8144, //CJK UNIFIED IDEOGRAPH - 0xC445: 0x8145, //CJK UNIFIED IDEOGRAPH - 0xC446: 0x8147, //CJK UNIFIED IDEOGRAPH - 0xC447: 0x8149, //CJK UNIFIED IDEOGRAPH - 0xC448: 0x814D, //CJK UNIFIED IDEOGRAPH - 0xC449: 0x814E, //CJK UNIFIED IDEOGRAPH - 0xC44A: 0x814F, //CJK UNIFIED IDEOGRAPH - 0xC44B: 0x8152, //CJK UNIFIED IDEOGRAPH - 0xC44C: 0x8156, //CJK UNIFIED IDEOGRAPH - 0xC44D: 0x8157, //CJK UNIFIED IDEOGRAPH - 0xC44E: 0x8158, //CJK UNIFIED IDEOGRAPH - 0xC44F: 0x815B, //CJK UNIFIED IDEOGRAPH - 0xC450: 0x815C, //CJK UNIFIED IDEOGRAPH - 0xC451: 0x815D, //CJK UNIFIED IDEOGRAPH - 0xC452: 0x815E, //CJK UNIFIED IDEOGRAPH - 0xC453: 0x815F, //CJK UNIFIED IDEOGRAPH - 0xC454: 0x8161, //CJK UNIFIED IDEOGRAPH - 0xC455: 0x8162, //CJK UNIFIED IDEOGRAPH - 0xC456: 0x8163, //CJK UNIFIED IDEOGRAPH - 0xC457: 0x8164, //CJK UNIFIED IDEOGRAPH - 0xC458: 0x8166, //CJK UNIFIED IDEOGRAPH - 0xC459: 0x8168, //CJK UNIFIED IDEOGRAPH - 0xC45A: 0x816A, //CJK UNIFIED IDEOGRAPH - 0xC45B: 0x816B, //CJK UNIFIED IDEOGRAPH - 0xC45C: 0x816C, //CJK UNIFIED IDEOGRAPH - 0xC45D: 0x816F, //CJK UNIFIED IDEOGRAPH - 0xC45E: 0x8172, //CJK UNIFIED IDEOGRAPH - 0xC45F: 0x8173, //CJK UNIFIED IDEOGRAPH - 0xC460: 0x8175, //CJK UNIFIED IDEOGRAPH - 0xC461: 0x8176, //CJK UNIFIED IDEOGRAPH - 0xC462: 0x8177, //CJK UNIFIED IDEOGRAPH - 0xC463: 0x8178, //CJK UNIFIED IDEOGRAPH - 0xC464: 0x8181, //CJK UNIFIED IDEOGRAPH - 0xC465: 0x8183, //CJK UNIFIED IDEOGRAPH - 0xC466: 0x8184, //CJK UNIFIED IDEOGRAPH - 0xC467: 0x8185, //CJK UNIFIED IDEOGRAPH - 0xC468: 0x8186, //CJK UNIFIED IDEOGRAPH - 0xC469: 0x8187, //CJK UNIFIED IDEOGRAPH - 0xC46A: 0x8189, //CJK UNIFIED IDEOGRAPH - 0xC46B: 0x818B, //CJK UNIFIED IDEOGRAPH - 0xC46C: 0x818C, //CJK UNIFIED IDEOGRAPH - 0xC46D: 0x818D, //CJK UNIFIED IDEOGRAPH - 0xC46E: 0x818E, //CJK UNIFIED IDEOGRAPH - 0xC46F: 0x8190, //CJK UNIFIED IDEOGRAPH - 0xC470: 0x8192, //CJK UNIFIED IDEOGRAPH - 0xC471: 0x8193, //CJK UNIFIED IDEOGRAPH - 0xC472: 0x8194, //CJK UNIFIED IDEOGRAPH - 0xC473: 0x8195, //CJK UNIFIED IDEOGRAPH - 0xC474: 0x8196, //CJK UNIFIED IDEOGRAPH - 0xC475: 0x8197, //CJK UNIFIED IDEOGRAPH - 0xC476: 0x8199, //CJK UNIFIED IDEOGRAPH - 0xC477: 0x819A, //CJK UNIFIED IDEOGRAPH - 0xC478: 0x819E, //CJK UNIFIED IDEOGRAPH - 0xC479: 0x819F, //CJK UNIFIED IDEOGRAPH - 0xC47A: 0x81A0, //CJK UNIFIED IDEOGRAPH - 0xC47B: 0x81A1, //CJK UNIFIED IDEOGRAPH - 0xC47C: 0x81A2, //CJK UNIFIED IDEOGRAPH - 0xC47D: 0x81A4, //CJK UNIFIED IDEOGRAPH - 0xC47E: 0x81A5, //CJK UNIFIED IDEOGRAPH - 0xC480: 0x81A7, //CJK UNIFIED IDEOGRAPH - 0xC481: 0x81A9, //CJK UNIFIED IDEOGRAPH - 0xC482: 0x81AB, //CJK UNIFIED IDEOGRAPH - 0xC483: 0x81AC, //CJK UNIFIED IDEOGRAPH - 0xC484: 0x81AD, //CJK UNIFIED IDEOGRAPH - 0xC485: 0x81AE, //CJK UNIFIED IDEOGRAPH - 0xC486: 0x81AF, //CJK UNIFIED IDEOGRAPH - 0xC487: 0x81B0, //CJK UNIFIED IDEOGRAPH - 0xC488: 0x81B1, //CJK UNIFIED IDEOGRAPH - 0xC489: 0x81B2, //CJK UNIFIED IDEOGRAPH - 0xC48A: 0x81B4, //CJK UNIFIED IDEOGRAPH - 0xC48B: 0x81B5, //CJK UNIFIED IDEOGRAPH - 0xC48C: 0x81B6, //CJK UNIFIED IDEOGRAPH - 0xC48D: 0x81B7, //CJK UNIFIED IDEOGRAPH - 0xC48E: 0x81B8, //CJK UNIFIED IDEOGRAPH - 0xC48F: 0x81B9, //CJK UNIFIED IDEOGRAPH - 0xC490: 0x81BC, //CJK UNIFIED IDEOGRAPH - 0xC491: 0x81BD, //CJK UNIFIED IDEOGRAPH - 0xC492: 0x81BE, //CJK UNIFIED IDEOGRAPH - 0xC493: 0x81BF, //CJK UNIFIED IDEOGRAPH - 0xC494: 0x81C4, //CJK UNIFIED IDEOGRAPH - 0xC495: 0x81C5, //CJK UNIFIED IDEOGRAPH - 0xC496: 0x81C7, //CJK UNIFIED IDEOGRAPH - 0xC497: 0x81C8, //CJK UNIFIED IDEOGRAPH - 0xC498: 0x81C9, //CJK UNIFIED IDEOGRAPH - 0xC499: 0x81CB, //CJK UNIFIED IDEOGRAPH - 0xC49A: 0x81CD, //CJK UNIFIED IDEOGRAPH - 0xC49B: 0x81CE, //CJK UNIFIED IDEOGRAPH - 0xC49C: 0x81CF, //CJK UNIFIED IDEOGRAPH - 0xC49D: 0x81D0, //CJK UNIFIED IDEOGRAPH - 0xC49E: 0x81D1, //CJK UNIFIED IDEOGRAPH - 0xC49F: 0x81D2, //CJK UNIFIED IDEOGRAPH - 0xC4A0: 0x81D3, //CJK UNIFIED IDEOGRAPH - 0xC4A1: 0x6479, //CJK UNIFIED IDEOGRAPH - 0xC4A2: 0x8611, //CJK UNIFIED IDEOGRAPH - 0xC4A3: 0x6A21, //CJK UNIFIED IDEOGRAPH - 0xC4A4: 0x819C, //CJK UNIFIED IDEOGRAPH - 0xC4A5: 0x78E8, //CJK UNIFIED IDEOGRAPH - 0xC4A6: 0x6469, //CJK UNIFIED IDEOGRAPH - 0xC4A7: 0x9B54, //CJK UNIFIED IDEOGRAPH - 0xC4A8: 0x62B9, //CJK UNIFIED IDEOGRAPH - 0xC4A9: 0x672B, //CJK UNIFIED IDEOGRAPH - 0xC4AA: 0x83AB, //CJK UNIFIED IDEOGRAPH - 0xC4AB: 0x58A8, //CJK UNIFIED IDEOGRAPH - 0xC4AC: 0x9ED8, //CJK UNIFIED IDEOGRAPH - 0xC4AD: 0x6CAB, //CJK UNIFIED IDEOGRAPH - 0xC4AE: 0x6F20, //CJK UNIFIED IDEOGRAPH - 0xC4AF: 0x5BDE, //CJK UNIFIED IDEOGRAPH - 0xC4B0: 0x964C, //CJK UNIFIED IDEOGRAPH - 0xC4B1: 0x8C0B, //CJK UNIFIED IDEOGRAPH - 0xC4B2: 0x725F, //CJK UNIFIED IDEOGRAPH - 0xC4B3: 0x67D0, //CJK UNIFIED IDEOGRAPH - 0xC4B4: 0x62C7, //CJK UNIFIED IDEOGRAPH - 0xC4B5: 0x7261, //CJK UNIFIED IDEOGRAPH - 0xC4B6: 0x4EA9, //CJK UNIFIED IDEOGRAPH - 0xC4B7: 0x59C6, //CJK UNIFIED IDEOGRAPH - 0xC4B8: 0x6BCD, //CJK UNIFIED IDEOGRAPH - 0xC4B9: 0x5893, //CJK UNIFIED IDEOGRAPH - 0xC4BA: 0x66AE, //CJK UNIFIED IDEOGRAPH - 0xC4BB: 0x5E55, //CJK UNIFIED IDEOGRAPH - 0xC4BC: 0x52DF, //CJK UNIFIED IDEOGRAPH - 0xC4BD: 0x6155, //CJK UNIFIED IDEOGRAPH - 0xC4BE: 0x6728, //CJK UNIFIED IDEOGRAPH - 0xC4BF: 0x76EE, //CJK UNIFIED IDEOGRAPH - 0xC4C0: 0x7766, //CJK UNIFIED IDEOGRAPH - 0xC4C1: 0x7267, //CJK UNIFIED IDEOGRAPH - 0xC4C2: 0x7A46, //CJK UNIFIED IDEOGRAPH - 0xC4C3: 0x62FF, //CJK UNIFIED IDEOGRAPH - 0xC4C4: 0x54EA, //CJK UNIFIED IDEOGRAPH - 0xC4C5: 0x5450, //CJK UNIFIED IDEOGRAPH - 0xC4C6: 0x94A0, //CJK UNIFIED IDEOGRAPH - 0xC4C7: 0x90A3, //CJK UNIFIED IDEOGRAPH - 0xC4C8: 0x5A1C, //CJK UNIFIED IDEOGRAPH - 0xC4C9: 0x7EB3, //CJK UNIFIED IDEOGRAPH - 0xC4CA: 0x6C16, //CJK UNIFIED IDEOGRAPH - 0xC4CB: 0x4E43, //CJK UNIFIED IDEOGRAPH - 0xC4CC: 0x5976, //CJK UNIFIED IDEOGRAPH - 0xC4CD: 0x8010, //CJK UNIFIED IDEOGRAPH - 0xC4CE: 0x5948, //CJK UNIFIED IDEOGRAPH - 0xC4CF: 0x5357, //CJK UNIFIED IDEOGRAPH - 0xC4D0: 0x7537, //CJK UNIFIED IDEOGRAPH - 0xC4D1: 0x96BE, //CJK UNIFIED IDEOGRAPH - 0xC4D2: 0x56CA, //CJK UNIFIED IDEOGRAPH - 0xC4D3: 0x6320, //CJK UNIFIED IDEOGRAPH - 0xC4D4: 0x8111, //CJK UNIFIED IDEOGRAPH - 0xC4D5: 0x607C, //CJK UNIFIED IDEOGRAPH - 0xC4D6: 0x95F9, //CJK UNIFIED IDEOGRAPH - 0xC4D7: 0x6DD6, //CJK UNIFIED IDEOGRAPH - 0xC4D8: 0x5462, //CJK UNIFIED IDEOGRAPH - 0xC4D9: 0x9981, //CJK UNIFIED IDEOGRAPH - 0xC4DA: 0x5185, //CJK UNIFIED IDEOGRAPH - 0xC4DB: 0x5AE9, //CJK UNIFIED IDEOGRAPH - 0xC4DC: 0x80FD, //CJK UNIFIED IDEOGRAPH - 0xC4DD: 0x59AE, //CJK UNIFIED IDEOGRAPH - 0xC4DE: 0x9713, //CJK UNIFIED IDEOGRAPH - 0xC4DF: 0x502A, //CJK UNIFIED IDEOGRAPH - 0xC4E0: 0x6CE5, //CJK UNIFIED IDEOGRAPH - 0xC4E1: 0x5C3C, //CJK UNIFIED IDEOGRAPH - 0xC4E2: 0x62DF, //CJK UNIFIED IDEOGRAPH - 0xC4E3: 0x4F60, //CJK UNIFIED IDEOGRAPH - 0xC4E4: 0x533F, //CJK UNIFIED IDEOGRAPH - 0xC4E5: 0x817B, //CJK UNIFIED IDEOGRAPH - 0xC4E6: 0x9006, //CJK UNIFIED IDEOGRAPH - 0xC4E7: 0x6EBA, //CJK UNIFIED IDEOGRAPH - 0xC4E8: 0x852B, //CJK UNIFIED IDEOGRAPH - 0xC4E9: 0x62C8, //CJK UNIFIED IDEOGRAPH - 0xC4EA: 0x5E74, //CJK UNIFIED IDEOGRAPH - 0xC4EB: 0x78BE, //CJK UNIFIED IDEOGRAPH - 0xC4EC: 0x64B5, //CJK UNIFIED IDEOGRAPH - 0xC4ED: 0x637B, //CJK UNIFIED IDEOGRAPH - 0xC4EE: 0x5FF5, //CJK UNIFIED IDEOGRAPH - 0xC4EF: 0x5A18, //CJK UNIFIED IDEOGRAPH - 0xC4F0: 0x917F, //CJK UNIFIED IDEOGRAPH - 0xC4F1: 0x9E1F, //CJK UNIFIED IDEOGRAPH - 0xC4F2: 0x5C3F, //CJK UNIFIED IDEOGRAPH - 0xC4F3: 0x634F, //CJK UNIFIED IDEOGRAPH - 0xC4F4: 0x8042, //CJK UNIFIED IDEOGRAPH - 0xC4F5: 0x5B7D, //CJK UNIFIED IDEOGRAPH - 0xC4F6: 0x556E, //CJK UNIFIED IDEOGRAPH - 0xC4F7: 0x954A, //CJK UNIFIED IDEOGRAPH - 0xC4F8: 0x954D, //CJK UNIFIED IDEOGRAPH - 0xC4F9: 0x6D85, //CJK UNIFIED IDEOGRAPH - 0xC4FA: 0x60A8, //CJK UNIFIED IDEOGRAPH - 0xC4FB: 0x67E0, //CJK UNIFIED IDEOGRAPH - 0xC4FC: 0x72DE, //CJK UNIFIED IDEOGRAPH - 0xC4FD: 0x51DD, //CJK UNIFIED IDEOGRAPH - 0xC4FE: 0x5B81, //CJK UNIFIED IDEOGRAPH - 0xC540: 0x81D4, //CJK UNIFIED IDEOGRAPH - 0xC541: 0x81D5, //CJK UNIFIED IDEOGRAPH - 0xC542: 0x81D6, //CJK UNIFIED IDEOGRAPH - 0xC543: 0x81D7, //CJK UNIFIED IDEOGRAPH - 0xC544: 0x81D8, //CJK UNIFIED IDEOGRAPH - 0xC545: 0x81D9, //CJK UNIFIED IDEOGRAPH - 0xC546: 0x81DA, //CJK UNIFIED IDEOGRAPH - 0xC547: 0x81DB, //CJK UNIFIED IDEOGRAPH - 0xC548: 0x81DC, //CJK UNIFIED IDEOGRAPH - 0xC549: 0x81DD, //CJK UNIFIED IDEOGRAPH - 0xC54A: 0x81DE, //CJK UNIFIED IDEOGRAPH - 0xC54B: 0x81DF, //CJK UNIFIED IDEOGRAPH - 0xC54C: 0x81E0, //CJK UNIFIED IDEOGRAPH - 0xC54D: 0x81E1, //CJK UNIFIED IDEOGRAPH - 0xC54E: 0x81E2, //CJK UNIFIED IDEOGRAPH - 0xC54F: 0x81E4, //CJK UNIFIED IDEOGRAPH - 0xC550: 0x81E5, //CJK UNIFIED IDEOGRAPH - 0xC551: 0x81E6, //CJK UNIFIED IDEOGRAPH - 0xC552: 0x81E8, //CJK UNIFIED IDEOGRAPH - 0xC553: 0x81E9, //CJK UNIFIED IDEOGRAPH - 0xC554: 0x81EB, //CJK UNIFIED IDEOGRAPH - 0xC555: 0x81EE, //CJK UNIFIED IDEOGRAPH - 0xC556: 0x81EF, //CJK UNIFIED IDEOGRAPH - 0xC557: 0x81F0, //CJK UNIFIED IDEOGRAPH - 0xC558: 0x81F1, //CJK UNIFIED IDEOGRAPH - 0xC559: 0x81F2, //CJK UNIFIED IDEOGRAPH - 0xC55A: 0x81F5, //CJK UNIFIED IDEOGRAPH - 0xC55B: 0x81F6, //CJK UNIFIED IDEOGRAPH - 0xC55C: 0x81F7, //CJK UNIFIED IDEOGRAPH - 0xC55D: 0x81F8, //CJK UNIFIED IDEOGRAPH - 0xC55E: 0x81F9, //CJK UNIFIED IDEOGRAPH - 0xC55F: 0x81FA, //CJK UNIFIED IDEOGRAPH - 0xC560: 0x81FD, //CJK UNIFIED IDEOGRAPH - 0xC561: 0x81FF, //CJK UNIFIED IDEOGRAPH - 0xC562: 0x8203, //CJK UNIFIED IDEOGRAPH - 0xC563: 0x8207, //CJK UNIFIED IDEOGRAPH - 0xC564: 0x8208, //CJK UNIFIED IDEOGRAPH - 0xC565: 0x8209, //CJK UNIFIED IDEOGRAPH - 0xC566: 0x820A, //CJK UNIFIED IDEOGRAPH - 0xC567: 0x820B, //CJK UNIFIED IDEOGRAPH - 0xC568: 0x820E, //CJK UNIFIED IDEOGRAPH - 0xC569: 0x820F, //CJK UNIFIED IDEOGRAPH - 0xC56A: 0x8211, //CJK UNIFIED IDEOGRAPH - 0xC56B: 0x8213, //CJK UNIFIED IDEOGRAPH - 0xC56C: 0x8215, //CJK UNIFIED IDEOGRAPH - 0xC56D: 0x8216, //CJK UNIFIED IDEOGRAPH - 0xC56E: 0x8217, //CJK UNIFIED IDEOGRAPH - 0xC56F: 0x8218, //CJK UNIFIED IDEOGRAPH - 0xC570: 0x8219, //CJK UNIFIED IDEOGRAPH - 0xC571: 0x821A, //CJK UNIFIED IDEOGRAPH - 0xC572: 0x821D, //CJK UNIFIED IDEOGRAPH - 0xC573: 0x8220, //CJK UNIFIED IDEOGRAPH - 0xC574: 0x8224, //CJK UNIFIED IDEOGRAPH - 0xC575: 0x8225, //CJK UNIFIED IDEOGRAPH - 0xC576: 0x8226, //CJK UNIFIED IDEOGRAPH - 0xC577: 0x8227, //CJK UNIFIED IDEOGRAPH - 0xC578: 0x8229, //CJK UNIFIED IDEOGRAPH - 0xC579: 0x822E, //CJK UNIFIED IDEOGRAPH - 0xC57A: 0x8232, //CJK UNIFIED IDEOGRAPH - 0xC57B: 0x823A, //CJK UNIFIED IDEOGRAPH - 0xC57C: 0x823C, //CJK UNIFIED IDEOGRAPH - 0xC57D: 0x823D, //CJK UNIFIED IDEOGRAPH - 0xC57E: 0x823F, //CJK UNIFIED IDEOGRAPH - 0xC580: 0x8240, //CJK UNIFIED IDEOGRAPH - 0xC581: 0x8241, //CJK UNIFIED IDEOGRAPH - 0xC582: 0x8242, //CJK UNIFIED IDEOGRAPH - 0xC583: 0x8243, //CJK UNIFIED IDEOGRAPH - 0xC584: 0x8245, //CJK UNIFIED IDEOGRAPH - 0xC585: 0x8246, //CJK UNIFIED IDEOGRAPH - 0xC586: 0x8248, //CJK UNIFIED IDEOGRAPH - 0xC587: 0x824A, //CJK UNIFIED IDEOGRAPH - 0xC588: 0x824C, //CJK UNIFIED IDEOGRAPH - 0xC589: 0x824D, //CJK UNIFIED IDEOGRAPH - 0xC58A: 0x824E, //CJK UNIFIED IDEOGRAPH - 0xC58B: 0x8250, //CJK UNIFIED IDEOGRAPH - 0xC58C: 0x8251, //CJK UNIFIED IDEOGRAPH - 0xC58D: 0x8252, //CJK UNIFIED IDEOGRAPH - 0xC58E: 0x8253, //CJK UNIFIED IDEOGRAPH - 0xC58F: 0x8254, //CJK UNIFIED IDEOGRAPH - 0xC590: 0x8255, //CJK UNIFIED IDEOGRAPH - 0xC591: 0x8256, //CJK UNIFIED IDEOGRAPH - 0xC592: 0x8257, //CJK UNIFIED IDEOGRAPH - 0xC593: 0x8259, //CJK UNIFIED IDEOGRAPH - 0xC594: 0x825B, //CJK UNIFIED IDEOGRAPH - 0xC595: 0x825C, //CJK UNIFIED IDEOGRAPH - 0xC596: 0x825D, //CJK UNIFIED IDEOGRAPH - 0xC597: 0x825E, //CJK UNIFIED IDEOGRAPH - 0xC598: 0x8260, //CJK UNIFIED IDEOGRAPH - 0xC599: 0x8261, //CJK UNIFIED IDEOGRAPH - 0xC59A: 0x8262, //CJK UNIFIED IDEOGRAPH - 0xC59B: 0x8263, //CJK UNIFIED IDEOGRAPH - 0xC59C: 0x8264, //CJK UNIFIED IDEOGRAPH - 0xC59D: 0x8265, //CJK UNIFIED IDEOGRAPH - 0xC59E: 0x8266, //CJK UNIFIED IDEOGRAPH - 0xC59F: 0x8267, //CJK UNIFIED IDEOGRAPH - 0xC5A0: 0x8269, //CJK UNIFIED IDEOGRAPH - 0xC5A1: 0x62E7, //CJK UNIFIED IDEOGRAPH - 0xC5A2: 0x6CDE, //CJK UNIFIED IDEOGRAPH - 0xC5A3: 0x725B, //CJK UNIFIED IDEOGRAPH - 0xC5A4: 0x626D, //CJK UNIFIED IDEOGRAPH - 0xC5A5: 0x94AE, //CJK UNIFIED IDEOGRAPH - 0xC5A6: 0x7EBD, //CJK UNIFIED IDEOGRAPH - 0xC5A7: 0x8113, //CJK UNIFIED IDEOGRAPH - 0xC5A8: 0x6D53, //CJK UNIFIED IDEOGRAPH - 0xC5A9: 0x519C, //CJK UNIFIED IDEOGRAPH - 0xC5AA: 0x5F04, //CJK UNIFIED IDEOGRAPH - 0xC5AB: 0x5974, //CJK UNIFIED IDEOGRAPH - 0xC5AC: 0x52AA, //CJK UNIFIED IDEOGRAPH - 0xC5AD: 0x6012, //CJK UNIFIED IDEOGRAPH - 0xC5AE: 0x5973, //CJK UNIFIED IDEOGRAPH - 0xC5AF: 0x6696, //CJK UNIFIED IDEOGRAPH - 0xC5B0: 0x8650, //CJK UNIFIED IDEOGRAPH - 0xC5B1: 0x759F, //CJK UNIFIED IDEOGRAPH - 0xC5B2: 0x632A, //CJK UNIFIED IDEOGRAPH - 0xC5B3: 0x61E6, //CJK UNIFIED IDEOGRAPH - 0xC5B4: 0x7CEF, //CJK UNIFIED IDEOGRAPH - 0xC5B5: 0x8BFA, //CJK UNIFIED IDEOGRAPH - 0xC5B6: 0x54E6, //CJK UNIFIED IDEOGRAPH - 0xC5B7: 0x6B27, //CJK UNIFIED IDEOGRAPH - 0xC5B8: 0x9E25, //CJK UNIFIED IDEOGRAPH - 0xC5B9: 0x6BB4, //CJK UNIFIED IDEOGRAPH - 0xC5BA: 0x85D5, //CJK UNIFIED IDEOGRAPH - 0xC5BB: 0x5455, //CJK UNIFIED IDEOGRAPH - 0xC5BC: 0x5076, //CJK UNIFIED IDEOGRAPH - 0xC5BD: 0x6CA4, //CJK UNIFIED IDEOGRAPH - 0xC5BE: 0x556A, //CJK UNIFIED IDEOGRAPH - 0xC5BF: 0x8DB4, //CJK UNIFIED IDEOGRAPH - 0xC5C0: 0x722C, //CJK UNIFIED IDEOGRAPH - 0xC5C1: 0x5E15, //CJK UNIFIED IDEOGRAPH - 0xC5C2: 0x6015, //CJK UNIFIED IDEOGRAPH - 0xC5C3: 0x7436, //CJK UNIFIED IDEOGRAPH - 0xC5C4: 0x62CD, //CJK UNIFIED IDEOGRAPH - 0xC5C5: 0x6392, //CJK UNIFIED IDEOGRAPH - 0xC5C6: 0x724C, //CJK UNIFIED IDEOGRAPH - 0xC5C7: 0x5F98, //CJK UNIFIED IDEOGRAPH - 0xC5C8: 0x6E43, //CJK UNIFIED IDEOGRAPH - 0xC5C9: 0x6D3E, //CJK UNIFIED IDEOGRAPH - 0xC5CA: 0x6500, //CJK UNIFIED IDEOGRAPH - 0xC5CB: 0x6F58, //CJK UNIFIED IDEOGRAPH - 0xC5CC: 0x76D8, //CJK UNIFIED IDEOGRAPH - 0xC5CD: 0x78D0, //CJK UNIFIED IDEOGRAPH - 0xC5CE: 0x76FC, //CJK UNIFIED IDEOGRAPH - 0xC5CF: 0x7554, //CJK UNIFIED IDEOGRAPH - 0xC5D0: 0x5224, //CJK UNIFIED IDEOGRAPH - 0xC5D1: 0x53DB, //CJK UNIFIED IDEOGRAPH - 0xC5D2: 0x4E53, //CJK UNIFIED IDEOGRAPH - 0xC5D3: 0x5E9E, //CJK UNIFIED IDEOGRAPH - 0xC5D4: 0x65C1, //CJK UNIFIED IDEOGRAPH - 0xC5D5: 0x802A, //CJK UNIFIED IDEOGRAPH - 0xC5D6: 0x80D6, //CJK UNIFIED IDEOGRAPH - 0xC5D7: 0x629B, //CJK UNIFIED IDEOGRAPH - 0xC5D8: 0x5486, //CJK UNIFIED IDEOGRAPH - 0xC5D9: 0x5228, //CJK UNIFIED IDEOGRAPH - 0xC5DA: 0x70AE, //CJK UNIFIED IDEOGRAPH - 0xC5DB: 0x888D, //CJK UNIFIED IDEOGRAPH - 0xC5DC: 0x8DD1, //CJK UNIFIED IDEOGRAPH - 0xC5DD: 0x6CE1, //CJK UNIFIED IDEOGRAPH - 0xC5DE: 0x5478, //CJK UNIFIED IDEOGRAPH - 0xC5DF: 0x80DA, //CJK UNIFIED IDEOGRAPH - 0xC5E0: 0x57F9, //CJK UNIFIED IDEOGRAPH - 0xC5E1: 0x88F4, //CJK UNIFIED IDEOGRAPH - 0xC5E2: 0x8D54, //CJK UNIFIED IDEOGRAPH - 0xC5E3: 0x966A, //CJK UNIFIED IDEOGRAPH - 0xC5E4: 0x914D, //CJK UNIFIED IDEOGRAPH - 0xC5E5: 0x4F69, //CJK UNIFIED IDEOGRAPH - 0xC5E6: 0x6C9B, //CJK UNIFIED IDEOGRAPH - 0xC5E7: 0x55B7, //CJK UNIFIED IDEOGRAPH - 0xC5E8: 0x76C6, //CJK UNIFIED IDEOGRAPH - 0xC5E9: 0x7830, //CJK UNIFIED IDEOGRAPH - 0xC5EA: 0x62A8, //CJK UNIFIED IDEOGRAPH - 0xC5EB: 0x70F9, //CJK UNIFIED IDEOGRAPH - 0xC5EC: 0x6F8E, //CJK UNIFIED IDEOGRAPH - 0xC5ED: 0x5F6D, //CJK UNIFIED IDEOGRAPH - 0xC5EE: 0x84EC, //CJK UNIFIED IDEOGRAPH - 0xC5EF: 0x68DA, //CJK UNIFIED IDEOGRAPH - 0xC5F0: 0x787C, //CJK UNIFIED IDEOGRAPH - 0xC5F1: 0x7BF7, //CJK UNIFIED IDEOGRAPH - 0xC5F2: 0x81A8, //CJK UNIFIED IDEOGRAPH - 0xC5F3: 0x670B, //CJK UNIFIED IDEOGRAPH - 0xC5F4: 0x9E4F, //CJK UNIFIED IDEOGRAPH - 0xC5F5: 0x6367, //CJK UNIFIED IDEOGRAPH - 0xC5F6: 0x78B0, //CJK UNIFIED IDEOGRAPH - 0xC5F7: 0x576F, //CJK UNIFIED IDEOGRAPH - 0xC5F8: 0x7812, //CJK UNIFIED IDEOGRAPH - 0xC5F9: 0x9739, //CJK UNIFIED IDEOGRAPH - 0xC5FA: 0x6279, //CJK UNIFIED IDEOGRAPH - 0xC5FB: 0x62AB, //CJK UNIFIED IDEOGRAPH - 0xC5FC: 0x5288, //CJK UNIFIED IDEOGRAPH - 0xC5FD: 0x7435, //CJK UNIFIED IDEOGRAPH - 0xC5FE: 0x6BD7, //CJK UNIFIED IDEOGRAPH - 0xC640: 0x826A, //CJK UNIFIED IDEOGRAPH - 0xC641: 0x826B, //CJK UNIFIED IDEOGRAPH - 0xC642: 0x826C, //CJK UNIFIED IDEOGRAPH - 0xC643: 0x826D, //CJK UNIFIED IDEOGRAPH - 0xC644: 0x8271, //CJK UNIFIED IDEOGRAPH - 0xC645: 0x8275, //CJK UNIFIED IDEOGRAPH - 0xC646: 0x8276, //CJK UNIFIED IDEOGRAPH - 0xC647: 0x8277, //CJK UNIFIED IDEOGRAPH - 0xC648: 0x8278, //CJK UNIFIED IDEOGRAPH - 0xC649: 0x827B, //CJK UNIFIED IDEOGRAPH - 0xC64A: 0x827C, //CJK UNIFIED IDEOGRAPH - 0xC64B: 0x8280, //CJK UNIFIED IDEOGRAPH - 0xC64C: 0x8281, //CJK UNIFIED IDEOGRAPH - 0xC64D: 0x8283, //CJK UNIFIED IDEOGRAPH - 0xC64E: 0x8285, //CJK UNIFIED IDEOGRAPH - 0xC64F: 0x8286, //CJK UNIFIED IDEOGRAPH - 0xC650: 0x8287, //CJK UNIFIED IDEOGRAPH - 0xC651: 0x8289, //CJK UNIFIED IDEOGRAPH - 0xC652: 0x828C, //CJK UNIFIED IDEOGRAPH - 0xC653: 0x8290, //CJK UNIFIED IDEOGRAPH - 0xC654: 0x8293, //CJK UNIFIED IDEOGRAPH - 0xC655: 0x8294, //CJK UNIFIED IDEOGRAPH - 0xC656: 0x8295, //CJK UNIFIED IDEOGRAPH - 0xC657: 0x8296, //CJK UNIFIED IDEOGRAPH - 0xC658: 0x829A, //CJK UNIFIED IDEOGRAPH - 0xC659: 0x829B, //CJK UNIFIED IDEOGRAPH - 0xC65A: 0x829E, //CJK UNIFIED IDEOGRAPH - 0xC65B: 0x82A0, //CJK UNIFIED IDEOGRAPH - 0xC65C: 0x82A2, //CJK UNIFIED IDEOGRAPH - 0xC65D: 0x82A3, //CJK UNIFIED IDEOGRAPH - 0xC65E: 0x82A7, //CJK UNIFIED IDEOGRAPH - 0xC65F: 0x82B2, //CJK UNIFIED IDEOGRAPH - 0xC660: 0x82B5, //CJK UNIFIED IDEOGRAPH - 0xC661: 0x82B6, //CJK UNIFIED IDEOGRAPH - 0xC662: 0x82BA, //CJK UNIFIED IDEOGRAPH - 0xC663: 0x82BB, //CJK UNIFIED IDEOGRAPH - 0xC664: 0x82BC, //CJK UNIFIED IDEOGRAPH - 0xC665: 0x82BF, //CJK UNIFIED IDEOGRAPH - 0xC666: 0x82C0, //CJK UNIFIED IDEOGRAPH - 0xC667: 0x82C2, //CJK UNIFIED IDEOGRAPH - 0xC668: 0x82C3, //CJK UNIFIED IDEOGRAPH - 0xC669: 0x82C5, //CJK UNIFIED IDEOGRAPH - 0xC66A: 0x82C6, //CJK UNIFIED IDEOGRAPH - 0xC66B: 0x82C9, //CJK UNIFIED IDEOGRAPH - 0xC66C: 0x82D0, //CJK UNIFIED IDEOGRAPH - 0xC66D: 0x82D6, //CJK UNIFIED IDEOGRAPH - 0xC66E: 0x82D9, //CJK UNIFIED IDEOGRAPH - 0xC66F: 0x82DA, //CJK UNIFIED IDEOGRAPH - 0xC670: 0x82DD, //CJK UNIFIED IDEOGRAPH - 0xC671: 0x82E2, //CJK UNIFIED IDEOGRAPH - 0xC672: 0x82E7, //CJK UNIFIED IDEOGRAPH - 0xC673: 0x82E8, //CJK UNIFIED IDEOGRAPH - 0xC674: 0x82E9, //CJK UNIFIED IDEOGRAPH - 0xC675: 0x82EA, //CJK UNIFIED IDEOGRAPH - 0xC676: 0x82EC, //CJK UNIFIED IDEOGRAPH - 0xC677: 0x82ED, //CJK UNIFIED IDEOGRAPH - 0xC678: 0x82EE, //CJK UNIFIED IDEOGRAPH - 0xC679: 0x82F0, //CJK UNIFIED IDEOGRAPH - 0xC67A: 0x82F2, //CJK UNIFIED IDEOGRAPH - 0xC67B: 0x82F3, //CJK UNIFIED IDEOGRAPH - 0xC67C: 0x82F5, //CJK UNIFIED IDEOGRAPH - 0xC67D: 0x82F6, //CJK UNIFIED IDEOGRAPH - 0xC67E: 0x82F8, //CJK UNIFIED IDEOGRAPH - 0xC680: 0x82FA, //CJK UNIFIED IDEOGRAPH - 0xC681: 0x82FC, //CJK UNIFIED IDEOGRAPH - 0xC682: 0x82FD, //CJK UNIFIED IDEOGRAPH - 0xC683: 0x82FE, //CJK UNIFIED IDEOGRAPH - 0xC684: 0x82FF, //CJK UNIFIED IDEOGRAPH - 0xC685: 0x8300, //CJK UNIFIED IDEOGRAPH - 0xC686: 0x830A, //CJK UNIFIED IDEOGRAPH - 0xC687: 0x830B, //CJK UNIFIED IDEOGRAPH - 0xC688: 0x830D, //CJK UNIFIED IDEOGRAPH - 0xC689: 0x8310, //CJK UNIFIED IDEOGRAPH - 0xC68A: 0x8312, //CJK UNIFIED IDEOGRAPH - 0xC68B: 0x8313, //CJK UNIFIED IDEOGRAPH - 0xC68C: 0x8316, //CJK UNIFIED IDEOGRAPH - 0xC68D: 0x8318, //CJK UNIFIED IDEOGRAPH - 0xC68E: 0x8319, //CJK UNIFIED IDEOGRAPH - 0xC68F: 0x831D, //CJK UNIFIED IDEOGRAPH - 0xC690: 0x831E, //CJK UNIFIED IDEOGRAPH - 0xC691: 0x831F, //CJK UNIFIED IDEOGRAPH - 0xC692: 0x8320, //CJK UNIFIED IDEOGRAPH - 0xC693: 0x8321, //CJK UNIFIED IDEOGRAPH - 0xC694: 0x8322, //CJK UNIFIED IDEOGRAPH - 0xC695: 0x8323, //CJK UNIFIED IDEOGRAPH - 0xC696: 0x8324, //CJK UNIFIED IDEOGRAPH - 0xC697: 0x8325, //CJK UNIFIED IDEOGRAPH - 0xC698: 0x8326, //CJK UNIFIED IDEOGRAPH - 0xC699: 0x8329, //CJK UNIFIED IDEOGRAPH - 0xC69A: 0x832A, //CJK UNIFIED IDEOGRAPH - 0xC69B: 0x832E, //CJK UNIFIED IDEOGRAPH - 0xC69C: 0x8330, //CJK UNIFIED IDEOGRAPH - 0xC69D: 0x8332, //CJK UNIFIED IDEOGRAPH - 0xC69E: 0x8337, //CJK UNIFIED IDEOGRAPH - 0xC69F: 0x833B, //CJK UNIFIED IDEOGRAPH - 0xC6A0: 0x833D, //CJK UNIFIED IDEOGRAPH - 0xC6A1: 0x5564, //CJK UNIFIED IDEOGRAPH - 0xC6A2: 0x813E, //CJK UNIFIED IDEOGRAPH - 0xC6A3: 0x75B2, //CJK UNIFIED IDEOGRAPH - 0xC6A4: 0x76AE, //CJK UNIFIED IDEOGRAPH - 0xC6A5: 0x5339, //CJK UNIFIED IDEOGRAPH - 0xC6A6: 0x75DE, //CJK UNIFIED IDEOGRAPH - 0xC6A7: 0x50FB, //CJK UNIFIED IDEOGRAPH - 0xC6A8: 0x5C41, //CJK UNIFIED IDEOGRAPH - 0xC6A9: 0x8B6C, //CJK UNIFIED IDEOGRAPH - 0xC6AA: 0x7BC7, //CJK UNIFIED IDEOGRAPH - 0xC6AB: 0x504F, //CJK UNIFIED IDEOGRAPH - 0xC6AC: 0x7247, //CJK UNIFIED IDEOGRAPH - 0xC6AD: 0x9A97, //CJK UNIFIED IDEOGRAPH - 0xC6AE: 0x98D8, //CJK UNIFIED IDEOGRAPH - 0xC6AF: 0x6F02, //CJK UNIFIED IDEOGRAPH - 0xC6B0: 0x74E2, //CJK UNIFIED IDEOGRAPH - 0xC6B1: 0x7968, //CJK UNIFIED IDEOGRAPH - 0xC6B2: 0x6487, //CJK UNIFIED IDEOGRAPH - 0xC6B3: 0x77A5, //CJK UNIFIED IDEOGRAPH - 0xC6B4: 0x62FC, //CJK UNIFIED IDEOGRAPH - 0xC6B5: 0x9891, //CJK UNIFIED IDEOGRAPH - 0xC6B6: 0x8D2B, //CJK UNIFIED IDEOGRAPH - 0xC6B7: 0x54C1, //CJK UNIFIED IDEOGRAPH - 0xC6B8: 0x8058, //CJK UNIFIED IDEOGRAPH - 0xC6B9: 0x4E52, //CJK UNIFIED IDEOGRAPH - 0xC6BA: 0x576A, //CJK UNIFIED IDEOGRAPH - 0xC6BB: 0x82F9, //CJK UNIFIED IDEOGRAPH - 0xC6BC: 0x840D, //CJK UNIFIED IDEOGRAPH - 0xC6BD: 0x5E73, //CJK UNIFIED IDEOGRAPH - 0xC6BE: 0x51ED, //CJK UNIFIED IDEOGRAPH - 0xC6BF: 0x74F6, //CJK UNIFIED IDEOGRAPH - 0xC6C0: 0x8BC4, //CJK UNIFIED IDEOGRAPH - 0xC6C1: 0x5C4F, //CJK UNIFIED IDEOGRAPH - 0xC6C2: 0x5761, //CJK UNIFIED IDEOGRAPH - 0xC6C3: 0x6CFC, //CJK UNIFIED IDEOGRAPH - 0xC6C4: 0x9887, //CJK UNIFIED IDEOGRAPH - 0xC6C5: 0x5A46, //CJK UNIFIED IDEOGRAPH - 0xC6C6: 0x7834, //CJK UNIFIED IDEOGRAPH - 0xC6C7: 0x9B44, //CJK UNIFIED IDEOGRAPH - 0xC6C8: 0x8FEB, //CJK UNIFIED IDEOGRAPH - 0xC6C9: 0x7C95, //CJK UNIFIED IDEOGRAPH - 0xC6CA: 0x5256, //CJK UNIFIED IDEOGRAPH - 0xC6CB: 0x6251, //CJK UNIFIED IDEOGRAPH - 0xC6CC: 0x94FA, //CJK UNIFIED IDEOGRAPH - 0xC6CD: 0x4EC6, //CJK UNIFIED IDEOGRAPH - 0xC6CE: 0x8386, //CJK UNIFIED IDEOGRAPH - 0xC6CF: 0x8461, //CJK UNIFIED IDEOGRAPH - 0xC6D0: 0x83E9, //CJK UNIFIED IDEOGRAPH - 0xC6D1: 0x84B2, //CJK UNIFIED IDEOGRAPH - 0xC6D2: 0x57D4, //CJK UNIFIED IDEOGRAPH - 0xC6D3: 0x6734, //CJK UNIFIED IDEOGRAPH - 0xC6D4: 0x5703, //CJK UNIFIED IDEOGRAPH - 0xC6D5: 0x666E, //CJK UNIFIED IDEOGRAPH - 0xC6D6: 0x6D66, //CJK UNIFIED IDEOGRAPH - 0xC6D7: 0x8C31, //CJK UNIFIED IDEOGRAPH - 0xC6D8: 0x66DD, //CJK UNIFIED IDEOGRAPH - 0xC6D9: 0x7011, //CJK UNIFIED IDEOGRAPH - 0xC6DA: 0x671F, //CJK UNIFIED IDEOGRAPH - 0xC6DB: 0x6B3A, //CJK UNIFIED IDEOGRAPH - 0xC6DC: 0x6816, //CJK UNIFIED IDEOGRAPH - 0xC6DD: 0x621A, //CJK UNIFIED IDEOGRAPH - 0xC6DE: 0x59BB, //CJK UNIFIED IDEOGRAPH - 0xC6DF: 0x4E03, //CJK UNIFIED IDEOGRAPH - 0xC6E0: 0x51C4, //CJK UNIFIED IDEOGRAPH - 0xC6E1: 0x6F06, //CJK UNIFIED IDEOGRAPH - 0xC6E2: 0x67D2, //CJK UNIFIED IDEOGRAPH - 0xC6E3: 0x6C8F, //CJK UNIFIED IDEOGRAPH - 0xC6E4: 0x5176, //CJK UNIFIED IDEOGRAPH - 0xC6E5: 0x68CB, //CJK UNIFIED IDEOGRAPH - 0xC6E6: 0x5947, //CJK UNIFIED IDEOGRAPH - 0xC6E7: 0x6B67, //CJK UNIFIED IDEOGRAPH - 0xC6E8: 0x7566, //CJK UNIFIED IDEOGRAPH - 0xC6E9: 0x5D0E, //CJK UNIFIED IDEOGRAPH - 0xC6EA: 0x8110, //CJK UNIFIED IDEOGRAPH - 0xC6EB: 0x9F50, //CJK UNIFIED IDEOGRAPH - 0xC6EC: 0x65D7, //CJK UNIFIED IDEOGRAPH - 0xC6ED: 0x7948, //CJK UNIFIED IDEOGRAPH - 0xC6EE: 0x7941, //CJK UNIFIED IDEOGRAPH - 0xC6EF: 0x9A91, //CJK UNIFIED IDEOGRAPH - 0xC6F0: 0x8D77, //CJK UNIFIED IDEOGRAPH - 0xC6F1: 0x5C82, //CJK UNIFIED IDEOGRAPH - 0xC6F2: 0x4E5E, //CJK UNIFIED IDEOGRAPH - 0xC6F3: 0x4F01, //CJK UNIFIED IDEOGRAPH - 0xC6F4: 0x542F, //CJK UNIFIED IDEOGRAPH - 0xC6F5: 0x5951, //CJK UNIFIED IDEOGRAPH - 0xC6F6: 0x780C, //CJK UNIFIED IDEOGRAPH - 0xC6F7: 0x5668, //CJK UNIFIED IDEOGRAPH - 0xC6F8: 0x6C14, //CJK UNIFIED IDEOGRAPH - 0xC6F9: 0x8FC4, //CJK UNIFIED IDEOGRAPH - 0xC6FA: 0x5F03, //CJK UNIFIED IDEOGRAPH - 0xC6FB: 0x6C7D, //CJK UNIFIED IDEOGRAPH - 0xC6FC: 0x6CE3, //CJK UNIFIED IDEOGRAPH - 0xC6FD: 0x8BAB, //CJK UNIFIED IDEOGRAPH - 0xC6FE: 0x6390, //CJK UNIFIED IDEOGRAPH - 0xC740: 0x833E, //CJK UNIFIED IDEOGRAPH - 0xC741: 0x833F, //CJK UNIFIED IDEOGRAPH - 0xC742: 0x8341, //CJK UNIFIED IDEOGRAPH - 0xC743: 0x8342, //CJK UNIFIED IDEOGRAPH - 0xC744: 0x8344, //CJK UNIFIED IDEOGRAPH - 0xC745: 0x8345, //CJK UNIFIED IDEOGRAPH - 0xC746: 0x8348, //CJK UNIFIED IDEOGRAPH - 0xC747: 0x834A, //CJK UNIFIED IDEOGRAPH - 0xC748: 0x834B, //CJK UNIFIED IDEOGRAPH - 0xC749: 0x834C, //CJK UNIFIED IDEOGRAPH - 0xC74A: 0x834D, //CJK UNIFIED IDEOGRAPH - 0xC74B: 0x834E, //CJK UNIFIED IDEOGRAPH - 0xC74C: 0x8353, //CJK UNIFIED IDEOGRAPH - 0xC74D: 0x8355, //CJK UNIFIED IDEOGRAPH - 0xC74E: 0x8356, //CJK UNIFIED IDEOGRAPH - 0xC74F: 0x8357, //CJK UNIFIED IDEOGRAPH - 0xC750: 0x8358, //CJK UNIFIED IDEOGRAPH - 0xC751: 0x8359, //CJK UNIFIED IDEOGRAPH - 0xC752: 0x835D, //CJK UNIFIED IDEOGRAPH - 0xC753: 0x8362, //CJK UNIFIED IDEOGRAPH - 0xC754: 0x8370, //CJK UNIFIED IDEOGRAPH - 0xC755: 0x8371, //CJK UNIFIED IDEOGRAPH - 0xC756: 0x8372, //CJK UNIFIED IDEOGRAPH - 0xC757: 0x8373, //CJK UNIFIED IDEOGRAPH - 0xC758: 0x8374, //CJK UNIFIED IDEOGRAPH - 0xC759: 0x8375, //CJK UNIFIED IDEOGRAPH - 0xC75A: 0x8376, //CJK UNIFIED IDEOGRAPH - 0xC75B: 0x8379, //CJK UNIFIED IDEOGRAPH - 0xC75C: 0x837A, //CJK UNIFIED IDEOGRAPH - 0xC75D: 0x837E, //CJK UNIFIED IDEOGRAPH - 0xC75E: 0x837F, //CJK UNIFIED IDEOGRAPH - 0xC75F: 0x8380, //CJK UNIFIED IDEOGRAPH - 0xC760: 0x8381, //CJK UNIFIED IDEOGRAPH - 0xC761: 0x8382, //CJK UNIFIED IDEOGRAPH - 0xC762: 0x8383, //CJK UNIFIED IDEOGRAPH - 0xC763: 0x8384, //CJK UNIFIED IDEOGRAPH - 0xC764: 0x8387, //CJK UNIFIED IDEOGRAPH - 0xC765: 0x8388, //CJK UNIFIED IDEOGRAPH - 0xC766: 0x838A, //CJK UNIFIED IDEOGRAPH - 0xC767: 0x838B, //CJK UNIFIED IDEOGRAPH - 0xC768: 0x838C, //CJK UNIFIED IDEOGRAPH - 0xC769: 0x838D, //CJK UNIFIED IDEOGRAPH - 0xC76A: 0x838F, //CJK UNIFIED IDEOGRAPH - 0xC76B: 0x8390, //CJK UNIFIED IDEOGRAPH - 0xC76C: 0x8391, //CJK UNIFIED IDEOGRAPH - 0xC76D: 0x8394, //CJK UNIFIED IDEOGRAPH - 0xC76E: 0x8395, //CJK UNIFIED IDEOGRAPH - 0xC76F: 0x8396, //CJK UNIFIED IDEOGRAPH - 0xC770: 0x8397, //CJK UNIFIED IDEOGRAPH - 0xC771: 0x8399, //CJK UNIFIED IDEOGRAPH - 0xC772: 0x839A, //CJK UNIFIED IDEOGRAPH - 0xC773: 0x839D, //CJK UNIFIED IDEOGRAPH - 0xC774: 0x839F, //CJK UNIFIED IDEOGRAPH - 0xC775: 0x83A1, //CJK UNIFIED IDEOGRAPH - 0xC776: 0x83A2, //CJK UNIFIED IDEOGRAPH - 0xC777: 0x83A3, //CJK UNIFIED IDEOGRAPH - 0xC778: 0x83A4, //CJK UNIFIED IDEOGRAPH - 0xC779: 0x83A5, //CJK UNIFIED IDEOGRAPH - 0xC77A: 0x83A6, //CJK UNIFIED IDEOGRAPH - 0xC77B: 0x83A7, //CJK UNIFIED IDEOGRAPH - 0xC77C: 0x83AC, //CJK UNIFIED IDEOGRAPH - 0xC77D: 0x83AD, //CJK UNIFIED IDEOGRAPH - 0xC77E: 0x83AE, //CJK UNIFIED IDEOGRAPH - 0xC780: 0x83AF, //CJK UNIFIED IDEOGRAPH - 0xC781: 0x83B5, //CJK UNIFIED IDEOGRAPH - 0xC782: 0x83BB, //CJK UNIFIED IDEOGRAPH - 0xC783: 0x83BE, //CJK UNIFIED IDEOGRAPH - 0xC784: 0x83BF, //CJK UNIFIED IDEOGRAPH - 0xC785: 0x83C2, //CJK UNIFIED IDEOGRAPH - 0xC786: 0x83C3, //CJK UNIFIED IDEOGRAPH - 0xC787: 0x83C4, //CJK UNIFIED IDEOGRAPH - 0xC788: 0x83C6, //CJK UNIFIED IDEOGRAPH - 0xC789: 0x83C8, //CJK UNIFIED IDEOGRAPH - 0xC78A: 0x83C9, //CJK UNIFIED IDEOGRAPH - 0xC78B: 0x83CB, //CJK UNIFIED IDEOGRAPH - 0xC78C: 0x83CD, //CJK UNIFIED IDEOGRAPH - 0xC78D: 0x83CE, //CJK UNIFIED IDEOGRAPH - 0xC78E: 0x83D0, //CJK UNIFIED IDEOGRAPH - 0xC78F: 0x83D1, //CJK UNIFIED IDEOGRAPH - 0xC790: 0x83D2, //CJK UNIFIED IDEOGRAPH - 0xC791: 0x83D3, //CJK UNIFIED IDEOGRAPH - 0xC792: 0x83D5, //CJK UNIFIED IDEOGRAPH - 0xC793: 0x83D7, //CJK UNIFIED IDEOGRAPH - 0xC794: 0x83D9, //CJK UNIFIED IDEOGRAPH - 0xC795: 0x83DA, //CJK UNIFIED IDEOGRAPH - 0xC796: 0x83DB, //CJK UNIFIED IDEOGRAPH - 0xC797: 0x83DE, //CJK UNIFIED IDEOGRAPH - 0xC798: 0x83E2, //CJK UNIFIED IDEOGRAPH - 0xC799: 0x83E3, //CJK UNIFIED IDEOGRAPH - 0xC79A: 0x83E4, //CJK UNIFIED IDEOGRAPH - 0xC79B: 0x83E6, //CJK UNIFIED IDEOGRAPH - 0xC79C: 0x83E7, //CJK UNIFIED IDEOGRAPH - 0xC79D: 0x83E8, //CJK UNIFIED IDEOGRAPH - 0xC79E: 0x83EB, //CJK UNIFIED IDEOGRAPH - 0xC79F: 0x83EC, //CJK UNIFIED IDEOGRAPH - 0xC7A0: 0x83ED, //CJK UNIFIED IDEOGRAPH - 0xC7A1: 0x6070, //CJK UNIFIED IDEOGRAPH - 0xC7A2: 0x6D3D, //CJK UNIFIED IDEOGRAPH - 0xC7A3: 0x7275, //CJK UNIFIED IDEOGRAPH - 0xC7A4: 0x6266, //CJK UNIFIED IDEOGRAPH - 0xC7A5: 0x948E, //CJK UNIFIED IDEOGRAPH - 0xC7A6: 0x94C5, //CJK UNIFIED IDEOGRAPH - 0xC7A7: 0x5343, //CJK UNIFIED IDEOGRAPH - 0xC7A8: 0x8FC1, //CJK UNIFIED IDEOGRAPH - 0xC7A9: 0x7B7E, //CJK UNIFIED IDEOGRAPH - 0xC7AA: 0x4EDF, //CJK UNIFIED IDEOGRAPH - 0xC7AB: 0x8C26, //CJK UNIFIED IDEOGRAPH - 0xC7AC: 0x4E7E, //CJK UNIFIED IDEOGRAPH - 0xC7AD: 0x9ED4, //CJK UNIFIED IDEOGRAPH - 0xC7AE: 0x94B1, //CJK UNIFIED IDEOGRAPH - 0xC7AF: 0x94B3, //CJK UNIFIED IDEOGRAPH - 0xC7B0: 0x524D, //CJK UNIFIED IDEOGRAPH - 0xC7B1: 0x6F5C, //CJK UNIFIED IDEOGRAPH - 0xC7B2: 0x9063, //CJK UNIFIED IDEOGRAPH - 0xC7B3: 0x6D45, //CJK UNIFIED IDEOGRAPH - 0xC7B4: 0x8C34, //CJK UNIFIED IDEOGRAPH - 0xC7B5: 0x5811, //CJK UNIFIED IDEOGRAPH - 0xC7B6: 0x5D4C, //CJK UNIFIED IDEOGRAPH - 0xC7B7: 0x6B20, //CJK UNIFIED IDEOGRAPH - 0xC7B8: 0x6B49, //CJK UNIFIED IDEOGRAPH - 0xC7B9: 0x67AA, //CJK UNIFIED IDEOGRAPH - 0xC7BA: 0x545B, //CJK UNIFIED IDEOGRAPH - 0xC7BB: 0x8154, //CJK UNIFIED IDEOGRAPH - 0xC7BC: 0x7F8C, //CJK UNIFIED IDEOGRAPH - 0xC7BD: 0x5899, //CJK UNIFIED IDEOGRAPH - 0xC7BE: 0x8537, //CJK UNIFIED IDEOGRAPH - 0xC7BF: 0x5F3A, //CJK UNIFIED IDEOGRAPH - 0xC7C0: 0x62A2, //CJK UNIFIED IDEOGRAPH - 0xC7C1: 0x6A47, //CJK UNIFIED IDEOGRAPH - 0xC7C2: 0x9539, //CJK UNIFIED IDEOGRAPH - 0xC7C3: 0x6572, //CJK UNIFIED IDEOGRAPH - 0xC7C4: 0x6084, //CJK UNIFIED IDEOGRAPH - 0xC7C5: 0x6865, //CJK UNIFIED IDEOGRAPH - 0xC7C6: 0x77A7, //CJK UNIFIED IDEOGRAPH - 0xC7C7: 0x4E54, //CJK UNIFIED IDEOGRAPH - 0xC7C8: 0x4FA8, //CJK UNIFIED IDEOGRAPH - 0xC7C9: 0x5DE7, //CJK UNIFIED IDEOGRAPH - 0xC7CA: 0x9798, //CJK UNIFIED IDEOGRAPH - 0xC7CB: 0x64AC, //CJK UNIFIED IDEOGRAPH - 0xC7CC: 0x7FD8, //CJK UNIFIED IDEOGRAPH - 0xC7CD: 0x5CED, //CJK UNIFIED IDEOGRAPH - 0xC7CE: 0x4FCF, //CJK UNIFIED IDEOGRAPH - 0xC7CF: 0x7A8D, //CJK UNIFIED IDEOGRAPH - 0xC7D0: 0x5207, //CJK UNIFIED IDEOGRAPH - 0xC7D1: 0x8304, //CJK UNIFIED IDEOGRAPH - 0xC7D2: 0x4E14, //CJK UNIFIED IDEOGRAPH - 0xC7D3: 0x602F, //CJK UNIFIED IDEOGRAPH - 0xC7D4: 0x7A83, //CJK UNIFIED IDEOGRAPH - 0xC7D5: 0x94A6, //CJK UNIFIED IDEOGRAPH - 0xC7D6: 0x4FB5, //CJK UNIFIED IDEOGRAPH - 0xC7D7: 0x4EB2, //CJK UNIFIED IDEOGRAPH - 0xC7D8: 0x79E6, //CJK UNIFIED IDEOGRAPH - 0xC7D9: 0x7434, //CJK UNIFIED IDEOGRAPH - 0xC7DA: 0x52E4, //CJK UNIFIED IDEOGRAPH - 0xC7DB: 0x82B9, //CJK UNIFIED IDEOGRAPH - 0xC7DC: 0x64D2, //CJK UNIFIED IDEOGRAPH - 0xC7DD: 0x79BD, //CJK UNIFIED IDEOGRAPH - 0xC7DE: 0x5BDD, //CJK UNIFIED IDEOGRAPH - 0xC7DF: 0x6C81, //CJK UNIFIED IDEOGRAPH - 0xC7E0: 0x9752, //CJK UNIFIED IDEOGRAPH - 0xC7E1: 0x8F7B, //CJK UNIFIED IDEOGRAPH - 0xC7E2: 0x6C22, //CJK UNIFIED IDEOGRAPH - 0xC7E3: 0x503E, //CJK UNIFIED IDEOGRAPH - 0xC7E4: 0x537F, //CJK UNIFIED IDEOGRAPH - 0xC7E5: 0x6E05, //CJK UNIFIED IDEOGRAPH - 0xC7E6: 0x64CE, //CJK UNIFIED IDEOGRAPH - 0xC7E7: 0x6674, //CJK UNIFIED IDEOGRAPH - 0xC7E8: 0x6C30, //CJK UNIFIED IDEOGRAPH - 0xC7E9: 0x60C5, //CJK UNIFIED IDEOGRAPH - 0xC7EA: 0x9877, //CJK UNIFIED IDEOGRAPH - 0xC7EB: 0x8BF7, //CJK UNIFIED IDEOGRAPH - 0xC7EC: 0x5E86, //CJK UNIFIED IDEOGRAPH - 0xC7ED: 0x743C, //CJK UNIFIED IDEOGRAPH - 0xC7EE: 0x7A77, //CJK UNIFIED IDEOGRAPH - 0xC7EF: 0x79CB, //CJK UNIFIED IDEOGRAPH - 0xC7F0: 0x4E18, //CJK UNIFIED IDEOGRAPH - 0xC7F1: 0x90B1, //CJK UNIFIED IDEOGRAPH - 0xC7F2: 0x7403, //CJK UNIFIED IDEOGRAPH - 0xC7F3: 0x6C42, //CJK UNIFIED IDEOGRAPH - 0xC7F4: 0x56DA, //CJK UNIFIED IDEOGRAPH - 0xC7F5: 0x914B, //CJK UNIFIED IDEOGRAPH - 0xC7F6: 0x6CC5, //CJK UNIFIED IDEOGRAPH - 0xC7F7: 0x8D8B, //CJK UNIFIED IDEOGRAPH - 0xC7F8: 0x533A, //CJK UNIFIED IDEOGRAPH - 0xC7F9: 0x86C6, //CJK UNIFIED IDEOGRAPH - 0xC7FA: 0x66F2, //CJK UNIFIED IDEOGRAPH - 0xC7FB: 0x8EAF, //CJK UNIFIED IDEOGRAPH - 0xC7FC: 0x5C48, //CJK UNIFIED IDEOGRAPH - 0xC7FD: 0x9A71, //CJK UNIFIED IDEOGRAPH - 0xC7FE: 0x6E20, //CJK UNIFIED IDEOGRAPH - 0xC840: 0x83EE, //CJK UNIFIED IDEOGRAPH - 0xC841: 0x83EF, //CJK UNIFIED IDEOGRAPH - 0xC842: 0x83F3, //CJK UNIFIED IDEOGRAPH - 0xC843: 0x83F4, //CJK UNIFIED IDEOGRAPH - 0xC844: 0x83F5, //CJK UNIFIED IDEOGRAPH - 0xC845: 0x83F6, //CJK UNIFIED IDEOGRAPH - 0xC846: 0x83F7, //CJK UNIFIED IDEOGRAPH - 0xC847: 0x83FA, //CJK UNIFIED IDEOGRAPH - 0xC848: 0x83FB, //CJK UNIFIED IDEOGRAPH - 0xC849: 0x83FC, //CJK UNIFIED IDEOGRAPH - 0xC84A: 0x83FE, //CJK UNIFIED IDEOGRAPH - 0xC84B: 0x83FF, //CJK UNIFIED IDEOGRAPH - 0xC84C: 0x8400, //CJK UNIFIED IDEOGRAPH - 0xC84D: 0x8402, //CJK UNIFIED IDEOGRAPH - 0xC84E: 0x8405, //CJK UNIFIED IDEOGRAPH - 0xC84F: 0x8407, //CJK UNIFIED IDEOGRAPH - 0xC850: 0x8408, //CJK UNIFIED IDEOGRAPH - 0xC851: 0x8409, //CJK UNIFIED IDEOGRAPH - 0xC852: 0x840A, //CJK UNIFIED IDEOGRAPH - 0xC853: 0x8410, //CJK UNIFIED IDEOGRAPH - 0xC854: 0x8412, //CJK UNIFIED IDEOGRAPH - 0xC855: 0x8413, //CJK UNIFIED IDEOGRAPH - 0xC856: 0x8414, //CJK UNIFIED IDEOGRAPH - 0xC857: 0x8415, //CJK UNIFIED IDEOGRAPH - 0xC858: 0x8416, //CJK UNIFIED IDEOGRAPH - 0xC859: 0x8417, //CJK UNIFIED IDEOGRAPH - 0xC85A: 0x8419, //CJK UNIFIED IDEOGRAPH - 0xC85B: 0x841A, //CJK UNIFIED IDEOGRAPH - 0xC85C: 0x841B, //CJK UNIFIED IDEOGRAPH - 0xC85D: 0x841E, //CJK UNIFIED IDEOGRAPH - 0xC85E: 0x841F, //CJK UNIFIED IDEOGRAPH - 0xC85F: 0x8420, //CJK UNIFIED IDEOGRAPH - 0xC860: 0x8421, //CJK UNIFIED IDEOGRAPH - 0xC861: 0x8422, //CJK UNIFIED IDEOGRAPH - 0xC862: 0x8423, //CJK UNIFIED IDEOGRAPH - 0xC863: 0x8429, //CJK UNIFIED IDEOGRAPH - 0xC864: 0x842A, //CJK UNIFIED IDEOGRAPH - 0xC865: 0x842B, //CJK UNIFIED IDEOGRAPH - 0xC866: 0x842C, //CJK UNIFIED IDEOGRAPH - 0xC867: 0x842D, //CJK UNIFIED IDEOGRAPH - 0xC868: 0x842E, //CJK UNIFIED IDEOGRAPH - 0xC869: 0x842F, //CJK UNIFIED IDEOGRAPH - 0xC86A: 0x8430, //CJK UNIFIED IDEOGRAPH - 0xC86B: 0x8432, //CJK UNIFIED IDEOGRAPH - 0xC86C: 0x8433, //CJK UNIFIED IDEOGRAPH - 0xC86D: 0x8434, //CJK UNIFIED IDEOGRAPH - 0xC86E: 0x8435, //CJK UNIFIED IDEOGRAPH - 0xC86F: 0x8436, //CJK UNIFIED IDEOGRAPH - 0xC870: 0x8437, //CJK UNIFIED IDEOGRAPH - 0xC871: 0x8439, //CJK UNIFIED IDEOGRAPH - 0xC872: 0x843A, //CJK UNIFIED IDEOGRAPH - 0xC873: 0x843B, //CJK UNIFIED IDEOGRAPH - 0xC874: 0x843E, //CJK UNIFIED IDEOGRAPH - 0xC875: 0x843F, //CJK UNIFIED IDEOGRAPH - 0xC876: 0x8440, //CJK UNIFIED IDEOGRAPH - 0xC877: 0x8441, //CJK UNIFIED IDEOGRAPH - 0xC878: 0x8442, //CJK UNIFIED IDEOGRAPH - 0xC879: 0x8443, //CJK UNIFIED IDEOGRAPH - 0xC87A: 0x8444, //CJK UNIFIED IDEOGRAPH - 0xC87B: 0x8445, //CJK UNIFIED IDEOGRAPH - 0xC87C: 0x8447, //CJK UNIFIED IDEOGRAPH - 0xC87D: 0x8448, //CJK UNIFIED IDEOGRAPH - 0xC87E: 0x8449, //CJK UNIFIED IDEOGRAPH - 0xC880: 0x844A, //CJK UNIFIED IDEOGRAPH - 0xC881: 0x844B, //CJK UNIFIED IDEOGRAPH - 0xC882: 0x844C, //CJK UNIFIED IDEOGRAPH - 0xC883: 0x844D, //CJK UNIFIED IDEOGRAPH - 0xC884: 0x844E, //CJK UNIFIED IDEOGRAPH - 0xC885: 0x844F, //CJK UNIFIED IDEOGRAPH - 0xC886: 0x8450, //CJK UNIFIED IDEOGRAPH - 0xC887: 0x8452, //CJK UNIFIED IDEOGRAPH - 0xC888: 0x8453, //CJK UNIFIED IDEOGRAPH - 0xC889: 0x8454, //CJK UNIFIED IDEOGRAPH - 0xC88A: 0x8455, //CJK UNIFIED IDEOGRAPH - 0xC88B: 0x8456, //CJK UNIFIED IDEOGRAPH - 0xC88C: 0x8458, //CJK UNIFIED IDEOGRAPH - 0xC88D: 0x845D, //CJK UNIFIED IDEOGRAPH - 0xC88E: 0x845E, //CJK UNIFIED IDEOGRAPH - 0xC88F: 0x845F, //CJK UNIFIED IDEOGRAPH - 0xC890: 0x8460, //CJK UNIFIED IDEOGRAPH - 0xC891: 0x8462, //CJK UNIFIED IDEOGRAPH - 0xC892: 0x8464, //CJK UNIFIED IDEOGRAPH - 0xC893: 0x8465, //CJK UNIFIED IDEOGRAPH - 0xC894: 0x8466, //CJK UNIFIED IDEOGRAPH - 0xC895: 0x8467, //CJK UNIFIED IDEOGRAPH - 0xC896: 0x8468, //CJK UNIFIED IDEOGRAPH - 0xC897: 0x846A, //CJK UNIFIED IDEOGRAPH - 0xC898: 0x846E, //CJK UNIFIED IDEOGRAPH - 0xC899: 0x846F, //CJK UNIFIED IDEOGRAPH - 0xC89A: 0x8470, //CJK UNIFIED IDEOGRAPH - 0xC89B: 0x8472, //CJK UNIFIED IDEOGRAPH - 0xC89C: 0x8474, //CJK UNIFIED IDEOGRAPH - 0xC89D: 0x8477, //CJK UNIFIED IDEOGRAPH - 0xC89E: 0x8479, //CJK UNIFIED IDEOGRAPH - 0xC89F: 0x847B, //CJK UNIFIED IDEOGRAPH - 0xC8A0: 0x847C, //CJK UNIFIED IDEOGRAPH - 0xC8A1: 0x53D6, //CJK UNIFIED IDEOGRAPH - 0xC8A2: 0x5A36, //CJK UNIFIED IDEOGRAPH - 0xC8A3: 0x9F8B, //CJK UNIFIED IDEOGRAPH - 0xC8A4: 0x8DA3, //CJK UNIFIED IDEOGRAPH - 0xC8A5: 0x53BB, //CJK UNIFIED IDEOGRAPH - 0xC8A6: 0x5708, //CJK UNIFIED IDEOGRAPH - 0xC8A7: 0x98A7, //CJK UNIFIED IDEOGRAPH - 0xC8A8: 0x6743, //CJK UNIFIED IDEOGRAPH - 0xC8A9: 0x919B, //CJK UNIFIED IDEOGRAPH - 0xC8AA: 0x6CC9, //CJK UNIFIED IDEOGRAPH - 0xC8AB: 0x5168, //CJK UNIFIED IDEOGRAPH - 0xC8AC: 0x75CA, //CJK UNIFIED IDEOGRAPH - 0xC8AD: 0x62F3, //CJK UNIFIED IDEOGRAPH - 0xC8AE: 0x72AC, //CJK UNIFIED IDEOGRAPH - 0xC8AF: 0x5238, //CJK UNIFIED IDEOGRAPH - 0xC8B0: 0x529D, //CJK UNIFIED IDEOGRAPH - 0xC8B1: 0x7F3A, //CJK UNIFIED IDEOGRAPH - 0xC8B2: 0x7094, //CJK UNIFIED IDEOGRAPH - 0xC8B3: 0x7638, //CJK UNIFIED IDEOGRAPH - 0xC8B4: 0x5374, //CJK UNIFIED IDEOGRAPH - 0xC8B5: 0x9E4A, //CJK UNIFIED IDEOGRAPH - 0xC8B6: 0x69B7, //CJK UNIFIED IDEOGRAPH - 0xC8B7: 0x786E, //CJK UNIFIED IDEOGRAPH - 0xC8B8: 0x96C0, //CJK UNIFIED IDEOGRAPH - 0xC8B9: 0x88D9, //CJK UNIFIED IDEOGRAPH - 0xC8BA: 0x7FA4, //CJK UNIFIED IDEOGRAPH - 0xC8BB: 0x7136, //CJK UNIFIED IDEOGRAPH - 0xC8BC: 0x71C3, //CJK UNIFIED IDEOGRAPH - 0xC8BD: 0x5189, //CJK UNIFIED IDEOGRAPH - 0xC8BE: 0x67D3, //CJK UNIFIED IDEOGRAPH - 0xC8BF: 0x74E4, //CJK UNIFIED IDEOGRAPH - 0xC8C0: 0x58E4, //CJK UNIFIED IDEOGRAPH - 0xC8C1: 0x6518, //CJK UNIFIED IDEOGRAPH - 0xC8C2: 0x56B7, //CJK UNIFIED IDEOGRAPH - 0xC8C3: 0x8BA9, //CJK UNIFIED IDEOGRAPH - 0xC8C4: 0x9976, //CJK UNIFIED IDEOGRAPH - 0xC8C5: 0x6270, //CJK UNIFIED IDEOGRAPH - 0xC8C6: 0x7ED5, //CJK UNIFIED IDEOGRAPH - 0xC8C7: 0x60F9, //CJK UNIFIED IDEOGRAPH - 0xC8C8: 0x70ED, //CJK UNIFIED IDEOGRAPH - 0xC8C9: 0x58EC, //CJK UNIFIED IDEOGRAPH - 0xC8CA: 0x4EC1, //CJK UNIFIED IDEOGRAPH - 0xC8CB: 0x4EBA, //CJK UNIFIED IDEOGRAPH - 0xC8CC: 0x5FCD, //CJK UNIFIED IDEOGRAPH - 0xC8CD: 0x97E7, //CJK UNIFIED IDEOGRAPH - 0xC8CE: 0x4EFB, //CJK UNIFIED IDEOGRAPH - 0xC8CF: 0x8BA4, //CJK UNIFIED IDEOGRAPH - 0xC8D0: 0x5203, //CJK UNIFIED IDEOGRAPH - 0xC8D1: 0x598A, //CJK UNIFIED IDEOGRAPH - 0xC8D2: 0x7EAB, //CJK UNIFIED IDEOGRAPH - 0xC8D3: 0x6254, //CJK UNIFIED IDEOGRAPH - 0xC8D4: 0x4ECD, //CJK UNIFIED IDEOGRAPH - 0xC8D5: 0x65E5, //CJK UNIFIED IDEOGRAPH - 0xC8D6: 0x620E, //CJK UNIFIED IDEOGRAPH - 0xC8D7: 0x8338, //CJK UNIFIED IDEOGRAPH - 0xC8D8: 0x84C9, //CJK UNIFIED IDEOGRAPH - 0xC8D9: 0x8363, //CJK UNIFIED IDEOGRAPH - 0xC8DA: 0x878D, //CJK UNIFIED IDEOGRAPH - 0xC8DB: 0x7194, //CJK UNIFIED IDEOGRAPH - 0xC8DC: 0x6EB6, //CJK UNIFIED IDEOGRAPH - 0xC8DD: 0x5BB9, //CJK UNIFIED IDEOGRAPH - 0xC8DE: 0x7ED2, //CJK UNIFIED IDEOGRAPH - 0xC8DF: 0x5197, //CJK UNIFIED IDEOGRAPH - 0xC8E0: 0x63C9, //CJK UNIFIED IDEOGRAPH - 0xC8E1: 0x67D4, //CJK UNIFIED IDEOGRAPH - 0xC8E2: 0x8089, //CJK UNIFIED IDEOGRAPH - 0xC8E3: 0x8339, //CJK UNIFIED IDEOGRAPH - 0xC8E4: 0x8815, //CJK UNIFIED IDEOGRAPH - 0xC8E5: 0x5112, //CJK UNIFIED IDEOGRAPH - 0xC8E6: 0x5B7A, //CJK UNIFIED IDEOGRAPH - 0xC8E7: 0x5982, //CJK UNIFIED IDEOGRAPH - 0xC8E8: 0x8FB1, //CJK UNIFIED IDEOGRAPH - 0xC8E9: 0x4E73, //CJK UNIFIED IDEOGRAPH - 0xC8EA: 0x6C5D, //CJK UNIFIED IDEOGRAPH - 0xC8EB: 0x5165, //CJK UNIFIED IDEOGRAPH - 0xC8EC: 0x8925, //CJK UNIFIED IDEOGRAPH - 0xC8ED: 0x8F6F, //CJK UNIFIED IDEOGRAPH - 0xC8EE: 0x962E, //CJK UNIFIED IDEOGRAPH - 0xC8EF: 0x854A, //CJK UNIFIED IDEOGRAPH - 0xC8F0: 0x745E, //CJK UNIFIED IDEOGRAPH - 0xC8F1: 0x9510, //CJK UNIFIED IDEOGRAPH - 0xC8F2: 0x95F0, //CJK UNIFIED IDEOGRAPH - 0xC8F3: 0x6DA6, //CJK UNIFIED IDEOGRAPH - 0xC8F4: 0x82E5, //CJK UNIFIED IDEOGRAPH - 0xC8F5: 0x5F31, //CJK UNIFIED IDEOGRAPH - 0xC8F6: 0x6492, //CJK UNIFIED IDEOGRAPH - 0xC8F7: 0x6D12, //CJK UNIFIED IDEOGRAPH - 0xC8F8: 0x8428, //CJK UNIFIED IDEOGRAPH - 0xC8F9: 0x816E, //CJK UNIFIED IDEOGRAPH - 0xC8FA: 0x9CC3, //CJK UNIFIED IDEOGRAPH - 0xC8FB: 0x585E, //CJK UNIFIED IDEOGRAPH - 0xC8FC: 0x8D5B, //CJK UNIFIED IDEOGRAPH - 0xC8FD: 0x4E09, //CJK UNIFIED IDEOGRAPH - 0xC8FE: 0x53C1, //CJK UNIFIED IDEOGRAPH - 0xC940: 0x847D, //CJK UNIFIED IDEOGRAPH - 0xC941: 0x847E, //CJK UNIFIED IDEOGRAPH - 0xC942: 0x847F, //CJK UNIFIED IDEOGRAPH - 0xC943: 0x8480, //CJK UNIFIED IDEOGRAPH - 0xC944: 0x8481, //CJK UNIFIED IDEOGRAPH - 0xC945: 0x8483, //CJK UNIFIED IDEOGRAPH - 0xC946: 0x8484, //CJK UNIFIED IDEOGRAPH - 0xC947: 0x8485, //CJK UNIFIED IDEOGRAPH - 0xC948: 0x8486, //CJK UNIFIED IDEOGRAPH - 0xC949: 0x848A, //CJK UNIFIED IDEOGRAPH - 0xC94A: 0x848D, //CJK UNIFIED IDEOGRAPH - 0xC94B: 0x848F, //CJK UNIFIED IDEOGRAPH - 0xC94C: 0x8490, //CJK UNIFIED IDEOGRAPH - 0xC94D: 0x8491, //CJK UNIFIED IDEOGRAPH - 0xC94E: 0x8492, //CJK UNIFIED IDEOGRAPH - 0xC94F: 0x8493, //CJK UNIFIED IDEOGRAPH - 0xC950: 0x8494, //CJK UNIFIED IDEOGRAPH - 0xC951: 0x8495, //CJK UNIFIED IDEOGRAPH - 0xC952: 0x8496, //CJK UNIFIED IDEOGRAPH - 0xC953: 0x8498, //CJK UNIFIED IDEOGRAPH - 0xC954: 0x849A, //CJK UNIFIED IDEOGRAPH - 0xC955: 0x849B, //CJK UNIFIED IDEOGRAPH - 0xC956: 0x849D, //CJK UNIFIED IDEOGRAPH - 0xC957: 0x849E, //CJK UNIFIED IDEOGRAPH - 0xC958: 0x849F, //CJK UNIFIED IDEOGRAPH - 0xC959: 0x84A0, //CJK UNIFIED IDEOGRAPH - 0xC95A: 0x84A2, //CJK UNIFIED IDEOGRAPH - 0xC95B: 0x84A3, //CJK UNIFIED IDEOGRAPH - 0xC95C: 0x84A4, //CJK UNIFIED IDEOGRAPH - 0xC95D: 0x84A5, //CJK UNIFIED IDEOGRAPH - 0xC95E: 0x84A6, //CJK UNIFIED IDEOGRAPH - 0xC95F: 0x84A7, //CJK UNIFIED IDEOGRAPH - 0xC960: 0x84A8, //CJK UNIFIED IDEOGRAPH - 0xC961: 0x84A9, //CJK UNIFIED IDEOGRAPH - 0xC962: 0x84AA, //CJK UNIFIED IDEOGRAPH - 0xC963: 0x84AB, //CJK UNIFIED IDEOGRAPH - 0xC964: 0x84AC, //CJK UNIFIED IDEOGRAPH - 0xC965: 0x84AD, //CJK UNIFIED IDEOGRAPH - 0xC966: 0x84AE, //CJK UNIFIED IDEOGRAPH - 0xC967: 0x84B0, //CJK UNIFIED IDEOGRAPH - 0xC968: 0x84B1, //CJK UNIFIED IDEOGRAPH - 0xC969: 0x84B3, //CJK UNIFIED IDEOGRAPH - 0xC96A: 0x84B5, //CJK UNIFIED IDEOGRAPH - 0xC96B: 0x84B6, //CJK UNIFIED IDEOGRAPH - 0xC96C: 0x84B7, //CJK UNIFIED IDEOGRAPH - 0xC96D: 0x84BB, //CJK UNIFIED IDEOGRAPH - 0xC96E: 0x84BC, //CJK UNIFIED IDEOGRAPH - 0xC96F: 0x84BE, //CJK UNIFIED IDEOGRAPH - 0xC970: 0x84C0, //CJK UNIFIED IDEOGRAPH - 0xC971: 0x84C2, //CJK UNIFIED IDEOGRAPH - 0xC972: 0x84C3, //CJK UNIFIED IDEOGRAPH - 0xC973: 0x84C5, //CJK UNIFIED IDEOGRAPH - 0xC974: 0x84C6, //CJK UNIFIED IDEOGRAPH - 0xC975: 0x84C7, //CJK UNIFIED IDEOGRAPH - 0xC976: 0x84C8, //CJK UNIFIED IDEOGRAPH - 0xC977: 0x84CB, //CJK UNIFIED IDEOGRAPH - 0xC978: 0x84CC, //CJK UNIFIED IDEOGRAPH - 0xC979: 0x84CE, //CJK UNIFIED IDEOGRAPH - 0xC97A: 0x84CF, //CJK UNIFIED IDEOGRAPH - 0xC97B: 0x84D2, //CJK UNIFIED IDEOGRAPH - 0xC97C: 0x84D4, //CJK UNIFIED IDEOGRAPH - 0xC97D: 0x84D5, //CJK UNIFIED IDEOGRAPH - 0xC97E: 0x84D7, //CJK UNIFIED IDEOGRAPH - 0xC980: 0x84D8, //CJK UNIFIED IDEOGRAPH - 0xC981: 0x84D9, //CJK UNIFIED IDEOGRAPH - 0xC982: 0x84DA, //CJK UNIFIED IDEOGRAPH - 0xC983: 0x84DB, //CJK UNIFIED IDEOGRAPH - 0xC984: 0x84DC, //CJK UNIFIED IDEOGRAPH - 0xC985: 0x84DE, //CJK UNIFIED IDEOGRAPH - 0xC986: 0x84E1, //CJK UNIFIED IDEOGRAPH - 0xC987: 0x84E2, //CJK UNIFIED IDEOGRAPH - 0xC988: 0x84E4, //CJK UNIFIED IDEOGRAPH - 0xC989: 0x84E7, //CJK UNIFIED IDEOGRAPH - 0xC98A: 0x84E8, //CJK UNIFIED IDEOGRAPH - 0xC98B: 0x84E9, //CJK UNIFIED IDEOGRAPH - 0xC98C: 0x84EA, //CJK UNIFIED IDEOGRAPH - 0xC98D: 0x84EB, //CJK UNIFIED IDEOGRAPH - 0xC98E: 0x84ED, //CJK UNIFIED IDEOGRAPH - 0xC98F: 0x84EE, //CJK UNIFIED IDEOGRAPH - 0xC990: 0x84EF, //CJK UNIFIED IDEOGRAPH - 0xC991: 0x84F1, //CJK UNIFIED IDEOGRAPH - 0xC992: 0x84F2, //CJK UNIFIED IDEOGRAPH - 0xC993: 0x84F3, //CJK UNIFIED IDEOGRAPH - 0xC994: 0x84F4, //CJK UNIFIED IDEOGRAPH - 0xC995: 0x84F5, //CJK UNIFIED IDEOGRAPH - 0xC996: 0x84F6, //CJK UNIFIED IDEOGRAPH - 0xC997: 0x84F7, //CJK UNIFIED IDEOGRAPH - 0xC998: 0x84F8, //CJK UNIFIED IDEOGRAPH - 0xC999: 0x84F9, //CJK UNIFIED IDEOGRAPH - 0xC99A: 0x84FA, //CJK UNIFIED IDEOGRAPH - 0xC99B: 0x84FB, //CJK UNIFIED IDEOGRAPH - 0xC99C: 0x84FD, //CJK UNIFIED IDEOGRAPH - 0xC99D: 0x84FE, //CJK UNIFIED IDEOGRAPH - 0xC99E: 0x8500, //CJK UNIFIED IDEOGRAPH - 0xC99F: 0x8501, //CJK UNIFIED IDEOGRAPH - 0xC9A0: 0x8502, //CJK UNIFIED IDEOGRAPH - 0xC9A1: 0x4F1E, //CJK UNIFIED IDEOGRAPH - 0xC9A2: 0x6563, //CJK UNIFIED IDEOGRAPH - 0xC9A3: 0x6851, //CJK UNIFIED IDEOGRAPH - 0xC9A4: 0x55D3, //CJK UNIFIED IDEOGRAPH - 0xC9A5: 0x4E27, //CJK UNIFIED IDEOGRAPH - 0xC9A6: 0x6414, //CJK UNIFIED IDEOGRAPH - 0xC9A7: 0x9A9A, //CJK UNIFIED IDEOGRAPH - 0xC9A8: 0x626B, //CJK UNIFIED IDEOGRAPH - 0xC9A9: 0x5AC2, //CJK UNIFIED IDEOGRAPH - 0xC9AA: 0x745F, //CJK UNIFIED IDEOGRAPH - 0xC9AB: 0x8272, //CJK UNIFIED IDEOGRAPH - 0xC9AC: 0x6DA9, //CJK UNIFIED IDEOGRAPH - 0xC9AD: 0x68EE, //CJK UNIFIED IDEOGRAPH - 0xC9AE: 0x50E7, //CJK UNIFIED IDEOGRAPH - 0xC9AF: 0x838E, //CJK UNIFIED IDEOGRAPH - 0xC9B0: 0x7802, //CJK UNIFIED IDEOGRAPH - 0xC9B1: 0x6740, //CJK UNIFIED IDEOGRAPH - 0xC9B2: 0x5239, //CJK UNIFIED IDEOGRAPH - 0xC9B3: 0x6C99, //CJK UNIFIED IDEOGRAPH - 0xC9B4: 0x7EB1, //CJK UNIFIED IDEOGRAPH - 0xC9B5: 0x50BB, //CJK UNIFIED IDEOGRAPH - 0xC9B6: 0x5565, //CJK UNIFIED IDEOGRAPH - 0xC9B7: 0x715E, //CJK UNIFIED IDEOGRAPH - 0xC9B8: 0x7B5B, //CJK UNIFIED IDEOGRAPH - 0xC9B9: 0x6652, //CJK UNIFIED IDEOGRAPH - 0xC9BA: 0x73CA, //CJK UNIFIED IDEOGRAPH - 0xC9BB: 0x82EB, //CJK UNIFIED IDEOGRAPH - 0xC9BC: 0x6749, //CJK UNIFIED IDEOGRAPH - 0xC9BD: 0x5C71, //CJK UNIFIED IDEOGRAPH - 0xC9BE: 0x5220, //CJK UNIFIED IDEOGRAPH - 0xC9BF: 0x717D, //CJK UNIFIED IDEOGRAPH - 0xC9C0: 0x886B, //CJK UNIFIED IDEOGRAPH - 0xC9C1: 0x95EA, //CJK UNIFIED IDEOGRAPH - 0xC9C2: 0x9655, //CJK UNIFIED IDEOGRAPH - 0xC9C3: 0x64C5, //CJK UNIFIED IDEOGRAPH - 0xC9C4: 0x8D61, //CJK UNIFIED IDEOGRAPH - 0xC9C5: 0x81B3, //CJK UNIFIED IDEOGRAPH - 0xC9C6: 0x5584, //CJK UNIFIED IDEOGRAPH - 0xC9C7: 0x6C55, //CJK UNIFIED IDEOGRAPH - 0xC9C8: 0x6247, //CJK UNIFIED IDEOGRAPH - 0xC9C9: 0x7F2E, //CJK UNIFIED IDEOGRAPH - 0xC9CA: 0x5892, //CJK UNIFIED IDEOGRAPH - 0xC9CB: 0x4F24, //CJK UNIFIED IDEOGRAPH - 0xC9CC: 0x5546, //CJK UNIFIED IDEOGRAPH - 0xC9CD: 0x8D4F, //CJK UNIFIED IDEOGRAPH - 0xC9CE: 0x664C, //CJK UNIFIED IDEOGRAPH - 0xC9CF: 0x4E0A, //CJK UNIFIED IDEOGRAPH - 0xC9D0: 0x5C1A, //CJK UNIFIED IDEOGRAPH - 0xC9D1: 0x88F3, //CJK UNIFIED IDEOGRAPH - 0xC9D2: 0x68A2, //CJK UNIFIED IDEOGRAPH - 0xC9D3: 0x634E, //CJK UNIFIED IDEOGRAPH - 0xC9D4: 0x7A0D, //CJK UNIFIED IDEOGRAPH - 0xC9D5: 0x70E7, //CJK UNIFIED IDEOGRAPH - 0xC9D6: 0x828D, //CJK UNIFIED IDEOGRAPH - 0xC9D7: 0x52FA, //CJK UNIFIED IDEOGRAPH - 0xC9D8: 0x97F6, //CJK UNIFIED IDEOGRAPH - 0xC9D9: 0x5C11, //CJK UNIFIED IDEOGRAPH - 0xC9DA: 0x54E8, //CJK UNIFIED IDEOGRAPH - 0xC9DB: 0x90B5, //CJK UNIFIED IDEOGRAPH - 0xC9DC: 0x7ECD, //CJK UNIFIED IDEOGRAPH - 0xC9DD: 0x5962, //CJK UNIFIED IDEOGRAPH - 0xC9DE: 0x8D4A, //CJK UNIFIED IDEOGRAPH - 0xC9DF: 0x86C7, //CJK UNIFIED IDEOGRAPH - 0xC9E0: 0x820C, //CJK UNIFIED IDEOGRAPH - 0xC9E1: 0x820D, //CJK UNIFIED IDEOGRAPH - 0xC9E2: 0x8D66, //CJK UNIFIED IDEOGRAPH - 0xC9E3: 0x6444, //CJK UNIFIED IDEOGRAPH - 0xC9E4: 0x5C04, //CJK UNIFIED IDEOGRAPH - 0xC9E5: 0x6151, //CJK UNIFIED IDEOGRAPH - 0xC9E6: 0x6D89, //CJK UNIFIED IDEOGRAPH - 0xC9E7: 0x793E, //CJK UNIFIED IDEOGRAPH - 0xC9E8: 0x8BBE, //CJK UNIFIED IDEOGRAPH - 0xC9E9: 0x7837, //CJK UNIFIED IDEOGRAPH - 0xC9EA: 0x7533, //CJK UNIFIED IDEOGRAPH - 0xC9EB: 0x547B, //CJK UNIFIED IDEOGRAPH - 0xC9EC: 0x4F38, //CJK UNIFIED IDEOGRAPH - 0xC9ED: 0x8EAB, //CJK UNIFIED IDEOGRAPH - 0xC9EE: 0x6DF1, //CJK UNIFIED IDEOGRAPH - 0xC9EF: 0x5A20, //CJK UNIFIED IDEOGRAPH - 0xC9F0: 0x7EC5, //CJK UNIFIED IDEOGRAPH - 0xC9F1: 0x795E, //CJK UNIFIED IDEOGRAPH - 0xC9F2: 0x6C88, //CJK UNIFIED IDEOGRAPH - 0xC9F3: 0x5BA1, //CJK UNIFIED IDEOGRAPH - 0xC9F4: 0x5A76, //CJK UNIFIED IDEOGRAPH - 0xC9F5: 0x751A, //CJK UNIFIED IDEOGRAPH - 0xC9F6: 0x80BE, //CJK UNIFIED IDEOGRAPH - 0xC9F7: 0x614E, //CJK UNIFIED IDEOGRAPH - 0xC9F8: 0x6E17, //CJK UNIFIED IDEOGRAPH - 0xC9F9: 0x58F0, //CJK UNIFIED IDEOGRAPH - 0xC9FA: 0x751F, //CJK UNIFIED IDEOGRAPH - 0xC9FB: 0x7525, //CJK UNIFIED IDEOGRAPH - 0xC9FC: 0x7272, //CJK UNIFIED IDEOGRAPH - 0xC9FD: 0x5347, //CJK UNIFIED IDEOGRAPH - 0xC9FE: 0x7EF3, //CJK UNIFIED IDEOGRAPH - 0xCA40: 0x8503, //CJK UNIFIED IDEOGRAPH - 0xCA41: 0x8504, //CJK UNIFIED IDEOGRAPH - 0xCA42: 0x8505, //CJK UNIFIED IDEOGRAPH - 0xCA43: 0x8506, //CJK UNIFIED IDEOGRAPH - 0xCA44: 0x8507, //CJK UNIFIED IDEOGRAPH - 0xCA45: 0x8508, //CJK UNIFIED IDEOGRAPH - 0xCA46: 0x8509, //CJK UNIFIED IDEOGRAPH - 0xCA47: 0x850A, //CJK UNIFIED IDEOGRAPH - 0xCA48: 0x850B, //CJK UNIFIED IDEOGRAPH - 0xCA49: 0x850D, //CJK UNIFIED IDEOGRAPH - 0xCA4A: 0x850E, //CJK UNIFIED IDEOGRAPH - 0xCA4B: 0x850F, //CJK UNIFIED IDEOGRAPH - 0xCA4C: 0x8510, //CJK UNIFIED IDEOGRAPH - 0xCA4D: 0x8512, //CJK UNIFIED IDEOGRAPH - 0xCA4E: 0x8514, //CJK UNIFIED IDEOGRAPH - 0xCA4F: 0x8515, //CJK UNIFIED IDEOGRAPH - 0xCA50: 0x8516, //CJK UNIFIED IDEOGRAPH - 0xCA51: 0x8518, //CJK UNIFIED IDEOGRAPH - 0xCA52: 0x8519, //CJK UNIFIED IDEOGRAPH - 0xCA53: 0x851B, //CJK UNIFIED IDEOGRAPH - 0xCA54: 0x851C, //CJK UNIFIED IDEOGRAPH - 0xCA55: 0x851D, //CJK UNIFIED IDEOGRAPH - 0xCA56: 0x851E, //CJK UNIFIED IDEOGRAPH - 0xCA57: 0x8520, //CJK UNIFIED IDEOGRAPH - 0xCA58: 0x8522, //CJK UNIFIED IDEOGRAPH - 0xCA59: 0x8523, //CJK UNIFIED IDEOGRAPH - 0xCA5A: 0x8524, //CJK UNIFIED IDEOGRAPH - 0xCA5B: 0x8525, //CJK UNIFIED IDEOGRAPH - 0xCA5C: 0x8526, //CJK UNIFIED IDEOGRAPH - 0xCA5D: 0x8527, //CJK UNIFIED IDEOGRAPH - 0xCA5E: 0x8528, //CJK UNIFIED IDEOGRAPH - 0xCA5F: 0x8529, //CJK UNIFIED IDEOGRAPH - 0xCA60: 0x852A, //CJK UNIFIED IDEOGRAPH - 0xCA61: 0x852D, //CJK UNIFIED IDEOGRAPH - 0xCA62: 0x852E, //CJK UNIFIED IDEOGRAPH - 0xCA63: 0x852F, //CJK UNIFIED IDEOGRAPH - 0xCA64: 0x8530, //CJK UNIFIED IDEOGRAPH - 0xCA65: 0x8531, //CJK UNIFIED IDEOGRAPH - 0xCA66: 0x8532, //CJK UNIFIED IDEOGRAPH - 0xCA67: 0x8533, //CJK UNIFIED IDEOGRAPH - 0xCA68: 0x8534, //CJK UNIFIED IDEOGRAPH - 0xCA69: 0x8535, //CJK UNIFIED IDEOGRAPH - 0xCA6A: 0x8536, //CJK UNIFIED IDEOGRAPH - 0xCA6B: 0x853E, //CJK UNIFIED IDEOGRAPH - 0xCA6C: 0x853F, //CJK UNIFIED IDEOGRAPH - 0xCA6D: 0x8540, //CJK UNIFIED IDEOGRAPH - 0xCA6E: 0x8541, //CJK UNIFIED IDEOGRAPH - 0xCA6F: 0x8542, //CJK UNIFIED IDEOGRAPH - 0xCA70: 0x8544, //CJK UNIFIED IDEOGRAPH - 0xCA71: 0x8545, //CJK UNIFIED IDEOGRAPH - 0xCA72: 0x8546, //CJK UNIFIED IDEOGRAPH - 0xCA73: 0x8547, //CJK UNIFIED IDEOGRAPH - 0xCA74: 0x854B, //CJK UNIFIED IDEOGRAPH - 0xCA75: 0x854C, //CJK UNIFIED IDEOGRAPH - 0xCA76: 0x854D, //CJK UNIFIED IDEOGRAPH - 0xCA77: 0x854E, //CJK UNIFIED IDEOGRAPH - 0xCA78: 0x854F, //CJK UNIFIED IDEOGRAPH - 0xCA79: 0x8550, //CJK UNIFIED IDEOGRAPH - 0xCA7A: 0x8551, //CJK UNIFIED IDEOGRAPH - 0xCA7B: 0x8552, //CJK UNIFIED IDEOGRAPH - 0xCA7C: 0x8553, //CJK UNIFIED IDEOGRAPH - 0xCA7D: 0x8554, //CJK UNIFIED IDEOGRAPH - 0xCA7E: 0x8555, //CJK UNIFIED IDEOGRAPH - 0xCA80: 0x8557, //CJK UNIFIED IDEOGRAPH - 0xCA81: 0x8558, //CJK UNIFIED IDEOGRAPH - 0xCA82: 0x855A, //CJK UNIFIED IDEOGRAPH - 0xCA83: 0x855B, //CJK UNIFIED IDEOGRAPH - 0xCA84: 0x855C, //CJK UNIFIED IDEOGRAPH - 0xCA85: 0x855D, //CJK UNIFIED IDEOGRAPH - 0xCA86: 0x855F, //CJK UNIFIED IDEOGRAPH - 0xCA87: 0x8560, //CJK UNIFIED IDEOGRAPH - 0xCA88: 0x8561, //CJK UNIFIED IDEOGRAPH - 0xCA89: 0x8562, //CJK UNIFIED IDEOGRAPH - 0xCA8A: 0x8563, //CJK UNIFIED IDEOGRAPH - 0xCA8B: 0x8565, //CJK UNIFIED IDEOGRAPH - 0xCA8C: 0x8566, //CJK UNIFIED IDEOGRAPH - 0xCA8D: 0x8567, //CJK UNIFIED IDEOGRAPH - 0xCA8E: 0x8569, //CJK UNIFIED IDEOGRAPH - 0xCA8F: 0x856A, //CJK UNIFIED IDEOGRAPH - 0xCA90: 0x856B, //CJK UNIFIED IDEOGRAPH - 0xCA91: 0x856C, //CJK UNIFIED IDEOGRAPH - 0xCA92: 0x856D, //CJK UNIFIED IDEOGRAPH - 0xCA93: 0x856E, //CJK UNIFIED IDEOGRAPH - 0xCA94: 0x856F, //CJK UNIFIED IDEOGRAPH - 0xCA95: 0x8570, //CJK UNIFIED IDEOGRAPH - 0xCA96: 0x8571, //CJK UNIFIED IDEOGRAPH - 0xCA97: 0x8573, //CJK UNIFIED IDEOGRAPH - 0xCA98: 0x8575, //CJK UNIFIED IDEOGRAPH - 0xCA99: 0x8576, //CJK UNIFIED IDEOGRAPH - 0xCA9A: 0x8577, //CJK UNIFIED IDEOGRAPH - 0xCA9B: 0x8578, //CJK UNIFIED IDEOGRAPH - 0xCA9C: 0x857C, //CJK UNIFIED IDEOGRAPH - 0xCA9D: 0x857D, //CJK UNIFIED IDEOGRAPH - 0xCA9E: 0x857F, //CJK UNIFIED IDEOGRAPH - 0xCA9F: 0x8580, //CJK UNIFIED IDEOGRAPH - 0xCAA0: 0x8581, //CJK UNIFIED IDEOGRAPH - 0xCAA1: 0x7701, //CJK UNIFIED IDEOGRAPH - 0xCAA2: 0x76DB, //CJK UNIFIED IDEOGRAPH - 0xCAA3: 0x5269, //CJK UNIFIED IDEOGRAPH - 0xCAA4: 0x80DC, //CJK UNIFIED IDEOGRAPH - 0xCAA5: 0x5723, //CJK UNIFIED IDEOGRAPH - 0xCAA6: 0x5E08, //CJK UNIFIED IDEOGRAPH - 0xCAA7: 0x5931, //CJK UNIFIED IDEOGRAPH - 0xCAA8: 0x72EE, //CJK UNIFIED IDEOGRAPH - 0xCAA9: 0x65BD, //CJK UNIFIED IDEOGRAPH - 0xCAAA: 0x6E7F, //CJK UNIFIED IDEOGRAPH - 0xCAAB: 0x8BD7, //CJK UNIFIED IDEOGRAPH - 0xCAAC: 0x5C38, //CJK UNIFIED IDEOGRAPH - 0xCAAD: 0x8671, //CJK UNIFIED IDEOGRAPH - 0xCAAE: 0x5341, //CJK UNIFIED IDEOGRAPH - 0xCAAF: 0x77F3, //CJK UNIFIED IDEOGRAPH - 0xCAB0: 0x62FE, //CJK UNIFIED IDEOGRAPH - 0xCAB1: 0x65F6, //CJK UNIFIED IDEOGRAPH - 0xCAB2: 0x4EC0, //CJK UNIFIED IDEOGRAPH - 0xCAB3: 0x98DF, //CJK UNIFIED IDEOGRAPH - 0xCAB4: 0x8680, //CJK UNIFIED IDEOGRAPH - 0xCAB5: 0x5B9E, //CJK UNIFIED IDEOGRAPH - 0xCAB6: 0x8BC6, //CJK UNIFIED IDEOGRAPH - 0xCAB7: 0x53F2, //CJK UNIFIED IDEOGRAPH - 0xCAB8: 0x77E2, //CJK UNIFIED IDEOGRAPH - 0xCAB9: 0x4F7F, //CJK UNIFIED IDEOGRAPH - 0xCABA: 0x5C4E, //CJK UNIFIED IDEOGRAPH - 0xCABB: 0x9A76, //CJK UNIFIED IDEOGRAPH - 0xCABC: 0x59CB, //CJK UNIFIED IDEOGRAPH - 0xCABD: 0x5F0F, //CJK UNIFIED IDEOGRAPH - 0xCABE: 0x793A, //CJK UNIFIED IDEOGRAPH - 0xCABF: 0x58EB, //CJK UNIFIED IDEOGRAPH - 0xCAC0: 0x4E16, //CJK UNIFIED IDEOGRAPH - 0xCAC1: 0x67FF, //CJK UNIFIED IDEOGRAPH - 0xCAC2: 0x4E8B, //CJK UNIFIED IDEOGRAPH - 0xCAC3: 0x62ED, //CJK UNIFIED IDEOGRAPH - 0xCAC4: 0x8A93, //CJK UNIFIED IDEOGRAPH - 0xCAC5: 0x901D, //CJK UNIFIED IDEOGRAPH - 0xCAC6: 0x52BF, //CJK UNIFIED IDEOGRAPH - 0xCAC7: 0x662F, //CJK UNIFIED IDEOGRAPH - 0xCAC8: 0x55DC, //CJK UNIFIED IDEOGRAPH - 0xCAC9: 0x566C, //CJK UNIFIED IDEOGRAPH - 0xCACA: 0x9002, //CJK UNIFIED IDEOGRAPH - 0xCACB: 0x4ED5, //CJK UNIFIED IDEOGRAPH - 0xCACC: 0x4F8D, //CJK UNIFIED IDEOGRAPH - 0xCACD: 0x91CA, //CJK UNIFIED IDEOGRAPH - 0xCACE: 0x9970, //CJK UNIFIED IDEOGRAPH - 0xCACF: 0x6C0F, //CJK UNIFIED IDEOGRAPH - 0xCAD0: 0x5E02, //CJK UNIFIED IDEOGRAPH - 0xCAD1: 0x6043, //CJK UNIFIED IDEOGRAPH - 0xCAD2: 0x5BA4, //CJK UNIFIED IDEOGRAPH - 0xCAD3: 0x89C6, //CJK UNIFIED IDEOGRAPH - 0xCAD4: 0x8BD5, //CJK UNIFIED IDEOGRAPH - 0xCAD5: 0x6536, //CJK UNIFIED IDEOGRAPH - 0xCAD6: 0x624B, //CJK UNIFIED IDEOGRAPH - 0xCAD7: 0x9996, //CJK UNIFIED IDEOGRAPH - 0xCAD8: 0x5B88, //CJK UNIFIED IDEOGRAPH - 0xCAD9: 0x5BFF, //CJK UNIFIED IDEOGRAPH - 0xCADA: 0x6388, //CJK UNIFIED IDEOGRAPH - 0xCADB: 0x552E, //CJK UNIFIED IDEOGRAPH - 0xCADC: 0x53D7, //CJK UNIFIED IDEOGRAPH - 0xCADD: 0x7626, //CJK UNIFIED IDEOGRAPH - 0xCADE: 0x517D, //CJK UNIFIED IDEOGRAPH - 0xCADF: 0x852C, //CJK UNIFIED IDEOGRAPH - 0xCAE0: 0x67A2, //CJK UNIFIED IDEOGRAPH - 0xCAE1: 0x68B3, //CJK UNIFIED IDEOGRAPH - 0xCAE2: 0x6B8A, //CJK UNIFIED IDEOGRAPH - 0xCAE3: 0x6292, //CJK UNIFIED IDEOGRAPH - 0xCAE4: 0x8F93, //CJK UNIFIED IDEOGRAPH - 0xCAE5: 0x53D4, //CJK UNIFIED IDEOGRAPH - 0xCAE6: 0x8212, //CJK UNIFIED IDEOGRAPH - 0xCAE7: 0x6DD1, //CJK UNIFIED IDEOGRAPH - 0xCAE8: 0x758F, //CJK UNIFIED IDEOGRAPH - 0xCAE9: 0x4E66, //CJK UNIFIED IDEOGRAPH - 0xCAEA: 0x8D4E, //CJK UNIFIED IDEOGRAPH - 0xCAEB: 0x5B70, //CJK UNIFIED IDEOGRAPH - 0xCAEC: 0x719F, //CJK UNIFIED IDEOGRAPH - 0xCAED: 0x85AF, //CJK UNIFIED IDEOGRAPH - 0xCAEE: 0x6691, //CJK UNIFIED IDEOGRAPH - 0xCAEF: 0x66D9, //CJK UNIFIED IDEOGRAPH - 0xCAF0: 0x7F72, //CJK UNIFIED IDEOGRAPH - 0xCAF1: 0x8700, //CJK UNIFIED IDEOGRAPH - 0xCAF2: 0x9ECD, //CJK UNIFIED IDEOGRAPH - 0xCAF3: 0x9F20, //CJK UNIFIED IDEOGRAPH - 0xCAF4: 0x5C5E, //CJK UNIFIED IDEOGRAPH - 0xCAF5: 0x672F, //CJK UNIFIED IDEOGRAPH - 0xCAF6: 0x8FF0, //CJK UNIFIED IDEOGRAPH - 0xCAF7: 0x6811, //CJK UNIFIED IDEOGRAPH - 0xCAF8: 0x675F, //CJK UNIFIED IDEOGRAPH - 0xCAF9: 0x620D, //CJK UNIFIED IDEOGRAPH - 0xCAFA: 0x7AD6, //CJK UNIFIED IDEOGRAPH - 0xCAFB: 0x5885, //CJK UNIFIED IDEOGRAPH - 0xCAFC: 0x5EB6, //CJK UNIFIED IDEOGRAPH - 0xCAFD: 0x6570, //CJK UNIFIED IDEOGRAPH - 0xCAFE: 0x6F31, //CJK UNIFIED IDEOGRAPH - 0xCB40: 0x8582, //CJK UNIFIED IDEOGRAPH - 0xCB41: 0x8583, //CJK UNIFIED IDEOGRAPH - 0xCB42: 0x8586, //CJK UNIFIED IDEOGRAPH - 0xCB43: 0x8588, //CJK UNIFIED IDEOGRAPH - 0xCB44: 0x8589, //CJK UNIFIED IDEOGRAPH - 0xCB45: 0x858A, //CJK UNIFIED IDEOGRAPH - 0xCB46: 0x858B, //CJK UNIFIED IDEOGRAPH - 0xCB47: 0x858C, //CJK UNIFIED IDEOGRAPH - 0xCB48: 0x858D, //CJK UNIFIED IDEOGRAPH - 0xCB49: 0x858E, //CJK UNIFIED IDEOGRAPH - 0xCB4A: 0x8590, //CJK UNIFIED IDEOGRAPH - 0xCB4B: 0x8591, //CJK UNIFIED IDEOGRAPH - 0xCB4C: 0x8592, //CJK UNIFIED IDEOGRAPH - 0xCB4D: 0x8593, //CJK UNIFIED IDEOGRAPH - 0xCB4E: 0x8594, //CJK UNIFIED IDEOGRAPH - 0xCB4F: 0x8595, //CJK UNIFIED IDEOGRAPH - 0xCB50: 0x8596, //CJK UNIFIED IDEOGRAPH - 0xCB51: 0x8597, //CJK UNIFIED IDEOGRAPH - 0xCB52: 0x8598, //CJK UNIFIED IDEOGRAPH - 0xCB53: 0x8599, //CJK UNIFIED IDEOGRAPH - 0xCB54: 0x859A, //CJK UNIFIED IDEOGRAPH - 0xCB55: 0x859D, //CJK UNIFIED IDEOGRAPH - 0xCB56: 0x859E, //CJK UNIFIED IDEOGRAPH - 0xCB57: 0x859F, //CJK UNIFIED IDEOGRAPH - 0xCB58: 0x85A0, //CJK UNIFIED IDEOGRAPH - 0xCB59: 0x85A1, //CJK UNIFIED IDEOGRAPH - 0xCB5A: 0x85A2, //CJK UNIFIED IDEOGRAPH - 0xCB5B: 0x85A3, //CJK UNIFIED IDEOGRAPH - 0xCB5C: 0x85A5, //CJK UNIFIED IDEOGRAPH - 0xCB5D: 0x85A6, //CJK UNIFIED IDEOGRAPH - 0xCB5E: 0x85A7, //CJK UNIFIED IDEOGRAPH - 0xCB5F: 0x85A9, //CJK UNIFIED IDEOGRAPH - 0xCB60: 0x85AB, //CJK UNIFIED IDEOGRAPH - 0xCB61: 0x85AC, //CJK UNIFIED IDEOGRAPH - 0xCB62: 0x85AD, //CJK UNIFIED IDEOGRAPH - 0xCB63: 0x85B1, //CJK UNIFIED IDEOGRAPH - 0xCB64: 0x85B2, //CJK UNIFIED IDEOGRAPH - 0xCB65: 0x85B3, //CJK UNIFIED IDEOGRAPH - 0xCB66: 0x85B4, //CJK UNIFIED IDEOGRAPH - 0xCB67: 0x85B5, //CJK UNIFIED IDEOGRAPH - 0xCB68: 0x85B6, //CJK UNIFIED IDEOGRAPH - 0xCB69: 0x85B8, //CJK UNIFIED IDEOGRAPH - 0xCB6A: 0x85BA, //CJK UNIFIED IDEOGRAPH - 0xCB6B: 0x85BB, //CJK UNIFIED IDEOGRAPH - 0xCB6C: 0x85BC, //CJK UNIFIED IDEOGRAPH - 0xCB6D: 0x85BD, //CJK UNIFIED IDEOGRAPH - 0xCB6E: 0x85BE, //CJK UNIFIED IDEOGRAPH - 0xCB6F: 0x85BF, //CJK UNIFIED IDEOGRAPH - 0xCB70: 0x85C0, //CJK UNIFIED IDEOGRAPH - 0xCB71: 0x85C2, //CJK UNIFIED IDEOGRAPH - 0xCB72: 0x85C3, //CJK UNIFIED IDEOGRAPH - 0xCB73: 0x85C4, //CJK UNIFIED IDEOGRAPH - 0xCB74: 0x85C5, //CJK UNIFIED IDEOGRAPH - 0xCB75: 0x85C6, //CJK UNIFIED IDEOGRAPH - 0xCB76: 0x85C7, //CJK UNIFIED IDEOGRAPH - 0xCB77: 0x85C8, //CJK UNIFIED IDEOGRAPH - 0xCB78: 0x85CA, //CJK UNIFIED IDEOGRAPH - 0xCB79: 0x85CB, //CJK UNIFIED IDEOGRAPH - 0xCB7A: 0x85CC, //CJK UNIFIED IDEOGRAPH - 0xCB7B: 0x85CD, //CJK UNIFIED IDEOGRAPH - 0xCB7C: 0x85CE, //CJK UNIFIED IDEOGRAPH - 0xCB7D: 0x85D1, //CJK UNIFIED IDEOGRAPH - 0xCB7E: 0x85D2, //CJK UNIFIED IDEOGRAPH - 0xCB80: 0x85D4, //CJK UNIFIED IDEOGRAPH - 0xCB81: 0x85D6, //CJK UNIFIED IDEOGRAPH - 0xCB82: 0x85D7, //CJK UNIFIED IDEOGRAPH - 0xCB83: 0x85D8, //CJK UNIFIED IDEOGRAPH - 0xCB84: 0x85D9, //CJK UNIFIED IDEOGRAPH - 0xCB85: 0x85DA, //CJK UNIFIED IDEOGRAPH - 0xCB86: 0x85DB, //CJK UNIFIED IDEOGRAPH - 0xCB87: 0x85DD, //CJK UNIFIED IDEOGRAPH - 0xCB88: 0x85DE, //CJK UNIFIED IDEOGRAPH - 0xCB89: 0x85DF, //CJK UNIFIED IDEOGRAPH - 0xCB8A: 0x85E0, //CJK UNIFIED IDEOGRAPH - 0xCB8B: 0x85E1, //CJK UNIFIED IDEOGRAPH - 0xCB8C: 0x85E2, //CJK UNIFIED IDEOGRAPH - 0xCB8D: 0x85E3, //CJK UNIFIED IDEOGRAPH - 0xCB8E: 0x85E5, //CJK UNIFIED IDEOGRAPH - 0xCB8F: 0x85E6, //CJK UNIFIED IDEOGRAPH - 0xCB90: 0x85E7, //CJK UNIFIED IDEOGRAPH - 0xCB91: 0x85E8, //CJK UNIFIED IDEOGRAPH - 0xCB92: 0x85EA, //CJK UNIFIED IDEOGRAPH - 0xCB93: 0x85EB, //CJK UNIFIED IDEOGRAPH - 0xCB94: 0x85EC, //CJK UNIFIED IDEOGRAPH - 0xCB95: 0x85ED, //CJK UNIFIED IDEOGRAPH - 0xCB96: 0x85EE, //CJK UNIFIED IDEOGRAPH - 0xCB97: 0x85EF, //CJK UNIFIED IDEOGRAPH - 0xCB98: 0x85F0, //CJK UNIFIED IDEOGRAPH - 0xCB99: 0x85F1, //CJK UNIFIED IDEOGRAPH - 0xCB9A: 0x85F2, //CJK UNIFIED IDEOGRAPH - 0xCB9B: 0x85F3, //CJK UNIFIED IDEOGRAPH - 0xCB9C: 0x85F4, //CJK UNIFIED IDEOGRAPH - 0xCB9D: 0x85F5, //CJK UNIFIED IDEOGRAPH - 0xCB9E: 0x85F6, //CJK UNIFIED IDEOGRAPH - 0xCB9F: 0x85F7, //CJK UNIFIED IDEOGRAPH - 0xCBA0: 0x85F8, //CJK UNIFIED IDEOGRAPH - 0xCBA1: 0x6055, //CJK UNIFIED IDEOGRAPH - 0xCBA2: 0x5237, //CJK UNIFIED IDEOGRAPH - 0xCBA3: 0x800D, //CJK UNIFIED IDEOGRAPH - 0xCBA4: 0x6454, //CJK UNIFIED IDEOGRAPH - 0xCBA5: 0x8870, //CJK UNIFIED IDEOGRAPH - 0xCBA6: 0x7529, //CJK UNIFIED IDEOGRAPH - 0xCBA7: 0x5E05, //CJK UNIFIED IDEOGRAPH - 0xCBA8: 0x6813, //CJK UNIFIED IDEOGRAPH - 0xCBA9: 0x62F4, //CJK UNIFIED IDEOGRAPH - 0xCBAA: 0x971C, //CJK UNIFIED IDEOGRAPH - 0xCBAB: 0x53CC, //CJK UNIFIED IDEOGRAPH - 0xCBAC: 0x723D, //CJK UNIFIED IDEOGRAPH - 0xCBAD: 0x8C01, //CJK UNIFIED IDEOGRAPH - 0xCBAE: 0x6C34, //CJK UNIFIED IDEOGRAPH - 0xCBAF: 0x7761, //CJK UNIFIED IDEOGRAPH - 0xCBB0: 0x7A0E, //CJK UNIFIED IDEOGRAPH - 0xCBB1: 0x542E, //CJK UNIFIED IDEOGRAPH - 0xCBB2: 0x77AC, //CJK UNIFIED IDEOGRAPH - 0xCBB3: 0x987A, //CJK UNIFIED IDEOGRAPH - 0xCBB4: 0x821C, //CJK UNIFIED IDEOGRAPH - 0xCBB5: 0x8BF4, //CJK UNIFIED IDEOGRAPH - 0xCBB6: 0x7855, //CJK UNIFIED IDEOGRAPH - 0xCBB7: 0x6714, //CJK UNIFIED IDEOGRAPH - 0xCBB8: 0x70C1, //CJK UNIFIED IDEOGRAPH - 0xCBB9: 0x65AF, //CJK UNIFIED IDEOGRAPH - 0xCBBA: 0x6495, //CJK UNIFIED IDEOGRAPH - 0xCBBB: 0x5636, //CJK UNIFIED IDEOGRAPH - 0xCBBC: 0x601D, //CJK UNIFIED IDEOGRAPH - 0xCBBD: 0x79C1, //CJK UNIFIED IDEOGRAPH - 0xCBBE: 0x53F8, //CJK UNIFIED IDEOGRAPH - 0xCBBF: 0x4E1D, //CJK UNIFIED IDEOGRAPH - 0xCBC0: 0x6B7B, //CJK UNIFIED IDEOGRAPH - 0xCBC1: 0x8086, //CJK UNIFIED IDEOGRAPH - 0xCBC2: 0x5BFA, //CJK UNIFIED IDEOGRAPH - 0xCBC3: 0x55E3, //CJK UNIFIED IDEOGRAPH - 0xCBC4: 0x56DB, //CJK UNIFIED IDEOGRAPH - 0xCBC5: 0x4F3A, //CJK UNIFIED IDEOGRAPH - 0xCBC6: 0x4F3C, //CJK UNIFIED IDEOGRAPH - 0xCBC7: 0x9972, //CJK UNIFIED IDEOGRAPH - 0xCBC8: 0x5DF3, //CJK UNIFIED IDEOGRAPH - 0xCBC9: 0x677E, //CJK UNIFIED IDEOGRAPH - 0xCBCA: 0x8038, //CJK UNIFIED IDEOGRAPH - 0xCBCB: 0x6002, //CJK UNIFIED IDEOGRAPH - 0xCBCC: 0x9882, //CJK UNIFIED IDEOGRAPH - 0xCBCD: 0x9001, //CJK UNIFIED IDEOGRAPH - 0xCBCE: 0x5B8B, //CJK UNIFIED IDEOGRAPH - 0xCBCF: 0x8BBC, //CJK UNIFIED IDEOGRAPH - 0xCBD0: 0x8BF5, //CJK UNIFIED IDEOGRAPH - 0xCBD1: 0x641C, //CJK UNIFIED IDEOGRAPH - 0xCBD2: 0x8258, //CJK UNIFIED IDEOGRAPH - 0xCBD3: 0x64DE, //CJK UNIFIED IDEOGRAPH - 0xCBD4: 0x55FD, //CJK UNIFIED IDEOGRAPH - 0xCBD5: 0x82CF, //CJK UNIFIED IDEOGRAPH - 0xCBD6: 0x9165, //CJK UNIFIED IDEOGRAPH - 0xCBD7: 0x4FD7, //CJK UNIFIED IDEOGRAPH - 0xCBD8: 0x7D20, //CJK UNIFIED IDEOGRAPH - 0xCBD9: 0x901F, //CJK UNIFIED IDEOGRAPH - 0xCBDA: 0x7C9F, //CJK UNIFIED IDEOGRAPH - 0xCBDB: 0x50F3, //CJK UNIFIED IDEOGRAPH - 0xCBDC: 0x5851, //CJK UNIFIED IDEOGRAPH - 0xCBDD: 0x6EAF, //CJK UNIFIED IDEOGRAPH - 0xCBDE: 0x5BBF, //CJK UNIFIED IDEOGRAPH - 0xCBDF: 0x8BC9, //CJK UNIFIED IDEOGRAPH - 0xCBE0: 0x8083, //CJK UNIFIED IDEOGRAPH - 0xCBE1: 0x9178, //CJK UNIFIED IDEOGRAPH - 0xCBE2: 0x849C, //CJK UNIFIED IDEOGRAPH - 0xCBE3: 0x7B97, //CJK UNIFIED IDEOGRAPH - 0xCBE4: 0x867D, //CJK UNIFIED IDEOGRAPH - 0xCBE5: 0x968B, //CJK UNIFIED IDEOGRAPH - 0xCBE6: 0x968F, //CJK UNIFIED IDEOGRAPH - 0xCBE7: 0x7EE5, //CJK UNIFIED IDEOGRAPH - 0xCBE8: 0x9AD3, //CJK UNIFIED IDEOGRAPH - 0xCBE9: 0x788E, //CJK UNIFIED IDEOGRAPH - 0xCBEA: 0x5C81, //CJK UNIFIED IDEOGRAPH - 0xCBEB: 0x7A57, //CJK UNIFIED IDEOGRAPH - 0xCBEC: 0x9042, //CJK UNIFIED IDEOGRAPH - 0xCBED: 0x96A7, //CJK UNIFIED IDEOGRAPH - 0xCBEE: 0x795F, //CJK UNIFIED IDEOGRAPH - 0xCBEF: 0x5B59, //CJK UNIFIED IDEOGRAPH - 0xCBF0: 0x635F, //CJK UNIFIED IDEOGRAPH - 0xCBF1: 0x7B0B, //CJK UNIFIED IDEOGRAPH - 0xCBF2: 0x84D1, //CJK UNIFIED IDEOGRAPH - 0xCBF3: 0x68AD, //CJK UNIFIED IDEOGRAPH - 0xCBF4: 0x5506, //CJK UNIFIED IDEOGRAPH - 0xCBF5: 0x7F29, //CJK UNIFIED IDEOGRAPH - 0xCBF6: 0x7410, //CJK UNIFIED IDEOGRAPH - 0xCBF7: 0x7D22, //CJK UNIFIED IDEOGRAPH - 0xCBF8: 0x9501, //CJK UNIFIED IDEOGRAPH - 0xCBF9: 0x6240, //CJK UNIFIED IDEOGRAPH - 0xCBFA: 0x584C, //CJK UNIFIED IDEOGRAPH - 0xCBFB: 0x4ED6, //CJK UNIFIED IDEOGRAPH - 0xCBFC: 0x5B83, //CJK UNIFIED IDEOGRAPH - 0xCBFD: 0x5979, //CJK UNIFIED IDEOGRAPH - 0xCBFE: 0x5854, //CJK UNIFIED IDEOGRAPH - 0xCC40: 0x85F9, //CJK UNIFIED IDEOGRAPH - 0xCC41: 0x85FA, //CJK UNIFIED IDEOGRAPH - 0xCC42: 0x85FC, //CJK UNIFIED IDEOGRAPH - 0xCC43: 0x85FD, //CJK UNIFIED IDEOGRAPH - 0xCC44: 0x85FE, //CJK UNIFIED IDEOGRAPH - 0xCC45: 0x8600, //CJK UNIFIED IDEOGRAPH - 0xCC46: 0x8601, //CJK UNIFIED IDEOGRAPH - 0xCC47: 0x8602, //CJK UNIFIED IDEOGRAPH - 0xCC48: 0x8603, //CJK UNIFIED IDEOGRAPH - 0xCC49: 0x8604, //CJK UNIFIED IDEOGRAPH - 0xCC4A: 0x8606, //CJK UNIFIED IDEOGRAPH - 0xCC4B: 0x8607, //CJK UNIFIED IDEOGRAPH - 0xCC4C: 0x8608, //CJK UNIFIED IDEOGRAPH - 0xCC4D: 0x8609, //CJK UNIFIED IDEOGRAPH - 0xCC4E: 0x860A, //CJK UNIFIED IDEOGRAPH - 0xCC4F: 0x860B, //CJK UNIFIED IDEOGRAPH - 0xCC50: 0x860C, //CJK UNIFIED IDEOGRAPH - 0xCC51: 0x860D, //CJK UNIFIED IDEOGRAPH - 0xCC52: 0x860E, //CJK UNIFIED IDEOGRAPH - 0xCC53: 0x860F, //CJK UNIFIED IDEOGRAPH - 0xCC54: 0x8610, //CJK UNIFIED IDEOGRAPH - 0xCC55: 0x8612, //CJK UNIFIED IDEOGRAPH - 0xCC56: 0x8613, //CJK UNIFIED IDEOGRAPH - 0xCC57: 0x8614, //CJK UNIFIED IDEOGRAPH - 0xCC58: 0x8615, //CJK UNIFIED IDEOGRAPH - 0xCC59: 0x8617, //CJK UNIFIED IDEOGRAPH - 0xCC5A: 0x8618, //CJK UNIFIED IDEOGRAPH - 0xCC5B: 0x8619, //CJK UNIFIED IDEOGRAPH - 0xCC5C: 0x861A, //CJK UNIFIED IDEOGRAPH - 0xCC5D: 0x861B, //CJK UNIFIED IDEOGRAPH - 0xCC5E: 0x861C, //CJK UNIFIED IDEOGRAPH - 0xCC5F: 0x861D, //CJK UNIFIED IDEOGRAPH - 0xCC60: 0x861E, //CJK UNIFIED IDEOGRAPH - 0xCC61: 0x861F, //CJK UNIFIED IDEOGRAPH - 0xCC62: 0x8620, //CJK UNIFIED IDEOGRAPH - 0xCC63: 0x8621, //CJK UNIFIED IDEOGRAPH - 0xCC64: 0x8622, //CJK UNIFIED IDEOGRAPH - 0xCC65: 0x8623, //CJK UNIFIED IDEOGRAPH - 0xCC66: 0x8624, //CJK UNIFIED IDEOGRAPH - 0xCC67: 0x8625, //CJK UNIFIED IDEOGRAPH - 0xCC68: 0x8626, //CJK UNIFIED IDEOGRAPH - 0xCC69: 0x8628, //CJK UNIFIED IDEOGRAPH - 0xCC6A: 0x862A, //CJK UNIFIED IDEOGRAPH - 0xCC6B: 0x862B, //CJK UNIFIED IDEOGRAPH - 0xCC6C: 0x862C, //CJK UNIFIED IDEOGRAPH - 0xCC6D: 0x862D, //CJK UNIFIED IDEOGRAPH - 0xCC6E: 0x862E, //CJK UNIFIED IDEOGRAPH - 0xCC6F: 0x862F, //CJK UNIFIED IDEOGRAPH - 0xCC70: 0x8630, //CJK UNIFIED IDEOGRAPH - 0xCC71: 0x8631, //CJK UNIFIED IDEOGRAPH - 0xCC72: 0x8632, //CJK UNIFIED IDEOGRAPH - 0xCC73: 0x8633, //CJK UNIFIED IDEOGRAPH - 0xCC74: 0x8634, //CJK UNIFIED IDEOGRAPH - 0xCC75: 0x8635, //CJK UNIFIED IDEOGRAPH - 0xCC76: 0x8636, //CJK UNIFIED IDEOGRAPH - 0xCC77: 0x8637, //CJK UNIFIED IDEOGRAPH - 0xCC78: 0x8639, //CJK UNIFIED IDEOGRAPH - 0xCC79: 0x863A, //CJK UNIFIED IDEOGRAPH - 0xCC7A: 0x863B, //CJK UNIFIED IDEOGRAPH - 0xCC7B: 0x863D, //CJK UNIFIED IDEOGRAPH - 0xCC7C: 0x863E, //CJK UNIFIED IDEOGRAPH - 0xCC7D: 0x863F, //CJK UNIFIED IDEOGRAPH - 0xCC7E: 0x8640, //CJK UNIFIED IDEOGRAPH - 0xCC80: 0x8641, //CJK UNIFIED IDEOGRAPH - 0xCC81: 0x8642, //CJK UNIFIED IDEOGRAPH - 0xCC82: 0x8643, //CJK UNIFIED IDEOGRAPH - 0xCC83: 0x8644, //CJK UNIFIED IDEOGRAPH - 0xCC84: 0x8645, //CJK UNIFIED IDEOGRAPH - 0xCC85: 0x8646, //CJK UNIFIED IDEOGRAPH - 0xCC86: 0x8647, //CJK UNIFIED IDEOGRAPH - 0xCC87: 0x8648, //CJK UNIFIED IDEOGRAPH - 0xCC88: 0x8649, //CJK UNIFIED IDEOGRAPH - 0xCC89: 0x864A, //CJK UNIFIED IDEOGRAPH - 0xCC8A: 0x864B, //CJK UNIFIED IDEOGRAPH - 0xCC8B: 0x864C, //CJK UNIFIED IDEOGRAPH - 0xCC8C: 0x8652, //CJK UNIFIED IDEOGRAPH - 0xCC8D: 0x8653, //CJK UNIFIED IDEOGRAPH - 0xCC8E: 0x8655, //CJK UNIFIED IDEOGRAPH - 0xCC8F: 0x8656, //CJK UNIFIED IDEOGRAPH - 0xCC90: 0x8657, //CJK UNIFIED IDEOGRAPH - 0xCC91: 0x8658, //CJK UNIFIED IDEOGRAPH - 0xCC92: 0x8659, //CJK UNIFIED IDEOGRAPH - 0xCC93: 0x865B, //CJK UNIFIED IDEOGRAPH - 0xCC94: 0x865C, //CJK UNIFIED IDEOGRAPH - 0xCC95: 0x865D, //CJK UNIFIED IDEOGRAPH - 0xCC96: 0x865F, //CJK UNIFIED IDEOGRAPH - 0xCC97: 0x8660, //CJK UNIFIED IDEOGRAPH - 0xCC98: 0x8661, //CJK UNIFIED IDEOGRAPH - 0xCC99: 0x8663, //CJK UNIFIED IDEOGRAPH - 0xCC9A: 0x8664, //CJK UNIFIED IDEOGRAPH - 0xCC9B: 0x8665, //CJK UNIFIED IDEOGRAPH - 0xCC9C: 0x8666, //CJK UNIFIED IDEOGRAPH - 0xCC9D: 0x8667, //CJK UNIFIED IDEOGRAPH - 0xCC9E: 0x8668, //CJK UNIFIED IDEOGRAPH - 0xCC9F: 0x8669, //CJK UNIFIED IDEOGRAPH - 0xCCA0: 0x866A, //CJK UNIFIED IDEOGRAPH - 0xCCA1: 0x736D, //CJK UNIFIED IDEOGRAPH - 0xCCA2: 0x631E, //CJK UNIFIED IDEOGRAPH - 0xCCA3: 0x8E4B, //CJK UNIFIED IDEOGRAPH - 0xCCA4: 0x8E0F, //CJK UNIFIED IDEOGRAPH - 0xCCA5: 0x80CE, //CJK UNIFIED IDEOGRAPH - 0xCCA6: 0x82D4, //CJK UNIFIED IDEOGRAPH - 0xCCA7: 0x62AC, //CJK UNIFIED IDEOGRAPH - 0xCCA8: 0x53F0, //CJK UNIFIED IDEOGRAPH - 0xCCA9: 0x6CF0, //CJK UNIFIED IDEOGRAPH - 0xCCAA: 0x915E, //CJK UNIFIED IDEOGRAPH - 0xCCAB: 0x592A, //CJK UNIFIED IDEOGRAPH - 0xCCAC: 0x6001, //CJK UNIFIED IDEOGRAPH - 0xCCAD: 0x6C70, //CJK UNIFIED IDEOGRAPH - 0xCCAE: 0x574D, //CJK UNIFIED IDEOGRAPH - 0xCCAF: 0x644A, //CJK UNIFIED IDEOGRAPH - 0xCCB0: 0x8D2A, //CJK UNIFIED IDEOGRAPH - 0xCCB1: 0x762B, //CJK UNIFIED IDEOGRAPH - 0xCCB2: 0x6EE9, //CJK UNIFIED IDEOGRAPH - 0xCCB3: 0x575B, //CJK UNIFIED IDEOGRAPH - 0xCCB4: 0x6A80, //CJK UNIFIED IDEOGRAPH - 0xCCB5: 0x75F0, //CJK UNIFIED IDEOGRAPH - 0xCCB6: 0x6F6D, //CJK UNIFIED IDEOGRAPH - 0xCCB7: 0x8C2D, //CJK UNIFIED IDEOGRAPH - 0xCCB8: 0x8C08, //CJK UNIFIED IDEOGRAPH - 0xCCB9: 0x5766, //CJK UNIFIED IDEOGRAPH - 0xCCBA: 0x6BEF, //CJK UNIFIED IDEOGRAPH - 0xCCBB: 0x8892, //CJK UNIFIED IDEOGRAPH - 0xCCBC: 0x78B3, //CJK UNIFIED IDEOGRAPH - 0xCCBD: 0x63A2, //CJK UNIFIED IDEOGRAPH - 0xCCBE: 0x53F9, //CJK UNIFIED IDEOGRAPH - 0xCCBF: 0x70AD, //CJK UNIFIED IDEOGRAPH - 0xCCC0: 0x6C64, //CJK UNIFIED IDEOGRAPH - 0xCCC1: 0x5858, //CJK UNIFIED IDEOGRAPH - 0xCCC2: 0x642A, //CJK UNIFIED IDEOGRAPH - 0xCCC3: 0x5802, //CJK UNIFIED IDEOGRAPH - 0xCCC4: 0x68E0, //CJK UNIFIED IDEOGRAPH - 0xCCC5: 0x819B, //CJK UNIFIED IDEOGRAPH - 0xCCC6: 0x5510, //CJK UNIFIED IDEOGRAPH - 0xCCC7: 0x7CD6, //CJK UNIFIED IDEOGRAPH - 0xCCC8: 0x5018, //CJK UNIFIED IDEOGRAPH - 0xCCC9: 0x8EBA, //CJK UNIFIED IDEOGRAPH - 0xCCCA: 0x6DCC, //CJK UNIFIED IDEOGRAPH - 0xCCCB: 0x8D9F, //CJK UNIFIED IDEOGRAPH - 0xCCCC: 0x70EB, //CJK UNIFIED IDEOGRAPH - 0xCCCD: 0x638F, //CJK UNIFIED IDEOGRAPH - 0xCCCE: 0x6D9B, //CJK UNIFIED IDEOGRAPH - 0xCCCF: 0x6ED4, //CJK UNIFIED IDEOGRAPH - 0xCCD0: 0x7EE6, //CJK UNIFIED IDEOGRAPH - 0xCCD1: 0x8404, //CJK UNIFIED IDEOGRAPH - 0xCCD2: 0x6843, //CJK UNIFIED IDEOGRAPH - 0xCCD3: 0x9003, //CJK UNIFIED IDEOGRAPH - 0xCCD4: 0x6DD8, //CJK UNIFIED IDEOGRAPH - 0xCCD5: 0x9676, //CJK UNIFIED IDEOGRAPH - 0xCCD6: 0x8BA8, //CJK UNIFIED IDEOGRAPH - 0xCCD7: 0x5957, //CJK UNIFIED IDEOGRAPH - 0xCCD8: 0x7279, //CJK UNIFIED IDEOGRAPH - 0xCCD9: 0x85E4, //CJK UNIFIED IDEOGRAPH - 0xCCDA: 0x817E, //CJK UNIFIED IDEOGRAPH - 0xCCDB: 0x75BC, //CJK UNIFIED IDEOGRAPH - 0xCCDC: 0x8A8A, //CJK UNIFIED IDEOGRAPH - 0xCCDD: 0x68AF, //CJK UNIFIED IDEOGRAPH - 0xCCDE: 0x5254, //CJK UNIFIED IDEOGRAPH - 0xCCDF: 0x8E22, //CJK UNIFIED IDEOGRAPH - 0xCCE0: 0x9511, //CJK UNIFIED IDEOGRAPH - 0xCCE1: 0x63D0, //CJK UNIFIED IDEOGRAPH - 0xCCE2: 0x9898, //CJK UNIFIED IDEOGRAPH - 0xCCE3: 0x8E44, //CJK UNIFIED IDEOGRAPH - 0xCCE4: 0x557C, //CJK UNIFIED IDEOGRAPH - 0xCCE5: 0x4F53, //CJK UNIFIED IDEOGRAPH - 0xCCE6: 0x66FF, //CJK UNIFIED IDEOGRAPH - 0xCCE7: 0x568F, //CJK UNIFIED IDEOGRAPH - 0xCCE8: 0x60D5, //CJK UNIFIED IDEOGRAPH - 0xCCE9: 0x6D95, //CJK UNIFIED IDEOGRAPH - 0xCCEA: 0x5243, //CJK UNIFIED IDEOGRAPH - 0xCCEB: 0x5C49, //CJK UNIFIED IDEOGRAPH - 0xCCEC: 0x5929, //CJK UNIFIED IDEOGRAPH - 0xCCED: 0x6DFB, //CJK UNIFIED IDEOGRAPH - 0xCCEE: 0x586B, //CJK UNIFIED IDEOGRAPH - 0xCCEF: 0x7530, //CJK UNIFIED IDEOGRAPH - 0xCCF0: 0x751C, //CJK UNIFIED IDEOGRAPH - 0xCCF1: 0x606C, //CJK UNIFIED IDEOGRAPH - 0xCCF2: 0x8214, //CJK UNIFIED IDEOGRAPH - 0xCCF3: 0x8146, //CJK UNIFIED IDEOGRAPH - 0xCCF4: 0x6311, //CJK UNIFIED IDEOGRAPH - 0xCCF5: 0x6761, //CJK UNIFIED IDEOGRAPH - 0xCCF6: 0x8FE2, //CJK UNIFIED IDEOGRAPH - 0xCCF7: 0x773A, //CJK UNIFIED IDEOGRAPH - 0xCCF8: 0x8DF3, //CJK UNIFIED IDEOGRAPH - 0xCCF9: 0x8D34, //CJK UNIFIED IDEOGRAPH - 0xCCFA: 0x94C1, //CJK UNIFIED IDEOGRAPH - 0xCCFB: 0x5E16, //CJK UNIFIED IDEOGRAPH - 0xCCFC: 0x5385, //CJK UNIFIED IDEOGRAPH - 0xCCFD: 0x542C, //CJK UNIFIED IDEOGRAPH - 0xCCFE: 0x70C3, //CJK UNIFIED IDEOGRAPH - 0xCD40: 0x866D, //CJK UNIFIED IDEOGRAPH - 0xCD41: 0x866F, //CJK UNIFIED IDEOGRAPH - 0xCD42: 0x8670, //CJK UNIFIED IDEOGRAPH - 0xCD43: 0x8672, //CJK UNIFIED IDEOGRAPH - 0xCD44: 0x8673, //CJK UNIFIED IDEOGRAPH - 0xCD45: 0x8674, //CJK UNIFIED IDEOGRAPH - 0xCD46: 0x8675, //CJK UNIFIED IDEOGRAPH - 0xCD47: 0x8676, //CJK UNIFIED IDEOGRAPH - 0xCD48: 0x8677, //CJK UNIFIED IDEOGRAPH - 0xCD49: 0x8678, //CJK UNIFIED IDEOGRAPH - 0xCD4A: 0x8683, //CJK UNIFIED IDEOGRAPH - 0xCD4B: 0x8684, //CJK UNIFIED IDEOGRAPH - 0xCD4C: 0x8685, //CJK UNIFIED IDEOGRAPH - 0xCD4D: 0x8686, //CJK UNIFIED IDEOGRAPH - 0xCD4E: 0x8687, //CJK UNIFIED IDEOGRAPH - 0xCD4F: 0x8688, //CJK UNIFIED IDEOGRAPH - 0xCD50: 0x8689, //CJK UNIFIED IDEOGRAPH - 0xCD51: 0x868E, //CJK UNIFIED IDEOGRAPH - 0xCD52: 0x868F, //CJK UNIFIED IDEOGRAPH - 0xCD53: 0x8690, //CJK UNIFIED IDEOGRAPH - 0xCD54: 0x8691, //CJK UNIFIED IDEOGRAPH - 0xCD55: 0x8692, //CJK UNIFIED IDEOGRAPH - 0xCD56: 0x8694, //CJK UNIFIED IDEOGRAPH - 0xCD57: 0x8696, //CJK UNIFIED IDEOGRAPH - 0xCD58: 0x8697, //CJK UNIFIED IDEOGRAPH - 0xCD59: 0x8698, //CJK UNIFIED IDEOGRAPH - 0xCD5A: 0x8699, //CJK UNIFIED IDEOGRAPH - 0xCD5B: 0x869A, //CJK UNIFIED IDEOGRAPH - 0xCD5C: 0x869B, //CJK UNIFIED IDEOGRAPH - 0xCD5D: 0x869E, //CJK UNIFIED IDEOGRAPH - 0xCD5E: 0x869F, //CJK UNIFIED IDEOGRAPH - 0xCD5F: 0x86A0, //CJK UNIFIED IDEOGRAPH - 0xCD60: 0x86A1, //CJK UNIFIED IDEOGRAPH - 0xCD61: 0x86A2, //CJK UNIFIED IDEOGRAPH - 0xCD62: 0x86A5, //CJK UNIFIED IDEOGRAPH - 0xCD63: 0x86A6, //CJK UNIFIED IDEOGRAPH - 0xCD64: 0x86AB, //CJK UNIFIED IDEOGRAPH - 0xCD65: 0x86AD, //CJK UNIFIED IDEOGRAPH - 0xCD66: 0x86AE, //CJK UNIFIED IDEOGRAPH - 0xCD67: 0x86B2, //CJK UNIFIED IDEOGRAPH - 0xCD68: 0x86B3, //CJK UNIFIED IDEOGRAPH - 0xCD69: 0x86B7, //CJK UNIFIED IDEOGRAPH - 0xCD6A: 0x86B8, //CJK UNIFIED IDEOGRAPH - 0xCD6B: 0x86B9, //CJK UNIFIED IDEOGRAPH - 0xCD6C: 0x86BB, //CJK UNIFIED IDEOGRAPH - 0xCD6D: 0x86BC, //CJK UNIFIED IDEOGRAPH - 0xCD6E: 0x86BD, //CJK UNIFIED IDEOGRAPH - 0xCD6F: 0x86BE, //CJK UNIFIED IDEOGRAPH - 0xCD70: 0x86BF, //CJK UNIFIED IDEOGRAPH - 0xCD71: 0x86C1, //CJK UNIFIED IDEOGRAPH - 0xCD72: 0x86C2, //CJK UNIFIED IDEOGRAPH - 0xCD73: 0x86C3, //CJK UNIFIED IDEOGRAPH - 0xCD74: 0x86C5, //CJK UNIFIED IDEOGRAPH - 0xCD75: 0x86C8, //CJK UNIFIED IDEOGRAPH - 0xCD76: 0x86CC, //CJK UNIFIED IDEOGRAPH - 0xCD77: 0x86CD, //CJK UNIFIED IDEOGRAPH - 0xCD78: 0x86D2, //CJK UNIFIED IDEOGRAPH - 0xCD79: 0x86D3, //CJK UNIFIED IDEOGRAPH - 0xCD7A: 0x86D5, //CJK UNIFIED IDEOGRAPH - 0xCD7B: 0x86D6, //CJK UNIFIED IDEOGRAPH - 0xCD7C: 0x86D7, //CJK UNIFIED IDEOGRAPH - 0xCD7D: 0x86DA, //CJK UNIFIED IDEOGRAPH - 0xCD7E: 0x86DC, //CJK UNIFIED IDEOGRAPH - 0xCD80: 0x86DD, //CJK UNIFIED IDEOGRAPH - 0xCD81: 0x86E0, //CJK UNIFIED IDEOGRAPH - 0xCD82: 0x86E1, //CJK UNIFIED IDEOGRAPH - 0xCD83: 0x86E2, //CJK UNIFIED IDEOGRAPH - 0xCD84: 0x86E3, //CJK UNIFIED IDEOGRAPH - 0xCD85: 0x86E5, //CJK UNIFIED IDEOGRAPH - 0xCD86: 0x86E6, //CJK UNIFIED IDEOGRAPH - 0xCD87: 0x86E7, //CJK UNIFIED IDEOGRAPH - 0xCD88: 0x86E8, //CJK UNIFIED IDEOGRAPH - 0xCD89: 0x86EA, //CJK UNIFIED IDEOGRAPH - 0xCD8A: 0x86EB, //CJK UNIFIED IDEOGRAPH - 0xCD8B: 0x86EC, //CJK UNIFIED IDEOGRAPH - 0xCD8C: 0x86EF, //CJK UNIFIED IDEOGRAPH - 0xCD8D: 0x86F5, //CJK UNIFIED IDEOGRAPH - 0xCD8E: 0x86F6, //CJK UNIFIED IDEOGRAPH - 0xCD8F: 0x86F7, //CJK UNIFIED IDEOGRAPH - 0xCD90: 0x86FA, //CJK UNIFIED IDEOGRAPH - 0xCD91: 0x86FB, //CJK UNIFIED IDEOGRAPH - 0xCD92: 0x86FC, //CJK UNIFIED IDEOGRAPH - 0xCD93: 0x86FD, //CJK UNIFIED IDEOGRAPH - 0xCD94: 0x86FF, //CJK UNIFIED IDEOGRAPH - 0xCD95: 0x8701, //CJK UNIFIED IDEOGRAPH - 0xCD96: 0x8704, //CJK UNIFIED IDEOGRAPH - 0xCD97: 0x8705, //CJK UNIFIED IDEOGRAPH - 0xCD98: 0x8706, //CJK UNIFIED IDEOGRAPH - 0xCD99: 0x870B, //CJK UNIFIED IDEOGRAPH - 0xCD9A: 0x870C, //CJK UNIFIED IDEOGRAPH - 0xCD9B: 0x870E, //CJK UNIFIED IDEOGRAPH - 0xCD9C: 0x870F, //CJK UNIFIED IDEOGRAPH - 0xCD9D: 0x8710, //CJK UNIFIED IDEOGRAPH - 0xCD9E: 0x8711, //CJK UNIFIED IDEOGRAPH - 0xCD9F: 0x8714, //CJK UNIFIED IDEOGRAPH - 0xCDA0: 0x8716, //CJK UNIFIED IDEOGRAPH - 0xCDA1: 0x6C40, //CJK UNIFIED IDEOGRAPH - 0xCDA2: 0x5EF7, //CJK UNIFIED IDEOGRAPH - 0xCDA3: 0x505C, //CJK UNIFIED IDEOGRAPH - 0xCDA4: 0x4EAD, //CJK UNIFIED IDEOGRAPH - 0xCDA5: 0x5EAD, //CJK UNIFIED IDEOGRAPH - 0xCDA6: 0x633A, //CJK UNIFIED IDEOGRAPH - 0xCDA7: 0x8247, //CJK UNIFIED IDEOGRAPH - 0xCDA8: 0x901A, //CJK UNIFIED IDEOGRAPH - 0xCDA9: 0x6850, //CJK UNIFIED IDEOGRAPH - 0xCDAA: 0x916E, //CJK UNIFIED IDEOGRAPH - 0xCDAB: 0x77B3, //CJK UNIFIED IDEOGRAPH - 0xCDAC: 0x540C, //CJK UNIFIED IDEOGRAPH - 0xCDAD: 0x94DC, //CJK UNIFIED IDEOGRAPH - 0xCDAE: 0x5F64, //CJK UNIFIED IDEOGRAPH - 0xCDAF: 0x7AE5, //CJK UNIFIED IDEOGRAPH - 0xCDB0: 0x6876, //CJK UNIFIED IDEOGRAPH - 0xCDB1: 0x6345, //CJK UNIFIED IDEOGRAPH - 0xCDB2: 0x7B52, //CJK UNIFIED IDEOGRAPH - 0xCDB3: 0x7EDF, //CJK UNIFIED IDEOGRAPH - 0xCDB4: 0x75DB, //CJK UNIFIED IDEOGRAPH - 0xCDB5: 0x5077, //CJK UNIFIED IDEOGRAPH - 0xCDB6: 0x6295, //CJK UNIFIED IDEOGRAPH - 0xCDB7: 0x5934, //CJK UNIFIED IDEOGRAPH - 0xCDB8: 0x900F, //CJK UNIFIED IDEOGRAPH - 0xCDB9: 0x51F8, //CJK UNIFIED IDEOGRAPH - 0xCDBA: 0x79C3, //CJK UNIFIED IDEOGRAPH - 0xCDBB: 0x7A81, //CJK UNIFIED IDEOGRAPH - 0xCDBC: 0x56FE, //CJK UNIFIED IDEOGRAPH - 0xCDBD: 0x5F92, //CJK UNIFIED IDEOGRAPH - 0xCDBE: 0x9014, //CJK UNIFIED IDEOGRAPH - 0xCDBF: 0x6D82, //CJK UNIFIED IDEOGRAPH - 0xCDC0: 0x5C60, //CJK UNIFIED IDEOGRAPH - 0xCDC1: 0x571F, //CJK UNIFIED IDEOGRAPH - 0xCDC2: 0x5410, //CJK UNIFIED IDEOGRAPH - 0xCDC3: 0x5154, //CJK UNIFIED IDEOGRAPH - 0xCDC4: 0x6E4D, //CJK UNIFIED IDEOGRAPH - 0xCDC5: 0x56E2, //CJK UNIFIED IDEOGRAPH - 0xCDC6: 0x63A8, //CJK UNIFIED IDEOGRAPH - 0xCDC7: 0x9893, //CJK UNIFIED IDEOGRAPH - 0xCDC8: 0x817F, //CJK UNIFIED IDEOGRAPH - 0xCDC9: 0x8715, //CJK UNIFIED IDEOGRAPH - 0xCDCA: 0x892A, //CJK UNIFIED IDEOGRAPH - 0xCDCB: 0x9000, //CJK UNIFIED IDEOGRAPH - 0xCDCC: 0x541E, //CJK UNIFIED IDEOGRAPH - 0xCDCD: 0x5C6F, //CJK UNIFIED IDEOGRAPH - 0xCDCE: 0x81C0, //CJK UNIFIED IDEOGRAPH - 0xCDCF: 0x62D6, //CJK UNIFIED IDEOGRAPH - 0xCDD0: 0x6258, //CJK UNIFIED IDEOGRAPH - 0xCDD1: 0x8131, //CJK UNIFIED IDEOGRAPH - 0xCDD2: 0x9E35, //CJK UNIFIED IDEOGRAPH - 0xCDD3: 0x9640, //CJK UNIFIED IDEOGRAPH - 0xCDD4: 0x9A6E, //CJK UNIFIED IDEOGRAPH - 0xCDD5: 0x9A7C, //CJK UNIFIED IDEOGRAPH - 0xCDD6: 0x692D, //CJK UNIFIED IDEOGRAPH - 0xCDD7: 0x59A5, //CJK UNIFIED IDEOGRAPH - 0xCDD8: 0x62D3, //CJK UNIFIED IDEOGRAPH - 0xCDD9: 0x553E, //CJK UNIFIED IDEOGRAPH - 0xCDDA: 0x6316, //CJK UNIFIED IDEOGRAPH - 0xCDDB: 0x54C7, //CJK UNIFIED IDEOGRAPH - 0xCDDC: 0x86D9, //CJK UNIFIED IDEOGRAPH - 0xCDDD: 0x6D3C, //CJK UNIFIED IDEOGRAPH - 0xCDDE: 0x5A03, //CJK UNIFIED IDEOGRAPH - 0xCDDF: 0x74E6, //CJK UNIFIED IDEOGRAPH - 0xCDE0: 0x889C, //CJK UNIFIED IDEOGRAPH - 0xCDE1: 0x6B6A, //CJK UNIFIED IDEOGRAPH - 0xCDE2: 0x5916, //CJK UNIFIED IDEOGRAPH - 0xCDE3: 0x8C4C, //CJK UNIFIED IDEOGRAPH - 0xCDE4: 0x5F2F, //CJK UNIFIED IDEOGRAPH - 0xCDE5: 0x6E7E, //CJK UNIFIED IDEOGRAPH - 0xCDE6: 0x73A9, //CJK UNIFIED IDEOGRAPH - 0xCDE7: 0x987D, //CJK UNIFIED IDEOGRAPH - 0xCDE8: 0x4E38, //CJK UNIFIED IDEOGRAPH - 0xCDE9: 0x70F7, //CJK UNIFIED IDEOGRAPH - 0xCDEA: 0x5B8C, //CJK UNIFIED IDEOGRAPH - 0xCDEB: 0x7897, //CJK UNIFIED IDEOGRAPH - 0xCDEC: 0x633D, //CJK UNIFIED IDEOGRAPH - 0xCDED: 0x665A, //CJK UNIFIED IDEOGRAPH - 0xCDEE: 0x7696, //CJK UNIFIED IDEOGRAPH - 0xCDEF: 0x60CB, //CJK UNIFIED IDEOGRAPH - 0xCDF0: 0x5B9B, //CJK UNIFIED IDEOGRAPH - 0xCDF1: 0x5A49, //CJK UNIFIED IDEOGRAPH - 0xCDF2: 0x4E07, //CJK UNIFIED IDEOGRAPH - 0xCDF3: 0x8155, //CJK UNIFIED IDEOGRAPH - 0xCDF4: 0x6C6A, //CJK UNIFIED IDEOGRAPH - 0xCDF5: 0x738B, //CJK UNIFIED IDEOGRAPH - 0xCDF6: 0x4EA1, //CJK UNIFIED IDEOGRAPH - 0xCDF7: 0x6789, //CJK UNIFIED IDEOGRAPH - 0xCDF8: 0x7F51, //CJK UNIFIED IDEOGRAPH - 0xCDF9: 0x5F80, //CJK UNIFIED IDEOGRAPH - 0xCDFA: 0x65FA, //CJK UNIFIED IDEOGRAPH - 0xCDFB: 0x671B, //CJK UNIFIED IDEOGRAPH - 0xCDFC: 0x5FD8, //CJK UNIFIED IDEOGRAPH - 0xCDFD: 0x5984, //CJK UNIFIED IDEOGRAPH - 0xCDFE: 0x5A01, //CJK UNIFIED IDEOGRAPH - 0xCE40: 0x8719, //CJK UNIFIED IDEOGRAPH - 0xCE41: 0x871B, //CJK UNIFIED IDEOGRAPH - 0xCE42: 0x871D, //CJK UNIFIED IDEOGRAPH - 0xCE43: 0x871F, //CJK UNIFIED IDEOGRAPH - 0xCE44: 0x8720, //CJK UNIFIED IDEOGRAPH - 0xCE45: 0x8724, //CJK UNIFIED IDEOGRAPH - 0xCE46: 0x8726, //CJK UNIFIED IDEOGRAPH - 0xCE47: 0x8727, //CJK UNIFIED IDEOGRAPH - 0xCE48: 0x8728, //CJK UNIFIED IDEOGRAPH - 0xCE49: 0x872A, //CJK UNIFIED IDEOGRAPH - 0xCE4A: 0x872B, //CJK UNIFIED IDEOGRAPH - 0xCE4B: 0x872C, //CJK UNIFIED IDEOGRAPH - 0xCE4C: 0x872D, //CJK UNIFIED IDEOGRAPH - 0xCE4D: 0x872F, //CJK UNIFIED IDEOGRAPH - 0xCE4E: 0x8730, //CJK UNIFIED IDEOGRAPH - 0xCE4F: 0x8732, //CJK UNIFIED IDEOGRAPH - 0xCE50: 0x8733, //CJK UNIFIED IDEOGRAPH - 0xCE51: 0x8735, //CJK UNIFIED IDEOGRAPH - 0xCE52: 0x8736, //CJK UNIFIED IDEOGRAPH - 0xCE53: 0x8738, //CJK UNIFIED IDEOGRAPH - 0xCE54: 0x8739, //CJK UNIFIED IDEOGRAPH - 0xCE55: 0x873A, //CJK UNIFIED IDEOGRAPH - 0xCE56: 0x873C, //CJK UNIFIED IDEOGRAPH - 0xCE57: 0x873D, //CJK UNIFIED IDEOGRAPH - 0xCE58: 0x8740, //CJK UNIFIED IDEOGRAPH - 0xCE59: 0x8741, //CJK UNIFIED IDEOGRAPH - 0xCE5A: 0x8742, //CJK UNIFIED IDEOGRAPH - 0xCE5B: 0x8743, //CJK UNIFIED IDEOGRAPH - 0xCE5C: 0x8744, //CJK UNIFIED IDEOGRAPH - 0xCE5D: 0x8745, //CJK UNIFIED IDEOGRAPH - 0xCE5E: 0x8746, //CJK UNIFIED IDEOGRAPH - 0xCE5F: 0x874A, //CJK UNIFIED IDEOGRAPH - 0xCE60: 0x874B, //CJK UNIFIED IDEOGRAPH - 0xCE61: 0x874D, //CJK UNIFIED IDEOGRAPH - 0xCE62: 0x874F, //CJK UNIFIED IDEOGRAPH - 0xCE63: 0x8750, //CJK UNIFIED IDEOGRAPH - 0xCE64: 0x8751, //CJK UNIFIED IDEOGRAPH - 0xCE65: 0x8752, //CJK UNIFIED IDEOGRAPH - 0xCE66: 0x8754, //CJK UNIFIED IDEOGRAPH - 0xCE67: 0x8755, //CJK UNIFIED IDEOGRAPH - 0xCE68: 0x8756, //CJK UNIFIED IDEOGRAPH - 0xCE69: 0x8758, //CJK UNIFIED IDEOGRAPH - 0xCE6A: 0x875A, //CJK UNIFIED IDEOGRAPH - 0xCE6B: 0x875B, //CJK UNIFIED IDEOGRAPH - 0xCE6C: 0x875C, //CJK UNIFIED IDEOGRAPH - 0xCE6D: 0x875D, //CJK UNIFIED IDEOGRAPH - 0xCE6E: 0x875E, //CJK UNIFIED IDEOGRAPH - 0xCE6F: 0x875F, //CJK UNIFIED IDEOGRAPH - 0xCE70: 0x8761, //CJK UNIFIED IDEOGRAPH - 0xCE71: 0x8762, //CJK UNIFIED IDEOGRAPH - 0xCE72: 0x8766, //CJK UNIFIED IDEOGRAPH - 0xCE73: 0x8767, //CJK UNIFIED IDEOGRAPH - 0xCE74: 0x8768, //CJK UNIFIED IDEOGRAPH - 0xCE75: 0x8769, //CJK UNIFIED IDEOGRAPH - 0xCE76: 0x876A, //CJK UNIFIED IDEOGRAPH - 0xCE77: 0x876B, //CJK UNIFIED IDEOGRAPH - 0xCE78: 0x876C, //CJK UNIFIED IDEOGRAPH - 0xCE79: 0x876D, //CJK UNIFIED IDEOGRAPH - 0xCE7A: 0x876F, //CJK UNIFIED IDEOGRAPH - 0xCE7B: 0x8771, //CJK UNIFIED IDEOGRAPH - 0xCE7C: 0x8772, //CJK UNIFIED IDEOGRAPH - 0xCE7D: 0x8773, //CJK UNIFIED IDEOGRAPH - 0xCE7E: 0x8775, //CJK UNIFIED IDEOGRAPH - 0xCE80: 0x8777, //CJK UNIFIED IDEOGRAPH - 0xCE81: 0x8778, //CJK UNIFIED IDEOGRAPH - 0xCE82: 0x8779, //CJK UNIFIED IDEOGRAPH - 0xCE83: 0x877A, //CJK UNIFIED IDEOGRAPH - 0xCE84: 0x877F, //CJK UNIFIED IDEOGRAPH - 0xCE85: 0x8780, //CJK UNIFIED IDEOGRAPH - 0xCE86: 0x8781, //CJK UNIFIED IDEOGRAPH - 0xCE87: 0x8784, //CJK UNIFIED IDEOGRAPH - 0xCE88: 0x8786, //CJK UNIFIED IDEOGRAPH - 0xCE89: 0x8787, //CJK UNIFIED IDEOGRAPH - 0xCE8A: 0x8789, //CJK UNIFIED IDEOGRAPH - 0xCE8B: 0x878A, //CJK UNIFIED IDEOGRAPH - 0xCE8C: 0x878C, //CJK UNIFIED IDEOGRAPH - 0xCE8D: 0x878E, //CJK UNIFIED IDEOGRAPH - 0xCE8E: 0x878F, //CJK UNIFIED IDEOGRAPH - 0xCE8F: 0x8790, //CJK UNIFIED IDEOGRAPH - 0xCE90: 0x8791, //CJK UNIFIED IDEOGRAPH - 0xCE91: 0x8792, //CJK UNIFIED IDEOGRAPH - 0xCE92: 0x8794, //CJK UNIFIED IDEOGRAPH - 0xCE93: 0x8795, //CJK UNIFIED IDEOGRAPH - 0xCE94: 0x8796, //CJK UNIFIED IDEOGRAPH - 0xCE95: 0x8798, //CJK UNIFIED IDEOGRAPH - 0xCE96: 0x8799, //CJK UNIFIED IDEOGRAPH - 0xCE97: 0x879A, //CJK UNIFIED IDEOGRAPH - 0xCE98: 0x879B, //CJK UNIFIED IDEOGRAPH - 0xCE99: 0x879C, //CJK UNIFIED IDEOGRAPH - 0xCE9A: 0x879D, //CJK UNIFIED IDEOGRAPH - 0xCE9B: 0x879E, //CJK UNIFIED IDEOGRAPH - 0xCE9C: 0x87A0, //CJK UNIFIED IDEOGRAPH - 0xCE9D: 0x87A1, //CJK UNIFIED IDEOGRAPH - 0xCE9E: 0x87A2, //CJK UNIFIED IDEOGRAPH - 0xCE9F: 0x87A3, //CJK UNIFIED IDEOGRAPH - 0xCEA0: 0x87A4, //CJK UNIFIED IDEOGRAPH - 0xCEA1: 0x5DCD, //CJK UNIFIED IDEOGRAPH - 0xCEA2: 0x5FAE, //CJK UNIFIED IDEOGRAPH - 0xCEA3: 0x5371, //CJK UNIFIED IDEOGRAPH - 0xCEA4: 0x97E6, //CJK UNIFIED IDEOGRAPH - 0xCEA5: 0x8FDD, //CJK UNIFIED IDEOGRAPH - 0xCEA6: 0x6845, //CJK UNIFIED IDEOGRAPH - 0xCEA7: 0x56F4, //CJK UNIFIED IDEOGRAPH - 0xCEA8: 0x552F, //CJK UNIFIED IDEOGRAPH - 0xCEA9: 0x60DF, //CJK UNIFIED IDEOGRAPH - 0xCEAA: 0x4E3A, //CJK UNIFIED IDEOGRAPH - 0xCEAB: 0x6F4D, //CJK UNIFIED IDEOGRAPH - 0xCEAC: 0x7EF4, //CJK UNIFIED IDEOGRAPH - 0xCEAD: 0x82C7, //CJK UNIFIED IDEOGRAPH - 0xCEAE: 0x840E, //CJK UNIFIED IDEOGRAPH - 0xCEAF: 0x59D4, //CJK UNIFIED IDEOGRAPH - 0xCEB0: 0x4F1F, //CJK UNIFIED IDEOGRAPH - 0xCEB1: 0x4F2A, //CJK UNIFIED IDEOGRAPH - 0xCEB2: 0x5C3E, //CJK UNIFIED IDEOGRAPH - 0xCEB3: 0x7EAC, //CJK UNIFIED IDEOGRAPH - 0xCEB4: 0x672A, //CJK UNIFIED IDEOGRAPH - 0xCEB5: 0x851A, //CJK UNIFIED IDEOGRAPH - 0xCEB6: 0x5473, //CJK UNIFIED IDEOGRAPH - 0xCEB7: 0x754F, //CJK UNIFIED IDEOGRAPH - 0xCEB8: 0x80C3, //CJK UNIFIED IDEOGRAPH - 0xCEB9: 0x5582, //CJK UNIFIED IDEOGRAPH - 0xCEBA: 0x9B4F, //CJK UNIFIED IDEOGRAPH - 0xCEBB: 0x4F4D, //CJK UNIFIED IDEOGRAPH - 0xCEBC: 0x6E2D, //CJK UNIFIED IDEOGRAPH - 0xCEBD: 0x8C13, //CJK UNIFIED IDEOGRAPH - 0xCEBE: 0x5C09, //CJK UNIFIED IDEOGRAPH - 0xCEBF: 0x6170, //CJK UNIFIED IDEOGRAPH - 0xCEC0: 0x536B, //CJK UNIFIED IDEOGRAPH - 0xCEC1: 0x761F, //CJK UNIFIED IDEOGRAPH - 0xCEC2: 0x6E29, //CJK UNIFIED IDEOGRAPH - 0xCEC3: 0x868A, //CJK UNIFIED IDEOGRAPH - 0xCEC4: 0x6587, //CJK UNIFIED IDEOGRAPH - 0xCEC5: 0x95FB, //CJK UNIFIED IDEOGRAPH - 0xCEC6: 0x7EB9, //CJK UNIFIED IDEOGRAPH - 0xCEC7: 0x543B, //CJK UNIFIED IDEOGRAPH - 0xCEC8: 0x7A33, //CJK UNIFIED IDEOGRAPH - 0xCEC9: 0x7D0A, //CJK UNIFIED IDEOGRAPH - 0xCECA: 0x95EE, //CJK UNIFIED IDEOGRAPH - 0xCECB: 0x55E1, //CJK UNIFIED IDEOGRAPH - 0xCECC: 0x7FC1, //CJK UNIFIED IDEOGRAPH - 0xCECD: 0x74EE, //CJK UNIFIED IDEOGRAPH - 0xCECE: 0x631D, //CJK UNIFIED IDEOGRAPH - 0xCECF: 0x8717, //CJK UNIFIED IDEOGRAPH - 0xCED0: 0x6DA1, //CJK UNIFIED IDEOGRAPH - 0xCED1: 0x7A9D, //CJK UNIFIED IDEOGRAPH - 0xCED2: 0x6211, //CJK UNIFIED IDEOGRAPH - 0xCED3: 0x65A1, //CJK UNIFIED IDEOGRAPH - 0xCED4: 0x5367, //CJK UNIFIED IDEOGRAPH - 0xCED5: 0x63E1, //CJK UNIFIED IDEOGRAPH - 0xCED6: 0x6C83, //CJK UNIFIED IDEOGRAPH - 0xCED7: 0x5DEB, //CJK UNIFIED IDEOGRAPH - 0xCED8: 0x545C, //CJK UNIFIED IDEOGRAPH - 0xCED9: 0x94A8, //CJK UNIFIED IDEOGRAPH - 0xCEDA: 0x4E4C, //CJK UNIFIED IDEOGRAPH - 0xCEDB: 0x6C61, //CJK UNIFIED IDEOGRAPH - 0xCEDC: 0x8BEC, //CJK UNIFIED IDEOGRAPH - 0xCEDD: 0x5C4B, //CJK UNIFIED IDEOGRAPH - 0xCEDE: 0x65E0, //CJK UNIFIED IDEOGRAPH - 0xCEDF: 0x829C, //CJK UNIFIED IDEOGRAPH - 0xCEE0: 0x68A7, //CJK UNIFIED IDEOGRAPH - 0xCEE1: 0x543E, //CJK UNIFIED IDEOGRAPH - 0xCEE2: 0x5434, //CJK UNIFIED IDEOGRAPH - 0xCEE3: 0x6BCB, //CJK UNIFIED IDEOGRAPH - 0xCEE4: 0x6B66, //CJK UNIFIED IDEOGRAPH - 0xCEE5: 0x4E94, //CJK UNIFIED IDEOGRAPH - 0xCEE6: 0x6342, //CJK UNIFIED IDEOGRAPH - 0xCEE7: 0x5348, //CJK UNIFIED IDEOGRAPH - 0xCEE8: 0x821E, //CJK UNIFIED IDEOGRAPH - 0xCEE9: 0x4F0D, //CJK UNIFIED IDEOGRAPH - 0xCEEA: 0x4FAE, //CJK UNIFIED IDEOGRAPH - 0xCEEB: 0x575E, //CJK UNIFIED IDEOGRAPH - 0xCEEC: 0x620A, //CJK UNIFIED IDEOGRAPH - 0xCEED: 0x96FE, //CJK UNIFIED IDEOGRAPH - 0xCEEE: 0x6664, //CJK UNIFIED IDEOGRAPH - 0xCEEF: 0x7269, //CJK UNIFIED IDEOGRAPH - 0xCEF0: 0x52FF, //CJK UNIFIED IDEOGRAPH - 0xCEF1: 0x52A1, //CJK UNIFIED IDEOGRAPH - 0xCEF2: 0x609F, //CJK UNIFIED IDEOGRAPH - 0xCEF3: 0x8BEF, //CJK UNIFIED IDEOGRAPH - 0xCEF4: 0x6614, //CJK UNIFIED IDEOGRAPH - 0xCEF5: 0x7199, //CJK UNIFIED IDEOGRAPH - 0xCEF6: 0x6790, //CJK UNIFIED IDEOGRAPH - 0xCEF7: 0x897F, //CJK UNIFIED IDEOGRAPH - 0xCEF8: 0x7852, //CJK UNIFIED IDEOGRAPH - 0xCEF9: 0x77FD, //CJK UNIFIED IDEOGRAPH - 0xCEFA: 0x6670, //CJK UNIFIED IDEOGRAPH - 0xCEFB: 0x563B, //CJK UNIFIED IDEOGRAPH - 0xCEFC: 0x5438, //CJK UNIFIED IDEOGRAPH - 0xCEFD: 0x9521, //CJK UNIFIED IDEOGRAPH - 0xCEFE: 0x727A, //CJK UNIFIED IDEOGRAPH - 0xCF40: 0x87A5, //CJK UNIFIED IDEOGRAPH - 0xCF41: 0x87A6, //CJK UNIFIED IDEOGRAPH - 0xCF42: 0x87A7, //CJK UNIFIED IDEOGRAPH - 0xCF43: 0x87A9, //CJK UNIFIED IDEOGRAPH - 0xCF44: 0x87AA, //CJK UNIFIED IDEOGRAPH - 0xCF45: 0x87AE, //CJK UNIFIED IDEOGRAPH - 0xCF46: 0x87B0, //CJK UNIFIED IDEOGRAPH - 0xCF47: 0x87B1, //CJK UNIFIED IDEOGRAPH - 0xCF48: 0x87B2, //CJK UNIFIED IDEOGRAPH - 0xCF49: 0x87B4, //CJK UNIFIED IDEOGRAPH - 0xCF4A: 0x87B6, //CJK UNIFIED IDEOGRAPH - 0xCF4B: 0x87B7, //CJK UNIFIED IDEOGRAPH - 0xCF4C: 0x87B8, //CJK UNIFIED IDEOGRAPH - 0xCF4D: 0x87B9, //CJK UNIFIED IDEOGRAPH - 0xCF4E: 0x87BB, //CJK UNIFIED IDEOGRAPH - 0xCF4F: 0x87BC, //CJK UNIFIED IDEOGRAPH - 0xCF50: 0x87BE, //CJK UNIFIED IDEOGRAPH - 0xCF51: 0x87BF, //CJK UNIFIED IDEOGRAPH - 0xCF52: 0x87C1, //CJK UNIFIED IDEOGRAPH - 0xCF53: 0x87C2, //CJK UNIFIED IDEOGRAPH - 0xCF54: 0x87C3, //CJK UNIFIED IDEOGRAPH - 0xCF55: 0x87C4, //CJK UNIFIED IDEOGRAPH - 0xCF56: 0x87C5, //CJK UNIFIED IDEOGRAPH - 0xCF57: 0x87C7, //CJK UNIFIED IDEOGRAPH - 0xCF58: 0x87C8, //CJK UNIFIED IDEOGRAPH - 0xCF59: 0x87C9, //CJK UNIFIED IDEOGRAPH - 0xCF5A: 0x87CC, //CJK UNIFIED IDEOGRAPH - 0xCF5B: 0x87CD, //CJK UNIFIED IDEOGRAPH - 0xCF5C: 0x87CE, //CJK UNIFIED IDEOGRAPH - 0xCF5D: 0x87CF, //CJK UNIFIED IDEOGRAPH - 0xCF5E: 0x87D0, //CJK UNIFIED IDEOGRAPH - 0xCF5F: 0x87D4, //CJK UNIFIED IDEOGRAPH - 0xCF60: 0x87D5, //CJK UNIFIED IDEOGRAPH - 0xCF61: 0x87D6, //CJK UNIFIED IDEOGRAPH - 0xCF62: 0x87D7, //CJK UNIFIED IDEOGRAPH - 0xCF63: 0x87D8, //CJK UNIFIED IDEOGRAPH - 0xCF64: 0x87D9, //CJK UNIFIED IDEOGRAPH - 0xCF65: 0x87DA, //CJK UNIFIED IDEOGRAPH - 0xCF66: 0x87DC, //CJK UNIFIED IDEOGRAPH - 0xCF67: 0x87DD, //CJK UNIFIED IDEOGRAPH - 0xCF68: 0x87DE, //CJK UNIFIED IDEOGRAPH - 0xCF69: 0x87DF, //CJK UNIFIED IDEOGRAPH - 0xCF6A: 0x87E1, //CJK UNIFIED IDEOGRAPH - 0xCF6B: 0x87E2, //CJK UNIFIED IDEOGRAPH - 0xCF6C: 0x87E3, //CJK UNIFIED IDEOGRAPH - 0xCF6D: 0x87E4, //CJK UNIFIED IDEOGRAPH - 0xCF6E: 0x87E6, //CJK UNIFIED IDEOGRAPH - 0xCF6F: 0x87E7, //CJK UNIFIED IDEOGRAPH - 0xCF70: 0x87E8, //CJK UNIFIED IDEOGRAPH - 0xCF71: 0x87E9, //CJK UNIFIED IDEOGRAPH - 0xCF72: 0x87EB, //CJK UNIFIED IDEOGRAPH - 0xCF73: 0x87EC, //CJK UNIFIED IDEOGRAPH - 0xCF74: 0x87ED, //CJK UNIFIED IDEOGRAPH - 0xCF75: 0x87EF, //CJK UNIFIED IDEOGRAPH - 0xCF76: 0x87F0, //CJK UNIFIED IDEOGRAPH - 0xCF77: 0x87F1, //CJK UNIFIED IDEOGRAPH - 0xCF78: 0x87F2, //CJK UNIFIED IDEOGRAPH - 0xCF79: 0x87F3, //CJK UNIFIED IDEOGRAPH - 0xCF7A: 0x87F4, //CJK UNIFIED IDEOGRAPH - 0xCF7B: 0x87F5, //CJK UNIFIED IDEOGRAPH - 0xCF7C: 0x87F6, //CJK UNIFIED IDEOGRAPH - 0xCF7D: 0x87F7, //CJK UNIFIED IDEOGRAPH - 0xCF7E: 0x87F8, //CJK UNIFIED IDEOGRAPH - 0xCF80: 0x87FA, //CJK UNIFIED IDEOGRAPH - 0xCF81: 0x87FB, //CJK UNIFIED IDEOGRAPH - 0xCF82: 0x87FC, //CJK UNIFIED IDEOGRAPH - 0xCF83: 0x87FD, //CJK UNIFIED IDEOGRAPH - 0xCF84: 0x87FF, //CJK UNIFIED IDEOGRAPH - 0xCF85: 0x8800, //CJK UNIFIED IDEOGRAPH - 0xCF86: 0x8801, //CJK UNIFIED IDEOGRAPH - 0xCF87: 0x8802, //CJK UNIFIED IDEOGRAPH - 0xCF88: 0x8804, //CJK UNIFIED IDEOGRAPH - 0xCF89: 0x8805, //CJK UNIFIED IDEOGRAPH - 0xCF8A: 0x8806, //CJK UNIFIED IDEOGRAPH - 0xCF8B: 0x8807, //CJK UNIFIED IDEOGRAPH - 0xCF8C: 0x8808, //CJK UNIFIED IDEOGRAPH - 0xCF8D: 0x8809, //CJK UNIFIED IDEOGRAPH - 0xCF8E: 0x880B, //CJK UNIFIED IDEOGRAPH - 0xCF8F: 0x880C, //CJK UNIFIED IDEOGRAPH - 0xCF90: 0x880D, //CJK UNIFIED IDEOGRAPH - 0xCF91: 0x880E, //CJK UNIFIED IDEOGRAPH - 0xCF92: 0x880F, //CJK UNIFIED IDEOGRAPH - 0xCF93: 0x8810, //CJK UNIFIED IDEOGRAPH - 0xCF94: 0x8811, //CJK UNIFIED IDEOGRAPH - 0xCF95: 0x8812, //CJK UNIFIED IDEOGRAPH - 0xCF96: 0x8814, //CJK UNIFIED IDEOGRAPH - 0xCF97: 0x8817, //CJK UNIFIED IDEOGRAPH - 0xCF98: 0x8818, //CJK UNIFIED IDEOGRAPH - 0xCF99: 0x8819, //CJK UNIFIED IDEOGRAPH - 0xCF9A: 0x881A, //CJK UNIFIED IDEOGRAPH - 0xCF9B: 0x881C, //CJK UNIFIED IDEOGRAPH - 0xCF9C: 0x881D, //CJK UNIFIED IDEOGRAPH - 0xCF9D: 0x881E, //CJK UNIFIED IDEOGRAPH - 0xCF9E: 0x881F, //CJK UNIFIED IDEOGRAPH - 0xCF9F: 0x8820, //CJK UNIFIED IDEOGRAPH - 0xCFA0: 0x8823, //CJK UNIFIED IDEOGRAPH - 0xCFA1: 0x7A00, //CJK UNIFIED IDEOGRAPH - 0xCFA2: 0x606F, //CJK UNIFIED IDEOGRAPH - 0xCFA3: 0x5E0C, //CJK UNIFIED IDEOGRAPH - 0xCFA4: 0x6089, //CJK UNIFIED IDEOGRAPH - 0xCFA5: 0x819D, //CJK UNIFIED IDEOGRAPH - 0xCFA6: 0x5915, //CJK UNIFIED IDEOGRAPH - 0xCFA7: 0x60DC, //CJK UNIFIED IDEOGRAPH - 0xCFA8: 0x7184, //CJK UNIFIED IDEOGRAPH - 0xCFA9: 0x70EF, //CJK UNIFIED IDEOGRAPH - 0xCFAA: 0x6EAA, //CJK UNIFIED IDEOGRAPH - 0xCFAB: 0x6C50, //CJK UNIFIED IDEOGRAPH - 0xCFAC: 0x7280, //CJK UNIFIED IDEOGRAPH - 0xCFAD: 0x6A84, //CJK UNIFIED IDEOGRAPH - 0xCFAE: 0x88AD, //CJK UNIFIED IDEOGRAPH - 0xCFAF: 0x5E2D, //CJK UNIFIED IDEOGRAPH - 0xCFB0: 0x4E60, //CJK UNIFIED IDEOGRAPH - 0xCFB1: 0x5AB3, //CJK UNIFIED IDEOGRAPH - 0xCFB2: 0x559C, //CJK UNIFIED IDEOGRAPH - 0xCFB3: 0x94E3, //CJK UNIFIED IDEOGRAPH - 0xCFB4: 0x6D17, //CJK UNIFIED IDEOGRAPH - 0xCFB5: 0x7CFB, //CJK UNIFIED IDEOGRAPH - 0xCFB6: 0x9699, //CJK UNIFIED IDEOGRAPH - 0xCFB7: 0x620F, //CJK UNIFIED IDEOGRAPH - 0xCFB8: 0x7EC6, //CJK UNIFIED IDEOGRAPH - 0xCFB9: 0x778E, //CJK UNIFIED IDEOGRAPH - 0xCFBA: 0x867E, //CJK UNIFIED IDEOGRAPH - 0xCFBB: 0x5323, //CJK UNIFIED IDEOGRAPH - 0xCFBC: 0x971E, //CJK UNIFIED IDEOGRAPH - 0xCFBD: 0x8F96, //CJK UNIFIED IDEOGRAPH - 0xCFBE: 0x6687, //CJK UNIFIED IDEOGRAPH - 0xCFBF: 0x5CE1, //CJK UNIFIED IDEOGRAPH - 0xCFC0: 0x4FA0, //CJK UNIFIED IDEOGRAPH - 0xCFC1: 0x72ED, //CJK UNIFIED IDEOGRAPH - 0xCFC2: 0x4E0B, //CJK UNIFIED IDEOGRAPH - 0xCFC3: 0x53A6, //CJK UNIFIED IDEOGRAPH - 0xCFC4: 0x590F, //CJK UNIFIED IDEOGRAPH - 0xCFC5: 0x5413, //CJK UNIFIED IDEOGRAPH - 0xCFC6: 0x6380, //CJK UNIFIED IDEOGRAPH - 0xCFC7: 0x9528, //CJK UNIFIED IDEOGRAPH - 0xCFC8: 0x5148, //CJK UNIFIED IDEOGRAPH - 0xCFC9: 0x4ED9, //CJK UNIFIED IDEOGRAPH - 0xCFCA: 0x9C9C, //CJK UNIFIED IDEOGRAPH - 0xCFCB: 0x7EA4, //CJK UNIFIED IDEOGRAPH - 0xCFCC: 0x54B8, //CJK UNIFIED IDEOGRAPH - 0xCFCD: 0x8D24, //CJK UNIFIED IDEOGRAPH - 0xCFCE: 0x8854, //CJK UNIFIED IDEOGRAPH - 0xCFCF: 0x8237, //CJK UNIFIED IDEOGRAPH - 0xCFD0: 0x95F2, //CJK UNIFIED IDEOGRAPH - 0xCFD1: 0x6D8E, //CJK UNIFIED IDEOGRAPH - 0xCFD2: 0x5F26, //CJK UNIFIED IDEOGRAPH - 0xCFD3: 0x5ACC, //CJK UNIFIED IDEOGRAPH - 0xCFD4: 0x663E, //CJK UNIFIED IDEOGRAPH - 0xCFD5: 0x9669, //CJK UNIFIED IDEOGRAPH - 0xCFD6: 0x73B0, //CJK UNIFIED IDEOGRAPH - 0xCFD7: 0x732E, //CJK UNIFIED IDEOGRAPH - 0xCFD8: 0x53BF, //CJK UNIFIED IDEOGRAPH - 0xCFD9: 0x817A, //CJK UNIFIED IDEOGRAPH - 0xCFDA: 0x9985, //CJK UNIFIED IDEOGRAPH - 0xCFDB: 0x7FA1, //CJK UNIFIED IDEOGRAPH - 0xCFDC: 0x5BAA, //CJK UNIFIED IDEOGRAPH - 0xCFDD: 0x9677, //CJK UNIFIED IDEOGRAPH - 0xCFDE: 0x9650, //CJK UNIFIED IDEOGRAPH - 0xCFDF: 0x7EBF, //CJK UNIFIED IDEOGRAPH - 0xCFE0: 0x76F8, //CJK UNIFIED IDEOGRAPH - 0xCFE1: 0x53A2, //CJK UNIFIED IDEOGRAPH - 0xCFE2: 0x9576, //CJK UNIFIED IDEOGRAPH - 0xCFE3: 0x9999, //CJK UNIFIED IDEOGRAPH - 0xCFE4: 0x7BB1, //CJK UNIFIED IDEOGRAPH - 0xCFE5: 0x8944, //CJK UNIFIED IDEOGRAPH - 0xCFE6: 0x6E58, //CJK UNIFIED IDEOGRAPH - 0xCFE7: 0x4E61, //CJK UNIFIED IDEOGRAPH - 0xCFE8: 0x7FD4, //CJK UNIFIED IDEOGRAPH - 0xCFE9: 0x7965, //CJK UNIFIED IDEOGRAPH - 0xCFEA: 0x8BE6, //CJK UNIFIED IDEOGRAPH - 0xCFEB: 0x60F3, //CJK UNIFIED IDEOGRAPH - 0xCFEC: 0x54CD, //CJK UNIFIED IDEOGRAPH - 0xCFED: 0x4EAB, //CJK UNIFIED IDEOGRAPH - 0xCFEE: 0x9879, //CJK UNIFIED IDEOGRAPH - 0xCFEF: 0x5DF7, //CJK UNIFIED IDEOGRAPH - 0xCFF0: 0x6A61, //CJK UNIFIED IDEOGRAPH - 0xCFF1: 0x50CF, //CJK UNIFIED IDEOGRAPH - 0xCFF2: 0x5411, //CJK UNIFIED IDEOGRAPH - 0xCFF3: 0x8C61, //CJK UNIFIED IDEOGRAPH - 0xCFF4: 0x8427, //CJK UNIFIED IDEOGRAPH - 0xCFF5: 0x785D, //CJK UNIFIED IDEOGRAPH - 0xCFF6: 0x9704, //CJK UNIFIED IDEOGRAPH - 0xCFF7: 0x524A, //CJK UNIFIED IDEOGRAPH - 0xCFF8: 0x54EE, //CJK UNIFIED IDEOGRAPH - 0xCFF9: 0x56A3, //CJK UNIFIED IDEOGRAPH - 0xCFFA: 0x9500, //CJK UNIFIED IDEOGRAPH - 0xCFFB: 0x6D88, //CJK UNIFIED IDEOGRAPH - 0xCFFC: 0x5BB5, //CJK UNIFIED IDEOGRAPH - 0xCFFD: 0x6DC6, //CJK UNIFIED IDEOGRAPH - 0xCFFE: 0x6653, //CJK UNIFIED IDEOGRAPH - 0xD040: 0x8824, //CJK UNIFIED IDEOGRAPH - 0xD041: 0x8825, //CJK UNIFIED IDEOGRAPH - 0xD042: 0x8826, //CJK UNIFIED IDEOGRAPH - 0xD043: 0x8827, //CJK UNIFIED IDEOGRAPH - 0xD044: 0x8828, //CJK UNIFIED IDEOGRAPH - 0xD045: 0x8829, //CJK UNIFIED IDEOGRAPH - 0xD046: 0x882A, //CJK UNIFIED IDEOGRAPH - 0xD047: 0x882B, //CJK UNIFIED IDEOGRAPH - 0xD048: 0x882C, //CJK UNIFIED IDEOGRAPH - 0xD049: 0x882D, //CJK UNIFIED IDEOGRAPH - 0xD04A: 0x882E, //CJK UNIFIED IDEOGRAPH - 0xD04B: 0x882F, //CJK UNIFIED IDEOGRAPH - 0xD04C: 0x8830, //CJK UNIFIED IDEOGRAPH - 0xD04D: 0x8831, //CJK UNIFIED IDEOGRAPH - 0xD04E: 0x8833, //CJK UNIFIED IDEOGRAPH - 0xD04F: 0x8834, //CJK UNIFIED IDEOGRAPH - 0xD050: 0x8835, //CJK UNIFIED IDEOGRAPH - 0xD051: 0x8836, //CJK UNIFIED IDEOGRAPH - 0xD052: 0x8837, //CJK UNIFIED IDEOGRAPH - 0xD053: 0x8838, //CJK UNIFIED IDEOGRAPH - 0xD054: 0x883A, //CJK UNIFIED IDEOGRAPH - 0xD055: 0x883B, //CJK UNIFIED IDEOGRAPH - 0xD056: 0x883D, //CJK UNIFIED IDEOGRAPH - 0xD057: 0x883E, //CJK UNIFIED IDEOGRAPH - 0xD058: 0x883F, //CJK UNIFIED IDEOGRAPH - 0xD059: 0x8841, //CJK UNIFIED IDEOGRAPH - 0xD05A: 0x8842, //CJK UNIFIED IDEOGRAPH - 0xD05B: 0x8843, //CJK UNIFIED IDEOGRAPH - 0xD05C: 0x8846, //CJK UNIFIED IDEOGRAPH - 0xD05D: 0x8847, //CJK UNIFIED IDEOGRAPH - 0xD05E: 0x8848, //CJK UNIFIED IDEOGRAPH - 0xD05F: 0x8849, //CJK UNIFIED IDEOGRAPH - 0xD060: 0x884A, //CJK UNIFIED IDEOGRAPH - 0xD061: 0x884B, //CJK UNIFIED IDEOGRAPH - 0xD062: 0x884E, //CJK UNIFIED IDEOGRAPH - 0xD063: 0x884F, //CJK UNIFIED IDEOGRAPH - 0xD064: 0x8850, //CJK UNIFIED IDEOGRAPH - 0xD065: 0x8851, //CJK UNIFIED IDEOGRAPH - 0xD066: 0x8852, //CJK UNIFIED IDEOGRAPH - 0xD067: 0x8853, //CJK UNIFIED IDEOGRAPH - 0xD068: 0x8855, //CJK UNIFIED IDEOGRAPH - 0xD069: 0x8856, //CJK UNIFIED IDEOGRAPH - 0xD06A: 0x8858, //CJK UNIFIED IDEOGRAPH - 0xD06B: 0x885A, //CJK UNIFIED IDEOGRAPH - 0xD06C: 0x885B, //CJK UNIFIED IDEOGRAPH - 0xD06D: 0x885C, //CJK UNIFIED IDEOGRAPH - 0xD06E: 0x885D, //CJK UNIFIED IDEOGRAPH - 0xD06F: 0x885E, //CJK UNIFIED IDEOGRAPH - 0xD070: 0x885F, //CJK UNIFIED IDEOGRAPH - 0xD071: 0x8860, //CJK UNIFIED IDEOGRAPH - 0xD072: 0x8866, //CJK UNIFIED IDEOGRAPH - 0xD073: 0x8867, //CJK UNIFIED IDEOGRAPH - 0xD074: 0x886A, //CJK UNIFIED IDEOGRAPH - 0xD075: 0x886D, //CJK UNIFIED IDEOGRAPH - 0xD076: 0x886F, //CJK UNIFIED IDEOGRAPH - 0xD077: 0x8871, //CJK UNIFIED IDEOGRAPH - 0xD078: 0x8873, //CJK UNIFIED IDEOGRAPH - 0xD079: 0x8874, //CJK UNIFIED IDEOGRAPH - 0xD07A: 0x8875, //CJK UNIFIED IDEOGRAPH - 0xD07B: 0x8876, //CJK UNIFIED IDEOGRAPH - 0xD07C: 0x8878, //CJK UNIFIED IDEOGRAPH - 0xD07D: 0x8879, //CJK UNIFIED IDEOGRAPH - 0xD07E: 0x887A, //CJK UNIFIED IDEOGRAPH - 0xD080: 0x887B, //CJK UNIFIED IDEOGRAPH - 0xD081: 0x887C, //CJK UNIFIED IDEOGRAPH - 0xD082: 0x8880, //CJK UNIFIED IDEOGRAPH - 0xD083: 0x8883, //CJK UNIFIED IDEOGRAPH - 0xD084: 0x8886, //CJK UNIFIED IDEOGRAPH - 0xD085: 0x8887, //CJK UNIFIED IDEOGRAPH - 0xD086: 0x8889, //CJK UNIFIED IDEOGRAPH - 0xD087: 0x888A, //CJK UNIFIED IDEOGRAPH - 0xD088: 0x888C, //CJK UNIFIED IDEOGRAPH - 0xD089: 0x888E, //CJK UNIFIED IDEOGRAPH - 0xD08A: 0x888F, //CJK UNIFIED IDEOGRAPH - 0xD08B: 0x8890, //CJK UNIFIED IDEOGRAPH - 0xD08C: 0x8891, //CJK UNIFIED IDEOGRAPH - 0xD08D: 0x8893, //CJK UNIFIED IDEOGRAPH - 0xD08E: 0x8894, //CJK UNIFIED IDEOGRAPH - 0xD08F: 0x8895, //CJK UNIFIED IDEOGRAPH - 0xD090: 0x8897, //CJK UNIFIED IDEOGRAPH - 0xD091: 0x8898, //CJK UNIFIED IDEOGRAPH - 0xD092: 0x8899, //CJK UNIFIED IDEOGRAPH - 0xD093: 0x889A, //CJK UNIFIED IDEOGRAPH - 0xD094: 0x889B, //CJK UNIFIED IDEOGRAPH - 0xD095: 0x889D, //CJK UNIFIED IDEOGRAPH - 0xD096: 0x889E, //CJK UNIFIED IDEOGRAPH - 0xD097: 0x889F, //CJK UNIFIED IDEOGRAPH - 0xD098: 0x88A0, //CJK UNIFIED IDEOGRAPH - 0xD099: 0x88A1, //CJK UNIFIED IDEOGRAPH - 0xD09A: 0x88A3, //CJK UNIFIED IDEOGRAPH - 0xD09B: 0x88A5, //CJK UNIFIED IDEOGRAPH - 0xD09C: 0x88A6, //CJK UNIFIED IDEOGRAPH - 0xD09D: 0x88A7, //CJK UNIFIED IDEOGRAPH - 0xD09E: 0x88A8, //CJK UNIFIED IDEOGRAPH - 0xD09F: 0x88A9, //CJK UNIFIED IDEOGRAPH - 0xD0A0: 0x88AA, //CJK UNIFIED IDEOGRAPH - 0xD0A1: 0x5C0F, //CJK UNIFIED IDEOGRAPH - 0xD0A2: 0x5B5D, //CJK UNIFIED IDEOGRAPH - 0xD0A3: 0x6821, //CJK UNIFIED IDEOGRAPH - 0xD0A4: 0x8096, //CJK UNIFIED IDEOGRAPH - 0xD0A5: 0x5578, //CJK UNIFIED IDEOGRAPH - 0xD0A6: 0x7B11, //CJK UNIFIED IDEOGRAPH - 0xD0A7: 0x6548, //CJK UNIFIED IDEOGRAPH - 0xD0A8: 0x6954, //CJK UNIFIED IDEOGRAPH - 0xD0A9: 0x4E9B, //CJK UNIFIED IDEOGRAPH - 0xD0AA: 0x6B47, //CJK UNIFIED IDEOGRAPH - 0xD0AB: 0x874E, //CJK UNIFIED IDEOGRAPH - 0xD0AC: 0x978B, //CJK UNIFIED IDEOGRAPH - 0xD0AD: 0x534F, //CJK UNIFIED IDEOGRAPH - 0xD0AE: 0x631F, //CJK UNIFIED IDEOGRAPH - 0xD0AF: 0x643A, //CJK UNIFIED IDEOGRAPH - 0xD0B0: 0x90AA, //CJK UNIFIED IDEOGRAPH - 0xD0B1: 0x659C, //CJK UNIFIED IDEOGRAPH - 0xD0B2: 0x80C1, //CJK UNIFIED IDEOGRAPH - 0xD0B3: 0x8C10, //CJK UNIFIED IDEOGRAPH - 0xD0B4: 0x5199, //CJK UNIFIED IDEOGRAPH - 0xD0B5: 0x68B0, //CJK UNIFIED IDEOGRAPH - 0xD0B6: 0x5378, //CJK UNIFIED IDEOGRAPH - 0xD0B7: 0x87F9, //CJK UNIFIED IDEOGRAPH - 0xD0B8: 0x61C8, //CJK UNIFIED IDEOGRAPH - 0xD0B9: 0x6CC4, //CJK UNIFIED IDEOGRAPH - 0xD0BA: 0x6CFB, //CJK UNIFIED IDEOGRAPH - 0xD0BB: 0x8C22, //CJK UNIFIED IDEOGRAPH - 0xD0BC: 0x5C51, //CJK UNIFIED IDEOGRAPH - 0xD0BD: 0x85AA, //CJK UNIFIED IDEOGRAPH - 0xD0BE: 0x82AF, //CJK UNIFIED IDEOGRAPH - 0xD0BF: 0x950C, //CJK UNIFIED IDEOGRAPH - 0xD0C0: 0x6B23, //CJK UNIFIED IDEOGRAPH - 0xD0C1: 0x8F9B, //CJK UNIFIED IDEOGRAPH - 0xD0C2: 0x65B0, //CJK UNIFIED IDEOGRAPH - 0xD0C3: 0x5FFB, //CJK UNIFIED IDEOGRAPH - 0xD0C4: 0x5FC3, //CJK UNIFIED IDEOGRAPH - 0xD0C5: 0x4FE1, //CJK UNIFIED IDEOGRAPH - 0xD0C6: 0x8845, //CJK UNIFIED IDEOGRAPH - 0xD0C7: 0x661F, //CJK UNIFIED IDEOGRAPH - 0xD0C8: 0x8165, //CJK UNIFIED IDEOGRAPH - 0xD0C9: 0x7329, //CJK UNIFIED IDEOGRAPH - 0xD0CA: 0x60FA, //CJK UNIFIED IDEOGRAPH - 0xD0CB: 0x5174, //CJK UNIFIED IDEOGRAPH - 0xD0CC: 0x5211, //CJK UNIFIED IDEOGRAPH - 0xD0CD: 0x578B, //CJK UNIFIED IDEOGRAPH - 0xD0CE: 0x5F62, //CJK UNIFIED IDEOGRAPH - 0xD0CF: 0x90A2, //CJK UNIFIED IDEOGRAPH - 0xD0D0: 0x884C, //CJK UNIFIED IDEOGRAPH - 0xD0D1: 0x9192, //CJK UNIFIED IDEOGRAPH - 0xD0D2: 0x5E78, //CJK UNIFIED IDEOGRAPH - 0xD0D3: 0x674F, //CJK UNIFIED IDEOGRAPH - 0xD0D4: 0x6027, //CJK UNIFIED IDEOGRAPH - 0xD0D5: 0x59D3, //CJK UNIFIED IDEOGRAPH - 0xD0D6: 0x5144, //CJK UNIFIED IDEOGRAPH - 0xD0D7: 0x51F6, //CJK UNIFIED IDEOGRAPH - 0xD0D8: 0x80F8, //CJK UNIFIED IDEOGRAPH - 0xD0D9: 0x5308, //CJK UNIFIED IDEOGRAPH - 0xD0DA: 0x6C79, //CJK UNIFIED IDEOGRAPH - 0xD0DB: 0x96C4, //CJK UNIFIED IDEOGRAPH - 0xD0DC: 0x718A, //CJK UNIFIED IDEOGRAPH - 0xD0DD: 0x4F11, //CJK UNIFIED IDEOGRAPH - 0xD0DE: 0x4FEE, //CJK UNIFIED IDEOGRAPH - 0xD0DF: 0x7F9E, //CJK UNIFIED IDEOGRAPH - 0xD0E0: 0x673D, //CJK UNIFIED IDEOGRAPH - 0xD0E1: 0x55C5, //CJK UNIFIED IDEOGRAPH - 0xD0E2: 0x9508, //CJK UNIFIED IDEOGRAPH - 0xD0E3: 0x79C0, //CJK UNIFIED IDEOGRAPH - 0xD0E4: 0x8896, //CJK UNIFIED IDEOGRAPH - 0xD0E5: 0x7EE3, //CJK UNIFIED IDEOGRAPH - 0xD0E6: 0x589F, //CJK UNIFIED IDEOGRAPH - 0xD0E7: 0x620C, //CJK UNIFIED IDEOGRAPH - 0xD0E8: 0x9700, //CJK UNIFIED IDEOGRAPH - 0xD0E9: 0x865A, //CJK UNIFIED IDEOGRAPH - 0xD0EA: 0x5618, //CJK UNIFIED IDEOGRAPH - 0xD0EB: 0x987B, //CJK UNIFIED IDEOGRAPH - 0xD0EC: 0x5F90, //CJK UNIFIED IDEOGRAPH - 0xD0ED: 0x8BB8, //CJK UNIFIED IDEOGRAPH - 0xD0EE: 0x84C4, //CJK UNIFIED IDEOGRAPH - 0xD0EF: 0x9157, //CJK UNIFIED IDEOGRAPH - 0xD0F0: 0x53D9, //CJK UNIFIED IDEOGRAPH - 0xD0F1: 0x65ED, //CJK UNIFIED IDEOGRAPH - 0xD0F2: 0x5E8F, //CJK UNIFIED IDEOGRAPH - 0xD0F3: 0x755C, //CJK UNIFIED IDEOGRAPH - 0xD0F4: 0x6064, //CJK UNIFIED IDEOGRAPH - 0xD0F5: 0x7D6E, //CJK UNIFIED IDEOGRAPH - 0xD0F6: 0x5A7F, //CJK UNIFIED IDEOGRAPH - 0xD0F7: 0x7EEA, //CJK UNIFIED IDEOGRAPH - 0xD0F8: 0x7EED, //CJK UNIFIED IDEOGRAPH - 0xD0F9: 0x8F69, //CJK UNIFIED IDEOGRAPH - 0xD0FA: 0x55A7, //CJK UNIFIED IDEOGRAPH - 0xD0FB: 0x5BA3, //CJK UNIFIED IDEOGRAPH - 0xD0FC: 0x60AC, //CJK UNIFIED IDEOGRAPH - 0xD0FD: 0x65CB, //CJK UNIFIED IDEOGRAPH - 0xD0FE: 0x7384, //CJK UNIFIED IDEOGRAPH - 0xD140: 0x88AC, //CJK UNIFIED IDEOGRAPH - 0xD141: 0x88AE, //CJK UNIFIED IDEOGRAPH - 0xD142: 0x88AF, //CJK UNIFIED IDEOGRAPH - 0xD143: 0x88B0, //CJK UNIFIED IDEOGRAPH - 0xD144: 0x88B2, //CJK UNIFIED IDEOGRAPH - 0xD145: 0x88B3, //CJK UNIFIED IDEOGRAPH - 0xD146: 0x88B4, //CJK UNIFIED IDEOGRAPH - 0xD147: 0x88B5, //CJK UNIFIED IDEOGRAPH - 0xD148: 0x88B6, //CJK UNIFIED IDEOGRAPH - 0xD149: 0x88B8, //CJK UNIFIED IDEOGRAPH - 0xD14A: 0x88B9, //CJK UNIFIED IDEOGRAPH - 0xD14B: 0x88BA, //CJK UNIFIED IDEOGRAPH - 0xD14C: 0x88BB, //CJK UNIFIED IDEOGRAPH - 0xD14D: 0x88BD, //CJK UNIFIED IDEOGRAPH - 0xD14E: 0x88BE, //CJK UNIFIED IDEOGRAPH - 0xD14F: 0x88BF, //CJK UNIFIED IDEOGRAPH - 0xD150: 0x88C0, //CJK UNIFIED IDEOGRAPH - 0xD151: 0x88C3, //CJK UNIFIED IDEOGRAPH - 0xD152: 0x88C4, //CJK UNIFIED IDEOGRAPH - 0xD153: 0x88C7, //CJK UNIFIED IDEOGRAPH - 0xD154: 0x88C8, //CJK UNIFIED IDEOGRAPH - 0xD155: 0x88CA, //CJK UNIFIED IDEOGRAPH - 0xD156: 0x88CB, //CJK UNIFIED IDEOGRAPH - 0xD157: 0x88CC, //CJK UNIFIED IDEOGRAPH - 0xD158: 0x88CD, //CJK UNIFIED IDEOGRAPH - 0xD159: 0x88CF, //CJK UNIFIED IDEOGRAPH - 0xD15A: 0x88D0, //CJK UNIFIED IDEOGRAPH - 0xD15B: 0x88D1, //CJK UNIFIED IDEOGRAPH - 0xD15C: 0x88D3, //CJK UNIFIED IDEOGRAPH - 0xD15D: 0x88D6, //CJK UNIFIED IDEOGRAPH - 0xD15E: 0x88D7, //CJK UNIFIED IDEOGRAPH - 0xD15F: 0x88DA, //CJK UNIFIED IDEOGRAPH - 0xD160: 0x88DB, //CJK UNIFIED IDEOGRAPH - 0xD161: 0x88DC, //CJK UNIFIED IDEOGRAPH - 0xD162: 0x88DD, //CJK UNIFIED IDEOGRAPH - 0xD163: 0x88DE, //CJK UNIFIED IDEOGRAPH - 0xD164: 0x88E0, //CJK UNIFIED IDEOGRAPH - 0xD165: 0x88E1, //CJK UNIFIED IDEOGRAPH - 0xD166: 0x88E6, //CJK UNIFIED IDEOGRAPH - 0xD167: 0x88E7, //CJK UNIFIED IDEOGRAPH - 0xD168: 0x88E9, //CJK UNIFIED IDEOGRAPH - 0xD169: 0x88EA, //CJK UNIFIED IDEOGRAPH - 0xD16A: 0x88EB, //CJK UNIFIED IDEOGRAPH - 0xD16B: 0x88EC, //CJK UNIFIED IDEOGRAPH - 0xD16C: 0x88ED, //CJK UNIFIED IDEOGRAPH - 0xD16D: 0x88EE, //CJK UNIFIED IDEOGRAPH - 0xD16E: 0x88EF, //CJK UNIFIED IDEOGRAPH - 0xD16F: 0x88F2, //CJK UNIFIED IDEOGRAPH - 0xD170: 0x88F5, //CJK UNIFIED IDEOGRAPH - 0xD171: 0x88F6, //CJK UNIFIED IDEOGRAPH - 0xD172: 0x88F7, //CJK UNIFIED IDEOGRAPH - 0xD173: 0x88FA, //CJK UNIFIED IDEOGRAPH - 0xD174: 0x88FB, //CJK UNIFIED IDEOGRAPH - 0xD175: 0x88FD, //CJK UNIFIED IDEOGRAPH - 0xD176: 0x88FF, //CJK UNIFIED IDEOGRAPH - 0xD177: 0x8900, //CJK UNIFIED IDEOGRAPH - 0xD178: 0x8901, //CJK UNIFIED IDEOGRAPH - 0xD179: 0x8903, //CJK UNIFIED IDEOGRAPH - 0xD17A: 0x8904, //CJK UNIFIED IDEOGRAPH - 0xD17B: 0x8905, //CJK UNIFIED IDEOGRAPH - 0xD17C: 0x8906, //CJK UNIFIED IDEOGRAPH - 0xD17D: 0x8907, //CJK UNIFIED IDEOGRAPH - 0xD17E: 0x8908, //CJK UNIFIED IDEOGRAPH - 0xD180: 0x8909, //CJK UNIFIED IDEOGRAPH - 0xD181: 0x890B, //CJK UNIFIED IDEOGRAPH - 0xD182: 0x890C, //CJK UNIFIED IDEOGRAPH - 0xD183: 0x890D, //CJK UNIFIED IDEOGRAPH - 0xD184: 0x890E, //CJK UNIFIED IDEOGRAPH - 0xD185: 0x890F, //CJK UNIFIED IDEOGRAPH - 0xD186: 0x8911, //CJK UNIFIED IDEOGRAPH - 0xD187: 0x8914, //CJK UNIFIED IDEOGRAPH - 0xD188: 0x8915, //CJK UNIFIED IDEOGRAPH - 0xD189: 0x8916, //CJK UNIFIED IDEOGRAPH - 0xD18A: 0x8917, //CJK UNIFIED IDEOGRAPH - 0xD18B: 0x8918, //CJK UNIFIED IDEOGRAPH - 0xD18C: 0x891C, //CJK UNIFIED IDEOGRAPH - 0xD18D: 0x891D, //CJK UNIFIED IDEOGRAPH - 0xD18E: 0x891E, //CJK UNIFIED IDEOGRAPH - 0xD18F: 0x891F, //CJK UNIFIED IDEOGRAPH - 0xD190: 0x8920, //CJK UNIFIED IDEOGRAPH - 0xD191: 0x8922, //CJK UNIFIED IDEOGRAPH - 0xD192: 0x8923, //CJK UNIFIED IDEOGRAPH - 0xD193: 0x8924, //CJK UNIFIED IDEOGRAPH - 0xD194: 0x8926, //CJK UNIFIED IDEOGRAPH - 0xD195: 0x8927, //CJK UNIFIED IDEOGRAPH - 0xD196: 0x8928, //CJK UNIFIED IDEOGRAPH - 0xD197: 0x8929, //CJK UNIFIED IDEOGRAPH - 0xD198: 0x892C, //CJK UNIFIED IDEOGRAPH - 0xD199: 0x892D, //CJK UNIFIED IDEOGRAPH - 0xD19A: 0x892E, //CJK UNIFIED IDEOGRAPH - 0xD19B: 0x892F, //CJK UNIFIED IDEOGRAPH - 0xD19C: 0x8931, //CJK UNIFIED IDEOGRAPH - 0xD19D: 0x8932, //CJK UNIFIED IDEOGRAPH - 0xD19E: 0x8933, //CJK UNIFIED IDEOGRAPH - 0xD19F: 0x8935, //CJK UNIFIED IDEOGRAPH - 0xD1A0: 0x8937, //CJK UNIFIED IDEOGRAPH - 0xD1A1: 0x9009, //CJK UNIFIED IDEOGRAPH - 0xD1A2: 0x7663, //CJK UNIFIED IDEOGRAPH - 0xD1A3: 0x7729, //CJK UNIFIED IDEOGRAPH - 0xD1A4: 0x7EDA, //CJK UNIFIED IDEOGRAPH - 0xD1A5: 0x9774, //CJK UNIFIED IDEOGRAPH - 0xD1A6: 0x859B, //CJK UNIFIED IDEOGRAPH - 0xD1A7: 0x5B66, //CJK UNIFIED IDEOGRAPH - 0xD1A8: 0x7A74, //CJK UNIFIED IDEOGRAPH - 0xD1A9: 0x96EA, //CJK UNIFIED IDEOGRAPH - 0xD1AA: 0x8840, //CJK UNIFIED IDEOGRAPH - 0xD1AB: 0x52CB, //CJK UNIFIED IDEOGRAPH - 0xD1AC: 0x718F, //CJK UNIFIED IDEOGRAPH - 0xD1AD: 0x5FAA, //CJK UNIFIED IDEOGRAPH - 0xD1AE: 0x65EC, //CJK UNIFIED IDEOGRAPH - 0xD1AF: 0x8BE2, //CJK UNIFIED IDEOGRAPH - 0xD1B0: 0x5BFB, //CJK UNIFIED IDEOGRAPH - 0xD1B1: 0x9A6F, //CJK UNIFIED IDEOGRAPH - 0xD1B2: 0x5DE1, //CJK UNIFIED IDEOGRAPH - 0xD1B3: 0x6B89, //CJK UNIFIED IDEOGRAPH - 0xD1B4: 0x6C5B, //CJK UNIFIED IDEOGRAPH - 0xD1B5: 0x8BAD, //CJK UNIFIED IDEOGRAPH - 0xD1B6: 0x8BAF, //CJK UNIFIED IDEOGRAPH - 0xD1B7: 0x900A, //CJK UNIFIED IDEOGRAPH - 0xD1B8: 0x8FC5, //CJK UNIFIED IDEOGRAPH - 0xD1B9: 0x538B, //CJK UNIFIED IDEOGRAPH - 0xD1BA: 0x62BC, //CJK UNIFIED IDEOGRAPH - 0xD1BB: 0x9E26, //CJK UNIFIED IDEOGRAPH - 0xD1BC: 0x9E2D, //CJK UNIFIED IDEOGRAPH - 0xD1BD: 0x5440, //CJK UNIFIED IDEOGRAPH - 0xD1BE: 0x4E2B, //CJK UNIFIED IDEOGRAPH - 0xD1BF: 0x82BD, //CJK UNIFIED IDEOGRAPH - 0xD1C0: 0x7259, //CJK UNIFIED IDEOGRAPH - 0xD1C1: 0x869C, //CJK UNIFIED IDEOGRAPH - 0xD1C2: 0x5D16, //CJK UNIFIED IDEOGRAPH - 0xD1C3: 0x8859, //CJK UNIFIED IDEOGRAPH - 0xD1C4: 0x6DAF, //CJK UNIFIED IDEOGRAPH - 0xD1C5: 0x96C5, //CJK UNIFIED IDEOGRAPH - 0xD1C6: 0x54D1, //CJK UNIFIED IDEOGRAPH - 0xD1C7: 0x4E9A, //CJK UNIFIED IDEOGRAPH - 0xD1C8: 0x8BB6, //CJK UNIFIED IDEOGRAPH - 0xD1C9: 0x7109, //CJK UNIFIED IDEOGRAPH - 0xD1CA: 0x54BD, //CJK UNIFIED IDEOGRAPH - 0xD1CB: 0x9609, //CJK UNIFIED IDEOGRAPH - 0xD1CC: 0x70DF, //CJK UNIFIED IDEOGRAPH - 0xD1CD: 0x6DF9, //CJK UNIFIED IDEOGRAPH - 0xD1CE: 0x76D0, //CJK UNIFIED IDEOGRAPH - 0xD1CF: 0x4E25, //CJK UNIFIED IDEOGRAPH - 0xD1D0: 0x7814, //CJK UNIFIED IDEOGRAPH - 0xD1D1: 0x8712, //CJK UNIFIED IDEOGRAPH - 0xD1D2: 0x5CA9, //CJK UNIFIED IDEOGRAPH - 0xD1D3: 0x5EF6, //CJK UNIFIED IDEOGRAPH - 0xD1D4: 0x8A00, //CJK UNIFIED IDEOGRAPH - 0xD1D5: 0x989C, //CJK UNIFIED IDEOGRAPH - 0xD1D6: 0x960E, //CJK UNIFIED IDEOGRAPH - 0xD1D7: 0x708E, //CJK UNIFIED IDEOGRAPH - 0xD1D8: 0x6CBF, //CJK UNIFIED IDEOGRAPH - 0xD1D9: 0x5944, //CJK UNIFIED IDEOGRAPH - 0xD1DA: 0x63A9, //CJK UNIFIED IDEOGRAPH - 0xD1DB: 0x773C, //CJK UNIFIED IDEOGRAPH - 0xD1DC: 0x884D, //CJK UNIFIED IDEOGRAPH - 0xD1DD: 0x6F14, //CJK UNIFIED IDEOGRAPH - 0xD1DE: 0x8273, //CJK UNIFIED IDEOGRAPH - 0xD1DF: 0x5830, //CJK UNIFIED IDEOGRAPH - 0xD1E0: 0x71D5, //CJK UNIFIED IDEOGRAPH - 0xD1E1: 0x538C, //CJK UNIFIED IDEOGRAPH - 0xD1E2: 0x781A, //CJK UNIFIED IDEOGRAPH - 0xD1E3: 0x96C1, //CJK UNIFIED IDEOGRAPH - 0xD1E4: 0x5501, //CJK UNIFIED IDEOGRAPH - 0xD1E5: 0x5F66, //CJK UNIFIED IDEOGRAPH - 0xD1E6: 0x7130, //CJK UNIFIED IDEOGRAPH - 0xD1E7: 0x5BB4, //CJK UNIFIED IDEOGRAPH - 0xD1E8: 0x8C1A, //CJK UNIFIED IDEOGRAPH - 0xD1E9: 0x9A8C, //CJK UNIFIED IDEOGRAPH - 0xD1EA: 0x6B83, //CJK UNIFIED IDEOGRAPH - 0xD1EB: 0x592E, //CJK UNIFIED IDEOGRAPH - 0xD1EC: 0x9E2F, //CJK UNIFIED IDEOGRAPH - 0xD1ED: 0x79E7, //CJK UNIFIED IDEOGRAPH - 0xD1EE: 0x6768, //CJK UNIFIED IDEOGRAPH - 0xD1EF: 0x626C, //CJK UNIFIED IDEOGRAPH - 0xD1F0: 0x4F6F, //CJK UNIFIED IDEOGRAPH - 0xD1F1: 0x75A1, //CJK UNIFIED IDEOGRAPH - 0xD1F2: 0x7F8A, //CJK UNIFIED IDEOGRAPH - 0xD1F3: 0x6D0B, //CJK UNIFIED IDEOGRAPH - 0xD1F4: 0x9633, //CJK UNIFIED IDEOGRAPH - 0xD1F5: 0x6C27, //CJK UNIFIED IDEOGRAPH - 0xD1F6: 0x4EF0, //CJK UNIFIED IDEOGRAPH - 0xD1F7: 0x75D2, //CJK UNIFIED IDEOGRAPH - 0xD1F8: 0x517B, //CJK UNIFIED IDEOGRAPH - 0xD1F9: 0x6837, //CJK UNIFIED IDEOGRAPH - 0xD1FA: 0x6F3E, //CJK UNIFIED IDEOGRAPH - 0xD1FB: 0x9080, //CJK UNIFIED IDEOGRAPH - 0xD1FC: 0x8170, //CJK UNIFIED IDEOGRAPH - 0xD1FD: 0x5996, //CJK UNIFIED IDEOGRAPH - 0xD1FE: 0x7476, //CJK UNIFIED IDEOGRAPH - 0xD240: 0x8938, //CJK UNIFIED IDEOGRAPH - 0xD241: 0x8939, //CJK UNIFIED IDEOGRAPH - 0xD242: 0x893A, //CJK UNIFIED IDEOGRAPH - 0xD243: 0x893B, //CJK UNIFIED IDEOGRAPH - 0xD244: 0x893C, //CJK UNIFIED IDEOGRAPH - 0xD245: 0x893D, //CJK UNIFIED IDEOGRAPH - 0xD246: 0x893E, //CJK UNIFIED IDEOGRAPH - 0xD247: 0x893F, //CJK UNIFIED IDEOGRAPH - 0xD248: 0x8940, //CJK UNIFIED IDEOGRAPH - 0xD249: 0x8942, //CJK UNIFIED IDEOGRAPH - 0xD24A: 0x8943, //CJK UNIFIED IDEOGRAPH - 0xD24B: 0x8945, //CJK UNIFIED IDEOGRAPH - 0xD24C: 0x8946, //CJK UNIFIED IDEOGRAPH - 0xD24D: 0x8947, //CJK UNIFIED IDEOGRAPH - 0xD24E: 0x8948, //CJK UNIFIED IDEOGRAPH - 0xD24F: 0x8949, //CJK UNIFIED IDEOGRAPH - 0xD250: 0x894A, //CJK UNIFIED IDEOGRAPH - 0xD251: 0x894B, //CJK UNIFIED IDEOGRAPH - 0xD252: 0x894C, //CJK UNIFIED IDEOGRAPH - 0xD253: 0x894D, //CJK UNIFIED IDEOGRAPH - 0xD254: 0x894E, //CJK UNIFIED IDEOGRAPH - 0xD255: 0x894F, //CJK UNIFIED IDEOGRAPH - 0xD256: 0x8950, //CJK UNIFIED IDEOGRAPH - 0xD257: 0x8951, //CJK UNIFIED IDEOGRAPH - 0xD258: 0x8952, //CJK UNIFIED IDEOGRAPH - 0xD259: 0x8953, //CJK UNIFIED IDEOGRAPH - 0xD25A: 0x8954, //CJK UNIFIED IDEOGRAPH - 0xD25B: 0x8955, //CJK UNIFIED IDEOGRAPH - 0xD25C: 0x8956, //CJK UNIFIED IDEOGRAPH - 0xD25D: 0x8957, //CJK UNIFIED IDEOGRAPH - 0xD25E: 0x8958, //CJK UNIFIED IDEOGRAPH - 0xD25F: 0x8959, //CJK UNIFIED IDEOGRAPH - 0xD260: 0x895A, //CJK UNIFIED IDEOGRAPH - 0xD261: 0x895B, //CJK UNIFIED IDEOGRAPH - 0xD262: 0x895C, //CJK UNIFIED IDEOGRAPH - 0xD263: 0x895D, //CJK UNIFIED IDEOGRAPH - 0xD264: 0x8960, //CJK UNIFIED IDEOGRAPH - 0xD265: 0x8961, //CJK UNIFIED IDEOGRAPH - 0xD266: 0x8962, //CJK UNIFIED IDEOGRAPH - 0xD267: 0x8963, //CJK UNIFIED IDEOGRAPH - 0xD268: 0x8964, //CJK UNIFIED IDEOGRAPH - 0xD269: 0x8965, //CJK UNIFIED IDEOGRAPH - 0xD26A: 0x8967, //CJK UNIFIED IDEOGRAPH - 0xD26B: 0x8968, //CJK UNIFIED IDEOGRAPH - 0xD26C: 0x8969, //CJK UNIFIED IDEOGRAPH - 0xD26D: 0x896A, //CJK UNIFIED IDEOGRAPH - 0xD26E: 0x896B, //CJK UNIFIED IDEOGRAPH - 0xD26F: 0x896C, //CJK UNIFIED IDEOGRAPH - 0xD270: 0x896D, //CJK UNIFIED IDEOGRAPH - 0xD271: 0x896E, //CJK UNIFIED IDEOGRAPH - 0xD272: 0x896F, //CJK UNIFIED IDEOGRAPH - 0xD273: 0x8970, //CJK UNIFIED IDEOGRAPH - 0xD274: 0x8971, //CJK UNIFIED IDEOGRAPH - 0xD275: 0x8972, //CJK UNIFIED IDEOGRAPH - 0xD276: 0x8973, //CJK UNIFIED IDEOGRAPH - 0xD277: 0x8974, //CJK UNIFIED IDEOGRAPH - 0xD278: 0x8975, //CJK UNIFIED IDEOGRAPH - 0xD279: 0x8976, //CJK UNIFIED IDEOGRAPH - 0xD27A: 0x8977, //CJK UNIFIED IDEOGRAPH - 0xD27B: 0x8978, //CJK UNIFIED IDEOGRAPH - 0xD27C: 0x8979, //CJK UNIFIED IDEOGRAPH - 0xD27D: 0x897A, //CJK UNIFIED IDEOGRAPH - 0xD27E: 0x897C, //CJK UNIFIED IDEOGRAPH - 0xD280: 0x897D, //CJK UNIFIED IDEOGRAPH - 0xD281: 0x897E, //CJK UNIFIED IDEOGRAPH - 0xD282: 0x8980, //CJK UNIFIED IDEOGRAPH - 0xD283: 0x8982, //CJK UNIFIED IDEOGRAPH - 0xD284: 0x8984, //CJK UNIFIED IDEOGRAPH - 0xD285: 0x8985, //CJK UNIFIED IDEOGRAPH - 0xD286: 0x8987, //CJK UNIFIED IDEOGRAPH - 0xD287: 0x8988, //CJK UNIFIED IDEOGRAPH - 0xD288: 0x8989, //CJK UNIFIED IDEOGRAPH - 0xD289: 0x898A, //CJK UNIFIED IDEOGRAPH - 0xD28A: 0x898B, //CJK UNIFIED IDEOGRAPH - 0xD28B: 0x898C, //CJK UNIFIED IDEOGRAPH - 0xD28C: 0x898D, //CJK UNIFIED IDEOGRAPH - 0xD28D: 0x898E, //CJK UNIFIED IDEOGRAPH - 0xD28E: 0x898F, //CJK UNIFIED IDEOGRAPH - 0xD28F: 0x8990, //CJK UNIFIED IDEOGRAPH - 0xD290: 0x8991, //CJK UNIFIED IDEOGRAPH - 0xD291: 0x8992, //CJK UNIFIED IDEOGRAPH - 0xD292: 0x8993, //CJK UNIFIED IDEOGRAPH - 0xD293: 0x8994, //CJK UNIFIED IDEOGRAPH - 0xD294: 0x8995, //CJK UNIFIED IDEOGRAPH - 0xD295: 0x8996, //CJK UNIFIED IDEOGRAPH - 0xD296: 0x8997, //CJK UNIFIED IDEOGRAPH - 0xD297: 0x8998, //CJK UNIFIED IDEOGRAPH - 0xD298: 0x8999, //CJK UNIFIED IDEOGRAPH - 0xD299: 0x899A, //CJK UNIFIED IDEOGRAPH - 0xD29A: 0x899B, //CJK UNIFIED IDEOGRAPH - 0xD29B: 0x899C, //CJK UNIFIED IDEOGRAPH - 0xD29C: 0x899D, //CJK UNIFIED IDEOGRAPH - 0xD29D: 0x899E, //CJK UNIFIED IDEOGRAPH - 0xD29E: 0x899F, //CJK UNIFIED IDEOGRAPH - 0xD29F: 0x89A0, //CJK UNIFIED IDEOGRAPH - 0xD2A0: 0x89A1, //CJK UNIFIED IDEOGRAPH - 0xD2A1: 0x6447, //CJK UNIFIED IDEOGRAPH - 0xD2A2: 0x5C27, //CJK UNIFIED IDEOGRAPH - 0xD2A3: 0x9065, //CJK UNIFIED IDEOGRAPH - 0xD2A4: 0x7A91, //CJK UNIFIED IDEOGRAPH - 0xD2A5: 0x8C23, //CJK UNIFIED IDEOGRAPH - 0xD2A6: 0x59DA, //CJK UNIFIED IDEOGRAPH - 0xD2A7: 0x54AC, //CJK UNIFIED IDEOGRAPH - 0xD2A8: 0x8200, //CJK UNIFIED IDEOGRAPH - 0xD2A9: 0x836F, //CJK UNIFIED IDEOGRAPH - 0xD2AA: 0x8981, //CJK UNIFIED IDEOGRAPH - 0xD2AB: 0x8000, //CJK UNIFIED IDEOGRAPH - 0xD2AC: 0x6930, //CJK UNIFIED IDEOGRAPH - 0xD2AD: 0x564E, //CJK UNIFIED IDEOGRAPH - 0xD2AE: 0x8036, //CJK UNIFIED IDEOGRAPH - 0xD2AF: 0x7237, //CJK UNIFIED IDEOGRAPH - 0xD2B0: 0x91CE, //CJK UNIFIED IDEOGRAPH - 0xD2B1: 0x51B6, //CJK UNIFIED IDEOGRAPH - 0xD2B2: 0x4E5F, //CJK UNIFIED IDEOGRAPH - 0xD2B3: 0x9875, //CJK UNIFIED IDEOGRAPH - 0xD2B4: 0x6396, //CJK UNIFIED IDEOGRAPH - 0xD2B5: 0x4E1A, //CJK UNIFIED IDEOGRAPH - 0xD2B6: 0x53F6, //CJK UNIFIED IDEOGRAPH - 0xD2B7: 0x66F3, //CJK UNIFIED IDEOGRAPH - 0xD2B8: 0x814B, //CJK UNIFIED IDEOGRAPH - 0xD2B9: 0x591C, //CJK UNIFIED IDEOGRAPH - 0xD2BA: 0x6DB2, //CJK UNIFIED IDEOGRAPH - 0xD2BB: 0x4E00, //CJK UNIFIED IDEOGRAPH - 0xD2BC: 0x58F9, //CJK UNIFIED IDEOGRAPH - 0xD2BD: 0x533B, //CJK UNIFIED IDEOGRAPH - 0xD2BE: 0x63D6, //CJK UNIFIED IDEOGRAPH - 0xD2BF: 0x94F1, //CJK UNIFIED IDEOGRAPH - 0xD2C0: 0x4F9D, //CJK UNIFIED IDEOGRAPH - 0xD2C1: 0x4F0A, //CJK UNIFIED IDEOGRAPH - 0xD2C2: 0x8863, //CJK UNIFIED IDEOGRAPH - 0xD2C3: 0x9890, //CJK UNIFIED IDEOGRAPH - 0xD2C4: 0x5937, //CJK UNIFIED IDEOGRAPH - 0xD2C5: 0x9057, //CJK UNIFIED IDEOGRAPH - 0xD2C6: 0x79FB, //CJK UNIFIED IDEOGRAPH - 0xD2C7: 0x4EEA, //CJK UNIFIED IDEOGRAPH - 0xD2C8: 0x80F0, //CJK UNIFIED IDEOGRAPH - 0xD2C9: 0x7591, //CJK UNIFIED IDEOGRAPH - 0xD2CA: 0x6C82, //CJK UNIFIED IDEOGRAPH - 0xD2CB: 0x5B9C, //CJK UNIFIED IDEOGRAPH - 0xD2CC: 0x59E8, //CJK UNIFIED IDEOGRAPH - 0xD2CD: 0x5F5D, //CJK UNIFIED IDEOGRAPH - 0xD2CE: 0x6905, //CJK UNIFIED IDEOGRAPH - 0xD2CF: 0x8681, //CJK UNIFIED IDEOGRAPH - 0xD2D0: 0x501A, //CJK UNIFIED IDEOGRAPH - 0xD2D1: 0x5DF2, //CJK UNIFIED IDEOGRAPH - 0xD2D2: 0x4E59, //CJK UNIFIED IDEOGRAPH - 0xD2D3: 0x77E3, //CJK UNIFIED IDEOGRAPH - 0xD2D4: 0x4EE5, //CJK UNIFIED IDEOGRAPH - 0xD2D5: 0x827A, //CJK UNIFIED IDEOGRAPH - 0xD2D6: 0x6291, //CJK UNIFIED IDEOGRAPH - 0xD2D7: 0x6613, //CJK UNIFIED IDEOGRAPH - 0xD2D8: 0x9091, //CJK UNIFIED IDEOGRAPH - 0xD2D9: 0x5C79, //CJK UNIFIED IDEOGRAPH - 0xD2DA: 0x4EBF, //CJK UNIFIED IDEOGRAPH - 0xD2DB: 0x5F79, //CJK UNIFIED IDEOGRAPH - 0xD2DC: 0x81C6, //CJK UNIFIED IDEOGRAPH - 0xD2DD: 0x9038, //CJK UNIFIED IDEOGRAPH - 0xD2DE: 0x8084, //CJK UNIFIED IDEOGRAPH - 0xD2DF: 0x75AB, //CJK UNIFIED IDEOGRAPH - 0xD2E0: 0x4EA6, //CJK UNIFIED IDEOGRAPH - 0xD2E1: 0x88D4, //CJK UNIFIED IDEOGRAPH - 0xD2E2: 0x610F, //CJK UNIFIED IDEOGRAPH - 0xD2E3: 0x6BC5, //CJK UNIFIED IDEOGRAPH - 0xD2E4: 0x5FC6, //CJK UNIFIED IDEOGRAPH - 0xD2E5: 0x4E49, //CJK UNIFIED IDEOGRAPH - 0xD2E6: 0x76CA, //CJK UNIFIED IDEOGRAPH - 0xD2E7: 0x6EA2, //CJK UNIFIED IDEOGRAPH - 0xD2E8: 0x8BE3, //CJK UNIFIED IDEOGRAPH - 0xD2E9: 0x8BAE, //CJK UNIFIED IDEOGRAPH - 0xD2EA: 0x8C0A, //CJK UNIFIED IDEOGRAPH - 0xD2EB: 0x8BD1, //CJK UNIFIED IDEOGRAPH - 0xD2EC: 0x5F02, //CJK UNIFIED IDEOGRAPH - 0xD2ED: 0x7FFC, //CJK UNIFIED IDEOGRAPH - 0xD2EE: 0x7FCC, //CJK UNIFIED IDEOGRAPH - 0xD2EF: 0x7ECE, //CJK UNIFIED IDEOGRAPH - 0xD2F0: 0x8335, //CJK UNIFIED IDEOGRAPH - 0xD2F1: 0x836B, //CJK UNIFIED IDEOGRAPH - 0xD2F2: 0x56E0, //CJK UNIFIED IDEOGRAPH - 0xD2F3: 0x6BB7, //CJK UNIFIED IDEOGRAPH - 0xD2F4: 0x97F3, //CJK UNIFIED IDEOGRAPH - 0xD2F5: 0x9634, //CJK UNIFIED IDEOGRAPH - 0xD2F6: 0x59FB, //CJK UNIFIED IDEOGRAPH - 0xD2F7: 0x541F, //CJK UNIFIED IDEOGRAPH - 0xD2F8: 0x94F6, //CJK UNIFIED IDEOGRAPH - 0xD2F9: 0x6DEB, //CJK UNIFIED IDEOGRAPH - 0xD2FA: 0x5BC5, //CJK UNIFIED IDEOGRAPH - 0xD2FB: 0x996E, //CJK UNIFIED IDEOGRAPH - 0xD2FC: 0x5C39, //CJK UNIFIED IDEOGRAPH - 0xD2FD: 0x5F15, //CJK UNIFIED IDEOGRAPH - 0xD2FE: 0x9690, //CJK UNIFIED IDEOGRAPH - 0xD340: 0x89A2, //CJK UNIFIED IDEOGRAPH - 0xD341: 0x89A3, //CJK UNIFIED IDEOGRAPH - 0xD342: 0x89A4, //CJK UNIFIED IDEOGRAPH - 0xD343: 0x89A5, //CJK UNIFIED IDEOGRAPH - 0xD344: 0x89A6, //CJK UNIFIED IDEOGRAPH - 0xD345: 0x89A7, //CJK UNIFIED IDEOGRAPH - 0xD346: 0x89A8, //CJK UNIFIED IDEOGRAPH - 0xD347: 0x89A9, //CJK UNIFIED IDEOGRAPH - 0xD348: 0x89AA, //CJK UNIFIED IDEOGRAPH - 0xD349: 0x89AB, //CJK UNIFIED IDEOGRAPH - 0xD34A: 0x89AC, //CJK UNIFIED IDEOGRAPH - 0xD34B: 0x89AD, //CJK UNIFIED IDEOGRAPH - 0xD34C: 0x89AE, //CJK UNIFIED IDEOGRAPH - 0xD34D: 0x89AF, //CJK UNIFIED IDEOGRAPH - 0xD34E: 0x89B0, //CJK UNIFIED IDEOGRAPH - 0xD34F: 0x89B1, //CJK UNIFIED IDEOGRAPH - 0xD350: 0x89B2, //CJK UNIFIED IDEOGRAPH - 0xD351: 0x89B3, //CJK UNIFIED IDEOGRAPH - 0xD352: 0x89B4, //CJK UNIFIED IDEOGRAPH - 0xD353: 0x89B5, //CJK UNIFIED IDEOGRAPH - 0xD354: 0x89B6, //CJK UNIFIED IDEOGRAPH - 0xD355: 0x89B7, //CJK UNIFIED IDEOGRAPH - 0xD356: 0x89B8, //CJK UNIFIED IDEOGRAPH - 0xD357: 0x89B9, //CJK UNIFIED IDEOGRAPH - 0xD358: 0x89BA, //CJK UNIFIED IDEOGRAPH - 0xD359: 0x89BB, //CJK UNIFIED IDEOGRAPH - 0xD35A: 0x89BC, //CJK UNIFIED IDEOGRAPH - 0xD35B: 0x89BD, //CJK UNIFIED IDEOGRAPH - 0xD35C: 0x89BE, //CJK UNIFIED IDEOGRAPH - 0xD35D: 0x89BF, //CJK UNIFIED IDEOGRAPH - 0xD35E: 0x89C0, //CJK UNIFIED IDEOGRAPH - 0xD35F: 0x89C3, //CJK UNIFIED IDEOGRAPH - 0xD360: 0x89CD, //CJK UNIFIED IDEOGRAPH - 0xD361: 0x89D3, //CJK UNIFIED IDEOGRAPH - 0xD362: 0x89D4, //CJK UNIFIED IDEOGRAPH - 0xD363: 0x89D5, //CJK UNIFIED IDEOGRAPH - 0xD364: 0x89D7, //CJK UNIFIED IDEOGRAPH - 0xD365: 0x89D8, //CJK UNIFIED IDEOGRAPH - 0xD366: 0x89D9, //CJK UNIFIED IDEOGRAPH - 0xD367: 0x89DB, //CJK UNIFIED IDEOGRAPH - 0xD368: 0x89DD, //CJK UNIFIED IDEOGRAPH - 0xD369: 0x89DF, //CJK UNIFIED IDEOGRAPH - 0xD36A: 0x89E0, //CJK UNIFIED IDEOGRAPH - 0xD36B: 0x89E1, //CJK UNIFIED IDEOGRAPH - 0xD36C: 0x89E2, //CJK UNIFIED IDEOGRAPH - 0xD36D: 0x89E4, //CJK UNIFIED IDEOGRAPH - 0xD36E: 0x89E7, //CJK UNIFIED IDEOGRAPH - 0xD36F: 0x89E8, //CJK UNIFIED IDEOGRAPH - 0xD370: 0x89E9, //CJK UNIFIED IDEOGRAPH - 0xD371: 0x89EA, //CJK UNIFIED IDEOGRAPH - 0xD372: 0x89EC, //CJK UNIFIED IDEOGRAPH - 0xD373: 0x89ED, //CJK UNIFIED IDEOGRAPH - 0xD374: 0x89EE, //CJK UNIFIED IDEOGRAPH - 0xD375: 0x89F0, //CJK UNIFIED IDEOGRAPH - 0xD376: 0x89F1, //CJK UNIFIED IDEOGRAPH - 0xD377: 0x89F2, //CJK UNIFIED IDEOGRAPH - 0xD378: 0x89F4, //CJK UNIFIED IDEOGRAPH - 0xD379: 0x89F5, //CJK UNIFIED IDEOGRAPH - 0xD37A: 0x89F6, //CJK UNIFIED IDEOGRAPH - 0xD37B: 0x89F7, //CJK UNIFIED IDEOGRAPH - 0xD37C: 0x89F8, //CJK UNIFIED IDEOGRAPH - 0xD37D: 0x89F9, //CJK UNIFIED IDEOGRAPH - 0xD37E: 0x89FA, //CJK UNIFIED IDEOGRAPH - 0xD380: 0x89FB, //CJK UNIFIED IDEOGRAPH - 0xD381: 0x89FC, //CJK UNIFIED IDEOGRAPH - 0xD382: 0x89FD, //CJK UNIFIED IDEOGRAPH - 0xD383: 0x89FE, //CJK UNIFIED IDEOGRAPH - 0xD384: 0x89FF, //CJK UNIFIED IDEOGRAPH - 0xD385: 0x8A01, //CJK UNIFIED IDEOGRAPH - 0xD386: 0x8A02, //CJK UNIFIED IDEOGRAPH - 0xD387: 0x8A03, //CJK UNIFIED IDEOGRAPH - 0xD388: 0x8A04, //CJK UNIFIED IDEOGRAPH - 0xD389: 0x8A05, //CJK UNIFIED IDEOGRAPH - 0xD38A: 0x8A06, //CJK UNIFIED IDEOGRAPH - 0xD38B: 0x8A08, //CJK UNIFIED IDEOGRAPH - 0xD38C: 0x8A09, //CJK UNIFIED IDEOGRAPH - 0xD38D: 0x8A0A, //CJK UNIFIED IDEOGRAPH - 0xD38E: 0x8A0B, //CJK UNIFIED IDEOGRAPH - 0xD38F: 0x8A0C, //CJK UNIFIED IDEOGRAPH - 0xD390: 0x8A0D, //CJK UNIFIED IDEOGRAPH - 0xD391: 0x8A0E, //CJK UNIFIED IDEOGRAPH - 0xD392: 0x8A0F, //CJK UNIFIED IDEOGRAPH - 0xD393: 0x8A10, //CJK UNIFIED IDEOGRAPH - 0xD394: 0x8A11, //CJK UNIFIED IDEOGRAPH - 0xD395: 0x8A12, //CJK UNIFIED IDEOGRAPH - 0xD396: 0x8A13, //CJK UNIFIED IDEOGRAPH - 0xD397: 0x8A14, //CJK UNIFIED IDEOGRAPH - 0xD398: 0x8A15, //CJK UNIFIED IDEOGRAPH - 0xD399: 0x8A16, //CJK UNIFIED IDEOGRAPH - 0xD39A: 0x8A17, //CJK UNIFIED IDEOGRAPH - 0xD39B: 0x8A18, //CJK UNIFIED IDEOGRAPH - 0xD39C: 0x8A19, //CJK UNIFIED IDEOGRAPH - 0xD39D: 0x8A1A, //CJK UNIFIED IDEOGRAPH - 0xD39E: 0x8A1B, //CJK UNIFIED IDEOGRAPH - 0xD39F: 0x8A1C, //CJK UNIFIED IDEOGRAPH - 0xD3A0: 0x8A1D, //CJK UNIFIED IDEOGRAPH - 0xD3A1: 0x5370, //CJK UNIFIED IDEOGRAPH - 0xD3A2: 0x82F1, //CJK UNIFIED IDEOGRAPH - 0xD3A3: 0x6A31, //CJK UNIFIED IDEOGRAPH - 0xD3A4: 0x5A74, //CJK UNIFIED IDEOGRAPH - 0xD3A5: 0x9E70, //CJK UNIFIED IDEOGRAPH - 0xD3A6: 0x5E94, //CJK UNIFIED IDEOGRAPH - 0xD3A7: 0x7F28, //CJK UNIFIED IDEOGRAPH - 0xD3A8: 0x83B9, //CJK UNIFIED IDEOGRAPH - 0xD3A9: 0x8424, //CJK UNIFIED IDEOGRAPH - 0xD3AA: 0x8425, //CJK UNIFIED IDEOGRAPH - 0xD3AB: 0x8367, //CJK UNIFIED IDEOGRAPH - 0xD3AC: 0x8747, //CJK UNIFIED IDEOGRAPH - 0xD3AD: 0x8FCE, //CJK UNIFIED IDEOGRAPH - 0xD3AE: 0x8D62, //CJK UNIFIED IDEOGRAPH - 0xD3AF: 0x76C8, //CJK UNIFIED IDEOGRAPH - 0xD3B0: 0x5F71, //CJK UNIFIED IDEOGRAPH - 0xD3B1: 0x9896, //CJK UNIFIED IDEOGRAPH - 0xD3B2: 0x786C, //CJK UNIFIED IDEOGRAPH - 0xD3B3: 0x6620, //CJK UNIFIED IDEOGRAPH - 0xD3B4: 0x54DF, //CJK UNIFIED IDEOGRAPH - 0xD3B5: 0x62E5, //CJK UNIFIED IDEOGRAPH - 0xD3B6: 0x4F63, //CJK UNIFIED IDEOGRAPH - 0xD3B7: 0x81C3, //CJK UNIFIED IDEOGRAPH - 0xD3B8: 0x75C8, //CJK UNIFIED IDEOGRAPH - 0xD3B9: 0x5EB8, //CJK UNIFIED IDEOGRAPH - 0xD3BA: 0x96CD, //CJK UNIFIED IDEOGRAPH - 0xD3BB: 0x8E0A, //CJK UNIFIED IDEOGRAPH - 0xD3BC: 0x86F9, //CJK UNIFIED IDEOGRAPH - 0xD3BD: 0x548F, //CJK UNIFIED IDEOGRAPH - 0xD3BE: 0x6CF3, //CJK UNIFIED IDEOGRAPH - 0xD3BF: 0x6D8C, //CJK UNIFIED IDEOGRAPH - 0xD3C0: 0x6C38, //CJK UNIFIED IDEOGRAPH - 0xD3C1: 0x607F, //CJK UNIFIED IDEOGRAPH - 0xD3C2: 0x52C7, //CJK UNIFIED IDEOGRAPH - 0xD3C3: 0x7528, //CJK UNIFIED IDEOGRAPH - 0xD3C4: 0x5E7D, //CJK UNIFIED IDEOGRAPH - 0xD3C5: 0x4F18, //CJK UNIFIED IDEOGRAPH - 0xD3C6: 0x60A0, //CJK UNIFIED IDEOGRAPH - 0xD3C7: 0x5FE7, //CJK UNIFIED IDEOGRAPH - 0xD3C8: 0x5C24, //CJK UNIFIED IDEOGRAPH - 0xD3C9: 0x7531, //CJK UNIFIED IDEOGRAPH - 0xD3CA: 0x90AE, //CJK UNIFIED IDEOGRAPH - 0xD3CB: 0x94C0, //CJK UNIFIED IDEOGRAPH - 0xD3CC: 0x72B9, //CJK UNIFIED IDEOGRAPH - 0xD3CD: 0x6CB9, //CJK UNIFIED IDEOGRAPH - 0xD3CE: 0x6E38, //CJK UNIFIED IDEOGRAPH - 0xD3CF: 0x9149, //CJK UNIFIED IDEOGRAPH - 0xD3D0: 0x6709, //CJK UNIFIED IDEOGRAPH - 0xD3D1: 0x53CB, //CJK UNIFIED IDEOGRAPH - 0xD3D2: 0x53F3, //CJK UNIFIED IDEOGRAPH - 0xD3D3: 0x4F51, //CJK UNIFIED IDEOGRAPH - 0xD3D4: 0x91C9, //CJK UNIFIED IDEOGRAPH - 0xD3D5: 0x8BF1, //CJK UNIFIED IDEOGRAPH - 0xD3D6: 0x53C8, //CJK UNIFIED IDEOGRAPH - 0xD3D7: 0x5E7C, //CJK UNIFIED IDEOGRAPH - 0xD3D8: 0x8FC2, //CJK UNIFIED IDEOGRAPH - 0xD3D9: 0x6DE4, //CJK UNIFIED IDEOGRAPH - 0xD3DA: 0x4E8E, //CJK UNIFIED IDEOGRAPH - 0xD3DB: 0x76C2, //CJK UNIFIED IDEOGRAPH - 0xD3DC: 0x6986, //CJK UNIFIED IDEOGRAPH - 0xD3DD: 0x865E, //CJK UNIFIED IDEOGRAPH - 0xD3DE: 0x611A, //CJK UNIFIED IDEOGRAPH - 0xD3DF: 0x8206, //CJK UNIFIED IDEOGRAPH - 0xD3E0: 0x4F59, //CJK UNIFIED IDEOGRAPH - 0xD3E1: 0x4FDE, //CJK UNIFIED IDEOGRAPH - 0xD3E2: 0x903E, //CJK UNIFIED IDEOGRAPH - 0xD3E3: 0x9C7C, //CJK UNIFIED IDEOGRAPH - 0xD3E4: 0x6109, //CJK UNIFIED IDEOGRAPH - 0xD3E5: 0x6E1D, //CJK UNIFIED IDEOGRAPH - 0xD3E6: 0x6E14, //CJK UNIFIED IDEOGRAPH - 0xD3E7: 0x9685, //CJK UNIFIED IDEOGRAPH - 0xD3E8: 0x4E88, //CJK UNIFIED IDEOGRAPH - 0xD3E9: 0x5A31, //CJK UNIFIED IDEOGRAPH - 0xD3EA: 0x96E8, //CJK UNIFIED IDEOGRAPH - 0xD3EB: 0x4E0E, //CJK UNIFIED IDEOGRAPH - 0xD3EC: 0x5C7F, //CJK UNIFIED IDEOGRAPH - 0xD3ED: 0x79B9, //CJK UNIFIED IDEOGRAPH - 0xD3EE: 0x5B87, //CJK UNIFIED IDEOGRAPH - 0xD3EF: 0x8BED, //CJK UNIFIED IDEOGRAPH - 0xD3F0: 0x7FBD, //CJK UNIFIED IDEOGRAPH - 0xD3F1: 0x7389, //CJK UNIFIED IDEOGRAPH - 0xD3F2: 0x57DF, //CJK UNIFIED IDEOGRAPH - 0xD3F3: 0x828B, //CJK UNIFIED IDEOGRAPH - 0xD3F4: 0x90C1, //CJK UNIFIED IDEOGRAPH - 0xD3F5: 0x5401, //CJK UNIFIED IDEOGRAPH - 0xD3F6: 0x9047, //CJK UNIFIED IDEOGRAPH - 0xD3F7: 0x55BB, //CJK UNIFIED IDEOGRAPH - 0xD3F8: 0x5CEA, //CJK UNIFIED IDEOGRAPH - 0xD3F9: 0x5FA1, //CJK UNIFIED IDEOGRAPH - 0xD3FA: 0x6108, //CJK UNIFIED IDEOGRAPH - 0xD3FB: 0x6B32, //CJK UNIFIED IDEOGRAPH - 0xD3FC: 0x72F1, //CJK UNIFIED IDEOGRAPH - 0xD3FD: 0x80B2, //CJK UNIFIED IDEOGRAPH - 0xD3FE: 0x8A89, //CJK UNIFIED IDEOGRAPH - 0xD440: 0x8A1E, //CJK UNIFIED IDEOGRAPH - 0xD441: 0x8A1F, //CJK UNIFIED IDEOGRAPH - 0xD442: 0x8A20, //CJK UNIFIED IDEOGRAPH - 0xD443: 0x8A21, //CJK UNIFIED IDEOGRAPH - 0xD444: 0x8A22, //CJK UNIFIED IDEOGRAPH - 0xD445: 0x8A23, //CJK UNIFIED IDEOGRAPH - 0xD446: 0x8A24, //CJK UNIFIED IDEOGRAPH - 0xD447: 0x8A25, //CJK UNIFIED IDEOGRAPH - 0xD448: 0x8A26, //CJK UNIFIED IDEOGRAPH - 0xD449: 0x8A27, //CJK UNIFIED IDEOGRAPH - 0xD44A: 0x8A28, //CJK UNIFIED IDEOGRAPH - 0xD44B: 0x8A29, //CJK UNIFIED IDEOGRAPH - 0xD44C: 0x8A2A, //CJK UNIFIED IDEOGRAPH - 0xD44D: 0x8A2B, //CJK UNIFIED IDEOGRAPH - 0xD44E: 0x8A2C, //CJK UNIFIED IDEOGRAPH - 0xD44F: 0x8A2D, //CJK UNIFIED IDEOGRAPH - 0xD450: 0x8A2E, //CJK UNIFIED IDEOGRAPH - 0xD451: 0x8A2F, //CJK UNIFIED IDEOGRAPH - 0xD452: 0x8A30, //CJK UNIFIED IDEOGRAPH - 0xD453: 0x8A31, //CJK UNIFIED IDEOGRAPH - 0xD454: 0x8A32, //CJK UNIFIED IDEOGRAPH - 0xD455: 0x8A33, //CJK UNIFIED IDEOGRAPH - 0xD456: 0x8A34, //CJK UNIFIED IDEOGRAPH - 0xD457: 0x8A35, //CJK UNIFIED IDEOGRAPH - 0xD458: 0x8A36, //CJK UNIFIED IDEOGRAPH - 0xD459: 0x8A37, //CJK UNIFIED IDEOGRAPH - 0xD45A: 0x8A38, //CJK UNIFIED IDEOGRAPH - 0xD45B: 0x8A39, //CJK UNIFIED IDEOGRAPH - 0xD45C: 0x8A3A, //CJK UNIFIED IDEOGRAPH - 0xD45D: 0x8A3B, //CJK UNIFIED IDEOGRAPH - 0xD45E: 0x8A3C, //CJK UNIFIED IDEOGRAPH - 0xD45F: 0x8A3D, //CJK UNIFIED IDEOGRAPH - 0xD460: 0x8A3F, //CJK UNIFIED IDEOGRAPH - 0xD461: 0x8A40, //CJK UNIFIED IDEOGRAPH - 0xD462: 0x8A41, //CJK UNIFIED IDEOGRAPH - 0xD463: 0x8A42, //CJK UNIFIED IDEOGRAPH - 0xD464: 0x8A43, //CJK UNIFIED IDEOGRAPH - 0xD465: 0x8A44, //CJK UNIFIED IDEOGRAPH - 0xD466: 0x8A45, //CJK UNIFIED IDEOGRAPH - 0xD467: 0x8A46, //CJK UNIFIED IDEOGRAPH - 0xD468: 0x8A47, //CJK UNIFIED IDEOGRAPH - 0xD469: 0x8A49, //CJK UNIFIED IDEOGRAPH - 0xD46A: 0x8A4A, //CJK UNIFIED IDEOGRAPH - 0xD46B: 0x8A4B, //CJK UNIFIED IDEOGRAPH - 0xD46C: 0x8A4C, //CJK UNIFIED IDEOGRAPH - 0xD46D: 0x8A4D, //CJK UNIFIED IDEOGRAPH - 0xD46E: 0x8A4E, //CJK UNIFIED IDEOGRAPH - 0xD46F: 0x8A4F, //CJK UNIFIED IDEOGRAPH - 0xD470: 0x8A50, //CJK UNIFIED IDEOGRAPH - 0xD471: 0x8A51, //CJK UNIFIED IDEOGRAPH - 0xD472: 0x8A52, //CJK UNIFIED IDEOGRAPH - 0xD473: 0x8A53, //CJK UNIFIED IDEOGRAPH - 0xD474: 0x8A54, //CJK UNIFIED IDEOGRAPH - 0xD475: 0x8A55, //CJK UNIFIED IDEOGRAPH - 0xD476: 0x8A56, //CJK UNIFIED IDEOGRAPH - 0xD477: 0x8A57, //CJK UNIFIED IDEOGRAPH - 0xD478: 0x8A58, //CJK UNIFIED IDEOGRAPH - 0xD479: 0x8A59, //CJK UNIFIED IDEOGRAPH - 0xD47A: 0x8A5A, //CJK UNIFIED IDEOGRAPH - 0xD47B: 0x8A5B, //CJK UNIFIED IDEOGRAPH - 0xD47C: 0x8A5C, //CJK UNIFIED IDEOGRAPH - 0xD47D: 0x8A5D, //CJK UNIFIED IDEOGRAPH - 0xD47E: 0x8A5E, //CJK UNIFIED IDEOGRAPH - 0xD480: 0x8A5F, //CJK UNIFIED IDEOGRAPH - 0xD481: 0x8A60, //CJK UNIFIED IDEOGRAPH - 0xD482: 0x8A61, //CJK UNIFIED IDEOGRAPH - 0xD483: 0x8A62, //CJK UNIFIED IDEOGRAPH - 0xD484: 0x8A63, //CJK UNIFIED IDEOGRAPH - 0xD485: 0x8A64, //CJK UNIFIED IDEOGRAPH - 0xD486: 0x8A65, //CJK UNIFIED IDEOGRAPH - 0xD487: 0x8A66, //CJK UNIFIED IDEOGRAPH - 0xD488: 0x8A67, //CJK UNIFIED IDEOGRAPH - 0xD489: 0x8A68, //CJK UNIFIED IDEOGRAPH - 0xD48A: 0x8A69, //CJK UNIFIED IDEOGRAPH - 0xD48B: 0x8A6A, //CJK UNIFIED IDEOGRAPH - 0xD48C: 0x8A6B, //CJK UNIFIED IDEOGRAPH - 0xD48D: 0x8A6C, //CJK UNIFIED IDEOGRAPH - 0xD48E: 0x8A6D, //CJK UNIFIED IDEOGRAPH - 0xD48F: 0x8A6E, //CJK UNIFIED IDEOGRAPH - 0xD490: 0x8A6F, //CJK UNIFIED IDEOGRAPH - 0xD491: 0x8A70, //CJK UNIFIED IDEOGRAPH - 0xD492: 0x8A71, //CJK UNIFIED IDEOGRAPH - 0xD493: 0x8A72, //CJK UNIFIED IDEOGRAPH - 0xD494: 0x8A73, //CJK UNIFIED IDEOGRAPH - 0xD495: 0x8A74, //CJK UNIFIED IDEOGRAPH - 0xD496: 0x8A75, //CJK UNIFIED IDEOGRAPH - 0xD497: 0x8A76, //CJK UNIFIED IDEOGRAPH - 0xD498: 0x8A77, //CJK UNIFIED IDEOGRAPH - 0xD499: 0x8A78, //CJK UNIFIED IDEOGRAPH - 0xD49A: 0x8A7A, //CJK UNIFIED IDEOGRAPH - 0xD49B: 0x8A7B, //CJK UNIFIED IDEOGRAPH - 0xD49C: 0x8A7C, //CJK UNIFIED IDEOGRAPH - 0xD49D: 0x8A7D, //CJK UNIFIED IDEOGRAPH - 0xD49E: 0x8A7E, //CJK UNIFIED IDEOGRAPH - 0xD49F: 0x8A7F, //CJK UNIFIED IDEOGRAPH - 0xD4A0: 0x8A80, //CJK UNIFIED IDEOGRAPH - 0xD4A1: 0x6D74, //CJK UNIFIED IDEOGRAPH - 0xD4A2: 0x5BD3, //CJK UNIFIED IDEOGRAPH - 0xD4A3: 0x88D5, //CJK UNIFIED IDEOGRAPH - 0xD4A4: 0x9884, //CJK UNIFIED IDEOGRAPH - 0xD4A5: 0x8C6B, //CJK UNIFIED IDEOGRAPH - 0xD4A6: 0x9A6D, //CJK UNIFIED IDEOGRAPH - 0xD4A7: 0x9E33, //CJK UNIFIED IDEOGRAPH - 0xD4A8: 0x6E0A, //CJK UNIFIED IDEOGRAPH - 0xD4A9: 0x51A4, //CJK UNIFIED IDEOGRAPH - 0xD4AA: 0x5143, //CJK UNIFIED IDEOGRAPH - 0xD4AB: 0x57A3, //CJK UNIFIED IDEOGRAPH - 0xD4AC: 0x8881, //CJK UNIFIED IDEOGRAPH - 0xD4AD: 0x539F, //CJK UNIFIED IDEOGRAPH - 0xD4AE: 0x63F4, //CJK UNIFIED IDEOGRAPH - 0xD4AF: 0x8F95, //CJK UNIFIED IDEOGRAPH - 0xD4B0: 0x56ED, //CJK UNIFIED IDEOGRAPH - 0xD4B1: 0x5458, //CJK UNIFIED IDEOGRAPH - 0xD4B2: 0x5706, //CJK UNIFIED IDEOGRAPH - 0xD4B3: 0x733F, //CJK UNIFIED IDEOGRAPH - 0xD4B4: 0x6E90, //CJK UNIFIED IDEOGRAPH - 0xD4B5: 0x7F18, //CJK UNIFIED IDEOGRAPH - 0xD4B6: 0x8FDC, //CJK UNIFIED IDEOGRAPH - 0xD4B7: 0x82D1, //CJK UNIFIED IDEOGRAPH - 0xD4B8: 0x613F, //CJK UNIFIED IDEOGRAPH - 0xD4B9: 0x6028, //CJK UNIFIED IDEOGRAPH - 0xD4BA: 0x9662, //CJK UNIFIED IDEOGRAPH - 0xD4BB: 0x66F0, //CJK UNIFIED IDEOGRAPH - 0xD4BC: 0x7EA6, //CJK UNIFIED IDEOGRAPH - 0xD4BD: 0x8D8A, //CJK UNIFIED IDEOGRAPH - 0xD4BE: 0x8DC3, //CJK UNIFIED IDEOGRAPH - 0xD4BF: 0x94A5, //CJK UNIFIED IDEOGRAPH - 0xD4C0: 0x5CB3, //CJK UNIFIED IDEOGRAPH - 0xD4C1: 0x7CA4, //CJK UNIFIED IDEOGRAPH - 0xD4C2: 0x6708, //CJK UNIFIED IDEOGRAPH - 0xD4C3: 0x60A6, //CJK UNIFIED IDEOGRAPH - 0xD4C4: 0x9605, //CJK UNIFIED IDEOGRAPH - 0xD4C5: 0x8018, //CJK UNIFIED IDEOGRAPH - 0xD4C6: 0x4E91, //CJK UNIFIED IDEOGRAPH - 0xD4C7: 0x90E7, //CJK UNIFIED IDEOGRAPH - 0xD4C8: 0x5300, //CJK UNIFIED IDEOGRAPH - 0xD4C9: 0x9668, //CJK UNIFIED IDEOGRAPH - 0xD4CA: 0x5141, //CJK UNIFIED IDEOGRAPH - 0xD4CB: 0x8FD0, //CJK UNIFIED IDEOGRAPH - 0xD4CC: 0x8574, //CJK UNIFIED IDEOGRAPH - 0xD4CD: 0x915D, //CJK UNIFIED IDEOGRAPH - 0xD4CE: 0x6655, //CJK UNIFIED IDEOGRAPH - 0xD4CF: 0x97F5, //CJK UNIFIED IDEOGRAPH - 0xD4D0: 0x5B55, //CJK UNIFIED IDEOGRAPH - 0xD4D1: 0x531D, //CJK UNIFIED IDEOGRAPH - 0xD4D2: 0x7838, //CJK UNIFIED IDEOGRAPH - 0xD4D3: 0x6742, //CJK UNIFIED IDEOGRAPH - 0xD4D4: 0x683D, //CJK UNIFIED IDEOGRAPH - 0xD4D5: 0x54C9, //CJK UNIFIED IDEOGRAPH - 0xD4D6: 0x707E, //CJK UNIFIED IDEOGRAPH - 0xD4D7: 0x5BB0, //CJK UNIFIED IDEOGRAPH - 0xD4D8: 0x8F7D, //CJK UNIFIED IDEOGRAPH - 0xD4D9: 0x518D, //CJK UNIFIED IDEOGRAPH - 0xD4DA: 0x5728, //CJK UNIFIED IDEOGRAPH - 0xD4DB: 0x54B1, //CJK UNIFIED IDEOGRAPH - 0xD4DC: 0x6512, //CJK UNIFIED IDEOGRAPH - 0xD4DD: 0x6682, //CJK UNIFIED IDEOGRAPH - 0xD4DE: 0x8D5E, //CJK UNIFIED IDEOGRAPH - 0xD4DF: 0x8D43, //CJK UNIFIED IDEOGRAPH - 0xD4E0: 0x810F, //CJK UNIFIED IDEOGRAPH - 0xD4E1: 0x846C, //CJK UNIFIED IDEOGRAPH - 0xD4E2: 0x906D, //CJK UNIFIED IDEOGRAPH - 0xD4E3: 0x7CDF, //CJK UNIFIED IDEOGRAPH - 0xD4E4: 0x51FF, //CJK UNIFIED IDEOGRAPH - 0xD4E5: 0x85FB, //CJK UNIFIED IDEOGRAPH - 0xD4E6: 0x67A3, //CJK UNIFIED IDEOGRAPH - 0xD4E7: 0x65E9, //CJK UNIFIED IDEOGRAPH - 0xD4E8: 0x6FA1, //CJK UNIFIED IDEOGRAPH - 0xD4E9: 0x86A4, //CJK UNIFIED IDEOGRAPH - 0xD4EA: 0x8E81, //CJK UNIFIED IDEOGRAPH - 0xD4EB: 0x566A, //CJK UNIFIED IDEOGRAPH - 0xD4EC: 0x9020, //CJK UNIFIED IDEOGRAPH - 0xD4ED: 0x7682, //CJK UNIFIED IDEOGRAPH - 0xD4EE: 0x7076, //CJK UNIFIED IDEOGRAPH - 0xD4EF: 0x71E5, //CJK UNIFIED IDEOGRAPH - 0xD4F0: 0x8D23, //CJK UNIFIED IDEOGRAPH - 0xD4F1: 0x62E9, //CJK UNIFIED IDEOGRAPH - 0xD4F2: 0x5219, //CJK UNIFIED IDEOGRAPH - 0xD4F3: 0x6CFD, //CJK UNIFIED IDEOGRAPH - 0xD4F4: 0x8D3C, //CJK UNIFIED IDEOGRAPH - 0xD4F5: 0x600E, //CJK UNIFIED IDEOGRAPH - 0xD4F6: 0x589E, //CJK UNIFIED IDEOGRAPH - 0xD4F7: 0x618E, //CJK UNIFIED IDEOGRAPH - 0xD4F8: 0x66FE, //CJK UNIFIED IDEOGRAPH - 0xD4F9: 0x8D60, //CJK UNIFIED IDEOGRAPH - 0xD4FA: 0x624E, //CJK UNIFIED IDEOGRAPH - 0xD4FB: 0x55B3, //CJK UNIFIED IDEOGRAPH - 0xD4FC: 0x6E23, //CJK UNIFIED IDEOGRAPH - 0xD4FD: 0x672D, //CJK UNIFIED IDEOGRAPH - 0xD4FE: 0x8F67, //CJK UNIFIED IDEOGRAPH - 0xD540: 0x8A81, //CJK UNIFIED IDEOGRAPH - 0xD541: 0x8A82, //CJK UNIFIED IDEOGRAPH - 0xD542: 0x8A83, //CJK UNIFIED IDEOGRAPH - 0xD543: 0x8A84, //CJK UNIFIED IDEOGRAPH - 0xD544: 0x8A85, //CJK UNIFIED IDEOGRAPH - 0xD545: 0x8A86, //CJK UNIFIED IDEOGRAPH - 0xD546: 0x8A87, //CJK UNIFIED IDEOGRAPH - 0xD547: 0x8A88, //CJK UNIFIED IDEOGRAPH - 0xD548: 0x8A8B, //CJK UNIFIED IDEOGRAPH - 0xD549: 0x8A8C, //CJK UNIFIED IDEOGRAPH - 0xD54A: 0x8A8D, //CJK UNIFIED IDEOGRAPH - 0xD54B: 0x8A8E, //CJK UNIFIED IDEOGRAPH - 0xD54C: 0x8A8F, //CJK UNIFIED IDEOGRAPH - 0xD54D: 0x8A90, //CJK UNIFIED IDEOGRAPH - 0xD54E: 0x8A91, //CJK UNIFIED IDEOGRAPH - 0xD54F: 0x8A92, //CJK UNIFIED IDEOGRAPH - 0xD550: 0x8A94, //CJK UNIFIED IDEOGRAPH - 0xD551: 0x8A95, //CJK UNIFIED IDEOGRAPH - 0xD552: 0x8A96, //CJK UNIFIED IDEOGRAPH - 0xD553: 0x8A97, //CJK UNIFIED IDEOGRAPH - 0xD554: 0x8A98, //CJK UNIFIED IDEOGRAPH - 0xD555: 0x8A99, //CJK UNIFIED IDEOGRAPH - 0xD556: 0x8A9A, //CJK UNIFIED IDEOGRAPH - 0xD557: 0x8A9B, //CJK UNIFIED IDEOGRAPH - 0xD558: 0x8A9C, //CJK UNIFIED IDEOGRAPH - 0xD559: 0x8A9D, //CJK UNIFIED IDEOGRAPH - 0xD55A: 0x8A9E, //CJK UNIFIED IDEOGRAPH - 0xD55B: 0x8A9F, //CJK UNIFIED IDEOGRAPH - 0xD55C: 0x8AA0, //CJK UNIFIED IDEOGRAPH - 0xD55D: 0x8AA1, //CJK UNIFIED IDEOGRAPH - 0xD55E: 0x8AA2, //CJK UNIFIED IDEOGRAPH - 0xD55F: 0x8AA3, //CJK UNIFIED IDEOGRAPH - 0xD560: 0x8AA4, //CJK UNIFIED IDEOGRAPH - 0xD561: 0x8AA5, //CJK UNIFIED IDEOGRAPH - 0xD562: 0x8AA6, //CJK UNIFIED IDEOGRAPH - 0xD563: 0x8AA7, //CJK UNIFIED IDEOGRAPH - 0xD564: 0x8AA8, //CJK UNIFIED IDEOGRAPH - 0xD565: 0x8AA9, //CJK UNIFIED IDEOGRAPH - 0xD566: 0x8AAA, //CJK UNIFIED IDEOGRAPH - 0xD567: 0x8AAB, //CJK UNIFIED IDEOGRAPH - 0xD568: 0x8AAC, //CJK UNIFIED IDEOGRAPH - 0xD569: 0x8AAD, //CJK UNIFIED IDEOGRAPH - 0xD56A: 0x8AAE, //CJK UNIFIED IDEOGRAPH - 0xD56B: 0x8AAF, //CJK UNIFIED IDEOGRAPH - 0xD56C: 0x8AB0, //CJK UNIFIED IDEOGRAPH - 0xD56D: 0x8AB1, //CJK UNIFIED IDEOGRAPH - 0xD56E: 0x8AB2, //CJK UNIFIED IDEOGRAPH - 0xD56F: 0x8AB3, //CJK UNIFIED IDEOGRAPH - 0xD570: 0x8AB4, //CJK UNIFIED IDEOGRAPH - 0xD571: 0x8AB5, //CJK UNIFIED IDEOGRAPH - 0xD572: 0x8AB6, //CJK UNIFIED IDEOGRAPH - 0xD573: 0x8AB7, //CJK UNIFIED IDEOGRAPH - 0xD574: 0x8AB8, //CJK UNIFIED IDEOGRAPH - 0xD575: 0x8AB9, //CJK UNIFIED IDEOGRAPH - 0xD576: 0x8ABA, //CJK UNIFIED IDEOGRAPH - 0xD577: 0x8ABB, //CJK UNIFIED IDEOGRAPH - 0xD578: 0x8ABC, //CJK UNIFIED IDEOGRAPH - 0xD579: 0x8ABD, //CJK UNIFIED IDEOGRAPH - 0xD57A: 0x8ABE, //CJK UNIFIED IDEOGRAPH - 0xD57B: 0x8ABF, //CJK UNIFIED IDEOGRAPH - 0xD57C: 0x8AC0, //CJK UNIFIED IDEOGRAPH - 0xD57D: 0x8AC1, //CJK UNIFIED IDEOGRAPH - 0xD57E: 0x8AC2, //CJK UNIFIED IDEOGRAPH - 0xD580: 0x8AC3, //CJK UNIFIED IDEOGRAPH - 0xD581: 0x8AC4, //CJK UNIFIED IDEOGRAPH - 0xD582: 0x8AC5, //CJK UNIFIED IDEOGRAPH - 0xD583: 0x8AC6, //CJK UNIFIED IDEOGRAPH - 0xD584: 0x8AC7, //CJK UNIFIED IDEOGRAPH - 0xD585: 0x8AC8, //CJK UNIFIED IDEOGRAPH - 0xD586: 0x8AC9, //CJK UNIFIED IDEOGRAPH - 0xD587: 0x8ACA, //CJK UNIFIED IDEOGRAPH - 0xD588: 0x8ACB, //CJK UNIFIED IDEOGRAPH - 0xD589: 0x8ACC, //CJK UNIFIED IDEOGRAPH - 0xD58A: 0x8ACD, //CJK UNIFIED IDEOGRAPH - 0xD58B: 0x8ACE, //CJK UNIFIED IDEOGRAPH - 0xD58C: 0x8ACF, //CJK UNIFIED IDEOGRAPH - 0xD58D: 0x8AD0, //CJK UNIFIED IDEOGRAPH - 0xD58E: 0x8AD1, //CJK UNIFIED IDEOGRAPH - 0xD58F: 0x8AD2, //CJK UNIFIED IDEOGRAPH - 0xD590: 0x8AD3, //CJK UNIFIED IDEOGRAPH - 0xD591: 0x8AD4, //CJK UNIFIED IDEOGRAPH - 0xD592: 0x8AD5, //CJK UNIFIED IDEOGRAPH - 0xD593: 0x8AD6, //CJK UNIFIED IDEOGRAPH - 0xD594: 0x8AD7, //CJK UNIFIED IDEOGRAPH - 0xD595: 0x8AD8, //CJK UNIFIED IDEOGRAPH - 0xD596: 0x8AD9, //CJK UNIFIED IDEOGRAPH - 0xD597: 0x8ADA, //CJK UNIFIED IDEOGRAPH - 0xD598: 0x8ADB, //CJK UNIFIED IDEOGRAPH - 0xD599: 0x8ADC, //CJK UNIFIED IDEOGRAPH - 0xD59A: 0x8ADD, //CJK UNIFIED IDEOGRAPH - 0xD59B: 0x8ADE, //CJK UNIFIED IDEOGRAPH - 0xD59C: 0x8ADF, //CJK UNIFIED IDEOGRAPH - 0xD59D: 0x8AE0, //CJK UNIFIED IDEOGRAPH - 0xD59E: 0x8AE1, //CJK UNIFIED IDEOGRAPH - 0xD59F: 0x8AE2, //CJK UNIFIED IDEOGRAPH - 0xD5A0: 0x8AE3, //CJK UNIFIED IDEOGRAPH - 0xD5A1: 0x94E1, //CJK UNIFIED IDEOGRAPH - 0xD5A2: 0x95F8, //CJK UNIFIED IDEOGRAPH - 0xD5A3: 0x7728, //CJK UNIFIED IDEOGRAPH - 0xD5A4: 0x6805, //CJK UNIFIED IDEOGRAPH - 0xD5A5: 0x69A8, //CJK UNIFIED IDEOGRAPH - 0xD5A6: 0x548B, //CJK UNIFIED IDEOGRAPH - 0xD5A7: 0x4E4D, //CJK UNIFIED IDEOGRAPH - 0xD5A8: 0x70B8, //CJK UNIFIED IDEOGRAPH - 0xD5A9: 0x8BC8, //CJK UNIFIED IDEOGRAPH - 0xD5AA: 0x6458, //CJK UNIFIED IDEOGRAPH - 0xD5AB: 0x658B, //CJK UNIFIED IDEOGRAPH - 0xD5AC: 0x5B85, //CJK UNIFIED IDEOGRAPH - 0xD5AD: 0x7A84, //CJK UNIFIED IDEOGRAPH - 0xD5AE: 0x503A, //CJK UNIFIED IDEOGRAPH - 0xD5AF: 0x5BE8, //CJK UNIFIED IDEOGRAPH - 0xD5B0: 0x77BB, //CJK UNIFIED IDEOGRAPH - 0xD5B1: 0x6BE1, //CJK UNIFIED IDEOGRAPH - 0xD5B2: 0x8A79, //CJK UNIFIED IDEOGRAPH - 0xD5B3: 0x7C98, //CJK UNIFIED IDEOGRAPH - 0xD5B4: 0x6CBE, //CJK UNIFIED IDEOGRAPH - 0xD5B5: 0x76CF, //CJK UNIFIED IDEOGRAPH - 0xD5B6: 0x65A9, //CJK UNIFIED IDEOGRAPH - 0xD5B7: 0x8F97, //CJK UNIFIED IDEOGRAPH - 0xD5B8: 0x5D2D, //CJK UNIFIED IDEOGRAPH - 0xD5B9: 0x5C55, //CJK UNIFIED IDEOGRAPH - 0xD5BA: 0x8638, //CJK UNIFIED IDEOGRAPH - 0xD5BB: 0x6808, //CJK UNIFIED IDEOGRAPH - 0xD5BC: 0x5360, //CJK UNIFIED IDEOGRAPH - 0xD5BD: 0x6218, //CJK UNIFIED IDEOGRAPH - 0xD5BE: 0x7AD9, //CJK UNIFIED IDEOGRAPH - 0xD5BF: 0x6E5B, //CJK UNIFIED IDEOGRAPH - 0xD5C0: 0x7EFD, //CJK UNIFIED IDEOGRAPH - 0xD5C1: 0x6A1F, //CJK UNIFIED IDEOGRAPH - 0xD5C2: 0x7AE0, //CJK UNIFIED IDEOGRAPH - 0xD5C3: 0x5F70, //CJK UNIFIED IDEOGRAPH - 0xD5C4: 0x6F33, //CJK UNIFIED IDEOGRAPH - 0xD5C5: 0x5F20, //CJK UNIFIED IDEOGRAPH - 0xD5C6: 0x638C, //CJK UNIFIED IDEOGRAPH - 0xD5C7: 0x6DA8, //CJK UNIFIED IDEOGRAPH - 0xD5C8: 0x6756, //CJK UNIFIED IDEOGRAPH - 0xD5C9: 0x4E08, //CJK UNIFIED IDEOGRAPH - 0xD5CA: 0x5E10, //CJK UNIFIED IDEOGRAPH - 0xD5CB: 0x8D26, //CJK UNIFIED IDEOGRAPH - 0xD5CC: 0x4ED7, //CJK UNIFIED IDEOGRAPH - 0xD5CD: 0x80C0, //CJK UNIFIED IDEOGRAPH - 0xD5CE: 0x7634, //CJK UNIFIED IDEOGRAPH - 0xD5CF: 0x969C, //CJK UNIFIED IDEOGRAPH - 0xD5D0: 0x62DB, //CJK UNIFIED IDEOGRAPH - 0xD5D1: 0x662D, //CJK UNIFIED IDEOGRAPH - 0xD5D2: 0x627E, //CJK UNIFIED IDEOGRAPH - 0xD5D3: 0x6CBC, //CJK UNIFIED IDEOGRAPH - 0xD5D4: 0x8D75, //CJK UNIFIED IDEOGRAPH - 0xD5D5: 0x7167, //CJK UNIFIED IDEOGRAPH - 0xD5D6: 0x7F69, //CJK UNIFIED IDEOGRAPH - 0xD5D7: 0x5146, //CJK UNIFIED IDEOGRAPH - 0xD5D8: 0x8087, //CJK UNIFIED IDEOGRAPH - 0xD5D9: 0x53EC, //CJK UNIFIED IDEOGRAPH - 0xD5DA: 0x906E, //CJK UNIFIED IDEOGRAPH - 0xD5DB: 0x6298, //CJK UNIFIED IDEOGRAPH - 0xD5DC: 0x54F2, //CJK UNIFIED IDEOGRAPH - 0xD5DD: 0x86F0, //CJK UNIFIED IDEOGRAPH - 0xD5DE: 0x8F99, //CJK UNIFIED IDEOGRAPH - 0xD5DF: 0x8005, //CJK UNIFIED IDEOGRAPH - 0xD5E0: 0x9517, //CJK UNIFIED IDEOGRAPH - 0xD5E1: 0x8517, //CJK UNIFIED IDEOGRAPH - 0xD5E2: 0x8FD9, //CJK UNIFIED IDEOGRAPH - 0xD5E3: 0x6D59, //CJK UNIFIED IDEOGRAPH - 0xD5E4: 0x73CD, //CJK UNIFIED IDEOGRAPH - 0xD5E5: 0x659F, //CJK UNIFIED IDEOGRAPH - 0xD5E6: 0x771F, //CJK UNIFIED IDEOGRAPH - 0xD5E7: 0x7504, //CJK UNIFIED IDEOGRAPH - 0xD5E8: 0x7827, //CJK UNIFIED IDEOGRAPH - 0xD5E9: 0x81FB, //CJK UNIFIED IDEOGRAPH - 0xD5EA: 0x8D1E, //CJK UNIFIED IDEOGRAPH - 0xD5EB: 0x9488, //CJK UNIFIED IDEOGRAPH - 0xD5EC: 0x4FA6, //CJK UNIFIED IDEOGRAPH - 0xD5ED: 0x6795, //CJK UNIFIED IDEOGRAPH - 0xD5EE: 0x75B9, //CJK UNIFIED IDEOGRAPH - 0xD5EF: 0x8BCA, //CJK UNIFIED IDEOGRAPH - 0xD5F0: 0x9707, //CJK UNIFIED IDEOGRAPH - 0xD5F1: 0x632F, //CJK UNIFIED IDEOGRAPH - 0xD5F2: 0x9547, //CJK UNIFIED IDEOGRAPH - 0xD5F3: 0x9635, //CJK UNIFIED IDEOGRAPH - 0xD5F4: 0x84B8, //CJK UNIFIED IDEOGRAPH - 0xD5F5: 0x6323, //CJK UNIFIED IDEOGRAPH - 0xD5F6: 0x7741, //CJK UNIFIED IDEOGRAPH - 0xD5F7: 0x5F81, //CJK UNIFIED IDEOGRAPH - 0xD5F8: 0x72F0, //CJK UNIFIED IDEOGRAPH - 0xD5F9: 0x4E89, //CJK UNIFIED IDEOGRAPH - 0xD5FA: 0x6014, //CJK UNIFIED IDEOGRAPH - 0xD5FB: 0x6574, //CJK UNIFIED IDEOGRAPH - 0xD5FC: 0x62EF, //CJK UNIFIED IDEOGRAPH - 0xD5FD: 0x6B63, //CJK UNIFIED IDEOGRAPH - 0xD5FE: 0x653F, //CJK UNIFIED IDEOGRAPH - 0xD640: 0x8AE4, //CJK UNIFIED IDEOGRAPH - 0xD641: 0x8AE5, //CJK UNIFIED IDEOGRAPH - 0xD642: 0x8AE6, //CJK UNIFIED IDEOGRAPH - 0xD643: 0x8AE7, //CJK UNIFIED IDEOGRAPH - 0xD644: 0x8AE8, //CJK UNIFIED IDEOGRAPH - 0xD645: 0x8AE9, //CJK UNIFIED IDEOGRAPH - 0xD646: 0x8AEA, //CJK UNIFIED IDEOGRAPH - 0xD647: 0x8AEB, //CJK UNIFIED IDEOGRAPH - 0xD648: 0x8AEC, //CJK UNIFIED IDEOGRAPH - 0xD649: 0x8AED, //CJK UNIFIED IDEOGRAPH - 0xD64A: 0x8AEE, //CJK UNIFIED IDEOGRAPH - 0xD64B: 0x8AEF, //CJK UNIFIED IDEOGRAPH - 0xD64C: 0x8AF0, //CJK UNIFIED IDEOGRAPH - 0xD64D: 0x8AF1, //CJK UNIFIED IDEOGRAPH - 0xD64E: 0x8AF2, //CJK UNIFIED IDEOGRAPH - 0xD64F: 0x8AF3, //CJK UNIFIED IDEOGRAPH - 0xD650: 0x8AF4, //CJK UNIFIED IDEOGRAPH - 0xD651: 0x8AF5, //CJK UNIFIED IDEOGRAPH - 0xD652: 0x8AF6, //CJK UNIFIED IDEOGRAPH - 0xD653: 0x8AF7, //CJK UNIFIED IDEOGRAPH - 0xD654: 0x8AF8, //CJK UNIFIED IDEOGRAPH - 0xD655: 0x8AF9, //CJK UNIFIED IDEOGRAPH - 0xD656: 0x8AFA, //CJK UNIFIED IDEOGRAPH - 0xD657: 0x8AFB, //CJK UNIFIED IDEOGRAPH - 0xD658: 0x8AFC, //CJK UNIFIED IDEOGRAPH - 0xD659: 0x8AFD, //CJK UNIFIED IDEOGRAPH - 0xD65A: 0x8AFE, //CJK UNIFIED IDEOGRAPH - 0xD65B: 0x8AFF, //CJK UNIFIED IDEOGRAPH - 0xD65C: 0x8B00, //CJK UNIFIED IDEOGRAPH - 0xD65D: 0x8B01, //CJK UNIFIED IDEOGRAPH - 0xD65E: 0x8B02, //CJK UNIFIED IDEOGRAPH - 0xD65F: 0x8B03, //CJK UNIFIED IDEOGRAPH - 0xD660: 0x8B04, //CJK UNIFIED IDEOGRAPH - 0xD661: 0x8B05, //CJK UNIFIED IDEOGRAPH - 0xD662: 0x8B06, //CJK UNIFIED IDEOGRAPH - 0xD663: 0x8B08, //CJK UNIFIED IDEOGRAPH - 0xD664: 0x8B09, //CJK UNIFIED IDEOGRAPH - 0xD665: 0x8B0A, //CJK UNIFIED IDEOGRAPH - 0xD666: 0x8B0B, //CJK UNIFIED IDEOGRAPH - 0xD667: 0x8B0C, //CJK UNIFIED IDEOGRAPH - 0xD668: 0x8B0D, //CJK UNIFIED IDEOGRAPH - 0xD669: 0x8B0E, //CJK UNIFIED IDEOGRAPH - 0xD66A: 0x8B0F, //CJK UNIFIED IDEOGRAPH - 0xD66B: 0x8B10, //CJK UNIFIED IDEOGRAPH - 0xD66C: 0x8B11, //CJK UNIFIED IDEOGRAPH - 0xD66D: 0x8B12, //CJK UNIFIED IDEOGRAPH - 0xD66E: 0x8B13, //CJK UNIFIED IDEOGRAPH - 0xD66F: 0x8B14, //CJK UNIFIED IDEOGRAPH - 0xD670: 0x8B15, //CJK UNIFIED IDEOGRAPH - 0xD671: 0x8B16, //CJK UNIFIED IDEOGRAPH - 0xD672: 0x8B17, //CJK UNIFIED IDEOGRAPH - 0xD673: 0x8B18, //CJK UNIFIED IDEOGRAPH - 0xD674: 0x8B19, //CJK UNIFIED IDEOGRAPH - 0xD675: 0x8B1A, //CJK UNIFIED IDEOGRAPH - 0xD676: 0x8B1B, //CJK UNIFIED IDEOGRAPH - 0xD677: 0x8B1C, //CJK UNIFIED IDEOGRAPH - 0xD678: 0x8B1D, //CJK UNIFIED IDEOGRAPH - 0xD679: 0x8B1E, //CJK UNIFIED IDEOGRAPH - 0xD67A: 0x8B1F, //CJK UNIFIED IDEOGRAPH - 0xD67B: 0x8B20, //CJK UNIFIED IDEOGRAPH - 0xD67C: 0x8B21, //CJK UNIFIED IDEOGRAPH - 0xD67D: 0x8B22, //CJK UNIFIED IDEOGRAPH - 0xD67E: 0x8B23, //CJK UNIFIED IDEOGRAPH - 0xD680: 0x8B24, //CJK UNIFIED IDEOGRAPH - 0xD681: 0x8B25, //CJK UNIFIED IDEOGRAPH - 0xD682: 0x8B27, //CJK UNIFIED IDEOGRAPH - 0xD683: 0x8B28, //CJK UNIFIED IDEOGRAPH - 0xD684: 0x8B29, //CJK UNIFIED IDEOGRAPH - 0xD685: 0x8B2A, //CJK UNIFIED IDEOGRAPH - 0xD686: 0x8B2B, //CJK UNIFIED IDEOGRAPH - 0xD687: 0x8B2C, //CJK UNIFIED IDEOGRAPH - 0xD688: 0x8B2D, //CJK UNIFIED IDEOGRAPH - 0xD689: 0x8B2E, //CJK UNIFIED IDEOGRAPH - 0xD68A: 0x8B2F, //CJK UNIFIED IDEOGRAPH - 0xD68B: 0x8B30, //CJK UNIFIED IDEOGRAPH - 0xD68C: 0x8B31, //CJK UNIFIED IDEOGRAPH - 0xD68D: 0x8B32, //CJK UNIFIED IDEOGRAPH - 0xD68E: 0x8B33, //CJK UNIFIED IDEOGRAPH - 0xD68F: 0x8B34, //CJK UNIFIED IDEOGRAPH - 0xD690: 0x8B35, //CJK UNIFIED IDEOGRAPH - 0xD691: 0x8B36, //CJK UNIFIED IDEOGRAPH - 0xD692: 0x8B37, //CJK UNIFIED IDEOGRAPH - 0xD693: 0x8B38, //CJK UNIFIED IDEOGRAPH - 0xD694: 0x8B39, //CJK UNIFIED IDEOGRAPH - 0xD695: 0x8B3A, //CJK UNIFIED IDEOGRAPH - 0xD696: 0x8B3B, //CJK UNIFIED IDEOGRAPH - 0xD697: 0x8B3C, //CJK UNIFIED IDEOGRAPH - 0xD698: 0x8B3D, //CJK UNIFIED IDEOGRAPH - 0xD699: 0x8B3E, //CJK UNIFIED IDEOGRAPH - 0xD69A: 0x8B3F, //CJK UNIFIED IDEOGRAPH - 0xD69B: 0x8B40, //CJK UNIFIED IDEOGRAPH - 0xD69C: 0x8B41, //CJK UNIFIED IDEOGRAPH - 0xD69D: 0x8B42, //CJK UNIFIED IDEOGRAPH - 0xD69E: 0x8B43, //CJK UNIFIED IDEOGRAPH - 0xD69F: 0x8B44, //CJK UNIFIED IDEOGRAPH - 0xD6A0: 0x8B45, //CJK UNIFIED IDEOGRAPH - 0xD6A1: 0x5E27, //CJK UNIFIED IDEOGRAPH - 0xD6A2: 0x75C7, //CJK UNIFIED IDEOGRAPH - 0xD6A3: 0x90D1, //CJK UNIFIED IDEOGRAPH - 0xD6A4: 0x8BC1, //CJK UNIFIED IDEOGRAPH - 0xD6A5: 0x829D, //CJK UNIFIED IDEOGRAPH - 0xD6A6: 0x679D, //CJK UNIFIED IDEOGRAPH - 0xD6A7: 0x652F, //CJK UNIFIED IDEOGRAPH - 0xD6A8: 0x5431, //CJK UNIFIED IDEOGRAPH - 0xD6A9: 0x8718, //CJK UNIFIED IDEOGRAPH - 0xD6AA: 0x77E5, //CJK UNIFIED IDEOGRAPH - 0xD6AB: 0x80A2, //CJK UNIFIED IDEOGRAPH - 0xD6AC: 0x8102, //CJK UNIFIED IDEOGRAPH - 0xD6AD: 0x6C41, //CJK UNIFIED IDEOGRAPH - 0xD6AE: 0x4E4B, //CJK UNIFIED IDEOGRAPH - 0xD6AF: 0x7EC7, //CJK UNIFIED IDEOGRAPH - 0xD6B0: 0x804C, //CJK UNIFIED IDEOGRAPH - 0xD6B1: 0x76F4, //CJK UNIFIED IDEOGRAPH - 0xD6B2: 0x690D, //CJK UNIFIED IDEOGRAPH - 0xD6B3: 0x6B96, //CJK UNIFIED IDEOGRAPH - 0xD6B4: 0x6267, //CJK UNIFIED IDEOGRAPH - 0xD6B5: 0x503C, //CJK UNIFIED IDEOGRAPH - 0xD6B6: 0x4F84, //CJK UNIFIED IDEOGRAPH - 0xD6B7: 0x5740, //CJK UNIFIED IDEOGRAPH - 0xD6B8: 0x6307, //CJK UNIFIED IDEOGRAPH - 0xD6B9: 0x6B62, //CJK UNIFIED IDEOGRAPH - 0xD6BA: 0x8DBE, //CJK UNIFIED IDEOGRAPH - 0xD6BB: 0x53EA, //CJK UNIFIED IDEOGRAPH - 0xD6BC: 0x65E8, //CJK UNIFIED IDEOGRAPH - 0xD6BD: 0x7EB8, //CJK UNIFIED IDEOGRAPH - 0xD6BE: 0x5FD7, //CJK UNIFIED IDEOGRAPH - 0xD6BF: 0x631A, //CJK UNIFIED IDEOGRAPH - 0xD6C0: 0x63B7, //CJK UNIFIED IDEOGRAPH - 0xD6C1: 0x81F3, //CJK UNIFIED IDEOGRAPH - 0xD6C2: 0x81F4, //CJK UNIFIED IDEOGRAPH - 0xD6C3: 0x7F6E, //CJK UNIFIED IDEOGRAPH - 0xD6C4: 0x5E1C, //CJK UNIFIED IDEOGRAPH - 0xD6C5: 0x5CD9, //CJK UNIFIED IDEOGRAPH - 0xD6C6: 0x5236, //CJK UNIFIED IDEOGRAPH - 0xD6C7: 0x667A, //CJK UNIFIED IDEOGRAPH - 0xD6C8: 0x79E9, //CJK UNIFIED IDEOGRAPH - 0xD6C9: 0x7A1A, //CJK UNIFIED IDEOGRAPH - 0xD6CA: 0x8D28, //CJK UNIFIED IDEOGRAPH - 0xD6CB: 0x7099, //CJK UNIFIED IDEOGRAPH - 0xD6CC: 0x75D4, //CJK UNIFIED IDEOGRAPH - 0xD6CD: 0x6EDE, //CJK UNIFIED IDEOGRAPH - 0xD6CE: 0x6CBB, //CJK UNIFIED IDEOGRAPH - 0xD6CF: 0x7A92, //CJK UNIFIED IDEOGRAPH - 0xD6D0: 0x4E2D, //CJK UNIFIED IDEOGRAPH - 0xD6D1: 0x76C5, //CJK UNIFIED IDEOGRAPH - 0xD6D2: 0x5FE0, //CJK UNIFIED IDEOGRAPH - 0xD6D3: 0x949F, //CJK UNIFIED IDEOGRAPH - 0xD6D4: 0x8877, //CJK UNIFIED IDEOGRAPH - 0xD6D5: 0x7EC8, //CJK UNIFIED IDEOGRAPH - 0xD6D6: 0x79CD, //CJK UNIFIED IDEOGRAPH - 0xD6D7: 0x80BF, //CJK UNIFIED IDEOGRAPH - 0xD6D8: 0x91CD, //CJK UNIFIED IDEOGRAPH - 0xD6D9: 0x4EF2, //CJK UNIFIED IDEOGRAPH - 0xD6DA: 0x4F17, //CJK UNIFIED IDEOGRAPH - 0xD6DB: 0x821F, //CJK UNIFIED IDEOGRAPH - 0xD6DC: 0x5468, //CJK UNIFIED IDEOGRAPH - 0xD6DD: 0x5DDE, //CJK UNIFIED IDEOGRAPH - 0xD6DE: 0x6D32, //CJK UNIFIED IDEOGRAPH - 0xD6DF: 0x8BCC, //CJK UNIFIED IDEOGRAPH - 0xD6E0: 0x7CA5, //CJK UNIFIED IDEOGRAPH - 0xD6E1: 0x8F74, //CJK UNIFIED IDEOGRAPH - 0xD6E2: 0x8098, //CJK UNIFIED IDEOGRAPH - 0xD6E3: 0x5E1A, //CJK UNIFIED IDEOGRAPH - 0xD6E4: 0x5492, //CJK UNIFIED IDEOGRAPH - 0xD6E5: 0x76B1, //CJK UNIFIED IDEOGRAPH - 0xD6E6: 0x5B99, //CJK UNIFIED IDEOGRAPH - 0xD6E7: 0x663C, //CJK UNIFIED IDEOGRAPH - 0xD6E8: 0x9AA4, //CJK UNIFIED IDEOGRAPH - 0xD6E9: 0x73E0, //CJK UNIFIED IDEOGRAPH - 0xD6EA: 0x682A, //CJK UNIFIED IDEOGRAPH - 0xD6EB: 0x86DB, //CJK UNIFIED IDEOGRAPH - 0xD6EC: 0x6731, //CJK UNIFIED IDEOGRAPH - 0xD6ED: 0x732A, //CJK UNIFIED IDEOGRAPH - 0xD6EE: 0x8BF8, //CJK UNIFIED IDEOGRAPH - 0xD6EF: 0x8BDB, //CJK UNIFIED IDEOGRAPH - 0xD6F0: 0x9010, //CJK UNIFIED IDEOGRAPH - 0xD6F1: 0x7AF9, //CJK UNIFIED IDEOGRAPH - 0xD6F2: 0x70DB, //CJK UNIFIED IDEOGRAPH - 0xD6F3: 0x716E, //CJK UNIFIED IDEOGRAPH - 0xD6F4: 0x62C4, //CJK UNIFIED IDEOGRAPH - 0xD6F5: 0x77A9, //CJK UNIFIED IDEOGRAPH - 0xD6F6: 0x5631, //CJK UNIFIED IDEOGRAPH - 0xD6F7: 0x4E3B, //CJK UNIFIED IDEOGRAPH - 0xD6F8: 0x8457, //CJK UNIFIED IDEOGRAPH - 0xD6F9: 0x67F1, //CJK UNIFIED IDEOGRAPH - 0xD6FA: 0x52A9, //CJK UNIFIED IDEOGRAPH - 0xD6FB: 0x86C0, //CJK UNIFIED IDEOGRAPH - 0xD6FC: 0x8D2E, //CJK UNIFIED IDEOGRAPH - 0xD6FD: 0x94F8, //CJK UNIFIED IDEOGRAPH - 0xD6FE: 0x7B51, //CJK UNIFIED IDEOGRAPH - 0xD740: 0x8B46, //CJK UNIFIED IDEOGRAPH - 0xD741: 0x8B47, //CJK UNIFIED IDEOGRAPH - 0xD742: 0x8B48, //CJK UNIFIED IDEOGRAPH - 0xD743: 0x8B49, //CJK UNIFIED IDEOGRAPH - 0xD744: 0x8B4A, //CJK UNIFIED IDEOGRAPH - 0xD745: 0x8B4B, //CJK UNIFIED IDEOGRAPH - 0xD746: 0x8B4C, //CJK UNIFIED IDEOGRAPH - 0xD747: 0x8B4D, //CJK UNIFIED IDEOGRAPH - 0xD748: 0x8B4E, //CJK UNIFIED IDEOGRAPH - 0xD749: 0x8B4F, //CJK UNIFIED IDEOGRAPH - 0xD74A: 0x8B50, //CJK UNIFIED IDEOGRAPH - 0xD74B: 0x8B51, //CJK UNIFIED IDEOGRAPH - 0xD74C: 0x8B52, //CJK UNIFIED IDEOGRAPH - 0xD74D: 0x8B53, //CJK UNIFIED IDEOGRAPH - 0xD74E: 0x8B54, //CJK UNIFIED IDEOGRAPH - 0xD74F: 0x8B55, //CJK UNIFIED IDEOGRAPH - 0xD750: 0x8B56, //CJK UNIFIED IDEOGRAPH - 0xD751: 0x8B57, //CJK UNIFIED IDEOGRAPH - 0xD752: 0x8B58, //CJK UNIFIED IDEOGRAPH - 0xD753: 0x8B59, //CJK UNIFIED IDEOGRAPH - 0xD754: 0x8B5A, //CJK UNIFIED IDEOGRAPH - 0xD755: 0x8B5B, //CJK UNIFIED IDEOGRAPH - 0xD756: 0x8B5C, //CJK UNIFIED IDEOGRAPH - 0xD757: 0x8B5D, //CJK UNIFIED IDEOGRAPH - 0xD758: 0x8B5E, //CJK UNIFIED IDEOGRAPH - 0xD759: 0x8B5F, //CJK UNIFIED IDEOGRAPH - 0xD75A: 0x8B60, //CJK UNIFIED IDEOGRAPH - 0xD75B: 0x8B61, //CJK UNIFIED IDEOGRAPH - 0xD75C: 0x8B62, //CJK UNIFIED IDEOGRAPH - 0xD75D: 0x8B63, //CJK UNIFIED IDEOGRAPH - 0xD75E: 0x8B64, //CJK UNIFIED IDEOGRAPH - 0xD75F: 0x8B65, //CJK UNIFIED IDEOGRAPH - 0xD760: 0x8B67, //CJK UNIFIED IDEOGRAPH - 0xD761: 0x8B68, //CJK UNIFIED IDEOGRAPH - 0xD762: 0x8B69, //CJK UNIFIED IDEOGRAPH - 0xD763: 0x8B6A, //CJK UNIFIED IDEOGRAPH - 0xD764: 0x8B6B, //CJK UNIFIED IDEOGRAPH - 0xD765: 0x8B6D, //CJK UNIFIED IDEOGRAPH - 0xD766: 0x8B6E, //CJK UNIFIED IDEOGRAPH - 0xD767: 0x8B6F, //CJK UNIFIED IDEOGRAPH - 0xD768: 0x8B70, //CJK UNIFIED IDEOGRAPH - 0xD769: 0x8B71, //CJK UNIFIED IDEOGRAPH - 0xD76A: 0x8B72, //CJK UNIFIED IDEOGRAPH - 0xD76B: 0x8B73, //CJK UNIFIED IDEOGRAPH - 0xD76C: 0x8B74, //CJK UNIFIED IDEOGRAPH - 0xD76D: 0x8B75, //CJK UNIFIED IDEOGRAPH - 0xD76E: 0x8B76, //CJK UNIFIED IDEOGRAPH - 0xD76F: 0x8B77, //CJK UNIFIED IDEOGRAPH - 0xD770: 0x8B78, //CJK UNIFIED IDEOGRAPH - 0xD771: 0x8B79, //CJK UNIFIED IDEOGRAPH - 0xD772: 0x8B7A, //CJK UNIFIED IDEOGRAPH - 0xD773: 0x8B7B, //CJK UNIFIED IDEOGRAPH - 0xD774: 0x8B7C, //CJK UNIFIED IDEOGRAPH - 0xD775: 0x8B7D, //CJK UNIFIED IDEOGRAPH - 0xD776: 0x8B7E, //CJK UNIFIED IDEOGRAPH - 0xD777: 0x8B7F, //CJK UNIFIED IDEOGRAPH - 0xD778: 0x8B80, //CJK UNIFIED IDEOGRAPH - 0xD779: 0x8B81, //CJK UNIFIED IDEOGRAPH - 0xD77A: 0x8B82, //CJK UNIFIED IDEOGRAPH - 0xD77B: 0x8B83, //CJK UNIFIED IDEOGRAPH - 0xD77C: 0x8B84, //CJK UNIFIED IDEOGRAPH - 0xD77D: 0x8B85, //CJK UNIFIED IDEOGRAPH - 0xD77E: 0x8B86, //CJK UNIFIED IDEOGRAPH - 0xD780: 0x8B87, //CJK UNIFIED IDEOGRAPH - 0xD781: 0x8B88, //CJK UNIFIED IDEOGRAPH - 0xD782: 0x8B89, //CJK UNIFIED IDEOGRAPH - 0xD783: 0x8B8A, //CJK UNIFIED IDEOGRAPH - 0xD784: 0x8B8B, //CJK UNIFIED IDEOGRAPH - 0xD785: 0x8B8C, //CJK UNIFIED IDEOGRAPH - 0xD786: 0x8B8D, //CJK UNIFIED IDEOGRAPH - 0xD787: 0x8B8E, //CJK UNIFIED IDEOGRAPH - 0xD788: 0x8B8F, //CJK UNIFIED IDEOGRAPH - 0xD789: 0x8B90, //CJK UNIFIED IDEOGRAPH - 0xD78A: 0x8B91, //CJK UNIFIED IDEOGRAPH - 0xD78B: 0x8B92, //CJK UNIFIED IDEOGRAPH - 0xD78C: 0x8B93, //CJK UNIFIED IDEOGRAPH - 0xD78D: 0x8B94, //CJK UNIFIED IDEOGRAPH - 0xD78E: 0x8B95, //CJK UNIFIED IDEOGRAPH - 0xD78F: 0x8B96, //CJK UNIFIED IDEOGRAPH - 0xD790: 0x8B97, //CJK UNIFIED IDEOGRAPH - 0xD791: 0x8B98, //CJK UNIFIED IDEOGRAPH - 0xD792: 0x8B99, //CJK UNIFIED IDEOGRAPH - 0xD793: 0x8B9A, //CJK UNIFIED IDEOGRAPH - 0xD794: 0x8B9B, //CJK UNIFIED IDEOGRAPH - 0xD795: 0x8B9C, //CJK UNIFIED IDEOGRAPH - 0xD796: 0x8B9D, //CJK UNIFIED IDEOGRAPH - 0xD797: 0x8B9E, //CJK UNIFIED IDEOGRAPH - 0xD798: 0x8B9F, //CJK UNIFIED IDEOGRAPH - 0xD799: 0x8BAC, //CJK UNIFIED IDEOGRAPH - 0xD79A: 0x8BB1, //CJK UNIFIED IDEOGRAPH - 0xD79B: 0x8BBB, //CJK UNIFIED IDEOGRAPH - 0xD79C: 0x8BC7, //CJK UNIFIED IDEOGRAPH - 0xD79D: 0x8BD0, //CJK UNIFIED IDEOGRAPH - 0xD79E: 0x8BEA, //CJK UNIFIED IDEOGRAPH - 0xD79F: 0x8C09, //CJK UNIFIED IDEOGRAPH - 0xD7A0: 0x8C1E, //CJK UNIFIED IDEOGRAPH - 0xD7A1: 0x4F4F, //CJK UNIFIED IDEOGRAPH - 0xD7A2: 0x6CE8, //CJK UNIFIED IDEOGRAPH - 0xD7A3: 0x795D, //CJK UNIFIED IDEOGRAPH - 0xD7A4: 0x9A7B, //CJK UNIFIED IDEOGRAPH - 0xD7A5: 0x6293, //CJK UNIFIED IDEOGRAPH - 0xD7A6: 0x722A, //CJK UNIFIED IDEOGRAPH - 0xD7A7: 0x62FD, //CJK UNIFIED IDEOGRAPH - 0xD7A8: 0x4E13, //CJK UNIFIED IDEOGRAPH - 0xD7A9: 0x7816, //CJK UNIFIED IDEOGRAPH - 0xD7AA: 0x8F6C, //CJK UNIFIED IDEOGRAPH - 0xD7AB: 0x64B0, //CJK UNIFIED IDEOGRAPH - 0xD7AC: 0x8D5A, //CJK UNIFIED IDEOGRAPH - 0xD7AD: 0x7BC6, //CJK UNIFIED IDEOGRAPH - 0xD7AE: 0x6869, //CJK UNIFIED IDEOGRAPH - 0xD7AF: 0x5E84, //CJK UNIFIED IDEOGRAPH - 0xD7B0: 0x88C5, //CJK UNIFIED IDEOGRAPH - 0xD7B1: 0x5986, //CJK UNIFIED IDEOGRAPH - 0xD7B2: 0x649E, //CJK UNIFIED IDEOGRAPH - 0xD7B3: 0x58EE, //CJK UNIFIED IDEOGRAPH - 0xD7B4: 0x72B6, //CJK UNIFIED IDEOGRAPH - 0xD7B5: 0x690E, //CJK UNIFIED IDEOGRAPH - 0xD7B6: 0x9525, //CJK UNIFIED IDEOGRAPH - 0xD7B7: 0x8FFD, //CJK UNIFIED IDEOGRAPH - 0xD7B8: 0x8D58, //CJK UNIFIED IDEOGRAPH - 0xD7B9: 0x5760, //CJK UNIFIED IDEOGRAPH - 0xD7BA: 0x7F00, //CJK UNIFIED IDEOGRAPH - 0xD7BB: 0x8C06, //CJK UNIFIED IDEOGRAPH - 0xD7BC: 0x51C6, //CJK UNIFIED IDEOGRAPH - 0xD7BD: 0x6349, //CJK UNIFIED IDEOGRAPH - 0xD7BE: 0x62D9, //CJK UNIFIED IDEOGRAPH - 0xD7BF: 0x5353, //CJK UNIFIED IDEOGRAPH - 0xD7C0: 0x684C, //CJK UNIFIED IDEOGRAPH - 0xD7C1: 0x7422, //CJK UNIFIED IDEOGRAPH - 0xD7C2: 0x8301, //CJK UNIFIED IDEOGRAPH - 0xD7C3: 0x914C, //CJK UNIFIED IDEOGRAPH - 0xD7C4: 0x5544, //CJK UNIFIED IDEOGRAPH - 0xD7C5: 0x7740, //CJK UNIFIED IDEOGRAPH - 0xD7C6: 0x707C, //CJK UNIFIED IDEOGRAPH - 0xD7C7: 0x6D4A, //CJK UNIFIED IDEOGRAPH - 0xD7C8: 0x5179, //CJK UNIFIED IDEOGRAPH - 0xD7C9: 0x54A8, //CJK UNIFIED IDEOGRAPH - 0xD7CA: 0x8D44, //CJK UNIFIED IDEOGRAPH - 0xD7CB: 0x59FF, //CJK UNIFIED IDEOGRAPH - 0xD7CC: 0x6ECB, //CJK UNIFIED IDEOGRAPH - 0xD7CD: 0x6DC4, //CJK UNIFIED IDEOGRAPH - 0xD7CE: 0x5B5C, //CJK UNIFIED IDEOGRAPH - 0xD7CF: 0x7D2B, //CJK UNIFIED IDEOGRAPH - 0xD7D0: 0x4ED4, //CJK UNIFIED IDEOGRAPH - 0xD7D1: 0x7C7D, //CJK UNIFIED IDEOGRAPH - 0xD7D2: 0x6ED3, //CJK UNIFIED IDEOGRAPH - 0xD7D3: 0x5B50, //CJK UNIFIED IDEOGRAPH - 0xD7D4: 0x81EA, //CJK UNIFIED IDEOGRAPH - 0xD7D5: 0x6E0D, //CJK UNIFIED IDEOGRAPH - 0xD7D6: 0x5B57, //CJK UNIFIED IDEOGRAPH - 0xD7D7: 0x9B03, //CJK UNIFIED IDEOGRAPH - 0xD7D8: 0x68D5, //CJK UNIFIED IDEOGRAPH - 0xD7D9: 0x8E2A, //CJK UNIFIED IDEOGRAPH - 0xD7DA: 0x5B97, //CJK UNIFIED IDEOGRAPH - 0xD7DB: 0x7EFC, //CJK UNIFIED IDEOGRAPH - 0xD7DC: 0x603B, //CJK UNIFIED IDEOGRAPH - 0xD7DD: 0x7EB5, //CJK UNIFIED IDEOGRAPH - 0xD7DE: 0x90B9, //CJK UNIFIED IDEOGRAPH - 0xD7DF: 0x8D70, //CJK UNIFIED IDEOGRAPH - 0xD7E0: 0x594F, //CJK UNIFIED IDEOGRAPH - 0xD7E1: 0x63CD, //CJK UNIFIED IDEOGRAPH - 0xD7E2: 0x79DF, //CJK UNIFIED IDEOGRAPH - 0xD7E3: 0x8DB3, //CJK UNIFIED IDEOGRAPH - 0xD7E4: 0x5352, //CJK UNIFIED IDEOGRAPH - 0xD7E5: 0x65CF, //CJK UNIFIED IDEOGRAPH - 0xD7E6: 0x7956, //CJK UNIFIED IDEOGRAPH - 0xD7E7: 0x8BC5, //CJK UNIFIED IDEOGRAPH - 0xD7E8: 0x963B, //CJK UNIFIED IDEOGRAPH - 0xD7E9: 0x7EC4, //CJK UNIFIED IDEOGRAPH - 0xD7EA: 0x94BB, //CJK UNIFIED IDEOGRAPH - 0xD7EB: 0x7E82, //CJK UNIFIED IDEOGRAPH - 0xD7EC: 0x5634, //CJK UNIFIED IDEOGRAPH - 0xD7ED: 0x9189, //CJK UNIFIED IDEOGRAPH - 0xD7EE: 0x6700, //CJK UNIFIED IDEOGRAPH - 0xD7EF: 0x7F6A, //CJK UNIFIED IDEOGRAPH - 0xD7F0: 0x5C0A, //CJK UNIFIED IDEOGRAPH - 0xD7F1: 0x9075, //CJK UNIFIED IDEOGRAPH - 0xD7F2: 0x6628, //CJK UNIFIED IDEOGRAPH - 0xD7F3: 0x5DE6, //CJK UNIFIED IDEOGRAPH - 0xD7F4: 0x4F50, //CJK UNIFIED IDEOGRAPH - 0xD7F5: 0x67DE, //CJK UNIFIED IDEOGRAPH - 0xD7F6: 0x505A, //CJK UNIFIED IDEOGRAPH - 0xD7F7: 0x4F5C, //CJK UNIFIED IDEOGRAPH - 0xD7F8: 0x5750, //CJK UNIFIED IDEOGRAPH - 0xD7F9: 0x5EA7, //CJK UNIFIED IDEOGRAPH - 0xD840: 0x8C38, //CJK UNIFIED IDEOGRAPH - 0xD841: 0x8C39, //CJK UNIFIED IDEOGRAPH - 0xD842: 0x8C3A, //CJK UNIFIED IDEOGRAPH - 0xD843: 0x8C3B, //CJK UNIFIED IDEOGRAPH - 0xD844: 0x8C3C, //CJK UNIFIED IDEOGRAPH - 0xD845: 0x8C3D, //CJK UNIFIED IDEOGRAPH - 0xD846: 0x8C3E, //CJK UNIFIED IDEOGRAPH - 0xD847: 0x8C3F, //CJK UNIFIED IDEOGRAPH - 0xD848: 0x8C40, //CJK UNIFIED IDEOGRAPH - 0xD849: 0x8C42, //CJK UNIFIED IDEOGRAPH - 0xD84A: 0x8C43, //CJK UNIFIED IDEOGRAPH - 0xD84B: 0x8C44, //CJK UNIFIED IDEOGRAPH - 0xD84C: 0x8C45, //CJK UNIFIED IDEOGRAPH - 0xD84D: 0x8C48, //CJK UNIFIED IDEOGRAPH - 0xD84E: 0x8C4A, //CJK UNIFIED IDEOGRAPH - 0xD84F: 0x8C4B, //CJK UNIFIED IDEOGRAPH - 0xD850: 0x8C4D, //CJK UNIFIED IDEOGRAPH - 0xD851: 0x8C4E, //CJK UNIFIED IDEOGRAPH - 0xD852: 0x8C4F, //CJK UNIFIED IDEOGRAPH - 0xD853: 0x8C50, //CJK UNIFIED IDEOGRAPH - 0xD854: 0x8C51, //CJK UNIFIED IDEOGRAPH - 0xD855: 0x8C52, //CJK UNIFIED IDEOGRAPH - 0xD856: 0x8C53, //CJK UNIFIED IDEOGRAPH - 0xD857: 0x8C54, //CJK UNIFIED IDEOGRAPH - 0xD858: 0x8C56, //CJK UNIFIED IDEOGRAPH - 0xD859: 0x8C57, //CJK UNIFIED IDEOGRAPH - 0xD85A: 0x8C58, //CJK UNIFIED IDEOGRAPH - 0xD85B: 0x8C59, //CJK UNIFIED IDEOGRAPH - 0xD85C: 0x8C5B, //CJK UNIFIED IDEOGRAPH - 0xD85D: 0x8C5C, //CJK UNIFIED IDEOGRAPH - 0xD85E: 0x8C5D, //CJK UNIFIED IDEOGRAPH - 0xD85F: 0x8C5E, //CJK UNIFIED IDEOGRAPH - 0xD860: 0x8C5F, //CJK UNIFIED IDEOGRAPH - 0xD861: 0x8C60, //CJK UNIFIED IDEOGRAPH - 0xD862: 0x8C63, //CJK UNIFIED IDEOGRAPH - 0xD863: 0x8C64, //CJK UNIFIED IDEOGRAPH - 0xD864: 0x8C65, //CJK UNIFIED IDEOGRAPH - 0xD865: 0x8C66, //CJK UNIFIED IDEOGRAPH - 0xD866: 0x8C67, //CJK UNIFIED IDEOGRAPH - 0xD867: 0x8C68, //CJK UNIFIED IDEOGRAPH - 0xD868: 0x8C69, //CJK UNIFIED IDEOGRAPH - 0xD869: 0x8C6C, //CJK UNIFIED IDEOGRAPH - 0xD86A: 0x8C6D, //CJK UNIFIED IDEOGRAPH - 0xD86B: 0x8C6E, //CJK UNIFIED IDEOGRAPH - 0xD86C: 0x8C6F, //CJK UNIFIED IDEOGRAPH - 0xD86D: 0x8C70, //CJK UNIFIED IDEOGRAPH - 0xD86E: 0x8C71, //CJK UNIFIED IDEOGRAPH - 0xD86F: 0x8C72, //CJK UNIFIED IDEOGRAPH - 0xD870: 0x8C74, //CJK UNIFIED IDEOGRAPH - 0xD871: 0x8C75, //CJK UNIFIED IDEOGRAPH - 0xD872: 0x8C76, //CJK UNIFIED IDEOGRAPH - 0xD873: 0x8C77, //CJK UNIFIED IDEOGRAPH - 0xD874: 0x8C7B, //CJK UNIFIED IDEOGRAPH - 0xD875: 0x8C7C, //CJK UNIFIED IDEOGRAPH - 0xD876: 0x8C7D, //CJK UNIFIED IDEOGRAPH - 0xD877: 0x8C7E, //CJK UNIFIED IDEOGRAPH - 0xD878: 0x8C7F, //CJK UNIFIED IDEOGRAPH - 0xD879: 0x8C80, //CJK UNIFIED IDEOGRAPH - 0xD87A: 0x8C81, //CJK UNIFIED IDEOGRAPH - 0xD87B: 0x8C83, //CJK UNIFIED IDEOGRAPH - 0xD87C: 0x8C84, //CJK UNIFIED IDEOGRAPH - 0xD87D: 0x8C86, //CJK UNIFIED IDEOGRAPH - 0xD87E: 0x8C87, //CJK UNIFIED IDEOGRAPH - 0xD880: 0x8C88, //CJK UNIFIED IDEOGRAPH - 0xD881: 0x8C8B, //CJK UNIFIED IDEOGRAPH - 0xD882: 0x8C8D, //CJK UNIFIED IDEOGRAPH - 0xD883: 0x8C8E, //CJK UNIFIED IDEOGRAPH - 0xD884: 0x8C8F, //CJK UNIFIED IDEOGRAPH - 0xD885: 0x8C90, //CJK UNIFIED IDEOGRAPH - 0xD886: 0x8C91, //CJK UNIFIED IDEOGRAPH - 0xD887: 0x8C92, //CJK UNIFIED IDEOGRAPH - 0xD888: 0x8C93, //CJK UNIFIED IDEOGRAPH - 0xD889: 0x8C95, //CJK UNIFIED IDEOGRAPH - 0xD88A: 0x8C96, //CJK UNIFIED IDEOGRAPH - 0xD88B: 0x8C97, //CJK UNIFIED IDEOGRAPH - 0xD88C: 0x8C99, //CJK UNIFIED IDEOGRAPH - 0xD88D: 0x8C9A, //CJK UNIFIED IDEOGRAPH - 0xD88E: 0x8C9B, //CJK UNIFIED IDEOGRAPH - 0xD88F: 0x8C9C, //CJK UNIFIED IDEOGRAPH - 0xD890: 0x8C9D, //CJK UNIFIED IDEOGRAPH - 0xD891: 0x8C9E, //CJK UNIFIED IDEOGRAPH - 0xD892: 0x8C9F, //CJK UNIFIED IDEOGRAPH - 0xD893: 0x8CA0, //CJK UNIFIED IDEOGRAPH - 0xD894: 0x8CA1, //CJK UNIFIED IDEOGRAPH - 0xD895: 0x8CA2, //CJK UNIFIED IDEOGRAPH - 0xD896: 0x8CA3, //CJK UNIFIED IDEOGRAPH - 0xD897: 0x8CA4, //CJK UNIFIED IDEOGRAPH - 0xD898: 0x8CA5, //CJK UNIFIED IDEOGRAPH - 0xD899: 0x8CA6, //CJK UNIFIED IDEOGRAPH - 0xD89A: 0x8CA7, //CJK UNIFIED IDEOGRAPH - 0xD89B: 0x8CA8, //CJK UNIFIED IDEOGRAPH - 0xD89C: 0x8CA9, //CJK UNIFIED IDEOGRAPH - 0xD89D: 0x8CAA, //CJK UNIFIED IDEOGRAPH - 0xD89E: 0x8CAB, //CJK UNIFIED IDEOGRAPH - 0xD89F: 0x8CAC, //CJK UNIFIED IDEOGRAPH - 0xD8A0: 0x8CAD, //CJK UNIFIED IDEOGRAPH - 0xD8A1: 0x4E8D, //CJK UNIFIED IDEOGRAPH - 0xD8A2: 0x4E0C, //CJK UNIFIED IDEOGRAPH - 0xD8A3: 0x5140, //CJK UNIFIED IDEOGRAPH - 0xD8A4: 0x4E10, //CJK UNIFIED IDEOGRAPH - 0xD8A5: 0x5EFF, //CJK UNIFIED IDEOGRAPH - 0xD8A6: 0x5345, //CJK UNIFIED IDEOGRAPH - 0xD8A7: 0x4E15, //CJK UNIFIED IDEOGRAPH - 0xD8A8: 0x4E98, //CJK UNIFIED IDEOGRAPH - 0xD8A9: 0x4E1E, //CJK UNIFIED IDEOGRAPH - 0xD8AA: 0x9B32, //CJK UNIFIED IDEOGRAPH - 0xD8AB: 0x5B6C, //CJK UNIFIED IDEOGRAPH - 0xD8AC: 0x5669, //CJK UNIFIED IDEOGRAPH - 0xD8AD: 0x4E28, //CJK UNIFIED IDEOGRAPH - 0xD8AE: 0x79BA, //CJK UNIFIED IDEOGRAPH - 0xD8AF: 0x4E3F, //CJK UNIFIED IDEOGRAPH - 0xD8B0: 0x5315, //CJK UNIFIED IDEOGRAPH - 0xD8B1: 0x4E47, //CJK UNIFIED IDEOGRAPH - 0xD8B2: 0x592D, //CJK UNIFIED IDEOGRAPH - 0xD8B3: 0x723B, //CJK UNIFIED IDEOGRAPH - 0xD8B4: 0x536E, //CJK UNIFIED IDEOGRAPH - 0xD8B5: 0x6C10, //CJK UNIFIED IDEOGRAPH - 0xD8B6: 0x56DF, //CJK UNIFIED IDEOGRAPH - 0xD8B7: 0x80E4, //CJK UNIFIED IDEOGRAPH - 0xD8B8: 0x9997, //CJK UNIFIED IDEOGRAPH - 0xD8B9: 0x6BD3, //CJK UNIFIED IDEOGRAPH - 0xD8BA: 0x777E, //CJK UNIFIED IDEOGRAPH - 0xD8BB: 0x9F17, //CJK UNIFIED IDEOGRAPH - 0xD8BC: 0x4E36, //CJK UNIFIED IDEOGRAPH - 0xD8BD: 0x4E9F, //CJK UNIFIED IDEOGRAPH - 0xD8BE: 0x9F10, //CJK UNIFIED IDEOGRAPH - 0xD8BF: 0x4E5C, //CJK UNIFIED IDEOGRAPH - 0xD8C0: 0x4E69, //CJK UNIFIED IDEOGRAPH - 0xD8C1: 0x4E93, //CJK UNIFIED IDEOGRAPH - 0xD8C2: 0x8288, //CJK UNIFIED IDEOGRAPH - 0xD8C3: 0x5B5B, //CJK UNIFIED IDEOGRAPH - 0xD8C4: 0x556C, //CJK UNIFIED IDEOGRAPH - 0xD8C5: 0x560F, //CJK UNIFIED IDEOGRAPH - 0xD8C6: 0x4EC4, //CJK UNIFIED IDEOGRAPH - 0xD8C7: 0x538D, //CJK UNIFIED IDEOGRAPH - 0xD8C8: 0x539D, //CJK UNIFIED IDEOGRAPH - 0xD8C9: 0x53A3, //CJK UNIFIED IDEOGRAPH - 0xD8CA: 0x53A5, //CJK UNIFIED IDEOGRAPH - 0xD8CB: 0x53AE, //CJK UNIFIED IDEOGRAPH - 0xD8CC: 0x9765, //CJK UNIFIED IDEOGRAPH - 0xD8CD: 0x8D5D, //CJK UNIFIED IDEOGRAPH - 0xD8CE: 0x531A, //CJK UNIFIED IDEOGRAPH - 0xD8CF: 0x53F5, //CJK UNIFIED IDEOGRAPH - 0xD8D0: 0x5326, //CJK UNIFIED IDEOGRAPH - 0xD8D1: 0x532E, //CJK UNIFIED IDEOGRAPH - 0xD8D2: 0x533E, //CJK UNIFIED IDEOGRAPH - 0xD8D3: 0x8D5C, //CJK UNIFIED IDEOGRAPH - 0xD8D4: 0x5366, //CJK UNIFIED IDEOGRAPH - 0xD8D5: 0x5363, //CJK UNIFIED IDEOGRAPH - 0xD8D6: 0x5202, //CJK UNIFIED IDEOGRAPH - 0xD8D7: 0x5208, //CJK UNIFIED IDEOGRAPH - 0xD8D8: 0x520E, //CJK UNIFIED IDEOGRAPH - 0xD8D9: 0x522D, //CJK UNIFIED IDEOGRAPH - 0xD8DA: 0x5233, //CJK UNIFIED IDEOGRAPH - 0xD8DB: 0x523F, //CJK UNIFIED IDEOGRAPH - 0xD8DC: 0x5240, //CJK UNIFIED IDEOGRAPH - 0xD8DD: 0x524C, //CJK UNIFIED IDEOGRAPH - 0xD8DE: 0x525E, //CJK UNIFIED IDEOGRAPH - 0xD8DF: 0x5261, //CJK UNIFIED IDEOGRAPH - 0xD8E0: 0x525C, //CJK UNIFIED IDEOGRAPH - 0xD8E1: 0x84AF, //CJK UNIFIED IDEOGRAPH - 0xD8E2: 0x527D, //CJK UNIFIED IDEOGRAPH - 0xD8E3: 0x5282, //CJK UNIFIED IDEOGRAPH - 0xD8E4: 0x5281, //CJK UNIFIED IDEOGRAPH - 0xD8E5: 0x5290, //CJK UNIFIED IDEOGRAPH - 0xD8E6: 0x5293, //CJK UNIFIED IDEOGRAPH - 0xD8E7: 0x5182, //CJK UNIFIED IDEOGRAPH - 0xD8E8: 0x7F54, //CJK UNIFIED IDEOGRAPH - 0xD8E9: 0x4EBB, //CJK UNIFIED IDEOGRAPH - 0xD8EA: 0x4EC3, //CJK UNIFIED IDEOGRAPH - 0xD8EB: 0x4EC9, //CJK UNIFIED IDEOGRAPH - 0xD8EC: 0x4EC2, //CJK UNIFIED IDEOGRAPH - 0xD8ED: 0x4EE8, //CJK UNIFIED IDEOGRAPH - 0xD8EE: 0x4EE1, //CJK UNIFIED IDEOGRAPH - 0xD8EF: 0x4EEB, //CJK UNIFIED IDEOGRAPH - 0xD8F0: 0x4EDE, //CJK UNIFIED IDEOGRAPH - 0xD8F1: 0x4F1B, //CJK UNIFIED IDEOGRAPH - 0xD8F2: 0x4EF3, //CJK UNIFIED IDEOGRAPH - 0xD8F3: 0x4F22, //CJK UNIFIED IDEOGRAPH - 0xD8F4: 0x4F64, //CJK UNIFIED IDEOGRAPH - 0xD8F5: 0x4EF5, //CJK UNIFIED IDEOGRAPH - 0xD8F6: 0x4F25, //CJK UNIFIED IDEOGRAPH - 0xD8F7: 0x4F27, //CJK UNIFIED IDEOGRAPH - 0xD8F8: 0x4F09, //CJK UNIFIED IDEOGRAPH - 0xD8F9: 0x4F2B, //CJK UNIFIED IDEOGRAPH - 0xD8FA: 0x4F5E, //CJK UNIFIED IDEOGRAPH - 0xD8FB: 0x4F67, //CJK UNIFIED IDEOGRAPH - 0xD8FC: 0x6538, //CJK UNIFIED IDEOGRAPH - 0xD8FD: 0x4F5A, //CJK UNIFIED IDEOGRAPH - 0xD8FE: 0x4F5D, //CJK UNIFIED IDEOGRAPH - 0xD940: 0x8CAE, //CJK UNIFIED IDEOGRAPH - 0xD941: 0x8CAF, //CJK UNIFIED IDEOGRAPH - 0xD942: 0x8CB0, //CJK UNIFIED IDEOGRAPH - 0xD943: 0x8CB1, //CJK UNIFIED IDEOGRAPH - 0xD944: 0x8CB2, //CJK UNIFIED IDEOGRAPH - 0xD945: 0x8CB3, //CJK UNIFIED IDEOGRAPH - 0xD946: 0x8CB4, //CJK UNIFIED IDEOGRAPH - 0xD947: 0x8CB5, //CJK UNIFIED IDEOGRAPH - 0xD948: 0x8CB6, //CJK UNIFIED IDEOGRAPH - 0xD949: 0x8CB7, //CJK UNIFIED IDEOGRAPH - 0xD94A: 0x8CB8, //CJK UNIFIED IDEOGRAPH - 0xD94B: 0x8CB9, //CJK UNIFIED IDEOGRAPH - 0xD94C: 0x8CBA, //CJK UNIFIED IDEOGRAPH - 0xD94D: 0x8CBB, //CJK UNIFIED IDEOGRAPH - 0xD94E: 0x8CBC, //CJK UNIFIED IDEOGRAPH - 0xD94F: 0x8CBD, //CJK UNIFIED IDEOGRAPH - 0xD950: 0x8CBE, //CJK UNIFIED IDEOGRAPH - 0xD951: 0x8CBF, //CJK UNIFIED IDEOGRAPH - 0xD952: 0x8CC0, //CJK UNIFIED IDEOGRAPH - 0xD953: 0x8CC1, //CJK UNIFIED IDEOGRAPH - 0xD954: 0x8CC2, //CJK UNIFIED IDEOGRAPH - 0xD955: 0x8CC3, //CJK UNIFIED IDEOGRAPH - 0xD956: 0x8CC4, //CJK UNIFIED IDEOGRAPH - 0xD957: 0x8CC5, //CJK UNIFIED IDEOGRAPH - 0xD958: 0x8CC6, //CJK UNIFIED IDEOGRAPH - 0xD959: 0x8CC7, //CJK UNIFIED IDEOGRAPH - 0xD95A: 0x8CC8, //CJK UNIFIED IDEOGRAPH - 0xD95B: 0x8CC9, //CJK UNIFIED IDEOGRAPH - 0xD95C: 0x8CCA, //CJK UNIFIED IDEOGRAPH - 0xD95D: 0x8CCB, //CJK UNIFIED IDEOGRAPH - 0xD95E: 0x8CCC, //CJK UNIFIED IDEOGRAPH - 0xD95F: 0x8CCD, //CJK UNIFIED IDEOGRAPH - 0xD960: 0x8CCE, //CJK UNIFIED IDEOGRAPH - 0xD961: 0x8CCF, //CJK UNIFIED IDEOGRAPH - 0xD962: 0x8CD0, //CJK UNIFIED IDEOGRAPH - 0xD963: 0x8CD1, //CJK UNIFIED IDEOGRAPH - 0xD964: 0x8CD2, //CJK UNIFIED IDEOGRAPH - 0xD965: 0x8CD3, //CJK UNIFIED IDEOGRAPH - 0xD966: 0x8CD4, //CJK UNIFIED IDEOGRAPH - 0xD967: 0x8CD5, //CJK UNIFIED IDEOGRAPH - 0xD968: 0x8CD6, //CJK UNIFIED IDEOGRAPH - 0xD969: 0x8CD7, //CJK UNIFIED IDEOGRAPH - 0xD96A: 0x8CD8, //CJK UNIFIED IDEOGRAPH - 0xD96B: 0x8CD9, //CJK UNIFIED IDEOGRAPH - 0xD96C: 0x8CDA, //CJK UNIFIED IDEOGRAPH - 0xD96D: 0x8CDB, //CJK UNIFIED IDEOGRAPH - 0xD96E: 0x8CDC, //CJK UNIFIED IDEOGRAPH - 0xD96F: 0x8CDD, //CJK UNIFIED IDEOGRAPH - 0xD970: 0x8CDE, //CJK UNIFIED IDEOGRAPH - 0xD971: 0x8CDF, //CJK UNIFIED IDEOGRAPH - 0xD972: 0x8CE0, //CJK UNIFIED IDEOGRAPH - 0xD973: 0x8CE1, //CJK UNIFIED IDEOGRAPH - 0xD974: 0x8CE2, //CJK UNIFIED IDEOGRAPH - 0xD975: 0x8CE3, //CJK UNIFIED IDEOGRAPH - 0xD976: 0x8CE4, //CJK UNIFIED IDEOGRAPH - 0xD977: 0x8CE5, //CJK UNIFIED IDEOGRAPH - 0xD978: 0x8CE6, //CJK UNIFIED IDEOGRAPH - 0xD979: 0x8CE7, //CJK UNIFIED IDEOGRAPH - 0xD97A: 0x8CE8, //CJK UNIFIED IDEOGRAPH - 0xD97B: 0x8CE9, //CJK UNIFIED IDEOGRAPH - 0xD97C: 0x8CEA, //CJK UNIFIED IDEOGRAPH - 0xD97D: 0x8CEB, //CJK UNIFIED IDEOGRAPH - 0xD97E: 0x8CEC, //CJK UNIFIED IDEOGRAPH - 0xD980: 0x8CED, //CJK UNIFIED IDEOGRAPH - 0xD981: 0x8CEE, //CJK UNIFIED IDEOGRAPH - 0xD982: 0x8CEF, //CJK UNIFIED IDEOGRAPH - 0xD983: 0x8CF0, //CJK UNIFIED IDEOGRAPH - 0xD984: 0x8CF1, //CJK UNIFIED IDEOGRAPH - 0xD985: 0x8CF2, //CJK UNIFIED IDEOGRAPH - 0xD986: 0x8CF3, //CJK UNIFIED IDEOGRAPH - 0xD987: 0x8CF4, //CJK UNIFIED IDEOGRAPH - 0xD988: 0x8CF5, //CJK UNIFIED IDEOGRAPH - 0xD989: 0x8CF6, //CJK UNIFIED IDEOGRAPH - 0xD98A: 0x8CF7, //CJK UNIFIED IDEOGRAPH - 0xD98B: 0x8CF8, //CJK UNIFIED IDEOGRAPH - 0xD98C: 0x8CF9, //CJK UNIFIED IDEOGRAPH - 0xD98D: 0x8CFA, //CJK UNIFIED IDEOGRAPH - 0xD98E: 0x8CFB, //CJK UNIFIED IDEOGRAPH - 0xD98F: 0x8CFC, //CJK UNIFIED IDEOGRAPH - 0xD990: 0x8CFD, //CJK UNIFIED IDEOGRAPH - 0xD991: 0x8CFE, //CJK UNIFIED IDEOGRAPH - 0xD992: 0x8CFF, //CJK UNIFIED IDEOGRAPH - 0xD993: 0x8D00, //CJK UNIFIED IDEOGRAPH - 0xD994: 0x8D01, //CJK UNIFIED IDEOGRAPH - 0xD995: 0x8D02, //CJK UNIFIED IDEOGRAPH - 0xD996: 0x8D03, //CJK UNIFIED IDEOGRAPH - 0xD997: 0x8D04, //CJK UNIFIED IDEOGRAPH - 0xD998: 0x8D05, //CJK UNIFIED IDEOGRAPH - 0xD999: 0x8D06, //CJK UNIFIED IDEOGRAPH - 0xD99A: 0x8D07, //CJK UNIFIED IDEOGRAPH - 0xD99B: 0x8D08, //CJK UNIFIED IDEOGRAPH - 0xD99C: 0x8D09, //CJK UNIFIED IDEOGRAPH - 0xD99D: 0x8D0A, //CJK UNIFIED IDEOGRAPH - 0xD99E: 0x8D0B, //CJK UNIFIED IDEOGRAPH - 0xD99F: 0x8D0C, //CJK UNIFIED IDEOGRAPH - 0xD9A0: 0x8D0D, //CJK UNIFIED IDEOGRAPH - 0xD9A1: 0x4F5F, //CJK UNIFIED IDEOGRAPH - 0xD9A2: 0x4F57, //CJK UNIFIED IDEOGRAPH - 0xD9A3: 0x4F32, //CJK UNIFIED IDEOGRAPH - 0xD9A4: 0x4F3D, //CJK UNIFIED IDEOGRAPH - 0xD9A5: 0x4F76, //CJK UNIFIED IDEOGRAPH - 0xD9A6: 0x4F74, //CJK UNIFIED IDEOGRAPH - 0xD9A7: 0x4F91, //CJK UNIFIED IDEOGRAPH - 0xD9A8: 0x4F89, //CJK UNIFIED IDEOGRAPH - 0xD9A9: 0x4F83, //CJK UNIFIED IDEOGRAPH - 0xD9AA: 0x4F8F, //CJK UNIFIED IDEOGRAPH - 0xD9AB: 0x4F7E, //CJK UNIFIED IDEOGRAPH - 0xD9AC: 0x4F7B, //CJK UNIFIED IDEOGRAPH - 0xD9AD: 0x4FAA, //CJK UNIFIED IDEOGRAPH - 0xD9AE: 0x4F7C, //CJK UNIFIED IDEOGRAPH - 0xD9AF: 0x4FAC, //CJK UNIFIED IDEOGRAPH - 0xD9B0: 0x4F94, //CJK UNIFIED IDEOGRAPH - 0xD9B1: 0x4FE6, //CJK UNIFIED IDEOGRAPH - 0xD9B2: 0x4FE8, //CJK UNIFIED IDEOGRAPH - 0xD9B3: 0x4FEA, //CJK UNIFIED IDEOGRAPH - 0xD9B4: 0x4FC5, //CJK UNIFIED IDEOGRAPH - 0xD9B5: 0x4FDA, //CJK UNIFIED IDEOGRAPH - 0xD9B6: 0x4FE3, //CJK UNIFIED IDEOGRAPH - 0xD9B7: 0x4FDC, //CJK UNIFIED IDEOGRAPH - 0xD9B8: 0x4FD1, //CJK UNIFIED IDEOGRAPH - 0xD9B9: 0x4FDF, //CJK UNIFIED IDEOGRAPH - 0xD9BA: 0x4FF8, //CJK UNIFIED IDEOGRAPH - 0xD9BB: 0x5029, //CJK UNIFIED IDEOGRAPH - 0xD9BC: 0x504C, //CJK UNIFIED IDEOGRAPH - 0xD9BD: 0x4FF3, //CJK UNIFIED IDEOGRAPH - 0xD9BE: 0x502C, //CJK UNIFIED IDEOGRAPH - 0xD9BF: 0x500F, //CJK UNIFIED IDEOGRAPH - 0xD9C0: 0x502E, //CJK UNIFIED IDEOGRAPH - 0xD9C1: 0x502D, //CJK UNIFIED IDEOGRAPH - 0xD9C2: 0x4FFE, //CJK UNIFIED IDEOGRAPH - 0xD9C3: 0x501C, //CJK UNIFIED IDEOGRAPH - 0xD9C4: 0x500C, //CJK UNIFIED IDEOGRAPH - 0xD9C5: 0x5025, //CJK UNIFIED IDEOGRAPH - 0xD9C6: 0x5028, //CJK UNIFIED IDEOGRAPH - 0xD9C7: 0x507E, //CJK UNIFIED IDEOGRAPH - 0xD9C8: 0x5043, //CJK UNIFIED IDEOGRAPH - 0xD9C9: 0x5055, //CJK UNIFIED IDEOGRAPH - 0xD9CA: 0x5048, //CJK UNIFIED IDEOGRAPH - 0xD9CB: 0x504E, //CJK UNIFIED IDEOGRAPH - 0xD9CC: 0x506C, //CJK UNIFIED IDEOGRAPH - 0xD9CD: 0x507B, //CJK UNIFIED IDEOGRAPH - 0xD9CE: 0x50A5, //CJK UNIFIED IDEOGRAPH - 0xD9CF: 0x50A7, //CJK UNIFIED IDEOGRAPH - 0xD9D0: 0x50A9, //CJK UNIFIED IDEOGRAPH - 0xD9D1: 0x50BA, //CJK UNIFIED IDEOGRAPH - 0xD9D2: 0x50D6, //CJK UNIFIED IDEOGRAPH - 0xD9D3: 0x5106, //CJK UNIFIED IDEOGRAPH - 0xD9D4: 0x50ED, //CJK UNIFIED IDEOGRAPH - 0xD9D5: 0x50EC, //CJK UNIFIED IDEOGRAPH - 0xD9D6: 0x50E6, //CJK UNIFIED IDEOGRAPH - 0xD9D7: 0x50EE, //CJK UNIFIED IDEOGRAPH - 0xD9D8: 0x5107, //CJK UNIFIED IDEOGRAPH - 0xD9D9: 0x510B, //CJK UNIFIED IDEOGRAPH - 0xD9DA: 0x4EDD, //CJK UNIFIED IDEOGRAPH - 0xD9DB: 0x6C3D, //CJK UNIFIED IDEOGRAPH - 0xD9DC: 0x4F58, //CJK UNIFIED IDEOGRAPH - 0xD9DD: 0x4F65, //CJK UNIFIED IDEOGRAPH - 0xD9DE: 0x4FCE, //CJK UNIFIED IDEOGRAPH - 0xD9DF: 0x9FA0, //CJK UNIFIED IDEOGRAPH - 0xD9E0: 0x6C46, //CJK UNIFIED IDEOGRAPH - 0xD9E1: 0x7C74, //CJK UNIFIED IDEOGRAPH - 0xD9E2: 0x516E, //CJK UNIFIED IDEOGRAPH - 0xD9E3: 0x5DFD, //CJK UNIFIED IDEOGRAPH - 0xD9E4: 0x9EC9, //CJK UNIFIED IDEOGRAPH - 0xD9E5: 0x9998, //CJK UNIFIED IDEOGRAPH - 0xD9E6: 0x5181, //CJK UNIFIED IDEOGRAPH - 0xD9E7: 0x5914, //CJK UNIFIED IDEOGRAPH - 0xD9E8: 0x52F9, //CJK UNIFIED IDEOGRAPH - 0xD9E9: 0x530D, //CJK UNIFIED IDEOGRAPH - 0xD9EA: 0x8A07, //CJK UNIFIED IDEOGRAPH - 0xD9EB: 0x5310, //CJK UNIFIED IDEOGRAPH - 0xD9EC: 0x51EB, //CJK UNIFIED IDEOGRAPH - 0xD9ED: 0x5919, //CJK UNIFIED IDEOGRAPH - 0xD9EE: 0x5155, //CJK UNIFIED IDEOGRAPH - 0xD9EF: 0x4EA0, //CJK UNIFIED IDEOGRAPH - 0xD9F0: 0x5156, //CJK UNIFIED IDEOGRAPH - 0xD9F1: 0x4EB3, //CJK UNIFIED IDEOGRAPH - 0xD9F2: 0x886E, //CJK UNIFIED IDEOGRAPH - 0xD9F3: 0x88A4, //CJK UNIFIED IDEOGRAPH - 0xD9F4: 0x4EB5, //CJK UNIFIED IDEOGRAPH - 0xD9F5: 0x8114, //CJK UNIFIED IDEOGRAPH - 0xD9F6: 0x88D2, //CJK UNIFIED IDEOGRAPH - 0xD9F7: 0x7980, //CJK UNIFIED IDEOGRAPH - 0xD9F8: 0x5B34, //CJK UNIFIED IDEOGRAPH - 0xD9F9: 0x8803, //CJK UNIFIED IDEOGRAPH - 0xD9FA: 0x7FB8, //CJK UNIFIED IDEOGRAPH - 0xD9FB: 0x51AB, //CJK UNIFIED IDEOGRAPH - 0xD9FC: 0x51B1, //CJK UNIFIED IDEOGRAPH - 0xD9FD: 0x51BD, //CJK UNIFIED IDEOGRAPH - 0xD9FE: 0x51BC, //CJK UNIFIED IDEOGRAPH - 0xDA40: 0x8D0E, //CJK UNIFIED IDEOGRAPH - 0xDA41: 0x8D0F, //CJK UNIFIED IDEOGRAPH - 0xDA42: 0x8D10, //CJK UNIFIED IDEOGRAPH - 0xDA43: 0x8D11, //CJK UNIFIED IDEOGRAPH - 0xDA44: 0x8D12, //CJK UNIFIED IDEOGRAPH - 0xDA45: 0x8D13, //CJK UNIFIED IDEOGRAPH - 0xDA46: 0x8D14, //CJK UNIFIED IDEOGRAPH - 0xDA47: 0x8D15, //CJK UNIFIED IDEOGRAPH - 0xDA48: 0x8D16, //CJK UNIFIED IDEOGRAPH - 0xDA49: 0x8D17, //CJK UNIFIED IDEOGRAPH - 0xDA4A: 0x8D18, //CJK UNIFIED IDEOGRAPH - 0xDA4B: 0x8D19, //CJK UNIFIED IDEOGRAPH - 0xDA4C: 0x8D1A, //CJK UNIFIED IDEOGRAPH - 0xDA4D: 0x8D1B, //CJK UNIFIED IDEOGRAPH - 0xDA4E: 0x8D1C, //CJK UNIFIED IDEOGRAPH - 0xDA4F: 0x8D20, //CJK UNIFIED IDEOGRAPH - 0xDA50: 0x8D51, //CJK UNIFIED IDEOGRAPH - 0xDA51: 0x8D52, //CJK UNIFIED IDEOGRAPH - 0xDA52: 0x8D57, //CJK UNIFIED IDEOGRAPH - 0xDA53: 0x8D5F, //CJK UNIFIED IDEOGRAPH - 0xDA54: 0x8D65, //CJK UNIFIED IDEOGRAPH - 0xDA55: 0x8D68, //CJK UNIFIED IDEOGRAPH - 0xDA56: 0x8D69, //CJK UNIFIED IDEOGRAPH - 0xDA57: 0x8D6A, //CJK UNIFIED IDEOGRAPH - 0xDA58: 0x8D6C, //CJK UNIFIED IDEOGRAPH - 0xDA59: 0x8D6E, //CJK UNIFIED IDEOGRAPH - 0xDA5A: 0x8D6F, //CJK UNIFIED IDEOGRAPH - 0xDA5B: 0x8D71, //CJK UNIFIED IDEOGRAPH - 0xDA5C: 0x8D72, //CJK UNIFIED IDEOGRAPH - 0xDA5D: 0x8D78, //CJK UNIFIED IDEOGRAPH - 0xDA5E: 0x8D79, //CJK UNIFIED IDEOGRAPH - 0xDA5F: 0x8D7A, //CJK UNIFIED IDEOGRAPH - 0xDA60: 0x8D7B, //CJK UNIFIED IDEOGRAPH - 0xDA61: 0x8D7C, //CJK UNIFIED IDEOGRAPH - 0xDA62: 0x8D7D, //CJK UNIFIED IDEOGRAPH - 0xDA63: 0x8D7E, //CJK UNIFIED IDEOGRAPH - 0xDA64: 0x8D7F, //CJK UNIFIED IDEOGRAPH - 0xDA65: 0x8D80, //CJK UNIFIED IDEOGRAPH - 0xDA66: 0x8D82, //CJK UNIFIED IDEOGRAPH - 0xDA67: 0x8D83, //CJK UNIFIED IDEOGRAPH - 0xDA68: 0x8D86, //CJK UNIFIED IDEOGRAPH - 0xDA69: 0x8D87, //CJK UNIFIED IDEOGRAPH - 0xDA6A: 0x8D88, //CJK UNIFIED IDEOGRAPH - 0xDA6B: 0x8D89, //CJK UNIFIED IDEOGRAPH - 0xDA6C: 0x8D8C, //CJK UNIFIED IDEOGRAPH - 0xDA6D: 0x8D8D, //CJK UNIFIED IDEOGRAPH - 0xDA6E: 0x8D8E, //CJK UNIFIED IDEOGRAPH - 0xDA6F: 0x8D8F, //CJK UNIFIED IDEOGRAPH - 0xDA70: 0x8D90, //CJK UNIFIED IDEOGRAPH - 0xDA71: 0x8D92, //CJK UNIFIED IDEOGRAPH - 0xDA72: 0x8D93, //CJK UNIFIED IDEOGRAPH - 0xDA73: 0x8D95, //CJK UNIFIED IDEOGRAPH - 0xDA74: 0x8D96, //CJK UNIFIED IDEOGRAPH - 0xDA75: 0x8D97, //CJK UNIFIED IDEOGRAPH - 0xDA76: 0x8D98, //CJK UNIFIED IDEOGRAPH - 0xDA77: 0x8D99, //CJK UNIFIED IDEOGRAPH - 0xDA78: 0x8D9A, //CJK UNIFIED IDEOGRAPH - 0xDA79: 0x8D9B, //CJK UNIFIED IDEOGRAPH - 0xDA7A: 0x8D9C, //CJK UNIFIED IDEOGRAPH - 0xDA7B: 0x8D9D, //CJK UNIFIED IDEOGRAPH - 0xDA7C: 0x8D9E, //CJK UNIFIED IDEOGRAPH - 0xDA7D: 0x8DA0, //CJK UNIFIED IDEOGRAPH - 0xDA7E: 0x8DA1, //CJK UNIFIED IDEOGRAPH - 0xDA80: 0x8DA2, //CJK UNIFIED IDEOGRAPH - 0xDA81: 0x8DA4, //CJK UNIFIED IDEOGRAPH - 0xDA82: 0x8DA5, //CJK UNIFIED IDEOGRAPH - 0xDA83: 0x8DA6, //CJK UNIFIED IDEOGRAPH - 0xDA84: 0x8DA7, //CJK UNIFIED IDEOGRAPH - 0xDA85: 0x8DA8, //CJK UNIFIED IDEOGRAPH - 0xDA86: 0x8DA9, //CJK UNIFIED IDEOGRAPH - 0xDA87: 0x8DAA, //CJK UNIFIED IDEOGRAPH - 0xDA88: 0x8DAB, //CJK UNIFIED IDEOGRAPH - 0xDA89: 0x8DAC, //CJK UNIFIED IDEOGRAPH - 0xDA8A: 0x8DAD, //CJK UNIFIED IDEOGRAPH - 0xDA8B: 0x8DAE, //CJK UNIFIED IDEOGRAPH - 0xDA8C: 0x8DAF, //CJK UNIFIED IDEOGRAPH - 0xDA8D: 0x8DB0, //CJK UNIFIED IDEOGRAPH - 0xDA8E: 0x8DB2, //CJK UNIFIED IDEOGRAPH - 0xDA8F: 0x8DB6, //CJK UNIFIED IDEOGRAPH - 0xDA90: 0x8DB7, //CJK UNIFIED IDEOGRAPH - 0xDA91: 0x8DB9, //CJK UNIFIED IDEOGRAPH - 0xDA92: 0x8DBB, //CJK UNIFIED IDEOGRAPH - 0xDA93: 0x8DBD, //CJK UNIFIED IDEOGRAPH - 0xDA94: 0x8DC0, //CJK UNIFIED IDEOGRAPH - 0xDA95: 0x8DC1, //CJK UNIFIED IDEOGRAPH - 0xDA96: 0x8DC2, //CJK UNIFIED IDEOGRAPH - 0xDA97: 0x8DC5, //CJK UNIFIED IDEOGRAPH - 0xDA98: 0x8DC7, //CJK UNIFIED IDEOGRAPH - 0xDA99: 0x8DC8, //CJK UNIFIED IDEOGRAPH - 0xDA9A: 0x8DC9, //CJK UNIFIED IDEOGRAPH - 0xDA9B: 0x8DCA, //CJK UNIFIED IDEOGRAPH - 0xDA9C: 0x8DCD, //CJK UNIFIED IDEOGRAPH - 0xDA9D: 0x8DD0, //CJK UNIFIED IDEOGRAPH - 0xDA9E: 0x8DD2, //CJK UNIFIED IDEOGRAPH - 0xDA9F: 0x8DD3, //CJK UNIFIED IDEOGRAPH - 0xDAA0: 0x8DD4, //CJK UNIFIED IDEOGRAPH - 0xDAA1: 0x51C7, //CJK UNIFIED IDEOGRAPH - 0xDAA2: 0x5196, //CJK UNIFIED IDEOGRAPH - 0xDAA3: 0x51A2, //CJK UNIFIED IDEOGRAPH - 0xDAA4: 0x51A5, //CJK UNIFIED IDEOGRAPH - 0xDAA5: 0x8BA0, //CJK UNIFIED IDEOGRAPH - 0xDAA6: 0x8BA6, //CJK UNIFIED IDEOGRAPH - 0xDAA7: 0x8BA7, //CJK UNIFIED IDEOGRAPH - 0xDAA8: 0x8BAA, //CJK UNIFIED IDEOGRAPH - 0xDAA9: 0x8BB4, //CJK UNIFIED IDEOGRAPH - 0xDAAA: 0x8BB5, //CJK UNIFIED IDEOGRAPH - 0xDAAB: 0x8BB7, //CJK UNIFIED IDEOGRAPH - 0xDAAC: 0x8BC2, //CJK UNIFIED IDEOGRAPH - 0xDAAD: 0x8BC3, //CJK UNIFIED IDEOGRAPH - 0xDAAE: 0x8BCB, //CJK UNIFIED IDEOGRAPH - 0xDAAF: 0x8BCF, //CJK UNIFIED IDEOGRAPH - 0xDAB0: 0x8BCE, //CJK UNIFIED IDEOGRAPH - 0xDAB1: 0x8BD2, //CJK UNIFIED IDEOGRAPH - 0xDAB2: 0x8BD3, //CJK UNIFIED IDEOGRAPH - 0xDAB3: 0x8BD4, //CJK UNIFIED IDEOGRAPH - 0xDAB4: 0x8BD6, //CJK UNIFIED IDEOGRAPH - 0xDAB5: 0x8BD8, //CJK UNIFIED IDEOGRAPH - 0xDAB6: 0x8BD9, //CJK UNIFIED IDEOGRAPH - 0xDAB7: 0x8BDC, //CJK UNIFIED IDEOGRAPH - 0xDAB8: 0x8BDF, //CJK UNIFIED IDEOGRAPH - 0xDAB9: 0x8BE0, //CJK UNIFIED IDEOGRAPH - 0xDABA: 0x8BE4, //CJK UNIFIED IDEOGRAPH - 0xDABB: 0x8BE8, //CJK UNIFIED IDEOGRAPH - 0xDABC: 0x8BE9, //CJK UNIFIED IDEOGRAPH - 0xDABD: 0x8BEE, //CJK UNIFIED IDEOGRAPH - 0xDABE: 0x8BF0, //CJK UNIFIED IDEOGRAPH - 0xDABF: 0x8BF3, //CJK UNIFIED IDEOGRAPH - 0xDAC0: 0x8BF6, //CJK UNIFIED IDEOGRAPH - 0xDAC1: 0x8BF9, //CJK UNIFIED IDEOGRAPH - 0xDAC2: 0x8BFC, //CJK UNIFIED IDEOGRAPH - 0xDAC3: 0x8BFF, //CJK UNIFIED IDEOGRAPH - 0xDAC4: 0x8C00, //CJK UNIFIED IDEOGRAPH - 0xDAC5: 0x8C02, //CJK UNIFIED IDEOGRAPH - 0xDAC6: 0x8C04, //CJK UNIFIED IDEOGRAPH - 0xDAC7: 0x8C07, //CJK UNIFIED IDEOGRAPH - 0xDAC8: 0x8C0C, //CJK UNIFIED IDEOGRAPH - 0xDAC9: 0x8C0F, //CJK UNIFIED IDEOGRAPH - 0xDACA: 0x8C11, //CJK UNIFIED IDEOGRAPH - 0xDACB: 0x8C12, //CJK UNIFIED IDEOGRAPH - 0xDACC: 0x8C14, //CJK UNIFIED IDEOGRAPH - 0xDACD: 0x8C15, //CJK UNIFIED IDEOGRAPH - 0xDACE: 0x8C16, //CJK UNIFIED IDEOGRAPH - 0xDACF: 0x8C19, //CJK UNIFIED IDEOGRAPH - 0xDAD0: 0x8C1B, //CJK UNIFIED IDEOGRAPH - 0xDAD1: 0x8C18, //CJK UNIFIED IDEOGRAPH - 0xDAD2: 0x8C1D, //CJK UNIFIED IDEOGRAPH - 0xDAD3: 0x8C1F, //CJK UNIFIED IDEOGRAPH - 0xDAD4: 0x8C20, //CJK UNIFIED IDEOGRAPH - 0xDAD5: 0x8C21, //CJK UNIFIED IDEOGRAPH - 0xDAD6: 0x8C25, //CJK UNIFIED IDEOGRAPH - 0xDAD7: 0x8C27, //CJK UNIFIED IDEOGRAPH - 0xDAD8: 0x8C2A, //CJK UNIFIED IDEOGRAPH - 0xDAD9: 0x8C2B, //CJK UNIFIED IDEOGRAPH - 0xDADA: 0x8C2E, //CJK UNIFIED IDEOGRAPH - 0xDADB: 0x8C2F, //CJK UNIFIED IDEOGRAPH - 0xDADC: 0x8C32, //CJK UNIFIED IDEOGRAPH - 0xDADD: 0x8C33, //CJK UNIFIED IDEOGRAPH - 0xDADE: 0x8C35, //CJK UNIFIED IDEOGRAPH - 0xDADF: 0x8C36, //CJK UNIFIED IDEOGRAPH - 0xDAE0: 0x5369, //CJK UNIFIED IDEOGRAPH - 0xDAE1: 0x537A, //CJK UNIFIED IDEOGRAPH - 0xDAE2: 0x961D, //CJK UNIFIED IDEOGRAPH - 0xDAE3: 0x9622, //CJK UNIFIED IDEOGRAPH - 0xDAE4: 0x9621, //CJK UNIFIED IDEOGRAPH - 0xDAE5: 0x9631, //CJK UNIFIED IDEOGRAPH - 0xDAE6: 0x962A, //CJK UNIFIED IDEOGRAPH - 0xDAE7: 0x963D, //CJK UNIFIED IDEOGRAPH - 0xDAE8: 0x963C, //CJK UNIFIED IDEOGRAPH - 0xDAE9: 0x9642, //CJK UNIFIED IDEOGRAPH - 0xDAEA: 0x9649, //CJK UNIFIED IDEOGRAPH - 0xDAEB: 0x9654, //CJK UNIFIED IDEOGRAPH - 0xDAEC: 0x965F, //CJK UNIFIED IDEOGRAPH - 0xDAED: 0x9667, //CJK UNIFIED IDEOGRAPH - 0xDAEE: 0x966C, //CJK UNIFIED IDEOGRAPH - 0xDAEF: 0x9672, //CJK UNIFIED IDEOGRAPH - 0xDAF0: 0x9674, //CJK UNIFIED IDEOGRAPH - 0xDAF1: 0x9688, //CJK UNIFIED IDEOGRAPH - 0xDAF2: 0x968D, //CJK UNIFIED IDEOGRAPH - 0xDAF3: 0x9697, //CJK UNIFIED IDEOGRAPH - 0xDAF4: 0x96B0, //CJK UNIFIED IDEOGRAPH - 0xDAF5: 0x9097, //CJK UNIFIED IDEOGRAPH - 0xDAF6: 0x909B, //CJK UNIFIED IDEOGRAPH - 0xDAF7: 0x909D, //CJK UNIFIED IDEOGRAPH - 0xDAF8: 0x9099, //CJK UNIFIED IDEOGRAPH - 0xDAF9: 0x90AC, //CJK UNIFIED IDEOGRAPH - 0xDAFA: 0x90A1, //CJK UNIFIED IDEOGRAPH - 0xDAFB: 0x90B4, //CJK UNIFIED IDEOGRAPH - 0xDAFC: 0x90B3, //CJK UNIFIED IDEOGRAPH - 0xDAFD: 0x90B6, //CJK UNIFIED IDEOGRAPH - 0xDAFE: 0x90BA, //CJK UNIFIED IDEOGRAPH - 0xDB40: 0x8DD5, //CJK UNIFIED IDEOGRAPH - 0xDB41: 0x8DD8, //CJK UNIFIED IDEOGRAPH - 0xDB42: 0x8DD9, //CJK UNIFIED IDEOGRAPH - 0xDB43: 0x8DDC, //CJK UNIFIED IDEOGRAPH - 0xDB44: 0x8DE0, //CJK UNIFIED IDEOGRAPH - 0xDB45: 0x8DE1, //CJK UNIFIED IDEOGRAPH - 0xDB46: 0x8DE2, //CJK UNIFIED IDEOGRAPH - 0xDB47: 0x8DE5, //CJK UNIFIED IDEOGRAPH - 0xDB48: 0x8DE6, //CJK UNIFIED IDEOGRAPH - 0xDB49: 0x8DE7, //CJK UNIFIED IDEOGRAPH - 0xDB4A: 0x8DE9, //CJK UNIFIED IDEOGRAPH - 0xDB4B: 0x8DED, //CJK UNIFIED IDEOGRAPH - 0xDB4C: 0x8DEE, //CJK UNIFIED IDEOGRAPH - 0xDB4D: 0x8DF0, //CJK UNIFIED IDEOGRAPH - 0xDB4E: 0x8DF1, //CJK UNIFIED IDEOGRAPH - 0xDB4F: 0x8DF2, //CJK UNIFIED IDEOGRAPH - 0xDB50: 0x8DF4, //CJK UNIFIED IDEOGRAPH - 0xDB51: 0x8DF6, //CJK UNIFIED IDEOGRAPH - 0xDB52: 0x8DFC, //CJK UNIFIED IDEOGRAPH - 0xDB53: 0x8DFE, //CJK UNIFIED IDEOGRAPH - 0xDB54: 0x8DFF, //CJK UNIFIED IDEOGRAPH - 0xDB55: 0x8E00, //CJK UNIFIED IDEOGRAPH - 0xDB56: 0x8E01, //CJK UNIFIED IDEOGRAPH - 0xDB57: 0x8E02, //CJK UNIFIED IDEOGRAPH - 0xDB58: 0x8E03, //CJK UNIFIED IDEOGRAPH - 0xDB59: 0x8E04, //CJK UNIFIED IDEOGRAPH - 0xDB5A: 0x8E06, //CJK UNIFIED IDEOGRAPH - 0xDB5B: 0x8E07, //CJK UNIFIED IDEOGRAPH - 0xDB5C: 0x8E08, //CJK UNIFIED IDEOGRAPH - 0xDB5D: 0x8E0B, //CJK UNIFIED IDEOGRAPH - 0xDB5E: 0x8E0D, //CJK UNIFIED IDEOGRAPH - 0xDB5F: 0x8E0E, //CJK UNIFIED IDEOGRAPH - 0xDB60: 0x8E10, //CJK UNIFIED IDEOGRAPH - 0xDB61: 0x8E11, //CJK UNIFIED IDEOGRAPH - 0xDB62: 0x8E12, //CJK UNIFIED IDEOGRAPH - 0xDB63: 0x8E13, //CJK UNIFIED IDEOGRAPH - 0xDB64: 0x8E15, //CJK UNIFIED IDEOGRAPH - 0xDB65: 0x8E16, //CJK UNIFIED IDEOGRAPH - 0xDB66: 0x8E17, //CJK UNIFIED IDEOGRAPH - 0xDB67: 0x8E18, //CJK UNIFIED IDEOGRAPH - 0xDB68: 0x8E19, //CJK UNIFIED IDEOGRAPH - 0xDB69: 0x8E1A, //CJK UNIFIED IDEOGRAPH - 0xDB6A: 0x8E1B, //CJK UNIFIED IDEOGRAPH - 0xDB6B: 0x8E1C, //CJK UNIFIED IDEOGRAPH - 0xDB6C: 0x8E20, //CJK UNIFIED IDEOGRAPH - 0xDB6D: 0x8E21, //CJK UNIFIED IDEOGRAPH - 0xDB6E: 0x8E24, //CJK UNIFIED IDEOGRAPH - 0xDB6F: 0x8E25, //CJK UNIFIED IDEOGRAPH - 0xDB70: 0x8E26, //CJK UNIFIED IDEOGRAPH - 0xDB71: 0x8E27, //CJK UNIFIED IDEOGRAPH - 0xDB72: 0x8E28, //CJK UNIFIED IDEOGRAPH - 0xDB73: 0x8E2B, //CJK UNIFIED IDEOGRAPH - 0xDB74: 0x8E2D, //CJK UNIFIED IDEOGRAPH - 0xDB75: 0x8E30, //CJK UNIFIED IDEOGRAPH - 0xDB76: 0x8E32, //CJK UNIFIED IDEOGRAPH - 0xDB77: 0x8E33, //CJK UNIFIED IDEOGRAPH - 0xDB78: 0x8E34, //CJK UNIFIED IDEOGRAPH - 0xDB79: 0x8E36, //CJK UNIFIED IDEOGRAPH - 0xDB7A: 0x8E37, //CJK UNIFIED IDEOGRAPH - 0xDB7B: 0x8E38, //CJK UNIFIED IDEOGRAPH - 0xDB7C: 0x8E3B, //CJK UNIFIED IDEOGRAPH - 0xDB7D: 0x8E3C, //CJK UNIFIED IDEOGRAPH - 0xDB7E: 0x8E3E, //CJK UNIFIED IDEOGRAPH - 0xDB80: 0x8E3F, //CJK UNIFIED IDEOGRAPH - 0xDB81: 0x8E43, //CJK UNIFIED IDEOGRAPH - 0xDB82: 0x8E45, //CJK UNIFIED IDEOGRAPH - 0xDB83: 0x8E46, //CJK UNIFIED IDEOGRAPH - 0xDB84: 0x8E4C, //CJK UNIFIED IDEOGRAPH - 0xDB85: 0x8E4D, //CJK UNIFIED IDEOGRAPH - 0xDB86: 0x8E4E, //CJK UNIFIED IDEOGRAPH - 0xDB87: 0x8E4F, //CJK UNIFIED IDEOGRAPH - 0xDB88: 0x8E50, //CJK UNIFIED IDEOGRAPH - 0xDB89: 0x8E53, //CJK UNIFIED IDEOGRAPH - 0xDB8A: 0x8E54, //CJK UNIFIED IDEOGRAPH - 0xDB8B: 0x8E55, //CJK UNIFIED IDEOGRAPH - 0xDB8C: 0x8E56, //CJK UNIFIED IDEOGRAPH - 0xDB8D: 0x8E57, //CJK UNIFIED IDEOGRAPH - 0xDB8E: 0x8E58, //CJK UNIFIED IDEOGRAPH - 0xDB8F: 0x8E5A, //CJK UNIFIED IDEOGRAPH - 0xDB90: 0x8E5B, //CJK UNIFIED IDEOGRAPH - 0xDB91: 0x8E5C, //CJK UNIFIED IDEOGRAPH - 0xDB92: 0x8E5D, //CJK UNIFIED IDEOGRAPH - 0xDB93: 0x8E5E, //CJK UNIFIED IDEOGRAPH - 0xDB94: 0x8E5F, //CJK UNIFIED IDEOGRAPH - 0xDB95: 0x8E60, //CJK UNIFIED IDEOGRAPH - 0xDB96: 0x8E61, //CJK UNIFIED IDEOGRAPH - 0xDB97: 0x8E62, //CJK UNIFIED IDEOGRAPH - 0xDB98: 0x8E63, //CJK UNIFIED IDEOGRAPH - 0xDB99: 0x8E64, //CJK UNIFIED IDEOGRAPH - 0xDB9A: 0x8E65, //CJK UNIFIED IDEOGRAPH - 0xDB9B: 0x8E67, //CJK UNIFIED IDEOGRAPH - 0xDB9C: 0x8E68, //CJK UNIFIED IDEOGRAPH - 0xDB9D: 0x8E6A, //CJK UNIFIED IDEOGRAPH - 0xDB9E: 0x8E6B, //CJK UNIFIED IDEOGRAPH - 0xDB9F: 0x8E6E, //CJK UNIFIED IDEOGRAPH - 0xDBA0: 0x8E71, //CJK UNIFIED IDEOGRAPH - 0xDBA1: 0x90B8, //CJK UNIFIED IDEOGRAPH - 0xDBA2: 0x90B0, //CJK UNIFIED IDEOGRAPH - 0xDBA3: 0x90CF, //CJK UNIFIED IDEOGRAPH - 0xDBA4: 0x90C5, //CJK UNIFIED IDEOGRAPH - 0xDBA5: 0x90BE, //CJK UNIFIED IDEOGRAPH - 0xDBA6: 0x90D0, //CJK UNIFIED IDEOGRAPH - 0xDBA7: 0x90C4, //CJK UNIFIED IDEOGRAPH - 0xDBA8: 0x90C7, //CJK UNIFIED IDEOGRAPH - 0xDBA9: 0x90D3, //CJK UNIFIED IDEOGRAPH - 0xDBAA: 0x90E6, //CJK UNIFIED IDEOGRAPH - 0xDBAB: 0x90E2, //CJK UNIFIED IDEOGRAPH - 0xDBAC: 0x90DC, //CJK UNIFIED IDEOGRAPH - 0xDBAD: 0x90D7, //CJK UNIFIED IDEOGRAPH - 0xDBAE: 0x90DB, //CJK UNIFIED IDEOGRAPH - 0xDBAF: 0x90EB, //CJK UNIFIED IDEOGRAPH - 0xDBB0: 0x90EF, //CJK UNIFIED IDEOGRAPH - 0xDBB1: 0x90FE, //CJK UNIFIED IDEOGRAPH - 0xDBB2: 0x9104, //CJK UNIFIED IDEOGRAPH - 0xDBB3: 0x9122, //CJK UNIFIED IDEOGRAPH - 0xDBB4: 0x911E, //CJK UNIFIED IDEOGRAPH - 0xDBB5: 0x9123, //CJK UNIFIED IDEOGRAPH - 0xDBB6: 0x9131, //CJK UNIFIED IDEOGRAPH - 0xDBB7: 0x912F, //CJK UNIFIED IDEOGRAPH - 0xDBB8: 0x9139, //CJK UNIFIED IDEOGRAPH - 0xDBB9: 0x9143, //CJK UNIFIED IDEOGRAPH - 0xDBBA: 0x9146, //CJK UNIFIED IDEOGRAPH - 0xDBBB: 0x520D, //CJK UNIFIED IDEOGRAPH - 0xDBBC: 0x5942, //CJK UNIFIED IDEOGRAPH - 0xDBBD: 0x52A2, //CJK UNIFIED IDEOGRAPH - 0xDBBE: 0x52AC, //CJK UNIFIED IDEOGRAPH - 0xDBBF: 0x52AD, //CJK UNIFIED IDEOGRAPH - 0xDBC0: 0x52BE, //CJK UNIFIED IDEOGRAPH - 0xDBC1: 0x54FF, //CJK UNIFIED IDEOGRAPH - 0xDBC2: 0x52D0, //CJK UNIFIED IDEOGRAPH - 0xDBC3: 0x52D6, //CJK UNIFIED IDEOGRAPH - 0xDBC4: 0x52F0, //CJK UNIFIED IDEOGRAPH - 0xDBC5: 0x53DF, //CJK UNIFIED IDEOGRAPH - 0xDBC6: 0x71EE, //CJK UNIFIED IDEOGRAPH - 0xDBC7: 0x77CD, //CJK UNIFIED IDEOGRAPH - 0xDBC8: 0x5EF4, //CJK UNIFIED IDEOGRAPH - 0xDBC9: 0x51F5, //CJK UNIFIED IDEOGRAPH - 0xDBCA: 0x51FC, //CJK UNIFIED IDEOGRAPH - 0xDBCB: 0x9B2F, //CJK UNIFIED IDEOGRAPH - 0xDBCC: 0x53B6, //CJK UNIFIED IDEOGRAPH - 0xDBCD: 0x5F01, //CJK UNIFIED IDEOGRAPH - 0xDBCE: 0x755A, //CJK UNIFIED IDEOGRAPH - 0xDBCF: 0x5DEF, //CJK UNIFIED IDEOGRAPH - 0xDBD0: 0x574C, //CJK UNIFIED IDEOGRAPH - 0xDBD1: 0x57A9, //CJK UNIFIED IDEOGRAPH - 0xDBD2: 0x57A1, //CJK UNIFIED IDEOGRAPH - 0xDBD3: 0x587E, //CJK UNIFIED IDEOGRAPH - 0xDBD4: 0x58BC, //CJK UNIFIED IDEOGRAPH - 0xDBD5: 0x58C5, //CJK UNIFIED IDEOGRAPH - 0xDBD6: 0x58D1, //CJK UNIFIED IDEOGRAPH - 0xDBD7: 0x5729, //CJK UNIFIED IDEOGRAPH - 0xDBD8: 0x572C, //CJK UNIFIED IDEOGRAPH - 0xDBD9: 0x572A, //CJK UNIFIED IDEOGRAPH - 0xDBDA: 0x5733, //CJK UNIFIED IDEOGRAPH - 0xDBDB: 0x5739, //CJK UNIFIED IDEOGRAPH - 0xDBDC: 0x572E, //CJK UNIFIED IDEOGRAPH - 0xDBDD: 0x572F, //CJK UNIFIED IDEOGRAPH - 0xDBDE: 0x575C, //CJK UNIFIED IDEOGRAPH - 0xDBDF: 0x573B, //CJK UNIFIED IDEOGRAPH - 0xDBE0: 0x5742, //CJK UNIFIED IDEOGRAPH - 0xDBE1: 0x5769, //CJK UNIFIED IDEOGRAPH - 0xDBE2: 0x5785, //CJK UNIFIED IDEOGRAPH - 0xDBE3: 0x576B, //CJK UNIFIED IDEOGRAPH - 0xDBE4: 0x5786, //CJK UNIFIED IDEOGRAPH - 0xDBE5: 0x577C, //CJK UNIFIED IDEOGRAPH - 0xDBE6: 0x577B, //CJK UNIFIED IDEOGRAPH - 0xDBE7: 0x5768, //CJK UNIFIED IDEOGRAPH - 0xDBE8: 0x576D, //CJK UNIFIED IDEOGRAPH - 0xDBE9: 0x5776, //CJK UNIFIED IDEOGRAPH - 0xDBEA: 0x5773, //CJK UNIFIED IDEOGRAPH - 0xDBEB: 0x57AD, //CJK UNIFIED IDEOGRAPH - 0xDBEC: 0x57A4, //CJK UNIFIED IDEOGRAPH - 0xDBED: 0x578C, //CJK UNIFIED IDEOGRAPH - 0xDBEE: 0x57B2, //CJK UNIFIED IDEOGRAPH - 0xDBEF: 0x57CF, //CJK UNIFIED IDEOGRAPH - 0xDBF0: 0x57A7, //CJK UNIFIED IDEOGRAPH - 0xDBF1: 0x57B4, //CJK UNIFIED IDEOGRAPH - 0xDBF2: 0x5793, //CJK UNIFIED IDEOGRAPH - 0xDBF3: 0x57A0, //CJK UNIFIED IDEOGRAPH - 0xDBF4: 0x57D5, //CJK UNIFIED IDEOGRAPH - 0xDBF5: 0x57D8, //CJK UNIFIED IDEOGRAPH - 0xDBF6: 0x57DA, //CJK UNIFIED IDEOGRAPH - 0xDBF7: 0x57D9, //CJK UNIFIED IDEOGRAPH - 0xDBF8: 0x57D2, //CJK UNIFIED IDEOGRAPH - 0xDBF9: 0x57B8, //CJK UNIFIED IDEOGRAPH - 0xDBFA: 0x57F4, //CJK UNIFIED IDEOGRAPH - 0xDBFB: 0x57EF, //CJK UNIFIED IDEOGRAPH - 0xDBFC: 0x57F8, //CJK UNIFIED IDEOGRAPH - 0xDBFD: 0x57E4, //CJK UNIFIED IDEOGRAPH - 0xDBFE: 0x57DD, //CJK UNIFIED IDEOGRAPH - 0xDC40: 0x8E73, //CJK UNIFIED IDEOGRAPH - 0xDC41: 0x8E75, //CJK UNIFIED IDEOGRAPH - 0xDC42: 0x8E77, //CJK UNIFIED IDEOGRAPH - 0xDC43: 0x8E78, //CJK UNIFIED IDEOGRAPH - 0xDC44: 0x8E79, //CJK UNIFIED IDEOGRAPH - 0xDC45: 0x8E7A, //CJK UNIFIED IDEOGRAPH - 0xDC46: 0x8E7B, //CJK UNIFIED IDEOGRAPH - 0xDC47: 0x8E7D, //CJK UNIFIED IDEOGRAPH - 0xDC48: 0x8E7E, //CJK UNIFIED IDEOGRAPH - 0xDC49: 0x8E80, //CJK UNIFIED IDEOGRAPH - 0xDC4A: 0x8E82, //CJK UNIFIED IDEOGRAPH - 0xDC4B: 0x8E83, //CJK UNIFIED IDEOGRAPH - 0xDC4C: 0x8E84, //CJK UNIFIED IDEOGRAPH - 0xDC4D: 0x8E86, //CJK UNIFIED IDEOGRAPH - 0xDC4E: 0x8E88, //CJK UNIFIED IDEOGRAPH - 0xDC4F: 0x8E89, //CJK UNIFIED IDEOGRAPH - 0xDC50: 0x8E8A, //CJK UNIFIED IDEOGRAPH - 0xDC51: 0x8E8B, //CJK UNIFIED IDEOGRAPH - 0xDC52: 0x8E8C, //CJK UNIFIED IDEOGRAPH - 0xDC53: 0x8E8D, //CJK UNIFIED IDEOGRAPH - 0xDC54: 0x8E8E, //CJK UNIFIED IDEOGRAPH - 0xDC55: 0x8E91, //CJK UNIFIED IDEOGRAPH - 0xDC56: 0x8E92, //CJK UNIFIED IDEOGRAPH - 0xDC57: 0x8E93, //CJK UNIFIED IDEOGRAPH - 0xDC58: 0x8E95, //CJK UNIFIED IDEOGRAPH - 0xDC59: 0x8E96, //CJK UNIFIED IDEOGRAPH - 0xDC5A: 0x8E97, //CJK UNIFIED IDEOGRAPH - 0xDC5B: 0x8E98, //CJK UNIFIED IDEOGRAPH - 0xDC5C: 0x8E99, //CJK UNIFIED IDEOGRAPH - 0xDC5D: 0x8E9A, //CJK UNIFIED IDEOGRAPH - 0xDC5E: 0x8E9B, //CJK UNIFIED IDEOGRAPH - 0xDC5F: 0x8E9D, //CJK UNIFIED IDEOGRAPH - 0xDC60: 0x8E9F, //CJK UNIFIED IDEOGRAPH - 0xDC61: 0x8EA0, //CJK UNIFIED IDEOGRAPH - 0xDC62: 0x8EA1, //CJK UNIFIED IDEOGRAPH - 0xDC63: 0x8EA2, //CJK UNIFIED IDEOGRAPH - 0xDC64: 0x8EA3, //CJK UNIFIED IDEOGRAPH - 0xDC65: 0x8EA4, //CJK UNIFIED IDEOGRAPH - 0xDC66: 0x8EA5, //CJK UNIFIED IDEOGRAPH - 0xDC67: 0x8EA6, //CJK UNIFIED IDEOGRAPH - 0xDC68: 0x8EA7, //CJK UNIFIED IDEOGRAPH - 0xDC69: 0x8EA8, //CJK UNIFIED IDEOGRAPH - 0xDC6A: 0x8EA9, //CJK UNIFIED IDEOGRAPH - 0xDC6B: 0x8EAA, //CJK UNIFIED IDEOGRAPH - 0xDC6C: 0x8EAD, //CJK UNIFIED IDEOGRAPH - 0xDC6D: 0x8EAE, //CJK UNIFIED IDEOGRAPH - 0xDC6E: 0x8EB0, //CJK UNIFIED IDEOGRAPH - 0xDC6F: 0x8EB1, //CJK UNIFIED IDEOGRAPH - 0xDC70: 0x8EB3, //CJK UNIFIED IDEOGRAPH - 0xDC71: 0x8EB4, //CJK UNIFIED IDEOGRAPH - 0xDC72: 0x8EB5, //CJK UNIFIED IDEOGRAPH - 0xDC73: 0x8EB6, //CJK UNIFIED IDEOGRAPH - 0xDC74: 0x8EB7, //CJK UNIFIED IDEOGRAPH - 0xDC75: 0x8EB8, //CJK UNIFIED IDEOGRAPH - 0xDC76: 0x8EB9, //CJK UNIFIED IDEOGRAPH - 0xDC77: 0x8EBB, //CJK UNIFIED IDEOGRAPH - 0xDC78: 0x8EBC, //CJK UNIFIED IDEOGRAPH - 0xDC79: 0x8EBD, //CJK UNIFIED IDEOGRAPH - 0xDC7A: 0x8EBE, //CJK UNIFIED IDEOGRAPH - 0xDC7B: 0x8EBF, //CJK UNIFIED IDEOGRAPH - 0xDC7C: 0x8EC0, //CJK UNIFIED IDEOGRAPH - 0xDC7D: 0x8EC1, //CJK UNIFIED IDEOGRAPH - 0xDC7E: 0x8EC2, //CJK UNIFIED IDEOGRAPH - 0xDC80: 0x8EC3, //CJK UNIFIED IDEOGRAPH - 0xDC81: 0x8EC4, //CJK UNIFIED IDEOGRAPH - 0xDC82: 0x8EC5, //CJK UNIFIED IDEOGRAPH - 0xDC83: 0x8EC6, //CJK UNIFIED IDEOGRAPH - 0xDC84: 0x8EC7, //CJK UNIFIED IDEOGRAPH - 0xDC85: 0x8EC8, //CJK UNIFIED IDEOGRAPH - 0xDC86: 0x8EC9, //CJK UNIFIED IDEOGRAPH - 0xDC87: 0x8ECA, //CJK UNIFIED IDEOGRAPH - 0xDC88: 0x8ECB, //CJK UNIFIED IDEOGRAPH - 0xDC89: 0x8ECC, //CJK UNIFIED IDEOGRAPH - 0xDC8A: 0x8ECD, //CJK UNIFIED IDEOGRAPH - 0xDC8B: 0x8ECF, //CJK UNIFIED IDEOGRAPH - 0xDC8C: 0x8ED0, //CJK UNIFIED IDEOGRAPH - 0xDC8D: 0x8ED1, //CJK UNIFIED IDEOGRAPH - 0xDC8E: 0x8ED2, //CJK UNIFIED IDEOGRAPH - 0xDC8F: 0x8ED3, //CJK UNIFIED IDEOGRAPH - 0xDC90: 0x8ED4, //CJK UNIFIED IDEOGRAPH - 0xDC91: 0x8ED5, //CJK UNIFIED IDEOGRAPH - 0xDC92: 0x8ED6, //CJK UNIFIED IDEOGRAPH - 0xDC93: 0x8ED7, //CJK UNIFIED IDEOGRAPH - 0xDC94: 0x8ED8, //CJK UNIFIED IDEOGRAPH - 0xDC95: 0x8ED9, //CJK UNIFIED IDEOGRAPH - 0xDC96: 0x8EDA, //CJK UNIFIED IDEOGRAPH - 0xDC97: 0x8EDB, //CJK UNIFIED IDEOGRAPH - 0xDC98: 0x8EDC, //CJK UNIFIED IDEOGRAPH - 0xDC99: 0x8EDD, //CJK UNIFIED IDEOGRAPH - 0xDC9A: 0x8EDE, //CJK UNIFIED IDEOGRAPH - 0xDC9B: 0x8EDF, //CJK UNIFIED IDEOGRAPH - 0xDC9C: 0x8EE0, //CJK UNIFIED IDEOGRAPH - 0xDC9D: 0x8EE1, //CJK UNIFIED IDEOGRAPH - 0xDC9E: 0x8EE2, //CJK UNIFIED IDEOGRAPH - 0xDC9F: 0x8EE3, //CJK UNIFIED IDEOGRAPH - 0xDCA0: 0x8EE4, //CJK UNIFIED IDEOGRAPH - 0xDCA1: 0x580B, //CJK UNIFIED IDEOGRAPH - 0xDCA2: 0x580D, //CJK UNIFIED IDEOGRAPH - 0xDCA3: 0x57FD, //CJK UNIFIED IDEOGRAPH - 0xDCA4: 0x57ED, //CJK UNIFIED IDEOGRAPH - 0xDCA5: 0x5800, //CJK UNIFIED IDEOGRAPH - 0xDCA6: 0x581E, //CJK UNIFIED IDEOGRAPH - 0xDCA7: 0x5819, //CJK UNIFIED IDEOGRAPH - 0xDCA8: 0x5844, //CJK UNIFIED IDEOGRAPH - 0xDCA9: 0x5820, //CJK UNIFIED IDEOGRAPH - 0xDCAA: 0x5865, //CJK UNIFIED IDEOGRAPH - 0xDCAB: 0x586C, //CJK UNIFIED IDEOGRAPH - 0xDCAC: 0x5881, //CJK UNIFIED IDEOGRAPH - 0xDCAD: 0x5889, //CJK UNIFIED IDEOGRAPH - 0xDCAE: 0x589A, //CJK UNIFIED IDEOGRAPH - 0xDCAF: 0x5880, //CJK UNIFIED IDEOGRAPH - 0xDCB0: 0x99A8, //CJK UNIFIED IDEOGRAPH - 0xDCB1: 0x9F19, //CJK UNIFIED IDEOGRAPH - 0xDCB2: 0x61FF, //CJK UNIFIED IDEOGRAPH - 0xDCB3: 0x8279, //CJK UNIFIED IDEOGRAPH - 0xDCB4: 0x827D, //CJK UNIFIED IDEOGRAPH - 0xDCB5: 0x827F, //CJK UNIFIED IDEOGRAPH - 0xDCB6: 0x828F, //CJK UNIFIED IDEOGRAPH - 0xDCB7: 0x828A, //CJK UNIFIED IDEOGRAPH - 0xDCB8: 0x82A8, //CJK UNIFIED IDEOGRAPH - 0xDCB9: 0x8284, //CJK UNIFIED IDEOGRAPH - 0xDCBA: 0x828E, //CJK UNIFIED IDEOGRAPH - 0xDCBB: 0x8291, //CJK UNIFIED IDEOGRAPH - 0xDCBC: 0x8297, //CJK UNIFIED IDEOGRAPH - 0xDCBD: 0x8299, //CJK UNIFIED IDEOGRAPH - 0xDCBE: 0x82AB, //CJK UNIFIED IDEOGRAPH - 0xDCBF: 0x82B8, //CJK UNIFIED IDEOGRAPH - 0xDCC0: 0x82BE, //CJK UNIFIED IDEOGRAPH - 0xDCC1: 0x82B0, //CJK UNIFIED IDEOGRAPH - 0xDCC2: 0x82C8, //CJK UNIFIED IDEOGRAPH - 0xDCC3: 0x82CA, //CJK UNIFIED IDEOGRAPH - 0xDCC4: 0x82E3, //CJK UNIFIED IDEOGRAPH - 0xDCC5: 0x8298, //CJK UNIFIED IDEOGRAPH - 0xDCC6: 0x82B7, //CJK UNIFIED IDEOGRAPH - 0xDCC7: 0x82AE, //CJK UNIFIED IDEOGRAPH - 0xDCC8: 0x82CB, //CJK UNIFIED IDEOGRAPH - 0xDCC9: 0x82CC, //CJK UNIFIED IDEOGRAPH - 0xDCCA: 0x82C1, //CJK UNIFIED IDEOGRAPH - 0xDCCB: 0x82A9, //CJK UNIFIED IDEOGRAPH - 0xDCCC: 0x82B4, //CJK UNIFIED IDEOGRAPH - 0xDCCD: 0x82A1, //CJK UNIFIED IDEOGRAPH - 0xDCCE: 0x82AA, //CJK UNIFIED IDEOGRAPH - 0xDCCF: 0x829F, //CJK UNIFIED IDEOGRAPH - 0xDCD0: 0x82C4, //CJK UNIFIED IDEOGRAPH - 0xDCD1: 0x82CE, //CJK UNIFIED IDEOGRAPH - 0xDCD2: 0x82A4, //CJK UNIFIED IDEOGRAPH - 0xDCD3: 0x82E1, //CJK UNIFIED IDEOGRAPH - 0xDCD4: 0x8309, //CJK UNIFIED IDEOGRAPH - 0xDCD5: 0x82F7, //CJK UNIFIED IDEOGRAPH - 0xDCD6: 0x82E4, //CJK UNIFIED IDEOGRAPH - 0xDCD7: 0x830F, //CJK UNIFIED IDEOGRAPH - 0xDCD8: 0x8307, //CJK UNIFIED IDEOGRAPH - 0xDCD9: 0x82DC, //CJK UNIFIED IDEOGRAPH - 0xDCDA: 0x82F4, //CJK UNIFIED IDEOGRAPH - 0xDCDB: 0x82D2, //CJK UNIFIED IDEOGRAPH - 0xDCDC: 0x82D8, //CJK UNIFIED IDEOGRAPH - 0xDCDD: 0x830C, //CJK UNIFIED IDEOGRAPH - 0xDCDE: 0x82FB, //CJK UNIFIED IDEOGRAPH - 0xDCDF: 0x82D3, //CJK UNIFIED IDEOGRAPH - 0xDCE0: 0x8311, //CJK UNIFIED IDEOGRAPH - 0xDCE1: 0x831A, //CJK UNIFIED IDEOGRAPH - 0xDCE2: 0x8306, //CJK UNIFIED IDEOGRAPH - 0xDCE3: 0x8314, //CJK UNIFIED IDEOGRAPH - 0xDCE4: 0x8315, //CJK UNIFIED IDEOGRAPH - 0xDCE5: 0x82E0, //CJK UNIFIED IDEOGRAPH - 0xDCE6: 0x82D5, //CJK UNIFIED IDEOGRAPH - 0xDCE7: 0x831C, //CJK UNIFIED IDEOGRAPH - 0xDCE8: 0x8351, //CJK UNIFIED IDEOGRAPH - 0xDCE9: 0x835B, //CJK UNIFIED IDEOGRAPH - 0xDCEA: 0x835C, //CJK UNIFIED IDEOGRAPH - 0xDCEB: 0x8308, //CJK UNIFIED IDEOGRAPH - 0xDCEC: 0x8392, //CJK UNIFIED IDEOGRAPH - 0xDCED: 0x833C, //CJK UNIFIED IDEOGRAPH - 0xDCEE: 0x8334, //CJK UNIFIED IDEOGRAPH - 0xDCEF: 0x8331, //CJK UNIFIED IDEOGRAPH - 0xDCF0: 0x839B, //CJK UNIFIED IDEOGRAPH - 0xDCF1: 0x835E, //CJK UNIFIED IDEOGRAPH - 0xDCF2: 0x832F, //CJK UNIFIED IDEOGRAPH - 0xDCF3: 0x834F, //CJK UNIFIED IDEOGRAPH - 0xDCF4: 0x8347, //CJK UNIFIED IDEOGRAPH - 0xDCF5: 0x8343, //CJK UNIFIED IDEOGRAPH - 0xDCF6: 0x835F, //CJK UNIFIED IDEOGRAPH - 0xDCF7: 0x8340, //CJK UNIFIED IDEOGRAPH - 0xDCF8: 0x8317, //CJK UNIFIED IDEOGRAPH - 0xDCF9: 0x8360, //CJK UNIFIED IDEOGRAPH - 0xDCFA: 0x832D, //CJK UNIFIED IDEOGRAPH - 0xDCFB: 0x833A, //CJK UNIFIED IDEOGRAPH - 0xDCFC: 0x8333, //CJK UNIFIED IDEOGRAPH - 0xDCFD: 0x8366, //CJK UNIFIED IDEOGRAPH - 0xDCFE: 0x8365, //CJK UNIFIED IDEOGRAPH - 0xDD40: 0x8EE5, //CJK UNIFIED IDEOGRAPH - 0xDD41: 0x8EE6, //CJK UNIFIED IDEOGRAPH - 0xDD42: 0x8EE7, //CJK UNIFIED IDEOGRAPH - 0xDD43: 0x8EE8, //CJK UNIFIED IDEOGRAPH - 0xDD44: 0x8EE9, //CJK UNIFIED IDEOGRAPH - 0xDD45: 0x8EEA, //CJK UNIFIED IDEOGRAPH - 0xDD46: 0x8EEB, //CJK UNIFIED IDEOGRAPH - 0xDD47: 0x8EEC, //CJK UNIFIED IDEOGRAPH - 0xDD48: 0x8EED, //CJK UNIFIED IDEOGRAPH - 0xDD49: 0x8EEE, //CJK UNIFIED IDEOGRAPH - 0xDD4A: 0x8EEF, //CJK UNIFIED IDEOGRAPH - 0xDD4B: 0x8EF0, //CJK UNIFIED IDEOGRAPH - 0xDD4C: 0x8EF1, //CJK UNIFIED IDEOGRAPH - 0xDD4D: 0x8EF2, //CJK UNIFIED IDEOGRAPH - 0xDD4E: 0x8EF3, //CJK UNIFIED IDEOGRAPH - 0xDD4F: 0x8EF4, //CJK UNIFIED IDEOGRAPH - 0xDD50: 0x8EF5, //CJK UNIFIED IDEOGRAPH - 0xDD51: 0x8EF6, //CJK UNIFIED IDEOGRAPH - 0xDD52: 0x8EF7, //CJK UNIFIED IDEOGRAPH - 0xDD53: 0x8EF8, //CJK UNIFIED IDEOGRAPH - 0xDD54: 0x8EF9, //CJK UNIFIED IDEOGRAPH - 0xDD55: 0x8EFA, //CJK UNIFIED IDEOGRAPH - 0xDD56: 0x8EFB, //CJK UNIFIED IDEOGRAPH - 0xDD57: 0x8EFC, //CJK UNIFIED IDEOGRAPH - 0xDD58: 0x8EFD, //CJK UNIFIED IDEOGRAPH - 0xDD59: 0x8EFE, //CJK UNIFIED IDEOGRAPH - 0xDD5A: 0x8EFF, //CJK UNIFIED IDEOGRAPH - 0xDD5B: 0x8F00, //CJK UNIFIED IDEOGRAPH - 0xDD5C: 0x8F01, //CJK UNIFIED IDEOGRAPH - 0xDD5D: 0x8F02, //CJK UNIFIED IDEOGRAPH - 0xDD5E: 0x8F03, //CJK UNIFIED IDEOGRAPH - 0xDD5F: 0x8F04, //CJK UNIFIED IDEOGRAPH - 0xDD60: 0x8F05, //CJK UNIFIED IDEOGRAPH - 0xDD61: 0x8F06, //CJK UNIFIED IDEOGRAPH - 0xDD62: 0x8F07, //CJK UNIFIED IDEOGRAPH - 0xDD63: 0x8F08, //CJK UNIFIED IDEOGRAPH - 0xDD64: 0x8F09, //CJK UNIFIED IDEOGRAPH - 0xDD65: 0x8F0A, //CJK UNIFIED IDEOGRAPH - 0xDD66: 0x8F0B, //CJK UNIFIED IDEOGRAPH - 0xDD67: 0x8F0C, //CJK UNIFIED IDEOGRAPH - 0xDD68: 0x8F0D, //CJK UNIFIED IDEOGRAPH - 0xDD69: 0x8F0E, //CJK UNIFIED IDEOGRAPH - 0xDD6A: 0x8F0F, //CJK UNIFIED IDEOGRAPH - 0xDD6B: 0x8F10, //CJK UNIFIED IDEOGRAPH - 0xDD6C: 0x8F11, //CJK UNIFIED IDEOGRAPH - 0xDD6D: 0x8F12, //CJK UNIFIED IDEOGRAPH - 0xDD6E: 0x8F13, //CJK UNIFIED IDEOGRAPH - 0xDD6F: 0x8F14, //CJK UNIFIED IDEOGRAPH - 0xDD70: 0x8F15, //CJK UNIFIED IDEOGRAPH - 0xDD71: 0x8F16, //CJK UNIFIED IDEOGRAPH - 0xDD72: 0x8F17, //CJK UNIFIED IDEOGRAPH - 0xDD73: 0x8F18, //CJK UNIFIED IDEOGRAPH - 0xDD74: 0x8F19, //CJK UNIFIED IDEOGRAPH - 0xDD75: 0x8F1A, //CJK UNIFIED IDEOGRAPH - 0xDD76: 0x8F1B, //CJK UNIFIED IDEOGRAPH - 0xDD77: 0x8F1C, //CJK UNIFIED IDEOGRAPH - 0xDD78: 0x8F1D, //CJK UNIFIED IDEOGRAPH - 0xDD79: 0x8F1E, //CJK UNIFIED IDEOGRAPH - 0xDD7A: 0x8F1F, //CJK UNIFIED IDEOGRAPH - 0xDD7B: 0x8F20, //CJK UNIFIED IDEOGRAPH - 0xDD7C: 0x8F21, //CJK UNIFIED IDEOGRAPH - 0xDD7D: 0x8F22, //CJK UNIFIED IDEOGRAPH - 0xDD7E: 0x8F23, //CJK UNIFIED IDEOGRAPH - 0xDD80: 0x8F24, //CJK UNIFIED IDEOGRAPH - 0xDD81: 0x8F25, //CJK UNIFIED IDEOGRAPH - 0xDD82: 0x8F26, //CJK UNIFIED IDEOGRAPH - 0xDD83: 0x8F27, //CJK UNIFIED IDEOGRAPH - 0xDD84: 0x8F28, //CJK UNIFIED IDEOGRAPH - 0xDD85: 0x8F29, //CJK UNIFIED IDEOGRAPH - 0xDD86: 0x8F2A, //CJK UNIFIED IDEOGRAPH - 0xDD87: 0x8F2B, //CJK UNIFIED IDEOGRAPH - 0xDD88: 0x8F2C, //CJK UNIFIED IDEOGRAPH - 0xDD89: 0x8F2D, //CJK UNIFIED IDEOGRAPH - 0xDD8A: 0x8F2E, //CJK UNIFIED IDEOGRAPH - 0xDD8B: 0x8F2F, //CJK UNIFIED IDEOGRAPH - 0xDD8C: 0x8F30, //CJK UNIFIED IDEOGRAPH - 0xDD8D: 0x8F31, //CJK UNIFIED IDEOGRAPH - 0xDD8E: 0x8F32, //CJK UNIFIED IDEOGRAPH - 0xDD8F: 0x8F33, //CJK UNIFIED IDEOGRAPH - 0xDD90: 0x8F34, //CJK UNIFIED IDEOGRAPH - 0xDD91: 0x8F35, //CJK UNIFIED IDEOGRAPH - 0xDD92: 0x8F36, //CJK UNIFIED IDEOGRAPH - 0xDD93: 0x8F37, //CJK UNIFIED IDEOGRAPH - 0xDD94: 0x8F38, //CJK UNIFIED IDEOGRAPH - 0xDD95: 0x8F39, //CJK UNIFIED IDEOGRAPH - 0xDD96: 0x8F3A, //CJK UNIFIED IDEOGRAPH - 0xDD97: 0x8F3B, //CJK UNIFIED IDEOGRAPH - 0xDD98: 0x8F3C, //CJK UNIFIED IDEOGRAPH - 0xDD99: 0x8F3D, //CJK UNIFIED IDEOGRAPH - 0xDD9A: 0x8F3E, //CJK UNIFIED IDEOGRAPH - 0xDD9B: 0x8F3F, //CJK UNIFIED IDEOGRAPH - 0xDD9C: 0x8F40, //CJK UNIFIED IDEOGRAPH - 0xDD9D: 0x8F41, //CJK UNIFIED IDEOGRAPH - 0xDD9E: 0x8F42, //CJK UNIFIED IDEOGRAPH - 0xDD9F: 0x8F43, //CJK UNIFIED IDEOGRAPH - 0xDDA0: 0x8F44, //CJK UNIFIED IDEOGRAPH - 0xDDA1: 0x8368, //CJK UNIFIED IDEOGRAPH - 0xDDA2: 0x831B, //CJK UNIFIED IDEOGRAPH - 0xDDA3: 0x8369, //CJK UNIFIED IDEOGRAPH - 0xDDA4: 0x836C, //CJK UNIFIED IDEOGRAPH - 0xDDA5: 0x836A, //CJK UNIFIED IDEOGRAPH - 0xDDA6: 0x836D, //CJK UNIFIED IDEOGRAPH - 0xDDA7: 0x836E, //CJK UNIFIED IDEOGRAPH - 0xDDA8: 0x83B0, //CJK UNIFIED IDEOGRAPH - 0xDDA9: 0x8378, //CJK UNIFIED IDEOGRAPH - 0xDDAA: 0x83B3, //CJK UNIFIED IDEOGRAPH - 0xDDAB: 0x83B4, //CJK UNIFIED IDEOGRAPH - 0xDDAC: 0x83A0, //CJK UNIFIED IDEOGRAPH - 0xDDAD: 0x83AA, //CJK UNIFIED IDEOGRAPH - 0xDDAE: 0x8393, //CJK UNIFIED IDEOGRAPH - 0xDDAF: 0x839C, //CJK UNIFIED IDEOGRAPH - 0xDDB0: 0x8385, //CJK UNIFIED IDEOGRAPH - 0xDDB1: 0x837C, //CJK UNIFIED IDEOGRAPH - 0xDDB2: 0x83B6, //CJK UNIFIED IDEOGRAPH - 0xDDB3: 0x83A9, //CJK UNIFIED IDEOGRAPH - 0xDDB4: 0x837D, //CJK UNIFIED IDEOGRAPH - 0xDDB5: 0x83B8, //CJK UNIFIED IDEOGRAPH - 0xDDB6: 0x837B, //CJK UNIFIED IDEOGRAPH - 0xDDB7: 0x8398, //CJK UNIFIED IDEOGRAPH - 0xDDB8: 0x839E, //CJK UNIFIED IDEOGRAPH - 0xDDB9: 0x83A8, //CJK UNIFIED IDEOGRAPH - 0xDDBA: 0x83BA, //CJK UNIFIED IDEOGRAPH - 0xDDBB: 0x83BC, //CJK UNIFIED IDEOGRAPH - 0xDDBC: 0x83C1, //CJK UNIFIED IDEOGRAPH - 0xDDBD: 0x8401, //CJK UNIFIED IDEOGRAPH - 0xDDBE: 0x83E5, //CJK UNIFIED IDEOGRAPH - 0xDDBF: 0x83D8, //CJK UNIFIED IDEOGRAPH - 0xDDC0: 0x5807, //CJK UNIFIED IDEOGRAPH - 0xDDC1: 0x8418, //CJK UNIFIED IDEOGRAPH - 0xDDC2: 0x840B, //CJK UNIFIED IDEOGRAPH - 0xDDC3: 0x83DD, //CJK UNIFIED IDEOGRAPH - 0xDDC4: 0x83FD, //CJK UNIFIED IDEOGRAPH - 0xDDC5: 0x83D6, //CJK UNIFIED IDEOGRAPH - 0xDDC6: 0x841C, //CJK UNIFIED IDEOGRAPH - 0xDDC7: 0x8438, //CJK UNIFIED IDEOGRAPH - 0xDDC8: 0x8411, //CJK UNIFIED IDEOGRAPH - 0xDDC9: 0x8406, //CJK UNIFIED IDEOGRAPH - 0xDDCA: 0x83D4, //CJK UNIFIED IDEOGRAPH - 0xDDCB: 0x83DF, //CJK UNIFIED IDEOGRAPH - 0xDDCC: 0x840F, //CJK UNIFIED IDEOGRAPH - 0xDDCD: 0x8403, //CJK UNIFIED IDEOGRAPH - 0xDDCE: 0x83F8, //CJK UNIFIED IDEOGRAPH - 0xDDCF: 0x83F9, //CJK UNIFIED IDEOGRAPH - 0xDDD0: 0x83EA, //CJK UNIFIED IDEOGRAPH - 0xDDD1: 0x83C5, //CJK UNIFIED IDEOGRAPH - 0xDDD2: 0x83C0, //CJK UNIFIED IDEOGRAPH - 0xDDD3: 0x8426, //CJK UNIFIED IDEOGRAPH - 0xDDD4: 0x83F0, //CJK UNIFIED IDEOGRAPH - 0xDDD5: 0x83E1, //CJK UNIFIED IDEOGRAPH - 0xDDD6: 0x845C, //CJK UNIFIED IDEOGRAPH - 0xDDD7: 0x8451, //CJK UNIFIED IDEOGRAPH - 0xDDD8: 0x845A, //CJK UNIFIED IDEOGRAPH - 0xDDD9: 0x8459, //CJK UNIFIED IDEOGRAPH - 0xDDDA: 0x8473, //CJK UNIFIED IDEOGRAPH - 0xDDDB: 0x8487, //CJK UNIFIED IDEOGRAPH - 0xDDDC: 0x8488, //CJK UNIFIED IDEOGRAPH - 0xDDDD: 0x847A, //CJK UNIFIED IDEOGRAPH - 0xDDDE: 0x8489, //CJK UNIFIED IDEOGRAPH - 0xDDDF: 0x8478, //CJK UNIFIED IDEOGRAPH - 0xDDE0: 0x843C, //CJK UNIFIED IDEOGRAPH - 0xDDE1: 0x8446, //CJK UNIFIED IDEOGRAPH - 0xDDE2: 0x8469, //CJK UNIFIED IDEOGRAPH - 0xDDE3: 0x8476, //CJK UNIFIED IDEOGRAPH - 0xDDE4: 0x848C, //CJK UNIFIED IDEOGRAPH - 0xDDE5: 0x848E, //CJK UNIFIED IDEOGRAPH - 0xDDE6: 0x8431, //CJK UNIFIED IDEOGRAPH - 0xDDE7: 0x846D, //CJK UNIFIED IDEOGRAPH - 0xDDE8: 0x84C1, //CJK UNIFIED IDEOGRAPH - 0xDDE9: 0x84CD, //CJK UNIFIED IDEOGRAPH - 0xDDEA: 0x84D0, //CJK UNIFIED IDEOGRAPH - 0xDDEB: 0x84E6, //CJK UNIFIED IDEOGRAPH - 0xDDEC: 0x84BD, //CJK UNIFIED IDEOGRAPH - 0xDDED: 0x84D3, //CJK UNIFIED IDEOGRAPH - 0xDDEE: 0x84CA, //CJK UNIFIED IDEOGRAPH - 0xDDEF: 0x84BF, //CJK UNIFIED IDEOGRAPH - 0xDDF0: 0x84BA, //CJK UNIFIED IDEOGRAPH - 0xDDF1: 0x84E0, //CJK UNIFIED IDEOGRAPH - 0xDDF2: 0x84A1, //CJK UNIFIED IDEOGRAPH - 0xDDF3: 0x84B9, //CJK UNIFIED IDEOGRAPH - 0xDDF4: 0x84B4, //CJK UNIFIED IDEOGRAPH - 0xDDF5: 0x8497, //CJK UNIFIED IDEOGRAPH - 0xDDF6: 0x84E5, //CJK UNIFIED IDEOGRAPH - 0xDDF7: 0x84E3, //CJK UNIFIED IDEOGRAPH - 0xDDF8: 0x850C, //CJK UNIFIED IDEOGRAPH - 0xDDF9: 0x750D, //CJK UNIFIED IDEOGRAPH - 0xDDFA: 0x8538, //CJK UNIFIED IDEOGRAPH - 0xDDFB: 0x84F0, //CJK UNIFIED IDEOGRAPH - 0xDDFC: 0x8539, //CJK UNIFIED IDEOGRAPH - 0xDDFD: 0x851F, //CJK UNIFIED IDEOGRAPH - 0xDDFE: 0x853A, //CJK UNIFIED IDEOGRAPH - 0xDE40: 0x8F45, //CJK UNIFIED IDEOGRAPH - 0xDE41: 0x8F46, //CJK UNIFIED IDEOGRAPH - 0xDE42: 0x8F47, //CJK UNIFIED IDEOGRAPH - 0xDE43: 0x8F48, //CJK UNIFIED IDEOGRAPH - 0xDE44: 0x8F49, //CJK UNIFIED IDEOGRAPH - 0xDE45: 0x8F4A, //CJK UNIFIED IDEOGRAPH - 0xDE46: 0x8F4B, //CJK UNIFIED IDEOGRAPH - 0xDE47: 0x8F4C, //CJK UNIFIED IDEOGRAPH - 0xDE48: 0x8F4D, //CJK UNIFIED IDEOGRAPH - 0xDE49: 0x8F4E, //CJK UNIFIED IDEOGRAPH - 0xDE4A: 0x8F4F, //CJK UNIFIED IDEOGRAPH - 0xDE4B: 0x8F50, //CJK UNIFIED IDEOGRAPH - 0xDE4C: 0x8F51, //CJK UNIFIED IDEOGRAPH - 0xDE4D: 0x8F52, //CJK UNIFIED IDEOGRAPH - 0xDE4E: 0x8F53, //CJK UNIFIED IDEOGRAPH - 0xDE4F: 0x8F54, //CJK UNIFIED IDEOGRAPH - 0xDE50: 0x8F55, //CJK UNIFIED IDEOGRAPH - 0xDE51: 0x8F56, //CJK UNIFIED IDEOGRAPH - 0xDE52: 0x8F57, //CJK UNIFIED IDEOGRAPH - 0xDE53: 0x8F58, //CJK UNIFIED IDEOGRAPH - 0xDE54: 0x8F59, //CJK UNIFIED IDEOGRAPH - 0xDE55: 0x8F5A, //CJK UNIFIED IDEOGRAPH - 0xDE56: 0x8F5B, //CJK UNIFIED IDEOGRAPH - 0xDE57: 0x8F5C, //CJK UNIFIED IDEOGRAPH - 0xDE58: 0x8F5D, //CJK UNIFIED IDEOGRAPH - 0xDE59: 0x8F5E, //CJK UNIFIED IDEOGRAPH - 0xDE5A: 0x8F5F, //CJK UNIFIED IDEOGRAPH - 0xDE5B: 0x8F60, //CJK UNIFIED IDEOGRAPH - 0xDE5C: 0x8F61, //CJK UNIFIED IDEOGRAPH - 0xDE5D: 0x8F62, //CJK UNIFIED IDEOGRAPH - 0xDE5E: 0x8F63, //CJK UNIFIED IDEOGRAPH - 0xDE5F: 0x8F64, //CJK UNIFIED IDEOGRAPH - 0xDE60: 0x8F65, //CJK UNIFIED IDEOGRAPH - 0xDE61: 0x8F6A, //CJK UNIFIED IDEOGRAPH - 0xDE62: 0x8F80, //CJK UNIFIED IDEOGRAPH - 0xDE63: 0x8F8C, //CJK UNIFIED IDEOGRAPH - 0xDE64: 0x8F92, //CJK UNIFIED IDEOGRAPH - 0xDE65: 0x8F9D, //CJK UNIFIED IDEOGRAPH - 0xDE66: 0x8FA0, //CJK UNIFIED IDEOGRAPH - 0xDE67: 0x8FA1, //CJK UNIFIED IDEOGRAPH - 0xDE68: 0x8FA2, //CJK UNIFIED IDEOGRAPH - 0xDE69: 0x8FA4, //CJK UNIFIED IDEOGRAPH - 0xDE6A: 0x8FA5, //CJK UNIFIED IDEOGRAPH - 0xDE6B: 0x8FA6, //CJK UNIFIED IDEOGRAPH - 0xDE6C: 0x8FA7, //CJK UNIFIED IDEOGRAPH - 0xDE6D: 0x8FAA, //CJK UNIFIED IDEOGRAPH - 0xDE6E: 0x8FAC, //CJK UNIFIED IDEOGRAPH - 0xDE6F: 0x8FAD, //CJK UNIFIED IDEOGRAPH - 0xDE70: 0x8FAE, //CJK UNIFIED IDEOGRAPH - 0xDE71: 0x8FAF, //CJK UNIFIED IDEOGRAPH - 0xDE72: 0x8FB2, //CJK UNIFIED IDEOGRAPH - 0xDE73: 0x8FB3, //CJK UNIFIED IDEOGRAPH - 0xDE74: 0x8FB4, //CJK UNIFIED IDEOGRAPH - 0xDE75: 0x8FB5, //CJK UNIFIED IDEOGRAPH - 0xDE76: 0x8FB7, //CJK UNIFIED IDEOGRAPH - 0xDE77: 0x8FB8, //CJK UNIFIED IDEOGRAPH - 0xDE78: 0x8FBA, //CJK UNIFIED IDEOGRAPH - 0xDE79: 0x8FBB, //CJK UNIFIED IDEOGRAPH - 0xDE7A: 0x8FBC, //CJK UNIFIED IDEOGRAPH - 0xDE7B: 0x8FBF, //CJK UNIFIED IDEOGRAPH - 0xDE7C: 0x8FC0, //CJK UNIFIED IDEOGRAPH - 0xDE7D: 0x8FC3, //CJK UNIFIED IDEOGRAPH - 0xDE7E: 0x8FC6, //CJK UNIFIED IDEOGRAPH - 0xDE80: 0x8FC9, //CJK UNIFIED IDEOGRAPH - 0xDE81: 0x8FCA, //CJK UNIFIED IDEOGRAPH - 0xDE82: 0x8FCB, //CJK UNIFIED IDEOGRAPH - 0xDE83: 0x8FCC, //CJK UNIFIED IDEOGRAPH - 0xDE84: 0x8FCD, //CJK UNIFIED IDEOGRAPH - 0xDE85: 0x8FCF, //CJK UNIFIED IDEOGRAPH - 0xDE86: 0x8FD2, //CJK UNIFIED IDEOGRAPH - 0xDE87: 0x8FD6, //CJK UNIFIED IDEOGRAPH - 0xDE88: 0x8FD7, //CJK UNIFIED IDEOGRAPH - 0xDE89: 0x8FDA, //CJK UNIFIED IDEOGRAPH - 0xDE8A: 0x8FE0, //CJK UNIFIED IDEOGRAPH - 0xDE8B: 0x8FE1, //CJK UNIFIED IDEOGRAPH - 0xDE8C: 0x8FE3, //CJK UNIFIED IDEOGRAPH - 0xDE8D: 0x8FE7, //CJK UNIFIED IDEOGRAPH - 0xDE8E: 0x8FEC, //CJK UNIFIED IDEOGRAPH - 0xDE8F: 0x8FEF, //CJK UNIFIED IDEOGRAPH - 0xDE90: 0x8FF1, //CJK UNIFIED IDEOGRAPH - 0xDE91: 0x8FF2, //CJK UNIFIED IDEOGRAPH - 0xDE92: 0x8FF4, //CJK UNIFIED IDEOGRAPH - 0xDE93: 0x8FF5, //CJK UNIFIED IDEOGRAPH - 0xDE94: 0x8FF6, //CJK UNIFIED IDEOGRAPH - 0xDE95: 0x8FFA, //CJK UNIFIED IDEOGRAPH - 0xDE96: 0x8FFB, //CJK UNIFIED IDEOGRAPH - 0xDE97: 0x8FFC, //CJK UNIFIED IDEOGRAPH - 0xDE98: 0x8FFE, //CJK UNIFIED IDEOGRAPH - 0xDE99: 0x8FFF, //CJK UNIFIED IDEOGRAPH - 0xDE9A: 0x9007, //CJK UNIFIED IDEOGRAPH - 0xDE9B: 0x9008, //CJK UNIFIED IDEOGRAPH - 0xDE9C: 0x900C, //CJK UNIFIED IDEOGRAPH - 0xDE9D: 0x900E, //CJK UNIFIED IDEOGRAPH - 0xDE9E: 0x9013, //CJK UNIFIED IDEOGRAPH - 0xDE9F: 0x9015, //CJK UNIFIED IDEOGRAPH - 0xDEA0: 0x9018, //CJK UNIFIED IDEOGRAPH - 0xDEA1: 0x8556, //CJK UNIFIED IDEOGRAPH - 0xDEA2: 0x853B, //CJK UNIFIED IDEOGRAPH - 0xDEA3: 0x84FF, //CJK UNIFIED IDEOGRAPH - 0xDEA4: 0x84FC, //CJK UNIFIED IDEOGRAPH - 0xDEA5: 0x8559, //CJK UNIFIED IDEOGRAPH - 0xDEA6: 0x8548, //CJK UNIFIED IDEOGRAPH - 0xDEA7: 0x8568, //CJK UNIFIED IDEOGRAPH - 0xDEA8: 0x8564, //CJK UNIFIED IDEOGRAPH - 0xDEA9: 0x855E, //CJK UNIFIED IDEOGRAPH - 0xDEAA: 0x857A, //CJK UNIFIED IDEOGRAPH - 0xDEAB: 0x77A2, //CJK UNIFIED IDEOGRAPH - 0xDEAC: 0x8543, //CJK UNIFIED IDEOGRAPH - 0xDEAD: 0x8572, //CJK UNIFIED IDEOGRAPH - 0xDEAE: 0x857B, //CJK UNIFIED IDEOGRAPH - 0xDEAF: 0x85A4, //CJK UNIFIED IDEOGRAPH - 0xDEB0: 0x85A8, //CJK UNIFIED IDEOGRAPH - 0xDEB1: 0x8587, //CJK UNIFIED IDEOGRAPH - 0xDEB2: 0x858F, //CJK UNIFIED IDEOGRAPH - 0xDEB3: 0x8579, //CJK UNIFIED IDEOGRAPH - 0xDEB4: 0x85AE, //CJK UNIFIED IDEOGRAPH - 0xDEB5: 0x859C, //CJK UNIFIED IDEOGRAPH - 0xDEB6: 0x8585, //CJK UNIFIED IDEOGRAPH - 0xDEB7: 0x85B9, //CJK UNIFIED IDEOGRAPH - 0xDEB8: 0x85B7, //CJK UNIFIED IDEOGRAPH - 0xDEB9: 0x85B0, //CJK UNIFIED IDEOGRAPH - 0xDEBA: 0x85D3, //CJK UNIFIED IDEOGRAPH - 0xDEBB: 0x85C1, //CJK UNIFIED IDEOGRAPH - 0xDEBC: 0x85DC, //CJK UNIFIED IDEOGRAPH - 0xDEBD: 0x85FF, //CJK UNIFIED IDEOGRAPH - 0xDEBE: 0x8627, //CJK UNIFIED IDEOGRAPH - 0xDEBF: 0x8605, //CJK UNIFIED IDEOGRAPH - 0xDEC0: 0x8629, //CJK UNIFIED IDEOGRAPH - 0xDEC1: 0x8616, //CJK UNIFIED IDEOGRAPH - 0xDEC2: 0x863C, //CJK UNIFIED IDEOGRAPH - 0xDEC3: 0x5EFE, //CJK UNIFIED IDEOGRAPH - 0xDEC4: 0x5F08, //CJK UNIFIED IDEOGRAPH - 0xDEC5: 0x593C, //CJK UNIFIED IDEOGRAPH - 0xDEC6: 0x5941, //CJK UNIFIED IDEOGRAPH - 0xDEC7: 0x8037, //CJK UNIFIED IDEOGRAPH - 0xDEC8: 0x5955, //CJK UNIFIED IDEOGRAPH - 0xDEC9: 0x595A, //CJK UNIFIED IDEOGRAPH - 0xDECA: 0x5958, //CJK UNIFIED IDEOGRAPH - 0xDECB: 0x530F, //CJK UNIFIED IDEOGRAPH - 0xDECC: 0x5C22, //CJK UNIFIED IDEOGRAPH - 0xDECD: 0x5C25, //CJK UNIFIED IDEOGRAPH - 0xDECE: 0x5C2C, //CJK UNIFIED IDEOGRAPH - 0xDECF: 0x5C34, //CJK UNIFIED IDEOGRAPH - 0xDED0: 0x624C, //CJK UNIFIED IDEOGRAPH - 0xDED1: 0x626A, //CJK UNIFIED IDEOGRAPH - 0xDED2: 0x629F, //CJK UNIFIED IDEOGRAPH - 0xDED3: 0x62BB, //CJK UNIFIED IDEOGRAPH - 0xDED4: 0x62CA, //CJK UNIFIED IDEOGRAPH - 0xDED5: 0x62DA, //CJK UNIFIED IDEOGRAPH - 0xDED6: 0x62D7, //CJK UNIFIED IDEOGRAPH - 0xDED7: 0x62EE, //CJK UNIFIED IDEOGRAPH - 0xDED8: 0x6322, //CJK UNIFIED IDEOGRAPH - 0xDED9: 0x62F6, //CJK UNIFIED IDEOGRAPH - 0xDEDA: 0x6339, //CJK UNIFIED IDEOGRAPH - 0xDEDB: 0x634B, //CJK UNIFIED IDEOGRAPH - 0xDEDC: 0x6343, //CJK UNIFIED IDEOGRAPH - 0xDEDD: 0x63AD, //CJK UNIFIED IDEOGRAPH - 0xDEDE: 0x63F6, //CJK UNIFIED IDEOGRAPH - 0xDEDF: 0x6371, //CJK UNIFIED IDEOGRAPH - 0xDEE0: 0x637A, //CJK UNIFIED IDEOGRAPH - 0xDEE1: 0x638E, //CJK UNIFIED IDEOGRAPH - 0xDEE2: 0x63B4, //CJK UNIFIED IDEOGRAPH - 0xDEE3: 0x636D, //CJK UNIFIED IDEOGRAPH - 0xDEE4: 0x63AC, //CJK UNIFIED IDEOGRAPH - 0xDEE5: 0x638A, //CJK UNIFIED IDEOGRAPH - 0xDEE6: 0x6369, //CJK UNIFIED IDEOGRAPH - 0xDEE7: 0x63AE, //CJK UNIFIED IDEOGRAPH - 0xDEE8: 0x63BC, //CJK UNIFIED IDEOGRAPH - 0xDEE9: 0x63F2, //CJK UNIFIED IDEOGRAPH - 0xDEEA: 0x63F8, //CJK UNIFIED IDEOGRAPH - 0xDEEB: 0x63E0, //CJK UNIFIED IDEOGRAPH - 0xDEEC: 0x63FF, //CJK UNIFIED IDEOGRAPH - 0xDEED: 0x63C4, //CJK UNIFIED IDEOGRAPH - 0xDEEE: 0x63DE, //CJK UNIFIED IDEOGRAPH - 0xDEEF: 0x63CE, //CJK UNIFIED IDEOGRAPH - 0xDEF0: 0x6452, //CJK UNIFIED IDEOGRAPH - 0xDEF1: 0x63C6, //CJK UNIFIED IDEOGRAPH - 0xDEF2: 0x63BE, //CJK UNIFIED IDEOGRAPH - 0xDEF3: 0x6445, //CJK UNIFIED IDEOGRAPH - 0xDEF4: 0x6441, //CJK UNIFIED IDEOGRAPH - 0xDEF5: 0x640B, //CJK UNIFIED IDEOGRAPH - 0xDEF6: 0x641B, //CJK UNIFIED IDEOGRAPH - 0xDEF7: 0x6420, //CJK UNIFIED IDEOGRAPH - 0xDEF8: 0x640C, //CJK UNIFIED IDEOGRAPH - 0xDEF9: 0x6426, //CJK UNIFIED IDEOGRAPH - 0xDEFA: 0x6421, //CJK UNIFIED IDEOGRAPH - 0xDEFB: 0x645E, //CJK UNIFIED IDEOGRAPH - 0xDEFC: 0x6484, //CJK UNIFIED IDEOGRAPH - 0xDEFD: 0x646D, //CJK UNIFIED IDEOGRAPH - 0xDEFE: 0x6496, //CJK UNIFIED IDEOGRAPH - 0xDF40: 0x9019, //CJK UNIFIED IDEOGRAPH - 0xDF41: 0x901C, //CJK UNIFIED IDEOGRAPH - 0xDF42: 0x9023, //CJK UNIFIED IDEOGRAPH - 0xDF43: 0x9024, //CJK UNIFIED IDEOGRAPH - 0xDF44: 0x9025, //CJK UNIFIED IDEOGRAPH - 0xDF45: 0x9027, //CJK UNIFIED IDEOGRAPH - 0xDF46: 0x9028, //CJK UNIFIED IDEOGRAPH - 0xDF47: 0x9029, //CJK UNIFIED IDEOGRAPH - 0xDF48: 0x902A, //CJK UNIFIED IDEOGRAPH - 0xDF49: 0x902B, //CJK UNIFIED IDEOGRAPH - 0xDF4A: 0x902C, //CJK UNIFIED IDEOGRAPH - 0xDF4B: 0x9030, //CJK UNIFIED IDEOGRAPH - 0xDF4C: 0x9031, //CJK UNIFIED IDEOGRAPH - 0xDF4D: 0x9032, //CJK UNIFIED IDEOGRAPH - 0xDF4E: 0x9033, //CJK UNIFIED IDEOGRAPH - 0xDF4F: 0x9034, //CJK UNIFIED IDEOGRAPH - 0xDF50: 0x9037, //CJK UNIFIED IDEOGRAPH - 0xDF51: 0x9039, //CJK UNIFIED IDEOGRAPH - 0xDF52: 0x903A, //CJK UNIFIED IDEOGRAPH - 0xDF53: 0x903D, //CJK UNIFIED IDEOGRAPH - 0xDF54: 0x903F, //CJK UNIFIED IDEOGRAPH - 0xDF55: 0x9040, //CJK UNIFIED IDEOGRAPH - 0xDF56: 0x9043, //CJK UNIFIED IDEOGRAPH - 0xDF57: 0x9045, //CJK UNIFIED IDEOGRAPH - 0xDF58: 0x9046, //CJK UNIFIED IDEOGRAPH - 0xDF59: 0x9048, //CJK UNIFIED IDEOGRAPH - 0xDF5A: 0x9049, //CJK UNIFIED IDEOGRAPH - 0xDF5B: 0x904A, //CJK UNIFIED IDEOGRAPH - 0xDF5C: 0x904B, //CJK UNIFIED IDEOGRAPH - 0xDF5D: 0x904C, //CJK UNIFIED IDEOGRAPH - 0xDF5E: 0x904E, //CJK UNIFIED IDEOGRAPH - 0xDF5F: 0x9054, //CJK UNIFIED IDEOGRAPH - 0xDF60: 0x9055, //CJK UNIFIED IDEOGRAPH - 0xDF61: 0x9056, //CJK UNIFIED IDEOGRAPH - 0xDF62: 0x9059, //CJK UNIFIED IDEOGRAPH - 0xDF63: 0x905A, //CJK UNIFIED IDEOGRAPH - 0xDF64: 0x905C, //CJK UNIFIED IDEOGRAPH - 0xDF65: 0x905D, //CJK UNIFIED IDEOGRAPH - 0xDF66: 0x905E, //CJK UNIFIED IDEOGRAPH - 0xDF67: 0x905F, //CJK UNIFIED IDEOGRAPH - 0xDF68: 0x9060, //CJK UNIFIED IDEOGRAPH - 0xDF69: 0x9061, //CJK UNIFIED IDEOGRAPH - 0xDF6A: 0x9064, //CJK UNIFIED IDEOGRAPH - 0xDF6B: 0x9066, //CJK UNIFIED IDEOGRAPH - 0xDF6C: 0x9067, //CJK UNIFIED IDEOGRAPH - 0xDF6D: 0x9069, //CJK UNIFIED IDEOGRAPH - 0xDF6E: 0x906A, //CJK UNIFIED IDEOGRAPH - 0xDF6F: 0x906B, //CJK UNIFIED IDEOGRAPH - 0xDF70: 0x906C, //CJK UNIFIED IDEOGRAPH - 0xDF71: 0x906F, //CJK UNIFIED IDEOGRAPH - 0xDF72: 0x9070, //CJK UNIFIED IDEOGRAPH - 0xDF73: 0x9071, //CJK UNIFIED IDEOGRAPH - 0xDF74: 0x9072, //CJK UNIFIED IDEOGRAPH - 0xDF75: 0x9073, //CJK UNIFIED IDEOGRAPH - 0xDF76: 0x9076, //CJK UNIFIED IDEOGRAPH - 0xDF77: 0x9077, //CJK UNIFIED IDEOGRAPH - 0xDF78: 0x9078, //CJK UNIFIED IDEOGRAPH - 0xDF79: 0x9079, //CJK UNIFIED IDEOGRAPH - 0xDF7A: 0x907A, //CJK UNIFIED IDEOGRAPH - 0xDF7B: 0x907B, //CJK UNIFIED IDEOGRAPH - 0xDF7C: 0x907C, //CJK UNIFIED IDEOGRAPH - 0xDF7D: 0x907E, //CJK UNIFIED IDEOGRAPH - 0xDF7E: 0x9081, //CJK UNIFIED IDEOGRAPH - 0xDF80: 0x9084, //CJK UNIFIED IDEOGRAPH - 0xDF81: 0x9085, //CJK UNIFIED IDEOGRAPH - 0xDF82: 0x9086, //CJK UNIFIED IDEOGRAPH - 0xDF83: 0x9087, //CJK UNIFIED IDEOGRAPH - 0xDF84: 0x9089, //CJK UNIFIED IDEOGRAPH - 0xDF85: 0x908A, //CJK UNIFIED IDEOGRAPH - 0xDF86: 0x908C, //CJK UNIFIED IDEOGRAPH - 0xDF87: 0x908D, //CJK UNIFIED IDEOGRAPH - 0xDF88: 0x908E, //CJK UNIFIED IDEOGRAPH - 0xDF89: 0x908F, //CJK UNIFIED IDEOGRAPH - 0xDF8A: 0x9090, //CJK UNIFIED IDEOGRAPH - 0xDF8B: 0x9092, //CJK UNIFIED IDEOGRAPH - 0xDF8C: 0x9094, //CJK UNIFIED IDEOGRAPH - 0xDF8D: 0x9096, //CJK UNIFIED IDEOGRAPH - 0xDF8E: 0x9098, //CJK UNIFIED IDEOGRAPH - 0xDF8F: 0x909A, //CJK UNIFIED IDEOGRAPH - 0xDF90: 0x909C, //CJK UNIFIED IDEOGRAPH - 0xDF91: 0x909E, //CJK UNIFIED IDEOGRAPH - 0xDF92: 0x909F, //CJK UNIFIED IDEOGRAPH - 0xDF93: 0x90A0, //CJK UNIFIED IDEOGRAPH - 0xDF94: 0x90A4, //CJK UNIFIED IDEOGRAPH - 0xDF95: 0x90A5, //CJK UNIFIED IDEOGRAPH - 0xDF96: 0x90A7, //CJK UNIFIED IDEOGRAPH - 0xDF97: 0x90A8, //CJK UNIFIED IDEOGRAPH - 0xDF98: 0x90A9, //CJK UNIFIED IDEOGRAPH - 0xDF99: 0x90AB, //CJK UNIFIED IDEOGRAPH - 0xDF9A: 0x90AD, //CJK UNIFIED IDEOGRAPH - 0xDF9B: 0x90B2, //CJK UNIFIED IDEOGRAPH - 0xDF9C: 0x90B7, //CJK UNIFIED IDEOGRAPH - 0xDF9D: 0x90BC, //CJK UNIFIED IDEOGRAPH - 0xDF9E: 0x90BD, //CJK UNIFIED IDEOGRAPH - 0xDF9F: 0x90BF, //CJK UNIFIED IDEOGRAPH - 0xDFA0: 0x90C0, //CJK UNIFIED IDEOGRAPH - 0xDFA1: 0x647A, //CJK UNIFIED IDEOGRAPH - 0xDFA2: 0x64B7, //CJK UNIFIED IDEOGRAPH - 0xDFA3: 0x64B8, //CJK UNIFIED IDEOGRAPH - 0xDFA4: 0x6499, //CJK UNIFIED IDEOGRAPH - 0xDFA5: 0x64BA, //CJK UNIFIED IDEOGRAPH - 0xDFA6: 0x64C0, //CJK UNIFIED IDEOGRAPH - 0xDFA7: 0x64D0, //CJK UNIFIED IDEOGRAPH - 0xDFA8: 0x64D7, //CJK UNIFIED IDEOGRAPH - 0xDFA9: 0x64E4, //CJK UNIFIED IDEOGRAPH - 0xDFAA: 0x64E2, //CJK UNIFIED IDEOGRAPH - 0xDFAB: 0x6509, //CJK UNIFIED IDEOGRAPH - 0xDFAC: 0x6525, //CJK UNIFIED IDEOGRAPH - 0xDFAD: 0x652E, //CJK UNIFIED IDEOGRAPH - 0xDFAE: 0x5F0B, //CJK UNIFIED IDEOGRAPH - 0xDFAF: 0x5FD2, //CJK UNIFIED IDEOGRAPH - 0xDFB0: 0x7519, //CJK UNIFIED IDEOGRAPH - 0xDFB1: 0x5F11, //CJK UNIFIED IDEOGRAPH - 0xDFB2: 0x535F, //CJK UNIFIED IDEOGRAPH - 0xDFB3: 0x53F1, //CJK UNIFIED IDEOGRAPH - 0xDFB4: 0x53FD, //CJK UNIFIED IDEOGRAPH - 0xDFB5: 0x53E9, //CJK UNIFIED IDEOGRAPH - 0xDFB6: 0x53E8, //CJK UNIFIED IDEOGRAPH - 0xDFB7: 0x53FB, //CJK UNIFIED IDEOGRAPH - 0xDFB8: 0x5412, //CJK UNIFIED IDEOGRAPH - 0xDFB9: 0x5416, //CJK UNIFIED IDEOGRAPH - 0xDFBA: 0x5406, //CJK UNIFIED IDEOGRAPH - 0xDFBB: 0x544B, //CJK UNIFIED IDEOGRAPH - 0xDFBC: 0x5452, //CJK UNIFIED IDEOGRAPH - 0xDFBD: 0x5453, //CJK UNIFIED IDEOGRAPH - 0xDFBE: 0x5454, //CJK UNIFIED IDEOGRAPH - 0xDFBF: 0x5456, //CJK UNIFIED IDEOGRAPH - 0xDFC0: 0x5443, //CJK UNIFIED IDEOGRAPH - 0xDFC1: 0x5421, //CJK UNIFIED IDEOGRAPH - 0xDFC2: 0x5457, //CJK UNIFIED IDEOGRAPH - 0xDFC3: 0x5459, //CJK UNIFIED IDEOGRAPH - 0xDFC4: 0x5423, //CJK UNIFIED IDEOGRAPH - 0xDFC5: 0x5432, //CJK UNIFIED IDEOGRAPH - 0xDFC6: 0x5482, //CJK UNIFIED IDEOGRAPH - 0xDFC7: 0x5494, //CJK UNIFIED IDEOGRAPH - 0xDFC8: 0x5477, //CJK UNIFIED IDEOGRAPH - 0xDFC9: 0x5471, //CJK UNIFIED IDEOGRAPH - 0xDFCA: 0x5464, //CJK UNIFIED IDEOGRAPH - 0xDFCB: 0x549A, //CJK UNIFIED IDEOGRAPH - 0xDFCC: 0x549B, //CJK UNIFIED IDEOGRAPH - 0xDFCD: 0x5484, //CJK UNIFIED IDEOGRAPH - 0xDFCE: 0x5476, //CJK UNIFIED IDEOGRAPH - 0xDFCF: 0x5466, //CJK UNIFIED IDEOGRAPH - 0xDFD0: 0x549D, //CJK UNIFIED IDEOGRAPH - 0xDFD1: 0x54D0, //CJK UNIFIED IDEOGRAPH - 0xDFD2: 0x54AD, //CJK UNIFIED IDEOGRAPH - 0xDFD3: 0x54C2, //CJK UNIFIED IDEOGRAPH - 0xDFD4: 0x54B4, //CJK UNIFIED IDEOGRAPH - 0xDFD5: 0x54D2, //CJK UNIFIED IDEOGRAPH - 0xDFD6: 0x54A7, //CJK UNIFIED IDEOGRAPH - 0xDFD7: 0x54A6, //CJK UNIFIED IDEOGRAPH - 0xDFD8: 0x54D3, //CJK UNIFIED IDEOGRAPH - 0xDFD9: 0x54D4, //CJK UNIFIED IDEOGRAPH - 0xDFDA: 0x5472, //CJK UNIFIED IDEOGRAPH - 0xDFDB: 0x54A3, //CJK UNIFIED IDEOGRAPH - 0xDFDC: 0x54D5, //CJK UNIFIED IDEOGRAPH - 0xDFDD: 0x54BB, //CJK UNIFIED IDEOGRAPH - 0xDFDE: 0x54BF, //CJK UNIFIED IDEOGRAPH - 0xDFDF: 0x54CC, //CJK UNIFIED IDEOGRAPH - 0xDFE0: 0x54D9, //CJK UNIFIED IDEOGRAPH - 0xDFE1: 0x54DA, //CJK UNIFIED IDEOGRAPH - 0xDFE2: 0x54DC, //CJK UNIFIED IDEOGRAPH - 0xDFE3: 0x54A9, //CJK UNIFIED IDEOGRAPH - 0xDFE4: 0x54AA, //CJK UNIFIED IDEOGRAPH - 0xDFE5: 0x54A4, //CJK UNIFIED IDEOGRAPH - 0xDFE6: 0x54DD, //CJK UNIFIED IDEOGRAPH - 0xDFE7: 0x54CF, //CJK UNIFIED IDEOGRAPH - 0xDFE8: 0x54DE, //CJK UNIFIED IDEOGRAPH - 0xDFE9: 0x551B, //CJK UNIFIED IDEOGRAPH - 0xDFEA: 0x54E7, //CJK UNIFIED IDEOGRAPH - 0xDFEB: 0x5520, //CJK UNIFIED IDEOGRAPH - 0xDFEC: 0x54FD, //CJK UNIFIED IDEOGRAPH - 0xDFED: 0x5514, //CJK UNIFIED IDEOGRAPH - 0xDFEE: 0x54F3, //CJK UNIFIED IDEOGRAPH - 0xDFEF: 0x5522, //CJK UNIFIED IDEOGRAPH - 0xDFF0: 0x5523, //CJK UNIFIED IDEOGRAPH - 0xDFF1: 0x550F, //CJK UNIFIED IDEOGRAPH - 0xDFF2: 0x5511, //CJK UNIFIED IDEOGRAPH - 0xDFF3: 0x5527, //CJK UNIFIED IDEOGRAPH - 0xDFF4: 0x552A, //CJK UNIFIED IDEOGRAPH - 0xDFF5: 0x5567, //CJK UNIFIED IDEOGRAPH - 0xDFF6: 0x558F, //CJK UNIFIED IDEOGRAPH - 0xDFF7: 0x55B5, //CJK UNIFIED IDEOGRAPH - 0xDFF8: 0x5549, //CJK UNIFIED IDEOGRAPH - 0xDFF9: 0x556D, //CJK UNIFIED IDEOGRAPH - 0xDFFA: 0x5541, //CJK UNIFIED IDEOGRAPH - 0xDFFB: 0x5555, //CJK UNIFIED IDEOGRAPH - 0xDFFC: 0x553F, //CJK UNIFIED IDEOGRAPH - 0xDFFD: 0x5550, //CJK UNIFIED IDEOGRAPH - 0xDFFE: 0x553C, //CJK UNIFIED IDEOGRAPH - 0xE040: 0x90C2, //CJK UNIFIED IDEOGRAPH - 0xE041: 0x90C3, //CJK UNIFIED IDEOGRAPH - 0xE042: 0x90C6, //CJK UNIFIED IDEOGRAPH - 0xE043: 0x90C8, //CJK UNIFIED IDEOGRAPH - 0xE044: 0x90C9, //CJK UNIFIED IDEOGRAPH - 0xE045: 0x90CB, //CJK UNIFIED IDEOGRAPH - 0xE046: 0x90CC, //CJK UNIFIED IDEOGRAPH - 0xE047: 0x90CD, //CJK UNIFIED IDEOGRAPH - 0xE048: 0x90D2, //CJK UNIFIED IDEOGRAPH - 0xE049: 0x90D4, //CJK UNIFIED IDEOGRAPH - 0xE04A: 0x90D5, //CJK UNIFIED IDEOGRAPH - 0xE04B: 0x90D6, //CJK UNIFIED IDEOGRAPH - 0xE04C: 0x90D8, //CJK UNIFIED IDEOGRAPH - 0xE04D: 0x90D9, //CJK UNIFIED IDEOGRAPH - 0xE04E: 0x90DA, //CJK UNIFIED IDEOGRAPH - 0xE04F: 0x90DE, //CJK UNIFIED IDEOGRAPH - 0xE050: 0x90DF, //CJK UNIFIED IDEOGRAPH - 0xE051: 0x90E0, //CJK UNIFIED IDEOGRAPH - 0xE052: 0x90E3, //CJK UNIFIED IDEOGRAPH - 0xE053: 0x90E4, //CJK UNIFIED IDEOGRAPH - 0xE054: 0x90E5, //CJK UNIFIED IDEOGRAPH - 0xE055: 0x90E9, //CJK UNIFIED IDEOGRAPH - 0xE056: 0x90EA, //CJK UNIFIED IDEOGRAPH - 0xE057: 0x90EC, //CJK UNIFIED IDEOGRAPH - 0xE058: 0x90EE, //CJK UNIFIED IDEOGRAPH - 0xE059: 0x90F0, //CJK UNIFIED IDEOGRAPH - 0xE05A: 0x90F1, //CJK UNIFIED IDEOGRAPH - 0xE05B: 0x90F2, //CJK UNIFIED IDEOGRAPH - 0xE05C: 0x90F3, //CJK UNIFIED IDEOGRAPH - 0xE05D: 0x90F5, //CJK UNIFIED IDEOGRAPH - 0xE05E: 0x90F6, //CJK UNIFIED IDEOGRAPH - 0xE05F: 0x90F7, //CJK UNIFIED IDEOGRAPH - 0xE060: 0x90F9, //CJK UNIFIED IDEOGRAPH - 0xE061: 0x90FA, //CJK UNIFIED IDEOGRAPH - 0xE062: 0x90FB, //CJK UNIFIED IDEOGRAPH - 0xE063: 0x90FC, //CJK UNIFIED IDEOGRAPH - 0xE064: 0x90FF, //CJK UNIFIED IDEOGRAPH - 0xE065: 0x9100, //CJK UNIFIED IDEOGRAPH - 0xE066: 0x9101, //CJK UNIFIED IDEOGRAPH - 0xE067: 0x9103, //CJK UNIFIED IDEOGRAPH - 0xE068: 0x9105, //CJK UNIFIED IDEOGRAPH - 0xE069: 0x9106, //CJK UNIFIED IDEOGRAPH - 0xE06A: 0x9107, //CJK UNIFIED IDEOGRAPH - 0xE06B: 0x9108, //CJK UNIFIED IDEOGRAPH - 0xE06C: 0x9109, //CJK UNIFIED IDEOGRAPH - 0xE06D: 0x910A, //CJK UNIFIED IDEOGRAPH - 0xE06E: 0x910B, //CJK UNIFIED IDEOGRAPH - 0xE06F: 0x910C, //CJK UNIFIED IDEOGRAPH - 0xE070: 0x910D, //CJK UNIFIED IDEOGRAPH - 0xE071: 0x910E, //CJK UNIFIED IDEOGRAPH - 0xE072: 0x910F, //CJK UNIFIED IDEOGRAPH - 0xE073: 0x9110, //CJK UNIFIED IDEOGRAPH - 0xE074: 0x9111, //CJK UNIFIED IDEOGRAPH - 0xE075: 0x9112, //CJK UNIFIED IDEOGRAPH - 0xE076: 0x9113, //CJK UNIFIED IDEOGRAPH - 0xE077: 0x9114, //CJK UNIFIED IDEOGRAPH - 0xE078: 0x9115, //CJK UNIFIED IDEOGRAPH - 0xE079: 0x9116, //CJK UNIFIED IDEOGRAPH - 0xE07A: 0x9117, //CJK UNIFIED IDEOGRAPH - 0xE07B: 0x9118, //CJK UNIFIED IDEOGRAPH - 0xE07C: 0x911A, //CJK UNIFIED IDEOGRAPH - 0xE07D: 0x911B, //CJK UNIFIED IDEOGRAPH - 0xE07E: 0x911C, //CJK UNIFIED IDEOGRAPH - 0xE080: 0x911D, //CJK UNIFIED IDEOGRAPH - 0xE081: 0x911F, //CJK UNIFIED IDEOGRAPH - 0xE082: 0x9120, //CJK UNIFIED IDEOGRAPH - 0xE083: 0x9121, //CJK UNIFIED IDEOGRAPH - 0xE084: 0x9124, //CJK UNIFIED IDEOGRAPH - 0xE085: 0x9125, //CJK UNIFIED IDEOGRAPH - 0xE086: 0x9126, //CJK UNIFIED IDEOGRAPH - 0xE087: 0x9127, //CJK UNIFIED IDEOGRAPH - 0xE088: 0x9128, //CJK UNIFIED IDEOGRAPH - 0xE089: 0x9129, //CJK UNIFIED IDEOGRAPH - 0xE08A: 0x912A, //CJK UNIFIED IDEOGRAPH - 0xE08B: 0x912B, //CJK UNIFIED IDEOGRAPH - 0xE08C: 0x912C, //CJK UNIFIED IDEOGRAPH - 0xE08D: 0x912D, //CJK UNIFIED IDEOGRAPH - 0xE08E: 0x912E, //CJK UNIFIED IDEOGRAPH - 0xE08F: 0x9130, //CJK UNIFIED IDEOGRAPH - 0xE090: 0x9132, //CJK UNIFIED IDEOGRAPH - 0xE091: 0x9133, //CJK UNIFIED IDEOGRAPH - 0xE092: 0x9134, //CJK UNIFIED IDEOGRAPH - 0xE093: 0x9135, //CJK UNIFIED IDEOGRAPH - 0xE094: 0x9136, //CJK UNIFIED IDEOGRAPH - 0xE095: 0x9137, //CJK UNIFIED IDEOGRAPH - 0xE096: 0x9138, //CJK UNIFIED IDEOGRAPH - 0xE097: 0x913A, //CJK UNIFIED IDEOGRAPH - 0xE098: 0x913B, //CJK UNIFIED IDEOGRAPH - 0xE099: 0x913C, //CJK UNIFIED IDEOGRAPH - 0xE09A: 0x913D, //CJK UNIFIED IDEOGRAPH - 0xE09B: 0x913E, //CJK UNIFIED IDEOGRAPH - 0xE09C: 0x913F, //CJK UNIFIED IDEOGRAPH - 0xE09D: 0x9140, //CJK UNIFIED IDEOGRAPH - 0xE09E: 0x9141, //CJK UNIFIED IDEOGRAPH - 0xE09F: 0x9142, //CJK UNIFIED IDEOGRAPH - 0xE0A0: 0x9144, //CJK UNIFIED IDEOGRAPH - 0xE0A1: 0x5537, //CJK UNIFIED IDEOGRAPH - 0xE0A2: 0x5556, //CJK UNIFIED IDEOGRAPH - 0xE0A3: 0x5575, //CJK UNIFIED IDEOGRAPH - 0xE0A4: 0x5576, //CJK UNIFIED IDEOGRAPH - 0xE0A5: 0x5577, //CJK UNIFIED IDEOGRAPH - 0xE0A6: 0x5533, //CJK UNIFIED IDEOGRAPH - 0xE0A7: 0x5530, //CJK UNIFIED IDEOGRAPH - 0xE0A8: 0x555C, //CJK UNIFIED IDEOGRAPH - 0xE0A9: 0x558B, //CJK UNIFIED IDEOGRAPH - 0xE0AA: 0x55D2, //CJK UNIFIED IDEOGRAPH - 0xE0AB: 0x5583, //CJK UNIFIED IDEOGRAPH - 0xE0AC: 0x55B1, //CJK UNIFIED IDEOGRAPH - 0xE0AD: 0x55B9, //CJK UNIFIED IDEOGRAPH - 0xE0AE: 0x5588, //CJK UNIFIED IDEOGRAPH - 0xE0AF: 0x5581, //CJK UNIFIED IDEOGRAPH - 0xE0B0: 0x559F, //CJK UNIFIED IDEOGRAPH - 0xE0B1: 0x557E, //CJK UNIFIED IDEOGRAPH - 0xE0B2: 0x55D6, //CJK UNIFIED IDEOGRAPH - 0xE0B3: 0x5591, //CJK UNIFIED IDEOGRAPH - 0xE0B4: 0x557B, //CJK UNIFIED IDEOGRAPH - 0xE0B5: 0x55DF, //CJK UNIFIED IDEOGRAPH - 0xE0B6: 0x55BD, //CJK UNIFIED IDEOGRAPH - 0xE0B7: 0x55BE, //CJK UNIFIED IDEOGRAPH - 0xE0B8: 0x5594, //CJK UNIFIED IDEOGRAPH - 0xE0B9: 0x5599, //CJK UNIFIED IDEOGRAPH - 0xE0BA: 0x55EA, //CJK UNIFIED IDEOGRAPH - 0xE0BB: 0x55F7, //CJK UNIFIED IDEOGRAPH - 0xE0BC: 0x55C9, //CJK UNIFIED IDEOGRAPH - 0xE0BD: 0x561F, //CJK UNIFIED IDEOGRAPH - 0xE0BE: 0x55D1, //CJK UNIFIED IDEOGRAPH - 0xE0BF: 0x55EB, //CJK UNIFIED IDEOGRAPH - 0xE0C0: 0x55EC, //CJK UNIFIED IDEOGRAPH - 0xE0C1: 0x55D4, //CJK UNIFIED IDEOGRAPH - 0xE0C2: 0x55E6, //CJK UNIFIED IDEOGRAPH - 0xE0C3: 0x55DD, //CJK UNIFIED IDEOGRAPH - 0xE0C4: 0x55C4, //CJK UNIFIED IDEOGRAPH - 0xE0C5: 0x55EF, //CJK UNIFIED IDEOGRAPH - 0xE0C6: 0x55E5, //CJK UNIFIED IDEOGRAPH - 0xE0C7: 0x55F2, //CJK UNIFIED IDEOGRAPH - 0xE0C8: 0x55F3, //CJK UNIFIED IDEOGRAPH - 0xE0C9: 0x55CC, //CJK UNIFIED IDEOGRAPH - 0xE0CA: 0x55CD, //CJK UNIFIED IDEOGRAPH - 0xE0CB: 0x55E8, //CJK UNIFIED IDEOGRAPH - 0xE0CC: 0x55F5, //CJK UNIFIED IDEOGRAPH - 0xE0CD: 0x55E4, //CJK UNIFIED IDEOGRAPH - 0xE0CE: 0x8F94, //CJK UNIFIED IDEOGRAPH - 0xE0CF: 0x561E, //CJK UNIFIED IDEOGRAPH - 0xE0D0: 0x5608, //CJK UNIFIED IDEOGRAPH - 0xE0D1: 0x560C, //CJK UNIFIED IDEOGRAPH - 0xE0D2: 0x5601, //CJK UNIFIED IDEOGRAPH - 0xE0D3: 0x5624, //CJK UNIFIED IDEOGRAPH - 0xE0D4: 0x5623, //CJK UNIFIED IDEOGRAPH - 0xE0D5: 0x55FE, //CJK UNIFIED IDEOGRAPH - 0xE0D6: 0x5600, //CJK UNIFIED IDEOGRAPH - 0xE0D7: 0x5627, //CJK UNIFIED IDEOGRAPH - 0xE0D8: 0x562D, //CJK UNIFIED IDEOGRAPH - 0xE0D9: 0x5658, //CJK UNIFIED IDEOGRAPH - 0xE0DA: 0x5639, //CJK UNIFIED IDEOGRAPH - 0xE0DB: 0x5657, //CJK UNIFIED IDEOGRAPH - 0xE0DC: 0x562C, //CJK UNIFIED IDEOGRAPH - 0xE0DD: 0x564D, //CJK UNIFIED IDEOGRAPH - 0xE0DE: 0x5662, //CJK UNIFIED IDEOGRAPH - 0xE0DF: 0x5659, //CJK UNIFIED IDEOGRAPH - 0xE0E0: 0x565C, //CJK UNIFIED IDEOGRAPH - 0xE0E1: 0x564C, //CJK UNIFIED IDEOGRAPH - 0xE0E2: 0x5654, //CJK UNIFIED IDEOGRAPH - 0xE0E3: 0x5686, //CJK UNIFIED IDEOGRAPH - 0xE0E4: 0x5664, //CJK UNIFIED IDEOGRAPH - 0xE0E5: 0x5671, //CJK UNIFIED IDEOGRAPH - 0xE0E6: 0x566B, //CJK UNIFIED IDEOGRAPH - 0xE0E7: 0x567B, //CJK UNIFIED IDEOGRAPH - 0xE0E8: 0x567C, //CJK UNIFIED IDEOGRAPH - 0xE0E9: 0x5685, //CJK UNIFIED IDEOGRAPH - 0xE0EA: 0x5693, //CJK UNIFIED IDEOGRAPH - 0xE0EB: 0x56AF, //CJK UNIFIED IDEOGRAPH - 0xE0EC: 0x56D4, //CJK UNIFIED IDEOGRAPH - 0xE0ED: 0x56D7, //CJK UNIFIED IDEOGRAPH - 0xE0EE: 0x56DD, //CJK UNIFIED IDEOGRAPH - 0xE0EF: 0x56E1, //CJK UNIFIED IDEOGRAPH - 0xE0F0: 0x56F5, //CJK UNIFIED IDEOGRAPH - 0xE0F1: 0x56EB, //CJK UNIFIED IDEOGRAPH - 0xE0F2: 0x56F9, //CJK UNIFIED IDEOGRAPH - 0xE0F3: 0x56FF, //CJK UNIFIED IDEOGRAPH - 0xE0F4: 0x5704, //CJK UNIFIED IDEOGRAPH - 0xE0F5: 0x570A, //CJK UNIFIED IDEOGRAPH - 0xE0F6: 0x5709, //CJK UNIFIED IDEOGRAPH - 0xE0F7: 0x571C, //CJK UNIFIED IDEOGRAPH - 0xE0F8: 0x5E0F, //CJK UNIFIED IDEOGRAPH - 0xE0F9: 0x5E19, //CJK UNIFIED IDEOGRAPH - 0xE0FA: 0x5E14, //CJK UNIFIED IDEOGRAPH - 0xE0FB: 0x5E11, //CJK UNIFIED IDEOGRAPH - 0xE0FC: 0x5E31, //CJK UNIFIED IDEOGRAPH - 0xE0FD: 0x5E3B, //CJK UNIFIED IDEOGRAPH - 0xE0FE: 0x5E3C, //CJK UNIFIED IDEOGRAPH - 0xE140: 0x9145, //CJK UNIFIED IDEOGRAPH - 0xE141: 0x9147, //CJK UNIFIED IDEOGRAPH - 0xE142: 0x9148, //CJK UNIFIED IDEOGRAPH - 0xE143: 0x9151, //CJK UNIFIED IDEOGRAPH - 0xE144: 0x9153, //CJK UNIFIED IDEOGRAPH - 0xE145: 0x9154, //CJK UNIFIED IDEOGRAPH - 0xE146: 0x9155, //CJK UNIFIED IDEOGRAPH - 0xE147: 0x9156, //CJK UNIFIED IDEOGRAPH - 0xE148: 0x9158, //CJK UNIFIED IDEOGRAPH - 0xE149: 0x9159, //CJK UNIFIED IDEOGRAPH - 0xE14A: 0x915B, //CJK UNIFIED IDEOGRAPH - 0xE14B: 0x915C, //CJK UNIFIED IDEOGRAPH - 0xE14C: 0x915F, //CJK UNIFIED IDEOGRAPH - 0xE14D: 0x9160, //CJK UNIFIED IDEOGRAPH - 0xE14E: 0x9166, //CJK UNIFIED IDEOGRAPH - 0xE14F: 0x9167, //CJK UNIFIED IDEOGRAPH - 0xE150: 0x9168, //CJK UNIFIED IDEOGRAPH - 0xE151: 0x916B, //CJK UNIFIED IDEOGRAPH - 0xE152: 0x916D, //CJK UNIFIED IDEOGRAPH - 0xE153: 0x9173, //CJK UNIFIED IDEOGRAPH - 0xE154: 0x917A, //CJK UNIFIED IDEOGRAPH - 0xE155: 0x917B, //CJK UNIFIED IDEOGRAPH - 0xE156: 0x917C, //CJK UNIFIED IDEOGRAPH - 0xE157: 0x9180, //CJK UNIFIED IDEOGRAPH - 0xE158: 0x9181, //CJK UNIFIED IDEOGRAPH - 0xE159: 0x9182, //CJK UNIFIED IDEOGRAPH - 0xE15A: 0x9183, //CJK UNIFIED IDEOGRAPH - 0xE15B: 0x9184, //CJK UNIFIED IDEOGRAPH - 0xE15C: 0x9186, //CJK UNIFIED IDEOGRAPH - 0xE15D: 0x9188, //CJK UNIFIED IDEOGRAPH - 0xE15E: 0x918A, //CJK UNIFIED IDEOGRAPH - 0xE15F: 0x918E, //CJK UNIFIED IDEOGRAPH - 0xE160: 0x918F, //CJK UNIFIED IDEOGRAPH - 0xE161: 0x9193, //CJK UNIFIED IDEOGRAPH - 0xE162: 0x9194, //CJK UNIFIED IDEOGRAPH - 0xE163: 0x9195, //CJK UNIFIED IDEOGRAPH - 0xE164: 0x9196, //CJK UNIFIED IDEOGRAPH - 0xE165: 0x9197, //CJK UNIFIED IDEOGRAPH - 0xE166: 0x9198, //CJK UNIFIED IDEOGRAPH - 0xE167: 0x9199, //CJK UNIFIED IDEOGRAPH - 0xE168: 0x919C, //CJK UNIFIED IDEOGRAPH - 0xE169: 0x919D, //CJK UNIFIED IDEOGRAPH - 0xE16A: 0x919E, //CJK UNIFIED IDEOGRAPH - 0xE16B: 0x919F, //CJK UNIFIED IDEOGRAPH - 0xE16C: 0x91A0, //CJK UNIFIED IDEOGRAPH - 0xE16D: 0x91A1, //CJK UNIFIED IDEOGRAPH - 0xE16E: 0x91A4, //CJK UNIFIED IDEOGRAPH - 0xE16F: 0x91A5, //CJK UNIFIED IDEOGRAPH - 0xE170: 0x91A6, //CJK UNIFIED IDEOGRAPH - 0xE171: 0x91A7, //CJK UNIFIED IDEOGRAPH - 0xE172: 0x91A8, //CJK UNIFIED IDEOGRAPH - 0xE173: 0x91A9, //CJK UNIFIED IDEOGRAPH - 0xE174: 0x91AB, //CJK UNIFIED IDEOGRAPH - 0xE175: 0x91AC, //CJK UNIFIED IDEOGRAPH - 0xE176: 0x91B0, //CJK UNIFIED IDEOGRAPH - 0xE177: 0x91B1, //CJK UNIFIED IDEOGRAPH - 0xE178: 0x91B2, //CJK UNIFIED IDEOGRAPH - 0xE179: 0x91B3, //CJK UNIFIED IDEOGRAPH - 0xE17A: 0x91B6, //CJK UNIFIED IDEOGRAPH - 0xE17B: 0x91B7, //CJK UNIFIED IDEOGRAPH - 0xE17C: 0x91B8, //CJK UNIFIED IDEOGRAPH - 0xE17D: 0x91B9, //CJK UNIFIED IDEOGRAPH - 0xE17E: 0x91BB, //CJK UNIFIED IDEOGRAPH - 0xE180: 0x91BC, //CJK UNIFIED IDEOGRAPH - 0xE181: 0x91BD, //CJK UNIFIED IDEOGRAPH - 0xE182: 0x91BE, //CJK UNIFIED IDEOGRAPH - 0xE183: 0x91BF, //CJK UNIFIED IDEOGRAPH - 0xE184: 0x91C0, //CJK UNIFIED IDEOGRAPH - 0xE185: 0x91C1, //CJK UNIFIED IDEOGRAPH - 0xE186: 0x91C2, //CJK UNIFIED IDEOGRAPH - 0xE187: 0x91C3, //CJK UNIFIED IDEOGRAPH - 0xE188: 0x91C4, //CJK UNIFIED IDEOGRAPH - 0xE189: 0x91C5, //CJK UNIFIED IDEOGRAPH - 0xE18A: 0x91C6, //CJK UNIFIED IDEOGRAPH - 0xE18B: 0x91C8, //CJK UNIFIED IDEOGRAPH - 0xE18C: 0x91CB, //CJK UNIFIED IDEOGRAPH - 0xE18D: 0x91D0, //CJK UNIFIED IDEOGRAPH - 0xE18E: 0x91D2, //CJK UNIFIED IDEOGRAPH - 0xE18F: 0x91D3, //CJK UNIFIED IDEOGRAPH - 0xE190: 0x91D4, //CJK UNIFIED IDEOGRAPH - 0xE191: 0x91D5, //CJK UNIFIED IDEOGRAPH - 0xE192: 0x91D6, //CJK UNIFIED IDEOGRAPH - 0xE193: 0x91D7, //CJK UNIFIED IDEOGRAPH - 0xE194: 0x91D8, //CJK UNIFIED IDEOGRAPH - 0xE195: 0x91D9, //CJK UNIFIED IDEOGRAPH - 0xE196: 0x91DA, //CJK UNIFIED IDEOGRAPH - 0xE197: 0x91DB, //CJK UNIFIED IDEOGRAPH - 0xE198: 0x91DD, //CJK UNIFIED IDEOGRAPH - 0xE199: 0x91DE, //CJK UNIFIED IDEOGRAPH - 0xE19A: 0x91DF, //CJK UNIFIED IDEOGRAPH - 0xE19B: 0x91E0, //CJK UNIFIED IDEOGRAPH - 0xE19C: 0x91E1, //CJK UNIFIED IDEOGRAPH - 0xE19D: 0x91E2, //CJK UNIFIED IDEOGRAPH - 0xE19E: 0x91E3, //CJK UNIFIED IDEOGRAPH - 0xE19F: 0x91E4, //CJK UNIFIED IDEOGRAPH - 0xE1A0: 0x91E5, //CJK UNIFIED IDEOGRAPH - 0xE1A1: 0x5E37, //CJK UNIFIED IDEOGRAPH - 0xE1A2: 0x5E44, //CJK UNIFIED IDEOGRAPH - 0xE1A3: 0x5E54, //CJK UNIFIED IDEOGRAPH - 0xE1A4: 0x5E5B, //CJK UNIFIED IDEOGRAPH - 0xE1A5: 0x5E5E, //CJK UNIFIED IDEOGRAPH - 0xE1A6: 0x5E61, //CJK UNIFIED IDEOGRAPH - 0xE1A7: 0x5C8C, //CJK UNIFIED IDEOGRAPH - 0xE1A8: 0x5C7A, //CJK UNIFIED IDEOGRAPH - 0xE1A9: 0x5C8D, //CJK UNIFIED IDEOGRAPH - 0xE1AA: 0x5C90, //CJK UNIFIED IDEOGRAPH - 0xE1AB: 0x5C96, //CJK UNIFIED IDEOGRAPH - 0xE1AC: 0x5C88, //CJK UNIFIED IDEOGRAPH - 0xE1AD: 0x5C98, //CJK UNIFIED IDEOGRAPH - 0xE1AE: 0x5C99, //CJK UNIFIED IDEOGRAPH - 0xE1AF: 0x5C91, //CJK UNIFIED IDEOGRAPH - 0xE1B0: 0x5C9A, //CJK UNIFIED IDEOGRAPH - 0xE1B1: 0x5C9C, //CJK UNIFIED IDEOGRAPH - 0xE1B2: 0x5CB5, //CJK UNIFIED IDEOGRAPH - 0xE1B3: 0x5CA2, //CJK UNIFIED IDEOGRAPH - 0xE1B4: 0x5CBD, //CJK UNIFIED IDEOGRAPH - 0xE1B5: 0x5CAC, //CJK UNIFIED IDEOGRAPH - 0xE1B6: 0x5CAB, //CJK UNIFIED IDEOGRAPH - 0xE1B7: 0x5CB1, //CJK UNIFIED IDEOGRAPH - 0xE1B8: 0x5CA3, //CJK UNIFIED IDEOGRAPH - 0xE1B9: 0x5CC1, //CJK UNIFIED IDEOGRAPH - 0xE1BA: 0x5CB7, //CJK UNIFIED IDEOGRAPH - 0xE1BB: 0x5CC4, //CJK UNIFIED IDEOGRAPH - 0xE1BC: 0x5CD2, //CJK UNIFIED IDEOGRAPH - 0xE1BD: 0x5CE4, //CJK UNIFIED IDEOGRAPH - 0xE1BE: 0x5CCB, //CJK UNIFIED IDEOGRAPH - 0xE1BF: 0x5CE5, //CJK UNIFIED IDEOGRAPH - 0xE1C0: 0x5D02, //CJK UNIFIED IDEOGRAPH - 0xE1C1: 0x5D03, //CJK UNIFIED IDEOGRAPH - 0xE1C2: 0x5D27, //CJK UNIFIED IDEOGRAPH - 0xE1C3: 0x5D26, //CJK UNIFIED IDEOGRAPH - 0xE1C4: 0x5D2E, //CJK UNIFIED IDEOGRAPH - 0xE1C5: 0x5D24, //CJK UNIFIED IDEOGRAPH - 0xE1C6: 0x5D1E, //CJK UNIFIED IDEOGRAPH - 0xE1C7: 0x5D06, //CJK UNIFIED IDEOGRAPH - 0xE1C8: 0x5D1B, //CJK UNIFIED IDEOGRAPH - 0xE1C9: 0x5D58, //CJK UNIFIED IDEOGRAPH - 0xE1CA: 0x5D3E, //CJK UNIFIED IDEOGRAPH - 0xE1CB: 0x5D34, //CJK UNIFIED IDEOGRAPH - 0xE1CC: 0x5D3D, //CJK UNIFIED IDEOGRAPH - 0xE1CD: 0x5D6C, //CJK UNIFIED IDEOGRAPH - 0xE1CE: 0x5D5B, //CJK UNIFIED IDEOGRAPH - 0xE1CF: 0x5D6F, //CJK UNIFIED IDEOGRAPH - 0xE1D0: 0x5D5D, //CJK UNIFIED IDEOGRAPH - 0xE1D1: 0x5D6B, //CJK UNIFIED IDEOGRAPH - 0xE1D2: 0x5D4B, //CJK UNIFIED IDEOGRAPH - 0xE1D3: 0x5D4A, //CJK UNIFIED IDEOGRAPH - 0xE1D4: 0x5D69, //CJK UNIFIED IDEOGRAPH - 0xE1D5: 0x5D74, //CJK UNIFIED IDEOGRAPH - 0xE1D6: 0x5D82, //CJK UNIFIED IDEOGRAPH - 0xE1D7: 0x5D99, //CJK UNIFIED IDEOGRAPH - 0xE1D8: 0x5D9D, //CJK UNIFIED IDEOGRAPH - 0xE1D9: 0x8C73, //CJK UNIFIED IDEOGRAPH - 0xE1DA: 0x5DB7, //CJK UNIFIED IDEOGRAPH - 0xE1DB: 0x5DC5, //CJK UNIFIED IDEOGRAPH - 0xE1DC: 0x5F73, //CJK UNIFIED IDEOGRAPH - 0xE1DD: 0x5F77, //CJK UNIFIED IDEOGRAPH - 0xE1DE: 0x5F82, //CJK UNIFIED IDEOGRAPH - 0xE1DF: 0x5F87, //CJK UNIFIED IDEOGRAPH - 0xE1E0: 0x5F89, //CJK UNIFIED IDEOGRAPH - 0xE1E1: 0x5F8C, //CJK UNIFIED IDEOGRAPH - 0xE1E2: 0x5F95, //CJK UNIFIED IDEOGRAPH - 0xE1E3: 0x5F99, //CJK UNIFIED IDEOGRAPH - 0xE1E4: 0x5F9C, //CJK UNIFIED IDEOGRAPH - 0xE1E5: 0x5FA8, //CJK UNIFIED IDEOGRAPH - 0xE1E6: 0x5FAD, //CJK UNIFIED IDEOGRAPH - 0xE1E7: 0x5FB5, //CJK UNIFIED IDEOGRAPH - 0xE1E8: 0x5FBC, //CJK UNIFIED IDEOGRAPH - 0xE1E9: 0x8862, //CJK UNIFIED IDEOGRAPH - 0xE1EA: 0x5F61, //CJK UNIFIED IDEOGRAPH - 0xE1EB: 0x72AD, //CJK UNIFIED IDEOGRAPH - 0xE1EC: 0x72B0, //CJK UNIFIED IDEOGRAPH - 0xE1ED: 0x72B4, //CJK UNIFIED IDEOGRAPH - 0xE1EE: 0x72B7, //CJK UNIFIED IDEOGRAPH - 0xE1EF: 0x72B8, //CJK UNIFIED IDEOGRAPH - 0xE1F0: 0x72C3, //CJK UNIFIED IDEOGRAPH - 0xE1F1: 0x72C1, //CJK UNIFIED IDEOGRAPH - 0xE1F2: 0x72CE, //CJK UNIFIED IDEOGRAPH - 0xE1F3: 0x72CD, //CJK UNIFIED IDEOGRAPH - 0xE1F4: 0x72D2, //CJK UNIFIED IDEOGRAPH - 0xE1F5: 0x72E8, //CJK UNIFIED IDEOGRAPH - 0xE1F6: 0x72EF, //CJK UNIFIED IDEOGRAPH - 0xE1F7: 0x72E9, //CJK UNIFIED IDEOGRAPH - 0xE1F8: 0x72F2, //CJK UNIFIED IDEOGRAPH - 0xE1F9: 0x72F4, //CJK UNIFIED IDEOGRAPH - 0xE1FA: 0x72F7, //CJK UNIFIED IDEOGRAPH - 0xE1FB: 0x7301, //CJK UNIFIED IDEOGRAPH - 0xE1FC: 0x72F3, //CJK UNIFIED IDEOGRAPH - 0xE1FD: 0x7303, //CJK UNIFIED IDEOGRAPH - 0xE1FE: 0x72FA, //CJK UNIFIED IDEOGRAPH - 0xE240: 0x91E6, //CJK UNIFIED IDEOGRAPH - 0xE241: 0x91E7, //CJK UNIFIED IDEOGRAPH - 0xE242: 0x91E8, //CJK UNIFIED IDEOGRAPH - 0xE243: 0x91E9, //CJK UNIFIED IDEOGRAPH - 0xE244: 0x91EA, //CJK UNIFIED IDEOGRAPH - 0xE245: 0x91EB, //CJK UNIFIED IDEOGRAPH - 0xE246: 0x91EC, //CJK UNIFIED IDEOGRAPH - 0xE247: 0x91ED, //CJK UNIFIED IDEOGRAPH - 0xE248: 0x91EE, //CJK UNIFIED IDEOGRAPH - 0xE249: 0x91EF, //CJK UNIFIED IDEOGRAPH - 0xE24A: 0x91F0, //CJK UNIFIED IDEOGRAPH - 0xE24B: 0x91F1, //CJK UNIFIED IDEOGRAPH - 0xE24C: 0x91F2, //CJK UNIFIED IDEOGRAPH - 0xE24D: 0x91F3, //CJK UNIFIED IDEOGRAPH - 0xE24E: 0x91F4, //CJK UNIFIED IDEOGRAPH - 0xE24F: 0x91F5, //CJK UNIFIED IDEOGRAPH - 0xE250: 0x91F6, //CJK UNIFIED IDEOGRAPH - 0xE251: 0x91F7, //CJK UNIFIED IDEOGRAPH - 0xE252: 0x91F8, //CJK UNIFIED IDEOGRAPH - 0xE253: 0x91F9, //CJK UNIFIED IDEOGRAPH - 0xE254: 0x91FA, //CJK UNIFIED IDEOGRAPH - 0xE255: 0x91FB, //CJK UNIFIED IDEOGRAPH - 0xE256: 0x91FC, //CJK UNIFIED IDEOGRAPH - 0xE257: 0x91FD, //CJK UNIFIED IDEOGRAPH - 0xE258: 0x91FE, //CJK UNIFIED IDEOGRAPH - 0xE259: 0x91FF, //CJK UNIFIED IDEOGRAPH - 0xE25A: 0x9200, //CJK UNIFIED IDEOGRAPH - 0xE25B: 0x9201, //CJK UNIFIED IDEOGRAPH - 0xE25C: 0x9202, //CJK UNIFIED IDEOGRAPH - 0xE25D: 0x9203, //CJK UNIFIED IDEOGRAPH - 0xE25E: 0x9204, //CJK UNIFIED IDEOGRAPH - 0xE25F: 0x9205, //CJK UNIFIED IDEOGRAPH - 0xE260: 0x9206, //CJK UNIFIED IDEOGRAPH - 0xE261: 0x9207, //CJK UNIFIED IDEOGRAPH - 0xE262: 0x9208, //CJK UNIFIED IDEOGRAPH - 0xE263: 0x9209, //CJK UNIFIED IDEOGRAPH - 0xE264: 0x920A, //CJK UNIFIED IDEOGRAPH - 0xE265: 0x920B, //CJK UNIFIED IDEOGRAPH - 0xE266: 0x920C, //CJK UNIFIED IDEOGRAPH - 0xE267: 0x920D, //CJK UNIFIED IDEOGRAPH - 0xE268: 0x920E, //CJK UNIFIED IDEOGRAPH - 0xE269: 0x920F, //CJK UNIFIED IDEOGRAPH - 0xE26A: 0x9210, //CJK UNIFIED IDEOGRAPH - 0xE26B: 0x9211, //CJK UNIFIED IDEOGRAPH - 0xE26C: 0x9212, //CJK UNIFIED IDEOGRAPH - 0xE26D: 0x9213, //CJK UNIFIED IDEOGRAPH - 0xE26E: 0x9214, //CJK UNIFIED IDEOGRAPH - 0xE26F: 0x9215, //CJK UNIFIED IDEOGRAPH - 0xE270: 0x9216, //CJK UNIFIED IDEOGRAPH - 0xE271: 0x9217, //CJK UNIFIED IDEOGRAPH - 0xE272: 0x9218, //CJK UNIFIED IDEOGRAPH - 0xE273: 0x9219, //CJK UNIFIED IDEOGRAPH - 0xE274: 0x921A, //CJK UNIFIED IDEOGRAPH - 0xE275: 0x921B, //CJK UNIFIED IDEOGRAPH - 0xE276: 0x921C, //CJK UNIFIED IDEOGRAPH - 0xE277: 0x921D, //CJK UNIFIED IDEOGRAPH - 0xE278: 0x921E, //CJK UNIFIED IDEOGRAPH - 0xE279: 0x921F, //CJK UNIFIED IDEOGRAPH - 0xE27A: 0x9220, //CJK UNIFIED IDEOGRAPH - 0xE27B: 0x9221, //CJK UNIFIED IDEOGRAPH - 0xE27C: 0x9222, //CJK UNIFIED IDEOGRAPH - 0xE27D: 0x9223, //CJK UNIFIED IDEOGRAPH - 0xE27E: 0x9224, //CJK UNIFIED IDEOGRAPH - 0xE280: 0x9225, //CJK UNIFIED IDEOGRAPH - 0xE281: 0x9226, //CJK UNIFIED IDEOGRAPH - 0xE282: 0x9227, //CJK UNIFIED IDEOGRAPH - 0xE283: 0x9228, //CJK UNIFIED IDEOGRAPH - 0xE284: 0x9229, //CJK UNIFIED IDEOGRAPH - 0xE285: 0x922A, //CJK UNIFIED IDEOGRAPH - 0xE286: 0x922B, //CJK UNIFIED IDEOGRAPH - 0xE287: 0x922C, //CJK UNIFIED IDEOGRAPH - 0xE288: 0x922D, //CJK UNIFIED IDEOGRAPH - 0xE289: 0x922E, //CJK UNIFIED IDEOGRAPH - 0xE28A: 0x922F, //CJK UNIFIED IDEOGRAPH - 0xE28B: 0x9230, //CJK UNIFIED IDEOGRAPH - 0xE28C: 0x9231, //CJK UNIFIED IDEOGRAPH - 0xE28D: 0x9232, //CJK UNIFIED IDEOGRAPH - 0xE28E: 0x9233, //CJK UNIFIED IDEOGRAPH - 0xE28F: 0x9234, //CJK UNIFIED IDEOGRAPH - 0xE290: 0x9235, //CJK UNIFIED IDEOGRAPH - 0xE291: 0x9236, //CJK UNIFIED IDEOGRAPH - 0xE292: 0x9237, //CJK UNIFIED IDEOGRAPH - 0xE293: 0x9238, //CJK UNIFIED IDEOGRAPH - 0xE294: 0x9239, //CJK UNIFIED IDEOGRAPH - 0xE295: 0x923A, //CJK UNIFIED IDEOGRAPH - 0xE296: 0x923B, //CJK UNIFIED IDEOGRAPH - 0xE297: 0x923C, //CJK UNIFIED IDEOGRAPH - 0xE298: 0x923D, //CJK UNIFIED IDEOGRAPH - 0xE299: 0x923E, //CJK UNIFIED IDEOGRAPH - 0xE29A: 0x923F, //CJK UNIFIED IDEOGRAPH - 0xE29B: 0x9240, //CJK UNIFIED IDEOGRAPH - 0xE29C: 0x9241, //CJK UNIFIED IDEOGRAPH - 0xE29D: 0x9242, //CJK UNIFIED IDEOGRAPH - 0xE29E: 0x9243, //CJK UNIFIED IDEOGRAPH - 0xE29F: 0x9244, //CJK UNIFIED IDEOGRAPH - 0xE2A0: 0x9245, //CJK UNIFIED IDEOGRAPH - 0xE2A1: 0x72FB, //CJK UNIFIED IDEOGRAPH - 0xE2A2: 0x7317, //CJK UNIFIED IDEOGRAPH - 0xE2A3: 0x7313, //CJK UNIFIED IDEOGRAPH - 0xE2A4: 0x7321, //CJK UNIFIED IDEOGRAPH - 0xE2A5: 0x730A, //CJK UNIFIED IDEOGRAPH - 0xE2A6: 0x731E, //CJK UNIFIED IDEOGRAPH - 0xE2A7: 0x731D, //CJK UNIFIED IDEOGRAPH - 0xE2A8: 0x7315, //CJK UNIFIED IDEOGRAPH - 0xE2A9: 0x7322, //CJK UNIFIED IDEOGRAPH - 0xE2AA: 0x7339, //CJK UNIFIED IDEOGRAPH - 0xE2AB: 0x7325, //CJK UNIFIED IDEOGRAPH - 0xE2AC: 0x732C, //CJK UNIFIED IDEOGRAPH - 0xE2AD: 0x7338, //CJK UNIFIED IDEOGRAPH - 0xE2AE: 0x7331, //CJK UNIFIED IDEOGRAPH - 0xE2AF: 0x7350, //CJK UNIFIED IDEOGRAPH - 0xE2B0: 0x734D, //CJK UNIFIED IDEOGRAPH - 0xE2B1: 0x7357, //CJK UNIFIED IDEOGRAPH - 0xE2B2: 0x7360, //CJK UNIFIED IDEOGRAPH - 0xE2B3: 0x736C, //CJK UNIFIED IDEOGRAPH - 0xE2B4: 0x736F, //CJK UNIFIED IDEOGRAPH - 0xE2B5: 0x737E, //CJK UNIFIED IDEOGRAPH - 0xE2B6: 0x821B, //CJK UNIFIED IDEOGRAPH - 0xE2B7: 0x5925, //CJK UNIFIED IDEOGRAPH - 0xE2B8: 0x98E7, //CJK UNIFIED IDEOGRAPH - 0xE2B9: 0x5924, //CJK UNIFIED IDEOGRAPH - 0xE2BA: 0x5902, //CJK UNIFIED IDEOGRAPH - 0xE2BB: 0x9963, //CJK UNIFIED IDEOGRAPH - 0xE2BC: 0x9967, //CJK UNIFIED IDEOGRAPH - 0xE2BD: 0x9968, //CJK UNIFIED IDEOGRAPH - 0xE2BE: 0x9969, //CJK UNIFIED IDEOGRAPH - 0xE2BF: 0x996A, //CJK UNIFIED IDEOGRAPH - 0xE2C0: 0x996B, //CJK UNIFIED IDEOGRAPH - 0xE2C1: 0x996C, //CJK UNIFIED IDEOGRAPH - 0xE2C2: 0x9974, //CJK UNIFIED IDEOGRAPH - 0xE2C3: 0x9977, //CJK UNIFIED IDEOGRAPH - 0xE2C4: 0x997D, //CJK UNIFIED IDEOGRAPH - 0xE2C5: 0x9980, //CJK UNIFIED IDEOGRAPH - 0xE2C6: 0x9984, //CJK UNIFIED IDEOGRAPH - 0xE2C7: 0x9987, //CJK UNIFIED IDEOGRAPH - 0xE2C8: 0x998A, //CJK UNIFIED IDEOGRAPH - 0xE2C9: 0x998D, //CJK UNIFIED IDEOGRAPH - 0xE2CA: 0x9990, //CJK UNIFIED IDEOGRAPH - 0xE2CB: 0x9991, //CJK UNIFIED IDEOGRAPH - 0xE2CC: 0x9993, //CJK UNIFIED IDEOGRAPH - 0xE2CD: 0x9994, //CJK UNIFIED IDEOGRAPH - 0xE2CE: 0x9995, //CJK UNIFIED IDEOGRAPH - 0xE2CF: 0x5E80, //CJK UNIFIED IDEOGRAPH - 0xE2D0: 0x5E91, //CJK UNIFIED IDEOGRAPH - 0xE2D1: 0x5E8B, //CJK UNIFIED IDEOGRAPH - 0xE2D2: 0x5E96, //CJK UNIFIED IDEOGRAPH - 0xE2D3: 0x5EA5, //CJK UNIFIED IDEOGRAPH - 0xE2D4: 0x5EA0, //CJK UNIFIED IDEOGRAPH - 0xE2D5: 0x5EB9, //CJK UNIFIED IDEOGRAPH - 0xE2D6: 0x5EB5, //CJK UNIFIED IDEOGRAPH - 0xE2D7: 0x5EBE, //CJK UNIFIED IDEOGRAPH - 0xE2D8: 0x5EB3, //CJK UNIFIED IDEOGRAPH - 0xE2D9: 0x8D53, //CJK UNIFIED IDEOGRAPH - 0xE2DA: 0x5ED2, //CJK UNIFIED IDEOGRAPH - 0xE2DB: 0x5ED1, //CJK UNIFIED IDEOGRAPH - 0xE2DC: 0x5EDB, //CJK UNIFIED IDEOGRAPH - 0xE2DD: 0x5EE8, //CJK UNIFIED IDEOGRAPH - 0xE2DE: 0x5EEA, //CJK UNIFIED IDEOGRAPH - 0xE2DF: 0x81BA, //CJK UNIFIED IDEOGRAPH - 0xE2E0: 0x5FC4, //CJK UNIFIED IDEOGRAPH - 0xE2E1: 0x5FC9, //CJK UNIFIED IDEOGRAPH - 0xE2E2: 0x5FD6, //CJK UNIFIED IDEOGRAPH - 0xE2E3: 0x5FCF, //CJK UNIFIED IDEOGRAPH - 0xE2E4: 0x6003, //CJK UNIFIED IDEOGRAPH - 0xE2E5: 0x5FEE, //CJK UNIFIED IDEOGRAPH - 0xE2E6: 0x6004, //CJK UNIFIED IDEOGRAPH - 0xE2E7: 0x5FE1, //CJK UNIFIED IDEOGRAPH - 0xE2E8: 0x5FE4, //CJK UNIFIED IDEOGRAPH - 0xE2E9: 0x5FFE, //CJK UNIFIED IDEOGRAPH - 0xE2EA: 0x6005, //CJK UNIFIED IDEOGRAPH - 0xE2EB: 0x6006, //CJK UNIFIED IDEOGRAPH - 0xE2EC: 0x5FEA, //CJK UNIFIED IDEOGRAPH - 0xE2ED: 0x5FED, //CJK UNIFIED IDEOGRAPH - 0xE2EE: 0x5FF8, //CJK UNIFIED IDEOGRAPH - 0xE2EF: 0x6019, //CJK UNIFIED IDEOGRAPH - 0xE2F0: 0x6035, //CJK UNIFIED IDEOGRAPH - 0xE2F1: 0x6026, //CJK UNIFIED IDEOGRAPH - 0xE2F2: 0x601B, //CJK UNIFIED IDEOGRAPH - 0xE2F3: 0x600F, //CJK UNIFIED IDEOGRAPH - 0xE2F4: 0x600D, //CJK UNIFIED IDEOGRAPH - 0xE2F5: 0x6029, //CJK UNIFIED IDEOGRAPH - 0xE2F6: 0x602B, //CJK UNIFIED IDEOGRAPH - 0xE2F7: 0x600A, //CJK UNIFIED IDEOGRAPH - 0xE2F8: 0x603F, //CJK UNIFIED IDEOGRAPH - 0xE2F9: 0x6021, //CJK UNIFIED IDEOGRAPH - 0xE2FA: 0x6078, //CJK UNIFIED IDEOGRAPH - 0xE2FB: 0x6079, //CJK UNIFIED IDEOGRAPH - 0xE2FC: 0x607B, //CJK UNIFIED IDEOGRAPH - 0xE2FD: 0x607A, //CJK UNIFIED IDEOGRAPH - 0xE2FE: 0x6042, //CJK UNIFIED IDEOGRAPH - 0xE340: 0x9246, //CJK UNIFIED IDEOGRAPH - 0xE341: 0x9247, //CJK UNIFIED IDEOGRAPH - 0xE342: 0x9248, //CJK UNIFIED IDEOGRAPH - 0xE343: 0x9249, //CJK UNIFIED IDEOGRAPH - 0xE344: 0x924A, //CJK UNIFIED IDEOGRAPH - 0xE345: 0x924B, //CJK UNIFIED IDEOGRAPH - 0xE346: 0x924C, //CJK UNIFIED IDEOGRAPH - 0xE347: 0x924D, //CJK UNIFIED IDEOGRAPH - 0xE348: 0x924E, //CJK UNIFIED IDEOGRAPH - 0xE349: 0x924F, //CJK UNIFIED IDEOGRAPH - 0xE34A: 0x9250, //CJK UNIFIED IDEOGRAPH - 0xE34B: 0x9251, //CJK UNIFIED IDEOGRAPH - 0xE34C: 0x9252, //CJK UNIFIED IDEOGRAPH - 0xE34D: 0x9253, //CJK UNIFIED IDEOGRAPH - 0xE34E: 0x9254, //CJK UNIFIED IDEOGRAPH - 0xE34F: 0x9255, //CJK UNIFIED IDEOGRAPH - 0xE350: 0x9256, //CJK UNIFIED IDEOGRAPH - 0xE351: 0x9257, //CJK UNIFIED IDEOGRAPH - 0xE352: 0x9258, //CJK UNIFIED IDEOGRAPH - 0xE353: 0x9259, //CJK UNIFIED IDEOGRAPH - 0xE354: 0x925A, //CJK UNIFIED IDEOGRAPH - 0xE355: 0x925B, //CJK UNIFIED IDEOGRAPH - 0xE356: 0x925C, //CJK UNIFIED IDEOGRAPH - 0xE357: 0x925D, //CJK UNIFIED IDEOGRAPH - 0xE358: 0x925E, //CJK UNIFIED IDEOGRAPH - 0xE359: 0x925F, //CJK UNIFIED IDEOGRAPH - 0xE35A: 0x9260, //CJK UNIFIED IDEOGRAPH - 0xE35B: 0x9261, //CJK UNIFIED IDEOGRAPH - 0xE35C: 0x9262, //CJK UNIFIED IDEOGRAPH - 0xE35D: 0x9263, //CJK UNIFIED IDEOGRAPH - 0xE35E: 0x9264, //CJK UNIFIED IDEOGRAPH - 0xE35F: 0x9265, //CJK UNIFIED IDEOGRAPH - 0xE360: 0x9266, //CJK UNIFIED IDEOGRAPH - 0xE361: 0x9267, //CJK UNIFIED IDEOGRAPH - 0xE362: 0x9268, //CJK UNIFIED IDEOGRAPH - 0xE363: 0x9269, //CJK UNIFIED IDEOGRAPH - 0xE364: 0x926A, //CJK UNIFIED IDEOGRAPH - 0xE365: 0x926B, //CJK UNIFIED IDEOGRAPH - 0xE366: 0x926C, //CJK UNIFIED IDEOGRAPH - 0xE367: 0x926D, //CJK UNIFIED IDEOGRAPH - 0xE368: 0x926E, //CJK UNIFIED IDEOGRAPH - 0xE369: 0x926F, //CJK UNIFIED IDEOGRAPH - 0xE36A: 0x9270, //CJK UNIFIED IDEOGRAPH - 0xE36B: 0x9271, //CJK UNIFIED IDEOGRAPH - 0xE36C: 0x9272, //CJK UNIFIED IDEOGRAPH - 0xE36D: 0x9273, //CJK UNIFIED IDEOGRAPH - 0xE36E: 0x9275, //CJK UNIFIED IDEOGRAPH - 0xE36F: 0x9276, //CJK UNIFIED IDEOGRAPH - 0xE370: 0x9277, //CJK UNIFIED IDEOGRAPH - 0xE371: 0x9278, //CJK UNIFIED IDEOGRAPH - 0xE372: 0x9279, //CJK UNIFIED IDEOGRAPH - 0xE373: 0x927A, //CJK UNIFIED IDEOGRAPH - 0xE374: 0x927B, //CJK UNIFIED IDEOGRAPH - 0xE375: 0x927C, //CJK UNIFIED IDEOGRAPH - 0xE376: 0x927D, //CJK UNIFIED IDEOGRAPH - 0xE377: 0x927E, //CJK UNIFIED IDEOGRAPH - 0xE378: 0x927F, //CJK UNIFIED IDEOGRAPH - 0xE379: 0x9280, //CJK UNIFIED IDEOGRAPH - 0xE37A: 0x9281, //CJK UNIFIED IDEOGRAPH - 0xE37B: 0x9282, //CJK UNIFIED IDEOGRAPH - 0xE37C: 0x9283, //CJK UNIFIED IDEOGRAPH - 0xE37D: 0x9284, //CJK UNIFIED IDEOGRAPH - 0xE37E: 0x9285, //CJK UNIFIED IDEOGRAPH - 0xE380: 0x9286, //CJK UNIFIED IDEOGRAPH - 0xE381: 0x9287, //CJK UNIFIED IDEOGRAPH - 0xE382: 0x9288, //CJK UNIFIED IDEOGRAPH - 0xE383: 0x9289, //CJK UNIFIED IDEOGRAPH - 0xE384: 0x928A, //CJK UNIFIED IDEOGRAPH - 0xE385: 0x928B, //CJK UNIFIED IDEOGRAPH - 0xE386: 0x928C, //CJK UNIFIED IDEOGRAPH - 0xE387: 0x928D, //CJK UNIFIED IDEOGRAPH - 0xE388: 0x928F, //CJK UNIFIED IDEOGRAPH - 0xE389: 0x9290, //CJK UNIFIED IDEOGRAPH - 0xE38A: 0x9291, //CJK UNIFIED IDEOGRAPH - 0xE38B: 0x9292, //CJK UNIFIED IDEOGRAPH - 0xE38C: 0x9293, //CJK UNIFIED IDEOGRAPH - 0xE38D: 0x9294, //CJK UNIFIED IDEOGRAPH - 0xE38E: 0x9295, //CJK UNIFIED IDEOGRAPH - 0xE38F: 0x9296, //CJK UNIFIED IDEOGRAPH - 0xE390: 0x9297, //CJK UNIFIED IDEOGRAPH - 0xE391: 0x9298, //CJK UNIFIED IDEOGRAPH - 0xE392: 0x9299, //CJK UNIFIED IDEOGRAPH - 0xE393: 0x929A, //CJK UNIFIED IDEOGRAPH - 0xE394: 0x929B, //CJK UNIFIED IDEOGRAPH - 0xE395: 0x929C, //CJK UNIFIED IDEOGRAPH - 0xE396: 0x929D, //CJK UNIFIED IDEOGRAPH - 0xE397: 0x929E, //CJK UNIFIED IDEOGRAPH - 0xE398: 0x929F, //CJK UNIFIED IDEOGRAPH - 0xE399: 0x92A0, //CJK UNIFIED IDEOGRAPH - 0xE39A: 0x92A1, //CJK UNIFIED IDEOGRAPH - 0xE39B: 0x92A2, //CJK UNIFIED IDEOGRAPH - 0xE39C: 0x92A3, //CJK UNIFIED IDEOGRAPH - 0xE39D: 0x92A4, //CJK UNIFIED IDEOGRAPH - 0xE39E: 0x92A5, //CJK UNIFIED IDEOGRAPH - 0xE39F: 0x92A6, //CJK UNIFIED IDEOGRAPH - 0xE3A0: 0x92A7, //CJK UNIFIED IDEOGRAPH - 0xE3A1: 0x606A, //CJK UNIFIED IDEOGRAPH - 0xE3A2: 0x607D, //CJK UNIFIED IDEOGRAPH - 0xE3A3: 0x6096, //CJK UNIFIED IDEOGRAPH - 0xE3A4: 0x609A, //CJK UNIFIED IDEOGRAPH - 0xE3A5: 0x60AD, //CJK UNIFIED IDEOGRAPH - 0xE3A6: 0x609D, //CJK UNIFIED IDEOGRAPH - 0xE3A7: 0x6083, //CJK UNIFIED IDEOGRAPH - 0xE3A8: 0x6092, //CJK UNIFIED IDEOGRAPH - 0xE3A9: 0x608C, //CJK UNIFIED IDEOGRAPH - 0xE3AA: 0x609B, //CJK UNIFIED IDEOGRAPH - 0xE3AB: 0x60EC, //CJK UNIFIED IDEOGRAPH - 0xE3AC: 0x60BB, //CJK UNIFIED IDEOGRAPH - 0xE3AD: 0x60B1, //CJK UNIFIED IDEOGRAPH - 0xE3AE: 0x60DD, //CJK UNIFIED IDEOGRAPH - 0xE3AF: 0x60D8, //CJK UNIFIED IDEOGRAPH - 0xE3B0: 0x60C6, //CJK UNIFIED IDEOGRAPH - 0xE3B1: 0x60DA, //CJK UNIFIED IDEOGRAPH - 0xE3B2: 0x60B4, //CJK UNIFIED IDEOGRAPH - 0xE3B3: 0x6120, //CJK UNIFIED IDEOGRAPH - 0xE3B4: 0x6126, //CJK UNIFIED IDEOGRAPH - 0xE3B5: 0x6115, //CJK UNIFIED IDEOGRAPH - 0xE3B6: 0x6123, //CJK UNIFIED IDEOGRAPH - 0xE3B7: 0x60F4, //CJK UNIFIED IDEOGRAPH - 0xE3B8: 0x6100, //CJK UNIFIED IDEOGRAPH - 0xE3B9: 0x610E, //CJK UNIFIED IDEOGRAPH - 0xE3BA: 0x612B, //CJK UNIFIED IDEOGRAPH - 0xE3BB: 0x614A, //CJK UNIFIED IDEOGRAPH - 0xE3BC: 0x6175, //CJK UNIFIED IDEOGRAPH - 0xE3BD: 0x61AC, //CJK UNIFIED IDEOGRAPH - 0xE3BE: 0x6194, //CJK UNIFIED IDEOGRAPH - 0xE3BF: 0x61A7, //CJK UNIFIED IDEOGRAPH - 0xE3C0: 0x61B7, //CJK UNIFIED IDEOGRAPH - 0xE3C1: 0x61D4, //CJK UNIFIED IDEOGRAPH - 0xE3C2: 0x61F5, //CJK UNIFIED IDEOGRAPH - 0xE3C3: 0x5FDD, //CJK UNIFIED IDEOGRAPH - 0xE3C4: 0x96B3, //CJK UNIFIED IDEOGRAPH - 0xE3C5: 0x95E9, //CJK UNIFIED IDEOGRAPH - 0xE3C6: 0x95EB, //CJK UNIFIED IDEOGRAPH - 0xE3C7: 0x95F1, //CJK UNIFIED IDEOGRAPH - 0xE3C8: 0x95F3, //CJK UNIFIED IDEOGRAPH - 0xE3C9: 0x95F5, //CJK UNIFIED IDEOGRAPH - 0xE3CA: 0x95F6, //CJK UNIFIED IDEOGRAPH - 0xE3CB: 0x95FC, //CJK UNIFIED IDEOGRAPH - 0xE3CC: 0x95FE, //CJK UNIFIED IDEOGRAPH - 0xE3CD: 0x9603, //CJK UNIFIED IDEOGRAPH - 0xE3CE: 0x9604, //CJK UNIFIED IDEOGRAPH - 0xE3CF: 0x9606, //CJK UNIFIED IDEOGRAPH - 0xE3D0: 0x9608, //CJK UNIFIED IDEOGRAPH - 0xE3D1: 0x960A, //CJK UNIFIED IDEOGRAPH - 0xE3D2: 0x960B, //CJK UNIFIED IDEOGRAPH - 0xE3D3: 0x960C, //CJK UNIFIED IDEOGRAPH - 0xE3D4: 0x960D, //CJK UNIFIED IDEOGRAPH - 0xE3D5: 0x960F, //CJK UNIFIED IDEOGRAPH - 0xE3D6: 0x9612, //CJK UNIFIED IDEOGRAPH - 0xE3D7: 0x9615, //CJK UNIFIED IDEOGRAPH - 0xE3D8: 0x9616, //CJK UNIFIED IDEOGRAPH - 0xE3D9: 0x9617, //CJK UNIFIED IDEOGRAPH - 0xE3DA: 0x9619, //CJK UNIFIED IDEOGRAPH - 0xE3DB: 0x961A, //CJK UNIFIED IDEOGRAPH - 0xE3DC: 0x4E2C, //CJK UNIFIED IDEOGRAPH - 0xE3DD: 0x723F, //CJK UNIFIED IDEOGRAPH - 0xE3DE: 0x6215, //CJK UNIFIED IDEOGRAPH - 0xE3DF: 0x6C35, //CJK UNIFIED IDEOGRAPH - 0xE3E0: 0x6C54, //CJK UNIFIED IDEOGRAPH - 0xE3E1: 0x6C5C, //CJK UNIFIED IDEOGRAPH - 0xE3E2: 0x6C4A, //CJK UNIFIED IDEOGRAPH - 0xE3E3: 0x6CA3, //CJK UNIFIED IDEOGRAPH - 0xE3E4: 0x6C85, //CJK UNIFIED IDEOGRAPH - 0xE3E5: 0x6C90, //CJK UNIFIED IDEOGRAPH - 0xE3E6: 0x6C94, //CJK UNIFIED IDEOGRAPH - 0xE3E7: 0x6C8C, //CJK UNIFIED IDEOGRAPH - 0xE3E8: 0x6C68, //CJK UNIFIED IDEOGRAPH - 0xE3E9: 0x6C69, //CJK UNIFIED IDEOGRAPH - 0xE3EA: 0x6C74, //CJK UNIFIED IDEOGRAPH - 0xE3EB: 0x6C76, //CJK UNIFIED IDEOGRAPH - 0xE3EC: 0x6C86, //CJK UNIFIED IDEOGRAPH - 0xE3ED: 0x6CA9, //CJK UNIFIED IDEOGRAPH - 0xE3EE: 0x6CD0, //CJK UNIFIED IDEOGRAPH - 0xE3EF: 0x6CD4, //CJK UNIFIED IDEOGRAPH - 0xE3F0: 0x6CAD, //CJK UNIFIED IDEOGRAPH - 0xE3F1: 0x6CF7, //CJK UNIFIED IDEOGRAPH - 0xE3F2: 0x6CF8, //CJK UNIFIED IDEOGRAPH - 0xE3F3: 0x6CF1, //CJK UNIFIED IDEOGRAPH - 0xE3F4: 0x6CD7, //CJK UNIFIED IDEOGRAPH - 0xE3F5: 0x6CB2, //CJK UNIFIED IDEOGRAPH - 0xE3F6: 0x6CE0, //CJK UNIFIED IDEOGRAPH - 0xE3F7: 0x6CD6, //CJK UNIFIED IDEOGRAPH - 0xE3F8: 0x6CFA, //CJK UNIFIED IDEOGRAPH - 0xE3F9: 0x6CEB, //CJK UNIFIED IDEOGRAPH - 0xE3FA: 0x6CEE, //CJK UNIFIED IDEOGRAPH - 0xE3FB: 0x6CB1, //CJK UNIFIED IDEOGRAPH - 0xE3FC: 0x6CD3, //CJK UNIFIED IDEOGRAPH - 0xE3FD: 0x6CEF, //CJK UNIFIED IDEOGRAPH - 0xE3FE: 0x6CFE, //CJK UNIFIED IDEOGRAPH - 0xE440: 0x92A8, //CJK UNIFIED IDEOGRAPH - 0xE441: 0x92A9, //CJK UNIFIED IDEOGRAPH - 0xE442: 0x92AA, //CJK UNIFIED IDEOGRAPH - 0xE443: 0x92AB, //CJK UNIFIED IDEOGRAPH - 0xE444: 0x92AC, //CJK UNIFIED IDEOGRAPH - 0xE445: 0x92AD, //CJK UNIFIED IDEOGRAPH - 0xE446: 0x92AF, //CJK UNIFIED IDEOGRAPH - 0xE447: 0x92B0, //CJK UNIFIED IDEOGRAPH - 0xE448: 0x92B1, //CJK UNIFIED IDEOGRAPH - 0xE449: 0x92B2, //CJK UNIFIED IDEOGRAPH - 0xE44A: 0x92B3, //CJK UNIFIED IDEOGRAPH - 0xE44B: 0x92B4, //CJK UNIFIED IDEOGRAPH - 0xE44C: 0x92B5, //CJK UNIFIED IDEOGRAPH - 0xE44D: 0x92B6, //CJK UNIFIED IDEOGRAPH - 0xE44E: 0x92B7, //CJK UNIFIED IDEOGRAPH - 0xE44F: 0x92B8, //CJK UNIFIED IDEOGRAPH - 0xE450: 0x92B9, //CJK UNIFIED IDEOGRAPH - 0xE451: 0x92BA, //CJK UNIFIED IDEOGRAPH - 0xE452: 0x92BB, //CJK UNIFIED IDEOGRAPH - 0xE453: 0x92BC, //CJK UNIFIED IDEOGRAPH - 0xE454: 0x92BD, //CJK UNIFIED IDEOGRAPH - 0xE455: 0x92BE, //CJK UNIFIED IDEOGRAPH - 0xE456: 0x92BF, //CJK UNIFIED IDEOGRAPH - 0xE457: 0x92C0, //CJK UNIFIED IDEOGRAPH - 0xE458: 0x92C1, //CJK UNIFIED IDEOGRAPH - 0xE459: 0x92C2, //CJK UNIFIED IDEOGRAPH - 0xE45A: 0x92C3, //CJK UNIFIED IDEOGRAPH - 0xE45B: 0x92C4, //CJK UNIFIED IDEOGRAPH - 0xE45C: 0x92C5, //CJK UNIFIED IDEOGRAPH - 0xE45D: 0x92C6, //CJK UNIFIED IDEOGRAPH - 0xE45E: 0x92C7, //CJK UNIFIED IDEOGRAPH - 0xE45F: 0x92C9, //CJK UNIFIED IDEOGRAPH - 0xE460: 0x92CA, //CJK UNIFIED IDEOGRAPH - 0xE461: 0x92CB, //CJK UNIFIED IDEOGRAPH - 0xE462: 0x92CC, //CJK UNIFIED IDEOGRAPH - 0xE463: 0x92CD, //CJK UNIFIED IDEOGRAPH - 0xE464: 0x92CE, //CJK UNIFIED IDEOGRAPH - 0xE465: 0x92CF, //CJK UNIFIED IDEOGRAPH - 0xE466: 0x92D0, //CJK UNIFIED IDEOGRAPH - 0xE467: 0x92D1, //CJK UNIFIED IDEOGRAPH - 0xE468: 0x92D2, //CJK UNIFIED IDEOGRAPH - 0xE469: 0x92D3, //CJK UNIFIED IDEOGRAPH - 0xE46A: 0x92D4, //CJK UNIFIED IDEOGRAPH - 0xE46B: 0x92D5, //CJK UNIFIED IDEOGRAPH - 0xE46C: 0x92D6, //CJK UNIFIED IDEOGRAPH - 0xE46D: 0x92D7, //CJK UNIFIED IDEOGRAPH - 0xE46E: 0x92D8, //CJK UNIFIED IDEOGRAPH - 0xE46F: 0x92D9, //CJK UNIFIED IDEOGRAPH - 0xE470: 0x92DA, //CJK UNIFIED IDEOGRAPH - 0xE471: 0x92DB, //CJK UNIFIED IDEOGRAPH - 0xE472: 0x92DC, //CJK UNIFIED IDEOGRAPH - 0xE473: 0x92DD, //CJK UNIFIED IDEOGRAPH - 0xE474: 0x92DE, //CJK UNIFIED IDEOGRAPH - 0xE475: 0x92DF, //CJK UNIFIED IDEOGRAPH - 0xE476: 0x92E0, //CJK UNIFIED IDEOGRAPH - 0xE477: 0x92E1, //CJK UNIFIED IDEOGRAPH - 0xE478: 0x92E2, //CJK UNIFIED IDEOGRAPH - 0xE479: 0x92E3, //CJK UNIFIED IDEOGRAPH - 0xE47A: 0x92E4, //CJK UNIFIED IDEOGRAPH - 0xE47B: 0x92E5, //CJK UNIFIED IDEOGRAPH - 0xE47C: 0x92E6, //CJK UNIFIED IDEOGRAPH - 0xE47D: 0x92E7, //CJK UNIFIED IDEOGRAPH - 0xE47E: 0x92E8, //CJK UNIFIED IDEOGRAPH - 0xE480: 0x92E9, //CJK UNIFIED IDEOGRAPH - 0xE481: 0x92EA, //CJK UNIFIED IDEOGRAPH - 0xE482: 0x92EB, //CJK UNIFIED IDEOGRAPH - 0xE483: 0x92EC, //CJK UNIFIED IDEOGRAPH - 0xE484: 0x92ED, //CJK UNIFIED IDEOGRAPH - 0xE485: 0x92EE, //CJK UNIFIED IDEOGRAPH - 0xE486: 0x92EF, //CJK UNIFIED IDEOGRAPH - 0xE487: 0x92F0, //CJK UNIFIED IDEOGRAPH - 0xE488: 0x92F1, //CJK UNIFIED IDEOGRAPH - 0xE489: 0x92F2, //CJK UNIFIED IDEOGRAPH - 0xE48A: 0x92F3, //CJK UNIFIED IDEOGRAPH - 0xE48B: 0x92F4, //CJK UNIFIED IDEOGRAPH - 0xE48C: 0x92F5, //CJK UNIFIED IDEOGRAPH - 0xE48D: 0x92F6, //CJK UNIFIED IDEOGRAPH - 0xE48E: 0x92F7, //CJK UNIFIED IDEOGRAPH - 0xE48F: 0x92F8, //CJK UNIFIED IDEOGRAPH - 0xE490: 0x92F9, //CJK UNIFIED IDEOGRAPH - 0xE491: 0x92FA, //CJK UNIFIED IDEOGRAPH - 0xE492: 0x92FB, //CJK UNIFIED IDEOGRAPH - 0xE493: 0x92FC, //CJK UNIFIED IDEOGRAPH - 0xE494: 0x92FD, //CJK UNIFIED IDEOGRAPH - 0xE495: 0x92FE, //CJK UNIFIED IDEOGRAPH - 0xE496: 0x92FF, //CJK UNIFIED IDEOGRAPH - 0xE497: 0x9300, //CJK UNIFIED IDEOGRAPH - 0xE498: 0x9301, //CJK UNIFIED IDEOGRAPH - 0xE499: 0x9302, //CJK UNIFIED IDEOGRAPH - 0xE49A: 0x9303, //CJK UNIFIED IDEOGRAPH - 0xE49B: 0x9304, //CJK UNIFIED IDEOGRAPH - 0xE49C: 0x9305, //CJK UNIFIED IDEOGRAPH - 0xE49D: 0x9306, //CJK UNIFIED IDEOGRAPH - 0xE49E: 0x9307, //CJK UNIFIED IDEOGRAPH - 0xE49F: 0x9308, //CJK UNIFIED IDEOGRAPH - 0xE4A0: 0x9309, //CJK UNIFIED IDEOGRAPH - 0xE4A1: 0x6D39, //CJK UNIFIED IDEOGRAPH - 0xE4A2: 0x6D27, //CJK UNIFIED IDEOGRAPH - 0xE4A3: 0x6D0C, //CJK UNIFIED IDEOGRAPH - 0xE4A4: 0x6D43, //CJK UNIFIED IDEOGRAPH - 0xE4A5: 0x6D48, //CJK UNIFIED IDEOGRAPH - 0xE4A6: 0x6D07, //CJK UNIFIED IDEOGRAPH - 0xE4A7: 0x6D04, //CJK UNIFIED IDEOGRAPH - 0xE4A8: 0x6D19, //CJK UNIFIED IDEOGRAPH - 0xE4A9: 0x6D0E, //CJK UNIFIED IDEOGRAPH - 0xE4AA: 0x6D2B, //CJK UNIFIED IDEOGRAPH - 0xE4AB: 0x6D4D, //CJK UNIFIED IDEOGRAPH - 0xE4AC: 0x6D2E, //CJK UNIFIED IDEOGRAPH - 0xE4AD: 0x6D35, //CJK UNIFIED IDEOGRAPH - 0xE4AE: 0x6D1A, //CJK UNIFIED IDEOGRAPH - 0xE4AF: 0x6D4F, //CJK UNIFIED IDEOGRAPH - 0xE4B0: 0x6D52, //CJK UNIFIED IDEOGRAPH - 0xE4B1: 0x6D54, //CJK UNIFIED IDEOGRAPH - 0xE4B2: 0x6D33, //CJK UNIFIED IDEOGRAPH - 0xE4B3: 0x6D91, //CJK UNIFIED IDEOGRAPH - 0xE4B4: 0x6D6F, //CJK UNIFIED IDEOGRAPH - 0xE4B5: 0x6D9E, //CJK UNIFIED IDEOGRAPH - 0xE4B6: 0x6DA0, //CJK UNIFIED IDEOGRAPH - 0xE4B7: 0x6D5E, //CJK UNIFIED IDEOGRAPH - 0xE4B8: 0x6D93, //CJK UNIFIED IDEOGRAPH - 0xE4B9: 0x6D94, //CJK UNIFIED IDEOGRAPH - 0xE4BA: 0x6D5C, //CJK UNIFIED IDEOGRAPH - 0xE4BB: 0x6D60, //CJK UNIFIED IDEOGRAPH - 0xE4BC: 0x6D7C, //CJK UNIFIED IDEOGRAPH - 0xE4BD: 0x6D63, //CJK UNIFIED IDEOGRAPH - 0xE4BE: 0x6E1A, //CJK UNIFIED IDEOGRAPH - 0xE4BF: 0x6DC7, //CJK UNIFIED IDEOGRAPH - 0xE4C0: 0x6DC5, //CJK UNIFIED IDEOGRAPH - 0xE4C1: 0x6DDE, //CJK UNIFIED IDEOGRAPH - 0xE4C2: 0x6E0E, //CJK UNIFIED IDEOGRAPH - 0xE4C3: 0x6DBF, //CJK UNIFIED IDEOGRAPH - 0xE4C4: 0x6DE0, //CJK UNIFIED IDEOGRAPH - 0xE4C5: 0x6E11, //CJK UNIFIED IDEOGRAPH - 0xE4C6: 0x6DE6, //CJK UNIFIED IDEOGRAPH - 0xE4C7: 0x6DDD, //CJK UNIFIED IDEOGRAPH - 0xE4C8: 0x6DD9, //CJK UNIFIED IDEOGRAPH - 0xE4C9: 0x6E16, //CJK UNIFIED IDEOGRAPH - 0xE4CA: 0x6DAB, //CJK UNIFIED IDEOGRAPH - 0xE4CB: 0x6E0C, //CJK UNIFIED IDEOGRAPH - 0xE4CC: 0x6DAE, //CJK UNIFIED IDEOGRAPH - 0xE4CD: 0x6E2B, //CJK UNIFIED IDEOGRAPH - 0xE4CE: 0x6E6E, //CJK UNIFIED IDEOGRAPH - 0xE4CF: 0x6E4E, //CJK UNIFIED IDEOGRAPH - 0xE4D0: 0x6E6B, //CJK UNIFIED IDEOGRAPH - 0xE4D1: 0x6EB2, //CJK UNIFIED IDEOGRAPH - 0xE4D2: 0x6E5F, //CJK UNIFIED IDEOGRAPH - 0xE4D3: 0x6E86, //CJK UNIFIED IDEOGRAPH - 0xE4D4: 0x6E53, //CJK UNIFIED IDEOGRAPH - 0xE4D5: 0x6E54, //CJK UNIFIED IDEOGRAPH - 0xE4D6: 0x6E32, //CJK UNIFIED IDEOGRAPH - 0xE4D7: 0x6E25, //CJK UNIFIED IDEOGRAPH - 0xE4D8: 0x6E44, //CJK UNIFIED IDEOGRAPH - 0xE4D9: 0x6EDF, //CJK UNIFIED IDEOGRAPH - 0xE4DA: 0x6EB1, //CJK UNIFIED IDEOGRAPH - 0xE4DB: 0x6E98, //CJK UNIFIED IDEOGRAPH - 0xE4DC: 0x6EE0, //CJK UNIFIED IDEOGRAPH - 0xE4DD: 0x6F2D, //CJK UNIFIED IDEOGRAPH - 0xE4DE: 0x6EE2, //CJK UNIFIED IDEOGRAPH - 0xE4DF: 0x6EA5, //CJK UNIFIED IDEOGRAPH - 0xE4E0: 0x6EA7, //CJK UNIFIED IDEOGRAPH - 0xE4E1: 0x6EBD, //CJK UNIFIED IDEOGRAPH - 0xE4E2: 0x6EBB, //CJK UNIFIED IDEOGRAPH - 0xE4E3: 0x6EB7, //CJK UNIFIED IDEOGRAPH - 0xE4E4: 0x6ED7, //CJK UNIFIED IDEOGRAPH - 0xE4E5: 0x6EB4, //CJK UNIFIED IDEOGRAPH - 0xE4E6: 0x6ECF, //CJK UNIFIED IDEOGRAPH - 0xE4E7: 0x6E8F, //CJK UNIFIED IDEOGRAPH - 0xE4E8: 0x6EC2, //CJK UNIFIED IDEOGRAPH - 0xE4E9: 0x6E9F, //CJK UNIFIED IDEOGRAPH - 0xE4EA: 0x6F62, //CJK UNIFIED IDEOGRAPH - 0xE4EB: 0x6F46, //CJK UNIFIED IDEOGRAPH - 0xE4EC: 0x6F47, //CJK UNIFIED IDEOGRAPH - 0xE4ED: 0x6F24, //CJK UNIFIED IDEOGRAPH - 0xE4EE: 0x6F15, //CJK UNIFIED IDEOGRAPH - 0xE4EF: 0x6EF9, //CJK UNIFIED IDEOGRAPH - 0xE4F0: 0x6F2F, //CJK UNIFIED IDEOGRAPH - 0xE4F1: 0x6F36, //CJK UNIFIED IDEOGRAPH - 0xE4F2: 0x6F4B, //CJK UNIFIED IDEOGRAPH - 0xE4F3: 0x6F74, //CJK UNIFIED IDEOGRAPH - 0xE4F4: 0x6F2A, //CJK UNIFIED IDEOGRAPH - 0xE4F5: 0x6F09, //CJK UNIFIED IDEOGRAPH - 0xE4F6: 0x6F29, //CJK UNIFIED IDEOGRAPH - 0xE4F7: 0x6F89, //CJK UNIFIED IDEOGRAPH - 0xE4F8: 0x6F8D, //CJK UNIFIED IDEOGRAPH - 0xE4F9: 0x6F8C, //CJK UNIFIED IDEOGRAPH - 0xE4FA: 0x6F78, //CJK UNIFIED IDEOGRAPH - 0xE4FB: 0x6F72, //CJK UNIFIED IDEOGRAPH - 0xE4FC: 0x6F7C, //CJK UNIFIED IDEOGRAPH - 0xE4FD: 0x6F7A, //CJK UNIFIED IDEOGRAPH - 0xE4FE: 0x6FD1, //CJK UNIFIED IDEOGRAPH - 0xE540: 0x930A, //CJK UNIFIED IDEOGRAPH - 0xE541: 0x930B, //CJK UNIFIED IDEOGRAPH - 0xE542: 0x930C, //CJK UNIFIED IDEOGRAPH - 0xE543: 0x930D, //CJK UNIFIED IDEOGRAPH - 0xE544: 0x930E, //CJK UNIFIED IDEOGRAPH - 0xE545: 0x930F, //CJK UNIFIED IDEOGRAPH - 0xE546: 0x9310, //CJK UNIFIED IDEOGRAPH - 0xE547: 0x9311, //CJK UNIFIED IDEOGRAPH - 0xE548: 0x9312, //CJK UNIFIED IDEOGRAPH - 0xE549: 0x9313, //CJK UNIFIED IDEOGRAPH - 0xE54A: 0x9314, //CJK UNIFIED IDEOGRAPH - 0xE54B: 0x9315, //CJK UNIFIED IDEOGRAPH - 0xE54C: 0x9316, //CJK UNIFIED IDEOGRAPH - 0xE54D: 0x9317, //CJK UNIFIED IDEOGRAPH - 0xE54E: 0x9318, //CJK UNIFIED IDEOGRAPH - 0xE54F: 0x9319, //CJK UNIFIED IDEOGRAPH - 0xE550: 0x931A, //CJK UNIFIED IDEOGRAPH - 0xE551: 0x931B, //CJK UNIFIED IDEOGRAPH - 0xE552: 0x931C, //CJK UNIFIED IDEOGRAPH - 0xE553: 0x931D, //CJK UNIFIED IDEOGRAPH - 0xE554: 0x931E, //CJK UNIFIED IDEOGRAPH - 0xE555: 0x931F, //CJK UNIFIED IDEOGRAPH - 0xE556: 0x9320, //CJK UNIFIED IDEOGRAPH - 0xE557: 0x9321, //CJK UNIFIED IDEOGRAPH - 0xE558: 0x9322, //CJK UNIFIED IDEOGRAPH - 0xE559: 0x9323, //CJK UNIFIED IDEOGRAPH - 0xE55A: 0x9324, //CJK UNIFIED IDEOGRAPH - 0xE55B: 0x9325, //CJK UNIFIED IDEOGRAPH - 0xE55C: 0x9326, //CJK UNIFIED IDEOGRAPH - 0xE55D: 0x9327, //CJK UNIFIED IDEOGRAPH - 0xE55E: 0x9328, //CJK UNIFIED IDEOGRAPH - 0xE55F: 0x9329, //CJK UNIFIED IDEOGRAPH - 0xE560: 0x932A, //CJK UNIFIED IDEOGRAPH - 0xE561: 0x932B, //CJK UNIFIED IDEOGRAPH - 0xE562: 0x932C, //CJK UNIFIED IDEOGRAPH - 0xE563: 0x932D, //CJK UNIFIED IDEOGRAPH - 0xE564: 0x932E, //CJK UNIFIED IDEOGRAPH - 0xE565: 0x932F, //CJK UNIFIED IDEOGRAPH - 0xE566: 0x9330, //CJK UNIFIED IDEOGRAPH - 0xE567: 0x9331, //CJK UNIFIED IDEOGRAPH - 0xE568: 0x9332, //CJK UNIFIED IDEOGRAPH - 0xE569: 0x9333, //CJK UNIFIED IDEOGRAPH - 0xE56A: 0x9334, //CJK UNIFIED IDEOGRAPH - 0xE56B: 0x9335, //CJK UNIFIED IDEOGRAPH - 0xE56C: 0x9336, //CJK UNIFIED IDEOGRAPH - 0xE56D: 0x9337, //CJK UNIFIED IDEOGRAPH - 0xE56E: 0x9338, //CJK UNIFIED IDEOGRAPH - 0xE56F: 0x9339, //CJK UNIFIED IDEOGRAPH - 0xE570: 0x933A, //CJK UNIFIED IDEOGRAPH - 0xE571: 0x933B, //CJK UNIFIED IDEOGRAPH - 0xE572: 0x933C, //CJK UNIFIED IDEOGRAPH - 0xE573: 0x933D, //CJK UNIFIED IDEOGRAPH - 0xE574: 0x933F, //CJK UNIFIED IDEOGRAPH - 0xE575: 0x9340, //CJK UNIFIED IDEOGRAPH - 0xE576: 0x9341, //CJK UNIFIED IDEOGRAPH - 0xE577: 0x9342, //CJK UNIFIED IDEOGRAPH - 0xE578: 0x9343, //CJK UNIFIED IDEOGRAPH - 0xE579: 0x9344, //CJK UNIFIED IDEOGRAPH - 0xE57A: 0x9345, //CJK UNIFIED IDEOGRAPH - 0xE57B: 0x9346, //CJK UNIFIED IDEOGRAPH - 0xE57C: 0x9347, //CJK UNIFIED IDEOGRAPH - 0xE57D: 0x9348, //CJK UNIFIED IDEOGRAPH - 0xE57E: 0x9349, //CJK UNIFIED IDEOGRAPH - 0xE580: 0x934A, //CJK UNIFIED IDEOGRAPH - 0xE581: 0x934B, //CJK UNIFIED IDEOGRAPH - 0xE582: 0x934C, //CJK UNIFIED IDEOGRAPH - 0xE583: 0x934D, //CJK UNIFIED IDEOGRAPH - 0xE584: 0x934E, //CJK UNIFIED IDEOGRAPH - 0xE585: 0x934F, //CJK UNIFIED IDEOGRAPH - 0xE586: 0x9350, //CJK UNIFIED IDEOGRAPH - 0xE587: 0x9351, //CJK UNIFIED IDEOGRAPH - 0xE588: 0x9352, //CJK UNIFIED IDEOGRAPH - 0xE589: 0x9353, //CJK UNIFIED IDEOGRAPH - 0xE58A: 0x9354, //CJK UNIFIED IDEOGRAPH - 0xE58B: 0x9355, //CJK UNIFIED IDEOGRAPH - 0xE58C: 0x9356, //CJK UNIFIED IDEOGRAPH - 0xE58D: 0x9357, //CJK UNIFIED IDEOGRAPH - 0xE58E: 0x9358, //CJK UNIFIED IDEOGRAPH - 0xE58F: 0x9359, //CJK UNIFIED IDEOGRAPH - 0xE590: 0x935A, //CJK UNIFIED IDEOGRAPH - 0xE591: 0x935B, //CJK UNIFIED IDEOGRAPH - 0xE592: 0x935C, //CJK UNIFIED IDEOGRAPH - 0xE593: 0x935D, //CJK UNIFIED IDEOGRAPH - 0xE594: 0x935E, //CJK UNIFIED IDEOGRAPH - 0xE595: 0x935F, //CJK UNIFIED IDEOGRAPH - 0xE596: 0x9360, //CJK UNIFIED IDEOGRAPH - 0xE597: 0x9361, //CJK UNIFIED IDEOGRAPH - 0xE598: 0x9362, //CJK UNIFIED IDEOGRAPH - 0xE599: 0x9363, //CJK UNIFIED IDEOGRAPH - 0xE59A: 0x9364, //CJK UNIFIED IDEOGRAPH - 0xE59B: 0x9365, //CJK UNIFIED IDEOGRAPH - 0xE59C: 0x9366, //CJK UNIFIED IDEOGRAPH - 0xE59D: 0x9367, //CJK UNIFIED IDEOGRAPH - 0xE59E: 0x9368, //CJK UNIFIED IDEOGRAPH - 0xE59F: 0x9369, //CJK UNIFIED IDEOGRAPH - 0xE5A0: 0x936B, //CJK UNIFIED IDEOGRAPH - 0xE5A1: 0x6FC9, //CJK UNIFIED IDEOGRAPH - 0xE5A2: 0x6FA7, //CJK UNIFIED IDEOGRAPH - 0xE5A3: 0x6FB9, //CJK UNIFIED IDEOGRAPH - 0xE5A4: 0x6FB6, //CJK UNIFIED IDEOGRAPH - 0xE5A5: 0x6FC2, //CJK UNIFIED IDEOGRAPH - 0xE5A6: 0x6FE1, //CJK UNIFIED IDEOGRAPH - 0xE5A7: 0x6FEE, //CJK UNIFIED IDEOGRAPH - 0xE5A8: 0x6FDE, //CJK UNIFIED IDEOGRAPH - 0xE5A9: 0x6FE0, //CJK UNIFIED IDEOGRAPH - 0xE5AA: 0x6FEF, //CJK UNIFIED IDEOGRAPH - 0xE5AB: 0x701A, //CJK UNIFIED IDEOGRAPH - 0xE5AC: 0x7023, //CJK UNIFIED IDEOGRAPH - 0xE5AD: 0x701B, //CJK UNIFIED IDEOGRAPH - 0xE5AE: 0x7039, //CJK UNIFIED IDEOGRAPH - 0xE5AF: 0x7035, //CJK UNIFIED IDEOGRAPH - 0xE5B0: 0x704F, //CJK UNIFIED IDEOGRAPH - 0xE5B1: 0x705E, //CJK UNIFIED IDEOGRAPH - 0xE5B2: 0x5B80, //CJK UNIFIED IDEOGRAPH - 0xE5B3: 0x5B84, //CJK UNIFIED IDEOGRAPH - 0xE5B4: 0x5B95, //CJK UNIFIED IDEOGRAPH - 0xE5B5: 0x5B93, //CJK UNIFIED IDEOGRAPH - 0xE5B6: 0x5BA5, //CJK UNIFIED IDEOGRAPH - 0xE5B7: 0x5BB8, //CJK UNIFIED IDEOGRAPH - 0xE5B8: 0x752F, //CJK UNIFIED IDEOGRAPH - 0xE5B9: 0x9A9E, //CJK UNIFIED IDEOGRAPH - 0xE5BA: 0x6434, //CJK UNIFIED IDEOGRAPH - 0xE5BB: 0x5BE4, //CJK UNIFIED IDEOGRAPH - 0xE5BC: 0x5BEE, //CJK UNIFIED IDEOGRAPH - 0xE5BD: 0x8930, //CJK UNIFIED IDEOGRAPH - 0xE5BE: 0x5BF0, //CJK UNIFIED IDEOGRAPH - 0xE5BF: 0x8E47, //CJK UNIFIED IDEOGRAPH - 0xE5C0: 0x8B07, //CJK UNIFIED IDEOGRAPH - 0xE5C1: 0x8FB6, //CJK UNIFIED IDEOGRAPH - 0xE5C2: 0x8FD3, //CJK UNIFIED IDEOGRAPH - 0xE5C3: 0x8FD5, //CJK UNIFIED IDEOGRAPH - 0xE5C4: 0x8FE5, //CJK UNIFIED IDEOGRAPH - 0xE5C5: 0x8FEE, //CJK UNIFIED IDEOGRAPH - 0xE5C6: 0x8FE4, //CJK UNIFIED IDEOGRAPH - 0xE5C7: 0x8FE9, //CJK UNIFIED IDEOGRAPH - 0xE5C8: 0x8FE6, //CJK UNIFIED IDEOGRAPH - 0xE5C9: 0x8FF3, //CJK UNIFIED IDEOGRAPH - 0xE5CA: 0x8FE8, //CJK UNIFIED IDEOGRAPH - 0xE5CB: 0x9005, //CJK UNIFIED IDEOGRAPH - 0xE5CC: 0x9004, //CJK UNIFIED IDEOGRAPH - 0xE5CD: 0x900B, //CJK UNIFIED IDEOGRAPH - 0xE5CE: 0x9026, //CJK UNIFIED IDEOGRAPH - 0xE5CF: 0x9011, //CJK UNIFIED IDEOGRAPH - 0xE5D0: 0x900D, //CJK UNIFIED IDEOGRAPH - 0xE5D1: 0x9016, //CJK UNIFIED IDEOGRAPH - 0xE5D2: 0x9021, //CJK UNIFIED IDEOGRAPH - 0xE5D3: 0x9035, //CJK UNIFIED IDEOGRAPH - 0xE5D4: 0x9036, //CJK UNIFIED IDEOGRAPH - 0xE5D5: 0x902D, //CJK UNIFIED IDEOGRAPH - 0xE5D6: 0x902F, //CJK UNIFIED IDEOGRAPH - 0xE5D7: 0x9044, //CJK UNIFIED IDEOGRAPH - 0xE5D8: 0x9051, //CJK UNIFIED IDEOGRAPH - 0xE5D9: 0x9052, //CJK UNIFIED IDEOGRAPH - 0xE5DA: 0x9050, //CJK UNIFIED IDEOGRAPH - 0xE5DB: 0x9068, //CJK UNIFIED IDEOGRAPH - 0xE5DC: 0x9058, //CJK UNIFIED IDEOGRAPH - 0xE5DD: 0x9062, //CJK UNIFIED IDEOGRAPH - 0xE5DE: 0x905B, //CJK UNIFIED IDEOGRAPH - 0xE5DF: 0x66B9, //CJK UNIFIED IDEOGRAPH - 0xE5E0: 0x9074, //CJK UNIFIED IDEOGRAPH - 0xE5E1: 0x907D, //CJK UNIFIED IDEOGRAPH - 0xE5E2: 0x9082, //CJK UNIFIED IDEOGRAPH - 0xE5E3: 0x9088, //CJK UNIFIED IDEOGRAPH - 0xE5E4: 0x9083, //CJK UNIFIED IDEOGRAPH - 0xE5E5: 0x908B, //CJK UNIFIED IDEOGRAPH - 0xE5E6: 0x5F50, //CJK UNIFIED IDEOGRAPH - 0xE5E7: 0x5F57, //CJK UNIFIED IDEOGRAPH - 0xE5E8: 0x5F56, //CJK UNIFIED IDEOGRAPH - 0xE5E9: 0x5F58, //CJK UNIFIED IDEOGRAPH - 0xE5EA: 0x5C3B, //CJK UNIFIED IDEOGRAPH - 0xE5EB: 0x54AB, //CJK UNIFIED IDEOGRAPH - 0xE5EC: 0x5C50, //CJK UNIFIED IDEOGRAPH - 0xE5ED: 0x5C59, //CJK UNIFIED IDEOGRAPH - 0xE5EE: 0x5B71, //CJK UNIFIED IDEOGRAPH - 0xE5EF: 0x5C63, //CJK UNIFIED IDEOGRAPH - 0xE5F0: 0x5C66, //CJK UNIFIED IDEOGRAPH - 0xE5F1: 0x7FBC, //CJK UNIFIED IDEOGRAPH - 0xE5F2: 0x5F2A, //CJK UNIFIED IDEOGRAPH - 0xE5F3: 0x5F29, //CJK UNIFIED IDEOGRAPH - 0xE5F4: 0x5F2D, //CJK UNIFIED IDEOGRAPH - 0xE5F5: 0x8274, //CJK UNIFIED IDEOGRAPH - 0xE5F6: 0x5F3C, //CJK UNIFIED IDEOGRAPH - 0xE5F7: 0x9B3B, //CJK UNIFIED IDEOGRAPH - 0xE5F8: 0x5C6E, //CJK UNIFIED IDEOGRAPH - 0xE5F9: 0x5981, //CJK UNIFIED IDEOGRAPH - 0xE5FA: 0x5983, //CJK UNIFIED IDEOGRAPH - 0xE5FB: 0x598D, //CJK UNIFIED IDEOGRAPH - 0xE5FC: 0x59A9, //CJK UNIFIED IDEOGRAPH - 0xE5FD: 0x59AA, //CJK UNIFIED IDEOGRAPH - 0xE5FE: 0x59A3, //CJK UNIFIED IDEOGRAPH - 0xE640: 0x936C, //CJK UNIFIED IDEOGRAPH - 0xE641: 0x936D, //CJK UNIFIED IDEOGRAPH - 0xE642: 0x936E, //CJK UNIFIED IDEOGRAPH - 0xE643: 0x936F, //CJK UNIFIED IDEOGRAPH - 0xE644: 0x9370, //CJK UNIFIED IDEOGRAPH - 0xE645: 0x9371, //CJK UNIFIED IDEOGRAPH - 0xE646: 0x9372, //CJK UNIFIED IDEOGRAPH - 0xE647: 0x9373, //CJK UNIFIED IDEOGRAPH - 0xE648: 0x9374, //CJK UNIFIED IDEOGRAPH - 0xE649: 0x9375, //CJK UNIFIED IDEOGRAPH - 0xE64A: 0x9376, //CJK UNIFIED IDEOGRAPH - 0xE64B: 0x9377, //CJK UNIFIED IDEOGRAPH - 0xE64C: 0x9378, //CJK UNIFIED IDEOGRAPH - 0xE64D: 0x9379, //CJK UNIFIED IDEOGRAPH - 0xE64E: 0x937A, //CJK UNIFIED IDEOGRAPH - 0xE64F: 0x937B, //CJK UNIFIED IDEOGRAPH - 0xE650: 0x937C, //CJK UNIFIED IDEOGRAPH - 0xE651: 0x937D, //CJK UNIFIED IDEOGRAPH - 0xE652: 0x937E, //CJK UNIFIED IDEOGRAPH - 0xE653: 0x937F, //CJK UNIFIED IDEOGRAPH - 0xE654: 0x9380, //CJK UNIFIED IDEOGRAPH - 0xE655: 0x9381, //CJK UNIFIED IDEOGRAPH - 0xE656: 0x9382, //CJK UNIFIED IDEOGRAPH - 0xE657: 0x9383, //CJK UNIFIED IDEOGRAPH - 0xE658: 0x9384, //CJK UNIFIED IDEOGRAPH - 0xE659: 0x9385, //CJK UNIFIED IDEOGRAPH - 0xE65A: 0x9386, //CJK UNIFIED IDEOGRAPH - 0xE65B: 0x9387, //CJK UNIFIED IDEOGRAPH - 0xE65C: 0x9388, //CJK UNIFIED IDEOGRAPH - 0xE65D: 0x9389, //CJK UNIFIED IDEOGRAPH - 0xE65E: 0x938A, //CJK UNIFIED IDEOGRAPH - 0xE65F: 0x938B, //CJK UNIFIED IDEOGRAPH - 0xE660: 0x938C, //CJK UNIFIED IDEOGRAPH - 0xE661: 0x938D, //CJK UNIFIED IDEOGRAPH - 0xE662: 0x938E, //CJK UNIFIED IDEOGRAPH - 0xE663: 0x9390, //CJK UNIFIED IDEOGRAPH - 0xE664: 0x9391, //CJK UNIFIED IDEOGRAPH - 0xE665: 0x9392, //CJK UNIFIED IDEOGRAPH - 0xE666: 0x9393, //CJK UNIFIED IDEOGRAPH - 0xE667: 0x9394, //CJK UNIFIED IDEOGRAPH - 0xE668: 0x9395, //CJK UNIFIED IDEOGRAPH - 0xE669: 0x9396, //CJK UNIFIED IDEOGRAPH - 0xE66A: 0x9397, //CJK UNIFIED IDEOGRAPH - 0xE66B: 0x9398, //CJK UNIFIED IDEOGRAPH - 0xE66C: 0x9399, //CJK UNIFIED IDEOGRAPH - 0xE66D: 0x939A, //CJK UNIFIED IDEOGRAPH - 0xE66E: 0x939B, //CJK UNIFIED IDEOGRAPH - 0xE66F: 0x939C, //CJK UNIFIED IDEOGRAPH - 0xE670: 0x939D, //CJK UNIFIED IDEOGRAPH - 0xE671: 0x939E, //CJK UNIFIED IDEOGRAPH - 0xE672: 0x939F, //CJK UNIFIED IDEOGRAPH - 0xE673: 0x93A0, //CJK UNIFIED IDEOGRAPH - 0xE674: 0x93A1, //CJK UNIFIED IDEOGRAPH - 0xE675: 0x93A2, //CJK UNIFIED IDEOGRAPH - 0xE676: 0x93A3, //CJK UNIFIED IDEOGRAPH - 0xE677: 0x93A4, //CJK UNIFIED IDEOGRAPH - 0xE678: 0x93A5, //CJK UNIFIED IDEOGRAPH - 0xE679: 0x93A6, //CJK UNIFIED IDEOGRAPH - 0xE67A: 0x93A7, //CJK UNIFIED IDEOGRAPH - 0xE67B: 0x93A8, //CJK UNIFIED IDEOGRAPH - 0xE67C: 0x93A9, //CJK UNIFIED IDEOGRAPH - 0xE67D: 0x93AA, //CJK UNIFIED IDEOGRAPH - 0xE67E: 0x93AB, //CJK UNIFIED IDEOGRAPH - 0xE680: 0x93AC, //CJK UNIFIED IDEOGRAPH - 0xE681: 0x93AD, //CJK UNIFIED IDEOGRAPH - 0xE682: 0x93AE, //CJK UNIFIED IDEOGRAPH - 0xE683: 0x93AF, //CJK UNIFIED IDEOGRAPH - 0xE684: 0x93B0, //CJK UNIFIED IDEOGRAPH - 0xE685: 0x93B1, //CJK UNIFIED IDEOGRAPH - 0xE686: 0x93B2, //CJK UNIFIED IDEOGRAPH - 0xE687: 0x93B3, //CJK UNIFIED IDEOGRAPH - 0xE688: 0x93B4, //CJK UNIFIED IDEOGRAPH - 0xE689: 0x93B5, //CJK UNIFIED IDEOGRAPH - 0xE68A: 0x93B6, //CJK UNIFIED IDEOGRAPH - 0xE68B: 0x93B7, //CJK UNIFIED IDEOGRAPH - 0xE68C: 0x93B8, //CJK UNIFIED IDEOGRAPH - 0xE68D: 0x93B9, //CJK UNIFIED IDEOGRAPH - 0xE68E: 0x93BA, //CJK UNIFIED IDEOGRAPH - 0xE68F: 0x93BB, //CJK UNIFIED IDEOGRAPH - 0xE690: 0x93BC, //CJK UNIFIED IDEOGRAPH - 0xE691: 0x93BD, //CJK UNIFIED IDEOGRAPH - 0xE692: 0x93BE, //CJK UNIFIED IDEOGRAPH - 0xE693: 0x93BF, //CJK UNIFIED IDEOGRAPH - 0xE694: 0x93C0, //CJK UNIFIED IDEOGRAPH - 0xE695: 0x93C1, //CJK UNIFIED IDEOGRAPH - 0xE696: 0x93C2, //CJK UNIFIED IDEOGRAPH - 0xE697: 0x93C3, //CJK UNIFIED IDEOGRAPH - 0xE698: 0x93C4, //CJK UNIFIED IDEOGRAPH - 0xE699: 0x93C5, //CJK UNIFIED IDEOGRAPH - 0xE69A: 0x93C6, //CJK UNIFIED IDEOGRAPH - 0xE69B: 0x93C7, //CJK UNIFIED IDEOGRAPH - 0xE69C: 0x93C8, //CJK UNIFIED IDEOGRAPH - 0xE69D: 0x93C9, //CJK UNIFIED IDEOGRAPH - 0xE69E: 0x93CB, //CJK UNIFIED IDEOGRAPH - 0xE69F: 0x93CC, //CJK UNIFIED IDEOGRAPH - 0xE6A0: 0x93CD, //CJK UNIFIED IDEOGRAPH - 0xE6A1: 0x5997, //CJK UNIFIED IDEOGRAPH - 0xE6A2: 0x59CA, //CJK UNIFIED IDEOGRAPH - 0xE6A3: 0x59AB, //CJK UNIFIED IDEOGRAPH - 0xE6A4: 0x599E, //CJK UNIFIED IDEOGRAPH - 0xE6A5: 0x59A4, //CJK UNIFIED IDEOGRAPH - 0xE6A6: 0x59D2, //CJK UNIFIED IDEOGRAPH - 0xE6A7: 0x59B2, //CJK UNIFIED IDEOGRAPH - 0xE6A8: 0x59AF, //CJK UNIFIED IDEOGRAPH - 0xE6A9: 0x59D7, //CJK UNIFIED IDEOGRAPH - 0xE6AA: 0x59BE, //CJK UNIFIED IDEOGRAPH - 0xE6AB: 0x5A05, //CJK UNIFIED IDEOGRAPH - 0xE6AC: 0x5A06, //CJK UNIFIED IDEOGRAPH - 0xE6AD: 0x59DD, //CJK UNIFIED IDEOGRAPH - 0xE6AE: 0x5A08, //CJK UNIFIED IDEOGRAPH - 0xE6AF: 0x59E3, //CJK UNIFIED IDEOGRAPH - 0xE6B0: 0x59D8, //CJK UNIFIED IDEOGRAPH - 0xE6B1: 0x59F9, //CJK UNIFIED IDEOGRAPH - 0xE6B2: 0x5A0C, //CJK UNIFIED IDEOGRAPH - 0xE6B3: 0x5A09, //CJK UNIFIED IDEOGRAPH - 0xE6B4: 0x5A32, //CJK UNIFIED IDEOGRAPH - 0xE6B5: 0x5A34, //CJK UNIFIED IDEOGRAPH - 0xE6B6: 0x5A11, //CJK UNIFIED IDEOGRAPH - 0xE6B7: 0x5A23, //CJK UNIFIED IDEOGRAPH - 0xE6B8: 0x5A13, //CJK UNIFIED IDEOGRAPH - 0xE6B9: 0x5A40, //CJK UNIFIED IDEOGRAPH - 0xE6BA: 0x5A67, //CJK UNIFIED IDEOGRAPH - 0xE6BB: 0x5A4A, //CJK UNIFIED IDEOGRAPH - 0xE6BC: 0x5A55, //CJK UNIFIED IDEOGRAPH - 0xE6BD: 0x5A3C, //CJK UNIFIED IDEOGRAPH - 0xE6BE: 0x5A62, //CJK UNIFIED IDEOGRAPH - 0xE6BF: 0x5A75, //CJK UNIFIED IDEOGRAPH - 0xE6C0: 0x80EC, //CJK UNIFIED IDEOGRAPH - 0xE6C1: 0x5AAA, //CJK UNIFIED IDEOGRAPH - 0xE6C2: 0x5A9B, //CJK UNIFIED IDEOGRAPH - 0xE6C3: 0x5A77, //CJK UNIFIED IDEOGRAPH - 0xE6C4: 0x5A7A, //CJK UNIFIED IDEOGRAPH - 0xE6C5: 0x5ABE, //CJK UNIFIED IDEOGRAPH - 0xE6C6: 0x5AEB, //CJK UNIFIED IDEOGRAPH - 0xE6C7: 0x5AB2, //CJK UNIFIED IDEOGRAPH - 0xE6C8: 0x5AD2, //CJK UNIFIED IDEOGRAPH - 0xE6C9: 0x5AD4, //CJK UNIFIED IDEOGRAPH - 0xE6CA: 0x5AB8, //CJK UNIFIED IDEOGRAPH - 0xE6CB: 0x5AE0, //CJK UNIFIED IDEOGRAPH - 0xE6CC: 0x5AE3, //CJK UNIFIED IDEOGRAPH - 0xE6CD: 0x5AF1, //CJK UNIFIED IDEOGRAPH - 0xE6CE: 0x5AD6, //CJK UNIFIED IDEOGRAPH - 0xE6CF: 0x5AE6, //CJK UNIFIED IDEOGRAPH - 0xE6D0: 0x5AD8, //CJK UNIFIED IDEOGRAPH - 0xE6D1: 0x5ADC, //CJK UNIFIED IDEOGRAPH - 0xE6D2: 0x5B09, //CJK UNIFIED IDEOGRAPH - 0xE6D3: 0x5B17, //CJK UNIFIED IDEOGRAPH - 0xE6D4: 0x5B16, //CJK UNIFIED IDEOGRAPH - 0xE6D5: 0x5B32, //CJK UNIFIED IDEOGRAPH - 0xE6D6: 0x5B37, //CJK UNIFIED IDEOGRAPH - 0xE6D7: 0x5B40, //CJK UNIFIED IDEOGRAPH - 0xE6D8: 0x5C15, //CJK UNIFIED IDEOGRAPH - 0xE6D9: 0x5C1C, //CJK UNIFIED IDEOGRAPH - 0xE6DA: 0x5B5A, //CJK UNIFIED IDEOGRAPH - 0xE6DB: 0x5B65, //CJK UNIFIED IDEOGRAPH - 0xE6DC: 0x5B73, //CJK UNIFIED IDEOGRAPH - 0xE6DD: 0x5B51, //CJK UNIFIED IDEOGRAPH - 0xE6DE: 0x5B53, //CJK UNIFIED IDEOGRAPH - 0xE6DF: 0x5B62, //CJK UNIFIED IDEOGRAPH - 0xE6E0: 0x9A75, //CJK UNIFIED IDEOGRAPH - 0xE6E1: 0x9A77, //CJK UNIFIED IDEOGRAPH - 0xE6E2: 0x9A78, //CJK UNIFIED IDEOGRAPH - 0xE6E3: 0x9A7A, //CJK UNIFIED IDEOGRAPH - 0xE6E4: 0x9A7F, //CJK UNIFIED IDEOGRAPH - 0xE6E5: 0x9A7D, //CJK UNIFIED IDEOGRAPH - 0xE6E6: 0x9A80, //CJK UNIFIED IDEOGRAPH - 0xE6E7: 0x9A81, //CJK UNIFIED IDEOGRAPH - 0xE6E8: 0x9A85, //CJK UNIFIED IDEOGRAPH - 0xE6E9: 0x9A88, //CJK UNIFIED IDEOGRAPH - 0xE6EA: 0x9A8A, //CJK UNIFIED IDEOGRAPH - 0xE6EB: 0x9A90, //CJK UNIFIED IDEOGRAPH - 0xE6EC: 0x9A92, //CJK UNIFIED IDEOGRAPH - 0xE6ED: 0x9A93, //CJK UNIFIED IDEOGRAPH - 0xE6EE: 0x9A96, //CJK UNIFIED IDEOGRAPH - 0xE6EF: 0x9A98, //CJK UNIFIED IDEOGRAPH - 0xE6F0: 0x9A9B, //CJK UNIFIED IDEOGRAPH - 0xE6F1: 0x9A9C, //CJK UNIFIED IDEOGRAPH - 0xE6F2: 0x9A9D, //CJK UNIFIED IDEOGRAPH - 0xE6F3: 0x9A9F, //CJK UNIFIED IDEOGRAPH - 0xE6F4: 0x9AA0, //CJK UNIFIED IDEOGRAPH - 0xE6F5: 0x9AA2, //CJK UNIFIED IDEOGRAPH - 0xE6F6: 0x9AA3, //CJK UNIFIED IDEOGRAPH - 0xE6F7: 0x9AA5, //CJK UNIFIED IDEOGRAPH - 0xE6F8: 0x9AA7, //CJK UNIFIED IDEOGRAPH - 0xE6F9: 0x7E9F, //CJK UNIFIED IDEOGRAPH - 0xE6FA: 0x7EA1, //CJK UNIFIED IDEOGRAPH - 0xE6FB: 0x7EA3, //CJK UNIFIED IDEOGRAPH - 0xE6FC: 0x7EA5, //CJK UNIFIED IDEOGRAPH - 0xE6FD: 0x7EA8, //CJK UNIFIED IDEOGRAPH - 0xE6FE: 0x7EA9, //CJK UNIFIED IDEOGRAPH - 0xE740: 0x93CE, //CJK UNIFIED IDEOGRAPH - 0xE741: 0x93CF, //CJK UNIFIED IDEOGRAPH - 0xE742: 0x93D0, //CJK UNIFIED IDEOGRAPH - 0xE743: 0x93D1, //CJK UNIFIED IDEOGRAPH - 0xE744: 0x93D2, //CJK UNIFIED IDEOGRAPH - 0xE745: 0x93D3, //CJK UNIFIED IDEOGRAPH - 0xE746: 0x93D4, //CJK UNIFIED IDEOGRAPH - 0xE747: 0x93D5, //CJK UNIFIED IDEOGRAPH - 0xE748: 0x93D7, //CJK UNIFIED IDEOGRAPH - 0xE749: 0x93D8, //CJK UNIFIED IDEOGRAPH - 0xE74A: 0x93D9, //CJK UNIFIED IDEOGRAPH - 0xE74B: 0x93DA, //CJK UNIFIED IDEOGRAPH - 0xE74C: 0x93DB, //CJK UNIFIED IDEOGRAPH - 0xE74D: 0x93DC, //CJK UNIFIED IDEOGRAPH - 0xE74E: 0x93DD, //CJK UNIFIED IDEOGRAPH - 0xE74F: 0x93DE, //CJK UNIFIED IDEOGRAPH - 0xE750: 0x93DF, //CJK UNIFIED IDEOGRAPH - 0xE751: 0x93E0, //CJK UNIFIED IDEOGRAPH - 0xE752: 0x93E1, //CJK UNIFIED IDEOGRAPH - 0xE753: 0x93E2, //CJK UNIFIED IDEOGRAPH - 0xE754: 0x93E3, //CJK UNIFIED IDEOGRAPH - 0xE755: 0x93E4, //CJK UNIFIED IDEOGRAPH - 0xE756: 0x93E5, //CJK UNIFIED IDEOGRAPH - 0xE757: 0x93E6, //CJK UNIFIED IDEOGRAPH - 0xE758: 0x93E7, //CJK UNIFIED IDEOGRAPH - 0xE759: 0x93E8, //CJK UNIFIED IDEOGRAPH - 0xE75A: 0x93E9, //CJK UNIFIED IDEOGRAPH - 0xE75B: 0x93EA, //CJK UNIFIED IDEOGRAPH - 0xE75C: 0x93EB, //CJK UNIFIED IDEOGRAPH - 0xE75D: 0x93EC, //CJK UNIFIED IDEOGRAPH - 0xE75E: 0x93ED, //CJK UNIFIED IDEOGRAPH - 0xE75F: 0x93EE, //CJK UNIFIED IDEOGRAPH - 0xE760: 0x93EF, //CJK UNIFIED IDEOGRAPH - 0xE761: 0x93F0, //CJK UNIFIED IDEOGRAPH - 0xE762: 0x93F1, //CJK UNIFIED IDEOGRAPH - 0xE763: 0x93F2, //CJK UNIFIED IDEOGRAPH - 0xE764: 0x93F3, //CJK UNIFIED IDEOGRAPH - 0xE765: 0x93F4, //CJK UNIFIED IDEOGRAPH - 0xE766: 0x93F5, //CJK UNIFIED IDEOGRAPH - 0xE767: 0x93F6, //CJK UNIFIED IDEOGRAPH - 0xE768: 0x93F7, //CJK UNIFIED IDEOGRAPH - 0xE769: 0x93F8, //CJK UNIFIED IDEOGRAPH - 0xE76A: 0x93F9, //CJK UNIFIED IDEOGRAPH - 0xE76B: 0x93FA, //CJK UNIFIED IDEOGRAPH - 0xE76C: 0x93FB, //CJK UNIFIED IDEOGRAPH - 0xE76D: 0x93FC, //CJK UNIFIED IDEOGRAPH - 0xE76E: 0x93FD, //CJK UNIFIED IDEOGRAPH - 0xE76F: 0x93FE, //CJK UNIFIED IDEOGRAPH - 0xE770: 0x93FF, //CJK UNIFIED IDEOGRAPH - 0xE771: 0x9400, //CJK UNIFIED IDEOGRAPH - 0xE772: 0x9401, //CJK UNIFIED IDEOGRAPH - 0xE773: 0x9402, //CJK UNIFIED IDEOGRAPH - 0xE774: 0x9403, //CJK UNIFIED IDEOGRAPH - 0xE775: 0x9404, //CJK UNIFIED IDEOGRAPH - 0xE776: 0x9405, //CJK UNIFIED IDEOGRAPH - 0xE777: 0x9406, //CJK UNIFIED IDEOGRAPH - 0xE778: 0x9407, //CJK UNIFIED IDEOGRAPH - 0xE779: 0x9408, //CJK UNIFIED IDEOGRAPH - 0xE77A: 0x9409, //CJK UNIFIED IDEOGRAPH - 0xE77B: 0x940A, //CJK UNIFIED IDEOGRAPH - 0xE77C: 0x940B, //CJK UNIFIED IDEOGRAPH - 0xE77D: 0x940C, //CJK UNIFIED IDEOGRAPH - 0xE77E: 0x940D, //CJK UNIFIED IDEOGRAPH - 0xE780: 0x940E, //CJK UNIFIED IDEOGRAPH - 0xE781: 0x940F, //CJK UNIFIED IDEOGRAPH - 0xE782: 0x9410, //CJK UNIFIED IDEOGRAPH - 0xE783: 0x9411, //CJK UNIFIED IDEOGRAPH - 0xE784: 0x9412, //CJK UNIFIED IDEOGRAPH - 0xE785: 0x9413, //CJK UNIFIED IDEOGRAPH - 0xE786: 0x9414, //CJK UNIFIED IDEOGRAPH - 0xE787: 0x9415, //CJK UNIFIED IDEOGRAPH - 0xE788: 0x9416, //CJK UNIFIED IDEOGRAPH - 0xE789: 0x9417, //CJK UNIFIED IDEOGRAPH - 0xE78A: 0x9418, //CJK UNIFIED IDEOGRAPH - 0xE78B: 0x9419, //CJK UNIFIED IDEOGRAPH - 0xE78C: 0x941A, //CJK UNIFIED IDEOGRAPH - 0xE78D: 0x941B, //CJK UNIFIED IDEOGRAPH - 0xE78E: 0x941C, //CJK UNIFIED IDEOGRAPH - 0xE78F: 0x941D, //CJK UNIFIED IDEOGRAPH - 0xE790: 0x941E, //CJK UNIFIED IDEOGRAPH - 0xE791: 0x941F, //CJK UNIFIED IDEOGRAPH - 0xE792: 0x9420, //CJK UNIFIED IDEOGRAPH - 0xE793: 0x9421, //CJK UNIFIED IDEOGRAPH - 0xE794: 0x9422, //CJK UNIFIED IDEOGRAPH - 0xE795: 0x9423, //CJK UNIFIED IDEOGRAPH - 0xE796: 0x9424, //CJK UNIFIED IDEOGRAPH - 0xE797: 0x9425, //CJK UNIFIED IDEOGRAPH - 0xE798: 0x9426, //CJK UNIFIED IDEOGRAPH - 0xE799: 0x9427, //CJK UNIFIED IDEOGRAPH - 0xE79A: 0x9428, //CJK UNIFIED IDEOGRAPH - 0xE79B: 0x9429, //CJK UNIFIED IDEOGRAPH - 0xE79C: 0x942A, //CJK UNIFIED IDEOGRAPH - 0xE79D: 0x942B, //CJK UNIFIED IDEOGRAPH - 0xE79E: 0x942C, //CJK UNIFIED IDEOGRAPH - 0xE79F: 0x942D, //CJK UNIFIED IDEOGRAPH - 0xE7A0: 0x942E, //CJK UNIFIED IDEOGRAPH - 0xE7A1: 0x7EAD, //CJK UNIFIED IDEOGRAPH - 0xE7A2: 0x7EB0, //CJK UNIFIED IDEOGRAPH - 0xE7A3: 0x7EBE, //CJK UNIFIED IDEOGRAPH - 0xE7A4: 0x7EC0, //CJK UNIFIED IDEOGRAPH - 0xE7A5: 0x7EC1, //CJK UNIFIED IDEOGRAPH - 0xE7A6: 0x7EC2, //CJK UNIFIED IDEOGRAPH - 0xE7A7: 0x7EC9, //CJK UNIFIED IDEOGRAPH - 0xE7A8: 0x7ECB, //CJK UNIFIED IDEOGRAPH - 0xE7A9: 0x7ECC, //CJK UNIFIED IDEOGRAPH - 0xE7AA: 0x7ED0, //CJK UNIFIED IDEOGRAPH - 0xE7AB: 0x7ED4, //CJK UNIFIED IDEOGRAPH - 0xE7AC: 0x7ED7, //CJK UNIFIED IDEOGRAPH - 0xE7AD: 0x7EDB, //CJK UNIFIED IDEOGRAPH - 0xE7AE: 0x7EE0, //CJK UNIFIED IDEOGRAPH - 0xE7AF: 0x7EE1, //CJK UNIFIED IDEOGRAPH - 0xE7B0: 0x7EE8, //CJK UNIFIED IDEOGRAPH - 0xE7B1: 0x7EEB, //CJK UNIFIED IDEOGRAPH - 0xE7B2: 0x7EEE, //CJK UNIFIED IDEOGRAPH - 0xE7B3: 0x7EEF, //CJK UNIFIED IDEOGRAPH - 0xE7B4: 0x7EF1, //CJK UNIFIED IDEOGRAPH - 0xE7B5: 0x7EF2, //CJK UNIFIED IDEOGRAPH - 0xE7B6: 0x7F0D, //CJK UNIFIED IDEOGRAPH - 0xE7B7: 0x7EF6, //CJK UNIFIED IDEOGRAPH - 0xE7B8: 0x7EFA, //CJK UNIFIED IDEOGRAPH - 0xE7B9: 0x7EFB, //CJK UNIFIED IDEOGRAPH - 0xE7BA: 0x7EFE, //CJK UNIFIED IDEOGRAPH - 0xE7BB: 0x7F01, //CJK UNIFIED IDEOGRAPH - 0xE7BC: 0x7F02, //CJK UNIFIED IDEOGRAPH - 0xE7BD: 0x7F03, //CJK UNIFIED IDEOGRAPH - 0xE7BE: 0x7F07, //CJK UNIFIED IDEOGRAPH - 0xE7BF: 0x7F08, //CJK UNIFIED IDEOGRAPH - 0xE7C0: 0x7F0B, //CJK UNIFIED IDEOGRAPH - 0xE7C1: 0x7F0C, //CJK UNIFIED IDEOGRAPH - 0xE7C2: 0x7F0F, //CJK UNIFIED IDEOGRAPH - 0xE7C3: 0x7F11, //CJK UNIFIED IDEOGRAPH - 0xE7C4: 0x7F12, //CJK UNIFIED IDEOGRAPH - 0xE7C5: 0x7F17, //CJK UNIFIED IDEOGRAPH - 0xE7C6: 0x7F19, //CJK UNIFIED IDEOGRAPH - 0xE7C7: 0x7F1C, //CJK UNIFIED IDEOGRAPH - 0xE7C8: 0x7F1B, //CJK UNIFIED IDEOGRAPH - 0xE7C9: 0x7F1F, //CJK UNIFIED IDEOGRAPH - 0xE7CA: 0x7F21, //CJK UNIFIED IDEOGRAPH - 0xE7CB: 0x7F22, //CJK UNIFIED IDEOGRAPH - 0xE7CC: 0x7F23, //CJK UNIFIED IDEOGRAPH - 0xE7CD: 0x7F24, //CJK UNIFIED IDEOGRAPH - 0xE7CE: 0x7F25, //CJK UNIFIED IDEOGRAPH - 0xE7CF: 0x7F26, //CJK UNIFIED IDEOGRAPH - 0xE7D0: 0x7F27, //CJK UNIFIED IDEOGRAPH - 0xE7D1: 0x7F2A, //CJK UNIFIED IDEOGRAPH - 0xE7D2: 0x7F2B, //CJK UNIFIED IDEOGRAPH - 0xE7D3: 0x7F2C, //CJK UNIFIED IDEOGRAPH - 0xE7D4: 0x7F2D, //CJK UNIFIED IDEOGRAPH - 0xE7D5: 0x7F2F, //CJK UNIFIED IDEOGRAPH - 0xE7D6: 0x7F30, //CJK UNIFIED IDEOGRAPH - 0xE7D7: 0x7F31, //CJK UNIFIED IDEOGRAPH - 0xE7D8: 0x7F32, //CJK UNIFIED IDEOGRAPH - 0xE7D9: 0x7F33, //CJK UNIFIED IDEOGRAPH - 0xE7DA: 0x7F35, //CJK UNIFIED IDEOGRAPH - 0xE7DB: 0x5E7A, //CJK UNIFIED IDEOGRAPH - 0xE7DC: 0x757F, //CJK UNIFIED IDEOGRAPH - 0xE7DD: 0x5DDB, //CJK UNIFIED IDEOGRAPH - 0xE7DE: 0x753E, //CJK UNIFIED IDEOGRAPH - 0xE7DF: 0x9095, //CJK UNIFIED IDEOGRAPH - 0xE7E0: 0x738E, //CJK UNIFIED IDEOGRAPH - 0xE7E1: 0x7391, //CJK UNIFIED IDEOGRAPH - 0xE7E2: 0x73AE, //CJK UNIFIED IDEOGRAPH - 0xE7E3: 0x73A2, //CJK UNIFIED IDEOGRAPH - 0xE7E4: 0x739F, //CJK UNIFIED IDEOGRAPH - 0xE7E5: 0x73CF, //CJK UNIFIED IDEOGRAPH - 0xE7E6: 0x73C2, //CJK UNIFIED IDEOGRAPH - 0xE7E7: 0x73D1, //CJK UNIFIED IDEOGRAPH - 0xE7E8: 0x73B7, //CJK UNIFIED IDEOGRAPH - 0xE7E9: 0x73B3, //CJK UNIFIED IDEOGRAPH - 0xE7EA: 0x73C0, //CJK UNIFIED IDEOGRAPH - 0xE7EB: 0x73C9, //CJK UNIFIED IDEOGRAPH - 0xE7EC: 0x73C8, //CJK UNIFIED IDEOGRAPH - 0xE7ED: 0x73E5, //CJK UNIFIED IDEOGRAPH - 0xE7EE: 0x73D9, //CJK UNIFIED IDEOGRAPH - 0xE7EF: 0x987C, //CJK UNIFIED IDEOGRAPH - 0xE7F0: 0x740A, //CJK UNIFIED IDEOGRAPH - 0xE7F1: 0x73E9, //CJK UNIFIED IDEOGRAPH - 0xE7F2: 0x73E7, //CJK UNIFIED IDEOGRAPH - 0xE7F3: 0x73DE, //CJK UNIFIED IDEOGRAPH - 0xE7F4: 0x73BA, //CJK UNIFIED IDEOGRAPH - 0xE7F5: 0x73F2, //CJK UNIFIED IDEOGRAPH - 0xE7F6: 0x740F, //CJK UNIFIED IDEOGRAPH - 0xE7F7: 0x742A, //CJK UNIFIED IDEOGRAPH - 0xE7F8: 0x745B, //CJK UNIFIED IDEOGRAPH - 0xE7F9: 0x7426, //CJK UNIFIED IDEOGRAPH - 0xE7FA: 0x7425, //CJK UNIFIED IDEOGRAPH - 0xE7FB: 0x7428, //CJK UNIFIED IDEOGRAPH - 0xE7FC: 0x7430, //CJK UNIFIED IDEOGRAPH - 0xE7FD: 0x742E, //CJK UNIFIED IDEOGRAPH - 0xE7FE: 0x742C, //CJK UNIFIED IDEOGRAPH - 0xE840: 0x942F, //CJK UNIFIED IDEOGRAPH - 0xE841: 0x9430, //CJK UNIFIED IDEOGRAPH - 0xE842: 0x9431, //CJK UNIFIED IDEOGRAPH - 0xE843: 0x9432, //CJK UNIFIED IDEOGRAPH - 0xE844: 0x9433, //CJK UNIFIED IDEOGRAPH - 0xE845: 0x9434, //CJK UNIFIED IDEOGRAPH - 0xE846: 0x9435, //CJK UNIFIED IDEOGRAPH - 0xE847: 0x9436, //CJK UNIFIED IDEOGRAPH - 0xE848: 0x9437, //CJK UNIFIED IDEOGRAPH - 0xE849: 0x9438, //CJK UNIFIED IDEOGRAPH - 0xE84A: 0x9439, //CJK UNIFIED IDEOGRAPH - 0xE84B: 0x943A, //CJK UNIFIED IDEOGRAPH - 0xE84C: 0x943B, //CJK UNIFIED IDEOGRAPH - 0xE84D: 0x943C, //CJK UNIFIED IDEOGRAPH - 0xE84E: 0x943D, //CJK UNIFIED IDEOGRAPH - 0xE84F: 0x943F, //CJK UNIFIED IDEOGRAPH - 0xE850: 0x9440, //CJK UNIFIED IDEOGRAPH - 0xE851: 0x9441, //CJK UNIFIED IDEOGRAPH - 0xE852: 0x9442, //CJK UNIFIED IDEOGRAPH - 0xE853: 0x9443, //CJK UNIFIED IDEOGRAPH - 0xE854: 0x9444, //CJK UNIFIED IDEOGRAPH - 0xE855: 0x9445, //CJK UNIFIED IDEOGRAPH - 0xE856: 0x9446, //CJK UNIFIED IDEOGRAPH - 0xE857: 0x9447, //CJK UNIFIED IDEOGRAPH - 0xE858: 0x9448, //CJK UNIFIED IDEOGRAPH - 0xE859: 0x9449, //CJK UNIFIED IDEOGRAPH - 0xE85A: 0x944A, //CJK UNIFIED IDEOGRAPH - 0xE85B: 0x944B, //CJK UNIFIED IDEOGRAPH - 0xE85C: 0x944C, //CJK UNIFIED IDEOGRAPH - 0xE85D: 0x944D, //CJK UNIFIED IDEOGRAPH - 0xE85E: 0x944E, //CJK UNIFIED IDEOGRAPH - 0xE85F: 0x944F, //CJK UNIFIED IDEOGRAPH - 0xE860: 0x9450, //CJK UNIFIED IDEOGRAPH - 0xE861: 0x9451, //CJK UNIFIED IDEOGRAPH - 0xE862: 0x9452, //CJK UNIFIED IDEOGRAPH - 0xE863: 0x9453, //CJK UNIFIED IDEOGRAPH - 0xE864: 0x9454, //CJK UNIFIED IDEOGRAPH - 0xE865: 0x9455, //CJK UNIFIED IDEOGRAPH - 0xE866: 0x9456, //CJK UNIFIED IDEOGRAPH - 0xE867: 0x9457, //CJK UNIFIED IDEOGRAPH - 0xE868: 0x9458, //CJK UNIFIED IDEOGRAPH - 0xE869: 0x9459, //CJK UNIFIED IDEOGRAPH - 0xE86A: 0x945A, //CJK UNIFIED IDEOGRAPH - 0xE86B: 0x945B, //CJK UNIFIED IDEOGRAPH - 0xE86C: 0x945C, //CJK UNIFIED IDEOGRAPH - 0xE86D: 0x945D, //CJK UNIFIED IDEOGRAPH - 0xE86E: 0x945E, //CJK UNIFIED IDEOGRAPH - 0xE86F: 0x945F, //CJK UNIFIED IDEOGRAPH - 0xE870: 0x9460, //CJK UNIFIED IDEOGRAPH - 0xE871: 0x9461, //CJK UNIFIED IDEOGRAPH - 0xE872: 0x9462, //CJK UNIFIED IDEOGRAPH - 0xE873: 0x9463, //CJK UNIFIED IDEOGRAPH - 0xE874: 0x9464, //CJK UNIFIED IDEOGRAPH - 0xE875: 0x9465, //CJK UNIFIED IDEOGRAPH - 0xE876: 0x9466, //CJK UNIFIED IDEOGRAPH - 0xE877: 0x9467, //CJK UNIFIED IDEOGRAPH - 0xE878: 0x9468, //CJK UNIFIED IDEOGRAPH - 0xE879: 0x9469, //CJK UNIFIED IDEOGRAPH - 0xE87A: 0x946A, //CJK UNIFIED IDEOGRAPH - 0xE87B: 0x946C, //CJK UNIFIED IDEOGRAPH - 0xE87C: 0x946D, //CJK UNIFIED IDEOGRAPH - 0xE87D: 0x946E, //CJK UNIFIED IDEOGRAPH - 0xE87E: 0x946F, //CJK UNIFIED IDEOGRAPH - 0xE880: 0x9470, //CJK UNIFIED IDEOGRAPH - 0xE881: 0x9471, //CJK UNIFIED IDEOGRAPH - 0xE882: 0x9472, //CJK UNIFIED IDEOGRAPH - 0xE883: 0x9473, //CJK UNIFIED IDEOGRAPH - 0xE884: 0x9474, //CJK UNIFIED IDEOGRAPH - 0xE885: 0x9475, //CJK UNIFIED IDEOGRAPH - 0xE886: 0x9476, //CJK UNIFIED IDEOGRAPH - 0xE887: 0x9477, //CJK UNIFIED IDEOGRAPH - 0xE888: 0x9478, //CJK UNIFIED IDEOGRAPH - 0xE889: 0x9479, //CJK UNIFIED IDEOGRAPH - 0xE88A: 0x947A, //CJK UNIFIED IDEOGRAPH - 0xE88B: 0x947B, //CJK UNIFIED IDEOGRAPH - 0xE88C: 0x947C, //CJK UNIFIED IDEOGRAPH - 0xE88D: 0x947D, //CJK UNIFIED IDEOGRAPH - 0xE88E: 0x947E, //CJK UNIFIED IDEOGRAPH - 0xE88F: 0x947F, //CJK UNIFIED IDEOGRAPH - 0xE890: 0x9480, //CJK UNIFIED IDEOGRAPH - 0xE891: 0x9481, //CJK UNIFIED IDEOGRAPH - 0xE892: 0x9482, //CJK UNIFIED IDEOGRAPH - 0xE893: 0x9483, //CJK UNIFIED IDEOGRAPH - 0xE894: 0x9484, //CJK UNIFIED IDEOGRAPH - 0xE895: 0x9491, //CJK UNIFIED IDEOGRAPH - 0xE896: 0x9496, //CJK UNIFIED IDEOGRAPH - 0xE897: 0x9498, //CJK UNIFIED IDEOGRAPH - 0xE898: 0x94C7, //CJK UNIFIED IDEOGRAPH - 0xE899: 0x94CF, //CJK UNIFIED IDEOGRAPH - 0xE89A: 0x94D3, //CJK UNIFIED IDEOGRAPH - 0xE89B: 0x94D4, //CJK UNIFIED IDEOGRAPH - 0xE89C: 0x94DA, //CJK UNIFIED IDEOGRAPH - 0xE89D: 0x94E6, //CJK UNIFIED IDEOGRAPH - 0xE89E: 0x94FB, //CJK UNIFIED IDEOGRAPH - 0xE89F: 0x951C, //CJK UNIFIED IDEOGRAPH - 0xE8A0: 0x9520, //CJK UNIFIED IDEOGRAPH - 0xE8A1: 0x741B, //CJK UNIFIED IDEOGRAPH - 0xE8A2: 0x741A, //CJK UNIFIED IDEOGRAPH - 0xE8A3: 0x7441, //CJK UNIFIED IDEOGRAPH - 0xE8A4: 0x745C, //CJK UNIFIED IDEOGRAPH - 0xE8A5: 0x7457, //CJK UNIFIED IDEOGRAPH - 0xE8A6: 0x7455, //CJK UNIFIED IDEOGRAPH - 0xE8A7: 0x7459, //CJK UNIFIED IDEOGRAPH - 0xE8A8: 0x7477, //CJK UNIFIED IDEOGRAPH - 0xE8A9: 0x746D, //CJK UNIFIED IDEOGRAPH - 0xE8AA: 0x747E, //CJK UNIFIED IDEOGRAPH - 0xE8AB: 0x749C, //CJK UNIFIED IDEOGRAPH - 0xE8AC: 0x748E, //CJK UNIFIED IDEOGRAPH - 0xE8AD: 0x7480, //CJK UNIFIED IDEOGRAPH - 0xE8AE: 0x7481, //CJK UNIFIED IDEOGRAPH - 0xE8AF: 0x7487, //CJK UNIFIED IDEOGRAPH - 0xE8B0: 0x748B, //CJK UNIFIED IDEOGRAPH - 0xE8B1: 0x749E, //CJK UNIFIED IDEOGRAPH - 0xE8B2: 0x74A8, //CJK UNIFIED IDEOGRAPH - 0xE8B3: 0x74A9, //CJK UNIFIED IDEOGRAPH - 0xE8B4: 0x7490, //CJK UNIFIED IDEOGRAPH - 0xE8B5: 0x74A7, //CJK UNIFIED IDEOGRAPH - 0xE8B6: 0x74D2, //CJK UNIFIED IDEOGRAPH - 0xE8B7: 0x74BA, //CJK UNIFIED IDEOGRAPH - 0xE8B8: 0x97EA, //CJK UNIFIED IDEOGRAPH - 0xE8B9: 0x97EB, //CJK UNIFIED IDEOGRAPH - 0xE8BA: 0x97EC, //CJK UNIFIED IDEOGRAPH - 0xE8BB: 0x674C, //CJK UNIFIED IDEOGRAPH - 0xE8BC: 0x6753, //CJK UNIFIED IDEOGRAPH - 0xE8BD: 0x675E, //CJK UNIFIED IDEOGRAPH - 0xE8BE: 0x6748, //CJK UNIFIED IDEOGRAPH - 0xE8BF: 0x6769, //CJK UNIFIED IDEOGRAPH - 0xE8C0: 0x67A5, //CJK UNIFIED IDEOGRAPH - 0xE8C1: 0x6787, //CJK UNIFIED IDEOGRAPH - 0xE8C2: 0x676A, //CJK UNIFIED IDEOGRAPH - 0xE8C3: 0x6773, //CJK UNIFIED IDEOGRAPH - 0xE8C4: 0x6798, //CJK UNIFIED IDEOGRAPH - 0xE8C5: 0x67A7, //CJK UNIFIED IDEOGRAPH - 0xE8C6: 0x6775, //CJK UNIFIED IDEOGRAPH - 0xE8C7: 0x67A8, //CJK UNIFIED IDEOGRAPH - 0xE8C8: 0x679E, //CJK UNIFIED IDEOGRAPH - 0xE8C9: 0x67AD, //CJK UNIFIED IDEOGRAPH - 0xE8CA: 0x678B, //CJK UNIFIED IDEOGRAPH - 0xE8CB: 0x6777, //CJK UNIFIED IDEOGRAPH - 0xE8CC: 0x677C, //CJK UNIFIED IDEOGRAPH - 0xE8CD: 0x67F0, //CJK UNIFIED IDEOGRAPH - 0xE8CE: 0x6809, //CJK UNIFIED IDEOGRAPH - 0xE8CF: 0x67D8, //CJK UNIFIED IDEOGRAPH - 0xE8D0: 0x680A, //CJK UNIFIED IDEOGRAPH - 0xE8D1: 0x67E9, //CJK UNIFIED IDEOGRAPH - 0xE8D2: 0x67B0, //CJK UNIFIED IDEOGRAPH - 0xE8D3: 0x680C, //CJK UNIFIED IDEOGRAPH - 0xE8D4: 0x67D9, //CJK UNIFIED IDEOGRAPH - 0xE8D5: 0x67B5, //CJK UNIFIED IDEOGRAPH - 0xE8D6: 0x67DA, //CJK UNIFIED IDEOGRAPH - 0xE8D7: 0x67B3, //CJK UNIFIED IDEOGRAPH - 0xE8D8: 0x67DD, //CJK UNIFIED IDEOGRAPH - 0xE8D9: 0x6800, //CJK UNIFIED IDEOGRAPH - 0xE8DA: 0x67C3, //CJK UNIFIED IDEOGRAPH - 0xE8DB: 0x67B8, //CJK UNIFIED IDEOGRAPH - 0xE8DC: 0x67E2, //CJK UNIFIED IDEOGRAPH - 0xE8DD: 0x680E, //CJK UNIFIED IDEOGRAPH - 0xE8DE: 0x67C1, //CJK UNIFIED IDEOGRAPH - 0xE8DF: 0x67FD, //CJK UNIFIED IDEOGRAPH - 0xE8E0: 0x6832, //CJK UNIFIED IDEOGRAPH - 0xE8E1: 0x6833, //CJK UNIFIED IDEOGRAPH - 0xE8E2: 0x6860, //CJK UNIFIED IDEOGRAPH - 0xE8E3: 0x6861, //CJK UNIFIED IDEOGRAPH - 0xE8E4: 0x684E, //CJK UNIFIED IDEOGRAPH - 0xE8E5: 0x6862, //CJK UNIFIED IDEOGRAPH - 0xE8E6: 0x6844, //CJK UNIFIED IDEOGRAPH - 0xE8E7: 0x6864, //CJK UNIFIED IDEOGRAPH - 0xE8E8: 0x6883, //CJK UNIFIED IDEOGRAPH - 0xE8E9: 0x681D, //CJK UNIFIED IDEOGRAPH - 0xE8EA: 0x6855, //CJK UNIFIED IDEOGRAPH - 0xE8EB: 0x6866, //CJK UNIFIED IDEOGRAPH - 0xE8EC: 0x6841, //CJK UNIFIED IDEOGRAPH - 0xE8ED: 0x6867, //CJK UNIFIED IDEOGRAPH - 0xE8EE: 0x6840, //CJK UNIFIED IDEOGRAPH - 0xE8EF: 0x683E, //CJK UNIFIED IDEOGRAPH - 0xE8F0: 0x684A, //CJK UNIFIED IDEOGRAPH - 0xE8F1: 0x6849, //CJK UNIFIED IDEOGRAPH - 0xE8F2: 0x6829, //CJK UNIFIED IDEOGRAPH - 0xE8F3: 0x68B5, //CJK UNIFIED IDEOGRAPH - 0xE8F4: 0x688F, //CJK UNIFIED IDEOGRAPH - 0xE8F5: 0x6874, //CJK UNIFIED IDEOGRAPH - 0xE8F6: 0x6877, //CJK UNIFIED IDEOGRAPH - 0xE8F7: 0x6893, //CJK UNIFIED IDEOGRAPH - 0xE8F8: 0x686B, //CJK UNIFIED IDEOGRAPH - 0xE8F9: 0x68C2, //CJK UNIFIED IDEOGRAPH - 0xE8FA: 0x696E, //CJK UNIFIED IDEOGRAPH - 0xE8FB: 0x68FC, //CJK UNIFIED IDEOGRAPH - 0xE8FC: 0x691F, //CJK UNIFIED IDEOGRAPH - 0xE8FD: 0x6920, //CJK UNIFIED IDEOGRAPH - 0xE8FE: 0x68F9, //CJK UNIFIED IDEOGRAPH - 0xE940: 0x9527, //CJK UNIFIED IDEOGRAPH - 0xE941: 0x9533, //CJK UNIFIED IDEOGRAPH - 0xE942: 0x953D, //CJK UNIFIED IDEOGRAPH - 0xE943: 0x9543, //CJK UNIFIED IDEOGRAPH - 0xE944: 0x9548, //CJK UNIFIED IDEOGRAPH - 0xE945: 0x954B, //CJK UNIFIED IDEOGRAPH - 0xE946: 0x9555, //CJK UNIFIED IDEOGRAPH - 0xE947: 0x955A, //CJK UNIFIED IDEOGRAPH - 0xE948: 0x9560, //CJK UNIFIED IDEOGRAPH - 0xE949: 0x956E, //CJK UNIFIED IDEOGRAPH - 0xE94A: 0x9574, //CJK UNIFIED IDEOGRAPH - 0xE94B: 0x9575, //CJK UNIFIED IDEOGRAPH - 0xE94C: 0x9577, //CJK UNIFIED IDEOGRAPH - 0xE94D: 0x9578, //CJK UNIFIED IDEOGRAPH - 0xE94E: 0x9579, //CJK UNIFIED IDEOGRAPH - 0xE94F: 0x957A, //CJK UNIFIED IDEOGRAPH - 0xE950: 0x957B, //CJK UNIFIED IDEOGRAPH - 0xE951: 0x957C, //CJK UNIFIED IDEOGRAPH - 0xE952: 0x957D, //CJK UNIFIED IDEOGRAPH - 0xE953: 0x957E, //CJK UNIFIED IDEOGRAPH - 0xE954: 0x9580, //CJK UNIFIED IDEOGRAPH - 0xE955: 0x9581, //CJK UNIFIED IDEOGRAPH - 0xE956: 0x9582, //CJK UNIFIED IDEOGRAPH - 0xE957: 0x9583, //CJK UNIFIED IDEOGRAPH - 0xE958: 0x9584, //CJK UNIFIED IDEOGRAPH - 0xE959: 0x9585, //CJK UNIFIED IDEOGRAPH - 0xE95A: 0x9586, //CJK UNIFIED IDEOGRAPH - 0xE95B: 0x9587, //CJK UNIFIED IDEOGRAPH - 0xE95C: 0x9588, //CJK UNIFIED IDEOGRAPH - 0xE95D: 0x9589, //CJK UNIFIED IDEOGRAPH - 0xE95E: 0x958A, //CJK UNIFIED IDEOGRAPH - 0xE95F: 0x958B, //CJK UNIFIED IDEOGRAPH - 0xE960: 0x958C, //CJK UNIFIED IDEOGRAPH - 0xE961: 0x958D, //CJK UNIFIED IDEOGRAPH - 0xE962: 0x958E, //CJK UNIFIED IDEOGRAPH - 0xE963: 0x958F, //CJK UNIFIED IDEOGRAPH - 0xE964: 0x9590, //CJK UNIFIED IDEOGRAPH - 0xE965: 0x9591, //CJK UNIFIED IDEOGRAPH - 0xE966: 0x9592, //CJK UNIFIED IDEOGRAPH - 0xE967: 0x9593, //CJK UNIFIED IDEOGRAPH - 0xE968: 0x9594, //CJK UNIFIED IDEOGRAPH - 0xE969: 0x9595, //CJK UNIFIED IDEOGRAPH - 0xE96A: 0x9596, //CJK UNIFIED IDEOGRAPH - 0xE96B: 0x9597, //CJK UNIFIED IDEOGRAPH - 0xE96C: 0x9598, //CJK UNIFIED IDEOGRAPH - 0xE96D: 0x9599, //CJK UNIFIED IDEOGRAPH - 0xE96E: 0x959A, //CJK UNIFIED IDEOGRAPH - 0xE96F: 0x959B, //CJK UNIFIED IDEOGRAPH - 0xE970: 0x959C, //CJK UNIFIED IDEOGRAPH - 0xE971: 0x959D, //CJK UNIFIED IDEOGRAPH - 0xE972: 0x959E, //CJK UNIFIED IDEOGRAPH - 0xE973: 0x959F, //CJK UNIFIED IDEOGRAPH - 0xE974: 0x95A0, //CJK UNIFIED IDEOGRAPH - 0xE975: 0x95A1, //CJK UNIFIED IDEOGRAPH - 0xE976: 0x95A2, //CJK UNIFIED IDEOGRAPH - 0xE977: 0x95A3, //CJK UNIFIED IDEOGRAPH - 0xE978: 0x95A4, //CJK UNIFIED IDEOGRAPH - 0xE979: 0x95A5, //CJK UNIFIED IDEOGRAPH - 0xE97A: 0x95A6, //CJK UNIFIED IDEOGRAPH - 0xE97B: 0x95A7, //CJK UNIFIED IDEOGRAPH - 0xE97C: 0x95A8, //CJK UNIFIED IDEOGRAPH - 0xE97D: 0x95A9, //CJK UNIFIED IDEOGRAPH - 0xE97E: 0x95AA, //CJK UNIFIED IDEOGRAPH - 0xE980: 0x95AB, //CJK UNIFIED IDEOGRAPH - 0xE981: 0x95AC, //CJK UNIFIED IDEOGRAPH - 0xE982: 0x95AD, //CJK UNIFIED IDEOGRAPH - 0xE983: 0x95AE, //CJK UNIFIED IDEOGRAPH - 0xE984: 0x95AF, //CJK UNIFIED IDEOGRAPH - 0xE985: 0x95B0, //CJK UNIFIED IDEOGRAPH - 0xE986: 0x95B1, //CJK UNIFIED IDEOGRAPH - 0xE987: 0x95B2, //CJK UNIFIED IDEOGRAPH - 0xE988: 0x95B3, //CJK UNIFIED IDEOGRAPH - 0xE989: 0x95B4, //CJK UNIFIED IDEOGRAPH - 0xE98A: 0x95B5, //CJK UNIFIED IDEOGRAPH - 0xE98B: 0x95B6, //CJK UNIFIED IDEOGRAPH - 0xE98C: 0x95B7, //CJK UNIFIED IDEOGRAPH - 0xE98D: 0x95B8, //CJK UNIFIED IDEOGRAPH - 0xE98E: 0x95B9, //CJK UNIFIED IDEOGRAPH - 0xE98F: 0x95BA, //CJK UNIFIED IDEOGRAPH - 0xE990: 0x95BB, //CJK UNIFIED IDEOGRAPH - 0xE991: 0x95BC, //CJK UNIFIED IDEOGRAPH - 0xE992: 0x95BD, //CJK UNIFIED IDEOGRAPH - 0xE993: 0x95BE, //CJK UNIFIED IDEOGRAPH - 0xE994: 0x95BF, //CJK UNIFIED IDEOGRAPH - 0xE995: 0x95C0, //CJK UNIFIED IDEOGRAPH - 0xE996: 0x95C1, //CJK UNIFIED IDEOGRAPH - 0xE997: 0x95C2, //CJK UNIFIED IDEOGRAPH - 0xE998: 0x95C3, //CJK UNIFIED IDEOGRAPH - 0xE999: 0x95C4, //CJK UNIFIED IDEOGRAPH - 0xE99A: 0x95C5, //CJK UNIFIED IDEOGRAPH - 0xE99B: 0x95C6, //CJK UNIFIED IDEOGRAPH - 0xE99C: 0x95C7, //CJK UNIFIED IDEOGRAPH - 0xE99D: 0x95C8, //CJK UNIFIED IDEOGRAPH - 0xE99E: 0x95C9, //CJK UNIFIED IDEOGRAPH - 0xE99F: 0x95CA, //CJK UNIFIED IDEOGRAPH - 0xE9A0: 0x95CB, //CJK UNIFIED IDEOGRAPH - 0xE9A1: 0x6924, //CJK UNIFIED IDEOGRAPH - 0xE9A2: 0x68F0, //CJK UNIFIED IDEOGRAPH - 0xE9A3: 0x690B, //CJK UNIFIED IDEOGRAPH - 0xE9A4: 0x6901, //CJK UNIFIED IDEOGRAPH - 0xE9A5: 0x6957, //CJK UNIFIED IDEOGRAPH - 0xE9A6: 0x68E3, //CJK UNIFIED IDEOGRAPH - 0xE9A7: 0x6910, //CJK UNIFIED IDEOGRAPH - 0xE9A8: 0x6971, //CJK UNIFIED IDEOGRAPH - 0xE9A9: 0x6939, //CJK UNIFIED IDEOGRAPH - 0xE9AA: 0x6960, //CJK UNIFIED IDEOGRAPH - 0xE9AB: 0x6942, //CJK UNIFIED IDEOGRAPH - 0xE9AC: 0x695D, //CJK UNIFIED IDEOGRAPH - 0xE9AD: 0x6984, //CJK UNIFIED IDEOGRAPH - 0xE9AE: 0x696B, //CJK UNIFIED IDEOGRAPH - 0xE9AF: 0x6980, //CJK UNIFIED IDEOGRAPH - 0xE9B0: 0x6998, //CJK UNIFIED IDEOGRAPH - 0xE9B1: 0x6978, //CJK UNIFIED IDEOGRAPH - 0xE9B2: 0x6934, //CJK UNIFIED IDEOGRAPH - 0xE9B3: 0x69CC, //CJK UNIFIED IDEOGRAPH - 0xE9B4: 0x6987, //CJK UNIFIED IDEOGRAPH - 0xE9B5: 0x6988, //CJK UNIFIED IDEOGRAPH - 0xE9B6: 0x69CE, //CJK UNIFIED IDEOGRAPH - 0xE9B7: 0x6989, //CJK UNIFIED IDEOGRAPH - 0xE9B8: 0x6966, //CJK UNIFIED IDEOGRAPH - 0xE9B9: 0x6963, //CJK UNIFIED IDEOGRAPH - 0xE9BA: 0x6979, //CJK UNIFIED IDEOGRAPH - 0xE9BB: 0x699B, //CJK UNIFIED IDEOGRAPH - 0xE9BC: 0x69A7, //CJK UNIFIED IDEOGRAPH - 0xE9BD: 0x69BB, //CJK UNIFIED IDEOGRAPH - 0xE9BE: 0x69AB, //CJK UNIFIED IDEOGRAPH - 0xE9BF: 0x69AD, //CJK UNIFIED IDEOGRAPH - 0xE9C0: 0x69D4, //CJK UNIFIED IDEOGRAPH - 0xE9C1: 0x69B1, //CJK UNIFIED IDEOGRAPH - 0xE9C2: 0x69C1, //CJK UNIFIED IDEOGRAPH - 0xE9C3: 0x69CA, //CJK UNIFIED IDEOGRAPH - 0xE9C4: 0x69DF, //CJK UNIFIED IDEOGRAPH - 0xE9C5: 0x6995, //CJK UNIFIED IDEOGRAPH - 0xE9C6: 0x69E0, //CJK UNIFIED IDEOGRAPH - 0xE9C7: 0x698D, //CJK UNIFIED IDEOGRAPH - 0xE9C8: 0x69FF, //CJK UNIFIED IDEOGRAPH - 0xE9C9: 0x6A2F, //CJK UNIFIED IDEOGRAPH - 0xE9CA: 0x69ED, //CJK UNIFIED IDEOGRAPH - 0xE9CB: 0x6A17, //CJK UNIFIED IDEOGRAPH - 0xE9CC: 0x6A18, //CJK UNIFIED IDEOGRAPH - 0xE9CD: 0x6A65, //CJK UNIFIED IDEOGRAPH - 0xE9CE: 0x69F2, //CJK UNIFIED IDEOGRAPH - 0xE9CF: 0x6A44, //CJK UNIFIED IDEOGRAPH - 0xE9D0: 0x6A3E, //CJK UNIFIED IDEOGRAPH - 0xE9D1: 0x6AA0, //CJK UNIFIED IDEOGRAPH - 0xE9D2: 0x6A50, //CJK UNIFIED IDEOGRAPH - 0xE9D3: 0x6A5B, //CJK UNIFIED IDEOGRAPH - 0xE9D4: 0x6A35, //CJK UNIFIED IDEOGRAPH - 0xE9D5: 0x6A8E, //CJK UNIFIED IDEOGRAPH - 0xE9D6: 0x6A79, //CJK UNIFIED IDEOGRAPH - 0xE9D7: 0x6A3D, //CJK UNIFIED IDEOGRAPH - 0xE9D8: 0x6A28, //CJK UNIFIED IDEOGRAPH - 0xE9D9: 0x6A58, //CJK UNIFIED IDEOGRAPH - 0xE9DA: 0x6A7C, //CJK UNIFIED IDEOGRAPH - 0xE9DB: 0x6A91, //CJK UNIFIED IDEOGRAPH - 0xE9DC: 0x6A90, //CJK UNIFIED IDEOGRAPH - 0xE9DD: 0x6AA9, //CJK UNIFIED IDEOGRAPH - 0xE9DE: 0x6A97, //CJK UNIFIED IDEOGRAPH - 0xE9DF: 0x6AAB, //CJK UNIFIED IDEOGRAPH - 0xE9E0: 0x7337, //CJK UNIFIED IDEOGRAPH - 0xE9E1: 0x7352, //CJK UNIFIED IDEOGRAPH - 0xE9E2: 0x6B81, //CJK UNIFIED IDEOGRAPH - 0xE9E3: 0x6B82, //CJK UNIFIED IDEOGRAPH - 0xE9E4: 0x6B87, //CJK UNIFIED IDEOGRAPH - 0xE9E5: 0x6B84, //CJK UNIFIED IDEOGRAPH - 0xE9E6: 0x6B92, //CJK UNIFIED IDEOGRAPH - 0xE9E7: 0x6B93, //CJK UNIFIED IDEOGRAPH - 0xE9E8: 0x6B8D, //CJK UNIFIED IDEOGRAPH - 0xE9E9: 0x6B9A, //CJK UNIFIED IDEOGRAPH - 0xE9EA: 0x6B9B, //CJK UNIFIED IDEOGRAPH - 0xE9EB: 0x6BA1, //CJK UNIFIED IDEOGRAPH - 0xE9EC: 0x6BAA, //CJK UNIFIED IDEOGRAPH - 0xE9ED: 0x8F6B, //CJK UNIFIED IDEOGRAPH - 0xE9EE: 0x8F6D, //CJK UNIFIED IDEOGRAPH - 0xE9EF: 0x8F71, //CJK UNIFIED IDEOGRAPH - 0xE9F0: 0x8F72, //CJK UNIFIED IDEOGRAPH - 0xE9F1: 0x8F73, //CJK UNIFIED IDEOGRAPH - 0xE9F2: 0x8F75, //CJK UNIFIED IDEOGRAPH - 0xE9F3: 0x8F76, //CJK UNIFIED IDEOGRAPH - 0xE9F4: 0x8F78, //CJK UNIFIED IDEOGRAPH - 0xE9F5: 0x8F77, //CJK UNIFIED IDEOGRAPH - 0xE9F6: 0x8F79, //CJK UNIFIED IDEOGRAPH - 0xE9F7: 0x8F7A, //CJK UNIFIED IDEOGRAPH - 0xE9F8: 0x8F7C, //CJK UNIFIED IDEOGRAPH - 0xE9F9: 0x8F7E, //CJK UNIFIED IDEOGRAPH - 0xE9FA: 0x8F81, //CJK UNIFIED IDEOGRAPH - 0xE9FB: 0x8F82, //CJK UNIFIED IDEOGRAPH - 0xE9FC: 0x8F84, //CJK UNIFIED IDEOGRAPH - 0xE9FD: 0x8F87, //CJK UNIFIED IDEOGRAPH - 0xE9FE: 0x8F8B, //CJK UNIFIED IDEOGRAPH - 0xEA40: 0x95CC, //CJK UNIFIED IDEOGRAPH - 0xEA41: 0x95CD, //CJK UNIFIED IDEOGRAPH - 0xEA42: 0x95CE, //CJK UNIFIED IDEOGRAPH - 0xEA43: 0x95CF, //CJK UNIFIED IDEOGRAPH - 0xEA44: 0x95D0, //CJK UNIFIED IDEOGRAPH - 0xEA45: 0x95D1, //CJK UNIFIED IDEOGRAPH - 0xEA46: 0x95D2, //CJK UNIFIED IDEOGRAPH - 0xEA47: 0x95D3, //CJK UNIFIED IDEOGRAPH - 0xEA48: 0x95D4, //CJK UNIFIED IDEOGRAPH - 0xEA49: 0x95D5, //CJK UNIFIED IDEOGRAPH - 0xEA4A: 0x95D6, //CJK UNIFIED IDEOGRAPH - 0xEA4B: 0x95D7, //CJK UNIFIED IDEOGRAPH - 0xEA4C: 0x95D8, //CJK UNIFIED IDEOGRAPH - 0xEA4D: 0x95D9, //CJK UNIFIED IDEOGRAPH - 0xEA4E: 0x95DA, //CJK UNIFIED IDEOGRAPH - 0xEA4F: 0x95DB, //CJK UNIFIED IDEOGRAPH - 0xEA50: 0x95DC, //CJK UNIFIED IDEOGRAPH - 0xEA51: 0x95DD, //CJK UNIFIED IDEOGRAPH - 0xEA52: 0x95DE, //CJK UNIFIED IDEOGRAPH - 0xEA53: 0x95DF, //CJK UNIFIED IDEOGRAPH - 0xEA54: 0x95E0, //CJK UNIFIED IDEOGRAPH - 0xEA55: 0x95E1, //CJK UNIFIED IDEOGRAPH - 0xEA56: 0x95E2, //CJK UNIFIED IDEOGRAPH - 0xEA57: 0x95E3, //CJK UNIFIED IDEOGRAPH - 0xEA58: 0x95E4, //CJK UNIFIED IDEOGRAPH - 0xEA59: 0x95E5, //CJK UNIFIED IDEOGRAPH - 0xEA5A: 0x95E6, //CJK UNIFIED IDEOGRAPH - 0xEA5B: 0x95E7, //CJK UNIFIED IDEOGRAPH - 0xEA5C: 0x95EC, //CJK UNIFIED IDEOGRAPH - 0xEA5D: 0x95FF, //CJK UNIFIED IDEOGRAPH - 0xEA5E: 0x9607, //CJK UNIFIED IDEOGRAPH - 0xEA5F: 0x9613, //CJK UNIFIED IDEOGRAPH - 0xEA60: 0x9618, //CJK UNIFIED IDEOGRAPH - 0xEA61: 0x961B, //CJK UNIFIED IDEOGRAPH - 0xEA62: 0x961E, //CJK UNIFIED IDEOGRAPH - 0xEA63: 0x9620, //CJK UNIFIED IDEOGRAPH - 0xEA64: 0x9623, //CJK UNIFIED IDEOGRAPH - 0xEA65: 0x9624, //CJK UNIFIED IDEOGRAPH - 0xEA66: 0x9625, //CJK UNIFIED IDEOGRAPH - 0xEA67: 0x9626, //CJK UNIFIED IDEOGRAPH - 0xEA68: 0x9627, //CJK UNIFIED IDEOGRAPH - 0xEA69: 0x9628, //CJK UNIFIED IDEOGRAPH - 0xEA6A: 0x9629, //CJK UNIFIED IDEOGRAPH - 0xEA6B: 0x962B, //CJK UNIFIED IDEOGRAPH - 0xEA6C: 0x962C, //CJK UNIFIED IDEOGRAPH - 0xEA6D: 0x962D, //CJK UNIFIED IDEOGRAPH - 0xEA6E: 0x962F, //CJK UNIFIED IDEOGRAPH - 0xEA6F: 0x9630, //CJK UNIFIED IDEOGRAPH - 0xEA70: 0x9637, //CJK UNIFIED IDEOGRAPH - 0xEA71: 0x9638, //CJK UNIFIED IDEOGRAPH - 0xEA72: 0x9639, //CJK UNIFIED IDEOGRAPH - 0xEA73: 0x963A, //CJK UNIFIED IDEOGRAPH - 0xEA74: 0x963E, //CJK UNIFIED IDEOGRAPH - 0xEA75: 0x9641, //CJK UNIFIED IDEOGRAPH - 0xEA76: 0x9643, //CJK UNIFIED IDEOGRAPH - 0xEA77: 0x964A, //CJK UNIFIED IDEOGRAPH - 0xEA78: 0x964E, //CJK UNIFIED IDEOGRAPH - 0xEA79: 0x964F, //CJK UNIFIED IDEOGRAPH - 0xEA7A: 0x9651, //CJK UNIFIED IDEOGRAPH - 0xEA7B: 0x9652, //CJK UNIFIED IDEOGRAPH - 0xEA7C: 0x9653, //CJK UNIFIED IDEOGRAPH - 0xEA7D: 0x9656, //CJK UNIFIED IDEOGRAPH - 0xEA7E: 0x9657, //CJK UNIFIED IDEOGRAPH - 0xEA80: 0x9658, //CJK UNIFIED IDEOGRAPH - 0xEA81: 0x9659, //CJK UNIFIED IDEOGRAPH - 0xEA82: 0x965A, //CJK UNIFIED IDEOGRAPH - 0xEA83: 0x965C, //CJK UNIFIED IDEOGRAPH - 0xEA84: 0x965D, //CJK UNIFIED IDEOGRAPH - 0xEA85: 0x965E, //CJK UNIFIED IDEOGRAPH - 0xEA86: 0x9660, //CJK UNIFIED IDEOGRAPH - 0xEA87: 0x9663, //CJK UNIFIED IDEOGRAPH - 0xEA88: 0x9665, //CJK UNIFIED IDEOGRAPH - 0xEA89: 0x9666, //CJK UNIFIED IDEOGRAPH - 0xEA8A: 0x966B, //CJK UNIFIED IDEOGRAPH - 0xEA8B: 0x966D, //CJK UNIFIED IDEOGRAPH - 0xEA8C: 0x966E, //CJK UNIFIED IDEOGRAPH - 0xEA8D: 0x966F, //CJK UNIFIED IDEOGRAPH - 0xEA8E: 0x9670, //CJK UNIFIED IDEOGRAPH - 0xEA8F: 0x9671, //CJK UNIFIED IDEOGRAPH - 0xEA90: 0x9673, //CJK UNIFIED IDEOGRAPH - 0xEA91: 0x9678, //CJK UNIFIED IDEOGRAPH - 0xEA92: 0x9679, //CJK UNIFIED IDEOGRAPH - 0xEA93: 0x967A, //CJK UNIFIED IDEOGRAPH - 0xEA94: 0x967B, //CJK UNIFIED IDEOGRAPH - 0xEA95: 0x967C, //CJK UNIFIED IDEOGRAPH - 0xEA96: 0x967D, //CJK UNIFIED IDEOGRAPH - 0xEA97: 0x967E, //CJK UNIFIED IDEOGRAPH - 0xEA98: 0x967F, //CJK UNIFIED IDEOGRAPH - 0xEA99: 0x9680, //CJK UNIFIED IDEOGRAPH - 0xEA9A: 0x9681, //CJK UNIFIED IDEOGRAPH - 0xEA9B: 0x9682, //CJK UNIFIED IDEOGRAPH - 0xEA9C: 0x9683, //CJK UNIFIED IDEOGRAPH - 0xEA9D: 0x9684, //CJK UNIFIED IDEOGRAPH - 0xEA9E: 0x9687, //CJK UNIFIED IDEOGRAPH - 0xEA9F: 0x9689, //CJK UNIFIED IDEOGRAPH - 0xEAA0: 0x968A, //CJK UNIFIED IDEOGRAPH - 0xEAA1: 0x8F8D, //CJK UNIFIED IDEOGRAPH - 0xEAA2: 0x8F8E, //CJK UNIFIED IDEOGRAPH - 0xEAA3: 0x8F8F, //CJK UNIFIED IDEOGRAPH - 0xEAA4: 0x8F98, //CJK UNIFIED IDEOGRAPH - 0xEAA5: 0x8F9A, //CJK UNIFIED IDEOGRAPH - 0xEAA6: 0x8ECE, //CJK UNIFIED IDEOGRAPH - 0xEAA7: 0x620B, //CJK UNIFIED IDEOGRAPH - 0xEAA8: 0x6217, //CJK UNIFIED IDEOGRAPH - 0xEAA9: 0x621B, //CJK UNIFIED IDEOGRAPH - 0xEAAA: 0x621F, //CJK UNIFIED IDEOGRAPH - 0xEAAB: 0x6222, //CJK UNIFIED IDEOGRAPH - 0xEAAC: 0x6221, //CJK UNIFIED IDEOGRAPH - 0xEAAD: 0x6225, //CJK UNIFIED IDEOGRAPH - 0xEAAE: 0x6224, //CJK UNIFIED IDEOGRAPH - 0xEAAF: 0x622C, //CJK UNIFIED IDEOGRAPH - 0xEAB0: 0x81E7, //CJK UNIFIED IDEOGRAPH - 0xEAB1: 0x74EF, //CJK UNIFIED IDEOGRAPH - 0xEAB2: 0x74F4, //CJK UNIFIED IDEOGRAPH - 0xEAB3: 0x74FF, //CJK UNIFIED IDEOGRAPH - 0xEAB4: 0x750F, //CJK UNIFIED IDEOGRAPH - 0xEAB5: 0x7511, //CJK UNIFIED IDEOGRAPH - 0xEAB6: 0x7513, //CJK UNIFIED IDEOGRAPH - 0xEAB7: 0x6534, //CJK UNIFIED IDEOGRAPH - 0xEAB8: 0x65EE, //CJK UNIFIED IDEOGRAPH - 0xEAB9: 0x65EF, //CJK UNIFIED IDEOGRAPH - 0xEABA: 0x65F0, //CJK UNIFIED IDEOGRAPH - 0xEABB: 0x660A, //CJK UNIFIED IDEOGRAPH - 0xEABC: 0x6619, //CJK UNIFIED IDEOGRAPH - 0xEABD: 0x6772, //CJK UNIFIED IDEOGRAPH - 0xEABE: 0x6603, //CJK UNIFIED IDEOGRAPH - 0xEABF: 0x6615, //CJK UNIFIED IDEOGRAPH - 0xEAC0: 0x6600, //CJK UNIFIED IDEOGRAPH - 0xEAC1: 0x7085, //CJK UNIFIED IDEOGRAPH - 0xEAC2: 0x66F7, //CJK UNIFIED IDEOGRAPH - 0xEAC3: 0x661D, //CJK UNIFIED IDEOGRAPH - 0xEAC4: 0x6634, //CJK UNIFIED IDEOGRAPH - 0xEAC5: 0x6631, //CJK UNIFIED IDEOGRAPH - 0xEAC6: 0x6636, //CJK UNIFIED IDEOGRAPH - 0xEAC7: 0x6635, //CJK UNIFIED IDEOGRAPH - 0xEAC8: 0x8006, //CJK UNIFIED IDEOGRAPH - 0xEAC9: 0x665F, //CJK UNIFIED IDEOGRAPH - 0xEACA: 0x6654, //CJK UNIFIED IDEOGRAPH - 0xEACB: 0x6641, //CJK UNIFIED IDEOGRAPH - 0xEACC: 0x664F, //CJK UNIFIED IDEOGRAPH - 0xEACD: 0x6656, //CJK UNIFIED IDEOGRAPH - 0xEACE: 0x6661, //CJK UNIFIED IDEOGRAPH - 0xEACF: 0x6657, //CJK UNIFIED IDEOGRAPH - 0xEAD0: 0x6677, //CJK UNIFIED IDEOGRAPH - 0xEAD1: 0x6684, //CJK UNIFIED IDEOGRAPH - 0xEAD2: 0x668C, //CJK UNIFIED IDEOGRAPH - 0xEAD3: 0x66A7, //CJK UNIFIED IDEOGRAPH - 0xEAD4: 0x669D, //CJK UNIFIED IDEOGRAPH - 0xEAD5: 0x66BE, //CJK UNIFIED IDEOGRAPH - 0xEAD6: 0x66DB, //CJK UNIFIED IDEOGRAPH - 0xEAD7: 0x66DC, //CJK UNIFIED IDEOGRAPH - 0xEAD8: 0x66E6, //CJK UNIFIED IDEOGRAPH - 0xEAD9: 0x66E9, //CJK UNIFIED IDEOGRAPH - 0xEADA: 0x8D32, //CJK UNIFIED IDEOGRAPH - 0xEADB: 0x8D33, //CJK UNIFIED IDEOGRAPH - 0xEADC: 0x8D36, //CJK UNIFIED IDEOGRAPH - 0xEADD: 0x8D3B, //CJK UNIFIED IDEOGRAPH - 0xEADE: 0x8D3D, //CJK UNIFIED IDEOGRAPH - 0xEADF: 0x8D40, //CJK UNIFIED IDEOGRAPH - 0xEAE0: 0x8D45, //CJK UNIFIED IDEOGRAPH - 0xEAE1: 0x8D46, //CJK UNIFIED IDEOGRAPH - 0xEAE2: 0x8D48, //CJK UNIFIED IDEOGRAPH - 0xEAE3: 0x8D49, //CJK UNIFIED IDEOGRAPH - 0xEAE4: 0x8D47, //CJK UNIFIED IDEOGRAPH - 0xEAE5: 0x8D4D, //CJK UNIFIED IDEOGRAPH - 0xEAE6: 0x8D55, //CJK UNIFIED IDEOGRAPH - 0xEAE7: 0x8D59, //CJK UNIFIED IDEOGRAPH - 0xEAE8: 0x89C7, //CJK UNIFIED IDEOGRAPH - 0xEAE9: 0x89CA, //CJK UNIFIED IDEOGRAPH - 0xEAEA: 0x89CB, //CJK UNIFIED IDEOGRAPH - 0xEAEB: 0x89CC, //CJK UNIFIED IDEOGRAPH - 0xEAEC: 0x89CE, //CJK UNIFIED IDEOGRAPH - 0xEAED: 0x89CF, //CJK UNIFIED IDEOGRAPH - 0xEAEE: 0x89D0, //CJK UNIFIED IDEOGRAPH - 0xEAEF: 0x89D1, //CJK UNIFIED IDEOGRAPH - 0xEAF0: 0x726E, //CJK UNIFIED IDEOGRAPH - 0xEAF1: 0x729F, //CJK UNIFIED IDEOGRAPH - 0xEAF2: 0x725D, //CJK UNIFIED IDEOGRAPH - 0xEAF3: 0x7266, //CJK UNIFIED IDEOGRAPH - 0xEAF4: 0x726F, //CJK UNIFIED IDEOGRAPH - 0xEAF5: 0x727E, //CJK UNIFIED IDEOGRAPH - 0xEAF6: 0x727F, //CJK UNIFIED IDEOGRAPH - 0xEAF7: 0x7284, //CJK UNIFIED IDEOGRAPH - 0xEAF8: 0x728B, //CJK UNIFIED IDEOGRAPH - 0xEAF9: 0x728D, //CJK UNIFIED IDEOGRAPH - 0xEAFA: 0x728F, //CJK UNIFIED IDEOGRAPH - 0xEAFB: 0x7292, //CJK UNIFIED IDEOGRAPH - 0xEAFC: 0x6308, //CJK UNIFIED IDEOGRAPH - 0xEAFD: 0x6332, //CJK UNIFIED IDEOGRAPH - 0xEAFE: 0x63B0, //CJK UNIFIED IDEOGRAPH - 0xEB40: 0x968C, //CJK UNIFIED IDEOGRAPH - 0xEB41: 0x968E, //CJK UNIFIED IDEOGRAPH - 0xEB42: 0x9691, //CJK UNIFIED IDEOGRAPH - 0xEB43: 0x9692, //CJK UNIFIED IDEOGRAPH - 0xEB44: 0x9693, //CJK UNIFIED IDEOGRAPH - 0xEB45: 0x9695, //CJK UNIFIED IDEOGRAPH - 0xEB46: 0x9696, //CJK UNIFIED IDEOGRAPH - 0xEB47: 0x969A, //CJK UNIFIED IDEOGRAPH - 0xEB48: 0x969B, //CJK UNIFIED IDEOGRAPH - 0xEB49: 0x969D, //CJK UNIFIED IDEOGRAPH - 0xEB4A: 0x969E, //CJK UNIFIED IDEOGRAPH - 0xEB4B: 0x969F, //CJK UNIFIED IDEOGRAPH - 0xEB4C: 0x96A0, //CJK UNIFIED IDEOGRAPH - 0xEB4D: 0x96A1, //CJK UNIFIED IDEOGRAPH - 0xEB4E: 0x96A2, //CJK UNIFIED IDEOGRAPH - 0xEB4F: 0x96A3, //CJK UNIFIED IDEOGRAPH - 0xEB50: 0x96A4, //CJK UNIFIED IDEOGRAPH - 0xEB51: 0x96A5, //CJK UNIFIED IDEOGRAPH - 0xEB52: 0x96A6, //CJK UNIFIED IDEOGRAPH - 0xEB53: 0x96A8, //CJK UNIFIED IDEOGRAPH - 0xEB54: 0x96A9, //CJK UNIFIED IDEOGRAPH - 0xEB55: 0x96AA, //CJK UNIFIED IDEOGRAPH - 0xEB56: 0x96AB, //CJK UNIFIED IDEOGRAPH - 0xEB57: 0x96AC, //CJK UNIFIED IDEOGRAPH - 0xEB58: 0x96AD, //CJK UNIFIED IDEOGRAPH - 0xEB59: 0x96AE, //CJK UNIFIED IDEOGRAPH - 0xEB5A: 0x96AF, //CJK UNIFIED IDEOGRAPH - 0xEB5B: 0x96B1, //CJK UNIFIED IDEOGRAPH - 0xEB5C: 0x96B2, //CJK UNIFIED IDEOGRAPH - 0xEB5D: 0x96B4, //CJK UNIFIED IDEOGRAPH - 0xEB5E: 0x96B5, //CJK UNIFIED IDEOGRAPH - 0xEB5F: 0x96B7, //CJK UNIFIED IDEOGRAPH - 0xEB60: 0x96B8, //CJK UNIFIED IDEOGRAPH - 0xEB61: 0x96BA, //CJK UNIFIED IDEOGRAPH - 0xEB62: 0x96BB, //CJK UNIFIED IDEOGRAPH - 0xEB63: 0x96BF, //CJK UNIFIED IDEOGRAPH - 0xEB64: 0x96C2, //CJK UNIFIED IDEOGRAPH - 0xEB65: 0x96C3, //CJK UNIFIED IDEOGRAPH - 0xEB66: 0x96C8, //CJK UNIFIED IDEOGRAPH - 0xEB67: 0x96CA, //CJK UNIFIED IDEOGRAPH - 0xEB68: 0x96CB, //CJK UNIFIED IDEOGRAPH - 0xEB69: 0x96D0, //CJK UNIFIED IDEOGRAPH - 0xEB6A: 0x96D1, //CJK UNIFIED IDEOGRAPH - 0xEB6B: 0x96D3, //CJK UNIFIED IDEOGRAPH - 0xEB6C: 0x96D4, //CJK UNIFIED IDEOGRAPH - 0xEB6D: 0x96D6, //CJK UNIFIED IDEOGRAPH - 0xEB6E: 0x96D7, //CJK UNIFIED IDEOGRAPH - 0xEB6F: 0x96D8, //CJK UNIFIED IDEOGRAPH - 0xEB70: 0x96D9, //CJK UNIFIED IDEOGRAPH - 0xEB71: 0x96DA, //CJK UNIFIED IDEOGRAPH - 0xEB72: 0x96DB, //CJK UNIFIED IDEOGRAPH - 0xEB73: 0x96DC, //CJK UNIFIED IDEOGRAPH - 0xEB74: 0x96DD, //CJK UNIFIED IDEOGRAPH - 0xEB75: 0x96DE, //CJK UNIFIED IDEOGRAPH - 0xEB76: 0x96DF, //CJK UNIFIED IDEOGRAPH - 0xEB77: 0x96E1, //CJK UNIFIED IDEOGRAPH - 0xEB78: 0x96E2, //CJK UNIFIED IDEOGRAPH - 0xEB79: 0x96E3, //CJK UNIFIED IDEOGRAPH - 0xEB7A: 0x96E4, //CJK UNIFIED IDEOGRAPH - 0xEB7B: 0x96E5, //CJK UNIFIED IDEOGRAPH - 0xEB7C: 0x96E6, //CJK UNIFIED IDEOGRAPH - 0xEB7D: 0x96E7, //CJK UNIFIED IDEOGRAPH - 0xEB7E: 0x96EB, //CJK UNIFIED IDEOGRAPH - 0xEB80: 0x96EC, //CJK UNIFIED IDEOGRAPH - 0xEB81: 0x96ED, //CJK UNIFIED IDEOGRAPH - 0xEB82: 0x96EE, //CJK UNIFIED IDEOGRAPH - 0xEB83: 0x96F0, //CJK UNIFIED IDEOGRAPH - 0xEB84: 0x96F1, //CJK UNIFIED IDEOGRAPH - 0xEB85: 0x96F2, //CJK UNIFIED IDEOGRAPH - 0xEB86: 0x96F4, //CJK UNIFIED IDEOGRAPH - 0xEB87: 0x96F5, //CJK UNIFIED IDEOGRAPH - 0xEB88: 0x96F8, //CJK UNIFIED IDEOGRAPH - 0xEB89: 0x96FA, //CJK UNIFIED IDEOGRAPH - 0xEB8A: 0x96FB, //CJK UNIFIED IDEOGRAPH - 0xEB8B: 0x96FC, //CJK UNIFIED IDEOGRAPH - 0xEB8C: 0x96FD, //CJK UNIFIED IDEOGRAPH - 0xEB8D: 0x96FF, //CJK UNIFIED IDEOGRAPH - 0xEB8E: 0x9702, //CJK UNIFIED IDEOGRAPH - 0xEB8F: 0x9703, //CJK UNIFIED IDEOGRAPH - 0xEB90: 0x9705, //CJK UNIFIED IDEOGRAPH - 0xEB91: 0x970A, //CJK UNIFIED IDEOGRAPH - 0xEB92: 0x970B, //CJK UNIFIED IDEOGRAPH - 0xEB93: 0x970C, //CJK UNIFIED IDEOGRAPH - 0xEB94: 0x9710, //CJK UNIFIED IDEOGRAPH - 0xEB95: 0x9711, //CJK UNIFIED IDEOGRAPH - 0xEB96: 0x9712, //CJK UNIFIED IDEOGRAPH - 0xEB97: 0x9714, //CJK UNIFIED IDEOGRAPH - 0xEB98: 0x9715, //CJK UNIFIED IDEOGRAPH - 0xEB99: 0x9717, //CJK UNIFIED IDEOGRAPH - 0xEB9A: 0x9718, //CJK UNIFIED IDEOGRAPH - 0xEB9B: 0x9719, //CJK UNIFIED IDEOGRAPH - 0xEB9C: 0x971A, //CJK UNIFIED IDEOGRAPH - 0xEB9D: 0x971B, //CJK UNIFIED IDEOGRAPH - 0xEB9E: 0x971D, //CJK UNIFIED IDEOGRAPH - 0xEB9F: 0x971F, //CJK UNIFIED IDEOGRAPH - 0xEBA0: 0x9720, //CJK UNIFIED IDEOGRAPH - 0xEBA1: 0x643F, //CJK UNIFIED IDEOGRAPH - 0xEBA2: 0x64D8, //CJK UNIFIED IDEOGRAPH - 0xEBA3: 0x8004, //CJK UNIFIED IDEOGRAPH - 0xEBA4: 0x6BEA, //CJK UNIFIED IDEOGRAPH - 0xEBA5: 0x6BF3, //CJK UNIFIED IDEOGRAPH - 0xEBA6: 0x6BFD, //CJK UNIFIED IDEOGRAPH - 0xEBA7: 0x6BF5, //CJK UNIFIED IDEOGRAPH - 0xEBA8: 0x6BF9, //CJK UNIFIED IDEOGRAPH - 0xEBA9: 0x6C05, //CJK UNIFIED IDEOGRAPH - 0xEBAA: 0x6C07, //CJK UNIFIED IDEOGRAPH - 0xEBAB: 0x6C06, //CJK UNIFIED IDEOGRAPH - 0xEBAC: 0x6C0D, //CJK UNIFIED IDEOGRAPH - 0xEBAD: 0x6C15, //CJK UNIFIED IDEOGRAPH - 0xEBAE: 0x6C18, //CJK UNIFIED IDEOGRAPH - 0xEBAF: 0x6C19, //CJK UNIFIED IDEOGRAPH - 0xEBB0: 0x6C1A, //CJK UNIFIED IDEOGRAPH - 0xEBB1: 0x6C21, //CJK UNIFIED IDEOGRAPH - 0xEBB2: 0x6C29, //CJK UNIFIED IDEOGRAPH - 0xEBB3: 0x6C24, //CJK UNIFIED IDEOGRAPH - 0xEBB4: 0x6C2A, //CJK UNIFIED IDEOGRAPH - 0xEBB5: 0x6C32, //CJK UNIFIED IDEOGRAPH - 0xEBB6: 0x6535, //CJK UNIFIED IDEOGRAPH - 0xEBB7: 0x6555, //CJK UNIFIED IDEOGRAPH - 0xEBB8: 0x656B, //CJK UNIFIED IDEOGRAPH - 0xEBB9: 0x724D, //CJK UNIFIED IDEOGRAPH - 0xEBBA: 0x7252, //CJK UNIFIED IDEOGRAPH - 0xEBBB: 0x7256, //CJK UNIFIED IDEOGRAPH - 0xEBBC: 0x7230, //CJK UNIFIED IDEOGRAPH - 0xEBBD: 0x8662, //CJK UNIFIED IDEOGRAPH - 0xEBBE: 0x5216, //CJK UNIFIED IDEOGRAPH - 0xEBBF: 0x809F, //CJK UNIFIED IDEOGRAPH - 0xEBC0: 0x809C, //CJK UNIFIED IDEOGRAPH - 0xEBC1: 0x8093, //CJK UNIFIED IDEOGRAPH - 0xEBC2: 0x80BC, //CJK UNIFIED IDEOGRAPH - 0xEBC3: 0x670A, //CJK UNIFIED IDEOGRAPH - 0xEBC4: 0x80BD, //CJK UNIFIED IDEOGRAPH - 0xEBC5: 0x80B1, //CJK UNIFIED IDEOGRAPH - 0xEBC6: 0x80AB, //CJK UNIFIED IDEOGRAPH - 0xEBC7: 0x80AD, //CJK UNIFIED IDEOGRAPH - 0xEBC8: 0x80B4, //CJK UNIFIED IDEOGRAPH - 0xEBC9: 0x80B7, //CJK UNIFIED IDEOGRAPH - 0xEBCA: 0x80E7, //CJK UNIFIED IDEOGRAPH - 0xEBCB: 0x80E8, //CJK UNIFIED IDEOGRAPH - 0xEBCC: 0x80E9, //CJK UNIFIED IDEOGRAPH - 0xEBCD: 0x80EA, //CJK UNIFIED IDEOGRAPH - 0xEBCE: 0x80DB, //CJK UNIFIED IDEOGRAPH - 0xEBCF: 0x80C2, //CJK UNIFIED IDEOGRAPH - 0xEBD0: 0x80C4, //CJK UNIFIED IDEOGRAPH - 0xEBD1: 0x80D9, //CJK UNIFIED IDEOGRAPH - 0xEBD2: 0x80CD, //CJK UNIFIED IDEOGRAPH - 0xEBD3: 0x80D7, //CJK UNIFIED IDEOGRAPH - 0xEBD4: 0x6710, //CJK UNIFIED IDEOGRAPH - 0xEBD5: 0x80DD, //CJK UNIFIED IDEOGRAPH - 0xEBD6: 0x80EB, //CJK UNIFIED IDEOGRAPH - 0xEBD7: 0x80F1, //CJK UNIFIED IDEOGRAPH - 0xEBD8: 0x80F4, //CJK UNIFIED IDEOGRAPH - 0xEBD9: 0x80ED, //CJK UNIFIED IDEOGRAPH - 0xEBDA: 0x810D, //CJK UNIFIED IDEOGRAPH - 0xEBDB: 0x810E, //CJK UNIFIED IDEOGRAPH - 0xEBDC: 0x80F2, //CJK UNIFIED IDEOGRAPH - 0xEBDD: 0x80FC, //CJK UNIFIED IDEOGRAPH - 0xEBDE: 0x6715, //CJK UNIFIED IDEOGRAPH - 0xEBDF: 0x8112, //CJK UNIFIED IDEOGRAPH - 0xEBE0: 0x8C5A, //CJK UNIFIED IDEOGRAPH - 0xEBE1: 0x8136, //CJK UNIFIED IDEOGRAPH - 0xEBE2: 0x811E, //CJK UNIFIED IDEOGRAPH - 0xEBE3: 0x812C, //CJK UNIFIED IDEOGRAPH - 0xEBE4: 0x8118, //CJK UNIFIED IDEOGRAPH - 0xEBE5: 0x8132, //CJK UNIFIED IDEOGRAPH - 0xEBE6: 0x8148, //CJK UNIFIED IDEOGRAPH - 0xEBE7: 0x814C, //CJK UNIFIED IDEOGRAPH - 0xEBE8: 0x8153, //CJK UNIFIED IDEOGRAPH - 0xEBE9: 0x8174, //CJK UNIFIED IDEOGRAPH - 0xEBEA: 0x8159, //CJK UNIFIED IDEOGRAPH - 0xEBEB: 0x815A, //CJK UNIFIED IDEOGRAPH - 0xEBEC: 0x8171, //CJK UNIFIED IDEOGRAPH - 0xEBED: 0x8160, //CJK UNIFIED IDEOGRAPH - 0xEBEE: 0x8169, //CJK UNIFIED IDEOGRAPH - 0xEBEF: 0x817C, //CJK UNIFIED IDEOGRAPH - 0xEBF0: 0x817D, //CJK UNIFIED IDEOGRAPH - 0xEBF1: 0x816D, //CJK UNIFIED IDEOGRAPH - 0xEBF2: 0x8167, //CJK UNIFIED IDEOGRAPH - 0xEBF3: 0x584D, //CJK UNIFIED IDEOGRAPH - 0xEBF4: 0x5AB5, //CJK UNIFIED IDEOGRAPH - 0xEBF5: 0x8188, //CJK UNIFIED IDEOGRAPH - 0xEBF6: 0x8182, //CJK UNIFIED IDEOGRAPH - 0xEBF7: 0x8191, //CJK UNIFIED IDEOGRAPH - 0xEBF8: 0x6ED5, //CJK UNIFIED IDEOGRAPH - 0xEBF9: 0x81A3, //CJK UNIFIED IDEOGRAPH - 0xEBFA: 0x81AA, //CJK UNIFIED IDEOGRAPH - 0xEBFB: 0x81CC, //CJK UNIFIED IDEOGRAPH - 0xEBFC: 0x6726, //CJK UNIFIED IDEOGRAPH - 0xEBFD: 0x81CA, //CJK UNIFIED IDEOGRAPH - 0xEBFE: 0x81BB, //CJK UNIFIED IDEOGRAPH - 0xEC40: 0x9721, //CJK UNIFIED IDEOGRAPH - 0xEC41: 0x9722, //CJK UNIFIED IDEOGRAPH - 0xEC42: 0x9723, //CJK UNIFIED IDEOGRAPH - 0xEC43: 0x9724, //CJK UNIFIED IDEOGRAPH - 0xEC44: 0x9725, //CJK UNIFIED IDEOGRAPH - 0xEC45: 0x9726, //CJK UNIFIED IDEOGRAPH - 0xEC46: 0x9727, //CJK UNIFIED IDEOGRAPH - 0xEC47: 0x9728, //CJK UNIFIED IDEOGRAPH - 0xEC48: 0x9729, //CJK UNIFIED IDEOGRAPH - 0xEC49: 0x972B, //CJK UNIFIED IDEOGRAPH - 0xEC4A: 0x972C, //CJK UNIFIED IDEOGRAPH - 0xEC4B: 0x972E, //CJK UNIFIED IDEOGRAPH - 0xEC4C: 0x972F, //CJK UNIFIED IDEOGRAPH - 0xEC4D: 0x9731, //CJK UNIFIED IDEOGRAPH - 0xEC4E: 0x9733, //CJK UNIFIED IDEOGRAPH - 0xEC4F: 0x9734, //CJK UNIFIED IDEOGRAPH - 0xEC50: 0x9735, //CJK UNIFIED IDEOGRAPH - 0xEC51: 0x9736, //CJK UNIFIED IDEOGRAPH - 0xEC52: 0x9737, //CJK UNIFIED IDEOGRAPH - 0xEC53: 0x973A, //CJK UNIFIED IDEOGRAPH - 0xEC54: 0x973B, //CJK UNIFIED IDEOGRAPH - 0xEC55: 0x973C, //CJK UNIFIED IDEOGRAPH - 0xEC56: 0x973D, //CJK UNIFIED IDEOGRAPH - 0xEC57: 0x973F, //CJK UNIFIED IDEOGRAPH - 0xEC58: 0x9740, //CJK UNIFIED IDEOGRAPH - 0xEC59: 0x9741, //CJK UNIFIED IDEOGRAPH - 0xEC5A: 0x9742, //CJK UNIFIED IDEOGRAPH - 0xEC5B: 0x9743, //CJK UNIFIED IDEOGRAPH - 0xEC5C: 0x9744, //CJK UNIFIED IDEOGRAPH - 0xEC5D: 0x9745, //CJK UNIFIED IDEOGRAPH - 0xEC5E: 0x9746, //CJK UNIFIED IDEOGRAPH - 0xEC5F: 0x9747, //CJK UNIFIED IDEOGRAPH - 0xEC60: 0x9748, //CJK UNIFIED IDEOGRAPH - 0xEC61: 0x9749, //CJK UNIFIED IDEOGRAPH - 0xEC62: 0x974A, //CJK UNIFIED IDEOGRAPH - 0xEC63: 0x974B, //CJK UNIFIED IDEOGRAPH - 0xEC64: 0x974C, //CJK UNIFIED IDEOGRAPH - 0xEC65: 0x974D, //CJK UNIFIED IDEOGRAPH - 0xEC66: 0x974E, //CJK UNIFIED IDEOGRAPH - 0xEC67: 0x974F, //CJK UNIFIED IDEOGRAPH - 0xEC68: 0x9750, //CJK UNIFIED IDEOGRAPH - 0xEC69: 0x9751, //CJK UNIFIED IDEOGRAPH - 0xEC6A: 0x9754, //CJK UNIFIED IDEOGRAPH - 0xEC6B: 0x9755, //CJK UNIFIED IDEOGRAPH - 0xEC6C: 0x9757, //CJK UNIFIED IDEOGRAPH - 0xEC6D: 0x9758, //CJK UNIFIED IDEOGRAPH - 0xEC6E: 0x975A, //CJK UNIFIED IDEOGRAPH - 0xEC6F: 0x975C, //CJK UNIFIED IDEOGRAPH - 0xEC70: 0x975D, //CJK UNIFIED IDEOGRAPH - 0xEC71: 0x975F, //CJK UNIFIED IDEOGRAPH - 0xEC72: 0x9763, //CJK UNIFIED IDEOGRAPH - 0xEC73: 0x9764, //CJK UNIFIED IDEOGRAPH - 0xEC74: 0x9766, //CJK UNIFIED IDEOGRAPH - 0xEC75: 0x9767, //CJK UNIFIED IDEOGRAPH - 0xEC76: 0x9768, //CJK UNIFIED IDEOGRAPH - 0xEC77: 0x976A, //CJK UNIFIED IDEOGRAPH - 0xEC78: 0x976B, //CJK UNIFIED IDEOGRAPH - 0xEC79: 0x976C, //CJK UNIFIED IDEOGRAPH - 0xEC7A: 0x976D, //CJK UNIFIED IDEOGRAPH - 0xEC7B: 0x976E, //CJK UNIFIED IDEOGRAPH - 0xEC7C: 0x976F, //CJK UNIFIED IDEOGRAPH - 0xEC7D: 0x9770, //CJK UNIFIED IDEOGRAPH - 0xEC7E: 0x9771, //CJK UNIFIED IDEOGRAPH - 0xEC80: 0x9772, //CJK UNIFIED IDEOGRAPH - 0xEC81: 0x9775, //CJK UNIFIED IDEOGRAPH - 0xEC82: 0x9777, //CJK UNIFIED IDEOGRAPH - 0xEC83: 0x9778, //CJK UNIFIED IDEOGRAPH - 0xEC84: 0x9779, //CJK UNIFIED IDEOGRAPH - 0xEC85: 0x977A, //CJK UNIFIED IDEOGRAPH - 0xEC86: 0x977B, //CJK UNIFIED IDEOGRAPH - 0xEC87: 0x977D, //CJK UNIFIED IDEOGRAPH - 0xEC88: 0x977E, //CJK UNIFIED IDEOGRAPH - 0xEC89: 0x977F, //CJK UNIFIED IDEOGRAPH - 0xEC8A: 0x9780, //CJK UNIFIED IDEOGRAPH - 0xEC8B: 0x9781, //CJK UNIFIED IDEOGRAPH - 0xEC8C: 0x9782, //CJK UNIFIED IDEOGRAPH - 0xEC8D: 0x9783, //CJK UNIFIED IDEOGRAPH - 0xEC8E: 0x9784, //CJK UNIFIED IDEOGRAPH - 0xEC8F: 0x9786, //CJK UNIFIED IDEOGRAPH - 0xEC90: 0x9787, //CJK UNIFIED IDEOGRAPH - 0xEC91: 0x9788, //CJK UNIFIED IDEOGRAPH - 0xEC92: 0x9789, //CJK UNIFIED IDEOGRAPH - 0xEC93: 0x978A, //CJK UNIFIED IDEOGRAPH - 0xEC94: 0x978C, //CJK UNIFIED IDEOGRAPH - 0xEC95: 0x978E, //CJK UNIFIED IDEOGRAPH - 0xEC96: 0x978F, //CJK UNIFIED IDEOGRAPH - 0xEC97: 0x9790, //CJK UNIFIED IDEOGRAPH - 0xEC98: 0x9793, //CJK UNIFIED IDEOGRAPH - 0xEC99: 0x9795, //CJK UNIFIED IDEOGRAPH - 0xEC9A: 0x9796, //CJK UNIFIED IDEOGRAPH - 0xEC9B: 0x9797, //CJK UNIFIED IDEOGRAPH - 0xEC9C: 0x9799, //CJK UNIFIED IDEOGRAPH - 0xEC9D: 0x979A, //CJK UNIFIED IDEOGRAPH - 0xEC9E: 0x979B, //CJK UNIFIED IDEOGRAPH - 0xEC9F: 0x979C, //CJK UNIFIED IDEOGRAPH - 0xECA0: 0x979D, //CJK UNIFIED IDEOGRAPH - 0xECA1: 0x81C1, //CJK UNIFIED IDEOGRAPH - 0xECA2: 0x81A6, //CJK UNIFIED IDEOGRAPH - 0xECA3: 0x6B24, //CJK UNIFIED IDEOGRAPH - 0xECA4: 0x6B37, //CJK UNIFIED IDEOGRAPH - 0xECA5: 0x6B39, //CJK UNIFIED IDEOGRAPH - 0xECA6: 0x6B43, //CJK UNIFIED IDEOGRAPH - 0xECA7: 0x6B46, //CJK UNIFIED IDEOGRAPH - 0xECA8: 0x6B59, //CJK UNIFIED IDEOGRAPH - 0xECA9: 0x98D1, //CJK UNIFIED IDEOGRAPH - 0xECAA: 0x98D2, //CJK UNIFIED IDEOGRAPH - 0xECAB: 0x98D3, //CJK UNIFIED IDEOGRAPH - 0xECAC: 0x98D5, //CJK UNIFIED IDEOGRAPH - 0xECAD: 0x98D9, //CJK UNIFIED IDEOGRAPH - 0xECAE: 0x98DA, //CJK UNIFIED IDEOGRAPH - 0xECAF: 0x6BB3, //CJK UNIFIED IDEOGRAPH - 0xECB0: 0x5F40, //CJK UNIFIED IDEOGRAPH - 0xECB1: 0x6BC2, //CJK UNIFIED IDEOGRAPH - 0xECB2: 0x89F3, //CJK UNIFIED IDEOGRAPH - 0xECB3: 0x6590, //CJK UNIFIED IDEOGRAPH - 0xECB4: 0x9F51, //CJK UNIFIED IDEOGRAPH - 0xECB5: 0x6593, //CJK UNIFIED IDEOGRAPH - 0xECB6: 0x65BC, //CJK UNIFIED IDEOGRAPH - 0xECB7: 0x65C6, //CJK UNIFIED IDEOGRAPH - 0xECB8: 0x65C4, //CJK UNIFIED IDEOGRAPH - 0xECB9: 0x65C3, //CJK UNIFIED IDEOGRAPH - 0xECBA: 0x65CC, //CJK UNIFIED IDEOGRAPH - 0xECBB: 0x65CE, //CJK UNIFIED IDEOGRAPH - 0xECBC: 0x65D2, //CJK UNIFIED IDEOGRAPH - 0xECBD: 0x65D6, //CJK UNIFIED IDEOGRAPH - 0xECBE: 0x7080, //CJK UNIFIED IDEOGRAPH - 0xECBF: 0x709C, //CJK UNIFIED IDEOGRAPH - 0xECC0: 0x7096, //CJK UNIFIED IDEOGRAPH - 0xECC1: 0x709D, //CJK UNIFIED IDEOGRAPH - 0xECC2: 0x70BB, //CJK UNIFIED IDEOGRAPH - 0xECC3: 0x70C0, //CJK UNIFIED IDEOGRAPH - 0xECC4: 0x70B7, //CJK UNIFIED IDEOGRAPH - 0xECC5: 0x70AB, //CJK UNIFIED IDEOGRAPH - 0xECC6: 0x70B1, //CJK UNIFIED IDEOGRAPH - 0xECC7: 0x70E8, //CJK UNIFIED IDEOGRAPH - 0xECC8: 0x70CA, //CJK UNIFIED IDEOGRAPH - 0xECC9: 0x7110, //CJK UNIFIED IDEOGRAPH - 0xECCA: 0x7113, //CJK UNIFIED IDEOGRAPH - 0xECCB: 0x7116, //CJK UNIFIED IDEOGRAPH - 0xECCC: 0x712F, //CJK UNIFIED IDEOGRAPH - 0xECCD: 0x7131, //CJK UNIFIED IDEOGRAPH - 0xECCE: 0x7173, //CJK UNIFIED IDEOGRAPH - 0xECCF: 0x715C, //CJK UNIFIED IDEOGRAPH - 0xECD0: 0x7168, //CJK UNIFIED IDEOGRAPH - 0xECD1: 0x7145, //CJK UNIFIED IDEOGRAPH - 0xECD2: 0x7172, //CJK UNIFIED IDEOGRAPH - 0xECD3: 0x714A, //CJK UNIFIED IDEOGRAPH - 0xECD4: 0x7178, //CJK UNIFIED IDEOGRAPH - 0xECD5: 0x717A, //CJK UNIFIED IDEOGRAPH - 0xECD6: 0x7198, //CJK UNIFIED IDEOGRAPH - 0xECD7: 0x71B3, //CJK UNIFIED IDEOGRAPH - 0xECD8: 0x71B5, //CJK UNIFIED IDEOGRAPH - 0xECD9: 0x71A8, //CJK UNIFIED IDEOGRAPH - 0xECDA: 0x71A0, //CJK UNIFIED IDEOGRAPH - 0xECDB: 0x71E0, //CJK UNIFIED IDEOGRAPH - 0xECDC: 0x71D4, //CJK UNIFIED IDEOGRAPH - 0xECDD: 0x71E7, //CJK UNIFIED IDEOGRAPH - 0xECDE: 0x71F9, //CJK UNIFIED IDEOGRAPH - 0xECDF: 0x721D, //CJK UNIFIED IDEOGRAPH - 0xECE0: 0x7228, //CJK UNIFIED IDEOGRAPH - 0xECE1: 0x706C, //CJK UNIFIED IDEOGRAPH - 0xECE2: 0x7118, //CJK UNIFIED IDEOGRAPH - 0xECE3: 0x7166, //CJK UNIFIED IDEOGRAPH - 0xECE4: 0x71B9, //CJK UNIFIED IDEOGRAPH - 0xECE5: 0x623E, //CJK UNIFIED IDEOGRAPH - 0xECE6: 0x623D, //CJK UNIFIED IDEOGRAPH - 0xECE7: 0x6243, //CJK UNIFIED IDEOGRAPH - 0xECE8: 0x6248, //CJK UNIFIED IDEOGRAPH - 0xECE9: 0x6249, //CJK UNIFIED IDEOGRAPH - 0xECEA: 0x793B, //CJK UNIFIED IDEOGRAPH - 0xECEB: 0x7940, //CJK UNIFIED IDEOGRAPH - 0xECEC: 0x7946, //CJK UNIFIED IDEOGRAPH - 0xECED: 0x7949, //CJK UNIFIED IDEOGRAPH - 0xECEE: 0x795B, //CJK UNIFIED IDEOGRAPH - 0xECEF: 0x795C, //CJK UNIFIED IDEOGRAPH - 0xECF0: 0x7953, //CJK UNIFIED IDEOGRAPH - 0xECF1: 0x795A, //CJK UNIFIED IDEOGRAPH - 0xECF2: 0x7962, //CJK UNIFIED IDEOGRAPH - 0xECF3: 0x7957, //CJK UNIFIED IDEOGRAPH - 0xECF4: 0x7960, //CJK UNIFIED IDEOGRAPH - 0xECF5: 0x796F, //CJK UNIFIED IDEOGRAPH - 0xECF6: 0x7967, //CJK UNIFIED IDEOGRAPH - 0xECF7: 0x797A, //CJK UNIFIED IDEOGRAPH - 0xECF8: 0x7985, //CJK UNIFIED IDEOGRAPH - 0xECF9: 0x798A, //CJK UNIFIED IDEOGRAPH - 0xECFA: 0x799A, //CJK UNIFIED IDEOGRAPH - 0xECFB: 0x79A7, //CJK UNIFIED IDEOGRAPH - 0xECFC: 0x79B3, //CJK UNIFIED IDEOGRAPH - 0xECFD: 0x5FD1, //CJK UNIFIED IDEOGRAPH - 0xECFE: 0x5FD0, //CJK UNIFIED IDEOGRAPH - 0xED40: 0x979E, //CJK UNIFIED IDEOGRAPH - 0xED41: 0x979F, //CJK UNIFIED IDEOGRAPH - 0xED42: 0x97A1, //CJK UNIFIED IDEOGRAPH - 0xED43: 0x97A2, //CJK UNIFIED IDEOGRAPH - 0xED44: 0x97A4, //CJK UNIFIED IDEOGRAPH - 0xED45: 0x97A5, //CJK UNIFIED IDEOGRAPH - 0xED46: 0x97A6, //CJK UNIFIED IDEOGRAPH - 0xED47: 0x97A7, //CJK UNIFIED IDEOGRAPH - 0xED48: 0x97A8, //CJK UNIFIED IDEOGRAPH - 0xED49: 0x97A9, //CJK UNIFIED IDEOGRAPH - 0xED4A: 0x97AA, //CJK UNIFIED IDEOGRAPH - 0xED4B: 0x97AC, //CJK UNIFIED IDEOGRAPH - 0xED4C: 0x97AE, //CJK UNIFIED IDEOGRAPH - 0xED4D: 0x97B0, //CJK UNIFIED IDEOGRAPH - 0xED4E: 0x97B1, //CJK UNIFIED IDEOGRAPH - 0xED4F: 0x97B3, //CJK UNIFIED IDEOGRAPH - 0xED50: 0x97B5, //CJK UNIFIED IDEOGRAPH - 0xED51: 0x97B6, //CJK UNIFIED IDEOGRAPH - 0xED52: 0x97B7, //CJK UNIFIED IDEOGRAPH - 0xED53: 0x97B8, //CJK UNIFIED IDEOGRAPH - 0xED54: 0x97B9, //CJK UNIFIED IDEOGRAPH - 0xED55: 0x97BA, //CJK UNIFIED IDEOGRAPH - 0xED56: 0x97BB, //CJK UNIFIED IDEOGRAPH - 0xED57: 0x97BC, //CJK UNIFIED IDEOGRAPH - 0xED58: 0x97BD, //CJK UNIFIED IDEOGRAPH - 0xED59: 0x97BE, //CJK UNIFIED IDEOGRAPH - 0xED5A: 0x97BF, //CJK UNIFIED IDEOGRAPH - 0xED5B: 0x97C0, //CJK UNIFIED IDEOGRAPH - 0xED5C: 0x97C1, //CJK UNIFIED IDEOGRAPH - 0xED5D: 0x97C2, //CJK UNIFIED IDEOGRAPH - 0xED5E: 0x97C3, //CJK UNIFIED IDEOGRAPH - 0xED5F: 0x97C4, //CJK UNIFIED IDEOGRAPH - 0xED60: 0x97C5, //CJK UNIFIED IDEOGRAPH - 0xED61: 0x97C6, //CJK UNIFIED IDEOGRAPH - 0xED62: 0x97C7, //CJK UNIFIED IDEOGRAPH - 0xED63: 0x97C8, //CJK UNIFIED IDEOGRAPH - 0xED64: 0x97C9, //CJK UNIFIED IDEOGRAPH - 0xED65: 0x97CA, //CJK UNIFIED IDEOGRAPH - 0xED66: 0x97CB, //CJK UNIFIED IDEOGRAPH - 0xED67: 0x97CC, //CJK UNIFIED IDEOGRAPH - 0xED68: 0x97CD, //CJK UNIFIED IDEOGRAPH - 0xED69: 0x97CE, //CJK UNIFIED IDEOGRAPH - 0xED6A: 0x97CF, //CJK UNIFIED IDEOGRAPH - 0xED6B: 0x97D0, //CJK UNIFIED IDEOGRAPH - 0xED6C: 0x97D1, //CJK UNIFIED IDEOGRAPH - 0xED6D: 0x97D2, //CJK UNIFIED IDEOGRAPH - 0xED6E: 0x97D3, //CJK UNIFIED IDEOGRAPH - 0xED6F: 0x97D4, //CJK UNIFIED IDEOGRAPH - 0xED70: 0x97D5, //CJK UNIFIED IDEOGRAPH - 0xED71: 0x97D6, //CJK UNIFIED IDEOGRAPH - 0xED72: 0x97D7, //CJK UNIFIED IDEOGRAPH - 0xED73: 0x97D8, //CJK UNIFIED IDEOGRAPH - 0xED74: 0x97D9, //CJK UNIFIED IDEOGRAPH - 0xED75: 0x97DA, //CJK UNIFIED IDEOGRAPH - 0xED76: 0x97DB, //CJK UNIFIED IDEOGRAPH - 0xED77: 0x97DC, //CJK UNIFIED IDEOGRAPH - 0xED78: 0x97DD, //CJK UNIFIED IDEOGRAPH - 0xED79: 0x97DE, //CJK UNIFIED IDEOGRAPH - 0xED7A: 0x97DF, //CJK UNIFIED IDEOGRAPH - 0xED7B: 0x97E0, //CJK UNIFIED IDEOGRAPH - 0xED7C: 0x97E1, //CJK UNIFIED IDEOGRAPH - 0xED7D: 0x97E2, //CJK UNIFIED IDEOGRAPH - 0xED7E: 0x97E3, //CJK UNIFIED IDEOGRAPH - 0xED80: 0x97E4, //CJK UNIFIED IDEOGRAPH - 0xED81: 0x97E5, //CJK UNIFIED IDEOGRAPH - 0xED82: 0x97E8, //CJK UNIFIED IDEOGRAPH - 0xED83: 0x97EE, //CJK UNIFIED IDEOGRAPH - 0xED84: 0x97EF, //CJK UNIFIED IDEOGRAPH - 0xED85: 0x97F0, //CJK UNIFIED IDEOGRAPH - 0xED86: 0x97F1, //CJK UNIFIED IDEOGRAPH - 0xED87: 0x97F2, //CJK UNIFIED IDEOGRAPH - 0xED88: 0x97F4, //CJK UNIFIED IDEOGRAPH - 0xED89: 0x97F7, //CJK UNIFIED IDEOGRAPH - 0xED8A: 0x97F8, //CJK UNIFIED IDEOGRAPH - 0xED8B: 0x97F9, //CJK UNIFIED IDEOGRAPH - 0xED8C: 0x97FA, //CJK UNIFIED IDEOGRAPH - 0xED8D: 0x97FB, //CJK UNIFIED IDEOGRAPH - 0xED8E: 0x97FC, //CJK UNIFIED IDEOGRAPH - 0xED8F: 0x97FD, //CJK UNIFIED IDEOGRAPH - 0xED90: 0x97FE, //CJK UNIFIED IDEOGRAPH - 0xED91: 0x97FF, //CJK UNIFIED IDEOGRAPH - 0xED92: 0x9800, //CJK UNIFIED IDEOGRAPH - 0xED93: 0x9801, //CJK UNIFIED IDEOGRAPH - 0xED94: 0x9802, //CJK UNIFIED IDEOGRAPH - 0xED95: 0x9803, //CJK UNIFIED IDEOGRAPH - 0xED96: 0x9804, //CJK UNIFIED IDEOGRAPH - 0xED97: 0x9805, //CJK UNIFIED IDEOGRAPH - 0xED98: 0x9806, //CJK UNIFIED IDEOGRAPH - 0xED99: 0x9807, //CJK UNIFIED IDEOGRAPH - 0xED9A: 0x9808, //CJK UNIFIED IDEOGRAPH - 0xED9B: 0x9809, //CJK UNIFIED IDEOGRAPH - 0xED9C: 0x980A, //CJK UNIFIED IDEOGRAPH - 0xED9D: 0x980B, //CJK UNIFIED IDEOGRAPH - 0xED9E: 0x980C, //CJK UNIFIED IDEOGRAPH - 0xED9F: 0x980D, //CJK UNIFIED IDEOGRAPH - 0xEDA0: 0x980E, //CJK UNIFIED IDEOGRAPH - 0xEDA1: 0x603C, //CJK UNIFIED IDEOGRAPH - 0xEDA2: 0x605D, //CJK UNIFIED IDEOGRAPH - 0xEDA3: 0x605A, //CJK UNIFIED IDEOGRAPH - 0xEDA4: 0x6067, //CJK UNIFIED IDEOGRAPH - 0xEDA5: 0x6041, //CJK UNIFIED IDEOGRAPH - 0xEDA6: 0x6059, //CJK UNIFIED IDEOGRAPH - 0xEDA7: 0x6063, //CJK UNIFIED IDEOGRAPH - 0xEDA8: 0x60AB, //CJK UNIFIED IDEOGRAPH - 0xEDA9: 0x6106, //CJK UNIFIED IDEOGRAPH - 0xEDAA: 0x610D, //CJK UNIFIED IDEOGRAPH - 0xEDAB: 0x615D, //CJK UNIFIED IDEOGRAPH - 0xEDAC: 0x61A9, //CJK UNIFIED IDEOGRAPH - 0xEDAD: 0x619D, //CJK UNIFIED IDEOGRAPH - 0xEDAE: 0x61CB, //CJK UNIFIED IDEOGRAPH - 0xEDAF: 0x61D1, //CJK UNIFIED IDEOGRAPH - 0xEDB0: 0x6206, //CJK UNIFIED IDEOGRAPH - 0xEDB1: 0x8080, //CJK UNIFIED IDEOGRAPH - 0xEDB2: 0x807F, //CJK UNIFIED IDEOGRAPH - 0xEDB3: 0x6C93, //CJK UNIFIED IDEOGRAPH - 0xEDB4: 0x6CF6, //CJK UNIFIED IDEOGRAPH - 0xEDB5: 0x6DFC, //CJK UNIFIED IDEOGRAPH - 0xEDB6: 0x77F6, //CJK UNIFIED IDEOGRAPH - 0xEDB7: 0x77F8, //CJK UNIFIED IDEOGRAPH - 0xEDB8: 0x7800, //CJK UNIFIED IDEOGRAPH - 0xEDB9: 0x7809, //CJK UNIFIED IDEOGRAPH - 0xEDBA: 0x7817, //CJK UNIFIED IDEOGRAPH - 0xEDBB: 0x7818, //CJK UNIFIED IDEOGRAPH - 0xEDBC: 0x7811, //CJK UNIFIED IDEOGRAPH - 0xEDBD: 0x65AB, //CJK UNIFIED IDEOGRAPH - 0xEDBE: 0x782D, //CJK UNIFIED IDEOGRAPH - 0xEDBF: 0x781C, //CJK UNIFIED IDEOGRAPH - 0xEDC0: 0x781D, //CJK UNIFIED IDEOGRAPH - 0xEDC1: 0x7839, //CJK UNIFIED IDEOGRAPH - 0xEDC2: 0x783A, //CJK UNIFIED IDEOGRAPH - 0xEDC3: 0x783B, //CJK UNIFIED IDEOGRAPH - 0xEDC4: 0x781F, //CJK UNIFIED IDEOGRAPH - 0xEDC5: 0x783C, //CJK UNIFIED IDEOGRAPH - 0xEDC6: 0x7825, //CJK UNIFIED IDEOGRAPH - 0xEDC7: 0x782C, //CJK UNIFIED IDEOGRAPH - 0xEDC8: 0x7823, //CJK UNIFIED IDEOGRAPH - 0xEDC9: 0x7829, //CJK UNIFIED IDEOGRAPH - 0xEDCA: 0x784E, //CJK UNIFIED IDEOGRAPH - 0xEDCB: 0x786D, //CJK UNIFIED IDEOGRAPH - 0xEDCC: 0x7856, //CJK UNIFIED IDEOGRAPH - 0xEDCD: 0x7857, //CJK UNIFIED IDEOGRAPH - 0xEDCE: 0x7826, //CJK UNIFIED IDEOGRAPH - 0xEDCF: 0x7850, //CJK UNIFIED IDEOGRAPH - 0xEDD0: 0x7847, //CJK UNIFIED IDEOGRAPH - 0xEDD1: 0x784C, //CJK UNIFIED IDEOGRAPH - 0xEDD2: 0x786A, //CJK UNIFIED IDEOGRAPH - 0xEDD3: 0x789B, //CJK UNIFIED IDEOGRAPH - 0xEDD4: 0x7893, //CJK UNIFIED IDEOGRAPH - 0xEDD5: 0x789A, //CJK UNIFIED IDEOGRAPH - 0xEDD6: 0x7887, //CJK UNIFIED IDEOGRAPH - 0xEDD7: 0x789C, //CJK UNIFIED IDEOGRAPH - 0xEDD8: 0x78A1, //CJK UNIFIED IDEOGRAPH - 0xEDD9: 0x78A3, //CJK UNIFIED IDEOGRAPH - 0xEDDA: 0x78B2, //CJK UNIFIED IDEOGRAPH - 0xEDDB: 0x78B9, //CJK UNIFIED IDEOGRAPH - 0xEDDC: 0x78A5, //CJK UNIFIED IDEOGRAPH - 0xEDDD: 0x78D4, //CJK UNIFIED IDEOGRAPH - 0xEDDE: 0x78D9, //CJK UNIFIED IDEOGRAPH - 0xEDDF: 0x78C9, //CJK UNIFIED IDEOGRAPH - 0xEDE0: 0x78EC, //CJK UNIFIED IDEOGRAPH - 0xEDE1: 0x78F2, //CJK UNIFIED IDEOGRAPH - 0xEDE2: 0x7905, //CJK UNIFIED IDEOGRAPH - 0xEDE3: 0x78F4, //CJK UNIFIED IDEOGRAPH - 0xEDE4: 0x7913, //CJK UNIFIED IDEOGRAPH - 0xEDE5: 0x7924, //CJK UNIFIED IDEOGRAPH - 0xEDE6: 0x791E, //CJK UNIFIED IDEOGRAPH - 0xEDE7: 0x7934, //CJK UNIFIED IDEOGRAPH - 0xEDE8: 0x9F9B, //CJK UNIFIED IDEOGRAPH - 0xEDE9: 0x9EF9, //CJK UNIFIED IDEOGRAPH - 0xEDEA: 0x9EFB, //CJK UNIFIED IDEOGRAPH - 0xEDEB: 0x9EFC, //CJK UNIFIED IDEOGRAPH - 0xEDEC: 0x76F1, //CJK UNIFIED IDEOGRAPH - 0xEDED: 0x7704, //CJK UNIFIED IDEOGRAPH - 0xEDEE: 0x770D, //CJK UNIFIED IDEOGRAPH - 0xEDEF: 0x76F9, //CJK UNIFIED IDEOGRAPH - 0xEDF0: 0x7707, //CJK UNIFIED IDEOGRAPH - 0xEDF1: 0x7708, //CJK UNIFIED IDEOGRAPH - 0xEDF2: 0x771A, //CJK UNIFIED IDEOGRAPH - 0xEDF3: 0x7722, //CJK UNIFIED IDEOGRAPH - 0xEDF4: 0x7719, //CJK UNIFIED IDEOGRAPH - 0xEDF5: 0x772D, //CJK UNIFIED IDEOGRAPH - 0xEDF6: 0x7726, //CJK UNIFIED IDEOGRAPH - 0xEDF7: 0x7735, //CJK UNIFIED IDEOGRAPH - 0xEDF8: 0x7738, //CJK UNIFIED IDEOGRAPH - 0xEDF9: 0x7750, //CJK UNIFIED IDEOGRAPH - 0xEDFA: 0x7751, //CJK UNIFIED IDEOGRAPH - 0xEDFB: 0x7747, //CJK UNIFIED IDEOGRAPH - 0xEDFC: 0x7743, //CJK UNIFIED IDEOGRAPH - 0xEDFD: 0x775A, //CJK UNIFIED IDEOGRAPH - 0xEDFE: 0x7768, //CJK UNIFIED IDEOGRAPH - 0xEE40: 0x980F, //CJK UNIFIED IDEOGRAPH - 0xEE41: 0x9810, //CJK UNIFIED IDEOGRAPH - 0xEE42: 0x9811, //CJK UNIFIED IDEOGRAPH - 0xEE43: 0x9812, //CJK UNIFIED IDEOGRAPH - 0xEE44: 0x9813, //CJK UNIFIED IDEOGRAPH - 0xEE45: 0x9814, //CJK UNIFIED IDEOGRAPH - 0xEE46: 0x9815, //CJK UNIFIED IDEOGRAPH - 0xEE47: 0x9816, //CJK UNIFIED IDEOGRAPH - 0xEE48: 0x9817, //CJK UNIFIED IDEOGRAPH - 0xEE49: 0x9818, //CJK UNIFIED IDEOGRAPH - 0xEE4A: 0x9819, //CJK UNIFIED IDEOGRAPH - 0xEE4B: 0x981A, //CJK UNIFIED IDEOGRAPH - 0xEE4C: 0x981B, //CJK UNIFIED IDEOGRAPH - 0xEE4D: 0x981C, //CJK UNIFIED IDEOGRAPH - 0xEE4E: 0x981D, //CJK UNIFIED IDEOGRAPH - 0xEE4F: 0x981E, //CJK UNIFIED IDEOGRAPH - 0xEE50: 0x981F, //CJK UNIFIED IDEOGRAPH - 0xEE51: 0x9820, //CJK UNIFIED IDEOGRAPH - 0xEE52: 0x9821, //CJK UNIFIED IDEOGRAPH - 0xEE53: 0x9822, //CJK UNIFIED IDEOGRAPH - 0xEE54: 0x9823, //CJK UNIFIED IDEOGRAPH - 0xEE55: 0x9824, //CJK UNIFIED IDEOGRAPH - 0xEE56: 0x9825, //CJK UNIFIED IDEOGRAPH - 0xEE57: 0x9826, //CJK UNIFIED IDEOGRAPH - 0xEE58: 0x9827, //CJK UNIFIED IDEOGRAPH - 0xEE59: 0x9828, //CJK UNIFIED IDEOGRAPH - 0xEE5A: 0x9829, //CJK UNIFIED IDEOGRAPH - 0xEE5B: 0x982A, //CJK UNIFIED IDEOGRAPH - 0xEE5C: 0x982B, //CJK UNIFIED IDEOGRAPH - 0xEE5D: 0x982C, //CJK UNIFIED IDEOGRAPH - 0xEE5E: 0x982D, //CJK UNIFIED IDEOGRAPH - 0xEE5F: 0x982E, //CJK UNIFIED IDEOGRAPH - 0xEE60: 0x982F, //CJK UNIFIED IDEOGRAPH - 0xEE61: 0x9830, //CJK UNIFIED IDEOGRAPH - 0xEE62: 0x9831, //CJK UNIFIED IDEOGRAPH - 0xEE63: 0x9832, //CJK UNIFIED IDEOGRAPH - 0xEE64: 0x9833, //CJK UNIFIED IDEOGRAPH - 0xEE65: 0x9834, //CJK UNIFIED IDEOGRAPH - 0xEE66: 0x9835, //CJK UNIFIED IDEOGRAPH - 0xEE67: 0x9836, //CJK UNIFIED IDEOGRAPH - 0xEE68: 0x9837, //CJK UNIFIED IDEOGRAPH - 0xEE69: 0x9838, //CJK UNIFIED IDEOGRAPH - 0xEE6A: 0x9839, //CJK UNIFIED IDEOGRAPH - 0xEE6B: 0x983A, //CJK UNIFIED IDEOGRAPH - 0xEE6C: 0x983B, //CJK UNIFIED IDEOGRAPH - 0xEE6D: 0x983C, //CJK UNIFIED IDEOGRAPH - 0xEE6E: 0x983D, //CJK UNIFIED IDEOGRAPH - 0xEE6F: 0x983E, //CJK UNIFIED IDEOGRAPH - 0xEE70: 0x983F, //CJK UNIFIED IDEOGRAPH - 0xEE71: 0x9840, //CJK UNIFIED IDEOGRAPH - 0xEE72: 0x9841, //CJK UNIFIED IDEOGRAPH - 0xEE73: 0x9842, //CJK UNIFIED IDEOGRAPH - 0xEE74: 0x9843, //CJK UNIFIED IDEOGRAPH - 0xEE75: 0x9844, //CJK UNIFIED IDEOGRAPH - 0xEE76: 0x9845, //CJK UNIFIED IDEOGRAPH - 0xEE77: 0x9846, //CJK UNIFIED IDEOGRAPH - 0xEE78: 0x9847, //CJK UNIFIED IDEOGRAPH - 0xEE79: 0x9848, //CJK UNIFIED IDEOGRAPH - 0xEE7A: 0x9849, //CJK UNIFIED IDEOGRAPH - 0xEE7B: 0x984A, //CJK UNIFIED IDEOGRAPH - 0xEE7C: 0x984B, //CJK UNIFIED IDEOGRAPH - 0xEE7D: 0x984C, //CJK UNIFIED IDEOGRAPH - 0xEE7E: 0x984D, //CJK UNIFIED IDEOGRAPH - 0xEE80: 0x984E, //CJK UNIFIED IDEOGRAPH - 0xEE81: 0x984F, //CJK UNIFIED IDEOGRAPH - 0xEE82: 0x9850, //CJK UNIFIED IDEOGRAPH - 0xEE83: 0x9851, //CJK UNIFIED IDEOGRAPH - 0xEE84: 0x9852, //CJK UNIFIED IDEOGRAPH - 0xEE85: 0x9853, //CJK UNIFIED IDEOGRAPH - 0xEE86: 0x9854, //CJK UNIFIED IDEOGRAPH - 0xEE87: 0x9855, //CJK UNIFIED IDEOGRAPH - 0xEE88: 0x9856, //CJK UNIFIED IDEOGRAPH - 0xEE89: 0x9857, //CJK UNIFIED IDEOGRAPH - 0xEE8A: 0x9858, //CJK UNIFIED IDEOGRAPH - 0xEE8B: 0x9859, //CJK UNIFIED IDEOGRAPH - 0xEE8C: 0x985A, //CJK UNIFIED IDEOGRAPH - 0xEE8D: 0x985B, //CJK UNIFIED IDEOGRAPH - 0xEE8E: 0x985C, //CJK UNIFIED IDEOGRAPH - 0xEE8F: 0x985D, //CJK UNIFIED IDEOGRAPH - 0xEE90: 0x985E, //CJK UNIFIED IDEOGRAPH - 0xEE91: 0x985F, //CJK UNIFIED IDEOGRAPH - 0xEE92: 0x9860, //CJK UNIFIED IDEOGRAPH - 0xEE93: 0x9861, //CJK UNIFIED IDEOGRAPH - 0xEE94: 0x9862, //CJK UNIFIED IDEOGRAPH - 0xEE95: 0x9863, //CJK UNIFIED IDEOGRAPH - 0xEE96: 0x9864, //CJK UNIFIED IDEOGRAPH - 0xEE97: 0x9865, //CJK UNIFIED IDEOGRAPH - 0xEE98: 0x9866, //CJK UNIFIED IDEOGRAPH - 0xEE99: 0x9867, //CJK UNIFIED IDEOGRAPH - 0xEE9A: 0x9868, //CJK UNIFIED IDEOGRAPH - 0xEE9B: 0x9869, //CJK UNIFIED IDEOGRAPH - 0xEE9C: 0x986A, //CJK UNIFIED IDEOGRAPH - 0xEE9D: 0x986B, //CJK UNIFIED IDEOGRAPH - 0xEE9E: 0x986C, //CJK UNIFIED IDEOGRAPH - 0xEE9F: 0x986D, //CJK UNIFIED IDEOGRAPH - 0xEEA0: 0x986E, //CJK UNIFIED IDEOGRAPH - 0xEEA1: 0x7762, //CJK UNIFIED IDEOGRAPH - 0xEEA2: 0x7765, //CJK UNIFIED IDEOGRAPH - 0xEEA3: 0x777F, //CJK UNIFIED IDEOGRAPH - 0xEEA4: 0x778D, //CJK UNIFIED IDEOGRAPH - 0xEEA5: 0x777D, //CJK UNIFIED IDEOGRAPH - 0xEEA6: 0x7780, //CJK UNIFIED IDEOGRAPH - 0xEEA7: 0x778C, //CJK UNIFIED IDEOGRAPH - 0xEEA8: 0x7791, //CJK UNIFIED IDEOGRAPH - 0xEEA9: 0x779F, //CJK UNIFIED IDEOGRAPH - 0xEEAA: 0x77A0, //CJK UNIFIED IDEOGRAPH - 0xEEAB: 0x77B0, //CJK UNIFIED IDEOGRAPH - 0xEEAC: 0x77B5, //CJK UNIFIED IDEOGRAPH - 0xEEAD: 0x77BD, //CJK UNIFIED IDEOGRAPH - 0xEEAE: 0x753A, //CJK UNIFIED IDEOGRAPH - 0xEEAF: 0x7540, //CJK UNIFIED IDEOGRAPH - 0xEEB0: 0x754E, //CJK UNIFIED IDEOGRAPH - 0xEEB1: 0x754B, //CJK UNIFIED IDEOGRAPH - 0xEEB2: 0x7548, //CJK UNIFIED IDEOGRAPH - 0xEEB3: 0x755B, //CJK UNIFIED IDEOGRAPH - 0xEEB4: 0x7572, //CJK UNIFIED IDEOGRAPH - 0xEEB5: 0x7579, //CJK UNIFIED IDEOGRAPH - 0xEEB6: 0x7583, //CJK UNIFIED IDEOGRAPH - 0xEEB7: 0x7F58, //CJK UNIFIED IDEOGRAPH - 0xEEB8: 0x7F61, //CJK UNIFIED IDEOGRAPH - 0xEEB9: 0x7F5F, //CJK UNIFIED IDEOGRAPH - 0xEEBA: 0x8A48, //CJK UNIFIED IDEOGRAPH - 0xEEBB: 0x7F68, //CJK UNIFIED IDEOGRAPH - 0xEEBC: 0x7F74, //CJK UNIFIED IDEOGRAPH - 0xEEBD: 0x7F71, //CJK UNIFIED IDEOGRAPH - 0xEEBE: 0x7F79, //CJK UNIFIED IDEOGRAPH - 0xEEBF: 0x7F81, //CJK UNIFIED IDEOGRAPH - 0xEEC0: 0x7F7E, //CJK UNIFIED IDEOGRAPH - 0xEEC1: 0x76CD, //CJK UNIFIED IDEOGRAPH - 0xEEC2: 0x76E5, //CJK UNIFIED IDEOGRAPH - 0xEEC3: 0x8832, //CJK UNIFIED IDEOGRAPH - 0xEEC4: 0x9485, //CJK UNIFIED IDEOGRAPH - 0xEEC5: 0x9486, //CJK UNIFIED IDEOGRAPH - 0xEEC6: 0x9487, //CJK UNIFIED IDEOGRAPH - 0xEEC7: 0x948B, //CJK UNIFIED IDEOGRAPH - 0xEEC8: 0x948A, //CJK UNIFIED IDEOGRAPH - 0xEEC9: 0x948C, //CJK UNIFIED IDEOGRAPH - 0xEECA: 0x948D, //CJK UNIFIED IDEOGRAPH - 0xEECB: 0x948F, //CJK UNIFIED IDEOGRAPH - 0xEECC: 0x9490, //CJK UNIFIED IDEOGRAPH - 0xEECD: 0x9494, //CJK UNIFIED IDEOGRAPH - 0xEECE: 0x9497, //CJK UNIFIED IDEOGRAPH - 0xEECF: 0x9495, //CJK UNIFIED IDEOGRAPH - 0xEED0: 0x949A, //CJK UNIFIED IDEOGRAPH - 0xEED1: 0x949B, //CJK UNIFIED IDEOGRAPH - 0xEED2: 0x949C, //CJK UNIFIED IDEOGRAPH - 0xEED3: 0x94A3, //CJK UNIFIED IDEOGRAPH - 0xEED4: 0x94A4, //CJK UNIFIED IDEOGRAPH - 0xEED5: 0x94AB, //CJK UNIFIED IDEOGRAPH - 0xEED6: 0x94AA, //CJK UNIFIED IDEOGRAPH - 0xEED7: 0x94AD, //CJK UNIFIED IDEOGRAPH - 0xEED8: 0x94AC, //CJK UNIFIED IDEOGRAPH - 0xEED9: 0x94AF, //CJK UNIFIED IDEOGRAPH - 0xEEDA: 0x94B0, //CJK UNIFIED IDEOGRAPH - 0xEEDB: 0x94B2, //CJK UNIFIED IDEOGRAPH - 0xEEDC: 0x94B4, //CJK UNIFIED IDEOGRAPH - 0xEEDD: 0x94B6, //CJK UNIFIED IDEOGRAPH - 0xEEDE: 0x94B7, //CJK UNIFIED IDEOGRAPH - 0xEEDF: 0x94B8, //CJK UNIFIED IDEOGRAPH - 0xEEE0: 0x94B9, //CJK UNIFIED IDEOGRAPH - 0xEEE1: 0x94BA, //CJK UNIFIED IDEOGRAPH - 0xEEE2: 0x94BC, //CJK UNIFIED IDEOGRAPH - 0xEEE3: 0x94BD, //CJK UNIFIED IDEOGRAPH - 0xEEE4: 0x94BF, //CJK UNIFIED IDEOGRAPH - 0xEEE5: 0x94C4, //CJK UNIFIED IDEOGRAPH - 0xEEE6: 0x94C8, //CJK UNIFIED IDEOGRAPH - 0xEEE7: 0x94C9, //CJK UNIFIED IDEOGRAPH - 0xEEE8: 0x94CA, //CJK UNIFIED IDEOGRAPH - 0xEEE9: 0x94CB, //CJK UNIFIED IDEOGRAPH - 0xEEEA: 0x94CC, //CJK UNIFIED IDEOGRAPH - 0xEEEB: 0x94CD, //CJK UNIFIED IDEOGRAPH - 0xEEEC: 0x94CE, //CJK UNIFIED IDEOGRAPH - 0xEEED: 0x94D0, //CJK UNIFIED IDEOGRAPH - 0xEEEE: 0x94D1, //CJK UNIFIED IDEOGRAPH - 0xEEEF: 0x94D2, //CJK UNIFIED IDEOGRAPH - 0xEEF0: 0x94D5, //CJK UNIFIED IDEOGRAPH - 0xEEF1: 0x94D6, //CJK UNIFIED IDEOGRAPH - 0xEEF2: 0x94D7, //CJK UNIFIED IDEOGRAPH - 0xEEF3: 0x94D9, //CJK UNIFIED IDEOGRAPH - 0xEEF4: 0x94D8, //CJK UNIFIED IDEOGRAPH - 0xEEF5: 0x94DB, //CJK UNIFIED IDEOGRAPH - 0xEEF6: 0x94DE, //CJK UNIFIED IDEOGRAPH - 0xEEF7: 0x94DF, //CJK UNIFIED IDEOGRAPH - 0xEEF8: 0x94E0, //CJK UNIFIED IDEOGRAPH - 0xEEF9: 0x94E2, //CJK UNIFIED IDEOGRAPH - 0xEEFA: 0x94E4, //CJK UNIFIED IDEOGRAPH - 0xEEFB: 0x94E5, //CJK UNIFIED IDEOGRAPH - 0xEEFC: 0x94E7, //CJK UNIFIED IDEOGRAPH - 0xEEFD: 0x94E8, //CJK UNIFIED IDEOGRAPH - 0xEEFE: 0x94EA, //CJK UNIFIED IDEOGRAPH - 0xEF40: 0x986F, //CJK UNIFIED IDEOGRAPH - 0xEF41: 0x9870, //CJK UNIFIED IDEOGRAPH - 0xEF42: 0x9871, //CJK UNIFIED IDEOGRAPH - 0xEF43: 0x9872, //CJK UNIFIED IDEOGRAPH - 0xEF44: 0x9873, //CJK UNIFIED IDEOGRAPH - 0xEF45: 0x9874, //CJK UNIFIED IDEOGRAPH - 0xEF46: 0x988B, //CJK UNIFIED IDEOGRAPH - 0xEF47: 0x988E, //CJK UNIFIED IDEOGRAPH - 0xEF48: 0x9892, //CJK UNIFIED IDEOGRAPH - 0xEF49: 0x9895, //CJK UNIFIED IDEOGRAPH - 0xEF4A: 0x9899, //CJK UNIFIED IDEOGRAPH - 0xEF4B: 0x98A3, //CJK UNIFIED IDEOGRAPH - 0xEF4C: 0x98A8, //CJK UNIFIED IDEOGRAPH - 0xEF4D: 0x98A9, //CJK UNIFIED IDEOGRAPH - 0xEF4E: 0x98AA, //CJK UNIFIED IDEOGRAPH - 0xEF4F: 0x98AB, //CJK UNIFIED IDEOGRAPH - 0xEF50: 0x98AC, //CJK UNIFIED IDEOGRAPH - 0xEF51: 0x98AD, //CJK UNIFIED IDEOGRAPH - 0xEF52: 0x98AE, //CJK UNIFIED IDEOGRAPH - 0xEF53: 0x98AF, //CJK UNIFIED IDEOGRAPH - 0xEF54: 0x98B0, //CJK UNIFIED IDEOGRAPH - 0xEF55: 0x98B1, //CJK UNIFIED IDEOGRAPH - 0xEF56: 0x98B2, //CJK UNIFIED IDEOGRAPH - 0xEF57: 0x98B3, //CJK UNIFIED IDEOGRAPH - 0xEF58: 0x98B4, //CJK UNIFIED IDEOGRAPH - 0xEF59: 0x98B5, //CJK UNIFIED IDEOGRAPH - 0xEF5A: 0x98B6, //CJK UNIFIED IDEOGRAPH - 0xEF5B: 0x98B7, //CJK UNIFIED IDEOGRAPH - 0xEF5C: 0x98B8, //CJK UNIFIED IDEOGRAPH - 0xEF5D: 0x98B9, //CJK UNIFIED IDEOGRAPH - 0xEF5E: 0x98BA, //CJK UNIFIED IDEOGRAPH - 0xEF5F: 0x98BB, //CJK UNIFIED IDEOGRAPH - 0xEF60: 0x98BC, //CJK UNIFIED IDEOGRAPH - 0xEF61: 0x98BD, //CJK UNIFIED IDEOGRAPH - 0xEF62: 0x98BE, //CJK UNIFIED IDEOGRAPH - 0xEF63: 0x98BF, //CJK UNIFIED IDEOGRAPH - 0xEF64: 0x98C0, //CJK UNIFIED IDEOGRAPH - 0xEF65: 0x98C1, //CJK UNIFIED IDEOGRAPH - 0xEF66: 0x98C2, //CJK UNIFIED IDEOGRAPH - 0xEF67: 0x98C3, //CJK UNIFIED IDEOGRAPH - 0xEF68: 0x98C4, //CJK UNIFIED IDEOGRAPH - 0xEF69: 0x98C5, //CJK UNIFIED IDEOGRAPH - 0xEF6A: 0x98C6, //CJK UNIFIED IDEOGRAPH - 0xEF6B: 0x98C7, //CJK UNIFIED IDEOGRAPH - 0xEF6C: 0x98C8, //CJK UNIFIED IDEOGRAPH - 0xEF6D: 0x98C9, //CJK UNIFIED IDEOGRAPH - 0xEF6E: 0x98CA, //CJK UNIFIED IDEOGRAPH - 0xEF6F: 0x98CB, //CJK UNIFIED IDEOGRAPH - 0xEF70: 0x98CC, //CJK UNIFIED IDEOGRAPH - 0xEF71: 0x98CD, //CJK UNIFIED IDEOGRAPH - 0xEF72: 0x98CF, //CJK UNIFIED IDEOGRAPH - 0xEF73: 0x98D0, //CJK UNIFIED IDEOGRAPH - 0xEF74: 0x98D4, //CJK UNIFIED IDEOGRAPH - 0xEF75: 0x98D6, //CJK UNIFIED IDEOGRAPH - 0xEF76: 0x98D7, //CJK UNIFIED IDEOGRAPH - 0xEF77: 0x98DB, //CJK UNIFIED IDEOGRAPH - 0xEF78: 0x98DC, //CJK UNIFIED IDEOGRAPH - 0xEF79: 0x98DD, //CJK UNIFIED IDEOGRAPH - 0xEF7A: 0x98E0, //CJK UNIFIED IDEOGRAPH - 0xEF7B: 0x98E1, //CJK UNIFIED IDEOGRAPH - 0xEF7C: 0x98E2, //CJK UNIFIED IDEOGRAPH - 0xEF7D: 0x98E3, //CJK UNIFIED IDEOGRAPH - 0xEF7E: 0x98E4, //CJK UNIFIED IDEOGRAPH - 0xEF80: 0x98E5, //CJK UNIFIED IDEOGRAPH - 0xEF81: 0x98E6, //CJK UNIFIED IDEOGRAPH - 0xEF82: 0x98E9, //CJK UNIFIED IDEOGRAPH - 0xEF83: 0x98EA, //CJK UNIFIED IDEOGRAPH - 0xEF84: 0x98EB, //CJK UNIFIED IDEOGRAPH - 0xEF85: 0x98EC, //CJK UNIFIED IDEOGRAPH - 0xEF86: 0x98ED, //CJK UNIFIED IDEOGRAPH - 0xEF87: 0x98EE, //CJK UNIFIED IDEOGRAPH - 0xEF88: 0x98EF, //CJK UNIFIED IDEOGRAPH - 0xEF89: 0x98F0, //CJK UNIFIED IDEOGRAPH - 0xEF8A: 0x98F1, //CJK UNIFIED IDEOGRAPH - 0xEF8B: 0x98F2, //CJK UNIFIED IDEOGRAPH - 0xEF8C: 0x98F3, //CJK UNIFIED IDEOGRAPH - 0xEF8D: 0x98F4, //CJK UNIFIED IDEOGRAPH - 0xEF8E: 0x98F5, //CJK UNIFIED IDEOGRAPH - 0xEF8F: 0x98F6, //CJK UNIFIED IDEOGRAPH - 0xEF90: 0x98F7, //CJK UNIFIED IDEOGRAPH - 0xEF91: 0x98F8, //CJK UNIFIED IDEOGRAPH - 0xEF92: 0x98F9, //CJK UNIFIED IDEOGRAPH - 0xEF93: 0x98FA, //CJK UNIFIED IDEOGRAPH - 0xEF94: 0x98FB, //CJK UNIFIED IDEOGRAPH - 0xEF95: 0x98FC, //CJK UNIFIED IDEOGRAPH - 0xEF96: 0x98FD, //CJK UNIFIED IDEOGRAPH - 0xEF97: 0x98FE, //CJK UNIFIED IDEOGRAPH - 0xEF98: 0x98FF, //CJK UNIFIED IDEOGRAPH - 0xEF99: 0x9900, //CJK UNIFIED IDEOGRAPH - 0xEF9A: 0x9901, //CJK UNIFIED IDEOGRAPH - 0xEF9B: 0x9902, //CJK UNIFIED IDEOGRAPH - 0xEF9C: 0x9903, //CJK UNIFIED IDEOGRAPH - 0xEF9D: 0x9904, //CJK UNIFIED IDEOGRAPH - 0xEF9E: 0x9905, //CJK UNIFIED IDEOGRAPH - 0xEF9F: 0x9906, //CJK UNIFIED IDEOGRAPH - 0xEFA0: 0x9907, //CJK UNIFIED IDEOGRAPH - 0xEFA1: 0x94E9, //CJK UNIFIED IDEOGRAPH - 0xEFA2: 0x94EB, //CJK UNIFIED IDEOGRAPH - 0xEFA3: 0x94EE, //CJK UNIFIED IDEOGRAPH - 0xEFA4: 0x94EF, //CJK UNIFIED IDEOGRAPH - 0xEFA5: 0x94F3, //CJK UNIFIED IDEOGRAPH - 0xEFA6: 0x94F4, //CJK UNIFIED IDEOGRAPH - 0xEFA7: 0x94F5, //CJK UNIFIED IDEOGRAPH - 0xEFA8: 0x94F7, //CJK UNIFIED IDEOGRAPH - 0xEFA9: 0x94F9, //CJK UNIFIED IDEOGRAPH - 0xEFAA: 0x94FC, //CJK UNIFIED IDEOGRAPH - 0xEFAB: 0x94FD, //CJK UNIFIED IDEOGRAPH - 0xEFAC: 0x94FF, //CJK UNIFIED IDEOGRAPH - 0xEFAD: 0x9503, //CJK UNIFIED IDEOGRAPH - 0xEFAE: 0x9502, //CJK UNIFIED IDEOGRAPH - 0xEFAF: 0x9506, //CJK UNIFIED IDEOGRAPH - 0xEFB0: 0x9507, //CJK UNIFIED IDEOGRAPH - 0xEFB1: 0x9509, //CJK UNIFIED IDEOGRAPH - 0xEFB2: 0x950A, //CJK UNIFIED IDEOGRAPH - 0xEFB3: 0x950D, //CJK UNIFIED IDEOGRAPH - 0xEFB4: 0x950E, //CJK UNIFIED IDEOGRAPH - 0xEFB5: 0x950F, //CJK UNIFIED IDEOGRAPH - 0xEFB6: 0x9512, //CJK UNIFIED IDEOGRAPH - 0xEFB7: 0x9513, //CJK UNIFIED IDEOGRAPH - 0xEFB8: 0x9514, //CJK UNIFIED IDEOGRAPH - 0xEFB9: 0x9515, //CJK UNIFIED IDEOGRAPH - 0xEFBA: 0x9516, //CJK UNIFIED IDEOGRAPH - 0xEFBB: 0x9518, //CJK UNIFIED IDEOGRAPH - 0xEFBC: 0x951B, //CJK UNIFIED IDEOGRAPH - 0xEFBD: 0x951D, //CJK UNIFIED IDEOGRAPH - 0xEFBE: 0x951E, //CJK UNIFIED IDEOGRAPH - 0xEFBF: 0x951F, //CJK UNIFIED IDEOGRAPH - 0xEFC0: 0x9522, //CJK UNIFIED IDEOGRAPH - 0xEFC1: 0x952A, //CJK UNIFIED IDEOGRAPH - 0xEFC2: 0x952B, //CJK UNIFIED IDEOGRAPH - 0xEFC3: 0x9529, //CJK UNIFIED IDEOGRAPH - 0xEFC4: 0x952C, //CJK UNIFIED IDEOGRAPH - 0xEFC5: 0x9531, //CJK UNIFIED IDEOGRAPH - 0xEFC6: 0x9532, //CJK UNIFIED IDEOGRAPH - 0xEFC7: 0x9534, //CJK UNIFIED IDEOGRAPH - 0xEFC8: 0x9536, //CJK UNIFIED IDEOGRAPH - 0xEFC9: 0x9537, //CJK UNIFIED IDEOGRAPH - 0xEFCA: 0x9538, //CJK UNIFIED IDEOGRAPH - 0xEFCB: 0x953C, //CJK UNIFIED IDEOGRAPH - 0xEFCC: 0x953E, //CJK UNIFIED IDEOGRAPH - 0xEFCD: 0x953F, //CJK UNIFIED IDEOGRAPH - 0xEFCE: 0x9542, //CJK UNIFIED IDEOGRAPH - 0xEFCF: 0x9535, //CJK UNIFIED IDEOGRAPH - 0xEFD0: 0x9544, //CJK UNIFIED IDEOGRAPH - 0xEFD1: 0x9545, //CJK UNIFIED IDEOGRAPH - 0xEFD2: 0x9546, //CJK UNIFIED IDEOGRAPH - 0xEFD3: 0x9549, //CJK UNIFIED IDEOGRAPH - 0xEFD4: 0x954C, //CJK UNIFIED IDEOGRAPH - 0xEFD5: 0x954E, //CJK UNIFIED IDEOGRAPH - 0xEFD6: 0x954F, //CJK UNIFIED IDEOGRAPH - 0xEFD7: 0x9552, //CJK UNIFIED IDEOGRAPH - 0xEFD8: 0x9553, //CJK UNIFIED IDEOGRAPH - 0xEFD9: 0x9554, //CJK UNIFIED IDEOGRAPH - 0xEFDA: 0x9556, //CJK UNIFIED IDEOGRAPH - 0xEFDB: 0x9557, //CJK UNIFIED IDEOGRAPH - 0xEFDC: 0x9558, //CJK UNIFIED IDEOGRAPH - 0xEFDD: 0x9559, //CJK UNIFIED IDEOGRAPH - 0xEFDE: 0x955B, //CJK UNIFIED IDEOGRAPH - 0xEFDF: 0x955E, //CJK UNIFIED IDEOGRAPH - 0xEFE0: 0x955F, //CJK UNIFIED IDEOGRAPH - 0xEFE1: 0x955D, //CJK UNIFIED IDEOGRAPH - 0xEFE2: 0x9561, //CJK UNIFIED IDEOGRAPH - 0xEFE3: 0x9562, //CJK UNIFIED IDEOGRAPH - 0xEFE4: 0x9564, //CJK UNIFIED IDEOGRAPH - 0xEFE5: 0x9565, //CJK UNIFIED IDEOGRAPH - 0xEFE6: 0x9566, //CJK UNIFIED IDEOGRAPH - 0xEFE7: 0x9567, //CJK UNIFIED IDEOGRAPH - 0xEFE8: 0x9568, //CJK UNIFIED IDEOGRAPH - 0xEFE9: 0x9569, //CJK UNIFIED IDEOGRAPH - 0xEFEA: 0x956A, //CJK UNIFIED IDEOGRAPH - 0xEFEB: 0x956B, //CJK UNIFIED IDEOGRAPH - 0xEFEC: 0x956C, //CJK UNIFIED IDEOGRAPH - 0xEFED: 0x956F, //CJK UNIFIED IDEOGRAPH - 0xEFEE: 0x9571, //CJK UNIFIED IDEOGRAPH - 0xEFEF: 0x9572, //CJK UNIFIED IDEOGRAPH - 0xEFF0: 0x9573, //CJK UNIFIED IDEOGRAPH - 0xEFF1: 0x953A, //CJK UNIFIED IDEOGRAPH - 0xEFF2: 0x77E7, //CJK UNIFIED IDEOGRAPH - 0xEFF3: 0x77EC, //CJK UNIFIED IDEOGRAPH - 0xEFF4: 0x96C9, //CJK UNIFIED IDEOGRAPH - 0xEFF5: 0x79D5, //CJK UNIFIED IDEOGRAPH - 0xEFF6: 0x79ED, //CJK UNIFIED IDEOGRAPH - 0xEFF7: 0x79E3, //CJK UNIFIED IDEOGRAPH - 0xEFF8: 0x79EB, //CJK UNIFIED IDEOGRAPH - 0xEFF9: 0x7A06, //CJK UNIFIED IDEOGRAPH - 0xEFFA: 0x5D47, //CJK UNIFIED IDEOGRAPH - 0xEFFB: 0x7A03, //CJK UNIFIED IDEOGRAPH - 0xEFFC: 0x7A02, //CJK UNIFIED IDEOGRAPH - 0xEFFD: 0x7A1E, //CJK UNIFIED IDEOGRAPH - 0xEFFE: 0x7A14, //CJK UNIFIED IDEOGRAPH - 0xF040: 0x9908, //CJK UNIFIED IDEOGRAPH - 0xF041: 0x9909, //CJK UNIFIED IDEOGRAPH - 0xF042: 0x990A, //CJK UNIFIED IDEOGRAPH - 0xF043: 0x990B, //CJK UNIFIED IDEOGRAPH - 0xF044: 0x990C, //CJK UNIFIED IDEOGRAPH - 0xF045: 0x990E, //CJK UNIFIED IDEOGRAPH - 0xF046: 0x990F, //CJK UNIFIED IDEOGRAPH - 0xF047: 0x9911, //CJK UNIFIED IDEOGRAPH - 0xF048: 0x9912, //CJK UNIFIED IDEOGRAPH - 0xF049: 0x9913, //CJK UNIFIED IDEOGRAPH - 0xF04A: 0x9914, //CJK UNIFIED IDEOGRAPH - 0xF04B: 0x9915, //CJK UNIFIED IDEOGRAPH - 0xF04C: 0x9916, //CJK UNIFIED IDEOGRAPH - 0xF04D: 0x9917, //CJK UNIFIED IDEOGRAPH - 0xF04E: 0x9918, //CJK UNIFIED IDEOGRAPH - 0xF04F: 0x9919, //CJK UNIFIED IDEOGRAPH - 0xF050: 0x991A, //CJK UNIFIED IDEOGRAPH - 0xF051: 0x991B, //CJK UNIFIED IDEOGRAPH - 0xF052: 0x991C, //CJK UNIFIED IDEOGRAPH - 0xF053: 0x991D, //CJK UNIFIED IDEOGRAPH - 0xF054: 0x991E, //CJK UNIFIED IDEOGRAPH - 0xF055: 0x991F, //CJK UNIFIED IDEOGRAPH - 0xF056: 0x9920, //CJK UNIFIED IDEOGRAPH - 0xF057: 0x9921, //CJK UNIFIED IDEOGRAPH - 0xF058: 0x9922, //CJK UNIFIED IDEOGRAPH - 0xF059: 0x9923, //CJK UNIFIED IDEOGRAPH - 0xF05A: 0x9924, //CJK UNIFIED IDEOGRAPH - 0xF05B: 0x9925, //CJK UNIFIED IDEOGRAPH - 0xF05C: 0x9926, //CJK UNIFIED IDEOGRAPH - 0xF05D: 0x9927, //CJK UNIFIED IDEOGRAPH - 0xF05E: 0x9928, //CJK UNIFIED IDEOGRAPH - 0xF05F: 0x9929, //CJK UNIFIED IDEOGRAPH - 0xF060: 0x992A, //CJK UNIFIED IDEOGRAPH - 0xF061: 0x992B, //CJK UNIFIED IDEOGRAPH - 0xF062: 0x992C, //CJK UNIFIED IDEOGRAPH - 0xF063: 0x992D, //CJK UNIFIED IDEOGRAPH - 0xF064: 0x992F, //CJK UNIFIED IDEOGRAPH - 0xF065: 0x9930, //CJK UNIFIED IDEOGRAPH - 0xF066: 0x9931, //CJK UNIFIED IDEOGRAPH - 0xF067: 0x9932, //CJK UNIFIED IDEOGRAPH - 0xF068: 0x9933, //CJK UNIFIED IDEOGRAPH - 0xF069: 0x9934, //CJK UNIFIED IDEOGRAPH - 0xF06A: 0x9935, //CJK UNIFIED IDEOGRAPH - 0xF06B: 0x9936, //CJK UNIFIED IDEOGRAPH - 0xF06C: 0x9937, //CJK UNIFIED IDEOGRAPH - 0xF06D: 0x9938, //CJK UNIFIED IDEOGRAPH - 0xF06E: 0x9939, //CJK UNIFIED IDEOGRAPH - 0xF06F: 0x993A, //CJK UNIFIED IDEOGRAPH - 0xF070: 0x993B, //CJK UNIFIED IDEOGRAPH - 0xF071: 0x993C, //CJK UNIFIED IDEOGRAPH - 0xF072: 0x993D, //CJK UNIFIED IDEOGRAPH - 0xF073: 0x993E, //CJK UNIFIED IDEOGRAPH - 0xF074: 0x993F, //CJK UNIFIED IDEOGRAPH - 0xF075: 0x9940, //CJK UNIFIED IDEOGRAPH - 0xF076: 0x9941, //CJK UNIFIED IDEOGRAPH - 0xF077: 0x9942, //CJK UNIFIED IDEOGRAPH - 0xF078: 0x9943, //CJK UNIFIED IDEOGRAPH - 0xF079: 0x9944, //CJK UNIFIED IDEOGRAPH - 0xF07A: 0x9945, //CJK UNIFIED IDEOGRAPH - 0xF07B: 0x9946, //CJK UNIFIED IDEOGRAPH - 0xF07C: 0x9947, //CJK UNIFIED IDEOGRAPH - 0xF07D: 0x9948, //CJK UNIFIED IDEOGRAPH - 0xF07E: 0x9949, //CJK UNIFIED IDEOGRAPH - 0xF080: 0x994A, //CJK UNIFIED IDEOGRAPH - 0xF081: 0x994B, //CJK UNIFIED IDEOGRAPH - 0xF082: 0x994C, //CJK UNIFIED IDEOGRAPH - 0xF083: 0x994D, //CJK UNIFIED IDEOGRAPH - 0xF084: 0x994E, //CJK UNIFIED IDEOGRAPH - 0xF085: 0x994F, //CJK UNIFIED IDEOGRAPH - 0xF086: 0x9950, //CJK UNIFIED IDEOGRAPH - 0xF087: 0x9951, //CJK UNIFIED IDEOGRAPH - 0xF088: 0x9952, //CJK UNIFIED IDEOGRAPH - 0xF089: 0x9953, //CJK UNIFIED IDEOGRAPH - 0xF08A: 0x9956, //CJK UNIFIED IDEOGRAPH - 0xF08B: 0x9957, //CJK UNIFIED IDEOGRAPH - 0xF08C: 0x9958, //CJK UNIFIED IDEOGRAPH - 0xF08D: 0x9959, //CJK UNIFIED IDEOGRAPH - 0xF08E: 0x995A, //CJK UNIFIED IDEOGRAPH - 0xF08F: 0x995B, //CJK UNIFIED IDEOGRAPH - 0xF090: 0x995C, //CJK UNIFIED IDEOGRAPH - 0xF091: 0x995D, //CJK UNIFIED IDEOGRAPH - 0xF092: 0x995E, //CJK UNIFIED IDEOGRAPH - 0xF093: 0x995F, //CJK UNIFIED IDEOGRAPH - 0xF094: 0x9960, //CJK UNIFIED IDEOGRAPH - 0xF095: 0x9961, //CJK UNIFIED IDEOGRAPH - 0xF096: 0x9962, //CJK UNIFIED IDEOGRAPH - 0xF097: 0x9964, //CJK UNIFIED IDEOGRAPH - 0xF098: 0x9966, //CJK UNIFIED IDEOGRAPH - 0xF099: 0x9973, //CJK UNIFIED IDEOGRAPH - 0xF09A: 0x9978, //CJK UNIFIED IDEOGRAPH - 0xF09B: 0x9979, //CJK UNIFIED IDEOGRAPH - 0xF09C: 0x997B, //CJK UNIFIED IDEOGRAPH - 0xF09D: 0x997E, //CJK UNIFIED IDEOGRAPH - 0xF09E: 0x9982, //CJK UNIFIED IDEOGRAPH - 0xF09F: 0x9983, //CJK UNIFIED IDEOGRAPH - 0xF0A0: 0x9989, //CJK UNIFIED IDEOGRAPH - 0xF0A1: 0x7A39, //CJK UNIFIED IDEOGRAPH - 0xF0A2: 0x7A37, //CJK UNIFIED IDEOGRAPH - 0xF0A3: 0x7A51, //CJK UNIFIED IDEOGRAPH - 0xF0A4: 0x9ECF, //CJK UNIFIED IDEOGRAPH - 0xF0A5: 0x99A5, //CJK UNIFIED IDEOGRAPH - 0xF0A6: 0x7A70, //CJK UNIFIED IDEOGRAPH - 0xF0A7: 0x7688, //CJK UNIFIED IDEOGRAPH - 0xF0A8: 0x768E, //CJK UNIFIED IDEOGRAPH - 0xF0A9: 0x7693, //CJK UNIFIED IDEOGRAPH - 0xF0AA: 0x7699, //CJK UNIFIED IDEOGRAPH - 0xF0AB: 0x76A4, //CJK UNIFIED IDEOGRAPH - 0xF0AC: 0x74DE, //CJK UNIFIED IDEOGRAPH - 0xF0AD: 0x74E0, //CJK UNIFIED IDEOGRAPH - 0xF0AE: 0x752C, //CJK UNIFIED IDEOGRAPH - 0xF0AF: 0x9E20, //CJK UNIFIED IDEOGRAPH - 0xF0B0: 0x9E22, //CJK UNIFIED IDEOGRAPH - 0xF0B1: 0x9E28, //CJK UNIFIED IDEOGRAPH - 0xF0B2: 0x9E29, //CJK UNIFIED IDEOGRAPH - 0xF0B3: 0x9E2A, //CJK UNIFIED IDEOGRAPH - 0xF0B4: 0x9E2B, //CJK UNIFIED IDEOGRAPH - 0xF0B5: 0x9E2C, //CJK UNIFIED IDEOGRAPH - 0xF0B6: 0x9E32, //CJK UNIFIED IDEOGRAPH - 0xF0B7: 0x9E31, //CJK UNIFIED IDEOGRAPH - 0xF0B8: 0x9E36, //CJK UNIFIED IDEOGRAPH - 0xF0B9: 0x9E38, //CJK UNIFIED IDEOGRAPH - 0xF0BA: 0x9E37, //CJK UNIFIED IDEOGRAPH - 0xF0BB: 0x9E39, //CJK UNIFIED IDEOGRAPH - 0xF0BC: 0x9E3A, //CJK UNIFIED IDEOGRAPH - 0xF0BD: 0x9E3E, //CJK UNIFIED IDEOGRAPH - 0xF0BE: 0x9E41, //CJK UNIFIED IDEOGRAPH - 0xF0BF: 0x9E42, //CJK UNIFIED IDEOGRAPH - 0xF0C0: 0x9E44, //CJK UNIFIED IDEOGRAPH - 0xF0C1: 0x9E46, //CJK UNIFIED IDEOGRAPH - 0xF0C2: 0x9E47, //CJK UNIFIED IDEOGRAPH - 0xF0C3: 0x9E48, //CJK UNIFIED IDEOGRAPH - 0xF0C4: 0x9E49, //CJK UNIFIED IDEOGRAPH - 0xF0C5: 0x9E4B, //CJK UNIFIED IDEOGRAPH - 0xF0C6: 0x9E4C, //CJK UNIFIED IDEOGRAPH - 0xF0C7: 0x9E4E, //CJK UNIFIED IDEOGRAPH - 0xF0C8: 0x9E51, //CJK UNIFIED IDEOGRAPH - 0xF0C9: 0x9E55, //CJK UNIFIED IDEOGRAPH - 0xF0CA: 0x9E57, //CJK UNIFIED IDEOGRAPH - 0xF0CB: 0x9E5A, //CJK UNIFIED IDEOGRAPH - 0xF0CC: 0x9E5B, //CJK UNIFIED IDEOGRAPH - 0xF0CD: 0x9E5C, //CJK UNIFIED IDEOGRAPH - 0xF0CE: 0x9E5E, //CJK UNIFIED IDEOGRAPH - 0xF0CF: 0x9E63, //CJK UNIFIED IDEOGRAPH - 0xF0D0: 0x9E66, //CJK UNIFIED IDEOGRAPH - 0xF0D1: 0x9E67, //CJK UNIFIED IDEOGRAPH - 0xF0D2: 0x9E68, //CJK UNIFIED IDEOGRAPH - 0xF0D3: 0x9E69, //CJK UNIFIED IDEOGRAPH - 0xF0D4: 0x9E6A, //CJK UNIFIED IDEOGRAPH - 0xF0D5: 0x9E6B, //CJK UNIFIED IDEOGRAPH - 0xF0D6: 0x9E6C, //CJK UNIFIED IDEOGRAPH - 0xF0D7: 0x9E71, //CJK UNIFIED IDEOGRAPH - 0xF0D8: 0x9E6D, //CJK UNIFIED IDEOGRAPH - 0xF0D9: 0x9E73, //CJK UNIFIED IDEOGRAPH - 0xF0DA: 0x7592, //CJK UNIFIED IDEOGRAPH - 0xF0DB: 0x7594, //CJK UNIFIED IDEOGRAPH - 0xF0DC: 0x7596, //CJK UNIFIED IDEOGRAPH - 0xF0DD: 0x75A0, //CJK UNIFIED IDEOGRAPH - 0xF0DE: 0x759D, //CJK UNIFIED IDEOGRAPH - 0xF0DF: 0x75AC, //CJK UNIFIED IDEOGRAPH - 0xF0E0: 0x75A3, //CJK UNIFIED IDEOGRAPH - 0xF0E1: 0x75B3, //CJK UNIFIED IDEOGRAPH - 0xF0E2: 0x75B4, //CJK UNIFIED IDEOGRAPH - 0xF0E3: 0x75B8, //CJK UNIFIED IDEOGRAPH - 0xF0E4: 0x75C4, //CJK UNIFIED IDEOGRAPH - 0xF0E5: 0x75B1, //CJK UNIFIED IDEOGRAPH - 0xF0E6: 0x75B0, //CJK UNIFIED IDEOGRAPH - 0xF0E7: 0x75C3, //CJK UNIFIED IDEOGRAPH - 0xF0E8: 0x75C2, //CJK UNIFIED IDEOGRAPH - 0xF0E9: 0x75D6, //CJK UNIFIED IDEOGRAPH - 0xF0EA: 0x75CD, //CJK UNIFIED IDEOGRAPH - 0xF0EB: 0x75E3, //CJK UNIFIED IDEOGRAPH - 0xF0EC: 0x75E8, //CJK UNIFIED IDEOGRAPH - 0xF0ED: 0x75E6, //CJK UNIFIED IDEOGRAPH - 0xF0EE: 0x75E4, //CJK UNIFIED IDEOGRAPH - 0xF0EF: 0x75EB, //CJK UNIFIED IDEOGRAPH - 0xF0F0: 0x75E7, //CJK UNIFIED IDEOGRAPH - 0xF0F1: 0x7603, //CJK UNIFIED IDEOGRAPH - 0xF0F2: 0x75F1, //CJK UNIFIED IDEOGRAPH - 0xF0F3: 0x75FC, //CJK UNIFIED IDEOGRAPH - 0xF0F4: 0x75FF, //CJK UNIFIED IDEOGRAPH - 0xF0F5: 0x7610, //CJK UNIFIED IDEOGRAPH - 0xF0F6: 0x7600, //CJK UNIFIED IDEOGRAPH - 0xF0F7: 0x7605, //CJK UNIFIED IDEOGRAPH - 0xF0F8: 0x760C, //CJK UNIFIED IDEOGRAPH - 0xF0F9: 0x7617, //CJK UNIFIED IDEOGRAPH - 0xF0FA: 0x760A, //CJK UNIFIED IDEOGRAPH - 0xF0FB: 0x7625, //CJK UNIFIED IDEOGRAPH - 0xF0FC: 0x7618, //CJK UNIFIED IDEOGRAPH - 0xF0FD: 0x7615, //CJK UNIFIED IDEOGRAPH - 0xF0FE: 0x7619, //CJK UNIFIED IDEOGRAPH - 0xF140: 0x998C, //CJK UNIFIED IDEOGRAPH - 0xF141: 0x998E, //CJK UNIFIED IDEOGRAPH - 0xF142: 0x999A, //CJK UNIFIED IDEOGRAPH - 0xF143: 0x999B, //CJK UNIFIED IDEOGRAPH - 0xF144: 0x999C, //CJK UNIFIED IDEOGRAPH - 0xF145: 0x999D, //CJK UNIFIED IDEOGRAPH - 0xF146: 0x999E, //CJK UNIFIED IDEOGRAPH - 0xF147: 0x999F, //CJK UNIFIED IDEOGRAPH - 0xF148: 0x99A0, //CJK UNIFIED IDEOGRAPH - 0xF149: 0x99A1, //CJK UNIFIED IDEOGRAPH - 0xF14A: 0x99A2, //CJK UNIFIED IDEOGRAPH - 0xF14B: 0x99A3, //CJK UNIFIED IDEOGRAPH - 0xF14C: 0x99A4, //CJK UNIFIED IDEOGRAPH - 0xF14D: 0x99A6, //CJK UNIFIED IDEOGRAPH - 0xF14E: 0x99A7, //CJK UNIFIED IDEOGRAPH - 0xF14F: 0x99A9, //CJK UNIFIED IDEOGRAPH - 0xF150: 0x99AA, //CJK UNIFIED IDEOGRAPH - 0xF151: 0x99AB, //CJK UNIFIED IDEOGRAPH - 0xF152: 0x99AC, //CJK UNIFIED IDEOGRAPH - 0xF153: 0x99AD, //CJK UNIFIED IDEOGRAPH - 0xF154: 0x99AE, //CJK UNIFIED IDEOGRAPH - 0xF155: 0x99AF, //CJK UNIFIED IDEOGRAPH - 0xF156: 0x99B0, //CJK UNIFIED IDEOGRAPH - 0xF157: 0x99B1, //CJK UNIFIED IDEOGRAPH - 0xF158: 0x99B2, //CJK UNIFIED IDEOGRAPH - 0xF159: 0x99B3, //CJK UNIFIED IDEOGRAPH - 0xF15A: 0x99B4, //CJK UNIFIED IDEOGRAPH - 0xF15B: 0x99B5, //CJK UNIFIED IDEOGRAPH - 0xF15C: 0x99B6, //CJK UNIFIED IDEOGRAPH - 0xF15D: 0x99B7, //CJK UNIFIED IDEOGRAPH - 0xF15E: 0x99B8, //CJK UNIFIED IDEOGRAPH - 0xF15F: 0x99B9, //CJK UNIFIED IDEOGRAPH - 0xF160: 0x99BA, //CJK UNIFIED IDEOGRAPH - 0xF161: 0x99BB, //CJK UNIFIED IDEOGRAPH - 0xF162: 0x99BC, //CJK UNIFIED IDEOGRAPH - 0xF163: 0x99BD, //CJK UNIFIED IDEOGRAPH - 0xF164: 0x99BE, //CJK UNIFIED IDEOGRAPH - 0xF165: 0x99BF, //CJK UNIFIED IDEOGRAPH - 0xF166: 0x99C0, //CJK UNIFIED IDEOGRAPH - 0xF167: 0x99C1, //CJK UNIFIED IDEOGRAPH - 0xF168: 0x99C2, //CJK UNIFIED IDEOGRAPH - 0xF169: 0x99C3, //CJK UNIFIED IDEOGRAPH - 0xF16A: 0x99C4, //CJK UNIFIED IDEOGRAPH - 0xF16B: 0x99C5, //CJK UNIFIED IDEOGRAPH - 0xF16C: 0x99C6, //CJK UNIFIED IDEOGRAPH - 0xF16D: 0x99C7, //CJK UNIFIED IDEOGRAPH - 0xF16E: 0x99C8, //CJK UNIFIED IDEOGRAPH - 0xF16F: 0x99C9, //CJK UNIFIED IDEOGRAPH - 0xF170: 0x99CA, //CJK UNIFIED IDEOGRAPH - 0xF171: 0x99CB, //CJK UNIFIED IDEOGRAPH - 0xF172: 0x99CC, //CJK UNIFIED IDEOGRAPH - 0xF173: 0x99CD, //CJK UNIFIED IDEOGRAPH - 0xF174: 0x99CE, //CJK UNIFIED IDEOGRAPH - 0xF175: 0x99CF, //CJK UNIFIED IDEOGRAPH - 0xF176: 0x99D0, //CJK UNIFIED IDEOGRAPH - 0xF177: 0x99D1, //CJK UNIFIED IDEOGRAPH - 0xF178: 0x99D2, //CJK UNIFIED IDEOGRAPH - 0xF179: 0x99D3, //CJK UNIFIED IDEOGRAPH - 0xF17A: 0x99D4, //CJK UNIFIED IDEOGRAPH - 0xF17B: 0x99D5, //CJK UNIFIED IDEOGRAPH - 0xF17C: 0x99D6, //CJK UNIFIED IDEOGRAPH - 0xF17D: 0x99D7, //CJK UNIFIED IDEOGRAPH - 0xF17E: 0x99D8, //CJK UNIFIED IDEOGRAPH - 0xF180: 0x99D9, //CJK UNIFIED IDEOGRAPH - 0xF181: 0x99DA, //CJK UNIFIED IDEOGRAPH - 0xF182: 0x99DB, //CJK UNIFIED IDEOGRAPH - 0xF183: 0x99DC, //CJK UNIFIED IDEOGRAPH - 0xF184: 0x99DD, //CJK UNIFIED IDEOGRAPH - 0xF185: 0x99DE, //CJK UNIFIED IDEOGRAPH - 0xF186: 0x99DF, //CJK UNIFIED IDEOGRAPH - 0xF187: 0x99E0, //CJK UNIFIED IDEOGRAPH - 0xF188: 0x99E1, //CJK UNIFIED IDEOGRAPH - 0xF189: 0x99E2, //CJK UNIFIED IDEOGRAPH - 0xF18A: 0x99E3, //CJK UNIFIED IDEOGRAPH - 0xF18B: 0x99E4, //CJK UNIFIED IDEOGRAPH - 0xF18C: 0x99E5, //CJK UNIFIED IDEOGRAPH - 0xF18D: 0x99E6, //CJK UNIFIED IDEOGRAPH - 0xF18E: 0x99E7, //CJK UNIFIED IDEOGRAPH - 0xF18F: 0x99E8, //CJK UNIFIED IDEOGRAPH - 0xF190: 0x99E9, //CJK UNIFIED IDEOGRAPH - 0xF191: 0x99EA, //CJK UNIFIED IDEOGRAPH - 0xF192: 0x99EB, //CJK UNIFIED IDEOGRAPH - 0xF193: 0x99EC, //CJK UNIFIED IDEOGRAPH - 0xF194: 0x99ED, //CJK UNIFIED IDEOGRAPH - 0xF195: 0x99EE, //CJK UNIFIED IDEOGRAPH - 0xF196: 0x99EF, //CJK UNIFIED IDEOGRAPH - 0xF197: 0x99F0, //CJK UNIFIED IDEOGRAPH - 0xF198: 0x99F1, //CJK UNIFIED IDEOGRAPH - 0xF199: 0x99F2, //CJK UNIFIED IDEOGRAPH - 0xF19A: 0x99F3, //CJK UNIFIED IDEOGRAPH - 0xF19B: 0x99F4, //CJK UNIFIED IDEOGRAPH - 0xF19C: 0x99F5, //CJK UNIFIED IDEOGRAPH - 0xF19D: 0x99F6, //CJK UNIFIED IDEOGRAPH - 0xF19E: 0x99F7, //CJK UNIFIED IDEOGRAPH - 0xF19F: 0x99F8, //CJK UNIFIED IDEOGRAPH - 0xF1A0: 0x99F9, //CJK UNIFIED IDEOGRAPH - 0xF1A1: 0x761B, //CJK UNIFIED IDEOGRAPH - 0xF1A2: 0x763C, //CJK UNIFIED IDEOGRAPH - 0xF1A3: 0x7622, //CJK UNIFIED IDEOGRAPH - 0xF1A4: 0x7620, //CJK UNIFIED IDEOGRAPH - 0xF1A5: 0x7640, //CJK UNIFIED IDEOGRAPH - 0xF1A6: 0x762D, //CJK UNIFIED IDEOGRAPH - 0xF1A7: 0x7630, //CJK UNIFIED IDEOGRAPH - 0xF1A8: 0x763F, //CJK UNIFIED IDEOGRAPH - 0xF1A9: 0x7635, //CJK UNIFIED IDEOGRAPH - 0xF1AA: 0x7643, //CJK UNIFIED IDEOGRAPH - 0xF1AB: 0x763E, //CJK UNIFIED IDEOGRAPH - 0xF1AC: 0x7633, //CJK UNIFIED IDEOGRAPH - 0xF1AD: 0x764D, //CJK UNIFIED IDEOGRAPH - 0xF1AE: 0x765E, //CJK UNIFIED IDEOGRAPH - 0xF1AF: 0x7654, //CJK UNIFIED IDEOGRAPH - 0xF1B0: 0x765C, //CJK UNIFIED IDEOGRAPH - 0xF1B1: 0x7656, //CJK UNIFIED IDEOGRAPH - 0xF1B2: 0x766B, //CJK UNIFIED IDEOGRAPH - 0xF1B3: 0x766F, //CJK UNIFIED IDEOGRAPH - 0xF1B4: 0x7FCA, //CJK UNIFIED IDEOGRAPH - 0xF1B5: 0x7AE6, //CJK UNIFIED IDEOGRAPH - 0xF1B6: 0x7A78, //CJK UNIFIED IDEOGRAPH - 0xF1B7: 0x7A79, //CJK UNIFIED IDEOGRAPH - 0xF1B8: 0x7A80, //CJK UNIFIED IDEOGRAPH - 0xF1B9: 0x7A86, //CJK UNIFIED IDEOGRAPH - 0xF1BA: 0x7A88, //CJK UNIFIED IDEOGRAPH - 0xF1BB: 0x7A95, //CJK UNIFIED IDEOGRAPH - 0xF1BC: 0x7AA6, //CJK UNIFIED IDEOGRAPH - 0xF1BD: 0x7AA0, //CJK UNIFIED IDEOGRAPH - 0xF1BE: 0x7AAC, //CJK UNIFIED IDEOGRAPH - 0xF1BF: 0x7AA8, //CJK UNIFIED IDEOGRAPH - 0xF1C0: 0x7AAD, //CJK UNIFIED IDEOGRAPH - 0xF1C1: 0x7AB3, //CJK UNIFIED IDEOGRAPH - 0xF1C2: 0x8864, //CJK UNIFIED IDEOGRAPH - 0xF1C3: 0x8869, //CJK UNIFIED IDEOGRAPH - 0xF1C4: 0x8872, //CJK UNIFIED IDEOGRAPH - 0xF1C5: 0x887D, //CJK UNIFIED IDEOGRAPH - 0xF1C6: 0x887F, //CJK UNIFIED IDEOGRAPH - 0xF1C7: 0x8882, //CJK UNIFIED IDEOGRAPH - 0xF1C8: 0x88A2, //CJK UNIFIED IDEOGRAPH - 0xF1C9: 0x88C6, //CJK UNIFIED IDEOGRAPH - 0xF1CA: 0x88B7, //CJK UNIFIED IDEOGRAPH - 0xF1CB: 0x88BC, //CJK UNIFIED IDEOGRAPH - 0xF1CC: 0x88C9, //CJK UNIFIED IDEOGRAPH - 0xF1CD: 0x88E2, //CJK UNIFIED IDEOGRAPH - 0xF1CE: 0x88CE, //CJK UNIFIED IDEOGRAPH - 0xF1CF: 0x88E3, //CJK UNIFIED IDEOGRAPH - 0xF1D0: 0x88E5, //CJK UNIFIED IDEOGRAPH - 0xF1D1: 0x88F1, //CJK UNIFIED IDEOGRAPH - 0xF1D2: 0x891A, //CJK UNIFIED IDEOGRAPH - 0xF1D3: 0x88FC, //CJK UNIFIED IDEOGRAPH - 0xF1D4: 0x88E8, //CJK UNIFIED IDEOGRAPH - 0xF1D5: 0x88FE, //CJK UNIFIED IDEOGRAPH - 0xF1D6: 0x88F0, //CJK UNIFIED IDEOGRAPH - 0xF1D7: 0x8921, //CJK UNIFIED IDEOGRAPH - 0xF1D8: 0x8919, //CJK UNIFIED IDEOGRAPH - 0xF1D9: 0x8913, //CJK UNIFIED IDEOGRAPH - 0xF1DA: 0x891B, //CJK UNIFIED IDEOGRAPH - 0xF1DB: 0x890A, //CJK UNIFIED IDEOGRAPH - 0xF1DC: 0x8934, //CJK UNIFIED IDEOGRAPH - 0xF1DD: 0x892B, //CJK UNIFIED IDEOGRAPH - 0xF1DE: 0x8936, //CJK UNIFIED IDEOGRAPH - 0xF1DF: 0x8941, //CJK UNIFIED IDEOGRAPH - 0xF1E0: 0x8966, //CJK UNIFIED IDEOGRAPH - 0xF1E1: 0x897B, //CJK UNIFIED IDEOGRAPH - 0xF1E2: 0x758B, //CJK UNIFIED IDEOGRAPH - 0xF1E3: 0x80E5, //CJK UNIFIED IDEOGRAPH - 0xF1E4: 0x76B2, //CJK UNIFIED IDEOGRAPH - 0xF1E5: 0x76B4, //CJK UNIFIED IDEOGRAPH - 0xF1E6: 0x77DC, //CJK UNIFIED IDEOGRAPH - 0xF1E7: 0x8012, //CJK UNIFIED IDEOGRAPH - 0xF1E8: 0x8014, //CJK UNIFIED IDEOGRAPH - 0xF1E9: 0x8016, //CJK UNIFIED IDEOGRAPH - 0xF1EA: 0x801C, //CJK UNIFIED IDEOGRAPH - 0xF1EB: 0x8020, //CJK UNIFIED IDEOGRAPH - 0xF1EC: 0x8022, //CJK UNIFIED IDEOGRAPH - 0xF1ED: 0x8025, //CJK UNIFIED IDEOGRAPH - 0xF1EE: 0x8026, //CJK UNIFIED IDEOGRAPH - 0xF1EF: 0x8027, //CJK UNIFIED IDEOGRAPH - 0xF1F0: 0x8029, //CJK UNIFIED IDEOGRAPH - 0xF1F1: 0x8028, //CJK UNIFIED IDEOGRAPH - 0xF1F2: 0x8031, //CJK UNIFIED IDEOGRAPH - 0xF1F3: 0x800B, //CJK UNIFIED IDEOGRAPH - 0xF1F4: 0x8035, //CJK UNIFIED IDEOGRAPH - 0xF1F5: 0x8043, //CJK UNIFIED IDEOGRAPH - 0xF1F6: 0x8046, //CJK UNIFIED IDEOGRAPH - 0xF1F7: 0x804D, //CJK UNIFIED IDEOGRAPH - 0xF1F8: 0x8052, //CJK UNIFIED IDEOGRAPH - 0xF1F9: 0x8069, //CJK UNIFIED IDEOGRAPH - 0xF1FA: 0x8071, //CJK UNIFIED IDEOGRAPH - 0xF1FB: 0x8983, //CJK UNIFIED IDEOGRAPH - 0xF1FC: 0x9878, //CJK UNIFIED IDEOGRAPH - 0xF1FD: 0x9880, //CJK UNIFIED IDEOGRAPH - 0xF1FE: 0x9883, //CJK UNIFIED IDEOGRAPH - 0xF240: 0x99FA, //CJK UNIFIED IDEOGRAPH - 0xF241: 0x99FB, //CJK UNIFIED IDEOGRAPH - 0xF242: 0x99FC, //CJK UNIFIED IDEOGRAPH - 0xF243: 0x99FD, //CJK UNIFIED IDEOGRAPH - 0xF244: 0x99FE, //CJK UNIFIED IDEOGRAPH - 0xF245: 0x99FF, //CJK UNIFIED IDEOGRAPH - 0xF246: 0x9A00, //CJK UNIFIED IDEOGRAPH - 0xF247: 0x9A01, //CJK UNIFIED IDEOGRAPH - 0xF248: 0x9A02, //CJK UNIFIED IDEOGRAPH - 0xF249: 0x9A03, //CJK UNIFIED IDEOGRAPH - 0xF24A: 0x9A04, //CJK UNIFIED IDEOGRAPH - 0xF24B: 0x9A05, //CJK UNIFIED IDEOGRAPH - 0xF24C: 0x9A06, //CJK UNIFIED IDEOGRAPH - 0xF24D: 0x9A07, //CJK UNIFIED IDEOGRAPH - 0xF24E: 0x9A08, //CJK UNIFIED IDEOGRAPH - 0xF24F: 0x9A09, //CJK UNIFIED IDEOGRAPH - 0xF250: 0x9A0A, //CJK UNIFIED IDEOGRAPH - 0xF251: 0x9A0B, //CJK UNIFIED IDEOGRAPH - 0xF252: 0x9A0C, //CJK UNIFIED IDEOGRAPH - 0xF253: 0x9A0D, //CJK UNIFIED IDEOGRAPH - 0xF254: 0x9A0E, //CJK UNIFIED IDEOGRAPH - 0xF255: 0x9A0F, //CJK UNIFIED IDEOGRAPH - 0xF256: 0x9A10, //CJK UNIFIED IDEOGRAPH - 0xF257: 0x9A11, //CJK UNIFIED IDEOGRAPH - 0xF258: 0x9A12, //CJK UNIFIED IDEOGRAPH - 0xF259: 0x9A13, //CJK UNIFIED IDEOGRAPH - 0xF25A: 0x9A14, //CJK UNIFIED IDEOGRAPH - 0xF25B: 0x9A15, //CJK UNIFIED IDEOGRAPH - 0xF25C: 0x9A16, //CJK UNIFIED IDEOGRAPH - 0xF25D: 0x9A17, //CJK UNIFIED IDEOGRAPH - 0xF25E: 0x9A18, //CJK UNIFIED IDEOGRAPH - 0xF25F: 0x9A19, //CJK UNIFIED IDEOGRAPH - 0xF260: 0x9A1A, //CJK UNIFIED IDEOGRAPH - 0xF261: 0x9A1B, //CJK UNIFIED IDEOGRAPH - 0xF262: 0x9A1C, //CJK UNIFIED IDEOGRAPH - 0xF263: 0x9A1D, //CJK UNIFIED IDEOGRAPH - 0xF264: 0x9A1E, //CJK UNIFIED IDEOGRAPH - 0xF265: 0x9A1F, //CJK UNIFIED IDEOGRAPH - 0xF266: 0x9A20, //CJK UNIFIED IDEOGRAPH - 0xF267: 0x9A21, //CJK UNIFIED IDEOGRAPH - 0xF268: 0x9A22, //CJK UNIFIED IDEOGRAPH - 0xF269: 0x9A23, //CJK UNIFIED IDEOGRAPH - 0xF26A: 0x9A24, //CJK UNIFIED IDEOGRAPH - 0xF26B: 0x9A25, //CJK UNIFIED IDEOGRAPH - 0xF26C: 0x9A26, //CJK UNIFIED IDEOGRAPH - 0xF26D: 0x9A27, //CJK UNIFIED IDEOGRAPH - 0xF26E: 0x9A28, //CJK UNIFIED IDEOGRAPH - 0xF26F: 0x9A29, //CJK UNIFIED IDEOGRAPH - 0xF270: 0x9A2A, //CJK UNIFIED IDEOGRAPH - 0xF271: 0x9A2B, //CJK UNIFIED IDEOGRAPH - 0xF272: 0x9A2C, //CJK UNIFIED IDEOGRAPH - 0xF273: 0x9A2D, //CJK UNIFIED IDEOGRAPH - 0xF274: 0x9A2E, //CJK UNIFIED IDEOGRAPH - 0xF275: 0x9A2F, //CJK UNIFIED IDEOGRAPH - 0xF276: 0x9A30, //CJK UNIFIED IDEOGRAPH - 0xF277: 0x9A31, //CJK UNIFIED IDEOGRAPH - 0xF278: 0x9A32, //CJK UNIFIED IDEOGRAPH - 0xF279: 0x9A33, //CJK UNIFIED IDEOGRAPH - 0xF27A: 0x9A34, //CJK UNIFIED IDEOGRAPH - 0xF27B: 0x9A35, //CJK UNIFIED IDEOGRAPH - 0xF27C: 0x9A36, //CJK UNIFIED IDEOGRAPH - 0xF27D: 0x9A37, //CJK UNIFIED IDEOGRAPH - 0xF27E: 0x9A38, //CJK UNIFIED IDEOGRAPH - 0xF280: 0x9A39, //CJK UNIFIED IDEOGRAPH - 0xF281: 0x9A3A, //CJK UNIFIED IDEOGRAPH - 0xF282: 0x9A3B, //CJK UNIFIED IDEOGRAPH - 0xF283: 0x9A3C, //CJK UNIFIED IDEOGRAPH - 0xF284: 0x9A3D, //CJK UNIFIED IDEOGRAPH - 0xF285: 0x9A3E, //CJK UNIFIED IDEOGRAPH - 0xF286: 0x9A3F, //CJK UNIFIED IDEOGRAPH - 0xF287: 0x9A40, //CJK UNIFIED IDEOGRAPH - 0xF288: 0x9A41, //CJK UNIFIED IDEOGRAPH - 0xF289: 0x9A42, //CJK UNIFIED IDEOGRAPH - 0xF28A: 0x9A43, //CJK UNIFIED IDEOGRAPH - 0xF28B: 0x9A44, //CJK UNIFIED IDEOGRAPH - 0xF28C: 0x9A45, //CJK UNIFIED IDEOGRAPH - 0xF28D: 0x9A46, //CJK UNIFIED IDEOGRAPH - 0xF28E: 0x9A47, //CJK UNIFIED IDEOGRAPH - 0xF28F: 0x9A48, //CJK UNIFIED IDEOGRAPH - 0xF290: 0x9A49, //CJK UNIFIED IDEOGRAPH - 0xF291: 0x9A4A, //CJK UNIFIED IDEOGRAPH - 0xF292: 0x9A4B, //CJK UNIFIED IDEOGRAPH - 0xF293: 0x9A4C, //CJK UNIFIED IDEOGRAPH - 0xF294: 0x9A4D, //CJK UNIFIED IDEOGRAPH - 0xF295: 0x9A4E, //CJK UNIFIED IDEOGRAPH - 0xF296: 0x9A4F, //CJK UNIFIED IDEOGRAPH - 0xF297: 0x9A50, //CJK UNIFIED IDEOGRAPH - 0xF298: 0x9A51, //CJK UNIFIED IDEOGRAPH - 0xF299: 0x9A52, //CJK UNIFIED IDEOGRAPH - 0xF29A: 0x9A53, //CJK UNIFIED IDEOGRAPH - 0xF29B: 0x9A54, //CJK UNIFIED IDEOGRAPH - 0xF29C: 0x9A55, //CJK UNIFIED IDEOGRAPH - 0xF29D: 0x9A56, //CJK UNIFIED IDEOGRAPH - 0xF29E: 0x9A57, //CJK UNIFIED IDEOGRAPH - 0xF29F: 0x9A58, //CJK UNIFIED IDEOGRAPH - 0xF2A0: 0x9A59, //CJK UNIFIED IDEOGRAPH - 0xF2A1: 0x9889, //CJK UNIFIED IDEOGRAPH - 0xF2A2: 0x988C, //CJK UNIFIED IDEOGRAPH - 0xF2A3: 0x988D, //CJK UNIFIED IDEOGRAPH - 0xF2A4: 0x988F, //CJK UNIFIED IDEOGRAPH - 0xF2A5: 0x9894, //CJK UNIFIED IDEOGRAPH - 0xF2A6: 0x989A, //CJK UNIFIED IDEOGRAPH - 0xF2A7: 0x989B, //CJK UNIFIED IDEOGRAPH - 0xF2A8: 0x989E, //CJK UNIFIED IDEOGRAPH - 0xF2A9: 0x989F, //CJK UNIFIED IDEOGRAPH - 0xF2AA: 0x98A1, //CJK UNIFIED IDEOGRAPH - 0xF2AB: 0x98A2, //CJK UNIFIED IDEOGRAPH - 0xF2AC: 0x98A5, //CJK UNIFIED IDEOGRAPH - 0xF2AD: 0x98A6, //CJK UNIFIED IDEOGRAPH - 0xF2AE: 0x864D, //CJK UNIFIED IDEOGRAPH - 0xF2AF: 0x8654, //CJK UNIFIED IDEOGRAPH - 0xF2B0: 0x866C, //CJK UNIFIED IDEOGRAPH - 0xF2B1: 0x866E, //CJK UNIFIED IDEOGRAPH - 0xF2B2: 0x867F, //CJK UNIFIED IDEOGRAPH - 0xF2B3: 0x867A, //CJK UNIFIED IDEOGRAPH - 0xF2B4: 0x867C, //CJK UNIFIED IDEOGRAPH - 0xF2B5: 0x867B, //CJK UNIFIED IDEOGRAPH - 0xF2B6: 0x86A8, //CJK UNIFIED IDEOGRAPH - 0xF2B7: 0x868D, //CJK UNIFIED IDEOGRAPH - 0xF2B8: 0x868B, //CJK UNIFIED IDEOGRAPH - 0xF2B9: 0x86AC, //CJK UNIFIED IDEOGRAPH - 0xF2BA: 0x869D, //CJK UNIFIED IDEOGRAPH - 0xF2BB: 0x86A7, //CJK UNIFIED IDEOGRAPH - 0xF2BC: 0x86A3, //CJK UNIFIED IDEOGRAPH - 0xF2BD: 0x86AA, //CJK UNIFIED IDEOGRAPH - 0xF2BE: 0x8693, //CJK UNIFIED IDEOGRAPH - 0xF2BF: 0x86A9, //CJK UNIFIED IDEOGRAPH - 0xF2C0: 0x86B6, //CJK UNIFIED IDEOGRAPH - 0xF2C1: 0x86C4, //CJK UNIFIED IDEOGRAPH - 0xF2C2: 0x86B5, //CJK UNIFIED IDEOGRAPH - 0xF2C3: 0x86CE, //CJK UNIFIED IDEOGRAPH - 0xF2C4: 0x86B0, //CJK UNIFIED IDEOGRAPH - 0xF2C5: 0x86BA, //CJK UNIFIED IDEOGRAPH - 0xF2C6: 0x86B1, //CJK UNIFIED IDEOGRAPH - 0xF2C7: 0x86AF, //CJK UNIFIED IDEOGRAPH - 0xF2C8: 0x86C9, //CJK UNIFIED IDEOGRAPH - 0xF2C9: 0x86CF, //CJK UNIFIED IDEOGRAPH - 0xF2CA: 0x86B4, //CJK UNIFIED IDEOGRAPH - 0xF2CB: 0x86E9, //CJK UNIFIED IDEOGRAPH - 0xF2CC: 0x86F1, //CJK UNIFIED IDEOGRAPH - 0xF2CD: 0x86F2, //CJK UNIFIED IDEOGRAPH - 0xF2CE: 0x86ED, //CJK UNIFIED IDEOGRAPH - 0xF2CF: 0x86F3, //CJK UNIFIED IDEOGRAPH - 0xF2D0: 0x86D0, //CJK UNIFIED IDEOGRAPH - 0xF2D1: 0x8713, //CJK UNIFIED IDEOGRAPH - 0xF2D2: 0x86DE, //CJK UNIFIED IDEOGRAPH - 0xF2D3: 0x86F4, //CJK UNIFIED IDEOGRAPH - 0xF2D4: 0x86DF, //CJK UNIFIED IDEOGRAPH - 0xF2D5: 0x86D8, //CJK UNIFIED IDEOGRAPH - 0xF2D6: 0x86D1, //CJK UNIFIED IDEOGRAPH - 0xF2D7: 0x8703, //CJK UNIFIED IDEOGRAPH - 0xF2D8: 0x8707, //CJK UNIFIED IDEOGRAPH - 0xF2D9: 0x86F8, //CJK UNIFIED IDEOGRAPH - 0xF2DA: 0x8708, //CJK UNIFIED IDEOGRAPH - 0xF2DB: 0x870A, //CJK UNIFIED IDEOGRAPH - 0xF2DC: 0x870D, //CJK UNIFIED IDEOGRAPH - 0xF2DD: 0x8709, //CJK UNIFIED IDEOGRAPH - 0xF2DE: 0x8723, //CJK UNIFIED IDEOGRAPH - 0xF2DF: 0x873B, //CJK UNIFIED IDEOGRAPH - 0xF2E0: 0x871E, //CJK UNIFIED IDEOGRAPH - 0xF2E1: 0x8725, //CJK UNIFIED IDEOGRAPH - 0xF2E2: 0x872E, //CJK UNIFIED IDEOGRAPH - 0xF2E3: 0x871A, //CJK UNIFIED IDEOGRAPH - 0xF2E4: 0x873E, //CJK UNIFIED IDEOGRAPH - 0xF2E5: 0x8748, //CJK UNIFIED IDEOGRAPH - 0xF2E6: 0x8734, //CJK UNIFIED IDEOGRAPH - 0xF2E7: 0x8731, //CJK UNIFIED IDEOGRAPH - 0xF2E8: 0x8729, //CJK UNIFIED IDEOGRAPH - 0xF2E9: 0x8737, //CJK UNIFIED IDEOGRAPH - 0xF2EA: 0x873F, //CJK UNIFIED IDEOGRAPH - 0xF2EB: 0x8782, //CJK UNIFIED IDEOGRAPH - 0xF2EC: 0x8722, //CJK UNIFIED IDEOGRAPH - 0xF2ED: 0x877D, //CJK UNIFIED IDEOGRAPH - 0xF2EE: 0x877E, //CJK UNIFIED IDEOGRAPH - 0xF2EF: 0x877B, //CJK UNIFIED IDEOGRAPH - 0xF2F0: 0x8760, //CJK UNIFIED IDEOGRAPH - 0xF2F1: 0x8770, //CJK UNIFIED IDEOGRAPH - 0xF2F2: 0x874C, //CJK UNIFIED IDEOGRAPH - 0xF2F3: 0x876E, //CJK UNIFIED IDEOGRAPH - 0xF2F4: 0x878B, //CJK UNIFIED IDEOGRAPH - 0xF2F5: 0x8753, //CJK UNIFIED IDEOGRAPH - 0xF2F6: 0x8763, //CJK UNIFIED IDEOGRAPH - 0xF2F7: 0x877C, //CJK UNIFIED IDEOGRAPH - 0xF2F8: 0x8764, //CJK UNIFIED IDEOGRAPH - 0xF2F9: 0x8759, //CJK UNIFIED IDEOGRAPH - 0xF2FA: 0x8765, //CJK UNIFIED IDEOGRAPH - 0xF2FB: 0x8793, //CJK UNIFIED IDEOGRAPH - 0xF2FC: 0x87AF, //CJK UNIFIED IDEOGRAPH - 0xF2FD: 0x87A8, //CJK UNIFIED IDEOGRAPH - 0xF2FE: 0x87D2, //CJK UNIFIED IDEOGRAPH - 0xF340: 0x9A5A, //CJK UNIFIED IDEOGRAPH - 0xF341: 0x9A5B, //CJK UNIFIED IDEOGRAPH - 0xF342: 0x9A5C, //CJK UNIFIED IDEOGRAPH - 0xF343: 0x9A5D, //CJK UNIFIED IDEOGRAPH - 0xF344: 0x9A5E, //CJK UNIFIED IDEOGRAPH - 0xF345: 0x9A5F, //CJK UNIFIED IDEOGRAPH - 0xF346: 0x9A60, //CJK UNIFIED IDEOGRAPH - 0xF347: 0x9A61, //CJK UNIFIED IDEOGRAPH - 0xF348: 0x9A62, //CJK UNIFIED IDEOGRAPH - 0xF349: 0x9A63, //CJK UNIFIED IDEOGRAPH - 0xF34A: 0x9A64, //CJK UNIFIED IDEOGRAPH - 0xF34B: 0x9A65, //CJK UNIFIED IDEOGRAPH - 0xF34C: 0x9A66, //CJK UNIFIED IDEOGRAPH - 0xF34D: 0x9A67, //CJK UNIFIED IDEOGRAPH - 0xF34E: 0x9A68, //CJK UNIFIED IDEOGRAPH - 0xF34F: 0x9A69, //CJK UNIFIED IDEOGRAPH - 0xF350: 0x9A6A, //CJK UNIFIED IDEOGRAPH - 0xF351: 0x9A6B, //CJK UNIFIED IDEOGRAPH - 0xF352: 0x9A72, //CJK UNIFIED IDEOGRAPH - 0xF353: 0x9A83, //CJK UNIFIED IDEOGRAPH - 0xF354: 0x9A89, //CJK UNIFIED IDEOGRAPH - 0xF355: 0x9A8D, //CJK UNIFIED IDEOGRAPH - 0xF356: 0x9A8E, //CJK UNIFIED IDEOGRAPH - 0xF357: 0x9A94, //CJK UNIFIED IDEOGRAPH - 0xF358: 0x9A95, //CJK UNIFIED IDEOGRAPH - 0xF359: 0x9A99, //CJK UNIFIED IDEOGRAPH - 0xF35A: 0x9AA6, //CJK UNIFIED IDEOGRAPH - 0xF35B: 0x9AA9, //CJK UNIFIED IDEOGRAPH - 0xF35C: 0x9AAA, //CJK UNIFIED IDEOGRAPH - 0xF35D: 0x9AAB, //CJK UNIFIED IDEOGRAPH - 0xF35E: 0x9AAC, //CJK UNIFIED IDEOGRAPH - 0xF35F: 0x9AAD, //CJK UNIFIED IDEOGRAPH - 0xF360: 0x9AAE, //CJK UNIFIED IDEOGRAPH - 0xF361: 0x9AAF, //CJK UNIFIED IDEOGRAPH - 0xF362: 0x9AB2, //CJK UNIFIED IDEOGRAPH - 0xF363: 0x9AB3, //CJK UNIFIED IDEOGRAPH - 0xF364: 0x9AB4, //CJK UNIFIED IDEOGRAPH - 0xF365: 0x9AB5, //CJK UNIFIED IDEOGRAPH - 0xF366: 0x9AB9, //CJK UNIFIED IDEOGRAPH - 0xF367: 0x9ABB, //CJK UNIFIED IDEOGRAPH - 0xF368: 0x9ABD, //CJK UNIFIED IDEOGRAPH - 0xF369: 0x9ABE, //CJK UNIFIED IDEOGRAPH - 0xF36A: 0x9ABF, //CJK UNIFIED IDEOGRAPH - 0xF36B: 0x9AC3, //CJK UNIFIED IDEOGRAPH - 0xF36C: 0x9AC4, //CJK UNIFIED IDEOGRAPH - 0xF36D: 0x9AC6, //CJK UNIFIED IDEOGRAPH - 0xF36E: 0x9AC7, //CJK UNIFIED IDEOGRAPH - 0xF36F: 0x9AC8, //CJK UNIFIED IDEOGRAPH - 0xF370: 0x9AC9, //CJK UNIFIED IDEOGRAPH - 0xF371: 0x9ACA, //CJK UNIFIED IDEOGRAPH - 0xF372: 0x9ACD, //CJK UNIFIED IDEOGRAPH - 0xF373: 0x9ACE, //CJK UNIFIED IDEOGRAPH - 0xF374: 0x9ACF, //CJK UNIFIED IDEOGRAPH - 0xF375: 0x9AD0, //CJK UNIFIED IDEOGRAPH - 0xF376: 0x9AD2, //CJK UNIFIED IDEOGRAPH - 0xF377: 0x9AD4, //CJK UNIFIED IDEOGRAPH - 0xF378: 0x9AD5, //CJK UNIFIED IDEOGRAPH - 0xF379: 0x9AD6, //CJK UNIFIED IDEOGRAPH - 0xF37A: 0x9AD7, //CJK UNIFIED IDEOGRAPH - 0xF37B: 0x9AD9, //CJK UNIFIED IDEOGRAPH - 0xF37C: 0x9ADA, //CJK UNIFIED IDEOGRAPH - 0xF37D: 0x9ADB, //CJK UNIFIED IDEOGRAPH - 0xF37E: 0x9ADC, //CJK UNIFIED IDEOGRAPH - 0xF380: 0x9ADD, //CJK UNIFIED IDEOGRAPH - 0xF381: 0x9ADE, //CJK UNIFIED IDEOGRAPH - 0xF382: 0x9AE0, //CJK UNIFIED IDEOGRAPH - 0xF383: 0x9AE2, //CJK UNIFIED IDEOGRAPH - 0xF384: 0x9AE3, //CJK UNIFIED IDEOGRAPH - 0xF385: 0x9AE4, //CJK UNIFIED IDEOGRAPH - 0xF386: 0x9AE5, //CJK UNIFIED IDEOGRAPH - 0xF387: 0x9AE7, //CJK UNIFIED IDEOGRAPH - 0xF388: 0x9AE8, //CJK UNIFIED IDEOGRAPH - 0xF389: 0x9AE9, //CJK UNIFIED IDEOGRAPH - 0xF38A: 0x9AEA, //CJK UNIFIED IDEOGRAPH - 0xF38B: 0x9AEC, //CJK UNIFIED IDEOGRAPH - 0xF38C: 0x9AEE, //CJK UNIFIED IDEOGRAPH - 0xF38D: 0x9AF0, //CJK UNIFIED IDEOGRAPH - 0xF38E: 0x9AF1, //CJK UNIFIED IDEOGRAPH - 0xF38F: 0x9AF2, //CJK UNIFIED IDEOGRAPH - 0xF390: 0x9AF3, //CJK UNIFIED IDEOGRAPH - 0xF391: 0x9AF4, //CJK UNIFIED IDEOGRAPH - 0xF392: 0x9AF5, //CJK UNIFIED IDEOGRAPH - 0xF393: 0x9AF6, //CJK UNIFIED IDEOGRAPH - 0xF394: 0x9AF7, //CJK UNIFIED IDEOGRAPH - 0xF395: 0x9AF8, //CJK UNIFIED IDEOGRAPH - 0xF396: 0x9AFA, //CJK UNIFIED IDEOGRAPH - 0xF397: 0x9AFC, //CJK UNIFIED IDEOGRAPH - 0xF398: 0x9AFD, //CJK UNIFIED IDEOGRAPH - 0xF399: 0x9AFE, //CJK UNIFIED IDEOGRAPH - 0xF39A: 0x9AFF, //CJK UNIFIED IDEOGRAPH - 0xF39B: 0x9B00, //CJK UNIFIED IDEOGRAPH - 0xF39C: 0x9B01, //CJK UNIFIED IDEOGRAPH - 0xF39D: 0x9B02, //CJK UNIFIED IDEOGRAPH - 0xF39E: 0x9B04, //CJK UNIFIED IDEOGRAPH - 0xF39F: 0x9B05, //CJK UNIFIED IDEOGRAPH - 0xF3A0: 0x9B06, //CJK UNIFIED IDEOGRAPH - 0xF3A1: 0x87C6, //CJK UNIFIED IDEOGRAPH - 0xF3A2: 0x8788, //CJK UNIFIED IDEOGRAPH - 0xF3A3: 0x8785, //CJK UNIFIED IDEOGRAPH - 0xF3A4: 0x87AD, //CJK UNIFIED IDEOGRAPH - 0xF3A5: 0x8797, //CJK UNIFIED IDEOGRAPH - 0xF3A6: 0x8783, //CJK UNIFIED IDEOGRAPH - 0xF3A7: 0x87AB, //CJK UNIFIED IDEOGRAPH - 0xF3A8: 0x87E5, //CJK UNIFIED IDEOGRAPH - 0xF3A9: 0x87AC, //CJK UNIFIED IDEOGRAPH - 0xF3AA: 0x87B5, //CJK UNIFIED IDEOGRAPH - 0xF3AB: 0x87B3, //CJK UNIFIED IDEOGRAPH - 0xF3AC: 0x87CB, //CJK UNIFIED IDEOGRAPH - 0xF3AD: 0x87D3, //CJK UNIFIED IDEOGRAPH - 0xF3AE: 0x87BD, //CJK UNIFIED IDEOGRAPH - 0xF3AF: 0x87D1, //CJK UNIFIED IDEOGRAPH - 0xF3B0: 0x87C0, //CJK UNIFIED IDEOGRAPH - 0xF3B1: 0x87CA, //CJK UNIFIED IDEOGRAPH - 0xF3B2: 0x87DB, //CJK UNIFIED IDEOGRAPH - 0xF3B3: 0x87EA, //CJK UNIFIED IDEOGRAPH - 0xF3B4: 0x87E0, //CJK UNIFIED IDEOGRAPH - 0xF3B5: 0x87EE, //CJK UNIFIED IDEOGRAPH - 0xF3B6: 0x8816, //CJK UNIFIED IDEOGRAPH - 0xF3B7: 0x8813, //CJK UNIFIED IDEOGRAPH - 0xF3B8: 0x87FE, //CJK UNIFIED IDEOGRAPH - 0xF3B9: 0x880A, //CJK UNIFIED IDEOGRAPH - 0xF3BA: 0x881B, //CJK UNIFIED IDEOGRAPH - 0xF3BB: 0x8821, //CJK UNIFIED IDEOGRAPH - 0xF3BC: 0x8839, //CJK UNIFIED IDEOGRAPH - 0xF3BD: 0x883C, //CJK UNIFIED IDEOGRAPH - 0xF3BE: 0x7F36, //CJK UNIFIED IDEOGRAPH - 0xF3BF: 0x7F42, //CJK UNIFIED IDEOGRAPH - 0xF3C0: 0x7F44, //CJK UNIFIED IDEOGRAPH - 0xF3C1: 0x7F45, //CJK UNIFIED IDEOGRAPH - 0xF3C2: 0x8210, //CJK UNIFIED IDEOGRAPH - 0xF3C3: 0x7AFA, //CJK UNIFIED IDEOGRAPH - 0xF3C4: 0x7AFD, //CJK UNIFIED IDEOGRAPH - 0xF3C5: 0x7B08, //CJK UNIFIED IDEOGRAPH - 0xF3C6: 0x7B03, //CJK UNIFIED IDEOGRAPH - 0xF3C7: 0x7B04, //CJK UNIFIED IDEOGRAPH - 0xF3C8: 0x7B15, //CJK UNIFIED IDEOGRAPH - 0xF3C9: 0x7B0A, //CJK UNIFIED IDEOGRAPH - 0xF3CA: 0x7B2B, //CJK UNIFIED IDEOGRAPH - 0xF3CB: 0x7B0F, //CJK UNIFIED IDEOGRAPH - 0xF3CC: 0x7B47, //CJK UNIFIED IDEOGRAPH - 0xF3CD: 0x7B38, //CJK UNIFIED IDEOGRAPH - 0xF3CE: 0x7B2A, //CJK UNIFIED IDEOGRAPH - 0xF3CF: 0x7B19, //CJK UNIFIED IDEOGRAPH - 0xF3D0: 0x7B2E, //CJK UNIFIED IDEOGRAPH - 0xF3D1: 0x7B31, //CJK UNIFIED IDEOGRAPH - 0xF3D2: 0x7B20, //CJK UNIFIED IDEOGRAPH - 0xF3D3: 0x7B25, //CJK UNIFIED IDEOGRAPH - 0xF3D4: 0x7B24, //CJK UNIFIED IDEOGRAPH - 0xF3D5: 0x7B33, //CJK UNIFIED IDEOGRAPH - 0xF3D6: 0x7B3E, //CJK UNIFIED IDEOGRAPH - 0xF3D7: 0x7B1E, //CJK UNIFIED IDEOGRAPH - 0xF3D8: 0x7B58, //CJK UNIFIED IDEOGRAPH - 0xF3D9: 0x7B5A, //CJK UNIFIED IDEOGRAPH - 0xF3DA: 0x7B45, //CJK UNIFIED IDEOGRAPH - 0xF3DB: 0x7B75, //CJK UNIFIED IDEOGRAPH - 0xF3DC: 0x7B4C, //CJK UNIFIED IDEOGRAPH - 0xF3DD: 0x7B5D, //CJK UNIFIED IDEOGRAPH - 0xF3DE: 0x7B60, //CJK UNIFIED IDEOGRAPH - 0xF3DF: 0x7B6E, //CJK UNIFIED IDEOGRAPH - 0xF3E0: 0x7B7B, //CJK UNIFIED IDEOGRAPH - 0xF3E1: 0x7B62, //CJK UNIFIED IDEOGRAPH - 0xF3E2: 0x7B72, //CJK UNIFIED IDEOGRAPH - 0xF3E3: 0x7B71, //CJK UNIFIED IDEOGRAPH - 0xF3E4: 0x7B90, //CJK UNIFIED IDEOGRAPH - 0xF3E5: 0x7BA6, //CJK UNIFIED IDEOGRAPH - 0xF3E6: 0x7BA7, //CJK UNIFIED IDEOGRAPH - 0xF3E7: 0x7BB8, //CJK UNIFIED IDEOGRAPH - 0xF3E8: 0x7BAC, //CJK UNIFIED IDEOGRAPH - 0xF3E9: 0x7B9D, //CJK UNIFIED IDEOGRAPH - 0xF3EA: 0x7BA8, //CJK UNIFIED IDEOGRAPH - 0xF3EB: 0x7B85, //CJK UNIFIED IDEOGRAPH - 0xF3EC: 0x7BAA, //CJK UNIFIED IDEOGRAPH - 0xF3ED: 0x7B9C, //CJK UNIFIED IDEOGRAPH - 0xF3EE: 0x7BA2, //CJK UNIFIED IDEOGRAPH - 0xF3EF: 0x7BAB, //CJK UNIFIED IDEOGRAPH - 0xF3F0: 0x7BB4, //CJK UNIFIED IDEOGRAPH - 0xF3F1: 0x7BD1, //CJK UNIFIED IDEOGRAPH - 0xF3F2: 0x7BC1, //CJK UNIFIED IDEOGRAPH - 0xF3F3: 0x7BCC, //CJK UNIFIED IDEOGRAPH - 0xF3F4: 0x7BDD, //CJK UNIFIED IDEOGRAPH - 0xF3F5: 0x7BDA, //CJK UNIFIED IDEOGRAPH - 0xF3F6: 0x7BE5, //CJK UNIFIED IDEOGRAPH - 0xF3F7: 0x7BE6, //CJK UNIFIED IDEOGRAPH - 0xF3F8: 0x7BEA, //CJK UNIFIED IDEOGRAPH - 0xF3F9: 0x7C0C, //CJK UNIFIED IDEOGRAPH - 0xF3FA: 0x7BFE, //CJK UNIFIED IDEOGRAPH - 0xF3FB: 0x7BFC, //CJK UNIFIED IDEOGRAPH - 0xF3FC: 0x7C0F, //CJK UNIFIED IDEOGRAPH - 0xF3FD: 0x7C16, //CJK UNIFIED IDEOGRAPH - 0xF3FE: 0x7C0B, //CJK UNIFIED IDEOGRAPH - 0xF440: 0x9B07, //CJK UNIFIED IDEOGRAPH - 0xF441: 0x9B09, //CJK UNIFIED IDEOGRAPH - 0xF442: 0x9B0A, //CJK UNIFIED IDEOGRAPH - 0xF443: 0x9B0B, //CJK UNIFIED IDEOGRAPH - 0xF444: 0x9B0C, //CJK UNIFIED IDEOGRAPH - 0xF445: 0x9B0D, //CJK UNIFIED IDEOGRAPH - 0xF446: 0x9B0E, //CJK UNIFIED IDEOGRAPH - 0xF447: 0x9B10, //CJK UNIFIED IDEOGRAPH - 0xF448: 0x9B11, //CJK UNIFIED IDEOGRAPH - 0xF449: 0x9B12, //CJK UNIFIED IDEOGRAPH - 0xF44A: 0x9B14, //CJK UNIFIED IDEOGRAPH - 0xF44B: 0x9B15, //CJK UNIFIED IDEOGRAPH - 0xF44C: 0x9B16, //CJK UNIFIED IDEOGRAPH - 0xF44D: 0x9B17, //CJK UNIFIED IDEOGRAPH - 0xF44E: 0x9B18, //CJK UNIFIED IDEOGRAPH - 0xF44F: 0x9B19, //CJK UNIFIED IDEOGRAPH - 0xF450: 0x9B1A, //CJK UNIFIED IDEOGRAPH - 0xF451: 0x9B1B, //CJK UNIFIED IDEOGRAPH - 0xF452: 0x9B1C, //CJK UNIFIED IDEOGRAPH - 0xF453: 0x9B1D, //CJK UNIFIED IDEOGRAPH - 0xF454: 0x9B1E, //CJK UNIFIED IDEOGRAPH - 0xF455: 0x9B20, //CJK UNIFIED IDEOGRAPH - 0xF456: 0x9B21, //CJK UNIFIED IDEOGRAPH - 0xF457: 0x9B22, //CJK UNIFIED IDEOGRAPH - 0xF458: 0x9B24, //CJK UNIFIED IDEOGRAPH - 0xF459: 0x9B25, //CJK UNIFIED IDEOGRAPH - 0xF45A: 0x9B26, //CJK UNIFIED IDEOGRAPH - 0xF45B: 0x9B27, //CJK UNIFIED IDEOGRAPH - 0xF45C: 0x9B28, //CJK UNIFIED IDEOGRAPH - 0xF45D: 0x9B29, //CJK UNIFIED IDEOGRAPH - 0xF45E: 0x9B2A, //CJK UNIFIED IDEOGRAPH - 0xF45F: 0x9B2B, //CJK UNIFIED IDEOGRAPH - 0xF460: 0x9B2C, //CJK UNIFIED IDEOGRAPH - 0xF461: 0x9B2D, //CJK UNIFIED IDEOGRAPH - 0xF462: 0x9B2E, //CJK UNIFIED IDEOGRAPH - 0xF463: 0x9B30, //CJK UNIFIED IDEOGRAPH - 0xF464: 0x9B31, //CJK UNIFIED IDEOGRAPH - 0xF465: 0x9B33, //CJK UNIFIED IDEOGRAPH - 0xF466: 0x9B34, //CJK UNIFIED IDEOGRAPH - 0xF467: 0x9B35, //CJK UNIFIED IDEOGRAPH - 0xF468: 0x9B36, //CJK UNIFIED IDEOGRAPH - 0xF469: 0x9B37, //CJK UNIFIED IDEOGRAPH - 0xF46A: 0x9B38, //CJK UNIFIED IDEOGRAPH - 0xF46B: 0x9B39, //CJK UNIFIED IDEOGRAPH - 0xF46C: 0x9B3A, //CJK UNIFIED IDEOGRAPH - 0xF46D: 0x9B3D, //CJK UNIFIED IDEOGRAPH - 0xF46E: 0x9B3E, //CJK UNIFIED IDEOGRAPH - 0xF46F: 0x9B3F, //CJK UNIFIED IDEOGRAPH - 0xF470: 0x9B40, //CJK UNIFIED IDEOGRAPH - 0xF471: 0x9B46, //CJK UNIFIED IDEOGRAPH - 0xF472: 0x9B4A, //CJK UNIFIED IDEOGRAPH - 0xF473: 0x9B4B, //CJK UNIFIED IDEOGRAPH - 0xF474: 0x9B4C, //CJK UNIFIED IDEOGRAPH - 0xF475: 0x9B4E, //CJK UNIFIED IDEOGRAPH - 0xF476: 0x9B50, //CJK UNIFIED IDEOGRAPH - 0xF477: 0x9B52, //CJK UNIFIED IDEOGRAPH - 0xF478: 0x9B53, //CJK UNIFIED IDEOGRAPH - 0xF479: 0x9B55, //CJK UNIFIED IDEOGRAPH - 0xF47A: 0x9B56, //CJK UNIFIED IDEOGRAPH - 0xF47B: 0x9B57, //CJK UNIFIED IDEOGRAPH - 0xF47C: 0x9B58, //CJK UNIFIED IDEOGRAPH - 0xF47D: 0x9B59, //CJK UNIFIED IDEOGRAPH - 0xF47E: 0x9B5A, //CJK UNIFIED IDEOGRAPH - 0xF480: 0x9B5B, //CJK UNIFIED IDEOGRAPH - 0xF481: 0x9B5C, //CJK UNIFIED IDEOGRAPH - 0xF482: 0x9B5D, //CJK UNIFIED IDEOGRAPH - 0xF483: 0x9B5E, //CJK UNIFIED IDEOGRAPH - 0xF484: 0x9B5F, //CJK UNIFIED IDEOGRAPH - 0xF485: 0x9B60, //CJK UNIFIED IDEOGRAPH - 0xF486: 0x9B61, //CJK UNIFIED IDEOGRAPH - 0xF487: 0x9B62, //CJK UNIFIED IDEOGRAPH - 0xF488: 0x9B63, //CJK UNIFIED IDEOGRAPH - 0xF489: 0x9B64, //CJK UNIFIED IDEOGRAPH - 0xF48A: 0x9B65, //CJK UNIFIED IDEOGRAPH - 0xF48B: 0x9B66, //CJK UNIFIED IDEOGRAPH - 0xF48C: 0x9B67, //CJK UNIFIED IDEOGRAPH - 0xF48D: 0x9B68, //CJK UNIFIED IDEOGRAPH - 0xF48E: 0x9B69, //CJK UNIFIED IDEOGRAPH - 0xF48F: 0x9B6A, //CJK UNIFIED IDEOGRAPH - 0xF490: 0x9B6B, //CJK UNIFIED IDEOGRAPH - 0xF491: 0x9B6C, //CJK UNIFIED IDEOGRAPH - 0xF492: 0x9B6D, //CJK UNIFIED IDEOGRAPH - 0xF493: 0x9B6E, //CJK UNIFIED IDEOGRAPH - 0xF494: 0x9B6F, //CJK UNIFIED IDEOGRAPH - 0xF495: 0x9B70, //CJK UNIFIED IDEOGRAPH - 0xF496: 0x9B71, //CJK UNIFIED IDEOGRAPH - 0xF497: 0x9B72, //CJK UNIFIED IDEOGRAPH - 0xF498: 0x9B73, //CJK UNIFIED IDEOGRAPH - 0xF499: 0x9B74, //CJK UNIFIED IDEOGRAPH - 0xF49A: 0x9B75, //CJK UNIFIED IDEOGRAPH - 0xF49B: 0x9B76, //CJK UNIFIED IDEOGRAPH - 0xF49C: 0x9B77, //CJK UNIFIED IDEOGRAPH - 0xF49D: 0x9B78, //CJK UNIFIED IDEOGRAPH - 0xF49E: 0x9B79, //CJK UNIFIED IDEOGRAPH - 0xF49F: 0x9B7A, //CJK UNIFIED IDEOGRAPH - 0xF4A0: 0x9B7B, //CJK UNIFIED IDEOGRAPH - 0xF4A1: 0x7C1F, //CJK UNIFIED IDEOGRAPH - 0xF4A2: 0x7C2A, //CJK UNIFIED IDEOGRAPH - 0xF4A3: 0x7C26, //CJK UNIFIED IDEOGRAPH - 0xF4A4: 0x7C38, //CJK UNIFIED IDEOGRAPH - 0xF4A5: 0x7C41, //CJK UNIFIED IDEOGRAPH - 0xF4A6: 0x7C40, //CJK UNIFIED IDEOGRAPH - 0xF4A7: 0x81FE, //CJK UNIFIED IDEOGRAPH - 0xF4A8: 0x8201, //CJK UNIFIED IDEOGRAPH - 0xF4A9: 0x8202, //CJK UNIFIED IDEOGRAPH - 0xF4AA: 0x8204, //CJK UNIFIED IDEOGRAPH - 0xF4AB: 0x81EC, //CJK UNIFIED IDEOGRAPH - 0xF4AC: 0x8844, //CJK UNIFIED IDEOGRAPH - 0xF4AD: 0x8221, //CJK UNIFIED IDEOGRAPH - 0xF4AE: 0x8222, //CJK UNIFIED IDEOGRAPH - 0xF4AF: 0x8223, //CJK UNIFIED IDEOGRAPH - 0xF4B0: 0x822D, //CJK UNIFIED IDEOGRAPH - 0xF4B1: 0x822F, //CJK UNIFIED IDEOGRAPH - 0xF4B2: 0x8228, //CJK UNIFIED IDEOGRAPH - 0xF4B3: 0x822B, //CJK UNIFIED IDEOGRAPH - 0xF4B4: 0x8238, //CJK UNIFIED IDEOGRAPH - 0xF4B5: 0x823B, //CJK UNIFIED IDEOGRAPH - 0xF4B6: 0x8233, //CJK UNIFIED IDEOGRAPH - 0xF4B7: 0x8234, //CJK UNIFIED IDEOGRAPH - 0xF4B8: 0x823E, //CJK UNIFIED IDEOGRAPH - 0xF4B9: 0x8244, //CJK UNIFIED IDEOGRAPH - 0xF4BA: 0x8249, //CJK UNIFIED IDEOGRAPH - 0xF4BB: 0x824B, //CJK UNIFIED IDEOGRAPH - 0xF4BC: 0x824F, //CJK UNIFIED IDEOGRAPH - 0xF4BD: 0x825A, //CJK UNIFIED IDEOGRAPH - 0xF4BE: 0x825F, //CJK UNIFIED IDEOGRAPH - 0xF4BF: 0x8268, //CJK UNIFIED IDEOGRAPH - 0xF4C0: 0x887E, //CJK UNIFIED IDEOGRAPH - 0xF4C1: 0x8885, //CJK UNIFIED IDEOGRAPH - 0xF4C2: 0x8888, //CJK UNIFIED IDEOGRAPH - 0xF4C3: 0x88D8, //CJK UNIFIED IDEOGRAPH - 0xF4C4: 0x88DF, //CJK UNIFIED IDEOGRAPH - 0xF4C5: 0x895E, //CJK UNIFIED IDEOGRAPH - 0xF4C6: 0x7F9D, //CJK UNIFIED IDEOGRAPH - 0xF4C7: 0x7F9F, //CJK UNIFIED IDEOGRAPH - 0xF4C8: 0x7FA7, //CJK UNIFIED IDEOGRAPH - 0xF4C9: 0x7FAF, //CJK UNIFIED IDEOGRAPH - 0xF4CA: 0x7FB0, //CJK UNIFIED IDEOGRAPH - 0xF4CB: 0x7FB2, //CJK UNIFIED IDEOGRAPH - 0xF4CC: 0x7C7C, //CJK UNIFIED IDEOGRAPH - 0xF4CD: 0x6549, //CJK UNIFIED IDEOGRAPH - 0xF4CE: 0x7C91, //CJK UNIFIED IDEOGRAPH - 0xF4CF: 0x7C9D, //CJK UNIFIED IDEOGRAPH - 0xF4D0: 0x7C9C, //CJK UNIFIED IDEOGRAPH - 0xF4D1: 0x7C9E, //CJK UNIFIED IDEOGRAPH - 0xF4D2: 0x7CA2, //CJK UNIFIED IDEOGRAPH - 0xF4D3: 0x7CB2, //CJK UNIFIED IDEOGRAPH - 0xF4D4: 0x7CBC, //CJK UNIFIED IDEOGRAPH - 0xF4D5: 0x7CBD, //CJK UNIFIED IDEOGRAPH - 0xF4D6: 0x7CC1, //CJK UNIFIED IDEOGRAPH - 0xF4D7: 0x7CC7, //CJK UNIFIED IDEOGRAPH - 0xF4D8: 0x7CCC, //CJK UNIFIED IDEOGRAPH - 0xF4D9: 0x7CCD, //CJK UNIFIED IDEOGRAPH - 0xF4DA: 0x7CC8, //CJK UNIFIED IDEOGRAPH - 0xF4DB: 0x7CC5, //CJK UNIFIED IDEOGRAPH - 0xF4DC: 0x7CD7, //CJK UNIFIED IDEOGRAPH - 0xF4DD: 0x7CE8, //CJK UNIFIED IDEOGRAPH - 0xF4DE: 0x826E, //CJK UNIFIED IDEOGRAPH - 0xF4DF: 0x66A8, //CJK UNIFIED IDEOGRAPH - 0xF4E0: 0x7FBF, //CJK UNIFIED IDEOGRAPH - 0xF4E1: 0x7FCE, //CJK UNIFIED IDEOGRAPH - 0xF4E2: 0x7FD5, //CJK UNIFIED IDEOGRAPH - 0xF4E3: 0x7FE5, //CJK UNIFIED IDEOGRAPH - 0xF4E4: 0x7FE1, //CJK UNIFIED IDEOGRAPH - 0xF4E5: 0x7FE6, //CJK UNIFIED IDEOGRAPH - 0xF4E6: 0x7FE9, //CJK UNIFIED IDEOGRAPH - 0xF4E7: 0x7FEE, //CJK UNIFIED IDEOGRAPH - 0xF4E8: 0x7FF3, //CJK UNIFIED IDEOGRAPH - 0xF4E9: 0x7CF8, //CJK UNIFIED IDEOGRAPH - 0xF4EA: 0x7D77, //CJK UNIFIED IDEOGRAPH - 0xF4EB: 0x7DA6, //CJK UNIFIED IDEOGRAPH - 0xF4EC: 0x7DAE, //CJK UNIFIED IDEOGRAPH - 0xF4ED: 0x7E47, //CJK UNIFIED IDEOGRAPH - 0xF4EE: 0x7E9B, //CJK UNIFIED IDEOGRAPH - 0xF4EF: 0x9EB8, //CJK UNIFIED IDEOGRAPH - 0xF4F0: 0x9EB4, //CJK UNIFIED IDEOGRAPH - 0xF4F1: 0x8D73, //CJK UNIFIED IDEOGRAPH - 0xF4F2: 0x8D84, //CJK UNIFIED IDEOGRAPH - 0xF4F3: 0x8D94, //CJK UNIFIED IDEOGRAPH - 0xF4F4: 0x8D91, //CJK UNIFIED IDEOGRAPH - 0xF4F5: 0x8DB1, //CJK UNIFIED IDEOGRAPH - 0xF4F6: 0x8D67, //CJK UNIFIED IDEOGRAPH - 0xF4F7: 0x8D6D, //CJK UNIFIED IDEOGRAPH - 0xF4F8: 0x8C47, //CJK UNIFIED IDEOGRAPH - 0xF4F9: 0x8C49, //CJK UNIFIED IDEOGRAPH - 0xF4FA: 0x914A, //CJK UNIFIED IDEOGRAPH - 0xF4FB: 0x9150, //CJK UNIFIED IDEOGRAPH - 0xF4FC: 0x914E, //CJK UNIFIED IDEOGRAPH - 0xF4FD: 0x914F, //CJK UNIFIED IDEOGRAPH - 0xF4FE: 0x9164, //CJK UNIFIED IDEOGRAPH - 0xF540: 0x9B7C, //CJK UNIFIED IDEOGRAPH - 0xF541: 0x9B7D, //CJK UNIFIED IDEOGRAPH - 0xF542: 0x9B7E, //CJK UNIFIED IDEOGRAPH - 0xF543: 0x9B7F, //CJK UNIFIED IDEOGRAPH - 0xF544: 0x9B80, //CJK UNIFIED IDEOGRAPH - 0xF545: 0x9B81, //CJK UNIFIED IDEOGRAPH - 0xF546: 0x9B82, //CJK UNIFIED IDEOGRAPH - 0xF547: 0x9B83, //CJK UNIFIED IDEOGRAPH - 0xF548: 0x9B84, //CJK UNIFIED IDEOGRAPH - 0xF549: 0x9B85, //CJK UNIFIED IDEOGRAPH - 0xF54A: 0x9B86, //CJK UNIFIED IDEOGRAPH - 0xF54B: 0x9B87, //CJK UNIFIED IDEOGRAPH - 0xF54C: 0x9B88, //CJK UNIFIED IDEOGRAPH - 0xF54D: 0x9B89, //CJK UNIFIED IDEOGRAPH - 0xF54E: 0x9B8A, //CJK UNIFIED IDEOGRAPH - 0xF54F: 0x9B8B, //CJK UNIFIED IDEOGRAPH - 0xF550: 0x9B8C, //CJK UNIFIED IDEOGRAPH - 0xF551: 0x9B8D, //CJK UNIFIED IDEOGRAPH - 0xF552: 0x9B8E, //CJK UNIFIED IDEOGRAPH - 0xF553: 0x9B8F, //CJK UNIFIED IDEOGRAPH - 0xF554: 0x9B90, //CJK UNIFIED IDEOGRAPH - 0xF555: 0x9B91, //CJK UNIFIED IDEOGRAPH - 0xF556: 0x9B92, //CJK UNIFIED IDEOGRAPH - 0xF557: 0x9B93, //CJK UNIFIED IDEOGRAPH - 0xF558: 0x9B94, //CJK UNIFIED IDEOGRAPH - 0xF559: 0x9B95, //CJK UNIFIED IDEOGRAPH - 0xF55A: 0x9B96, //CJK UNIFIED IDEOGRAPH - 0xF55B: 0x9B97, //CJK UNIFIED IDEOGRAPH - 0xF55C: 0x9B98, //CJK UNIFIED IDEOGRAPH - 0xF55D: 0x9B99, //CJK UNIFIED IDEOGRAPH - 0xF55E: 0x9B9A, //CJK UNIFIED IDEOGRAPH - 0xF55F: 0x9B9B, //CJK UNIFIED IDEOGRAPH - 0xF560: 0x9B9C, //CJK UNIFIED IDEOGRAPH - 0xF561: 0x9B9D, //CJK UNIFIED IDEOGRAPH - 0xF562: 0x9B9E, //CJK UNIFIED IDEOGRAPH - 0xF563: 0x9B9F, //CJK UNIFIED IDEOGRAPH - 0xF564: 0x9BA0, //CJK UNIFIED IDEOGRAPH - 0xF565: 0x9BA1, //CJK UNIFIED IDEOGRAPH - 0xF566: 0x9BA2, //CJK UNIFIED IDEOGRAPH - 0xF567: 0x9BA3, //CJK UNIFIED IDEOGRAPH - 0xF568: 0x9BA4, //CJK UNIFIED IDEOGRAPH - 0xF569: 0x9BA5, //CJK UNIFIED IDEOGRAPH - 0xF56A: 0x9BA6, //CJK UNIFIED IDEOGRAPH - 0xF56B: 0x9BA7, //CJK UNIFIED IDEOGRAPH - 0xF56C: 0x9BA8, //CJK UNIFIED IDEOGRAPH - 0xF56D: 0x9BA9, //CJK UNIFIED IDEOGRAPH - 0xF56E: 0x9BAA, //CJK UNIFIED IDEOGRAPH - 0xF56F: 0x9BAB, //CJK UNIFIED IDEOGRAPH - 0xF570: 0x9BAC, //CJK UNIFIED IDEOGRAPH - 0xF571: 0x9BAD, //CJK UNIFIED IDEOGRAPH - 0xF572: 0x9BAE, //CJK UNIFIED IDEOGRAPH - 0xF573: 0x9BAF, //CJK UNIFIED IDEOGRAPH - 0xF574: 0x9BB0, //CJK UNIFIED IDEOGRAPH - 0xF575: 0x9BB1, //CJK UNIFIED IDEOGRAPH - 0xF576: 0x9BB2, //CJK UNIFIED IDEOGRAPH - 0xF577: 0x9BB3, //CJK UNIFIED IDEOGRAPH - 0xF578: 0x9BB4, //CJK UNIFIED IDEOGRAPH - 0xF579: 0x9BB5, //CJK UNIFIED IDEOGRAPH - 0xF57A: 0x9BB6, //CJK UNIFIED IDEOGRAPH - 0xF57B: 0x9BB7, //CJK UNIFIED IDEOGRAPH - 0xF57C: 0x9BB8, //CJK UNIFIED IDEOGRAPH - 0xF57D: 0x9BB9, //CJK UNIFIED IDEOGRAPH - 0xF57E: 0x9BBA, //CJK UNIFIED IDEOGRAPH - 0xF580: 0x9BBB, //CJK UNIFIED IDEOGRAPH - 0xF581: 0x9BBC, //CJK UNIFIED IDEOGRAPH - 0xF582: 0x9BBD, //CJK UNIFIED IDEOGRAPH - 0xF583: 0x9BBE, //CJK UNIFIED IDEOGRAPH - 0xF584: 0x9BBF, //CJK UNIFIED IDEOGRAPH - 0xF585: 0x9BC0, //CJK UNIFIED IDEOGRAPH - 0xF586: 0x9BC1, //CJK UNIFIED IDEOGRAPH - 0xF587: 0x9BC2, //CJK UNIFIED IDEOGRAPH - 0xF588: 0x9BC3, //CJK UNIFIED IDEOGRAPH - 0xF589: 0x9BC4, //CJK UNIFIED IDEOGRAPH - 0xF58A: 0x9BC5, //CJK UNIFIED IDEOGRAPH - 0xF58B: 0x9BC6, //CJK UNIFIED IDEOGRAPH - 0xF58C: 0x9BC7, //CJK UNIFIED IDEOGRAPH - 0xF58D: 0x9BC8, //CJK UNIFIED IDEOGRAPH - 0xF58E: 0x9BC9, //CJK UNIFIED IDEOGRAPH - 0xF58F: 0x9BCA, //CJK UNIFIED IDEOGRAPH - 0xF590: 0x9BCB, //CJK UNIFIED IDEOGRAPH - 0xF591: 0x9BCC, //CJK UNIFIED IDEOGRAPH - 0xF592: 0x9BCD, //CJK UNIFIED IDEOGRAPH - 0xF593: 0x9BCE, //CJK UNIFIED IDEOGRAPH - 0xF594: 0x9BCF, //CJK UNIFIED IDEOGRAPH - 0xF595: 0x9BD0, //CJK UNIFIED IDEOGRAPH - 0xF596: 0x9BD1, //CJK UNIFIED IDEOGRAPH - 0xF597: 0x9BD2, //CJK UNIFIED IDEOGRAPH - 0xF598: 0x9BD3, //CJK UNIFIED IDEOGRAPH - 0xF599: 0x9BD4, //CJK UNIFIED IDEOGRAPH - 0xF59A: 0x9BD5, //CJK UNIFIED IDEOGRAPH - 0xF59B: 0x9BD6, //CJK UNIFIED IDEOGRAPH - 0xF59C: 0x9BD7, //CJK UNIFIED IDEOGRAPH - 0xF59D: 0x9BD8, //CJK UNIFIED IDEOGRAPH - 0xF59E: 0x9BD9, //CJK UNIFIED IDEOGRAPH - 0xF59F: 0x9BDA, //CJK UNIFIED IDEOGRAPH - 0xF5A0: 0x9BDB, //CJK UNIFIED IDEOGRAPH - 0xF5A1: 0x9162, //CJK UNIFIED IDEOGRAPH - 0xF5A2: 0x9161, //CJK UNIFIED IDEOGRAPH - 0xF5A3: 0x9170, //CJK UNIFIED IDEOGRAPH - 0xF5A4: 0x9169, //CJK UNIFIED IDEOGRAPH - 0xF5A5: 0x916F, //CJK UNIFIED IDEOGRAPH - 0xF5A6: 0x917D, //CJK UNIFIED IDEOGRAPH - 0xF5A7: 0x917E, //CJK UNIFIED IDEOGRAPH - 0xF5A8: 0x9172, //CJK UNIFIED IDEOGRAPH - 0xF5A9: 0x9174, //CJK UNIFIED IDEOGRAPH - 0xF5AA: 0x9179, //CJK UNIFIED IDEOGRAPH - 0xF5AB: 0x918C, //CJK UNIFIED IDEOGRAPH - 0xF5AC: 0x9185, //CJK UNIFIED IDEOGRAPH - 0xF5AD: 0x9190, //CJK UNIFIED IDEOGRAPH - 0xF5AE: 0x918D, //CJK UNIFIED IDEOGRAPH - 0xF5AF: 0x9191, //CJK UNIFIED IDEOGRAPH - 0xF5B0: 0x91A2, //CJK UNIFIED IDEOGRAPH - 0xF5B1: 0x91A3, //CJK UNIFIED IDEOGRAPH - 0xF5B2: 0x91AA, //CJK UNIFIED IDEOGRAPH - 0xF5B3: 0x91AD, //CJK UNIFIED IDEOGRAPH - 0xF5B4: 0x91AE, //CJK UNIFIED IDEOGRAPH - 0xF5B5: 0x91AF, //CJK UNIFIED IDEOGRAPH - 0xF5B6: 0x91B5, //CJK UNIFIED IDEOGRAPH - 0xF5B7: 0x91B4, //CJK UNIFIED IDEOGRAPH - 0xF5B8: 0x91BA, //CJK UNIFIED IDEOGRAPH - 0xF5B9: 0x8C55, //CJK UNIFIED IDEOGRAPH - 0xF5BA: 0x9E7E, //CJK UNIFIED IDEOGRAPH - 0xF5BB: 0x8DB8, //CJK UNIFIED IDEOGRAPH - 0xF5BC: 0x8DEB, //CJK UNIFIED IDEOGRAPH - 0xF5BD: 0x8E05, //CJK UNIFIED IDEOGRAPH - 0xF5BE: 0x8E59, //CJK UNIFIED IDEOGRAPH - 0xF5BF: 0x8E69, //CJK UNIFIED IDEOGRAPH - 0xF5C0: 0x8DB5, //CJK UNIFIED IDEOGRAPH - 0xF5C1: 0x8DBF, //CJK UNIFIED IDEOGRAPH - 0xF5C2: 0x8DBC, //CJK UNIFIED IDEOGRAPH - 0xF5C3: 0x8DBA, //CJK UNIFIED IDEOGRAPH - 0xF5C4: 0x8DC4, //CJK UNIFIED IDEOGRAPH - 0xF5C5: 0x8DD6, //CJK UNIFIED IDEOGRAPH - 0xF5C6: 0x8DD7, //CJK UNIFIED IDEOGRAPH - 0xF5C7: 0x8DDA, //CJK UNIFIED IDEOGRAPH - 0xF5C8: 0x8DDE, //CJK UNIFIED IDEOGRAPH - 0xF5C9: 0x8DCE, //CJK UNIFIED IDEOGRAPH - 0xF5CA: 0x8DCF, //CJK UNIFIED IDEOGRAPH - 0xF5CB: 0x8DDB, //CJK UNIFIED IDEOGRAPH - 0xF5CC: 0x8DC6, //CJK UNIFIED IDEOGRAPH - 0xF5CD: 0x8DEC, //CJK UNIFIED IDEOGRAPH - 0xF5CE: 0x8DF7, //CJK UNIFIED IDEOGRAPH - 0xF5CF: 0x8DF8, //CJK UNIFIED IDEOGRAPH - 0xF5D0: 0x8DE3, //CJK UNIFIED IDEOGRAPH - 0xF5D1: 0x8DF9, //CJK UNIFIED IDEOGRAPH - 0xF5D2: 0x8DFB, //CJK UNIFIED IDEOGRAPH - 0xF5D3: 0x8DE4, //CJK UNIFIED IDEOGRAPH - 0xF5D4: 0x8E09, //CJK UNIFIED IDEOGRAPH - 0xF5D5: 0x8DFD, //CJK UNIFIED IDEOGRAPH - 0xF5D6: 0x8E14, //CJK UNIFIED IDEOGRAPH - 0xF5D7: 0x8E1D, //CJK UNIFIED IDEOGRAPH - 0xF5D8: 0x8E1F, //CJK UNIFIED IDEOGRAPH - 0xF5D9: 0x8E2C, //CJK UNIFIED IDEOGRAPH - 0xF5DA: 0x8E2E, //CJK UNIFIED IDEOGRAPH - 0xF5DB: 0x8E23, //CJK UNIFIED IDEOGRAPH - 0xF5DC: 0x8E2F, //CJK UNIFIED IDEOGRAPH - 0xF5DD: 0x8E3A, //CJK UNIFIED IDEOGRAPH - 0xF5DE: 0x8E40, //CJK UNIFIED IDEOGRAPH - 0xF5DF: 0x8E39, //CJK UNIFIED IDEOGRAPH - 0xF5E0: 0x8E35, //CJK UNIFIED IDEOGRAPH - 0xF5E1: 0x8E3D, //CJK UNIFIED IDEOGRAPH - 0xF5E2: 0x8E31, //CJK UNIFIED IDEOGRAPH - 0xF5E3: 0x8E49, //CJK UNIFIED IDEOGRAPH - 0xF5E4: 0x8E41, //CJK UNIFIED IDEOGRAPH - 0xF5E5: 0x8E42, //CJK UNIFIED IDEOGRAPH - 0xF5E6: 0x8E51, //CJK UNIFIED IDEOGRAPH - 0xF5E7: 0x8E52, //CJK UNIFIED IDEOGRAPH - 0xF5E8: 0x8E4A, //CJK UNIFIED IDEOGRAPH - 0xF5E9: 0x8E70, //CJK UNIFIED IDEOGRAPH - 0xF5EA: 0x8E76, //CJK UNIFIED IDEOGRAPH - 0xF5EB: 0x8E7C, //CJK UNIFIED IDEOGRAPH - 0xF5EC: 0x8E6F, //CJK UNIFIED IDEOGRAPH - 0xF5ED: 0x8E74, //CJK UNIFIED IDEOGRAPH - 0xF5EE: 0x8E85, //CJK UNIFIED IDEOGRAPH - 0xF5EF: 0x8E8F, //CJK UNIFIED IDEOGRAPH - 0xF5F0: 0x8E94, //CJK UNIFIED IDEOGRAPH - 0xF5F1: 0x8E90, //CJK UNIFIED IDEOGRAPH - 0xF5F2: 0x8E9C, //CJK UNIFIED IDEOGRAPH - 0xF5F3: 0x8E9E, //CJK UNIFIED IDEOGRAPH - 0xF5F4: 0x8C78, //CJK UNIFIED IDEOGRAPH - 0xF5F5: 0x8C82, //CJK UNIFIED IDEOGRAPH - 0xF5F6: 0x8C8A, //CJK UNIFIED IDEOGRAPH - 0xF5F7: 0x8C85, //CJK UNIFIED IDEOGRAPH - 0xF5F8: 0x8C98, //CJK UNIFIED IDEOGRAPH - 0xF5F9: 0x8C94, //CJK UNIFIED IDEOGRAPH - 0xF5FA: 0x659B, //CJK UNIFIED IDEOGRAPH - 0xF5FB: 0x89D6, //CJK UNIFIED IDEOGRAPH - 0xF5FC: 0x89DE, //CJK UNIFIED IDEOGRAPH - 0xF5FD: 0x89DA, //CJK UNIFIED IDEOGRAPH - 0xF5FE: 0x89DC, //CJK UNIFIED IDEOGRAPH - 0xF640: 0x9BDC, //CJK UNIFIED IDEOGRAPH - 0xF641: 0x9BDD, //CJK UNIFIED IDEOGRAPH - 0xF642: 0x9BDE, //CJK UNIFIED IDEOGRAPH - 0xF643: 0x9BDF, //CJK UNIFIED IDEOGRAPH - 0xF644: 0x9BE0, //CJK UNIFIED IDEOGRAPH - 0xF645: 0x9BE1, //CJK UNIFIED IDEOGRAPH - 0xF646: 0x9BE2, //CJK UNIFIED IDEOGRAPH - 0xF647: 0x9BE3, //CJK UNIFIED IDEOGRAPH - 0xF648: 0x9BE4, //CJK UNIFIED IDEOGRAPH - 0xF649: 0x9BE5, //CJK UNIFIED IDEOGRAPH - 0xF64A: 0x9BE6, //CJK UNIFIED IDEOGRAPH - 0xF64B: 0x9BE7, //CJK UNIFIED IDEOGRAPH - 0xF64C: 0x9BE8, //CJK UNIFIED IDEOGRAPH - 0xF64D: 0x9BE9, //CJK UNIFIED IDEOGRAPH - 0xF64E: 0x9BEA, //CJK UNIFIED IDEOGRAPH - 0xF64F: 0x9BEB, //CJK UNIFIED IDEOGRAPH - 0xF650: 0x9BEC, //CJK UNIFIED IDEOGRAPH - 0xF651: 0x9BED, //CJK UNIFIED IDEOGRAPH - 0xF652: 0x9BEE, //CJK UNIFIED IDEOGRAPH - 0xF653: 0x9BEF, //CJK UNIFIED IDEOGRAPH - 0xF654: 0x9BF0, //CJK UNIFIED IDEOGRAPH - 0xF655: 0x9BF1, //CJK UNIFIED IDEOGRAPH - 0xF656: 0x9BF2, //CJK UNIFIED IDEOGRAPH - 0xF657: 0x9BF3, //CJK UNIFIED IDEOGRAPH - 0xF658: 0x9BF4, //CJK UNIFIED IDEOGRAPH - 0xF659: 0x9BF5, //CJK UNIFIED IDEOGRAPH - 0xF65A: 0x9BF6, //CJK UNIFIED IDEOGRAPH - 0xF65B: 0x9BF7, //CJK UNIFIED IDEOGRAPH - 0xF65C: 0x9BF8, //CJK UNIFIED IDEOGRAPH - 0xF65D: 0x9BF9, //CJK UNIFIED IDEOGRAPH - 0xF65E: 0x9BFA, //CJK UNIFIED IDEOGRAPH - 0xF65F: 0x9BFB, //CJK UNIFIED IDEOGRAPH - 0xF660: 0x9BFC, //CJK UNIFIED IDEOGRAPH - 0xF661: 0x9BFD, //CJK UNIFIED IDEOGRAPH - 0xF662: 0x9BFE, //CJK UNIFIED IDEOGRAPH - 0xF663: 0x9BFF, //CJK UNIFIED IDEOGRAPH - 0xF664: 0x9C00, //CJK UNIFIED IDEOGRAPH - 0xF665: 0x9C01, //CJK UNIFIED IDEOGRAPH - 0xF666: 0x9C02, //CJK UNIFIED IDEOGRAPH - 0xF667: 0x9C03, //CJK UNIFIED IDEOGRAPH - 0xF668: 0x9C04, //CJK UNIFIED IDEOGRAPH - 0xF669: 0x9C05, //CJK UNIFIED IDEOGRAPH - 0xF66A: 0x9C06, //CJK UNIFIED IDEOGRAPH - 0xF66B: 0x9C07, //CJK UNIFIED IDEOGRAPH - 0xF66C: 0x9C08, //CJK UNIFIED IDEOGRAPH - 0xF66D: 0x9C09, //CJK UNIFIED IDEOGRAPH - 0xF66E: 0x9C0A, //CJK UNIFIED IDEOGRAPH - 0xF66F: 0x9C0B, //CJK UNIFIED IDEOGRAPH - 0xF670: 0x9C0C, //CJK UNIFIED IDEOGRAPH - 0xF671: 0x9C0D, //CJK UNIFIED IDEOGRAPH - 0xF672: 0x9C0E, //CJK UNIFIED IDEOGRAPH - 0xF673: 0x9C0F, //CJK UNIFIED IDEOGRAPH - 0xF674: 0x9C10, //CJK UNIFIED IDEOGRAPH - 0xF675: 0x9C11, //CJK UNIFIED IDEOGRAPH - 0xF676: 0x9C12, //CJK UNIFIED IDEOGRAPH - 0xF677: 0x9C13, //CJK UNIFIED IDEOGRAPH - 0xF678: 0x9C14, //CJK UNIFIED IDEOGRAPH - 0xF679: 0x9C15, //CJK UNIFIED IDEOGRAPH - 0xF67A: 0x9C16, //CJK UNIFIED IDEOGRAPH - 0xF67B: 0x9C17, //CJK UNIFIED IDEOGRAPH - 0xF67C: 0x9C18, //CJK UNIFIED IDEOGRAPH - 0xF67D: 0x9C19, //CJK UNIFIED IDEOGRAPH - 0xF67E: 0x9C1A, //CJK UNIFIED IDEOGRAPH - 0xF680: 0x9C1B, //CJK UNIFIED IDEOGRAPH - 0xF681: 0x9C1C, //CJK UNIFIED IDEOGRAPH - 0xF682: 0x9C1D, //CJK UNIFIED IDEOGRAPH - 0xF683: 0x9C1E, //CJK UNIFIED IDEOGRAPH - 0xF684: 0x9C1F, //CJK UNIFIED IDEOGRAPH - 0xF685: 0x9C20, //CJK UNIFIED IDEOGRAPH - 0xF686: 0x9C21, //CJK UNIFIED IDEOGRAPH - 0xF687: 0x9C22, //CJK UNIFIED IDEOGRAPH - 0xF688: 0x9C23, //CJK UNIFIED IDEOGRAPH - 0xF689: 0x9C24, //CJK UNIFIED IDEOGRAPH - 0xF68A: 0x9C25, //CJK UNIFIED IDEOGRAPH - 0xF68B: 0x9C26, //CJK UNIFIED IDEOGRAPH - 0xF68C: 0x9C27, //CJK UNIFIED IDEOGRAPH - 0xF68D: 0x9C28, //CJK UNIFIED IDEOGRAPH - 0xF68E: 0x9C29, //CJK UNIFIED IDEOGRAPH - 0xF68F: 0x9C2A, //CJK UNIFIED IDEOGRAPH - 0xF690: 0x9C2B, //CJK UNIFIED IDEOGRAPH - 0xF691: 0x9C2C, //CJK UNIFIED IDEOGRAPH - 0xF692: 0x9C2D, //CJK UNIFIED IDEOGRAPH - 0xF693: 0x9C2E, //CJK UNIFIED IDEOGRAPH - 0xF694: 0x9C2F, //CJK UNIFIED IDEOGRAPH - 0xF695: 0x9C30, //CJK UNIFIED IDEOGRAPH - 0xF696: 0x9C31, //CJK UNIFIED IDEOGRAPH - 0xF697: 0x9C32, //CJK UNIFIED IDEOGRAPH - 0xF698: 0x9C33, //CJK UNIFIED IDEOGRAPH - 0xF699: 0x9C34, //CJK UNIFIED IDEOGRAPH - 0xF69A: 0x9C35, //CJK UNIFIED IDEOGRAPH - 0xF69B: 0x9C36, //CJK UNIFIED IDEOGRAPH - 0xF69C: 0x9C37, //CJK UNIFIED IDEOGRAPH - 0xF69D: 0x9C38, //CJK UNIFIED IDEOGRAPH - 0xF69E: 0x9C39, //CJK UNIFIED IDEOGRAPH - 0xF69F: 0x9C3A, //CJK UNIFIED IDEOGRAPH - 0xF6A0: 0x9C3B, //CJK UNIFIED IDEOGRAPH - 0xF6A1: 0x89E5, //CJK UNIFIED IDEOGRAPH - 0xF6A2: 0x89EB, //CJK UNIFIED IDEOGRAPH - 0xF6A3: 0x89EF, //CJK UNIFIED IDEOGRAPH - 0xF6A4: 0x8A3E, //CJK UNIFIED IDEOGRAPH - 0xF6A5: 0x8B26, //CJK UNIFIED IDEOGRAPH - 0xF6A6: 0x9753, //CJK UNIFIED IDEOGRAPH - 0xF6A7: 0x96E9, //CJK UNIFIED IDEOGRAPH - 0xF6A8: 0x96F3, //CJK UNIFIED IDEOGRAPH - 0xF6A9: 0x96EF, //CJK UNIFIED IDEOGRAPH - 0xF6AA: 0x9706, //CJK UNIFIED IDEOGRAPH - 0xF6AB: 0x9701, //CJK UNIFIED IDEOGRAPH - 0xF6AC: 0x9708, //CJK UNIFIED IDEOGRAPH - 0xF6AD: 0x970F, //CJK UNIFIED IDEOGRAPH - 0xF6AE: 0x970E, //CJK UNIFIED IDEOGRAPH - 0xF6AF: 0x972A, //CJK UNIFIED IDEOGRAPH - 0xF6B0: 0x972D, //CJK UNIFIED IDEOGRAPH - 0xF6B1: 0x9730, //CJK UNIFIED IDEOGRAPH - 0xF6B2: 0x973E, //CJK UNIFIED IDEOGRAPH - 0xF6B3: 0x9F80, //CJK UNIFIED IDEOGRAPH - 0xF6B4: 0x9F83, //CJK UNIFIED IDEOGRAPH - 0xF6B5: 0x9F85, //CJK UNIFIED IDEOGRAPH - 0xF6B6: 0x9F86, //CJK UNIFIED IDEOGRAPH - 0xF6B7: 0x9F87, //CJK UNIFIED IDEOGRAPH - 0xF6B8: 0x9F88, //CJK UNIFIED IDEOGRAPH - 0xF6B9: 0x9F89, //CJK UNIFIED IDEOGRAPH - 0xF6BA: 0x9F8A, //CJK UNIFIED IDEOGRAPH - 0xF6BB: 0x9F8C, //CJK UNIFIED IDEOGRAPH - 0xF6BC: 0x9EFE, //CJK UNIFIED IDEOGRAPH - 0xF6BD: 0x9F0B, //CJK UNIFIED IDEOGRAPH - 0xF6BE: 0x9F0D, //CJK UNIFIED IDEOGRAPH - 0xF6BF: 0x96B9, //CJK UNIFIED IDEOGRAPH - 0xF6C0: 0x96BC, //CJK UNIFIED IDEOGRAPH - 0xF6C1: 0x96BD, //CJK UNIFIED IDEOGRAPH - 0xF6C2: 0x96CE, //CJK UNIFIED IDEOGRAPH - 0xF6C3: 0x96D2, //CJK UNIFIED IDEOGRAPH - 0xF6C4: 0x77BF, //CJK UNIFIED IDEOGRAPH - 0xF6C5: 0x96E0, //CJK UNIFIED IDEOGRAPH - 0xF6C6: 0x928E, //CJK UNIFIED IDEOGRAPH - 0xF6C7: 0x92AE, //CJK UNIFIED IDEOGRAPH - 0xF6C8: 0x92C8, //CJK UNIFIED IDEOGRAPH - 0xF6C9: 0x933E, //CJK UNIFIED IDEOGRAPH - 0xF6CA: 0x936A, //CJK UNIFIED IDEOGRAPH - 0xF6CB: 0x93CA, //CJK UNIFIED IDEOGRAPH - 0xF6CC: 0x938F, //CJK UNIFIED IDEOGRAPH - 0xF6CD: 0x943E, //CJK UNIFIED IDEOGRAPH - 0xF6CE: 0x946B, //CJK UNIFIED IDEOGRAPH - 0xF6CF: 0x9C7F, //CJK UNIFIED IDEOGRAPH - 0xF6D0: 0x9C82, //CJK UNIFIED IDEOGRAPH - 0xF6D1: 0x9C85, //CJK UNIFIED IDEOGRAPH - 0xF6D2: 0x9C86, //CJK UNIFIED IDEOGRAPH - 0xF6D3: 0x9C87, //CJK UNIFIED IDEOGRAPH - 0xF6D4: 0x9C88, //CJK UNIFIED IDEOGRAPH - 0xF6D5: 0x7A23, //CJK UNIFIED IDEOGRAPH - 0xF6D6: 0x9C8B, //CJK UNIFIED IDEOGRAPH - 0xF6D7: 0x9C8E, //CJK UNIFIED IDEOGRAPH - 0xF6D8: 0x9C90, //CJK UNIFIED IDEOGRAPH - 0xF6D9: 0x9C91, //CJK UNIFIED IDEOGRAPH - 0xF6DA: 0x9C92, //CJK UNIFIED IDEOGRAPH - 0xF6DB: 0x9C94, //CJK UNIFIED IDEOGRAPH - 0xF6DC: 0x9C95, //CJK UNIFIED IDEOGRAPH - 0xF6DD: 0x9C9A, //CJK UNIFIED IDEOGRAPH - 0xF6DE: 0x9C9B, //CJK UNIFIED IDEOGRAPH - 0xF6DF: 0x9C9E, //CJK UNIFIED IDEOGRAPH - 0xF6E0: 0x9C9F, //CJK UNIFIED IDEOGRAPH - 0xF6E1: 0x9CA0, //CJK UNIFIED IDEOGRAPH - 0xF6E2: 0x9CA1, //CJK UNIFIED IDEOGRAPH - 0xF6E3: 0x9CA2, //CJK UNIFIED IDEOGRAPH - 0xF6E4: 0x9CA3, //CJK UNIFIED IDEOGRAPH - 0xF6E5: 0x9CA5, //CJK UNIFIED IDEOGRAPH - 0xF6E6: 0x9CA6, //CJK UNIFIED IDEOGRAPH - 0xF6E7: 0x9CA7, //CJK UNIFIED IDEOGRAPH - 0xF6E8: 0x9CA8, //CJK UNIFIED IDEOGRAPH - 0xF6E9: 0x9CA9, //CJK UNIFIED IDEOGRAPH - 0xF6EA: 0x9CAB, //CJK UNIFIED IDEOGRAPH - 0xF6EB: 0x9CAD, //CJK UNIFIED IDEOGRAPH - 0xF6EC: 0x9CAE, //CJK UNIFIED IDEOGRAPH - 0xF6ED: 0x9CB0, //CJK UNIFIED IDEOGRAPH - 0xF6EE: 0x9CB1, //CJK UNIFIED IDEOGRAPH - 0xF6EF: 0x9CB2, //CJK UNIFIED IDEOGRAPH - 0xF6F0: 0x9CB3, //CJK UNIFIED IDEOGRAPH - 0xF6F1: 0x9CB4, //CJK UNIFIED IDEOGRAPH - 0xF6F2: 0x9CB5, //CJK UNIFIED IDEOGRAPH - 0xF6F3: 0x9CB6, //CJK UNIFIED IDEOGRAPH - 0xF6F4: 0x9CB7, //CJK UNIFIED IDEOGRAPH - 0xF6F5: 0x9CBA, //CJK UNIFIED IDEOGRAPH - 0xF6F6: 0x9CBB, //CJK UNIFIED IDEOGRAPH - 0xF6F7: 0x9CBC, //CJK UNIFIED IDEOGRAPH - 0xF6F8: 0x9CBD, //CJK UNIFIED IDEOGRAPH - 0xF6F9: 0x9CC4, //CJK UNIFIED IDEOGRAPH - 0xF6FA: 0x9CC5, //CJK UNIFIED IDEOGRAPH - 0xF6FB: 0x9CC6, //CJK UNIFIED IDEOGRAPH - 0xF6FC: 0x9CC7, //CJK UNIFIED IDEOGRAPH - 0xF6FD: 0x9CCA, //CJK UNIFIED IDEOGRAPH - 0xF6FE: 0x9CCB, //CJK UNIFIED IDEOGRAPH - 0xF740: 0x9C3C, //CJK UNIFIED IDEOGRAPH - 0xF741: 0x9C3D, //CJK UNIFIED IDEOGRAPH - 0xF742: 0x9C3E, //CJK UNIFIED IDEOGRAPH - 0xF743: 0x9C3F, //CJK UNIFIED IDEOGRAPH - 0xF744: 0x9C40, //CJK UNIFIED IDEOGRAPH - 0xF745: 0x9C41, //CJK UNIFIED IDEOGRAPH - 0xF746: 0x9C42, //CJK UNIFIED IDEOGRAPH - 0xF747: 0x9C43, //CJK UNIFIED IDEOGRAPH - 0xF748: 0x9C44, //CJK UNIFIED IDEOGRAPH - 0xF749: 0x9C45, //CJK UNIFIED IDEOGRAPH - 0xF74A: 0x9C46, //CJK UNIFIED IDEOGRAPH - 0xF74B: 0x9C47, //CJK UNIFIED IDEOGRAPH - 0xF74C: 0x9C48, //CJK UNIFIED IDEOGRAPH - 0xF74D: 0x9C49, //CJK UNIFIED IDEOGRAPH - 0xF74E: 0x9C4A, //CJK UNIFIED IDEOGRAPH - 0xF74F: 0x9C4B, //CJK UNIFIED IDEOGRAPH - 0xF750: 0x9C4C, //CJK UNIFIED IDEOGRAPH - 0xF751: 0x9C4D, //CJK UNIFIED IDEOGRAPH - 0xF752: 0x9C4E, //CJK UNIFIED IDEOGRAPH - 0xF753: 0x9C4F, //CJK UNIFIED IDEOGRAPH - 0xF754: 0x9C50, //CJK UNIFIED IDEOGRAPH - 0xF755: 0x9C51, //CJK UNIFIED IDEOGRAPH - 0xF756: 0x9C52, //CJK UNIFIED IDEOGRAPH - 0xF757: 0x9C53, //CJK UNIFIED IDEOGRAPH - 0xF758: 0x9C54, //CJK UNIFIED IDEOGRAPH - 0xF759: 0x9C55, //CJK UNIFIED IDEOGRAPH - 0xF75A: 0x9C56, //CJK UNIFIED IDEOGRAPH - 0xF75B: 0x9C57, //CJK UNIFIED IDEOGRAPH - 0xF75C: 0x9C58, //CJK UNIFIED IDEOGRAPH - 0xF75D: 0x9C59, //CJK UNIFIED IDEOGRAPH - 0xF75E: 0x9C5A, //CJK UNIFIED IDEOGRAPH - 0xF75F: 0x9C5B, //CJK UNIFIED IDEOGRAPH - 0xF760: 0x9C5C, //CJK UNIFIED IDEOGRAPH - 0xF761: 0x9C5D, //CJK UNIFIED IDEOGRAPH - 0xF762: 0x9C5E, //CJK UNIFIED IDEOGRAPH - 0xF763: 0x9C5F, //CJK UNIFIED IDEOGRAPH - 0xF764: 0x9C60, //CJK UNIFIED IDEOGRAPH - 0xF765: 0x9C61, //CJK UNIFIED IDEOGRAPH - 0xF766: 0x9C62, //CJK UNIFIED IDEOGRAPH - 0xF767: 0x9C63, //CJK UNIFIED IDEOGRAPH - 0xF768: 0x9C64, //CJK UNIFIED IDEOGRAPH - 0xF769: 0x9C65, //CJK UNIFIED IDEOGRAPH - 0xF76A: 0x9C66, //CJK UNIFIED IDEOGRAPH - 0xF76B: 0x9C67, //CJK UNIFIED IDEOGRAPH - 0xF76C: 0x9C68, //CJK UNIFIED IDEOGRAPH - 0xF76D: 0x9C69, //CJK UNIFIED IDEOGRAPH - 0xF76E: 0x9C6A, //CJK UNIFIED IDEOGRAPH - 0xF76F: 0x9C6B, //CJK UNIFIED IDEOGRAPH - 0xF770: 0x9C6C, //CJK UNIFIED IDEOGRAPH - 0xF771: 0x9C6D, //CJK UNIFIED IDEOGRAPH - 0xF772: 0x9C6E, //CJK UNIFIED IDEOGRAPH - 0xF773: 0x9C6F, //CJK UNIFIED IDEOGRAPH - 0xF774: 0x9C70, //CJK UNIFIED IDEOGRAPH - 0xF775: 0x9C71, //CJK UNIFIED IDEOGRAPH - 0xF776: 0x9C72, //CJK UNIFIED IDEOGRAPH - 0xF777: 0x9C73, //CJK UNIFIED IDEOGRAPH - 0xF778: 0x9C74, //CJK UNIFIED IDEOGRAPH - 0xF779: 0x9C75, //CJK UNIFIED IDEOGRAPH - 0xF77A: 0x9C76, //CJK UNIFIED IDEOGRAPH - 0xF77B: 0x9C77, //CJK UNIFIED IDEOGRAPH - 0xF77C: 0x9C78, //CJK UNIFIED IDEOGRAPH - 0xF77D: 0x9C79, //CJK UNIFIED IDEOGRAPH - 0xF77E: 0x9C7A, //CJK UNIFIED IDEOGRAPH - 0xF780: 0x9C7B, //CJK UNIFIED IDEOGRAPH - 0xF781: 0x9C7D, //CJK UNIFIED IDEOGRAPH - 0xF782: 0x9C7E, //CJK UNIFIED IDEOGRAPH - 0xF783: 0x9C80, //CJK UNIFIED IDEOGRAPH - 0xF784: 0x9C83, //CJK UNIFIED IDEOGRAPH - 0xF785: 0x9C84, //CJK UNIFIED IDEOGRAPH - 0xF786: 0x9C89, //CJK UNIFIED IDEOGRAPH - 0xF787: 0x9C8A, //CJK UNIFIED IDEOGRAPH - 0xF788: 0x9C8C, //CJK UNIFIED IDEOGRAPH - 0xF789: 0x9C8F, //CJK UNIFIED IDEOGRAPH - 0xF78A: 0x9C93, //CJK UNIFIED IDEOGRAPH - 0xF78B: 0x9C96, //CJK UNIFIED IDEOGRAPH - 0xF78C: 0x9C97, //CJK UNIFIED IDEOGRAPH - 0xF78D: 0x9C98, //CJK UNIFIED IDEOGRAPH - 0xF78E: 0x9C99, //CJK UNIFIED IDEOGRAPH - 0xF78F: 0x9C9D, //CJK UNIFIED IDEOGRAPH - 0xF790: 0x9CAA, //CJK UNIFIED IDEOGRAPH - 0xF791: 0x9CAC, //CJK UNIFIED IDEOGRAPH - 0xF792: 0x9CAF, //CJK UNIFIED IDEOGRAPH - 0xF793: 0x9CB9, //CJK UNIFIED IDEOGRAPH - 0xF794: 0x9CBE, //CJK UNIFIED IDEOGRAPH - 0xF795: 0x9CBF, //CJK UNIFIED IDEOGRAPH - 0xF796: 0x9CC0, //CJK UNIFIED IDEOGRAPH - 0xF797: 0x9CC1, //CJK UNIFIED IDEOGRAPH - 0xF798: 0x9CC2, //CJK UNIFIED IDEOGRAPH - 0xF799: 0x9CC8, //CJK UNIFIED IDEOGRAPH - 0xF79A: 0x9CC9, //CJK UNIFIED IDEOGRAPH - 0xF79B: 0x9CD1, //CJK UNIFIED IDEOGRAPH - 0xF79C: 0x9CD2, //CJK UNIFIED IDEOGRAPH - 0xF79D: 0x9CDA, //CJK UNIFIED IDEOGRAPH - 0xF79E: 0x9CDB, //CJK UNIFIED IDEOGRAPH - 0xF79F: 0x9CE0, //CJK UNIFIED IDEOGRAPH - 0xF7A0: 0x9CE1, //CJK UNIFIED IDEOGRAPH - 0xF7A1: 0x9CCC, //CJK UNIFIED IDEOGRAPH - 0xF7A2: 0x9CCD, //CJK UNIFIED IDEOGRAPH - 0xF7A3: 0x9CCE, //CJK UNIFIED IDEOGRAPH - 0xF7A4: 0x9CCF, //CJK UNIFIED IDEOGRAPH - 0xF7A5: 0x9CD0, //CJK UNIFIED IDEOGRAPH - 0xF7A6: 0x9CD3, //CJK UNIFIED IDEOGRAPH - 0xF7A7: 0x9CD4, //CJK UNIFIED IDEOGRAPH - 0xF7A8: 0x9CD5, //CJK UNIFIED IDEOGRAPH - 0xF7A9: 0x9CD7, //CJK UNIFIED IDEOGRAPH - 0xF7AA: 0x9CD8, //CJK UNIFIED IDEOGRAPH - 0xF7AB: 0x9CD9, //CJK UNIFIED IDEOGRAPH - 0xF7AC: 0x9CDC, //CJK UNIFIED IDEOGRAPH - 0xF7AD: 0x9CDD, //CJK UNIFIED IDEOGRAPH - 0xF7AE: 0x9CDF, //CJK UNIFIED IDEOGRAPH - 0xF7AF: 0x9CE2, //CJK UNIFIED IDEOGRAPH - 0xF7B0: 0x977C, //CJK UNIFIED IDEOGRAPH - 0xF7B1: 0x9785, //CJK UNIFIED IDEOGRAPH - 0xF7B2: 0x9791, //CJK UNIFIED IDEOGRAPH - 0xF7B3: 0x9792, //CJK UNIFIED IDEOGRAPH - 0xF7B4: 0x9794, //CJK UNIFIED IDEOGRAPH - 0xF7B5: 0x97AF, //CJK UNIFIED IDEOGRAPH - 0xF7B6: 0x97AB, //CJK UNIFIED IDEOGRAPH - 0xF7B7: 0x97A3, //CJK UNIFIED IDEOGRAPH - 0xF7B8: 0x97B2, //CJK UNIFIED IDEOGRAPH - 0xF7B9: 0x97B4, //CJK UNIFIED IDEOGRAPH - 0xF7BA: 0x9AB1, //CJK UNIFIED IDEOGRAPH - 0xF7BB: 0x9AB0, //CJK UNIFIED IDEOGRAPH - 0xF7BC: 0x9AB7, //CJK UNIFIED IDEOGRAPH - 0xF7BD: 0x9E58, //CJK UNIFIED IDEOGRAPH - 0xF7BE: 0x9AB6, //CJK UNIFIED IDEOGRAPH - 0xF7BF: 0x9ABA, //CJK UNIFIED IDEOGRAPH - 0xF7C0: 0x9ABC, //CJK UNIFIED IDEOGRAPH - 0xF7C1: 0x9AC1, //CJK UNIFIED IDEOGRAPH - 0xF7C2: 0x9AC0, //CJK UNIFIED IDEOGRAPH - 0xF7C3: 0x9AC5, //CJK UNIFIED IDEOGRAPH - 0xF7C4: 0x9AC2, //CJK UNIFIED IDEOGRAPH - 0xF7C5: 0x9ACB, //CJK UNIFIED IDEOGRAPH - 0xF7C6: 0x9ACC, //CJK UNIFIED IDEOGRAPH - 0xF7C7: 0x9AD1, //CJK UNIFIED IDEOGRAPH - 0xF7C8: 0x9B45, //CJK UNIFIED IDEOGRAPH - 0xF7C9: 0x9B43, //CJK UNIFIED IDEOGRAPH - 0xF7CA: 0x9B47, //CJK UNIFIED IDEOGRAPH - 0xF7CB: 0x9B49, //CJK UNIFIED IDEOGRAPH - 0xF7CC: 0x9B48, //CJK UNIFIED IDEOGRAPH - 0xF7CD: 0x9B4D, //CJK UNIFIED IDEOGRAPH - 0xF7CE: 0x9B51, //CJK UNIFIED IDEOGRAPH - 0xF7CF: 0x98E8, //CJK UNIFIED IDEOGRAPH - 0xF7D0: 0x990D, //CJK UNIFIED IDEOGRAPH - 0xF7D1: 0x992E, //CJK UNIFIED IDEOGRAPH - 0xF7D2: 0x9955, //CJK UNIFIED IDEOGRAPH - 0xF7D3: 0x9954, //CJK UNIFIED IDEOGRAPH - 0xF7D4: 0x9ADF, //CJK UNIFIED IDEOGRAPH - 0xF7D5: 0x9AE1, //CJK UNIFIED IDEOGRAPH - 0xF7D6: 0x9AE6, //CJK UNIFIED IDEOGRAPH - 0xF7D7: 0x9AEF, //CJK UNIFIED IDEOGRAPH - 0xF7D8: 0x9AEB, //CJK UNIFIED IDEOGRAPH - 0xF7D9: 0x9AFB, //CJK UNIFIED IDEOGRAPH - 0xF7DA: 0x9AED, //CJK UNIFIED IDEOGRAPH - 0xF7DB: 0x9AF9, //CJK UNIFIED IDEOGRAPH - 0xF7DC: 0x9B08, //CJK UNIFIED IDEOGRAPH - 0xF7DD: 0x9B0F, //CJK UNIFIED IDEOGRAPH - 0xF7DE: 0x9B13, //CJK UNIFIED IDEOGRAPH - 0xF7DF: 0x9B1F, //CJK UNIFIED IDEOGRAPH - 0xF7E0: 0x9B23, //CJK UNIFIED IDEOGRAPH - 0xF7E1: 0x9EBD, //CJK UNIFIED IDEOGRAPH - 0xF7E2: 0x9EBE, //CJK UNIFIED IDEOGRAPH - 0xF7E3: 0x7E3B, //CJK UNIFIED IDEOGRAPH - 0xF7E4: 0x9E82, //CJK UNIFIED IDEOGRAPH - 0xF7E5: 0x9E87, //CJK UNIFIED IDEOGRAPH - 0xF7E6: 0x9E88, //CJK UNIFIED IDEOGRAPH - 0xF7E7: 0x9E8B, //CJK UNIFIED IDEOGRAPH - 0xF7E8: 0x9E92, //CJK UNIFIED IDEOGRAPH - 0xF7E9: 0x93D6, //CJK UNIFIED IDEOGRAPH - 0xF7EA: 0x9E9D, //CJK UNIFIED IDEOGRAPH - 0xF7EB: 0x9E9F, //CJK UNIFIED IDEOGRAPH - 0xF7EC: 0x9EDB, //CJK UNIFIED IDEOGRAPH - 0xF7ED: 0x9EDC, //CJK UNIFIED IDEOGRAPH - 0xF7EE: 0x9EDD, //CJK UNIFIED IDEOGRAPH - 0xF7EF: 0x9EE0, //CJK UNIFIED IDEOGRAPH - 0xF7F0: 0x9EDF, //CJK UNIFIED IDEOGRAPH - 0xF7F1: 0x9EE2, //CJK UNIFIED IDEOGRAPH - 0xF7F2: 0x9EE9, //CJK UNIFIED IDEOGRAPH - 0xF7F3: 0x9EE7, //CJK UNIFIED IDEOGRAPH - 0xF7F4: 0x9EE5, //CJK UNIFIED IDEOGRAPH - 0xF7F5: 0x9EEA, //CJK UNIFIED IDEOGRAPH - 0xF7F6: 0x9EEF, //CJK UNIFIED IDEOGRAPH - 0xF7F7: 0x9F22, //CJK UNIFIED IDEOGRAPH - 0xF7F8: 0x9F2C, //CJK UNIFIED IDEOGRAPH - 0xF7F9: 0x9F2F, //CJK UNIFIED IDEOGRAPH - 0xF7FA: 0x9F39, //CJK UNIFIED IDEOGRAPH - 0xF7FB: 0x9F37, //CJK UNIFIED IDEOGRAPH - 0xF7FC: 0x9F3D, //CJK UNIFIED IDEOGRAPH - 0xF7FD: 0x9F3E, //CJK UNIFIED IDEOGRAPH - 0xF7FE: 0x9F44, //CJK UNIFIED IDEOGRAPH - 0xF840: 0x9CE3, //CJK UNIFIED IDEOGRAPH - 0xF841: 0x9CE4, //CJK UNIFIED IDEOGRAPH - 0xF842: 0x9CE5, //CJK UNIFIED IDEOGRAPH - 0xF843: 0x9CE6, //CJK UNIFIED IDEOGRAPH - 0xF844: 0x9CE7, //CJK UNIFIED IDEOGRAPH - 0xF845: 0x9CE8, //CJK UNIFIED IDEOGRAPH - 0xF846: 0x9CE9, //CJK UNIFIED IDEOGRAPH - 0xF847: 0x9CEA, //CJK UNIFIED IDEOGRAPH - 0xF848: 0x9CEB, //CJK UNIFIED IDEOGRAPH - 0xF849: 0x9CEC, //CJK UNIFIED IDEOGRAPH - 0xF84A: 0x9CED, //CJK UNIFIED IDEOGRAPH - 0xF84B: 0x9CEE, //CJK UNIFIED IDEOGRAPH - 0xF84C: 0x9CEF, //CJK UNIFIED IDEOGRAPH - 0xF84D: 0x9CF0, //CJK UNIFIED IDEOGRAPH - 0xF84E: 0x9CF1, //CJK UNIFIED IDEOGRAPH - 0xF84F: 0x9CF2, //CJK UNIFIED IDEOGRAPH - 0xF850: 0x9CF3, //CJK UNIFIED IDEOGRAPH - 0xF851: 0x9CF4, //CJK UNIFIED IDEOGRAPH - 0xF852: 0x9CF5, //CJK UNIFIED IDEOGRAPH - 0xF853: 0x9CF6, //CJK UNIFIED IDEOGRAPH - 0xF854: 0x9CF7, //CJK UNIFIED IDEOGRAPH - 0xF855: 0x9CF8, //CJK UNIFIED IDEOGRAPH - 0xF856: 0x9CF9, //CJK UNIFIED IDEOGRAPH - 0xF857: 0x9CFA, //CJK UNIFIED IDEOGRAPH - 0xF858: 0x9CFB, //CJK UNIFIED IDEOGRAPH - 0xF859: 0x9CFC, //CJK UNIFIED IDEOGRAPH - 0xF85A: 0x9CFD, //CJK UNIFIED IDEOGRAPH - 0xF85B: 0x9CFE, //CJK UNIFIED IDEOGRAPH - 0xF85C: 0x9CFF, //CJK UNIFIED IDEOGRAPH - 0xF85D: 0x9D00, //CJK UNIFIED IDEOGRAPH - 0xF85E: 0x9D01, //CJK UNIFIED IDEOGRAPH - 0xF85F: 0x9D02, //CJK UNIFIED IDEOGRAPH - 0xF860: 0x9D03, //CJK UNIFIED IDEOGRAPH - 0xF861: 0x9D04, //CJK UNIFIED IDEOGRAPH - 0xF862: 0x9D05, //CJK UNIFIED IDEOGRAPH - 0xF863: 0x9D06, //CJK UNIFIED IDEOGRAPH - 0xF864: 0x9D07, //CJK UNIFIED IDEOGRAPH - 0xF865: 0x9D08, //CJK UNIFIED IDEOGRAPH - 0xF866: 0x9D09, //CJK UNIFIED IDEOGRAPH - 0xF867: 0x9D0A, //CJK UNIFIED IDEOGRAPH - 0xF868: 0x9D0B, //CJK UNIFIED IDEOGRAPH - 0xF869: 0x9D0C, //CJK UNIFIED IDEOGRAPH - 0xF86A: 0x9D0D, //CJK UNIFIED IDEOGRAPH - 0xF86B: 0x9D0E, //CJK UNIFIED IDEOGRAPH - 0xF86C: 0x9D0F, //CJK UNIFIED IDEOGRAPH - 0xF86D: 0x9D10, //CJK UNIFIED IDEOGRAPH - 0xF86E: 0x9D11, //CJK UNIFIED IDEOGRAPH - 0xF86F: 0x9D12, //CJK UNIFIED IDEOGRAPH - 0xF870: 0x9D13, //CJK UNIFIED IDEOGRAPH - 0xF871: 0x9D14, //CJK UNIFIED IDEOGRAPH - 0xF872: 0x9D15, //CJK UNIFIED IDEOGRAPH - 0xF873: 0x9D16, //CJK UNIFIED IDEOGRAPH - 0xF874: 0x9D17, //CJK UNIFIED IDEOGRAPH - 0xF875: 0x9D18, //CJK UNIFIED IDEOGRAPH - 0xF876: 0x9D19, //CJK UNIFIED IDEOGRAPH - 0xF877: 0x9D1A, //CJK UNIFIED IDEOGRAPH - 0xF878: 0x9D1B, //CJK UNIFIED IDEOGRAPH - 0xF879: 0x9D1C, //CJK UNIFIED IDEOGRAPH - 0xF87A: 0x9D1D, //CJK UNIFIED IDEOGRAPH - 0xF87B: 0x9D1E, //CJK UNIFIED IDEOGRAPH - 0xF87C: 0x9D1F, //CJK UNIFIED IDEOGRAPH - 0xF87D: 0x9D20, //CJK UNIFIED IDEOGRAPH - 0xF87E: 0x9D21, //CJK UNIFIED IDEOGRAPH - 0xF880: 0x9D22, //CJK UNIFIED IDEOGRAPH - 0xF881: 0x9D23, //CJK UNIFIED IDEOGRAPH - 0xF882: 0x9D24, //CJK UNIFIED IDEOGRAPH - 0xF883: 0x9D25, //CJK UNIFIED IDEOGRAPH - 0xF884: 0x9D26, //CJK UNIFIED IDEOGRAPH - 0xF885: 0x9D27, //CJK UNIFIED IDEOGRAPH - 0xF886: 0x9D28, //CJK UNIFIED IDEOGRAPH - 0xF887: 0x9D29, //CJK UNIFIED IDEOGRAPH - 0xF888: 0x9D2A, //CJK UNIFIED IDEOGRAPH - 0xF889: 0x9D2B, //CJK UNIFIED IDEOGRAPH - 0xF88A: 0x9D2C, //CJK UNIFIED IDEOGRAPH - 0xF88B: 0x9D2D, //CJK UNIFIED IDEOGRAPH - 0xF88C: 0x9D2E, //CJK UNIFIED IDEOGRAPH - 0xF88D: 0x9D2F, //CJK UNIFIED IDEOGRAPH - 0xF88E: 0x9D30, //CJK UNIFIED IDEOGRAPH - 0xF88F: 0x9D31, //CJK UNIFIED IDEOGRAPH - 0xF890: 0x9D32, //CJK UNIFIED IDEOGRAPH - 0xF891: 0x9D33, //CJK UNIFIED IDEOGRAPH - 0xF892: 0x9D34, //CJK UNIFIED IDEOGRAPH - 0xF893: 0x9D35, //CJK UNIFIED IDEOGRAPH - 0xF894: 0x9D36, //CJK UNIFIED IDEOGRAPH - 0xF895: 0x9D37, //CJK UNIFIED IDEOGRAPH - 0xF896: 0x9D38, //CJK UNIFIED IDEOGRAPH - 0xF897: 0x9D39, //CJK UNIFIED IDEOGRAPH - 0xF898: 0x9D3A, //CJK UNIFIED IDEOGRAPH - 0xF899: 0x9D3B, //CJK UNIFIED IDEOGRAPH - 0xF89A: 0x9D3C, //CJK UNIFIED IDEOGRAPH - 0xF89B: 0x9D3D, //CJK UNIFIED IDEOGRAPH - 0xF89C: 0x9D3E, //CJK UNIFIED IDEOGRAPH - 0xF89D: 0x9D3F, //CJK UNIFIED IDEOGRAPH - 0xF89E: 0x9D40, //CJK UNIFIED IDEOGRAPH - 0xF89F: 0x9D41, //CJK UNIFIED IDEOGRAPH - 0xF8A0: 0x9D42, //CJK UNIFIED IDEOGRAPH - 0xF940: 0x9D43, //CJK UNIFIED IDEOGRAPH - 0xF941: 0x9D44, //CJK UNIFIED IDEOGRAPH - 0xF942: 0x9D45, //CJK UNIFIED IDEOGRAPH - 0xF943: 0x9D46, //CJK UNIFIED IDEOGRAPH - 0xF944: 0x9D47, //CJK UNIFIED IDEOGRAPH - 0xF945: 0x9D48, //CJK UNIFIED IDEOGRAPH - 0xF946: 0x9D49, //CJK UNIFIED IDEOGRAPH - 0xF947: 0x9D4A, //CJK UNIFIED IDEOGRAPH - 0xF948: 0x9D4B, //CJK UNIFIED IDEOGRAPH - 0xF949: 0x9D4C, //CJK UNIFIED IDEOGRAPH - 0xF94A: 0x9D4D, //CJK UNIFIED IDEOGRAPH - 0xF94B: 0x9D4E, //CJK UNIFIED IDEOGRAPH - 0xF94C: 0x9D4F, //CJK UNIFIED IDEOGRAPH - 0xF94D: 0x9D50, //CJK UNIFIED IDEOGRAPH - 0xF94E: 0x9D51, //CJK UNIFIED IDEOGRAPH - 0xF94F: 0x9D52, //CJK UNIFIED IDEOGRAPH - 0xF950: 0x9D53, //CJK UNIFIED IDEOGRAPH - 0xF951: 0x9D54, //CJK UNIFIED IDEOGRAPH - 0xF952: 0x9D55, //CJK UNIFIED IDEOGRAPH - 0xF953: 0x9D56, //CJK UNIFIED IDEOGRAPH - 0xF954: 0x9D57, //CJK UNIFIED IDEOGRAPH - 0xF955: 0x9D58, //CJK UNIFIED IDEOGRAPH - 0xF956: 0x9D59, //CJK UNIFIED IDEOGRAPH - 0xF957: 0x9D5A, //CJK UNIFIED IDEOGRAPH - 0xF958: 0x9D5B, //CJK UNIFIED IDEOGRAPH - 0xF959: 0x9D5C, //CJK UNIFIED IDEOGRAPH - 0xF95A: 0x9D5D, //CJK UNIFIED IDEOGRAPH - 0xF95B: 0x9D5E, //CJK UNIFIED IDEOGRAPH - 0xF95C: 0x9D5F, //CJK UNIFIED IDEOGRAPH - 0xF95D: 0x9D60, //CJK UNIFIED IDEOGRAPH - 0xF95E: 0x9D61, //CJK UNIFIED IDEOGRAPH - 0xF95F: 0x9D62, //CJK UNIFIED IDEOGRAPH - 0xF960: 0x9D63, //CJK UNIFIED IDEOGRAPH - 0xF961: 0x9D64, //CJK UNIFIED IDEOGRAPH - 0xF962: 0x9D65, //CJK UNIFIED IDEOGRAPH - 0xF963: 0x9D66, //CJK UNIFIED IDEOGRAPH - 0xF964: 0x9D67, //CJK UNIFIED IDEOGRAPH - 0xF965: 0x9D68, //CJK UNIFIED IDEOGRAPH - 0xF966: 0x9D69, //CJK UNIFIED IDEOGRAPH - 0xF967: 0x9D6A, //CJK UNIFIED IDEOGRAPH - 0xF968: 0x9D6B, //CJK UNIFIED IDEOGRAPH - 0xF969: 0x9D6C, //CJK UNIFIED IDEOGRAPH - 0xF96A: 0x9D6D, //CJK UNIFIED IDEOGRAPH - 0xF96B: 0x9D6E, //CJK UNIFIED IDEOGRAPH - 0xF96C: 0x9D6F, //CJK UNIFIED IDEOGRAPH - 0xF96D: 0x9D70, //CJK UNIFIED IDEOGRAPH - 0xF96E: 0x9D71, //CJK UNIFIED IDEOGRAPH - 0xF96F: 0x9D72, //CJK UNIFIED IDEOGRAPH - 0xF970: 0x9D73, //CJK UNIFIED IDEOGRAPH - 0xF971: 0x9D74, //CJK UNIFIED IDEOGRAPH - 0xF972: 0x9D75, //CJK UNIFIED IDEOGRAPH - 0xF973: 0x9D76, //CJK UNIFIED IDEOGRAPH - 0xF974: 0x9D77, //CJK UNIFIED IDEOGRAPH - 0xF975: 0x9D78, //CJK UNIFIED IDEOGRAPH - 0xF976: 0x9D79, //CJK UNIFIED IDEOGRAPH - 0xF977: 0x9D7A, //CJK UNIFIED IDEOGRAPH - 0xF978: 0x9D7B, //CJK UNIFIED IDEOGRAPH - 0xF979: 0x9D7C, //CJK UNIFIED IDEOGRAPH - 0xF97A: 0x9D7D, //CJK UNIFIED IDEOGRAPH - 0xF97B: 0x9D7E, //CJK UNIFIED IDEOGRAPH - 0xF97C: 0x9D7F, //CJK UNIFIED IDEOGRAPH - 0xF97D: 0x9D80, //CJK UNIFIED IDEOGRAPH - 0xF97E: 0x9D81, //CJK UNIFIED IDEOGRAPH - 0xF980: 0x9D82, //CJK UNIFIED IDEOGRAPH - 0xF981: 0x9D83, //CJK UNIFIED IDEOGRAPH - 0xF982: 0x9D84, //CJK UNIFIED IDEOGRAPH - 0xF983: 0x9D85, //CJK UNIFIED IDEOGRAPH - 0xF984: 0x9D86, //CJK UNIFIED IDEOGRAPH - 0xF985: 0x9D87, //CJK UNIFIED IDEOGRAPH - 0xF986: 0x9D88, //CJK UNIFIED IDEOGRAPH - 0xF987: 0x9D89, //CJK UNIFIED IDEOGRAPH - 0xF988: 0x9D8A, //CJK UNIFIED IDEOGRAPH - 0xF989: 0x9D8B, //CJK UNIFIED IDEOGRAPH - 0xF98A: 0x9D8C, //CJK UNIFIED IDEOGRAPH - 0xF98B: 0x9D8D, //CJK UNIFIED IDEOGRAPH - 0xF98C: 0x9D8E, //CJK UNIFIED IDEOGRAPH - 0xF98D: 0x9D8F, //CJK UNIFIED IDEOGRAPH - 0xF98E: 0x9D90, //CJK UNIFIED IDEOGRAPH - 0xF98F: 0x9D91, //CJK UNIFIED IDEOGRAPH - 0xF990: 0x9D92, //CJK UNIFIED IDEOGRAPH - 0xF991: 0x9D93, //CJK UNIFIED IDEOGRAPH - 0xF992: 0x9D94, //CJK UNIFIED IDEOGRAPH - 0xF993: 0x9D95, //CJK UNIFIED IDEOGRAPH - 0xF994: 0x9D96, //CJK UNIFIED IDEOGRAPH - 0xF995: 0x9D97, //CJK UNIFIED IDEOGRAPH - 0xF996: 0x9D98, //CJK UNIFIED IDEOGRAPH - 0xF997: 0x9D99, //CJK UNIFIED IDEOGRAPH - 0xF998: 0x9D9A, //CJK UNIFIED IDEOGRAPH - 0xF999: 0x9D9B, //CJK UNIFIED IDEOGRAPH - 0xF99A: 0x9D9C, //CJK UNIFIED IDEOGRAPH - 0xF99B: 0x9D9D, //CJK UNIFIED IDEOGRAPH - 0xF99C: 0x9D9E, //CJK UNIFIED IDEOGRAPH - 0xF99D: 0x9D9F, //CJK UNIFIED IDEOGRAPH - 0xF99E: 0x9DA0, //CJK UNIFIED IDEOGRAPH - 0xF99F: 0x9DA1, //CJK UNIFIED IDEOGRAPH - 0xF9A0: 0x9DA2, //CJK UNIFIED IDEOGRAPH - 0xFA40: 0x9DA3, //CJK UNIFIED IDEOGRAPH - 0xFA41: 0x9DA4, //CJK UNIFIED IDEOGRAPH - 0xFA42: 0x9DA5, //CJK UNIFIED IDEOGRAPH - 0xFA43: 0x9DA6, //CJK UNIFIED IDEOGRAPH - 0xFA44: 0x9DA7, //CJK UNIFIED IDEOGRAPH - 0xFA45: 0x9DA8, //CJK UNIFIED IDEOGRAPH - 0xFA46: 0x9DA9, //CJK UNIFIED IDEOGRAPH - 0xFA47: 0x9DAA, //CJK UNIFIED IDEOGRAPH - 0xFA48: 0x9DAB, //CJK UNIFIED IDEOGRAPH - 0xFA49: 0x9DAC, //CJK UNIFIED IDEOGRAPH - 0xFA4A: 0x9DAD, //CJK UNIFIED IDEOGRAPH - 0xFA4B: 0x9DAE, //CJK UNIFIED IDEOGRAPH - 0xFA4C: 0x9DAF, //CJK UNIFIED IDEOGRAPH - 0xFA4D: 0x9DB0, //CJK UNIFIED IDEOGRAPH - 0xFA4E: 0x9DB1, //CJK UNIFIED IDEOGRAPH - 0xFA4F: 0x9DB2, //CJK UNIFIED IDEOGRAPH - 0xFA50: 0x9DB3, //CJK UNIFIED IDEOGRAPH - 0xFA51: 0x9DB4, //CJK UNIFIED IDEOGRAPH - 0xFA52: 0x9DB5, //CJK UNIFIED IDEOGRAPH - 0xFA53: 0x9DB6, //CJK UNIFIED IDEOGRAPH - 0xFA54: 0x9DB7, //CJK UNIFIED IDEOGRAPH - 0xFA55: 0x9DB8, //CJK UNIFIED IDEOGRAPH - 0xFA56: 0x9DB9, //CJK UNIFIED IDEOGRAPH - 0xFA57: 0x9DBA, //CJK UNIFIED IDEOGRAPH - 0xFA58: 0x9DBB, //CJK UNIFIED IDEOGRAPH - 0xFA59: 0x9DBC, //CJK UNIFIED IDEOGRAPH - 0xFA5A: 0x9DBD, //CJK UNIFIED IDEOGRAPH - 0xFA5B: 0x9DBE, //CJK UNIFIED IDEOGRAPH - 0xFA5C: 0x9DBF, //CJK UNIFIED IDEOGRAPH - 0xFA5D: 0x9DC0, //CJK UNIFIED IDEOGRAPH - 0xFA5E: 0x9DC1, //CJK UNIFIED IDEOGRAPH - 0xFA5F: 0x9DC2, //CJK UNIFIED IDEOGRAPH - 0xFA60: 0x9DC3, //CJK UNIFIED IDEOGRAPH - 0xFA61: 0x9DC4, //CJK UNIFIED IDEOGRAPH - 0xFA62: 0x9DC5, //CJK UNIFIED IDEOGRAPH - 0xFA63: 0x9DC6, //CJK UNIFIED IDEOGRAPH - 0xFA64: 0x9DC7, //CJK UNIFIED IDEOGRAPH - 0xFA65: 0x9DC8, //CJK UNIFIED IDEOGRAPH - 0xFA66: 0x9DC9, //CJK UNIFIED IDEOGRAPH - 0xFA67: 0x9DCA, //CJK UNIFIED IDEOGRAPH - 0xFA68: 0x9DCB, //CJK UNIFIED IDEOGRAPH - 0xFA69: 0x9DCC, //CJK UNIFIED IDEOGRAPH - 0xFA6A: 0x9DCD, //CJK UNIFIED IDEOGRAPH - 0xFA6B: 0x9DCE, //CJK UNIFIED IDEOGRAPH - 0xFA6C: 0x9DCF, //CJK UNIFIED IDEOGRAPH - 0xFA6D: 0x9DD0, //CJK UNIFIED IDEOGRAPH - 0xFA6E: 0x9DD1, //CJK UNIFIED IDEOGRAPH - 0xFA6F: 0x9DD2, //CJK UNIFIED IDEOGRAPH - 0xFA70: 0x9DD3, //CJK UNIFIED IDEOGRAPH - 0xFA71: 0x9DD4, //CJK UNIFIED IDEOGRAPH - 0xFA72: 0x9DD5, //CJK UNIFIED IDEOGRAPH - 0xFA73: 0x9DD6, //CJK UNIFIED IDEOGRAPH - 0xFA74: 0x9DD7, //CJK UNIFIED IDEOGRAPH - 0xFA75: 0x9DD8, //CJK UNIFIED IDEOGRAPH - 0xFA76: 0x9DD9, //CJK UNIFIED IDEOGRAPH - 0xFA77: 0x9DDA, //CJK UNIFIED IDEOGRAPH - 0xFA78: 0x9DDB, //CJK UNIFIED IDEOGRAPH - 0xFA79: 0x9DDC, //CJK UNIFIED IDEOGRAPH - 0xFA7A: 0x9DDD, //CJK UNIFIED IDEOGRAPH - 0xFA7B: 0x9DDE, //CJK UNIFIED IDEOGRAPH - 0xFA7C: 0x9DDF, //CJK UNIFIED IDEOGRAPH - 0xFA7D: 0x9DE0, //CJK UNIFIED IDEOGRAPH - 0xFA7E: 0x9DE1, //CJK UNIFIED IDEOGRAPH - 0xFA80: 0x9DE2, //CJK UNIFIED IDEOGRAPH - 0xFA81: 0x9DE3, //CJK UNIFIED IDEOGRAPH - 0xFA82: 0x9DE4, //CJK UNIFIED IDEOGRAPH - 0xFA83: 0x9DE5, //CJK UNIFIED IDEOGRAPH - 0xFA84: 0x9DE6, //CJK UNIFIED IDEOGRAPH - 0xFA85: 0x9DE7, //CJK UNIFIED IDEOGRAPH - 0xFA86: 0x9DE8, //CJK UNIFIED IDEOGRAPH - 0xFA87: 0x9DE9, //CJK UNIFIED IDEOGRAPH - 0xFA88: 0x9DEA, //CJK UNIFIED IDEOGRAPH - 0xFA89: 0x9DEB, //CJK UNIFIED IDEOGRAPH - 0xFA8A: 0x9DEC, //CJK UNIFIED IDEOGRAPH - 0xFA8B: 0x9DED, //CJK UNIFIED IDEOGRAPH - 0xFA8C: 0x9DEE, //CJK UNIFIED IDEOGRAPH - 0xFA8D: 0x9DEF, //CJK UNIFIED IDEOGRAPH - 0xFA8E: 0x9DF0, //CJK UNIFIED IDEOGRAPH - 0xFA8F: 0x9DF1, //CJK UNIFIED IDEOGRAPH - 0xFA90: 0x9DF2, //CJK UNIFIED IDEOGRAPH - 0xFA91: 0x9DF3, //CJK UNIFIED IDEOGRAPH - 0xFA92: 0x9DF4, //CJK UNIFIED IDEOGRAPH - 0xFA93: 0x9DF5, //CJK UNIFIED IDEOGRAPH - 0xFA94: 0x9DF6, //CJK UNIFIED IDEOGRAPH - 0xFA95: 0x9DF7, //CJK UNIFIED IDEOGRAPH - 0xFA96: 0x9DF8, //CJK UNIFIED IDEOGRAPH - 0xFA97: 0x9DF9, //CJK UNIFIED IDEOGRAPH - 0xFA98: 0x9DFA, //CJK UNIFIED IDEOGRAPH - 0xFA99: 0x9DFB, //CJK UNIFIED IDEOGRAPH - 0xFA9A: 0x9DFC, //CJK UNIFIED IDEOGRAPH - 0xFA9B: 0x9DFD, //CJK UNIFIED IDEOGRAPH - 0xFA9C: 0x9DFE, //CJK UNIFIED IDEOGRAPH - 0xFA9D: 0x9DFF, //CJK UNIFIED IDEOGRAPH - 0xFA9E: 0x9E00, //CJK UNIFIED IDEOGRAPH - 0xFA9F: 0x9E01, //CJK UNIFIED IDEOGRAPH - 0xFAA0: 0x9E02, //CJK UNIFIED IDEOGRAPH - 0xFB40: 0x9E03, //CJK UNIFIED IDEOGRAPH - 0xFB41: 0x9E04, //CJK UNIFIED IDEOGRAPH - 0xFB42: 0x9E05, //CJK UNIFIED IDEOGRAPH - 0xFB43: 0x9E06, //CJK UNIFIED IDEOGRAPH - 0xFB44: 0x9E07, //CJK UNIFIED IDEOGRAPH - 0xFB45: 0x9E08, //CJK UNIFIED IDEOGRAPH - 0xFB46: 0x9E09, //CJK UNIFIED IDEOGRAPH - 0xFB47: 0x9E0A, //CJK UNIFIED IDEOGRAPH - 0xFB48: 0x9E0B, //CJK UNIFIED IDEOGRAPH - 0xFB49: 0x9E0C, //CJK UNIFIED IDEOGRAPH - 0xFB4A: 0x9E0D, //CJK UNIFIED IDEOGRAPH - 0xFB4B: 0x9E0E, //CJK UNIFIED IDEOGRAPH - 0xFB4C: 0x9E0F, //CJK UNIFIED IDEOGRAPH - 0xFB4D: 0x9E10, //CJK UNIFIED IDEOGRAPH - 0xFB4E: 0x9E11, //CJK UNIFIED IDEOGRAPH - 0xFB4F: 0x9E12, //CJK UNIFIED IDEOGRAPH - 0xFB50: 0x9E13, //CJK UNIFIED IDEOGRAPH - 0xFB51: 0x9E14, //CJK UNIFIED IDEOGRAPH - 0xFB52: 0x9E15, //CJK UNIFIED IDEOGRAPH - 0xFB53: 0x9E16, //CJK UNIFIED IDEOGRAPH - 0xFB54: 0x9E17, //CJK UNIFIED IDEOGRAPH - 0xFB55: 0x9E18, //CJK UNIFIED IDEOGRAPH - 0xFB56: 0x9E19, //CJK UNIFIED IDEOGRAPH - 0xFB57: 0x9E1A, //CJK UNIFIED IDEOGRAPH - 0xFB58: 0x9E1B, //CJK UNIFIED IDEOGRAPH - 0xFB59: 0x9E1C, //CJK UNIFIED IDEOGRAPH - 0xFB5A: 0x9E1D, //CJK UNIFIED IDEOGRAPH - 0xFB5B: 0x9E1E, //CJK UNIFIED IDEOGRAPH - 0xFB5C: 0x9E24, //CJK UNIFIED IDEOGRAPH - 0xFB5D: 0x9E27, //CJK UNIFIED IDEOGRAPH - 0xFB5E: 0x9E2E, //CJK UNIFIED IDEOGRAPH - 0xFB5F: 0x9E30, //CJK UNIFIED IDEOGRAPH - 0xFB60: 0x9E34, //CJK UNIFIED IDEOGRAPH - 0xFB61: 0x9E3B, //CJK UNIFIED IDEOGRAPH - 0xFB62: 0x9E3C, //CJK UNIFIED IDEOGRAPH - 0xFB63: 0x9E40, //CJK UNIFIED IDEOGRAPH - 0xFB64: 0x9E4D, //CJK UNIFIED IDEOGRAPH - 0xFB65: 0x9E50, //CJK UNIFIED IDEOGRAPH - 0xFB66: 0x9E52, //CJK UNIFIED IDEOGRAPH - 0xFB67: 0x9E53, //CJK UNIFIED IDEOGRAPH - 0xFB68: 0x9E54, //CJK UNIFIED IDEOGRAPH - 0xFB69: 0x9E56, //CJK UNIFIED IDEOGRAPH - 0xFB6A: 0x9E59, //CJK UNIFIED IDEOGRAPH - 0xFB6B: 0x9E5D, //CJK UNIFIED IDEOGRAPH - 0xFB6C: 0x9E5F, //CJK UNIFIED IDEOGRAPH - 0xFB6D: 0x9E60, //CJK UNIFIED IDEOGRAPH - 0xFB6E: 0x9E61, //CJK UNIFIED IDEOGRAPH - 0xFB6F: 0x9E62, //CJK UNIFIED IDEOGRAPH - 0xFB70: 0x9E65, //CJK UNIFIED IDEOGRAPH - 0xFB71: 0x9E6E, //CJK UNIFIED IDEOGRAPH - 0xFB72: 0x9E6F, //CJK UNIFIED IDEOGRAPH - 0xFB73: 0x9E72, //CJK UNIFIED IDEOGRAPH - 0xFB74: 0x9E74, //CJK UNIFIED IDEOGRAPH - 0xFB75: 0x9E75, //CJK UNIFIED IDEOGRAPH - 0xFB76: 0x9E76, //CJK UNIFIED IDEOGRAPH - 0xFB77: 0x9E77, //CJK UNIFIED IDEOGRAPH - 0xFB78: 0x9E78, //CJK UNIFIED IDEOGRAPH - 0xFB79: 0x9E79, //CJK UNIFIED IDEOGRAPH - 0xFB7A: 0x9E7A, //CJK UNIFIED IDEOGRAPH - 0xFB7B: 0x9E7B, //CJK UNIFIED IDEOGRAPH - 0xFB7C: 0x9E7C, //CJK UNIFIED IDEOGRAPH - 0xFB7D: 0x9E7D, //CJK UNIFIED IDEOGRAPH - 0xFB7E: 0x9E80, //CJK UNIFIED IDEOGRAPH - 0xFB80: 0x9E81, //CJK UNIFIED IDEOGRAPH - 0xFB81: 0x9E83, //CJK UNIFIED IDEOGRAPH - 0xFB82: 0x9E84, //CJK UNIFIED IDEOGRAPH - 0xFB83: 0x9E85, //CJK UNIFIED IDEOGRAPH - 0xFB84: 0x9E86, //CJK UNIFIED IDEOGRAPH - 0xFB85: 0x9E89, //CJK UNIFIED IDEOGRAPH - 0xFB86: 0x9E8A, //CJK UNIFIED IDEOGRAPH - 0xFB87: 0x9E8C, //CJK UNIFIED IDEOGRAPH - 0xFB88: 0x9E8D, //CJK UNIFIED IDEOGRAPH - 0xFB89: 0x9E8E, //CJK UNIFIED IDEOGRAPH - 0xFB8A: 0x9E8F, //CJK UNIFIED IDEOGRAPH - 0xFB8B: 0x9E90, //CJK UNIFIED IDEOGRAPH - 0xFB8C: 0x9E91, //CJK UNIFIED IDEOGRAPH - 0xFB8D: 0x9E94, //CJK UNIFIED IDEOGRAPH - 0xFB8E: 0x9E95, //CJK UNIFIED IDEOGRAPH - 0xFB8F: 0x9E96, //CJK UNIFIED IDEOGRAPH - 0xFB90: 0x9E97, //CJK UNIFIED IDEOGRAPH - 0xFB91: 0x9E98, //CJK UNIFIED IDEOGRAPH - 0xFB92: 0x9E99, //CJK UNIFIED IDEOGRAPH - 0xFB93: 0x9E9A, //CJK UNIFIED IDEOGRAPH - 0xFB94: 0x9E9B, //CJK UNIFIED IDEOGRAPH - 0xFB95: 0x9E9C, //CJK UNIFIED IDEOGRAPH - 0xFB96: 0x9E9E, //CJK UNIFIED IDEOGRAPH - 0xFB97: 0x9EA0, //CJK UNIFIED IDEOGRAPH - 0xFB98: 0x9EA1, //CJK UNIFIED IDEOGRAPH - 0xFB99: 0x9EA2, //CJK UNIFIED IDEOGRAPH - 0xFB9A: 0x9EA3, //CJK UNIFIED IDEOGRAPH - 0xFB9B: 0x9EA4, //CJK UNIFIED IDEOGRAPH - 0xFB9C: 0x9EA5, //CJK UNIFIED IDEOGRAPH - 0xFB9D: 0x9EA7, //CJK UNIFIED IDEOGRAPH - 0xFB9E: 0x9EA8, //CJK UNIFIED IDEOGRAPH - 0xFB9F: 0x9EA9, //CJK UNIFIED IDEOGRAPH - 0xFBA0: 0x9EAA, //CJK UNIFIED IDEOGRAPH - 0xFC40: 0x9EAB, //CJK UNIFIED IDEOGRAPH - 0xFC41: 0x9EAC, //CJK UNIFIED IDEOGRAPH - 0xFC42: 0x9EAD, //CJK UNIFIED IDEOGRAPH - 0xFC43: 0x9EAE, //CJK UNIFIED IDEOGRAPH - 0xFC44: 0x9EAF, //CJK UNIFIED IDEOGRAPH - 0xFC45: 0x9EB0, //CJK UNIFIED IDEOGRAPH - 0xFC46: 0x9EB1, //CJK UNIFIED IDEOGRAPH - 0xFC47: 0x9EB2, //CJK UNIFIED IDEOGRAPH - 0xFC48: 0x9EB3, //CJK UNIFIED IDEOGRAPH - 0xFC49: 0x9EB5, //CJK UNIFIED IDEOGRAPH - 0xFC4A: 0x9EB6, //CJK UNIFIED IDEOGRAPH - 0xFC4B: 0x9EB7, //CJK UNIFIED IDEOGRAPH - 0xFC4C: 0x9EB9, //CJK UNIFIED IDEOGRAPH - 0xFC4D: 0x9EBA, //CJK UNIFIED IDEOGRAPH - 0xFC4E: 0x9EBC, //CJK UNIFIED IDEOGRAPH - 0xFC4F: 0x9EBF, //CJK UNIFIED IDEOGRAPH - 0xFC50: 0x9EC0, //CJK UNIFIED IDEOGRAPH - 0xFC51: 0x9EC1, //CJK UNIFIED IDEOGRAPH - 0xFC52: 0x9EC2, //CJK UNIFIED IDEOGRAPH - 0xFC53: 0x9EC3, //CJK UNIFIED IDEOGRAPH - 0xFC54: 0x9EC5, //CJK UNIFIED IDEOGRAPH - 0xFC55: 0x9EC6, //CJK UNIFIED IDEOGRAPH - 0xFC56: 0x9EC7, //CJK UNIFIED IDEOGRAPH - 0xFC57: 0x9EC8, //CJK UNIFIED IDEOGRAPH - 0xFC58: 0x9ECA, //CJK UNIFIED IDEOGRAPH - 0xFC59: 0x9ECB, //CJK UNIFIED IDEOGRAPH - 0xFC5A: 0x9ECC, //CJK UNIFIED IDEOGRAPH - 0xFC5B: 0x9ED0, //CJK UNIFIED IDEOGRAPH - 0xFC5C: 0x9ED2, //CJK UNIFIED IDEOGRAPH - 0xFC5D: 0x9ED3, //CJK UNIFIED IDEOGRAPH - 0xFC5E: 0x9ED5, //CJK UNIFIED IDEOGRAPH - 0xFC5F: 0x9ED6, //CJK UNIFIED IDEOGRAPH - 0xFC60: 0x9ED7, //CJK UNIFIED IDEOGRAPH - 0xFC61: 0x9ED9, //CJK UNIFIED IDEOGRAPH - 0xFC62: 0x9EDA, //CJK UNIFIED IDEOGRAPH - 0xFC63: 0x9EDE, //CJK UNIFIED IDEOGRAPH - 0xFC64: 0x9EE1, //CJK UNIFIED IDEOGRAPH - 0xFC65: 0x9EE3, //CJK UNIFIED IDEOGRAPH - 0xFC66: 0x9EE4, //CJK UNIFIED IDEOGRAPH - 0xFC67: 0x9EE6, //CJK UNIFIED IDEOGRAPH - 0xFC68: 0x9EE8, //CJK UNIFIED IDEOGRAPH - 0xFC69: 0x9EEB, //CJK UNIFIED IDEOGRAPH - 0xFC6A: 0x9EEC, //CJK UNIFIED IDEOGRAPH - 0xFC6B: 0x9EED, //CJK UNIFIED IDEOGRAPH - 0xFC6C: 0x9EEE, //CJK UNIFIED IDEOGRAPH - 0xFC6D: 0x9EF0, //CJK UNIFIED IDEOGRAPH - 0xFC6E: 0x9EF1, //CJK UNIFIED IDEOGRAPH - 0xFC6F: 0x9EF2, //CJK UNIFIED IDEOGRAPH - 0xFC70: 0x9EF3, //CJK UNIFIED IDEOGRAPH - 0xFC71: 0x9EF4, //CJK UNIFIED IDEOGRAPH - 0xFC72: 0x9EF5, //CJK UNIFIED IDEOGRAPH - 0xFC73: 0x9EF6, //CJK UNIFIED IDEOGRAPH - 0xFC74: 0x9EF7, //CJK UNIFIED IDEOGRAPH - 0xFC75: 0x9EF8, //CJK UNIFIED IDEOGRAPH - 0xFC76: 0x9EFA, //CJK UNIFIED IDEOGRAPH - 0xFC77: 0x9EFD, //CJK UNIFIED IDEOGRAPH - 0xFC78: 0x9EFF, //CJK UNIFIED IDEOGRAPH - 0xFC79: 0x9F00, //CJK UNIFIED IDEOGRAPH - 0xFC7A: 0x9F01, //CJK UNIFIED IDEOGRAPH - 0xFC7B: 0x9F02, //CJK UNIFIED IDEOGRAPH - 0xFC7C: 0x9F03, //CJK UNIFIED IDEOGRAPH - 0xFC7D: 0x9F04, //CJK UNIFIED IDEOGRAPH - 0xFC7E: 0x9F05, //CJK UNIFIED IDEOGRAPH - 0xFC80: 0x9F06, //CJK UNIFIED IDEOGRAPH - 0xFC81: 0x9F07, //CJK UNIFIED IDEOGRAPH - 0xFC82: 0x9F08, //CJK UNIFIED IDEOGRAPH - 0xFC83: 0x9F09, //CJK UNIFIED IDEOGRAPH - 0xFC84: 0x9F0A, //CJK UNIFIED IDEOGRAPH - 0xFC85: 0x9F0C, //CJK UNIFIED IDEOGRAPH - 0xFC86: 0x9F0F, //CJK UNIFIED IDEOGRAPH - 0xFC87: 0x9F11, //CJK UNIFIED IDEOGRAPH - 0xFC88: 0x9F12, //CJK UNIFIED IDEOGRAPH - 0xFC89: 0x9F14, //CJK UNIFIED IDEOGRAPH - 0xFC8A: 0x9F15, //CJK UNIFIED IDEOGRAPH - 0xFC8B: 0x9F16, //CJK UNIFIED IDEOGRAPH - 0xFC8C: 0x9F18, //CJK UNIFIED IDEOGRAPH - 0xFC8D: 0x9F1A, //CJK UNIFIED IDEOGRAPH - 0xFC8E: 0x9F1B, //CJK UNIFIED IDEOGRAPH - 0xFC8F: 0x9F1C, //CJK UNIFIED IDEOGRAPH - 0xFC90: 0x9F1D, //CJK UNIFIED IDEOGRAPH - 0xFC91: 0x9F1E, //CJK UNIFIED IDEOGRAPH - 0xFC92: 0x9F1F, //CJK UNIFIED IDEOGRAPH - 0xFC93: 0x9F21, //CJK UNIFIED IDEOGRAPH - 0xFC94: 0x9F23, //CJK UNIFIED IDEOGRAPH - 0xFC95: 0x9F24, //CJK UNIFIED IDEOGRAPH - 0xFC96: 0x9F25, //CJK UNIFIED IDEOGRAPH - 0xFC97: 0x9F26, //CJK UNIFIED IDEOGRAPH - 0xFC98: 0x9F27, //CJK UNIFIED IDEOGRAPH - 0xFC99: 0x9F28, //CJK UNIFIED IDEOGRAPH - 0xFC9A: 0x9F29, //CJK UNIFIED IDEOGRAPH - 0xFC9B: 0x9F2A, //CJK UNIFIED IDEOGRAPH - 0xFC9C: 0x9F2B, //CJK UNIFIED IDEOGRAPH - 0xFC9D: 0x9F2D, //CJK UNIFIED IDEOGRAPH - 0xFC9E: 0x9F2E, //CJK UNIFIED IDEOGRAPH - 0xFC9F: 0x9F30, //CJK UNIFIED IDEOGRAPH - 0xFCA0: 0x9F31, //CJK UNIFIED IDEOGRAPH - 0xFD40: 0x9F32, //CJK UNIFIED IDEOGRAPH - 0xFD41: 0x9F33, //CJK UNIFIED IDEOGRAPH - 0xFD42: 0x9F34, //CJK UNIFIED IDEOGRAPH - 0xFD43: 0x9F35, //CJK UNIFIED IDEOGRAPH - 0xFD44: 0x9F36, //CJK UNIFIED IDEOGRAPH - 0xFD45: 0x9F38, //CJK UNIFIED IDEOGRAPH - 0xFD46: 0x9F3A, //CJK UNIFIED IDEOGRAPH - 0xFD47: 0x9F3C, //CJK UNIFIED IDEOGRAPH - 0xFD48: 0x9F3F, //CJK UNIFIED IDEOGRAPH - 0xFD49: 0x9F40, //CJK UNIFIED IDEOGRAPH - 0xFD4A: 0x9F41, //CJK UNIFIED IDEOGRAPH - 0xFD4B: 0x9F42, //CJK UNIFIED IDEOGRAPH - 0xFD4C: 0x9F43, //CJK UNIFIED IDEOGRAPH - 0xFD4D: 0x9F45, //CJK UNIFIED IDEOGRAPH - 0xFD4E: 0x9F46, //CJK UNIFIED IDEOGRAPH - 0xFD4F: 0x9F47, //CJK UNIFIED IDEOGRAPH - 0xFD50: 0x9F48, //CJK UNIFIED IDEOGRAPH - 0xFD51: 0x9F49, //CJK UNIFIED IDEOGRAPH - 0xFD52: 0x9F4A, //CJK UNIFIED IDEOGRAPH - 0xFD53: 0x9F4B, //CJK UNIFIED IDEOGRAPH - 0xFD54: 0x9F4C, //CJK UNIFIED IDEOGRAPH - 0xFD55: 0x9F4D, //CJK UNIFIED IDEOGRAPH - 0xFD56: 0x9F4E, //CJK UNIFIED IDEOGRAPH - 0xFD57: 0x9F4F, //CJK UNIFIED IDEOGRAPH - 0xFD58: 0x9F52, //CJK UNIFIED IDEOGRAPH - 0xFD59: 0x9F53, //CJK UNIFIED IDEOGRAPH - 0xFD5A: 0x9F54, //CJK UNIFIED IDEOGRAPH - 0xFD5B: 0x9F55, //CJK UNIFIED IDEOGRAPH - 0xFD5C: 0x9F56, //CJK UNIFIED IDEOGRAPH - 0xFD5D: 0x9F57, //CJK UNIFIED IDEOGRAPH - 0xFD5E: 0x9F58, //CJK UNIFIED IDEOGRAPH - 0xFD5F: 0x9F59, //CJK UNIFIED IDEOGRAPH - 0xFD60: 0x9F5A, //CJK UNIFIED IDEOGRAPH - 0xFD61: 0x9F5B, //CJK UNIFIED IDEOGRAPH - 0xFD62: 0x9F5C, //CJK UNIFIED IDEOGRAPH - 0xFD63: 0x9F5D, //CJK UNIFIED IDEOGRAPH - 0xFD64: 0x9F5E, //CJK UNIFIED IDEOGRAPH - 0xFD65: 0x9F5F, //CJK UNIFIED IDEOGRAPH - 0xFD66: 0x9F60, //CJK UNIFIED IDEOGRAPH - 0xFD67: 0x9F61, //CJK UNIFIED IDEOGRAPH - 0xFD68: 0x9F62, //CJK UNIFIED IDEOGRAPH - 0xFD69: 0x9F63, //CJK UNIFIED IDEOGRAPH - 0xFD6A: 0x9F64, //CJK UNIFIED IDEOGRAPH - 0xFD6B: 0x9F65, //CJK UNIFIED IDEOGRAPH - 0xFD6C: 0x9F66, //CJK UNIFIED IDEOGRAPH - 0xFD6D: 0x9F67, //CJK UNIFIED IDEOGRAPH - 0xFD6E: 0x9F68, //CJK UNIFIED IDEOGRAPH - 0xFD6F: 0x9F69, //CJK UNIFIED IDEOGRAPH - 0xFD70: 0x9F6A, //CJK UNIFIED IDEOGRAPH - 0xFD71: 0x9F6B, //CJK UNIFIED IDEOGRAPH - 0xFD72: 0x9F6C, //CJK UNIFIED IDEOGRAPH - 0xFD73: 0x9F6D, //CJK UNIFIED IDEOGRAPH - 0xFD74: 0x9F6E, //CJK UNIFIED IDEOGRAPH - 0xFD75: 0x9F6F, //CJK UNIFIED IDEOGRAPH - 0xFD76: 0x9F70, //CJK UNIFIED IDEOGRAPH - 0xFD77: 0x9F71, //CJK UNIFIED IDEOGRAPH - 0xFD78: 0x9F72, //CJK UNIFIED IDEOGRAPH - 0xFD79: 0x9F73, //CJK UNIFIED IDEOGRAPH - 0xFD7A: 0x9F74, //CJK UNIFIED IDEOGRAPH - 0xFD7B: 0x9F75, //CJK UNIFIED IDEOGRAPH - 0xFD7C: 0x9F76, //CJK UNIFIED IDEOGRAPH - 0xFD7D: 0x9F77, //CJK UNIFIED IDEOGRAPH - 0xFD7E: 0x9F78, //CJK UNIFIED IDEOGRAPH - 0xFD80: 0x9F79, //CJK UNIFIED IDEOGRAPH - 0xFD81: 0x9F7A, //CJK UNIFIED IDEOGRAPH - 0xFD82: 0x9F7B, //CJK UNIFIED IDEOGRAPH - 0xFD83: 0x9F7C, //CJK UNIFIED IDEOGRAPH - 0xFD84: 0x9F7D, //CJK UNIFIED IDEOGRAPH - 0xFD85: 0x9F7E, //CJK UNIFIED IDEOGRAPH - 0xFD86: 0x9F81, //CJK UNIFIED IDEOGRAPH - 0xFD87: 0x9F82, //CJK UNIFIED IDEOGRAPH - 0xFD88: 0x9F8D, //CJK UNIFIED IDEOGRAPH - 0xFD89: 0x9F8E, //CJK UNIFIED IDEOGRAPH - 0xFD8A: 0x9F8F, //CJK UNIFIED IDEOGRAPH - 0xFD8B: 0x9F90, //CJK UNIFIED IDEOGRAPH - 0xFD8C: 0x9F91, //CJK UNIFIED IDEOGRAPH - 0xFD8D: 0x9F92, //CJK UNIFIED IDEOGRAPH - 0xFD8E: 0x9F93, //CJK UNIFIED IDEOGRAPH - 0xFD8F: 0x9F94, //CJK UNIFIED IDEOGRAPH - 0xFD90: 0x9F95, //CJK UNIFIED IDEOGRAPH - 0xFD91: 0x9F96, //CJK UNIFIED IDEOGRAPH - 0xFD92: 0x9F97, //CJK UNIFIED IDEOGRAPH - 0xFD93: 0x9F98, //CJK UNIFIED IDEOGRAPH - 0xFD94: 0x9F9C, //CJK UNIFIED IDEOGRAPH - 0xFD95: 0x9F9D, //CJK UNIFIED IDEOGRAPH - 0xFD96: 0x9F9E, //CJK UNIFIED IDEOGRAPH - 0xFD97: 0x9FA1, //CJK UNIFIED IDEOGRAPH - 0xFD98: 0x9FA2, //CJK UNIFIED IDEOGRAPH - 0xFD99: 0x9FA3, //CJK UNIFIED IDEOGRAPH - 0xFD9A: 0x9FA4, //CJK UNIFIED IDEOGRAPH - 0xFD9B: 0x9FA5, //CJK UNIFIED IDEOGRAPH - 0xFD9C: 0xF92C, //CJK COMPATIBILITY IDEOGRAPH - 0xFD9D: 0xF979, //CJK COMPATIBILITY IDEOGRAPH - 0xFD9E: 0xF995, //CJK COMPATIBILITY IDEOGRAPH - 0xFD9F: 0xF9E7, //CJK COMPATIBILITY IDEOGRAPH - 0xFDA0: 0xF9F1, //CJK COMPATIBILITY IDEOGRAPH - 0xFE40: 0xFA0C, //CJK COMPATIBILITY IDEOGRAPH - 0xFE41: 0xFA0D, //CJK COMPATIBILITY IDEOGRAPH - 0xFE42: 0xFA0E, //CJK COMPATIBILITY IDEOGRAPH - 0xFE43: 0xFA0F, //CJK COMPATIBILITY IDEOGRAPH - 0xFE44: 0xFA11, //CJK COMPATIBILITY IDEOGRAPH - 0xFE45: 0xFA13, //CJK COMPATIBILITY IDEOGRAPH - 0xFE46: 0xFA14, //CJK COMPATIBILITY IDEOGRAPH - 0xFE47: 0xFA18, //CJK COMPATIBILITY IDEOGRAPH - 0xFE48: 0xFA1F, //CJK COMPATIBILITY IDEOGRAPH - 0xFE49: 0xFA20, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4A: 0xFA21, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4B: 0xFA23, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4C: 0xFA24, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4D: 0xFA27, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4E: 0xFA28, //CJK COMPATIBILITY IDEOGRAPH - 0xFE4F: 0xFA29, //CJK COMPATIBILITY IDEOGRAPH - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp949.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp949.go deleted file mode 100644 index 52c708df..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp949.go +++ /dev/null @@ -1,17312 +0,0 @@ -package cp - -var cp949 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0xFFFD, //UNDEFINED - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - 0xFFFD, //UNDEFINED - }, - db: map[int]rune{ - 0x8141: 0xAC02, //HANGUL SYLLABLE KIYEOK A SSANGKIYEOK - 0x8142: 0xAC03, //HANGUL SYLLABLE KIYEOK A KIYEOKSIOS - 0x8143: 0xAC05, //HANGUL SYLLABLE KIYEOK A NIEUNCIEUC - 0x8144: 0xAC06, //HANGUL SYLLABLE KIYEOK A NIEUNHIEUH - 0x8145: 0xAC0B, //HANGUL SYLLABLE KIYEOK A RIEULPIEUP - 0x8146: 0xAC0C, //HANGUL SYLLABLE KIYEOK A RIEULSIOS - 0x8147: 0xAC0D, //HANGUL SYLLABLE KIYEOK A RIEULTHIEUTH - 0x8148: 0xAC0E, //HANGUL SYLLABLE KIYEOK A RIEULPHIEUPH - 0x8149: 0xAC0F, //HANGUL SYLLABLE KIYEOK A RIEULHIEUH - 0x814A: 0xAC18, //HANGUL SYLLABLE KIYEOK A KHIEUKH - 0x814B: 0xAC1E, //HANGUL SYLLABLE KIYEOK AE SSANGKIYEOK - 0x814C: 0xAC1F, //HANGUL SYLLABLE KIYEOK AE KIYEOKSIOS - 0x814D: 0xAC21, //HANGUL SYLLABLE KIYEOK AE NIEUNCIEUC - 0x814E: 0xAC22, //HANGUL SYLLABLE KIYEOK AE NIEUNHIEUH - 0x814F: 0xAC23, //HANGUL SYLLABLE KIYEOK AE TIKEUT - 0x8150: 0xAC25, //HANGUL SYLLABLE KIYEOK AE RIEULKIYEOK - 0x8151: 0xAC26, //HANGUL SYLLABLE KIYEOK AE RIEULMIEUM - 0x8152: 0xAC27, //HANGUL SYLLABLE KIYEOK AE RIEULPIEUP - 0x8153: 0xAC28, //HANGUL SYLLABLE KIYEOK AE RIEULSIOS - 0x8154: 0xAC29, //HANGUL SYLLABLE KIYEOK AE RIEULTHIEUTH - 0x8155: 0xAC2A, //HANGUL SYLLABLE KIYEOK AE RIEULPHIEUPH - 0x8156: 0xAC2B, //HANGUL SYLLABLE KIYEOK AE RIEULHIEUH - 0x8157: 0xAC2E, //HANGUL SYLLABLE KIYEOK AE PIEUPSIOS - 0x8158: 0xAC32, //HANGUL SYLLABLE KIYEOK AE CIEUC - 0x8159: 0xAC33, //HANGUL SYLLABLE KIYEOK AE CHIEUCH - 0x815A: 0xAC34, //HANGUL SYLLABLE KIYEOK AE KHIEUKH - 0x8161: 0xAC35, //HANGUL SYLLABLE KIYEOK AE THIEUTH - 0x8162: 0xAC36, //HANGUL SYLLABLE KIYEOK AE PHIEUPH - 0x8163: 0xAC37, //HANGUL SYLLABLE KIYEOK AE HIEUH - 0x8164: 0xAC3A, //HANGUL SYLLABLE KIYEOK YA SSANGKIYEOK - 0x8165: 0xAC3B, //HANGUL SYLLABLE KIYEOK YA KIYEOKSIOS - 0x8166: 0xAC3D, //HANGUL SYLLABLE KIYEOK YA NIEUNCIEUC - 0x8167: 0xAC3E, //HANGUL SYLLABLE KIYEOK YA NIEUNHIEUH - 0x8168: 0xAC3F, //HANGUL SYLLABLE KIYEOK YA TIKEUT - 0x8169: 0xAC41, //HANGUL SYLLABLE KIYEOK YA RIEULKIYEOK - 0x816A: 0xAC42, //HANGUL SYLLABLE KIYEOK YA RIEULMIEUM - 0x816B: 0xAC43, //HANGUL SYLLABLE KIYEOK YA RIEULPIEUP - 0x816C: 0xAC44, //HANGUL SYLLABLE KIYEOK YA RIEULSIOS - 0x816D: 0xAC45, //HANGUL SYLLABLE KIYEOK YA RIEULTHIEUTH - 0x816E: 0xAC46, //HANGUL SYLLABLE KIYEOK YA RIEULPHIEUPH - 0x816F: 0xAC47, //HANGUL SYLLABLE KIYEOK YA RIEULHIEUH - 0x8170: 0xAC48, //HANGUL SYLLABLE KIYEOK YA MIEUM - 0x8171: 0xAC49, //HANGUL SYLLABLE KIYEOK YA PIEUP - 0x8172: 0xAC4A, //HANGUL SYLLABLE KIYEOK YA PIEUPSIOS - 0x8173: 0xAC4C, //HANGUL SYLLABLE KIYEOK YA SSANGSIOS - 0x8174: 0xAC4E, //HANGUL SYLLABLE KIYEOK YA CIEUC - 0x8175: 0xAC4F, //HANGUL SYLLABLE KIYEOK YA CHIEUCH - 0x8176: 0xAC50, //HANGUL SYLLABLE KIYEOK YA KHIEUKH - 0x8177: 0xAC51, //HANGUL SYLLABLE KIYEOK YA THIEUTH - 0x8178: 0xAC52, //HANGUL SYLLABLE KIYEOK YA PHIEUPH - 0x8179: 0xAC53, //HANGUL SYLLABLE KIYEOK YA HIEUH - 0x817A: 0xAC55, //HANGUL SYLLABLE KIYEOK YAE KIYEOK - 0x8181: 0xAC56, //HANGUL SYLLABLE KIYEOK YAE SSANGKIYEOK - 0x8182: 0xAC57, //HANGUL SYLLABLE KIYEOK YAE KIYEOKSIOS - 0x8183: 0xAC59, //HANGUL SYLLABLE KIYEOK YAE NIEUNCIEUC - 0x8184: 0xAC5A, //HANGUL SYLLABLE KIYEOK YAE NIEUNHIEUH - 0x8185: 0xAC5B, //HANGUL SYLLABLE KIYEOK YAE TIKEUT - 0x8186: 0xAC5D, //HANGUL SYLLABLE KIYEOK YAE RIEULKIYEOK - 0x8187: 0xAC5E, //HANGUL SYLLABLE KIYEOK YAE RIEULMIEUM - 0x8188: 0xAC5F, //HANGUL SYLLABLE KIYEOK YAE RIEULPIEUP - 0x8189: 0xAC60, //HANGUL SYLLABLE KIYEOK YAE RIEULSIOS - 0x818A: 0xAC61, //HANGUL SYLLABLE KIYEOK YAE RIEULTHIEUTH - 0x818B: 0xAC62, //HANGUL SYLLABLE KIYEOK YAE RIEULPHIEUPH - 0x818C: 0xAC63, //HANGUL SYLLABLE KIYEOK YAE RIEULHIEUH - 0x818D: 0xAC64, //HANGUL SYLLABLE KIYEOK YAE MIEUM - 0x818E: 0xAC65, //HANGUL SYLLABLE KIYEOK YAE PIEUP - 0x818F: 0xAC66, //HANGUL SYLLABLE KIYEOK YAE PIEUPSIOS - 0x8190: 0xAC67, //HANGUL SYLLABLE KIYEOK YAE SIOS - 0x8191: 0xAC68, //HANGUL SYLLABLE KIYEOK YAE SSANGSIOS - 0x8192: 0xAC69, //HANGUL SYLLABLE KIYEOK YAE IEUNG - 0x8193: 0xAC6A, //HANGUL SYLLABLE KIYEOK YAE CIEUC - 0x8194: 0xAC6B, //HANGUL SYLLABLE KIYEOK YAE CHIEUCH - 0x8195: 0xAC6C, //HANGUL SYLLABLE KIYEOK YAE KHIEUKH - 0x8196: 0xAC6D, //HANGUL SYLLABLE KIYEOK YAE THIEUTH - 0x8197: 0xAC6E, //HANGUL SYLLABLE KIYEOK YAE PHIEUPH - 0x8198: 0xAC6F, //HANGUL SYLLABLE KIYEOK YAE HIEUH - 0x8199: 0xAC72, //HANGUL SYLLABLE KIYEOK EO SSANGKIYEOK - 0x819A: 0xAC73, //HANGUL SYLLABLE KIYEOK EO KIYEOKSIOS - 0x819B: 0xAC75, //HANGUL SYLLABLE KIYEOK EO NIEUNCIEUC - 0x819C: 0xAC76, //HANGUL SYLLABLE KIYEOK EO NIEUNHIEUH - 0x819D: 0xAC79, //HANGUL SYLLABLE KIYEOK EO RIEULKIYEOK - 0x819E: 0xAC7B, //HANGUL SYLLABLE KIYEOK EO RIEULPIEUP - 0x819F: 0xAC7C, //HANGUL SYLLABLE KIYEOK EO RIEULSIOS - 0x81A0: 0xAC7D, //HANGUL SYLLABLE KIYEOK EO RIEULTHIEUTH - 0x81A1: 0xAC7E, //HANGUL SYLLABLE KIYEOK EO RIEULPHIEUPH - 0x81A2: 0xAC7F, //HANGUL SYLLABLE KIYEOK EO RIEULHIEUH - 0x81A3: 0xAC82, //HANGUL SYLLABLE KIYEOK EO PIEUPSIOS - 0x81A4: 0xAC87, //HANGUL SYLLABLE KIYEOK EO CHIEUCH - 0x81A5: 0xAC88, //HANGUL SYLLABLE KIYEOK EO KHIEUKH - 0x81A6: 0xAC8D, //HANGUL SYLLABLE KIYEOK E KIYEOK - 0x81A7: 0xAC8E, //HANGUL SYLLABLE KIYEOK E SSANGKIYEOK - 0x81A8: 0xAC8F, //HANGUL SYLLABLE KIYEOK E KIYEOKSIOS - 0x81A9: 0xAC91, //HANGUL SYLLABLE KIYEOK E NIEUNCIEUC - 0x81AA: 0xAC92, //HANGUL SYLLABLE KIYEOK E NIEUNHIEUH - 0x81AB: 0xAC93, //HANGUL SYLLABLE KIYEOK E TIKEUT - 0x81AC: 0xAC95, //HANGUL SYLLABLE KIYEOK E RIEULKIYEOK - 0x81AD: 0xAC96, //HANGUL SYLLABLE KIYEOK E RIEULMIEUM - 0x81AE: 0xAC97, //HANGUL SYLLABLE KIYEOK E RIEULPIEUP - 0x81AF: 0xAC98, //HANGUL SYLLABLE KIYEOK E RIEULSIOS - 0x81B0: 0xAC99, //HANGUL SYLLABLE KIYEOK E RIEULTHIEUTH - 0x81B1: 0xAC9A, //HANGUL SYLLABLE KIYEOK E RIEULPHIEUPH - 0x81B2: 0xAC9B, //HANGUL SYLLABLE KIYEOK E RIEULHIEUH - 0x81B3: 0xAC9E, //HANGUL SYLLABLE KIYEOK E PIEUPSIOS - 0x81B4: 0xACA2, //HANGUL SYLLABLE KIYEOK E CIEUC - 0x81B5: 0xACA3, //HANGUL SYLLABLE KIYEOK E CHIEUCH - 0x81B6: 0xACA4, //HANGUL SYLLABLE KIYEOK E KHIEUKH - 0x81B7: 0xACA5, //HANGUL SYLLABLE KIYEOK E THIEUTH - 0x81B8: 0xACA6, //HANGUL SYLLABLE KIYEOK E PHIEUPH - 0x81B9: 0xACA7, //HANGUL SYLLABLE KIYEOK E HIEUH - 0x81BA: 0xACAB, //HANGUL SYLLABLE KIYEOK YEO KIYEOKSIOS - 0x81BB: 0xACAD, //HANGUL SYLLABLE KIYEOK YEO NIEUNCIEUC - 0x81BC: 0xACAE, //HANGUL SYLLABLE KIYEOK YEO NIEUNHIEUH - 0x81BD: 0xACB1, //HANGUL SYLLABLE KIYEOK YEO RIEULKIYEOK - 0x81BE: 0xACB2, //HANGUL SYLLABLE KIYEOK YEO RIEULMIEUM - 0x81BF: 0xACB3, //HANGUL SYLLABLE KIYEOK YEO RIEULPIEUP - 0x81C0: 0xACB4, //HANGUL SYLLABLE KIYEOK YEO RIEULSIOS - 0x81C1: 0xACB5, //HANGUL SYLLABLE KIYEOK YEO RIEULTHIEUTH - 0x81C2: 0xACB6, //HANGUL SYLLABLE KIYEOK YEO RIEULPHIEUPH - 0x81C3: 0xACB7, //HANGUL SYLLABLE KIYEOK YEO RIEULHIEUH - 0x81C4: 0xACBA, //HANGUL SYLLABLE KIYEOK YEO PIEUPSIOS - 0x81C5: 0xACBE, //HANGUL SYLLABLE KIYEOK YEO CIEUC - 0x81C6: 0xACBF, //HANGUL SYLLABLE KIYEOK YEO CHIEUCH - 0x81C7: 0xACC0, //HANGUL SYLLABLE KIYEOK YEO KHIEUKH - 0x81C8: 0xACC2, //HANGUL SYLLABLE KIYEOK YEO PHIEUPH - 0x81C9: 0xACC3, //HANGUL SYLLABLE KIYEOK YEO HIEUH - 0x81CA: 0xACC5, //HANGUL SYLLABLE KIYEOK YE KIYEOK - 0x81CB: 0xACC6, //HANGUL SYLLABLE KIYEOK YE SSANGKIYEOK - 0x81CC: 0xACC7, //HANGUL SYLLABLE KIYEOK YE KIYEOKSIOS - 0x81CD: 0xACC9, //HANGUL SYLLABLE KIYEOK YE NIEUNCIEUC - 0x81CE: 0xACCA, //HANGUL SYLLABLE KIYEOK YE NIEUNHIEUH - 0x81CF: 0xACCB, //HANGUL SYLLABLE KIYEOK YE TIKEUT - 0x81D0: 0xACCD, //HANGUL SYLLABLE KIYEOK YE RIEULKIYEOK - 0x81D1: 0xACCE, //HANGUL SYLLABLE KIYEOK YE RIEULMIEUM - 0x81D2: 0xACCF, //HANGUL SYLLABLE KIYEOK YE RIEULPIEUP - 0x81D3: 0xACD0, //HANGUL SYLLABLE KIYEOK YE RIEULSIOS - 0x81D4: 0xACD1, //HANGUL SYLLABLE KIYEOK YE RIEULTHIEUTH - 0x81D5: 0xACD2, //HANGUL SYLLABLE KIYEOK YE RIEULPHIEUPH - 0x81D6: 0xACD3, //HANGUL SYLLABLE KIYEOK YE RIEULHIEUH - 0x81D7: 0xACD4, //HANGUL SYLLABLE KIYEOK YE MIEUM - 0x81D8: 0xACD6, //HANGUL SYLLABLE KIYEOK YE PIEUPSIOS - 0x81D9: 0xACD8, //HANGUL SYLLABLE KIYEOK YE SSANGSIOS - 0x81DA: 0xACD9, //HANGUL SYLLABLE KIYEOK YE IEUNG - 0x81DB: 0xACDA, //HANGUL SYLLABLE KIYEOK YE CIEUC - 0x81DC: 0xACDB, //HANGUL SYLLABLE KIYEOK YE CHIEUCH - 0x81DD: 0xACDC, //HANGUL SYLLABLE KIYEOK YE KHIEUKH - 0x81DE: 0xACDD, //HANGUL SYLLABLE KIYEOK YE THIEUTH - 0x81DF: 0xACDE, //HANGUL SYLLABLE KIYEOK YE PHIEUPH - 0x81E0: 0xACDF, //HANGUL SYLLABLE KIYEOK YE HIEUH - 0x81E1: 0xACE2, //HANGUL SYLLABLE KIYEOK O SSANGKIYEOK - 0x81E2: 0xACE3, //HANGUL SYLLABLE KIYEOK O KIYEOKSIOS - 0x81E3: 0xACE5, //HANGUL SYLLABLE KIYEOK O NIEUNCIEUC - 0x81E4: 0xACE6, //HANGUL SYLLABLE KIYEOK O NIEUNHIEUH - 0x81E5: 0xACE9, //HANGUL SYLLABLE KIYEOK O RIEULKIYEOK - 0x81E6: 0xACEB, //HANGUL SYLLABLE KIYEOK O RIEULPIEUP - 0x81E7: 0xACED, //HANGUL SYLLABLE KIYEOK O RIEULTHIEUTH - 0x81E8: 0xACEE, //HANGUL SYLLABLE KIYEOK O RIEULPHIEUPH - 0x81E9: 0xACF2, //HANGUL SYLLABLE KIYEOK O PIEUPSIOS - 0x81EA: 0xACF4, //HANGUL SYLLABLE KIYEOK O SSANGSIOS - 0x81EB: 0xACF7, //HANGUL SYLLABLE KIYEOK O CHIEUCH - 0x81EC: 0xACF8, //HANGUL SYLLABLE KIYEOK O KHIEUKH - 0x81ED: 0xACF9, //HANGUL SYLLABLE KIYEOK O THIEUTH - 0x81EE: 0xACFA, //HANGUL SYLLABLE KIYEOK O PHIEUPH - 0x81EF: 0xACFB, //HANGUL SYLLABLE KIYEOK O HIEUH - 0x81F0: 0xACFE, //HANGUL SYLLABLE KIYEOK WA SSANGKIYEOK - 0x81F1: 0xACFF, //HANGUL SYLLABLE KIYEOK WA KIYEOKSIOS - 0x81F2: 0xAD01, //HANGUL SYLLABLE KIYEOK WA NIEUNCIEUC - 0x81F3: 0xAD02, //HANGUL SYLLABLE KIYEOK WA NIEUNHIEUH - 0x81F4: 0xAD03, //HANGUL SYLLABLE KIYEOK WA TIKEUT - 0x81F5: 0xAD05, //HANGUL SYLLABLE KIYEOK WA RIEULKIYEOK - 0x81F6: 0xAD07, //HANGUL SYLLABLE KIYEOK WA RIEULPIEUP - 0x81F7: 0xAD08, //HANGUL SYLLABLE KIYEOK WA RIEULSIOS - 0x81F8: 0xAD09, //HANGUL SYLLABLE KIYEOK WA RIEULTHIEUTH - 0x81F9: 0xAD0A, //HANGUL SYLLABLE KIYEOK WA RIEULPHIEUPH - 0x81FA: 0xAD0B, //HANGUL SYLLABLE KIYEOK WA RIEULHIEUH - 0x81FB: 0xAD0E, //HANGUL SYLLABLE KIYEOK WA PIEUPSIOS - 0x81FC: 0xAD10, //HANGUL SYLLABLE KIYEOK WA SSANGSIOS - 0x81FD: 0xAD12, //HANGUL SYLLABLE KIYEOK WA CIEUC - 0x81FE: 0xAD13, //HANGUL SYLLABLE KIYEOK WA CHIEUCH - 0x8241: 0xAD14, //HANGUL SYLLABLE KIYEOK WA KHIEUKH - 0x8242: 0xAD15, //HANGUL SYLLABLE KIYEOK WA THIEUTH - 0x8243: 0xAD16, //HANGUL SYLLABLE KIYEOK WA PHIEUPH - 0x8244: 0xAD17, //HANGUL SYLLABLE KIYEOK WA HIEUH - 0x8245: 0xAD19, //HANGUL SYLLABLE KIYEOK WAE KIYEOK - 0x8246: 0xAD1A, //HANGUL SYLLABLE KIYEOK WAE SSANGKIYEOK - 0x8247: 0xAD1B, //HANGUL SYLLABLE KIYEOK WAE KIYEOKSIOS - 0x8248: 0xAD1D, //HANGUL SYLLABLE KIYEOK WAE NIEUNCIEUC - 0x8249: 0xAD1E, //HANGUL SYLLABLE KIYEOK WAE NIEUNHIEUH - 0x824A: 0xAD1F, //HANGUL SYLLABLE KIYEOK WAE TIKEUT - 0x824B: 0xAD21, //HANGUL SYLLABLE KIYEOK WAE RIEULKIYEOK - 0x824C: 0xAD22, //HANGUL SYLLABLE KIYEOK WAE RIEULMIEUM - 0x824D: 0xAD23, //HANGUL SYLLABLE KIYEOK WAE RIEULPIEUP - 0x824E: 0xAD24, //HANGUL SYLLABLE KIYEOK WAE RIEULSIOS - 0x824F: 0xAD25, //HANGUL SYLLABLE KIYEOK WAE RIEULTHIEUTH - 0x8250: 0xAD26, //HANGUL SYLLABLE KIYEOK WAE RIEULPHIEUPH - 0x8251: 0xAD27, //HANGUL SYLLABLE KIYEOK WAE RIEULHIEUH - 0x8252: 0xAD28, //HANGUL SYLLABLE KIYEOK WAE MIEUM - 0x8253: 0xAD2A, //HANGUL SYLLABLE KIYEOK WAE PIEUPSIOS - 0x8254: 0xAD2B, //HANGUL SYLLABLE KIYEOK WAE SIOS - 0x8255: 0xAD2E, //HANGUL SYLLABLE KIYEOK WAE CIEUC - 0x8256: 0xAD2F, //HANGUL SYLLABLE KIYEOK WAE CHIEUCH - 0x8257: 0xAD30, //HANGUL SYLLABLE KIYEOK WAE KHIEUKH - 0x8258: 0xAD31, //HANGUL SYLLABLE KIYEOK WAE THIEUTH - 0x8259: 0xAD32, //HANGUL SYLLABLE KIYEOK WAE PHIEUPH - 0x825A: 0xAD33, //HANGUL SYLLABLE KIYEOK WAE HIEUH - 0x8261: 0xAD36, //HANGUL SYLLABLE KIYEOK OE SSANGKIYEOK - 0x8262: 0xAD37, //HANGUL SYLLABLE KIYEOK OE KIYEOKSIOS - 0x8263: 0xAD39, //HANGUL SYLLABLE KIYEOK OE NIEUNCIEUC - 0x8264: 0xAD3A, //HANGUL SYLLABLE KIYEOK OE NIEUNHIEUH - 0x8265: 0xAD3B, //HANGUL SYLLABLE KIYEOK OE TIKEUT - 0x8266: 0xAD3D, //HANGUL SYLLABLE KIYEOK OE RIEULKIYEOK - 0x8267: 0xAD3E, //HANGUL SYLLABLE KIYEOK OE RIEULMIEUM - 0x8268: 0xAD3F, //HANGUL SYLLABLE KIYEOK OE RIEULPIEUP - 0x8269: 0xAD40, //HANGUL SYLLABLE KIYEOK OE RIEULSIOS - 0x826A: 0xAD41, //HANGUL SYLLABLE KIYEOK OE RIEULTHIEUTH - 0x826B: 0xAD42, //HANGUL SYLLABLE KIYEOK OE RIEULPHIEUPH - 0x826C: 0xAD43, //HANGUL SYLLABLE KIYEOK OE RIEULHIEUH - 0x826D: 0xAD46, //HANGUL SYLLABLE KIYEOK OE PIEUPSIOS - 0x826E: 0xAD48, //HANGUL SYLLABLE KIYEOK OE SSANGSIOS - 0x826F: 0xAD4A, //HANGUL SYLLABLE KIYEOK OE CIEUC - 0x8270: 0xAD4B, //HANGUL SYLLABLE KIYEOK OE CHIEUCH - 0x8271: 0xAD4C, //HANGUL SYLLABLE KIYEOK OE KHIEUKH - 0x8272: 0xAD4D, //HANGUL SYLLABLE KIYEOK OE THIEUTH - 0x8273: 0xAD4E, //HANGUL SYLLABLE KIYEOK OE PHIEUPH - 0x8274: 0xAD4F, //HANGUL SYLLABLE KIYEOK OE HIEUH - 0x8275: 0xAD51, //HANGUL SYLLABLE KIYEOK YO KIYEOK - 0x8276: 0xAD52, //HANGUL SYLLABLE KIYEOK YO SSANGKIYEOK - 0x8277: 0xAD53, //HANGUL SYLLABLE KIYEOK YO KIYEOKSIOS - 0x8278: 0xAD55, //HANGUL SYLLABLE KIYEOK YO NIEUNCIEUC - 0x8279: 0xAD56, //HANGUL SYLLABLE KIYEOK YO NIEUNHIEUH - 0x827A: 0xAD57, //HANGUL SYLLABLE KIYEOK YO TIKEUT - 0x8281: 0xAD59, //HANGUL SYLLABLE KIYEOK YO RIEULKIYEOK - 0x8282: 0xAD5A, //HANGUL SYLLABLE KIYEOK YO RIEULMIEUM - 0x8283: 0xAD5B, //HANGUL SYLLABLE KIYEOK YO RIEULPIEUP - 0x8284: 0xAD5C, //HANGUL SYLLABLE KIYEOK YO RIEULSIOS - 0x8285: 0xAD5D, //HANGUL SYLLABLE KIYEOK YO RIEULTHIEUTH - 0x8286: 0xAD5E, //HANGUL SYLLABLE KIYEOK YO RIEULPHIEUPH - 0x8287: 0xAD5F, //HANGUL SYLLABLE KIYEOK YO RIEULHIEUH - 0x8288: 0xAD60, //HANGUL SYLLABLE KIYEOK YO MIEUM - 0x8289: 0xAD62, //HANGUL SYLLABLE KIYEOK YO PIEUPSIOS - 0x828A: 0xAD64, //HANGUL SYLLABLE KIYEOK YO SSANGSIOS - 0x828B: 0xAD65, //HANGUL SYLLABLE KIYEOK YO IEUNG - 0x828C: 0xAD66, //HANGUL SYLLABLE KIYEOK YO CIEUC - 0x828D: 0xAD67, //HANGUL SYLLABLE KIYEOK YO CHIEUCH - 0x828E: 0xAD68, //HANGUL SYLLABLE KIYEOK YO KHIEUKH - 0x828F: 0xAD69, //HANGUL SYLLABLE KIYEOK YO THIEUTH - 0x8290: 0xAD6A, //HANGUL SYLLABLE KIYEOK YO PHIEUPH - 0x8291: 0xAD6B, //HANGUL SYLLABLE KIYEOK YO HIEUH - 0x8292: 0xAD6E, //HANGUL SYLLABLE KIYEOK U SSANGKIYEOK - 0x8293: 0xAD6F, //HANGUL SYLLABLE KIYEOK U KIYEOKSIOS - 0x8294: 0xAD71, //HANGUL SYLLABLE KIYEOK U NIEUNCIEUC - 0x8295: 0xAD72, //HANGUL SYLLABLE KIYEOK U NIEUNHIEUH - 0x8296: 0xAD77, //HANGUL SYLLABLE KIYEOK U RIEULPIEUP - 0x8297: 0xAD78, //HANGUL SYLLABLE KIYEOK U RIEULSIOS - 0x8298: 0xAD79, //HANGUL SYLLABLE KIYEOK U RIEULTHIEUTH - 0x8299: 0xAD7A, //HANGUL SYLLABLE KIYEOK U RIEULPHIEUPH - 0x829A: 0xAD7E, //HANGUL SYLLABLE KIYEOK U PIEUPSIOS - 0x829B: 0xAD80, //HANGUL SYLLABLE KIYEOK U SSANGSIOS - 0x829C: 0xAD83, //HANGUL SYLLABLE KIYEOK U CHIEUCH - 0x829D: 0xAD84, //HANGUL SYLLABLE KIYEOK U KHIEUKH - 0x829E: 0xAD85, //HANGUL SYLLABLE KIYEOK U THIEUTH - 0x829F: 0xAD86, //HANGUL SYLLABLE KIYEOK U PHIEUPH - 0x82A0: 0xAD87, //HANGUL SYLLABLE KIYEOK U HIEUH - 0x82A1: 0xAD8A, //HANGUL SYLLABLE KIYEOK WEO SSANGKIYEOK - 0x82A2: 0xAD8B, //HANGUL SYLLABLE KIYEOK WEO KIYEOKSIOS - 0x82A3: 0xAD8D, //HANGUL SYLLABLE KIYEOK WEO NIEUNCIEUC - 0x82A4: 0xAD8E, //HANGUL SYLLABLE KIYEOK WEO NIEUNHIEUH - 0x82A5: 0xAD8F, //HANGUL SYLLABLE KIYEOK WEO TIKEUT - 0x82A6: 0xAD91, //HANGUL SYLLABLE KIYEOK WEO RIEULKIYEOK - 0x82A7: 0xAD92, //HANGUL SYLLABLE KIYEOK WEO RIEULMIEUM - 0x82A8: 0xAD93, //HANGUL SYLLABLE KIYEOK WEO RIEULPIEUP - 0x82A9: 0xAD94, //HANGUL SYLLABLE KIYEOK WEO RIEULSIOS - 0x82AA: 0xAD95, //HANGUL SYLLABLE KIYEOK WEO RIEULTHIEUTH - 0x82AB: 0xAD96, //HANGUL SYLLABLE KIYEOK WEO RIEULPHIEUPH - 0x82AC: 0xAD97, //HANGUL SYLLABLE KIYEOK WEO RIEULHIEUH - 0x82AD: 0xAD98, //HANGUL SYLLABLE KIYEOK WEO MIEUM - 0x82AE: 0xAD99, //HANGUL SYLLABLE KIYEOK WEO PIEUP - 0x82AF: 0xAD9A, //HANGUL SYLLABLE KIYEOK WEO PIEUPSIOS - 0x82B0: 0xAD9B, //HANGUL SYLLABLE KIYEOK WEO SIOS - 0x82B1: 0xAD9E, //HANGUL SYLLABLE KIYEOK WEO CIEUC - 0x82B2: 0xAD9F, //HANGUL SYLLABLE KIYEOK WEO CHIEUCH - 0x82B3: 0xADA0, //HANGUL SYLLABLE KIYEOK WEO KHIEUKH - 0x82B4: 0xADA1, //HANGUL SYLLABLE KIYEOK WEO THIEUTH - 0x82B5: 0xADA2, //HANGUL SYLLABLE KIYEOK WEO PHIEUPH - 0x82B6: 0xADA3, //HANGUL SYLLABLE KIYEOK WEO HIEUH - 0x82B7: 0xADA5, //HANGUL SYLLABLE KIYEOK WE KIYEOK - 0x82B8: 0xADA6, //HANGUL SYLLABLE KIYEOK WE SSANGKIYEOK - 0x82B9: 0xADA7, //HANGUL SYLLABLE KIYEOK WE KIYEOKSIOS - 0x82BA: 0xADA8, //HANGUL SYLLABLE KIYEOK WE NIEUN - 0x82BB: 0xADA9, //HANGUL SYLLABLE KIYEOK WE NIEUNCIEUC - 0x82BC: 0xADAA, //HANGUL SYLLABLE KIYEOK WE NIEUNHIEUH - 0x82BD: 0xADAB, //HANGUL SYLLABLE KIYEOK WE TIKEUT - 0x82BE: 0xADAC, //HANGUL SYLLABLE KIYEOK WE RIEUL - 0x82BF: 0xADAD, //HANGUL SYLLABLE KIYEOK WE RIEULKIYEOK - 0x82C0: 0xADAE, //HANGUL SYLLABLE KIYEOK WE RIEULMIEUM - 0x82C1: 0xADAF, //HANGUL SYLLABLE KIYEOK WE RIEULPIEUP - 0x82C2: 0xADB0, //HANGUL SYLLABLE KIYEOK WE RIEULSIOS - 0x82C3: 0xADB1, //HANGUL SYLLABLE KIYEOK WE RIEULTHIEUTH - 0x82C4: 0xADB2, //HANGUL SYLLABLE KIYEOK WE RIEULPHIEUPH - 0x82C5: 0xADB3, //HANGUL SYLLABLE KIYEOK WE RIEULHIEUH - 0x82C6: 0xADB4, //HANGUL SYLLABLE KIYEOK WE MIEUM - 0x82C7: 0xADB5, //HANGUL SYLLABLE KIYEOK WE PIEUP - 0x82C8: 0xADB6, //HANGUL SYLLABLE KIYEOK WE PIEUPSIOS - 0x82C9: 0xADB8, //HANGUL SYLLABLE KIYEOK WE SSANGSIOS - 0x82CA: 0xADB9, //HANGUL SYLLABLE KIYEOK WE IEUNG - 0x82CB: 0xADBA, //HANGUL SYLLABLE KIYEOK WE CIEUC - 0x82CC: 0xADBB, //HANGUL SYLLABLE KIYEOK WE CHIEUCH - 0x82CD: 0xADBC, //HANGUL SYLLABLE KIYEOK WE KHIEUKH - 0x82CE: 0xADBD, //HANGUL SYLLABLE KIYEOK WE THIEUTH - 0x82CF: 0xADBE, //HANGUL SYLLABLE KIYEOK WE PHIEUPH - 0x82D0: 0xADBF, //HANGUL SYLLABLE KIYEOK WE HIEUH - 0x82D1: 0xADC2, //HANGUL SYLLABLE KIYEOK WI SSANGKIYEOK - 0x82D2: 0xADC3, //HANGUL SYLLABLE KIYEOK WI KIYEOKSIOS - 0x82D3: 0xADC5, //HANGUL SYLLABLE KIYEOK WI NIEUNCIEUC - 0x82D4: 0xADC6, //HANGUL SYLLABLE KIYEOK WI NIEUNHIEUH - 0x82D5: 0xADC7, //HANGUL SYLLABLE KIYEOK WI TIKEUT - 0x82D6: 0xADC9, //HANGUL SYLLABLE KIYEOK WI RIEULKIYEOK - 0x82D7: 0xADCA, //HANGUL SYLLABLE KIYEOK WI RIEULMIEUM - 0x82D8: 0xADCB, //HANGUL SYLLABLE KIYEOK WI RIEULPIEUP - 0x82D9: 0xADCC, //HANGUL SYLLABLE KIYEOK WI RIEULSIOS - 0x82DA: 0xADCD, //HANGUL SYLLABLE KIYEOK WI RIEULTHIEUTH - 0x82DB: 0xADCE, //HANGUL SYLLABLE KIYEOK WI RIEULPHIEUPH - 0x82DC: 0xADCF, //HANGUL SYLLABLE KIYEOK WI RIEULHIEUH - 0x82DD: 0xADD2, //HANGUL SYLLABLE KIYEOK WI PIEUPSIOS - 0x82DE: 0xADD4, //HANGUL SYLLABLE KIYEOK WI SSANGSIOS - 0x82DF: 0xADD5, //HANGUL SYLLABLE KIYEOK WI IEUNG - 0x82E0: 0xADD6, //HANGUL SYLLABLE KIYEOK WI CIEUC - 0x82E1: 0xADD7, //HANGUL SYLLABLE KIYEOK WI CHIEUCH - 0x82E2: 0xADD8, //HANGUL SYLLABLE KIYEOK WI KHIEUKH - 0x82E3: 0xADD9, //HANGUL SYLLABLE KIYEOK WI THIEUTH - 0x82E4: 0xADDA, //HANGUL SYLLABLE KIYEOK WI PHIEUPH - 0x82E5: 0xADDB, //HANGUL SYLLABLE KIYEOK WI HIEUH - 0x82E6: 0xADDD, //HANGUL SYLLABLE KIYEOK YU KIYEOK - 0x82E7: 0xADDE, //HANGUL SYLLABLE KIYEOK YU SSANGKIYEOK - 0x82E8: 0xADDF, //HANGUL SYLLABLE KIYEOK YU KIYEOKSIOS - 0x82E9: 0xADE1, //HANGUL SYLLABLE KIYEOK YU NIEUNCIEUC - 0x82EA: 0xADE2, //HANGUL SYLLABLE KIYEOK YU NIEUNHIEUH - 0x82EB: 0xADE3, //HANGUL SYLLABLE KIYEOK YU TIKEUT - 0x82EC: 0xADE5, //HANGUL SYLLABLE KIYEOK YU RIEULKIYEOK - 0x82ED: 0xADE6, //HANGUL SYLLABLE KIYEOK YU RIEULMIEUM - 0x82EE: 0xADE7, //HANGUL SYLLABLE KIYEOK YU RIEULPIEUP - 0x82EF: 0xADE8, //HANGUL SYLLABLE KIYEOK YU RIEULSIOS - 0x82F0: 0xADE9, //HANGUL SYLLABLE KIYEOK YU RIEULTHIEUTH - 0x82F1: 0xADEA, //HANGUL SYLLABLE KIYEOK YU RIEULPHIEUPH - 0x82F2: 0xADEB, //HANGUL SYLLABLE KIYEOK YU RIEULHIEUH - 0x82F3: 0xADEC, //HANGUL SYLLABLE KIYEOK YU MIEUM - 0x82F4: 0xADED, //HANGUL SYLLABLE KIYEOK YU PIEUP - 0x82F5: 0xADEE, //HANGUL SYLLABLE KIYEOK YU PIEUPSIOS - 0x82F6: 0xADEF, //HANGUL SYLLABLE KIYEOK YU SIOS - 0x82F7: 0xADF0, //HANGUL SYLLABLE KIYEOK YU SSANGSIOS - 0x82F8: 0xADF1, //HANGUL SYLLABLE KIYEOK YU IEUNG - 0x82F9: 0xADF2, //HANGUL SYLLABLE KIYEOK YU CIEUC - 0x82FA: 0xADF3, //HANGUL SYLLABLE KIYEOK YU CHIEUCH - 0x82FB: 0xADF4, //HANGUL SYLLABLE KIYEOK YU KHIEUKH - 0x82FC: 0xADF5, //HANGUL SYLLABLE KIYEOK YU THIEUTH - 0x82FD: 0xADF6, //HANGUL SYLLABLE KIYEOK YU PHIEUPH - 0x82FE: 0xADF7, //HANGUL SYLLABLE KIYEOK YU HIEUH - 0x8341: 0xADFA, //HANGUL SYLLABLE KIYEOK EU SSANGKIYEOK - 0x8342: 0xADFB, //HANGUL SYLLABLE KIYEOK EU KIYEOKSIOS - 0x8343: 0xADFD, //HANGUL SYLLABLE KIYEOK EU NIEUNCIEUC - 0x8344: 0xADFE, //HANGUL SYLLABLE KIYEOK EU NIEUNHIEUH - 0x8345: 0xAE02, //HANGUL SYLLABLE KIYEOK EU RIEULMIEUM - 0x8346: 0xAE03, //HANGUL SYLLABLE KIYEOK EU RIEULPIEUP - 0x8347: 0xAE04, //HANGUL SYLLABLE KIYEOK EU RIEULSIOS - 0x8348: 0xAE05, //HANGUL SYLLABLE KIYEOK EU RIEULTHIEUTH - 0x8349: 0xAE06, //HANGUL SYLLABLE KIYEOK EU RIEULPHIEUPH - 0x834A: 0xAE07, //HANGUL SYLLABLE KIYEOK EU RIEULHIEUH - 0x834B: 0xAE0A, //HANGUL SYLLABLE KIYEOK EU PIEUPSIOS - 0x834C: 0xAE0C, //HANGUL SYLLABLE KIYEOK EU SSANGSIOS - 0x834D: 0xAE0E, //HANGUL SYLLABLE KIYEOK EU CIEUC - 0x834E: 0xAE0F, //HANGUL SYLLABLE KIYEOK EU CHIEUCH - 0x834F: 0xAE10, //HANGUL SYLLABLE KIYEOK EU KHIEUKH - 0x8350: 0xAE11, //HANGUL SYLLABLE KIYEOK EU THIEUTH - 0x8351: 0xAE12, //HANGUL SYLLABLE KIYEOK EU PHIEUPH - 0x8352: 0xAE13, //HANGUL SYLLABLE KIYEOK EU HIEUH - 0x8353: 0xAE15, //HANGUL SYLLABLE KIYEOK YI KIYEOK - 0x8354: 0xAE16, //HANGUL SYLLABLE KIYEOK YI SSANGKIYEOK - 0x8355: 0xAE17, //HANGUL SYLLABLE KIYEOK YI KIYEOKSIOS - 0x8356: 0xAE18, //HANGUL SYLLABLE KIYEOK YI NIEUN - 0x8357: 0xAE19, //HANGUL SYLLABLE KIYEOK YI NIEUNCIEUC - 0x8358: 0xAE1A, //HANGUL SYLLABLE KIYEOK YI NIEUNHIEUH - 0x8359: 0xAE1B, //HANGUL SYLLABLE KIYEOK YI TIKEUT - 0x835A: 0xAE1C, //HANGUL SYLLABLE KIYEOK YI RIEUL - 0x8361: 0xAE1D, //HANGUL SYLLABLE KIYEOK YI RIEULKIYEOK - 0x8362: 0xAE1E, //HANGUL SYLLABLE KIYEOK YI RIEULMIEUM - 0x8363: 0xAE1F, //HANGUL SYLLABLE KIYEOK YI RIEULPIEUP - 0x8364: 0xAE20, //HANGUL SYLLABLE KIYEOK YI RIEULSIOS - 0x8365: 0xAE21, //HANGUL SYLLABLE KIYEOK YI RIEULTHIEUTH - 0x8366: 0xAE22, //HANGUL SYLLABLE KIYEOK YI RIEULPHIEUPH - 0x8367: 0xAE23, //HANGUL SYLLABLE KIYEOK YI RIEULHIEUH - 0x8368: 0xAE24, //HANGUL SYLLABLE KIYEOK YI MIEUM - 0x8369: 0xAE25, //HANGUL SYLLABLE KIYEOK YI PIEUP - 0x836A: 0xAE26, //HANGUL SYLLABLE KIYEOK YI PIEUPSIOS - 0x836B: 0xAE27, //HANGUL SYLLABLE KIYEOK YI SIOS - 0x836C: 0xAE28, //HANGUL SYLLABLE KIYEOK YI SSANGSIOS - 0x836D: 0xAE29, //HANGUL SYLLABLE KIYEOK YI IEUNG - 0x836E: 0xAE2A, //HANGUL SYLLABLE KIYEOK YI CIEUC - 0x836F: 0xAE2B, //HANGUL SYLLABLE KIYEOK YI CHIEUCH - 0x8370: 0xAE2C, //HANGUL SYLLABLE KIYEOK YI KHIEUKH - 0x8371: 0xAE2D, //HANGUL SYLLABLE KIYEOK YI THIEUTH - 0x8372: 0xAE2E, //HANGUL SYLLABLE KIYEOK YI PHIEUPH - 0x8373: 0xAE2F, //HANGUL SYLLABLE KIYEOK YI HIEUH - 0x8374: 0xAE32, //HANGUL SYLLABLE KIYEOK I SSANGKIYEOK - 0x8375: 0xAE33, //HANGUL SYLLABLE KIYEOK I KIYEOKSIOS - 0x8376: 0xAE35, //HANGUL SYLLABLE KIYEOK I NIEUNCIEUC - 0x8377: 0xAE36, //HANGUL SYLLABLE KIYEOK I NIEUNHIEUH - 0x8378: 0xAE39, //HANGUL SYLLABLE KIYEOK I RIEULKIYEOK - 0x8379: 0xAE3B, //HANGUL SYLLABLE KIYEOK I RIEULPIEUP - 0x837A: 0xAE3C, //HANGUL SYLLABLE KIYEOK I RIEULSIOS - 0x8381: 0xAE3D, //HANGUL SYLLABLE KIYEOK I RIEULTHIEUTH - 0x8382: 0xAE3E, //HANGUL SYLLABLE KIYEOK I RIEULPHIEUPH - 0x8383: 0xAE3F, //HANGUL SYLLABLE KIYEOK I RIEULHIEUH - 0x8384: 0xAE42, //HANGUL SYLLABLE KIYEOK I PIEUPSIOS - 0x8385: 0xAE44, //HANGUL SYLLABLE KIYEOK I SSANGSIOS - 0x8386: 0xAE47, //HANGUL SYLLABLE KIYEOK I CHIEUCH - 0x8387: 0xAE48, //HANGUL SYLLABLE KIYEOK I KHIEUKH - 0x8388: 0xAE49, //HANGUL SYLLABLE KIYEOK I THIEUTH - 0x8389: 0xAE4B, //HANGUL SYLLABLE KIYEOK I HIEUH - 0x838A: 0xAE4F, //HANGUL SYLLABLE SSANGKIYEOK A KIYEOKSIOS - 0x838B: 0xAE51, //HANGUL SYLLABLE SSANGKIYEOK A NIEUNCIEUC - 0x838C: 0xAE52, //HANGUL SYLLABLE SSANGKIYEOK A NIEUNHIEUH - 0x838D: 0xAE53, //HANGUL SYLLABLE SSANGKIYEOK A TIKEUT - 0x838E: 0xAE55, //HANGUL SYLLABLE SSANGKIYEOK A RIEULKIYEOK - 0x838F: 0xAE57, //HANGUL SYLLABLE SSANGKIYEOK A RIEULPIEUP - 0x8390: 0xAE58, //HANGUL SYLLABLE SSANGKIYEOK A RIEULSIOS - 0x8391: 0xAE59, //HANGUL SYLLABLE SSANGKIYEOK A RIEULTHIEUTH - 0x8392: 0xAE5A, //HANGUL SYLLABLE SSANGKIYEOK A RIEULPHIEUPH - 0x8393: 0xAE5B, //HANGUL SYLLABLE SSANGKIYEOK A RIEULHIEUH - 0x8394: 0xAE5E, //HANGUL SYLLABLE SSANGKIYEOK A PIEUPSIOS - 0x8395: 0xAE62, //HANGUL SYLLABLE SSANGKIYEOK A CIEUC - 0x8396: 0xAE63, //HANGUL SYLLABLE SSANGKIYEOK A CHIEUCH - 0x8397: 0xAE64, //HANGUL SYLLABLE SSANGKIYEOK A KHIEUKH - 0x8398: 0xAE66, //HANGUL SYLLABLE SSANGKIYEOK A PHIEUPH - 0x8399: 0xAE67, //HANGUL SYLLABLE SSANGKIYEOK A HIEUH - 0x839A: 0xAE6A, //HANGUL SYLLABLE SSANGKIYEOK AE SSANGKIYEOK - 0x839B: 0xAE6B, //HANGUL SYLLABLE SSANGKIYEOK AE KIYEOKSIOS - 0x839C: 0xAE6D, //HANGUL SYLLABLE SSANGKIYEOK AE NIEUNCIEUC - 0x839D: 0xAE6E, //HANGUL SYLLABLE SSANGKIYEOK AE NIEUNHIEUH - 0x839E: 0xAE6F, //HANGUL SYLLABLE SSANGKIYEOK AE TIKEUT - 0x839F: 0xAE71, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULKIYEOK - 0x83A0: 0xAE72, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULMIEUM - 0x83A1: 0xAE73, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULPIEUP - 0x83A2: 0xAE74, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULSIOS - 0x83A3: 0xAE75, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULTHIEUTH - 0x83A4: 0xAE76, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULPHIEUPH - 0x83A5: 0xAE77, //HANGUL SYLLABLE SSANGKIYEOK AE RIEULHIEUH - 0x83A6: 0xAE7A, //HANGUL SYLLABLE SSANGKIYEOK AE PIEUPSIOS - 0x83A7: 0xAE7E, //HANGUL SYLLABLE SSANGKIYEOK AE CIEUC - 0x83A8: 0xAE7F, //HANGUL SYLLABLE SSANGKIYEOK AE CHIEUCH - 0x83A9: 0xAE80, //HANGUL SYLLABLE SSANGKIYEOK AE KHIEUKH - 0x83AA: 0xAE81, //HANGUL SYLLABLE SSANGKIYEOK AE THIEUTH - 0x83AB: 0xAE82, //HANGUL SYLLABLE SSANGKIYEOK AE PHIEUPH - 0x83AC: 0xAE83, //HANGUL SYLLABLE SSANGKIYEOK AE HIEUH - 0x83AD: 0xAE86, //HANGUL SYLLABLE SSANGKIYEOK YA SSANGKIYEOK - 0x83AE: 0xAE87, //HANGUL SYLLABLE SSANGKIYEOK YA KIYEOKSIOS - 0x83AF: 0xAE88, //HANGUL SYLLABLE SSANGKIYEOK YA NIEUN - 0x83B0: 0xAE89, //HANGUL SYLLABLE SSANGKIYEOK YA NIEUNCIEUC - 0x83B1: 0xAE8A, //HANGUL SYLLABLE SSANGKIYEOK YA NIEUNHIEUH - 0x83B2: 0xAE8B, //HANGUL SYLLABLE SSANGKIYEOK YA TIKEUT - 0x83B3: 0xAE8D, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULKIYEOK - 0x83B4: 0xAE8E, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULMIEUM - 0x83B5: 0xAE8F, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULPIEUP - 0x83B6: 0xAE90, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULSIOS - 0x83B7: 0xAE91, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULTHIEUTH - 0x83B8: 0xAE92, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULPHIEUPH - 0x83B9: 0xAE93, //HANGUL SYLLABLE SSANGKIYEOK YA RIEULHIEUH - 0x83BA: 0xAE94, //HANGUL SYLLABLE SSANGKIYEOK YA MIEUM - 0x83BB: 0xAE95, //HANGUL SYLLABLE SSANGKIYEOK YA PIEUP - 0x83BC: 0xAE96, //HANGUL SYLLABLE SSANGKIYEOK YA PIEUPSIOS - 0x83BD: 0xAE97, //HANGUL SYLLABLE SSANGKIYEOK YA SIOS - 0x83BE: 0xAE98, //HANGUL SYLLABLE SSANGKIYEOK YA SSANGSIOS - 0x83BF: 0xAE99, //HANGUL SYLLABLE SSANGKIYEOK YA IEUNG - 0x83C0: 0xAE9A, //HANGUL SYLLABLE SSANGKIYEOK YA CIEUC - 0x83C1: 0xAE9B, //HANGUL SYLLABLE SSANGKIYEOK YA CHIEUCH - 0x83C2: 0xAE9C, //HANGUL SYLLABLE SSANGKIYEOK YA KHIEUKH - 0x83C3: 0xAE9D, //HANGUL SYLLABLE SSANGKIYEOK YA THIEUTH - 0x83C4: 0xAE9E, //HANGUL SYLLABLE SSANGKIYEOK YA PHIEUPH - 0x83C5: 0xAE9F, //HANGUL SYLLABLE SSANGKIYEOK YA HIEUH - 0x83C6: 0xAEA0, //HANGUL SYLLABLE SSANGKIYEOK YAE - 0x83C7: 0xAEA1, //HANGUL SYLLABLE SSANGKIYEOK YAE KIYEOK - 0x83C8: 0xAEA2, //HANGUL SYLLABLE SSANGKIYEOK YAE SSANGKIYEOK - 0x83C9: 0xAEA3, //HANGUL SYLLABLE SSANGKIYEOK YAE KIYEOKSIOS - 0x83CA: 0xAEA4, //HANGUL SYLLABLE SSANGKIYEOK YAE NIEUN - 0x83CB: 0xAEA5, //HANGUL SYLLABLE SSANGKIYEOK YAE NIEUNCIEUC - 0x83CC: 0xAEA6, //HANGUL SYLLABLE SSANGKIYEOK YAE NIEUNHIEUH - 0x83CD: 0xAEA7, //HANGUL SYLLABLE SSANGKIYEOK YAE TIKEUT - 0x83CE: 0xAEA8, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEUL - 0x83CF: 0xAEA9, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULKIYEOK - 0x83D0: 0xAEAA, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULMIEUM - 0x83D1: 0xAEAB, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULPIEUP - 0x83D2: 0xAEAC, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULSIOS - 0x83D3: 0xAEAD, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULTHIEUTH - 0x83D4: 0xAEAE, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULPHIEUPH - 0x83D5: 0xAEAF, //HANGUL SYLLABLE SSANGKIYEOK YAE RIEULHIEUH - 0x83D6: 0xAEB0, //HANGUL SYLLABLE SSANGKIYEOK YAE MIEUM - 0x83D7: 0xAEB1, //HANGUL SYLLABLE SSANGKIYEOK YAE PIEUP - 0x83D8: 0xAEB2, //HANGUL SYLLABLE SSANGKIYEOK YAE PIEUPSIOS - 0x83D9: 0xAEB3, //HANGUL SYLLABLE SSANGKIYEOK YAE SIOS - 0x83DA: 0xAEB4, //HANGUL SYLLABLE SSANGKIYEOK YAE SSANGSIOS - 0x83DB: 0xAEB5, //HANGUL SYLLABLE SSANGKIYEOK YAE IEUNG - 0x83DC: 0xAEB6, //HANGUL SYLLABLE SSANGKIYEOK YAE CIEUC - 0x83DD: 0xAEB7, //HANGUL SYLLABLE SSANGKIYEOK YAE CHIEUCH - 0x83DE: 0xAEB8, //HANGUL SYLLABLE SSANGKIYEOK YAE KHIEUKH - 0x83DF: 0xAEB9, //HANGUL SYLLABLE SSANGKIYEOK YAE THIEUTH - 0x83E0: 0xAEBA, //HANGUL SYLLABLE SSANGKIYEOK YAE PHIEUPH - 0x83E1: 0xAEBB, //HANGUL SYLLABLE SSANGKIYEOK YAE HIEUH - 0x83E2: 0xAEBF, //HANGUL SYLLABLE SSANGKIYEOK EO KIYEOKSIOS - 0x83E3: 0xAEC1, //HANGUL SYLLABLE SSANGKIYEOK EO NIEUNCIEUC - 0x83E4: 0xAEC2, //HANGUL SYLLABLE SSANGKIYEOK EO NIEUNHIEUH - 0x83E5: 0xAEC3, //HANGUL SYLLABLE SSANGKIYEOK EO TIKEUT - 0x83E6: 0xAEC5, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULKIYEOK - 0x83E7: 0xAEC6, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULMIEUM - 0x83E8: 0xAEC7, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULPIEUP - 0x83E9: 0xAEC8, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULSIOS - 0x83EA: 0xAEC9, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULTHIEUTH - 0x83EB: 0xAECA, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULPHIEUPH - 0x83EC: 0xAECB, //HANGUL SYLLABLE SSANGKIYEOK EO RIEULHIEUH - 0x83ED: 0xAECE, //HANGUL SYLLABLE SSANGKIYEOK EO PIEUPSIOS - 0x83EE: 0xAED2, //HANGUL SYLLABLE SSANGKIYEOK EO CIEUC - 0x83EF: 0xAED3, //HANGUL SYLLABLE SSANGKIYEOK EO CHIEUCH - 0x83F0: 0xAED4, //HANGUL SYLLABLE SSANGKIYEOK EO KHIEUKH - 0x83F1: 0xAED5, //HANGUL SYLLABLE SSANGKIYEOK EO THIEUTH - 0x83F2: 0xAED6, //HANGUL SYLLABLE SSANGKIYEOK EO PHIEUPH - 0x83F3: 0xAED7, //HANGUL SYLLABLE SSANGKIYEOK EO HIEUH - 0x83F4: 0xAEDA, //HANGUL SYLLABLE SSANGKIYEOK E SSANGKIYEOK - 0x83F5: 0xAEDB, //HANGUL SYLLABLE SSANGKIYEOK E KIYEOKSIOS - 0x83F6: 0xAEDD, //HANGUL SYLLABLE SSANGKIYEOK E NIEUNCIEUC - 0x83F7: 0xAEDE, //HANGUL SYLLABLE SSANGKIYEOK E NIEUNHIEUH - 0x83F8: 0xAEDF, //HANGUL SYLLABLE SSANGKIYEOK E TIKEUT - 0x83F9: 0xAEE0, //HANGUL SYLLABLE SSANGKIYEOK E RIEUL - 0x83FA: 0xAEE1, //HANGUL SYLLABLE SSANGKIYEOK E RIEULKIYEOK - 0x83FB: 0xAEE2, //HANGUL SYLLABLE SSANGKIYEOK E RIEULMIEUM - 0x83FC: 0xAEE3, //HANGUL SYLLABLE SSANGKIYEOK E RIEULPIEUP - 0x83FD: 0xAEE4, //HANGUL SYLLABLE SSANGKIYEOK E RIEULSIOS - 0x83FE: 0xAEE5, //HANGUL SYLLABLE SSANGKIYEOK E RIEULTHIEUTH - 0x8441: 0xAEE6, //HANGUL SYLLABLE SSANGKIYEOK E RIEULPHIEUPH - 0x8442: 0xAEE7, //HANGUL SYLLABLE SSANGKIYEOK E RIEULHIEUH - 0x8443: 0xAEE9, //HANGUL SYLLABLE SSANGKIYEOK E PIEUP - 0x8444: 0xAEEA, //HANGUL SYLLABLE SSANGKIYEOK E PIEUPSIOS - 0x8445: 0xAEEC, //HANGUL SYLLABLE SSANGKIYEOK E SSANGSIOS - 0x8446: 0xAEEE, //HANGUL SYLLABLE SSANGKIYEOK E CIEUC - 0x8447: 0xAEEF, //HANGUL SYLLABLE SSANGKIYEOK E CHIEUCH - 0x8448: 0xAEF0, //HANGUL SYLLABLE SSANGKIYEOK E KHIEUKH - 0x8449: 0xAEF1, //HANGUL SYLLABLE SSANGKIYEOK E THIEUTH - 0x844A: 0xAEF2, //HANGUL SYLLABLE SSANGKIYEOK E PHIEUPH - 0x844B: 0xAEF3, //HANGUL SYLLABLE SSANGKIYEOK E HIEUH - 0x844C: 0xAEF5, //HANGUL SYLLABLE SSANGKIYEOK YEO KIYEOK - 0x844D: 0xAEF6, //HANGUL SYLLABLE SSANGKIYEOK YEO SSANGKIYEOK - 0x844E: 0xAEF7, //HANGUL SYLLABLE SSANGKIYEOK YEO KIYEOKSIOS - 0x844F: 0xAEF9, //HANGUL SYLLABLE SSANGKIYEOK YEO NIEUNCIEUC - 0x8450: 0xAEFA, //HANGUL SYLLABLE SSANGKIYEOK YEO NIEUNHIEUH - 0x8451: 0xAEFB, //HANGUL SYLLABLE SSANGKIYEOK YEO TIKEUT - 0x8452: 0xAEFD, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULKIYEOK - 0x8453: 0xAEFE, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULMIEUM - 0x8454: 0xAEFF, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULPIEUP - 0x8455: 0xAF00, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULSIOS - 0x8456: 0xAF01, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULTHIEUTH - 0x8457: 0xAF02, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULPHIEUPH - 0x8458: 0xAF03, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEULHIEUH - 0x8459: 0xAF04, //HANGUL SYLLABLE SSANGKIYEOK YEO MIEUM - 0x845A: 0xAF05, //HANGUL SYLLABLE SSANGKIYEOK YEO PIEUP - 0x8461: 0xAF06, //HANGUL SYLLABLE SSANGKIYEOK YEO PIEUPSIOS - 0x8462: 0xAF09, //HANGUL SYLLABLE SSANGKIYEOK YEO IEUNG - 0x8463: 0xAF0A, //HANGUL SYLLABLE SSANGKIYEOK YEO CIEUC - 0x8464: 0xAF0B, //HANGUL SYLLABLE SSANGKIYEOK YEO CHIEUCH - 0x8465: 0xAF0C, //HANGUL SYLLABLE SSANGKIYEOK YEO KHIEUKH - 0x8466: 0xAF0E, //HANGUL SYLLABLE SSANGKIYEOK YEO PHIEUPH - 0x8467: 0xAF0F, //HANGUL SYLLABLE SSANGKIYEOK YEO HIEUH - 0x8468: 0xAF11, //HANGUL SYLLABLE SSANGKIYEOK YE KIYEOK - 0x8469: 0xAF12, //HANGUL SYLLABLE SSANGKIYEOK YE SSANGKIYEOK - 0x846A: 0xAF13, //HANGUL SYLLABLE SSANGKIYEOK YE KIYEOKSIOS - 0x846B: 0xAF14, //HANGUL SYLLABLE SSANGKIYEOK YE NIEUN - 0x846C: 0xAF15, //HANGUL SYLLABLE SSANGKIYEOK YE NIEUNCIEUC - 0x846D: 0xAF16, //HANGUL SYLLABLE SSANGKIYEOK YE NIEUNHIEUH - 0x846E: 0xAF17, //HANGUL SYLLABLE SSANGKIYEOK YE TIKEUT - 0x846F: 0xAF18, //HANGUL SYLLABLE SSANGKIYEOK YE RIEUL - 0x8470: 0xAF19, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULKIYEOK - 0x8471: 0xAF1A, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULMIEUM - 0x8472: 0xAF1B, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULPIEUP - 0x8473: 0xAF1C, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULSIOS - 0x8474: 0xAF1D, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULTHIEUTH - 0x8475: 0xAF1E, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULPHIEUPH - 0x8476: 0xAF1F, //HANGUL SYLLABLE SSANGKIYEOK YE RIEULHIEUH - 0x8477: 0xAF20, //HANGUL SYLLABLE SSANGKIYEOK YE MIEUM - 0x8478: 0xAF21, //HANGUL SYLLABLE SSANGKIYEOK YE PIEUP - 0x8479: 0xAF22, //HANGUL SYLLABLE SSANGKIYEOK YE PIEUPSIOS - 0x847A: 0xAF23, //HANGUL SYLLABLE SSANGKIYEOK YE SIOS - 0x8481: 0xAF24, //HANGUL SYLLABLE SSANGKIYEOK YE SSANGSIOS - 0x8482: 0xAF25, //HANGUL SYLLABLE SSANGKIYEOK YE IEUNG - 0x8483: 0xAF26, //HANGUL SYLLABLE SSANGKIYEOK YE CIEUC - 0x8484: 0xAF27, //HANGUL SYLLABLE SSANGKIYEOK YE CHIEUCH - 0x8485: 0xAF28, //HANGUL SYLLABLE SSANGKIYEOK YE KHIEUKH - 0x8486: 0xAF29, //HANGUL SYLLABLE SSANGKIYEOK YE THIEUTH - 0x8487: 0xAF2A, //HANGUL SYLLABLE SSANGKIYEOK YE PHIEUPH - 0x8488: 0xAF2B, //HANGUL SYLLABLE SSANGKIYEOK YE HIEUH - 0x8489: 0xAF2E, //HANGUL SYLLABLE SSANGKIYEOK O SSANGKIYEOK - 0x848A: 0xAF2F, //HANGUL SYLLABLE SSANGKIYEOK O KIYEOKSIOS - 0x848B: 0xAF31, //HANGUL SYLLABLE SSANGKIYEOK O NIEUNCIEUC - 0x848C: 0xAF33, //HANGUL SYLLABLE SSANGKIYEOK O TIKEUT - 0x848D: 0xAF35, //HANGUL SYLLABLE SSANGKIYEOK O RIEULKIYEOK - 0x848E: 0xAF36, //HANGUL SYLLABLE SSANGKIYEOK O RIEULMIEUM - 0x848F: 0xAF37, //HANGUL SYLLABLE SSANGKIYEOK O RIEULPIEUP - 0x8490: 0xAF38, //HANGUL SYLLABLE SSANGKIYEOK O RIEULSIOS - 0x8491: 0xAF39, //HANGUL SYLLABLE SSANGKIYEOK O RIEULTHIEUTH - 0x8492: 0xAF3A, //HANGUL SYLLABLE SSANGKIYEOK O RIEULPHIEUPH - 0x8493: 0xAF3B, //HANGUL SYLLABLE SSANGKIYEOK O RIEULHIEUH - 0x8494: 0xAF3E, //HANGUL SYLLABLE SSANGKIYEOK O PIEUPSIOS - 0x8495: 0xAF40, //HANGUL SYLLABLE SSANGKIYEOK O SSANGSIOS - 0x8496: 0xAF44, //HANGUL SYLLABLE SSANGKIYEOK O KHIEUKH - 0x8497: 0xAF45, //HANGUL SYLLABLE SSANGKIYEOK O THIEUTH - 0x8498: 0xAF46, //HANGUL SYLLABLE SSANGKIYEOK O PHIEUPH - 0x8499: 0xAF47, //HANGUL SYLLABLE SSANGKIYEOK O HIEUH - 0x849A: 0xAF4A, //HANGUL SYLLABLE SSANGKIYEOK WA SSANGKIYEOK - 0x849B: 0xAF4B, //HANGUL SYLLABLE SSANGKIYEOK WA KIYEOKSIOS - 0x849C: 0xAF4C, //HANGUL SYLLABLE SSANGKIYEOK WA NIEUN - 0x849D: 0xAF4D, //HANGUL SYLLABLE SSANGKIYEOK WA NIEUNCIEUC - 0x849E: 0xAF4E, //HANGUL SYLLABLE SSANGKIYEOK WA NIEUNHIEUH - 0x849F: 0xAF4F, //HANGUL SYLLABLE SSANGKIYEOK WA TIKEUT - 0x84A0: 0xAF51, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULKIYEOK - 0x84A1: 0xAF52, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULMIEUM - 0x84A2: 0xAF53, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULPIEUP - 0x84A3: 0xAF54, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULSIOS - 0x84A4: 0xAF55, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULTHIEUTH - 0x84A5: 0xAF56, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULPHIEUPH - 0x84A6: 0xAF57, //HANGUL SYLLABLE SSANGKIYEOK WA RIEULHIEUH - 0x84A7: 0xAF58, //HANGUL SYLLABLE SSANGKIYEOK WA MIEUM - 0x84A8: 0xAF59, //HANGUL SYLLABLE SSANGKIYEOK WA PIEUP - 0x84A9: 0xAF5A, //HANGUL SYLLABLE SSANGKIYEOK WA PIEUPSIOS - 0x84AA: 0xAF5B, //HANGUL SYLLABLE SSANGKIYEOK WA SIOS - 0x84AB: 0xAF5E, //HANGUL SYLLABLE SSANGKIYEOK WA CIEUC - 0x84AC: 0xAF5F, //HANGUL SYLLABLE SSANGKIYEOK WA CHIEUCH - 0x84AD: 0xAF60, //HANGUL SYLLABLE SSANGKIYEOK WA KHIEUKH - 0x84AE: 0xAF61, //HANGUL SYLLABLE SSANGKIYEOK WA THIEUTH - 0x84AF: 0xAF62, //HANGUL SYLLABLE SSANGKIYEOK WA PHIEUPH - 0x84B0: 0xAF63, //HANGUL SYLLABLE SSANGKIYEOK WA HIEUH - 0x84B1: 0xAF66, //HANGUL SYLLABLE SSANGKIYEOK WAE SSANGKIYEOK - 0x84B2: 0xAF67, //HANGUL SYLLABLE SSANGKIYEOK WAE KIYEOKSIOS - 0x84B3: 0xAF68, //HANGUL SYLLABLE SSANGKIYEOK WAE NIEUN - 0x84B4: 0xAF69, //HANGUL SYLLABLE SSANGKIYEOK WAE NIEUNCIEUC - 0x84B5: 0xAF6A, //HANGUL SYLLABLE SSANGKIYEOK WAE NIEUNHIEUH - 0x84B6: 0xAF6B, //HANGUL SYLLABLE SSANGKIYEOK WAE TIKEUT - 0x84B7: 0xAF6C, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEUL - 0x84B8: 0xAF6D, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULKIYEOK - 0x84B9: 0xAF6E, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULMIEUM - 0x84BA: 0xAF6F, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULPIEUP - 0x84BB: 0xAF70, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULSIOS - 0x84BC: 0xAF71, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULTHIEUTH - 0x84BD: 0xAF72, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULPHIEUPH - 0x84BE: 0xAF73, //HANGUL SYLLABLE SSANGKIYEOK WAE RIEULHIEUH - 0x84BF: 0xAF74, //HANGUL SYLLABLE SSANGKIYEOK WAE MIEUM - 0x84C0: 0xAF75, //HANGUL SYLLABLE SSANGKIYEOK WAE PIEUP - 0x84C1: 0xAF76, //HANGUL SYLLABLE SSANGKIYEOK WAE PIEUPSIOS - 0x84C2: 0xAF77, //HANGUL SYLLABLE SSANGKIYEOK WAE SIOS - 0x84C3: 0xAF78, //HANGUL SYLLABLE SSANGKIYEOK WAE SSANGSIOS - 0x84C4: 0xAF7A, //HANGUL SYLLABLE SSANGKIYEOK WAE CIEUC - 0x84C5: 0xAF7B, //HANGUL SYLLABLE SSANGKIYEOK WAE CHIEUCH - 0x84C6: 0xAF7C, //HANGUL SYLLABLE SSANGKIYEOK WAE KHIEUKH - 0x84C7: 0xAF7D, //HANGUL SYLLABLE SSANGKIYEOK WAE THIEUTH - 0x84C8: 0xAF7E, //HANGUL SYLLABLE SSANGKIYEOK WAE PHIEUPH - 0x84C9: 0xAF7F, //HANGUL SYLLABLE SSANGKIYEOK WAE HIEUH - 0x84CA: 0xAF81, //HANGUL SYLLABLE SSANGKIYEOK OE KIYEOK - 0x84CB: 0xAF82, //HANGUL SYLLABLE SSANGKIYEOK OE SSANGKIYEOK - 0x84CC: 0xAF83, //HANGUL SYLLABLE SSANGKIYEOK OE KIYEOKSIOS - 0x84CD: 0xAF85, //HANGUL SYLLABLE SSANGKIYEOK OE NIEUNCIEUC - 0x84CE: 0xAF86, //HANGUL SYLLABLE SSANGKIYEOK OE NIEUNHIEUH - 0x84CF: 0xAF87, //HANGUL SYLLABLE SSANGKIYEOK OE TIKEUT - 0x84D0: 0xAF89, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULKIYEOK - 0x84D1: 0xAF8A, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULMIEUM - 0x84D2: 0xAF8B, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULPIEUP - 0x84D3: 0xAF8C, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULSIOS - 0x84D4: 0xAF8D, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULTHIEUTH - 0x84D5: 0xAF8E, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULPHIEUPH - 0x84D6: 0xAF8F, //HANGUL SYLLABLE SSANGKIYEOK OE RIEULHIEUH - 0x84D7: 0xAF92, //HANGUL SYLLABLE SSANGKIYEOK OE PIEUPSIOS - 0x84D8: 0xAF93, //HANGUL SYLLABLE SSANGKIYEOK OE SIOS - 0x84D9: 0xAF94, //HANGUL SYLLABLE SSANGKIYEOK OE SSANGSIOS - 0x84DA: 0xAF96, //HANGUL SYLLABLE SSANGKIYEOK OE CIEUC - 0x84DB: 0xAF97, //HANGUL SYLLABLE SSANGKIYEOK OE CHIEUCH - 0x84DC: 0xAF98, //HANGUL SYLLABLE SSANGKIYEOK OE KHIEUKH - 0x84DD: 0xAF99, //HANGUL SYLLABLE SSANGKIYEOK OE THIEUTH - 0x84DE: 0xAF9A, //HANGUL SYLLABLE SSANGKIYEOK OE PHIEUPH - 0x84DF: 0xAF9B, //HANGUL SYLLABLE SSANGKIYEOK OE HIEUH - 0x84E0: 0xAF9D, //HANGUL SYLLABLE SSANGKIYEOK YO KIYEOK - 0x84E1: 0xAF9E, //HANGUL SYLLABLE SSANGKIYEOK YO SSANGKIYEOK - 0x84E2: 0xAF9F, //HANGUL SYLLABLE SSANGKIYEOK YO KIYEOKSIOS - 0x84E3: 0xAFA0, //HANGUL SYLLABLE SSANGKIYEOK YO NIEUN - 0x84E4: 0xAFA1, //HANGUL SYLLABLE SSANGKIYEOK YO NIEUNCIEUC - 0x84E5: 0xAFA2, //HANGUL SYLLABLE SSANGKIYEOK YO NIEUNHIEUH - 0x84E6: 0xAFA3, //HANGUL SYLLABLE SSANGKIYEOK YO TIKEUT - 0x84E7: 0xAFA4, //HANGUL SYLLABLE SSANGKIYEOK YO RIEUL - 0x84E8: 0xAFA5, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULKIYEOK - 0x84E9: 0xAFA6, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULMIEUM - 0x84EA: 0xAFA7, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULPIEUP - 0x84EB: 0xAFA8, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULSIOS - 0x84EC: 0xAFA9, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULTHIEUTH - 0x84ED: 0xAFAA, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULPHIEUPH - 0x84EE: 0xAFAB, //HANGUL SYLLABLE SSANGKIYEOK YO RIEULHIEUH - 0x84EF: 0xAFAC, //HANGUL SYLLABLE SSANGKIYEOK YO MIEUM - 0x84F0: 0xAFAD, //HANGUL SYLLABLE SSANGKIYEOK YO PIEUP - 0x84F1: 0xAFAE, //HANGUL SYLLABLE SSANGKIYEOK YO PIEUPSIOS - 0x84F2: 0xAFAF, //HANGUL SYLLABLE SSANGKIYEOK YO SIOS - 0x84F3: 0xAFB0, //HANGUL SYLLABLE SSANGKIYEOK YO SSANGSIOS - 0x84F4: 0xAFB1, //HANGUL SYLLABLE SSANGKIYEOK YO IEUNG - 0x84F5: 0xAFB2, //HANGUL SYLLABLE SSANGKIYEOK YO CIEUC - 0x84F6: 0xAFB3, //HANGUL SYLLABLE SSANGKIYEOK YO CHIEUCH - 0x84F7: 0xAFB4, //HANGUL SYLLABLE SSANGKIYEOK YO KHIEUKH - 0x84F8: 0xAFB5, //HANGUL SYLLABLE SSANGKIYEOK YO THIEUTH - 0x84F9: 0xAFB6, //HANGUL SYLLABLE SSANGKIYEOK YO PHIEUPH - 0x84FA: 0xAFB7, //HANGUL SYLLABLE SSANGKIYEOK YO HIEUH - 0x84FB: 0xAFBA, //HANGUL SYLLABLE SSANGKIYEOK U SSANGKIYEOK - 0x84FC: 0xAFBB, //HANGUL SYLLABLE SSANGKIYEOK U KIYEOKSIOS - 0x84FD: 0xAFBD, //HANGUL SYLLABLE SSANGKIYEOK U NIEUNCIEUC - 0x84FE: 0xAFBE, //HANGUL SYLLABLE SSANGKIYEOK U NIEUNHIEUH - 0x8541: 0xAFBF, //HANGUL SYLLABLE SSANGKIYEOK U TIKEUT - 0x8542: 0xAFC1, //HANGUL SYLLABLE SSANGKIYEOK U RIEULKIYEOK - 0x8543: 0xAFC2, //HANGUL SYLLABLE SSANGKIYEOK U RIEULMIEUM - 0x8544: 0xAFC3, //HANGUL SYLLABLE SSANGKIYEOK U RIEULPIEUP - 0x8545: 0xAFC4, //HANGUL SYLLABLE SSANGKIYEOK U RIEULSIOS - 0x8546: 0xAFC5, //HANGUL SYLLABLE SSANGKIYEOK U RIEULTHIEUTH - 0x8547: 0xAFC6, //HANGUL SYLLABLE SSANGKIYEOK U RIEULPHIEUPH - 0x8548: 0xAFCA, //HANGUL SYLLABLE SSANGKIYEOK U PIEUPSIOS - 0x8549: 0xAFCC, //HANGUL SYLLABLE SSANGKIYEOK U SSANGSIOS - 0x854A: 0xAFCF, //HANGUL SYLLABLE SSANGKIYEOK U CHIEUCH - 0x854B: 0xAFD0, //HANGUL SYLLABLE SSANGKIYEOK U KHIEUKH - 0x854C: 0xAFD1, //HANGUL SYLLABLE SSANGKIYEOK U THIEUTH - 0x854D: 0xAFD2, //HANGUL SYLLABLE SSANGKIYEOK U PHIEUPH - 0x854E: 0xAFD3, //HANGUL SYLLABLE SSANGKIYEOK U HIEUH - 0x854F: 0xAFD5, //HANGUL SYLLABLE SSANGKIYEOK WEO KIYEOK - 0x8550: 0xAFD6, //HANGUL SYLLABLE SSANGKIYEOK WEO SSANGKIYEOK - 0x8551: 0xAFD7, //HANGUL SYLLABLE SSANGKIYEOK WEO KIYEOKSIOS - 0x8552: 0xAFD8, //HANGUL SYLLABLE SSANGKIYEOK WEO NIEUN - 0x8553: 0xAFD9, //HANGUL SYLLABLE SSANGKIYEOK WEO NIEUNCIEUC - 0x8554: 0xAFDA, //HANGUL SYLLABLE SSANGKIYEOK WEO NIEUNHIEUH - 0x8555: 0xAFDB, //HANGUL SYLLABLE SSANGKIYEOK WEO TIKEUT - 0x8556: 0xAFDD, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULKIYEOK - 0x8557: 0xAFDE, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULMIEUM - 0x8558: 0xAFDF, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULPIEUP - 0x8559: 0xAFE0, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULSIOS - 0x855A: 0xAFE1, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULTHIEUTH - 0x8561: 0xAFE2, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULPHIEUPH - 0x8562: 0xAFE3, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEULHIEUH - 0x8563: 0xAFE4, //HANGUL SYLLABLE SSANGKIYEOK WEO MIEUM - 0x8564: 0xAFE5, //HANGUL SYLLABLE SSANGKIYEOK WEO PIEUP - 0x8565: 0xAFE6, //HANGUL SYLLABLE SSANGKIYEOK WEO PIEUPSIOS - 0x8566: 0xAFE7, //HANGUL SYLLABLE SSANGKIYEOK WEO SIOS - 0x8567: 0xAFEA, //HANGUL SYLLABLE SSANGKIYEOK WEO CIEUC - 0x8568: 0xAFEB, //HANGUL SYLLABLE SSANGKIYEOK WEO CHIEUCH - 0x8569: 0xAFEC, //HANGUL SYLLABLE SSANGKIYEOK WEO KHIEUKH - 0x856A: 0xAFED, //HANGUL SYLLABLE SSANGKIYEOK WEO THIEUTH - 0x856B: 0xAFEE, //HANGUL SYLLABLE SSANGKIYEOK WEO PHIEUPH - 0x856C: 0xAFEF, //HANGUL SYLLABLE SSANGKIYEOK WEO HIEUH - 0x856D: 0xAFF2, //HANGUL SYLLABLE SSANGKIYEOK WE SSANGKIYEOK - 0x856E: 0xAFF3, //HANGUL SYLLABLE SSANGKIYEOK WE KIYEOKSIOS - 0x856F: 0xAFF5, //HANGUL SYLLABLE SSANGKIYEOK WE NIEUNCIEUC - 0x8570: 0xAFF6, //HANGUL SYLLABLE SSANGKIYEOK WE NIEUNHIEUH - 0x8571: 0xAFF7, //HANGUL SYLLABLE SSANGKIYEOK WE TIKEUT - 0x8572: 0xAFF9, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULKIYEOK - 0x8573: 0xAFFA, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULMIEUM - 0x8574: 0xAFFB, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULPIEUP - 0x8575: 0xAFFC, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULSIOS - 0x8576: 0xAFFD, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULTHIEUTH - 0x8577: 0xAFFE, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULPHIEUPH - 0x8578: 0xAFFF, //HANGUL SYLLABLE SSANGKIYEOK WE RIEULHIEUH - 0x8579: 0xB002, //HANGUL SYLLABLE SSANGKIYEOK WE PIEUPSIOS - 0x857A: 0xB003, //HANGUL SYLLABLE SSANGKIYEOK WE SIOS - 0x8581: 0xB005, //HANGUL SYLLABLE SSANGKIYEOK WE IEUNG - 0x8582: 0xB006, //HANGUL SYLLABLE SSANGKIYEOK WE CIEUC - 0x8583: 0xB007, //HANGUL SYLLABLE SSANGKIYEOK WE CHIEUCH - 0x8584: 0xB008, //HANGUL SYLLABLE SSANGKIYEOK WE KHIEUKH - 0x8585: 0xB009, //HANGUL SYLLABLE SSANGKIYEOK WE THIEUTH - 0x8586: 0xB00A, //HANGUL SYLLABLE SSANGKIYEOK WE PHIEUPH - 0x8587: 0xB00B, //HANGUL SYLLABLE SSANGKIYEOK WE HIEUH - 0x8588: 0xB00D, //HANGUL SYLLABLE SSANGKIYEOK WI KIYEOK - 0x8589: 0xB00E, //HANGUL SYLLABLE SSANGKIYEOK WI SSANGKIYEOK - 0x858A: 0xB00F, //HANGUL SYLLABLE SSANGKIYEOK WI KIYEOKSIOS - 0x858B: 0xB011, //HANGUL SYLLABLE SSANGKIYEOK WI NIEUNCIEUC - 0x858C: 0xB012, //HANGUL SYLLABLE SSANGKIYEOK WI NIEUNHIEUH - 0x858D: 0xB013, //HANGUL SYLLABLE SSANGKIYEOK WI TIKEUT - 0x858E: 0xB015, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULKIYEOK - 0x858F: 0xB016, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULMIEUM - 0x8590: 0xB017, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULPIEUP - 0x8591: 0xB018, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULSIOS - 0x8592: 0xB019, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULTHIEUTH - 0x8593: 0xB01A, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULPHIEUPH - 0x8594: 0xB01B, //HANGUL SYLLABLE SSANGKIYEOK WI RIEULHIEUH - 0x8595: 0xB01E, //HANGUL SYLLABLE SSANGKIYEOK WI PIEUPSIOS - 0x8596: 0xB01F, //HANGUL SYLLABLE SSANGKIYEOK WI SIOS - 0x8597: 0xB020, //HANGUL SYLLABLE SSANGKIYEOK WI SSANGSIOS - 0x8598: 0xB021, //HANGUL SYLLABLE SSANGKIYEOK WI IEUNG - 0x8599: 0xB022, //HANGUL SYLLABLE SSANGKIYEOK WI CIEUC - 0x859A: 0xB023, //HANGUL SYLLABLE SSANGKIYEOK WI CHIEUCH - 0x859B: 0xB024, //HANGUL SYLLABLE SSANGKIYEOK WI KHIEUKH - 0x859C: 0xB025, //HANGUL SYLLABLE SSANGKIYEOK WI THIEUTH - 0x859D: 0xB026, //HANGUL SYLLABLE SSANGKIYEOK WI PHIEUPH - 0x859E: 0xB027, //HANGUL SYLLABLE SSANGKIYEOK WI HIEUH - 0x859F: 0xB029, //HANGUL SYLLABLE SSANGKIYEOK YU KIYEOK - 0x85A0: 0xB02A, //HANGUL SYLLABLE SSANGKIYEOK YU SSANGKIYEOK - 0x85A1: 0xB02B, //HANGUL SYLLABLE SSANGKIYEOK YU KIYEOKSIOS - 0x85A2: 0xB02C, //HANGUL SYLLABLE SSANGKIYEOK YU NIEUN - 0x85A3: 0xB02D, //HANGUL SYLLABLE SSANGKIYEOK YU NIEUNCIEUC - 0x85A4: 0xB02E, //HANGUL SYLLABLE SSANGKIYEOK YU NIEUNHIEUH - 0x85A5: 0xB02F, //HANGUL SYLLABLE SSANGKIYEOK YU TIKEUT - 0x85A6: 0xB030, //HANGUL SYLLABLE SSANGKIYEOK YU RIEUL - 0x85A7: 0xB031, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULKIYEOK - 0x85A8: 0xB032, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULMIEUM - 0x85A9: 0xB033, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULPIEUP - 0x85AA: 0xB034, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULSIOS - 0x85AB: 0xB035, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULTHIEUTH - 0x85AC: 0xB036, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULPHIEUPH - 0x85AD: 0xB037, //HANGUL SYLLABLE SSANGKIYEOK YU RIEULHIEUH - 0x85AE: 0xB038, //HANGUL SYLLABLE SSANGKIYEOK YU MIEUM - 0x85AF: 0xB039, //HANGUL SYLLABLE SSANGKIYEOK YU PIEUP - 0x85B0: 0xB03A, //HANGUL SYLLABLE SSANGKIYEOK YU PIEUPSIOS - 0x85B1: 0xB03B, //HANGUL SYLLABLE SSANGKIYEOK YU SIOS - 0x85B2: 0xB03C, //HANGUL SYLLABLE SSANGKIYEOK YU SSANGSIOS - 0x85B3: 0xB03D, //HANGUL SYLLABLE SSANGKIYEOK YU IEUNG - 0x85B4: 0xB03E, //HANGUL SYLLABLE SSANGKIYEOK YU CIEUC - 0x85B5: 0xB03F, //HANGUL SYLLABLE SSANGKIYEOK YU CHIEUCH - 0x85B6: 0xB040, //HANGUL SYLLABLE SSANGKIYEOK YU KHIEUKH - 0x85B7: 0xB041, //HANGUL SYLLABLE SSANGKIYEOK YU THIEUTH - 0x85B8: 0xB042, //HANGUL SYLLABLE SSANGKIYEOK YU PHIEUPH - 0x85B9: 0xB043, //HANGUL SYLLABLE SSANGKIYEOK YU HIEUH - 0x85BA: 0xB046, //HANGUL SYLLABLE SSANGKIYEOK EU SSANGKIYEOK - 0x85BB: 0xB047, //HANGUL SYLLABLE SSANGKIYEOK EU KIYEOKSIOS - 0x85BC: 0xB049, //HANGUL SYLLABLE SSANGKIYEOK EU NIEUNCIEUC - 0x85BD: 0xB04B, //HANGUL SYLLABLE SSANGKIYEOK EU TIKEUT - 0x85BE: 0xB04D, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULKIYEOK - 0x85BF: 0xB04F, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULPIEUP - 0x85C0: 0xB050, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULSIOS - 0x85C1: 0xB051, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULTHIEUTH - 0x85C2: 0xB052, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULPHIEUPH - 0x85C3: 0xB056, //HANGUL SYLLABLE SSANGKIYEOK EU PIEUPSIOS - 0x85C4: 0xB058, //HANGUL SYLLABLE SSANGKIYEOK EU SSANGSIOS - 0x85C5: 0xB05A, //HANGUL SYLLABLE SSANGKIYEOK EU CIEUC - 0x85C6: 0xB05B, //HANGUL SYLLABLE SSANGKIYEOK EU CHIEUCH - 0x85C7: 0xB05C, //HANGUL SYLLABLE SSANGKIYEOK EU KHIEUKH - 0x85C8: 0xB05E, //HANGUL SYLLABLE SSANGKIYEOK EU PHIEUPH - 0x85C9: 0xB05F, //HANGUL SYLLABLE SSANGKIYEOK EU HIEUH - 0x85CA: 0xB060, //HANGUL SYLLABLE SSANGKIYEOK YI - 0x85CB: 0xB061, //HANGUL SYLLABLE SSANGKIYEOK YI KIYEOK - 0x85CC: 0xB062, //HANGUL SYLLABLE SSANGKIYEOK YI SSANGKIYEOK - 0x85CD: 0xB063, //HANGUL SYLLABLE SSANGKIYEOK YI KIYEOKSIOS - 0x85CE: 0xB064, //HANGUL SYLLABLE SSANGKIYEOK YI NIEUN - 0x85CF: 0xB065, //HANGUL SYLLABLE SSANGKIYEOK YI NIEUNCIEUC - 0x85D0: 0xB066, //HANGUL SYLLABLE SSANGKIYEOK YI NIEUNHIEUH - 0x85D1: 0xB067, //HANGUL SYLLABLE SSANGKIYEOK YI TIKEUT - 0x85D2: 0xB068, //HANGUL SYLLABLE SSANGKIYEOK YI RIEUL - 0x85D3: 0xB069, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULKIYEOK - 0x85D4: 0xB06A, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULMIEUM - 0x85D5: 0xB06B, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULPIEUP - 0x85D6: 0xB06C, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULSIOS - 0x85D7: 0xB06D, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULTHIEUTH - 0x85D8: 0xB06E, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULPHIEUPH - 0x85D9: 0xB06F, //HANGUL SYLLABLE SSANGKIYEOK YI RIEULHIEUH - 0x85DA: 0xB070, //HANGUL SYLLABLE SSANGKIYEOK YI MIEUM - 0x85DB: 0xB071, //HANGUL SYLLABLE SSANGKIYEOK YI PIEUP - 0x85DC: 0xB072, //HANGUL SYLLABLE SSANGKIYEOK YI PIEUPSIOS - 0x85DD: 0xB073, //HANGUL SYLLABLE SSANGKIYEOK YI SIOS - 0x85DE: 0xB074, //HANGUL SYLLABLE SSANGKIYEOK YI SSANGSIOS - 0x85DF: 0xB075, //HANGUL SYLLABLE SSANGKIYEOK YI IEUNG - 0x85E0: 0xB076, //HANGUL SYLLABLE SSANGKIYEOK YI CIEUC - 0x85E1: 0xB077, //HANGUL SYLLABLE SSANGKIYEOK YI CHIEUCH - 0x85E2: 0xB078, //HANGUL SYLLABLE SSANGKIYEOK YI KHIEUKH - 0x85E3: 0xB079, //HANGUL SYLLABLE SSANGKIYEOK YI THIEUTH - 0x85E4: 0xB07A, //HANGUL SYLLABLE SSANGKIYEOK YI PHIEUPH - 0x85E5: 0xB07B, //HANGUL SYLLABLE SSANGKIYEOK YI HIEUH - 0x85E6: 0xB07E, //HANGUL SYLLABLE SSANGKIYEOK I SSANGKIYEOK - 0x85E7: 0xB07F, //HANGUL SYLLABLE SSANGKIYEOK I KIYEOKSIOS - 0x85E8: 0xB081, //HANGUL SYLLABLE SSANGKIYEOK I NIEUNCIEUC - 0x85E9: 0xB082, //HANGUL SYLLABLE SSANGKIYEOK I NIEUNHIEUH - 0x85EA: 0xB083, //HANGUL SYLLABLE SSANGKIYEOK I TIKEUT - 0x85EB: 0xB085, //HANGUL SYLLABLE SSANGKIYEOK I RIEULKIYEOK - 0x85EC: 0xB086, //HANGUL SYLLABLE SSANGKIYEOK I RIEULMIEUM - 0x85ED: 0xB087, //HANGUL SYLLABLE SSANGKIYEOK I RIEULPIEUP - 0x85EE: 0xB088, //HANGUL SYLLABLE SSANGKIYEOK I RIEULSIOS - 0x85EF: 0xB089, //HANGUL SYLLABLE SSANGKIYEOK I RIEULTHIEUTH - 0x85F0: 0xB08A, //HANGUL SYLLABLE SSANGKIYEOK I RIEULPHIEUPH - 0x85F1: 0xB08B, //HANGUL SYLLABLE SSANGKIYEOK I RIEULHIEUH - 0x85F2: 0xB08E, //HANGUL SYLLABLE SSANGKIYEOK I PIEUPSIOS - 0x85F3: 0xB090, //HANGUL SYLLABLE SSANGKIYEOK I SSANGSIOS - 0x85F4: 0xB092, //HANGUL SYLLABLE SSANGKIYEOK I CIEUC - 0x85F5: 0xB093, //HANGUL SYLLABLE SSANGKIYEOK I CHIEUCH - 0x85F6: 0xB094, //HANGUL SYLLABLE SSANGKIYEOK I KHIEUKH - 0x85F7: 0xB095, //HANGUL SYLLABLE SSANGKIYEOK I THIEUTH - 0x85F8: 0xB096, //HANGUL SYLLABLE SSANGKIYEOK I PHIEUPH - 0x85F9: 0xB097, //HANGUL SYLLABLE SSANGKIYEOK I HIEUH - 0x85FA: 0xB09B, //HANGUL SYLLABLE NIEUN A KIYEOKSIOS - 0x85FB: 0xB09D, //HANGUL SYLLABLE NIEUN A NIEUNCIEUC - 0x85FC: 0xB09E, //HANGUL SYLLABLE NIEUN A NIEUNHIEUH - 0x85FD: 0xB0A3, //HANGUL SYLLABLE NIEUN A RIEULPIEUP - 0x85FE: 0xB0A4, //HANGUL SYLLABLE NIEUN A RIEULSIOS - 0x8641: 0xB0A5, //HANGUL SYLLABLE NIEUN A RIEULTHIEUTH - 0x8642: 0xB0A6, //HANGUL SYLLABLE NIEUN A RIEULPHIEUPH - 0x8643: 0xB0A7, //HANGUL SYLLABLE NIEUN A RIEULHIEUH - 0x8644: 0xB0AA, //HANGUL SYLLABLE NIEUN A PIEUPSIOS - 0x8645: 0xB0B0, //HANGUL SYLLABLE NIEUN A KHIEUKH - 0x8646: 0xB0B2, //HANGUL SYLLABLE NIEUN A PHIEUPH - 0x8647: 0xB0B6, //HANGUL SYLLABLE NIEUN AE SSANGKIYEOK - 0x8648: 0xB0B7, //HANGUL SYLLABLE NIEUN AE KIYEOKSIOS - 0x8649: 0xB0B9, //HANGUL SYLLABLE NIEUN AE NIEUNCIEUC - 0x864A: 0xB0BA, //HANGUL SYLLABLE NIEUN AE NIEUNHIEUH - 0x864B: 0xB0BB, //HANGUL SYLLABLE NIEUN AE TIKEUT - 0x864C: 0xB0BD, //HANGUL SYLLABLE NIEUN AE RIEULKIYEOK - 0x864D: 0xB0BE, //HANGUL SYLLABLE NIEUN AE RIEULMIEUM - 0x864E: 0xB0BF, //HANGUL SYLLABLE NIEUN AE RIEULPIEUP - 0x864F: 0xB0C0, //HANGUL SYLLABLE NIEUN AE RIEULSIOS - 0x8650: 0xB0C1, //HANGUL SYLLABLE NIEUN AE RIEULTHIEUTH - 0x8651: 0xB0C2, //HANGUL SYLLABLE NIEUN AE RIEULPHIEUPH - 0x8652: 0xB0C3, //HANGUL SYLLABLE NIEUN AE RIEULHIEUH - 0x8653: 0xB0C6, //HANGUL SYLLABLE NIEUN AE PIEUPSIOS - 0x8654: 0xB0CA, //HANGUL SYLLABLE NIEUN AE CIEUC - 0x8655: 0xB0CB, //HANGUL SYLLABLE NIEUN AE CHIEUCH - 0x8656: 0xB0CC, //HANGUL SYLLABLE NIEUN AE KHIEUKH - 0x8657: 0xB0CD, //HANGUL SYLLABLE NIEUN AE THIEUTH - 0x8658: 0xB0CE, //HANGUL SYLLABLE NIEUN AE PHIEUPH - 0x8659: 0xB0CF, //HANGUL SYLLABLE NIEUN AE HIEUH - 0x865A: 0xB0D2, //HANGUL SYLLABLE NIEUN YA SSANGKIYEOK - 0x8661: 0xB0D3, //HANGUL SYLLABLE NIEUN YA KIYEOKSIOS - 0x8662: 0xB0D5, //HANGUL SYLLABLE NIEUN YA NIEUNCIEUC - 0x8663: 0xB0D6, //HANGUL SYLLABLE NIEUN YA NIEUNHIEUH - 0x8664: 0xB0D7, //HANGUL SYLLABLE NIEUN YA TIKEUT - 0x8665: 0xB0D9, //HANGUL SYLLABLE NIEUN YA RIEULKIYEOK - 0x8666: 0xB0DA, //HANGUL SYLLABLE NIEUN YA RIEULMIEUM - 0x8667: 0xB0DB, //HANGUL SYLLABLE NIEUN YA RIEULPIEUP - 0x8668: 0xB0DC, //HANGUL SYLLABLE NIEUN YA RIEULSIOS - 0x8669: 0xB0DD, //HANGUL SYLLABLE NIEUN YA RIEULTHIEUTH - 0x866A: 0xB0DE, //HANGUL SYLLABLE NIEUN YA RIEULPHIEUPH - 0x866B: 0xB0DF, //HANGUL SYLLABLE NIEUN YA RIEULHIEUH - 0x866C: 0xB0E1, //HANGUL SYLLABLE NIEUN YA PIEUP - 0x866D: 0xB0E2, //HANGUL SYLLABLE NIEUN YA PIEUPSIOS - 0x866E: 0xB0E3, //HANGUL SYLLABLE NIEUN YA SIOS - 0x866F: 0xB0E4, //HANGUL SYLLABLE NIEUN YA SSANGSIOS - 0x8670: 0xB0E6, //HANGUL SYLLABLE NIEUN YA CIEUC - 0x8671: 0xB0E7, //HANGUL SYLLABLE NIEUN YA CHIEUCH - 0x8672: 0xB0E8, //HANGUL SYLLABLE NIEUN YA KHIEUKH - 0x8673: 0xB0E9, //HANGUL SYLLABLE NIEUN YA THIEUTH - 0x8674: 0xB0EA, //HANGUL SYLLABLE NIEUN YA PHIEUPH - 0x8675: 0xB0EB, //HANGUL SYLLABLE NIEUN YA HIEUH - 0x8676: 0xB0EC, //HANGUL SYLLABLE NIEUN YAE - 0x8677: 0xB0ED, //HANGUL SYLLABLE NIEUN YAE KIYEOK - 0x8678: 0xB0EE, //HANGUL SYLLABLE NIEUN YAE SSANGKIYEOK - 0x8679: 0xB0EF, //HANGUL SYLLABLE NIEUN YAE KIYEOKSIOS - 0x867A: 0xB0F0, //HANGUL SYLLABLE NIEUN YAE NIEUN - 0x8681: 0xB0F1, //HANGUL SYLLABLE NIEUN YAE NIEUNCIEUC - 0x8682: 0xB0F2, //HANGUL SYLLABLE NIEUN YAE NIEUNHIEUH - 0x8683: 0xB0F3, //HANGUL SYLLABLE NIEUN YAE TIKEUT - 0x8684: 0xB0F4, //HANGUL SYLLABLE NIEUN YAE RIEUL - 0x8685: 0xB0F5, //HANGUL SYLLABLE NIEUN YAE RIEULKIYEOK - 0x8686: 0xB0F6, //HANGUL SYLLABLE NIEUN YAE RIEULMIEUM - 0x8687: 0xB0F7, //HANGUL SYLLABLE NIEUN YAE RIEULPIEUP - 0x8688: 0xB0F8, //HANGUL SYLLABLE NIEUN YAE RIEULSIOS - 0x8689: 0xB0F9, //HANGUL SYLLABLE NIEUN YAE RIEULTHIEUTH - 0x868A: 0xB0FA, //HANGUL SYLLABLE NIEUN YAE RIEULPHIEUPH - 0x868B: 0xB0FB, //HANGUL SYLLABLE NIEUN YAE RIEULHIEUH - 0x868C: 0xB0FC, //HANGUL SYLLABLE NIEUN YAE MIEUM - 0x868D: 0xB0FD, //HANGUL SYLLABLE NIEUN YAE PIEUP - 0x868E: 0xB0FE, //HANGUL SYLLABLE NIEUN YAE PIEUPSIOS - 0x868F: 0xB0FF, //HANGUL SYLLABLE NIEUN YAE SIOS - 0x8690: 0xB100, //HANGUL SYLLABLE NIEUN YAE SSANGSIOS - 0x8691: 0xB101, //HANGUL SYLLABLE NIEUN YAE IEUNG - 0x8692: 0xB102, //HANGUL SYLLABLE NIEUN YAE CIEUC - 0x8693: 0xB103, //HANGUL SYLLABLE NIEUN YAE CHIEUCH - 0x8694: 0xB104, //HANGUL SYLLABLE NIEUN YAE KHIEUKH - 0x8695: 0xB105, //HANGUL SYLLABLE NIEUN YAE THIEUTH - 0x8696: 0xB106, //HANGUL SYLLABLE NIEUN YAE PHIEUPH - 0x8697: 0xB107, //HANGUL SYLLABLE NIEUN YAE HIEUH - 0x8698: 0xB10A, //HANGUL SYLLABLE NIEUN EO SSANGKIYEOK - 0x8699: 0xB10D, //HANGUL SYLLABLE NIEUN EO NIEUNCIEUC - 0x869A: 0xB10E, //HANGUL SYLLABLE NIEUN EO NIEUNHIEUH - 0x869B: 0xB10F, //HANGUL SYLLABLE NIEUN EO TIKEUT - 0x869C: 0xB111, //HANGUL SYLLABLE NIEUN EO RIEULKIYEOK - 0x869D: 0xB114, //HANGUL SYLLABLE NIEUN EO RIEULSIOS - 0x869E: 0xB115, //HANGUL SYLLABLE NIEUN EO RIEULTHIEUTH - 0x869F: 0xB116, //HANGUL SYLLABLE NIEUN EO RIEULPHIEUPH - 0x86A0: 0xB117, //HANGUL SYLLABLE NIEUN EO RIEULHIEUH - 0x86A1: 0xB11A, //HANGUL SYLLABLE NIEUN EO PIEUPSIOS - 0x86A2: 0xB11E, //HANGUL SYLLABLE NIEUN EO CIEUC - 0x86A3: 0xB11F, //HANGUL SYLLABLE NIEUN EO CHIEUCH - 0x86A4: 0xB120, //HANGUL SYLLABLE NIEUN EO KHIEUKH - 0x86A5: 0xB121, //HANGUL SYLLABLE NIEUN EO THIEUTH - 0x86A6: 0xB122, //HANGUL SYLLABLE NIEUN EO PHIEUPH - 0x86A7: 0xB126, //HANGUL SYLLABLE NIEUN E SSANGKIYEOK - 0x86A8: 0xB127, //HANGUL SYLLABLE NIEUN E KIYEOKSIOS - 0x86A9: 0xB129, //HANGUL SYLLABLE NIEUN E NIEUNCIEUC - 0x86AA: 0xB12A, //HANGUL SYLLABLE NIEUN E NIEUNHIEUH - 0x86AB: 0xB12B, //HANGUL SYLLABLE NIEUN E TIKEUT - 0x86AC: 0xB12D, //HANGUL SYLLABLE NIEUN E RIEULKIYEOK - 0x86AD: 0xB12E, //HANGUL SYLLABLE NIEUN E RIEULMIEUM - 0x86AE: 0xB12F, //HANGUL SYLLABLE NIEUN E RIEULPIEUP - 0x86AF: 0xB130, //HANGUL SYLLABLE NIEUN E RIEULSIOS - 0x86B0: 0xB131, //HANGUL SYLLABLE NIEUN E RIEULTHIEUTH - 0x86B1: 0xB132, //HANGUL SYLLABLE NIEUN E RIEULPHIEUPH - 0x86B2: 0xB133, //HANGUL SYLLABLE NIEUN E RIEULHIEUH - 0x86B3: 0xB136, //HANGUL SYLLABLE NIEUN E PIEUPSIOS - 0x86B4: 0xB13A, //HANGUL SYLLABLE NIEUN E CIEUC - 0x86B5: 0xB13B, //HANGUL SYLLABLE NIEUN E CHIEUCH - 0x86B6: 0xB13C, //HANGUL SYLLABLE NIEUN E KHIEUKH - 0x86B7: 0xB13D, //HANGUL SYLLABLE NIEUN E THIEUTH - 0x86B8: 0xB13E, //HANGUL SYLLABLE NIEUN E PHIEUPH - 0x86B9: 0xB13F, //HANGUL SYLLABLE NIEUN E HIEUH - 0x86BA: 0xB142, //HANGUL SYLLABLE NIEUN YEO SSANGKIYEOK - 0x86BB: 0xB143, //HANGUL SYLLABLE NIEUN YEO KIYEOKSIOS - 0x86BC: 0xB145, //HANGUL SYLLABLE NIEUN YEO NIEUNCIEUC - 0x86BD: 0xB146, //HANGUL SYLLABLE NIEUN YEO NIEUNHIEUH - 0x86BE: 0xB147, //HANGUL SYLLABLE NIEUN YEO TIKEUT - 0x86BF: 0xB149, //HANGUL SYLLABLE NIEUN YEO RIEULKIYEOK - 0x86C0: 0xB14A, //HANGUL SYLLABLE NIEUN YEO RIEULMIEUM - 0x86C1: 0xB14B, //HANGUL SYLLABLE NIEUN YEO RIEULPIEUP - 0x86C2: 0xB14C, //HANGUL SYLLABLE NIEUN YEO RIEULSIOS - 0x86C3: 0xB14D, //HANGUL SYLLABLE NIEUN YEO RIEULTHIEUTH - 0x86C4: 0xB14E, //HANGUL SYLLABLE NIEUN YEO RIEULPHIEUPH - 0x86C5: 0xB14F, //HANGUL SYLLABLE NIEUN YEO RIEULHIEUH - 0x86C6: 0xB152, //HANGUL SYLLABLE NIEUN YEO PIEUPSIOS - 0x86C7: 0xB153, //HANGUL SYLLABLE NIEUN YEO SIOS - 0x86C8: 0xB156, //HANGUL SYLLABLE NIEUN YEO CIEUC - 0x86C9: 0xB157, //HANGUL SYLLABLE NIEUN YEO CHIEUCH - 0x86CA: 0xB159, //HANGUL SYLLABLE NIEUN YEO THIEUTH - 0x86CB: 0xB15A, //HANGUL SYLLABLE NIEUN YEO PHIEUPH - 0x86CC: 0xB15B, //HANGUL SYLLABLE NIEUN YEO HIEUH - 0x86CD: 0xB15D, //HANGUL SYLLABLE NIEUN YE KIYEOK - 0x86CE: 0xB15E, //HANGUL SYLLABLE NIEUN YE SSANGKIYEOK - 0x86CF: 0xB15F, //HANGUL SYLLABLE NIEUN YE KIYEOKSIOS - 0x86D0: 0xB161, //HANGUL SYLLABLE NIEUN YE NIEUNCIEUC - 0x86D1: 0xB162, //HANGUL SYLLABLE NIEUN YE NIEUNHIEUH - 0x86D2: 0xB163, //HANGUL SYLLABLE NIEUN YE TIKEUT - 0x86D3: 0xB164, //HANGUL SYLLABLE NIEUN YE RIEUL - 0x86D4: 0xB165, //HANGUL SYLLABLE NIEUN YE RIEULKIYEOK - 0x86D5: 0xB166, //HANGUL SYLLABLE NIEUN YE RIEULMIEUM - 0x86D6: 0xB167, //HANGUL SYLLABLE NIEUN YE RIEULPIEUP - 0x86D7: 0xB168, //HANGUL SYLLABLE NIEUN YE RIEULSIOS - 0x86D8: 0xB169, //HANGUL SYLLABLE NIEUN YE RIEULTHIEUTH - 0x86D9: 0xB16A, //HANGUL SYLLABLE NIEUN YE RIEULPHIEUPH - 0x86DA: 0xB16B, //HANGUL SYLLABLE NIEUN YE RIEULHIEUH - 0x86DB: 0xB16C, //HANGUL SYLLABLE NIEUN YE MIEUM - 0x86DC: 0xB16D, //HANGUL SYLLABLE NIEUN YE PIEUP - 0x86DD: 0xB16E, //HANGUL SYLLABLE NIEUN YE PIEUPSIOS - 0x86DE: 0xB16F, //HANGUL SYLLABLE NIEUN YE SIOS - 0x86DF: 0xB170, //HANGUL SYLLABLE NIEUN YE SSANGSIOS - 0x86E0: 0xB171, //HANGUL SYLLABLE NIEUN YE IEUNG - 0x86E1: 0xB172, //HANGUL SYLLABLE NIEUN YE CIEUC - 0x86E2: 0xB173, //HANGUL SYLLABLE NIEUN YE CHIEUCH - 0x86E3: 0xB174, //HANGUL SYLLABLE NIEUN YE KHIEUKH - 0x86E4: 0xB175, //HANGUL SYLLABLE NIEUN YE THIEUTH - 0x86E5: 0xB176, //HANGUL SYLLABLE NIEUN YE PHIEUPH - 0x86E6: 0xB177, //HANGUL SYLLABLE NIEUN YE HIEUH - 0x86E7: 0xB17A, //HANGUL SYLLABLE NIEUN O SSANGKIYEOK - 0x86E8: 0xB17B, //HANGUL SYLLABLE NIEUN O KIYEOKSIOS - 0x86E9: 0xB17D, //HANGUL SYLLABLE NIEUN O NIEUNCIEUC - 0x86EA: 0xB17E, //HANGUL SYLLABLE NIEUN O NIEUNHIEUH - 0x86EB: 0xB17F, //HANGUL SYLLABLE NIEUN O TIKEUT - 0x86EC: 0xB181, //HANGUL SYLLABLE NIEUN O RIEULKIYEOK - 0x86ED: 0xB183, //HANGUL SYLLABLE NIEUN O RIEULPIEUP - 0x86EE: 0xB184, //HANGUL SYLLABLE NIEUN O RIEULSIOS - 0x86EF: 0xB185, //HANGUL SYLLABLE NIEUN O RIEULTHIEUTH - 0x86F0: 0xB186, //HANGUL SYLLABLE NIEUN O RIEULPHIEUPH - 0x86F1: 0xB187, //HANGUL SYLLABLE NIEUN O RIEULHIEUH - 0x86F2: 0xB18A, //HANGUL SYLLABLE NIEUN O PIEUPSIOS - 0x86F3: 0xB18C, //HANGUL SYLLABLE NIEUN O SSANGSIOS - 0x86F4: 0xB18E, //HANGUL SYLLABLE NIEUN O CIEUC - 0x86F5: 0xB18F, //HANGUL SYLLABLE NIEUN O CHIEUCH - 0x86F6: 0xB190, //HANGUL SYLLABLE NIEUN O KHIEUKH - 0x86F7: 0xB191, //HANGUL SYLLABLE NIEUN O THIEUTH - 0x86F8: 0xB195, //HANGUL SYLLABLE NIEUN WA KIYEOK - 0x86F9: 0xB196, //HANGUL SYLLABLE NIEUN WA SSANGKIYEOK - 0x86FA: 0xB197, //HANGUL SYLLABLE NIEUN WA KIYEOKSIOS - 0x86FB: 0xB199, //HANGUL SYLLABLE NIEUN WA NIEUNCIEUC - 0x86FC: 0xB19A, //HANGUL SYLLABLE NIEUN WA NIEUNHIEUH - 0x86FD: 0xB19B, //HANGUL SYLLABLE NIEUN WA TIKEUT - 0x86FE: 0xB19D, //HANGUL SYLLABLE NIEUN WA RIEULKIYEOK - 0x8741: 0xB19E, //HANGUL SYLLABLE NIEUN WA RIEULMIEUM - 0x8742: 0xB19F, //HANGUL SYLLABLE NIEUN WA RIEULPIEUP - 0x8743: 0xB1A0, //HANGUL SYLLABLE NIEUN WA RIEULSIOS - 0x8744: 0xB1A1, //HANGUL SYLLABLE NIEUN WA RIEULTHIEUTH - 0x8745: 0xB1A2, //HANGUL SYLLABLE NIEUN WA RIEULPHIEUPH - 0x8746: 0xB1A3, //HANGUL SYLLABLE NIEUN WA RIEULHIEUH - 0x8747: 0xB1A4, //HANGUL SYLLABLE NIEUN WA MIEUM - 0x8748: 0xB1A5, //HANGUL SYLLABLE NIEUN WA PIEUP - 0x8749: 0xB1A6, //HANGUL SYLLABLE NIEUN WA PIEUPSIOS - 0x874A: 0xB1A7, //HANGUL SYLLABLE NIEUN WA SIOS - 0x874B: 0xB1A9, //HANGUL SYLLABLE NIEUN WA IEUNG - 0x874C: 0xB1AA, //HANGUL SYLLABLE NIEUN WA CIEUC - 0x874D: 0xB1AB, //HANGUL SYLLABLE NIEUN WA CHIEUCH - 0x874E: 0xB1AC, //HANGUL SYLLABLE NIEUN WA KHIEUKH - 0x874F: 0xB1AD, //HANGUL SYLLABLE NIEUN WA THIEUTH - 0x8750: 0xB1AE, //HANGUL SYLLABLE NIEUN WA PHIEUPH - 0x8751: 0xB1AF, //HANGUL SYLLABLE NIEUN WA HIEUH - 0x8752: 0xB1B0, //HANGUL SYLLABLE NIEUN WAE - 0x8753: 0xB1B1, //HANGUL SYLLABLE NIEUN WAE KIYEOK - 0x8754: 0xB1B2, //HANGUL SYLLABLE NIEUN WAE SSANGKIYEOK - 0x8755: 0xB1B3, //HANGUL SYLLABLE NIEUN WAE KIYEOKSIOS - 0x8756: 0xB1B4, //HANGUL SYLLABLE NIEUN WAE NIEUN - 0x8757: 0xB1B5, //HANGUL SYLLABLE NIEUN WAE NIEUNCIEUC - 0x8758: 0xB1B6, //HANGUL SYLLABLE NIEUN WAE NIEUNHIEUH - 0x8759: 0xB1B7, //HANGUL SYLLABLE NIEUN WAE TIKEUT - 0x875A: 0xB1B8, //HANGUL SYLLABLE NIEUN WAE RIEUL - 0x8761: 0xB1B9, //HANGUL SYLLABLE NIEUN WAE RIEULKIYEOK - 0x8762: 0xB1BA, //HANGUL SYLLABLE NIEUN WAE RIEULMIEUM - 0x8763: 0xB1BB, //HANGUL SYLLABLE NIEUN WAE RIEULPIEUP - 0x8764: 0xB1BC, //HANGUL SYLLABLE NIEUN WAE RIEULSIOS - 0x8765: 0xB1BD, //HANGUL SYLLABLE NIEUN WAE RIEULTHIEUTH - 0x8766: 0xB1BE, //HANGUL SYLLABLE NIEUN WAE RIEULPHIEUPH - 0x8767: 0xB1BF, //HANGUL SYLLABLE NIEUN WAE RIEULHIEUH - 0x8768: 0xB1C0, //HANGUL SYLLABLE NIEUN WAE MIEUM - 0x8769: 0xB1C1, //HANGUL SYLLABLE NIEUN WAE PIEUP - 0x876A: 0xB1C2, //HANGUL SYLLABLE NIEUN WAE PIEUPSIOS - 0x876B: 0xB1C3, //HANGUL SYLLABLE NIEUN WAE SIOS - 0x876C: 0xB1C4, //HANGUL SYLLABLE NIEUN WAE SSANGSIOS - 0x876D: 0xB1C5, //HANGUL SYLLABLE NIEUN WAE IEUNG - 0x876E: 0xB1C6, //HANGUL SYLLABLE NIEUN WAE CIEUC - 0x876F: 0xB1C7, //HANGUL SYLLABLE NIEUN WAE CHIEUCH - 0x8770: 0xB1C8, //HANGUL SYLLABLE NIEUN WAE KHIEUKH - 0x8771: 0xB1C9, //HANGUL SYLLABLE NIEUN WAE THIEUTH - 0x8772: 0xB1CA, //HANGUL SYLLABLE NIEUN WAE PHIEUPH - 0x8773: 0xB1CB, //HANGUL SYLLABLE NIEUN WAE HIEUH - 0x8774: 0xB1CD, //HANGUL SYLLABLE NIEUN OE KIYEOK - 0x8775: 0xB1CE, //HANGUL SYLLABLE NIEUN OE SSANGKIYEOK - 0x8776: 0xB1CF, //HANGUL SYLLABLE NIEUN OE KIYEOKSIOS - 0x8777: 0xB1D1, //HANGUL SYLLABLE NIEUN OE NIEUNCIEUC - 0x8778: 0xB1D2, //HANGUL SYLLABLE NIEUN OE NIEUNHIEUH - 0x8779: 0xB1D3, //HANGUL SYLLABLE NIEUN OE TIKEUT - 0x877A: 0xB1D5, //HANGUL SYLLABLE NIEUN OE RIEULKIYEOK - 0x8781: 0xB1D6, //HANGUL SYLLABLE NIEUN OE RIEULMIEUM - 0x8782: 0xB1D7, //HANGUL SYLLABLE NIEUN OE RIEULPIEUP - 0x8783: 0xB1D8, //HANGUL SYLLABLE NIEUN OE RIEULSIOS - 0x8784: 0xB1D9, //HANGUL SYLLABLE NIEUN OE RIEULTHIEUTH - 0x8785: 0xB1DA, //HANGUL SYLLABLE NIEUN OE RIEULPHIEUPH - 0x8786: 0xB1DB, //HANGUL SYLLABLE NIEUN OE RIEULHIEUH - 0x8787: 0xB1DE, //HANGUL SYLLABLE NIEUN OE PIEUPSIOS - 0x8788: 0xB1E0, //HANGUL SYLLABLE NIEUN OE SSANGSIOS - 0x8789: 0xB1E1, //HANGUL SYLLABLE NIEUN OE IEUNG - 0x878A: 0xB1E2, //HANGUL SYLLABLE NIEUN OE CIEUC - 0x878B: 0xB1E3, //HANGUL SYLLABLE NIEUN OE CHIEUCH - 0x878C: 0xB1E4, //HANGUL SYLLABLE NIEUN OE KHIEUKH - 0x878D: 0xB1E5, //HANGUL SYLLABLE NIEUN OE THIEUTH - 0x878E: 0xB1E6, //HANGUL SYLLABLE NIEUN OE PHIEUPH - 0x878F: 0xB1E7, //HANGUL SYLLABLE NIEUN OE HIEUH - 0x8790: 0xB1EA, //HANGUL SYLLABLE NIEUN YO SSANGKIYEOK - 0x8791: 0xB1EB, //HANGUL SYLLABLE NIEUN YO KIYEOKSIOS - 0x8792: 0xB1ED, //HANGUL SYLLABLE NIEUN YO NIEUNCIEUC - 0x8793: 0xB1EE, //HANGUL SYLLABLE NIEUN YO NIEUNHIEUH - 0x8794: 0xB1EF, //HANGUL SYLLABLE NIEUN YO TIKEUT - 0x8795: 0xB1F1, //HANGUL SYLLABLE NIEUN YO RIEULKIYEOK - 0x8796: 0xB1F2, //HANGUL SYLLABLE NIEUN YO RIEULMIEUM - 0x8797: 0xB1F3, //HANGUL SYLLABLE NIEUN YO RIEULPIEUP - 0x8798: 0xB1F4, //HANGUL SYLLABLE NIEUN YO RIEULSIOS - 0x8799: 0xB1F5, //HANGUL SYLLABLE NIEUN YO RIEULTHIEUTH - 0x879A: 0xB1F6, //HANGUL SYLLABLE NIEUN YO RIEULPHIEUPH - 0x879B: 0xB1F7, //HANGUL SYLLABLE NIEUN YO RIEULHIEUH - 0x879C: 0xB1F8, //HANGUL SYLLABLE NIEUN YO MIEUM - 0x879D: 0xB1FA, //HANGUL SYLLABLE NIEUN YO PIEUPSIOS - 0x879E: 0xB1FC, //HANGUL SYLLABLE NIEUN YO SSANGSIOS - 0x879F: 0xB1FE, //HANGUL SYLLABLE NIEUN YO CIEUC - 0x87A0: 0xB1FF, //HANGUL SYLLABLE NIEUN YO CHIEUCH - 0x87A1: 0xB200, //HANGUL SYLLABLE NIEUN YO KHIEUKH - 0x87A2: 0xB201, //HANGUL SYLLABLE NIEUN YO THIEUTH - 0x87A3: 0xB202, //HANGUL SYLLABLE NIEUN YO PHIEUPH - 0x87A4: 0xB203, //HANGUL SYLLABLE NIEUN YO HIEUH - 0x87A5: 0xB206, //HANGUL SYLLABLE NIEUN U SSANGKIYEOK - 0x87A6: 0xB207, //HANGUL SYLLABLE NIEUN U KIYEOKSIOS - 0x87A7: 0xB209, //HANGUL SYLLABLE NIEUN U NIEUNCIEUC - 0x87A8: 0xB20A, //HANGUL SYLLABLE NIEUN U NIEUNHIEUH - 0x87A9: 0xB20D, //HANGUL SYLLABLE NIEUN U RIEULKIYEOK - 0x87AA: 0xB20E, //HANGUL SYLLABLE NIEUN U RIEULMIEUM - 0x87AB: 0xB20F, //HANGUL SYLLABLE NIEUN U RIEULPIEUP - 0x87AC: 0xB210, //HANGUL SYLLABLE NIEUN U RIEULSIOS - 0x87AD: 0xB211, //HANGUL SYLLABLE NIEUN U RIEULTHIEUTH - 0x87AE: 0xB212, //HANGUL SYLLABLE NIEUN U RIEULPHIEUPH - 0x87AF: 0xB213, //HANGUL SYLLABLE NIEUN U RIEULHIEUH - 0x87B0: 0xB216, //HANGUL SYLLABLE NIEUN U PIEUPSIOS - 0x87B1: 0xB218, //HANGUL SYLLABLE NIEUN U SSANGSIOS - 0x87B2: 0xB21A, //HANGUL SYLLABLE NIEUN U CIEUC - 0x87B3: 0xB21B, //HANGUL SYLLABLE NIEUN U CHIEUCH - 0x87B4: 0xB21C, //HANGUL SYLLABLE NIEUN U KHIEUKH - 0x87B5: 0xB21D, //HANGUL SYLLABLE NIEUN U THIEUTH - 0x87B6: 0xB21E, //HANGUL SYLLABLE NIEUN U PHIEUPH - 0x87B7: 0xB21F, //HANGUL SYLLABLE NIEUN U HIEUH - 0x87B8: 0xB221, //HANGUL SYLLABLE NIEUN WEO KIYEOK - 0x87B9: 0xB222, //HANGUL SYLLABLE NIEUN WEO SSANGKIYEOK - 0x87BA: 0xB223, //HANGUL SYLLABLE NIEUN WEO KIYEOKSIOS - 0x87BB: 0xB224, //HANGUL SYLLABLE NIEUN WEO NIEUN - 0x87BC: 0xB225, //HANGUL SYLLABLE NIEUN WEO NIEUNCIEUC - 0x87BD: 0xB226, //HANGUL SYLLABLE NIEUN WEO NIEUNHIEUH - 0x87BE: 0xB227, //HANGUL SYLLABLE NIEUN WEO TIKEUT - 0x87BF: 0xB228, //HANGUL SYLLABLE NIEUN WEO RIEUL - 0x87C0: 0xB229, //HANGUL SYLLABLE NIEUN WEO RIEULKIYEOK - 0x87C1: 0xB22A, //HANGUL SYLLABLE NIEUN WEO RIEULMIEUM - 0x87C2: 0xB22B, //HANGUL SYLLABLE NIEUN WEO RIEULPIEUP - 0x87C3: 0xB22C, //HANGUL SYLLABLE NIEUN WEO RIEULSIOS - 0x87C4: 0xB22D, //HANGUL SYLLABLE NIEUN WEO RIEULTHIEUTH - 0x87C5: 0xB22E, //HANGUL SYLLABLE NIEUN WEO RIEULPHIEUPH - 0x87C6: 0xB22F, //HANGUL SYLLABLE NIEUN WEO RIEULHIEUH - 0x87C7: 0xB230, //HANGUL SYLLABLE NIEUN WEO MIEUM - 0x87C8: 0xB231, //HANGUL SYLLABLE NIEUN WEO PIEUP - 0x87C9: 0xB232, //HANGUL SYLLABLE NIEUN WEO PIEUPSIOS - 0x87CA: 0xB233, //HANGUL SYLLABLE NIEUN WEO SIOS - 0x87CB: 0xB235, //HANGUL SYLLABLE NIEUN WEO IEUNG - 0x87CC: 0xB236, //HANGUL SYLLABLE NIEUN WEO CIEUC - 0x87CD: 0xB237, //HANGUL SYLLABLE NIEUN WEO CHIEUCH - 0x87CE: 0xB238, //HANGUL SYLLABLE NIEUN WEO KHIEUKH - 0x87CF: 0xB239, //HANGUL SYLLABLE NIEUN WEO THIEUTH - 0x87D0: 0xB23A, //HANGUL SYLLABLE NIEUN WEO PHIEUPH - 0x87D1: 0xB23B, //HANGUL SYLLABLE NIEUN WEO HIEUH - 0x87D2: 0xB23D, //HANGUL SYLLABLE NIEUN WE KIYEOK - 0x87D3: 0xB23E, //HANGUL SYLLABLE NIEUN WE SSANGKIYEOK - 0x87D4: 0xB23F, //HANGUL SYLLABLE NIEUN WE KIYEOKSIOS - 0x87D5: 0xB240, //HANGUL SYLLABLE NIEUN WE NIEUN - 0x87D6: 0xB241, //HANGUL SYLLABLE NIEUN WE NIEUNCIEUC - 0x87D7: 0xB242, //HANGUL SYLLABLE NIEUN WE NIEUNHIEUH - 0x87D8: 0xB243, //HANGUL SYLLABLE NIEUN WE TIKEUT - 0x87D9: 0xB244, //HANGUL SYLLABLE NIEUN WE RIEUL - 0x87DA: 0xB245, //HANGUL SYLLABLE NIEUN WE RIEULKIYEOK - 0x87DB: 0xB246, //HANGUL SYLLABLE NIEUN WE RIEULMIEUM - 0x87DC: 0xB247, //HANGUL SYLLABLE NIEUN WE RIEULPIEUP - 0x87DD: 0xB248, //HANGUL SYLLABLE NIEUN WE RIEULSIOS - 0x87DE: 0xB249, //HANGUL SYLLABLE NIEUN WE RIEULTHIEUTH - 0x87DF: 0xB24A, //HANGUL SYLLABLE NIEUN WE RIEULPHIEUPH - 0x87E0: 0xB24B, //HANGUL SYLLABLE NIEUN WE RIEULHIEUH - 0x87E1: 0xB24C, //HANGUL SYLLABLE NIEUN WE MIEUM - 0x87E2: 0xB24D, //HANGUL SYLLABLE NIEUN WE PIEUP - 0x87E3: 0xB24E, //HANGUL SYLLABLE NIEUN WE PIEUPSIOS - 0x87E4: 0xB24F, //HANGUL SYLLABLE NIEUN WE SIOS - 0x87E5: 0xB250, //HANGUL SYLLABLE NIEUN WE SSANGSIOS - 0x87E6: 0xB251, //HANGUL SYLLABLE NIEUN WE IEUNG - 0x87E7: 0xB252, //HANGUL SYLLABLE NIEUN WE CIEUC - 0x87E8: 0xB253, //HANGUL SYLLABLE NIEUN WE CHIEUCH - 0x87E9: 0xB254, //HANGUL SYLLABLE NIEUN WE KHIEUKH - 0x87EA: 0xB255, //HANGUL SYLLABLE NIEUN WE THIEUTH - 0x87EB: 0xB256, //HANGUL SYLLABLE NIEUN WE PHIEUPH - 0x87EC: 0xB257, //HANGUL SYLLABLE NIEUN WE HIEUH - 0x87ED: 0xB259, //HANGUL SYLLABLE NIEUN WI KIYEOK - 0x87EE: 0xB25A, //HANGUL SYLLABLE NIEUN WI SSANGKIYEOK - 0x87EF: 0xB25B, //HANGUL SYLLABLE NIEUN WI KIYEOKSIOS - 0x87F0: 0xB25D, //HANGUL SYLLABLE NIEUN WI NIEUNCIEUC - 0x87F1: 0xB25E, //HANGUL SYLLABLE NIEUN WI NIEUNHIEUH - 0x87F2: 0xB25F, //HANGUL SYLLABLE NIEUN WI TIKEUT - 0x87F3: 0xB261, //HANGUL SYLLABLE NIEUN WI RIEULKIYEOK - 0x87F4: 0xB262, //HANGUL SYLLABLE NIEUN WI RIEULMIEUM - 0x87F5: 0xB263, //HANGUL SYLLABLE NIEUN WI RIEULPIEUP - 0x87F6: 0xB264, //HANGUL SYLLABLE NIEUN WI RIEULSIOS - 0x87F7: 0xB265, //HANGUL SYLLABLE NIEUN WI RIEULTHIEUTH - 0x87F8: 0xB266, //HANGUL SYLLABLE NIEUN WI RIEULPHIEUPH - 0x87F9: 0xB267, //HANGUL SYLLABLE NIEUN WI RIEULHIEUH - 0x87FA: 0xB26A, //HANGUL SYLLABLE NIEUN WI PIEUPSIOS - 0x87FB: 0xB26B, //HANGUL SYLLABLE NIEUN WI SIOS - 0x87FC: 0xB26C, //HANGUL SYLLABLE NIEUN WI SSANGSIOS - 0x87FD: 0xB26D, //HANGUL SYLLABLE NIEUN WI IEUNG - 0x87FE: 0xB26E, //HANGUL SYLLABLE NIEUN WI CIEUC - 0x8841: 0xB26F, //HANGUL SYLLABLE NIEUN WI CHIEUCH - 0x8842: 0xB270, //HANGUL SYLLABLE NIEUN WI KHIEUKH - 0x8843: 0xB271, //HANGUL SYLLABLE NIEUN WI THIEUTH - 0x8844: 0xB272, //HANGUL SYLLABLE NIEUN WI PHIEUPH - 0x8845: 0xB273, //HANGUL SYLLABLE NIEUN WI HIEUH - 0x8846: 0xB276, //HANGUL SYLLABLE NIEUN YU SSANGKIYEOK - 0x8847: 0xB277, //HANGUL SYLLABLE NIEUN YU KIYEOKSIOS - 0x8848: 0xB278, //HANGUL SYLLABLE NIEUN YU NIEUN - 0x8849: 0xB279, //HANGUL SYLLABLE NIEUN YU NIEUNCIEUC - 0x884A: 0xB27A, //HANGUL SYLLABLE NIEUN YU NIEUNHIEUH - 0x884B: 0xB27B, //HANGUL SYLLABLE NIEUN YU TIKEUT - 0x884C: 0xB27D, //HANGUL SYLLABLE NIEUN YU RIEULKIYEOK - 0x884D: 0xB27E, //HANGUL SYLLABLE NIEUN YU RIEULMIEUM - 0x884E: 0xB27F, //HANGUL SYLLABLE NIEUN YU RIEULPIEUP - 0x884F: 0xB280, //HANGUL SYLLABLE NIEUN YU RIEULSIOS - 0x8850: 0xB281, //HANGUL SYLLABLE NIEUN YU RIEULTHIEUTH - 0x8851: 0xB282, //HANGUL SYLLABLE NIEUN YU RIEULPHIEUPH - 0x8852: 0xB283, //HANGUL SYLLABLE NIEUN YU RIEULHIEUH - 0x8853: 0xB286, //HANGUL SYLLABLE NIEUN YU PIEUPSIOS - 0x8854: 0xB287, //HANGUL SYLLABLE NIEUN YU SIOS - 0x8855: 0xB288, //HANGUL SYLLABLE NIEUN YU SSANGSIOS - 0x8856: 0xB28A, //HANGUL SYLLABLE NIEUN YU CIEUC - 0x8857: 0xB28B, //HANGUL SYLLABLE NIEUN YU CHIEUCH - 0x8858: 0xB28C, //HANGUL SYLLABLE NIEUN YU KHIEUKH - 0x8859: 0xB28D, //HANGUL SYLLABLE NIEUN YU THIEUTH - 0x885A: 0xB28E, //HANGUL SYLLABLE NIEUN YU PHIEUPH - 0x8861: 0xB28F, //HANGUL SYLLABLE NIEUN YU HIEUH - 0x8862: 0xB292, //HANGUL SYLLABLE NIEUN EU SSANGKIYEOK - 0x8863: 0xB293, //HANGUL SYLLABLE NIEUN EU KIYEOKSIOS - 0x8864: 0xB295, //HANGUL SYLLABLE NIEUN EU NIEUNCIEUC - 0x8865: 0xB296, //HANGUL SYLLABLE NIEUN EU NIEUNHIEUH - 0x8866: 0xB297, //HANGUL SYLLABLE NIEUN EU TIKEUT - 0x8867: 0xB29B, //HANGUL SYLLABLE NIEUN EU RIEULPIEUP - 0x8868: 0xB29C, //HANGUL SYLLABLE NIEUN EU RIEULSIOS - 0x8869: 0xB29D, //HANGUL SYLLABLE NIEUN EU RIEULTHIEUTH - 0x886A: 0xB29E, //HANGUL SYLLABLE NIEUN EU RIEULPHIEUPH - 0x886B: 0xB29F, //HANGUL SYLLABLE NIEUN EU RIEULHIEUH - 0x886C: 0xB2A2, //HANGUL SYLLABLE NIEUN EU PIEUPSIOS - 0x886D: 0xB2A4, //HANGUL SYLLABLE NIEUN EU SSANGSIOS - 0x886E: 0xB2A7, //HANGUL SYLLABLE NIEUN EU CHIEUCH - 0x886F: 0xB2A8, //HANGUL SYLLABLE NIEUN EU KHIEUKH - 0x8870: 0xB2A9, //HANGUL SYLLABLE NIEUN EU THIEUTH - 0x8871: 0xB2AB, //HANGUL SYLLABLE NIEUN EU HIEUH - 0x8872: 0xB2AD, //HANGUL SYLLABLE NIEUN YI KIYEOK - 0x8873: 0xB2AE, //HANGUL SYLLABLE NIEUN YI SSANGKIYEOK - 0x8874: 0xB2AF, //HANGUL SYLLABLE NIEUN YI KIYEOKSIOS - 0x8875: 0xB2B1, //HANGUL SYLLABLE NIEUN YI NIEUNCIEUC - 0x8876: 0xB2B2, //HANGUL SYLLABLE NIEUN YI NIEUNHIEUH - 0x8877: 0xB2B3, //HANGUL SYLLABLE NIEUN YI TIKEUT - 0x8878: 0xB2B5, //HANGUL SYLLABLE NIEUN YI RIEULKIYEOK - 0x8879: 0xB2B6, //HANGUL SYLLABLE NIEUN YI RIEULMIEUM - 0x887A: 0xB2B7, //HANGUL SYLLABLE NIEUN YI RIEULPIEUP - 0x8881: 0xB2B8, //HANGUL SYLLABLE NIEUN YI RIEULSIOS - 0x8882: 0xB2B9, //HANGUL SYLLABLE NIEUN YI RIEULTHIEUTH - 0x8883: 0xB2BA, //HANGUL SYLLABLE NIEUN YI RIEULPHIEUPH - 0x8884: 0xB2BB, //HANGUL SYLLABLE NIEUN YI RIEULHIEUH - 0x8885: 0xB2BC, //HANGUL SYLLABLE NIEUN YI MIEUM - 0x8886: 0xB2BD, //HANGUL SYLLABLE NIEUN YI PIEUP - 0x8887: 0xB2BE, //HANGUL SYLLABLE NIEUN YI PIEUPSIOS - 0x8888: 0xB2BF, //HANGUL SYLLABLE NIEUN YI SIOS - 0x8889: 0xB2C0, //HANGUL SYLLABLE NIEUN YI SSANGSIOS - 0x888A: 0xB2C1, //HANGUL SYLLABLE NIEUN YI IEUNG - 0x888B: 0xB2C2, //HANGUL SYLLABLE NIEUN YI CIEUC - 0x888C: 0xB2C3, //HANGUL SYLLABLE NIEUN YI CHIEUCH - 0x888D: 0xB2C4, //HANGUL SYLLABLE NIEUN YI KHIEUKH - 0x888E: 0xB2C5, //HANGUL SYLLABLE NIEUN YI THIEUTH - 0x888F: 0xB2C6, //HANGUL SYLLABLE NIEUN YI PHIEUPH - 0x8890: 0xB2C7, //HANGUL SYLLABLE NIEUN YI HIEUH - 0x8891: 0xB2CA, //HANGUL SYLLABLE NIEUN I SSANGKIYEOK - 0x8892: 0xB2CB, //HANGUL SYLLABLE NIEUN I KIYEOKSIOS - 0x8893: 0xB2CD, //HANGUL SYLLABLE NIEUN I NIEUNCIEUC - 0x8894: 0xB2CE, //HANGUL SYLLABLE NIEUN I NIEUNHIEUH - 0x8895: 0xB2CF, //HANGUL SYLLABLE NIEUN I TIKEUT - 0x8896: 0xB2D1, //HANGUL SYLLABLE NIEUN I RIEULKIYEOK - 0x8897: 0xB2D3, //HANGUL SYLLABLE NIEUN I RIEULPIEUP - 0x8898: 0xB2D4, //HANGUL SYLLABLE NIEUN I RIEULSIOS - 0x8899: 0xB2D5, //HANGUL SYLLABLE NIEUN I RIEULTHIEUTH - 0x889A: 0xB2D6, //HANGUL SYLLABLE NIEUN I RIEULPHIEUPH - 0x889B: 0xB2D7, //HANGUL SYLLABLE NIEUN I RIEULHIEUH - 0x889C: 0xB2DA, //HANGUL SYLLABLE NIEUN I PIEUPSIOS - 0x889D: 0xB2DC, //HANGUL SYLLABLE NIEUN I SSANGSIOS - 0x889E: 0xB2DE, //HANGUL SYLLABLE NIEUN I CIEUC - 0x889F: 0xB2DF, //HANGUL SYLLABLE NIEUN I CHIEUCH - 0x88A0: 0xB2E0, //HANGUL SYLLABLE NIEUN I KHIEUKH - 0x88A1: 0xB2E1, //HANGUL SYLLABLE NIEUN I THIEUTH - 0x88A2: 0xB2E3, //HANGUL SYLLABLE NIEUN I HIEUH - 0x88A3: 0xB2E7, //HANGUL SYLLABLE TIKEUT A KIYEOKSIOS - 0x88A4: 0xB2E9, //HANGUL SYLLABLE TIKEUT A NIEUNCIEUC - 0x88A5: 0xB2EA, //HANGUL SYLLABLE TIKEUT A NIEUNHIEUH - 0x88A6: 0xB2F0, //HANGUL SYLLABLE TIKEUT A RIEULSIOS - 0x88A7: 0xB2F1, //HANGUL SYLLABLE TIKEUT A RIEULTHIEUTH - 0x88A8: 0xB2F2, //HANGUL SYLLABLE TIKEUT A RIEULPHIEUPH - 0x88A9: 0xB2F6, //HANGUL SYLLABLE TIKEUT A PIEUPSIOS - 0x88AA: 0xB2FC, //HANGUL SYLLABLE TIKEUT A KHIEUKH - 0x88AB: 0xB2FD, //HANGUL SYLLABLE TIKEUT A THIEUTH - 0x88AC: 0xB2FE, //HANGUL SYLLABLE TIKEUT A PHIEUPH - 0x88AD: 0xB302, //HANGUL SYLLABLE TIKEUT AE SSANGKIYEOK - 0x88AE: 0xB303, //HANGUL SYLLABLE TIKEUT AE KIYEOKSIOS - 0x88AF: 0xB305, //HANGUL SYLLABLE TIKEUT AE NIEUNCIEUC - 0x88B0: 0xB306, //HANGUL SYLLABLE TIKEUT AE NIEUNHIEUH - 0x88B1: 0xB307, //HANGUL SYLLABLE TIKEUT AE TIKEUT - 0x88B2: 0xB309, //HANGUL SYLLABLE TIKEUT AE RIEULKIYEOK - 0x88B3: 0xB30A, //HANGUL SYLLABLE TIKEUT AE RIEULMIEUM - 0x88B4: 0xB30B, //HANGUL SYLLABLE TIKEUT AE RIEULPIEUP - 0x88B5: 0xB30C, //HANGUL SYLLABLE TIKEUT AE RIEULSIOS - 0x88B6: 0xB30D, //HANGUL SYLLABLE TIKEUT AE RIEULTHIEUTH - 0x88B7: 0xB30E, //HANGUL SYLLABLE TIKEUT AE RIEULPHIEUPH - 0x88B8: 0xB30F, //HANGUL SYLLABLE TIKEUT AE RIEULHIEUH - 0x88B9: 0xB312, //HANGUL SYLLABLE TIKEUT AE PIEUPSIOS - 0x88BA: 0xB316, //HANGUL SYLLABLE TIKEUT AE CIEUC - 0x88BB: 0xB317, //HANGUL SYLLABLE TIKEUT AE CHIEUCH - 0x88BC: 0xB318, //HANGUL SYLLABLE TIKEUT AE KHIEUKH - 0x88BD: 0xB319, //HANGUL SYLLABLE TIKEUT AE THIEUTH - 0x88BE: 0xB31A, //HANGUL SYLLABLE TIKEUT AE PHIEUPH - 0x88BF: 0xB31B, //HANGUL SYLLABLE TIKEUT AE HIEUH - 0x88C0: 0xB31D, //HANGUL SYLLABLE TIKEUT YA KIYEOK - 0x88C1: 0xB31E, //HANGUL SYLLABLE TIKEUT YA SSANGKIYEOK - 0x88C2: 0xB31F, //HANGUL SYLLABLE TIKEUT YA KIYEOKSIOS - 0x88C3: 0xB320, //HANGUL SYLLABLE TIKEUT YA NIEUN - 0x88C4: 0xB321, //HANGUL SYLLABLE TIKEUT YA NIEUNCIEUC - 0x88C5: 0xB322, //HANGUL SYLLABLE TIKEUT YA NIEUNHIEUH - 0x88C6: 0xB323, //HANGUL SYLLABLE TIKEUT YA TIKEUT - 0x88C7: 0xB324, //HANGUL SYLLABLE TIKEUT YA RIEUL - 0x88C8: 0xB325, //HANGUL SYLLABLE TIKEUT YA RIEULKIYEOK - 0x88C9: 0xB326, //HANGUL SYLLABLE TIKEUT YA RIEULMIEUM - 0x88CA: 0xB327, //HANGUL SYLLABLE TIKEUT YA RIEULPIEUP - 0x88CB: 0xB328, //HANGUL SYLLABLE TIKEUT YA RIEULSIOS - 0x88CC: 0xB329, //HANGUL SYLLABLE TIKEUT YA RIEULTHIEUTH - 0x88CD: 0xB32A, //HANGUL SYLLABLE TIKEUT YA RIEULPHIEUPH - 0x88CE: 0xB32B, //HANGUL SYLLABLE TIKEUT YA RIEULHIEUH - 0x88CF: 0xB32C, //HANGUL SYLLABLE TIKEUT YA MIEUM - 0x88D0: 0xB32D, //HANGUL SYLLABLE TIKEUT YA PIEUP - 0x88D1: 0xB32E, //HANGUL SYLLABLE TIKEUT YA PIEUPSIOS - 0x88D2: 0xB32F, //HANGUL SYLLABLE TIKEUT YA SIOS - 0x88D3: 0xB330, //HANGUL SYLLABLE TIKEUT YA SSANGSIOS - 0x88D4: 0xB331, //HANGUL SYLLABLE TIKEUT YA IEUNG - 0x88D5: 0xB332, //HANGUL SYLLABLE TIKEUT YA CIEUC - 0x88D6: 0xB333, //HANGUL SYLLABLE TIKEUT YA CHIEUCH - 0x88D7: 0xB334, //HANGUL SYLLABLE TIKEUT YA KHIEUKH - 0x88D8: 0xB335, //HANGUL SYLLABLE TIKEUT YA THIEUTH - 0x88D9: 0xB336, //HANGUL SYLLABLE TIKEUT YA PHIEUPH - 0x88DA: 0xB337, //HANGUL SYLLABLE TIKEUT YA HIEUH - 0x88DB: 0xB338, //HANGUL SYLLABLE TIKEUT YAE - 0x88DC: 0xB339, //HANGUL SYLLABLE TIKEUT YAE KIYEOK - 0x88DD: 0xB33A, //HANGUL SYLLABLE TIKEUT YAE SSANGKIYEOK - 0x88DE: 0xB33B, //HANGUL SYLLABLE TIKEUT YAE KIYEOKSIOS - 0x88DF: 0xB33C, //HANGUL SYLLABLE TIKEUT YAE NIEUN - 0x88E0: 0xB33D, //HANGUL SYLLABLE TIKEUT YAE NIEUNCIEUC - 0x88E1: 0xB33E, //HANGUL SYLLABLE TIKEUT YAE NIEUNHIEUH - 0x88E2: 0xB33F, //HANGUL SYLLABLE TIKEUT YAE TIKEUT - 0x88E3: 0xB340, //HANGUL SYLLABLE TIKEUT YAE RIEUL - 0x88E4: 0xB341, //HANGUL SYLLABLE TIKEUT YAE RIEULKIYEOK - 0x88E5: 0xB342, //HANGUL SYLLABLE TIKEUT YAE RIEULMIEUM - 0x88E6: 0xB343, //HANGUL SYLLABLE TIKEUT YAE RIEULPIEUP - 0x88E7: 0xB344, //HANGUL SYLLABLE TIKEUT YAE RIEULSIOS - 0x88E8: 0xB345, //HANGUL SYLLABLE TIKEUT YAE RIEULTHIEUTH - 0x88E9: 0xB346, //HANGUL SYLLABLE TIKEUT YAE RIEULPHIEUPH - 0x88EA: 0xB347, //HANGUL SYLLABLE TIKEUT YAE RIEULHIEUH - 0x88EB: 0xB348, //HANGUL SYLLABLE TIKEUT YAE MIEUM - 0x88EC: 0xB349, //HANGUL SYLLABLE TIKEUT YAE PIEUP - 0x88ED: 0xB34A, //HANGUL SYLLABLE TIKEUT YAE PIEUPSIOS - 0x88EE: 0xB34B, //HANGUL SYLLABLE TIKEUT YAE SIOS - 0x88EF: 0xB34C, //HANGUL SYLLABLE TIKEUT YAE SSANGSIOS - 0x88F0: 0xB34D, //HANGUL SYLLABLE TIKEUT YAE IEUNG - 0x88F1: 0xB34E, //HANGUL SYLLABLE TIKEUT YAE CIEUC - 0x88F2: 0xB34F, //HANGUL SYLLABLE TIKEUT YAE CHIEUCH - 0x88F3: 0xB350, //HANGUL SYLLABLE TIKEUT YAE KHIEUKH - 0x88F4: 0xB351, //HANGUL SYLLABLE TIKEUT YAE THIEUTH - 0x88F5: 0xB352, //HANGUL SYLLABLE TIKEUT YAE PHIEUPH - 0x88F6: 0xB353, //HANGUL SYLLABLE TIKEUT YAE HIEUH - 0x88F7: 0xB357, //HANGUL SYLLABLE TIKEUT EO KIYEOKSIOS - 0x88F8: 0xB359, //HANGUL SYLLABLE TIKEUT EO NIEUNCIEUC - 0x88F9: 0xB35A, //HANGUL SYLLABLE TIKEUT EO NIEUNHIEUH - 0x88FA: 0xB35D, //HANGUL SYLLABLE TIKEUT EO RIEULKIYEOK - 0x88FB: 0xB360, //HANGUL SYLLABLE TIKEUT EO RIEULSIOS - 0x88FC: 0xB361, //HANGUL SYLLABLE TIKEUT EO RIEULTHIEUTH - 0x88FD: 0xB362, //HANGUL SYLLABLE TIKEUT EO RIEULPHIEUPH - 0x88FE: 0xB363, //HANGUL SYLLABLE TIKEUT EO RIEULHIEUH - 0x8941: 0xB366, //HANGUL SYLLABLE TIKEUT EO PIEUPSIOS - 0x8942: 0xB368, //HANGUL SYLLABLE TIKEUT EO SSANGSIOS - 0x8943: 0xB36A, //HANGUL SYLLABLE TIKEUT EO CIEUC - 0x8944: 0xB36C, //HANGUL SYLLABLE TIKEUT EO KHIEUKH - 0x8945: 0xB36D, //HANGUL SYLLABLE TIKEUT EO THIEUTH - 0x8946: 0xB36F, //HANGUL SYLLABLE TIKEUT EO HIEUH - 0x8947: 0xB372, //HANGUL SYLLABLE TIKEUT E SSANGKIYEOK - 0x8948: 0xB373, //HANGUL SYLLABLE TIKEUT E KIYEOKSIOS - 0x8949: 0xB375, //HANGUL SYLLABLE TIKEUT E NIEUNCIEUC - 0x894A: 0xB376, //HANGUL SYLLABLE TIKEUT E NIEUNHIEUH - 0x894B: 0xB377, //HANGUL SYLLABLE TIKEUT E TIKEUT - 0x894C: 0xB379, //HANGUL SYLLABLE TIKEUT E RIEULKIYEOK - 0x894D: 0xB37A, //HANGUL SYLLABLE TIKEUT E RIEULMIEUM - 0x894E: 0xB37B, //HANGUL SYLLABLE TIKEUT E RIEULPIEUP - 0x894F: 0xB37C, //HANGUL SYLLABLE TIKEUT E RIEULSIOS - 0x8950: 0xB37D, //HANGUL SYLLABLE TIKEUT E RIEULTHIEUTH - 0x8951: 0xB37E, //HANGUL SYLLABLE TIKEUT E RIEULPHIEUPH - 0x8952: 0xB37F, //HANGUL SYLLABLE TIKEUT E RIEULHIEUH - 0x8953: 0xB382, //HANGUL SYLLABLE TIKEUT E PIEUPSIOS - 0x8954: 0xB386, //HANGUL SYLLABLE TIKEUT E CIEUC - 0x8955: 0xB387, //HANGUL SYLLABLE TIKEUT E CHIEUCH - 0x8956: 0xB388, //HANGUL SYLLABLE TIKEUT E KHIEUKH - 0x8957: 0xB389, //HANGUL SYLLABLE TIKEUT E THIEUTH - 0x8958: 0xB38A, //HANGUL SYLLABLE TIKEUT E PHIEUPH - 0x8959: 0xB38B, //HANGUL SYLLABLE TIKEUT E HIEUH - 0x895A: 0xB38D, //HANGUL SYLLABLE TIKEUT YEO KIYEOK - 0x8961: 0xB38E, //HANGUL SYLLABLE TIKEUT YEO SSANGKIYEOK - 0x8962: 0xB38F, //HANGUL SYLLABLE TIKEUT YEO KIYEOKSIOS - 0x8963: 0xB391, //HANGUL SYLLABLE TIKEUT YEO NIEUNCIEUC - 0x8964: 0xB392, //HANGUL SYLLABLE TIKEUT YEO NIEUNHIEUH - 0x8965: 0xB393, //HANGUL SYLLABLE TIKEUT YEO TIKEUT - 0x8966: 0xB395, //HANGUL SYLLABLE TIKEUT YEO RIEULKIYEOK - 0x8967: 0xB396, //HANGUL SYLLABLE TIKEUT YEO RIEULMIEUM - 0x8968: 0xB397, //HANGUL SYLLABLE TIKEUT YEO RIEULPIEUP - 0x8969: 0xB398, //HANGUL SYLLABLE TIKEUT YEO RIEULSIOS - 0x896A: 0xB399, //HANGUL SYLLABLE TIKEUT YEO RIEULTHIEUTH - 0x896B: 0xB39A, //HANGUL SYLLABLE TIKEUT YEO RIEULPHIEUPH - 0x896C: 0xB39B, //HANGUL SYLLABLE TIKEUT YEO RIEULHIEUH - 0x896D: 0xB39C, //HANGUL SYLLABLE TIKEUT YEO MIEUM - 0x896E: 0xB39D, //HANGUL SYLLABLE TIKEUT YEO PIEUP - 0x896F: 0xB39E, //HANGUL SYLLABLE TIKEUT YEO PIEUPSIOS - 0x8970: 0xB39F, //HANGUL SYLLABLE TIKEUT YEO SIOS - 0x8971: 0xB3A2, //HANGUL SYLLABLE TIKEUT YEO CIEUC - 0x8972: 0xB3A3, //HANGUL SYLLABLE TIKEUT YEO CHIEUCH - 0x8973: 0xB3A4, //HANGUL SYLLABLE TIKEUT YEO KHIEUKH - 0x8974: 0xB3A5, //HANGUL SYLLABLE TIKEUT YEO THIEUTH - 0x8975: 0xB3A6, //HANGUL SYLLABLE TIKEUT YEO PHIEUPH - 0x8976: 0xB3A7, //HANGUL SYLLABLE TIKEUT YEO HIEUH - 0x8977: 0xB3A9, //HANGUL SYLLABLE TIKEUT YE KIYEOK - 0x8978: 0xB3AA, //HANGUL SYLLABLE TIKEUT YE SSANGKIYEOK - 0x8979: 0xB3AB, //HANGUL SYLLABLE TIKEUT YE KIYEOKSIOS - 0x897A: 0xB3AD, //HANGUL SYLLABLE TIKEUT YE NIEUNCIEUC - 0x8981: 0xB3AE, //HANGUL SYLLABLE TIKEUT YE NIEUNHIEUH - 0x8982: 0xB3AF, //HANGUL SYLLABLE TIKEUT YE TIKEUT - 0x8983: 0xB3B0, //HANGUL SYLLABLE TIKEUT YE RIEUL - 0x8984: 0xB3B1, //HANGUL SYLLABLE TIKEUT YE RIEULKIYEOK - 0x8985: 0xB3B2, //HANGUL SYLLABLE TIKEUT YE RIEULMIEUM - 0x8986: 0xB3B3, //HANGUL SYLLABLE TIKEUT YE RIEULPIEUP - 0x8987: 0xB3B4, //HANGUL SYLLABLE TIKEUT YE RIEULSIOS - 0x8988: 0xB3B5, //HANGUL SYLLABLE TIKEUT YE RIEULTHIEUTH - 0x8989: 0xB3B6, //HANGUL SYLLABLE TIKEUT YE RIEULPHIEUPH - 0x898A: 0xB3B7, //HANGUL SYLLABLE TIKEUT YE RIEULHIEUH - 0x898B: 0xB3B8, //HANGUL SYLLABLE TIKEUT YE MIEUM - 0x898C: 0xB3B9, //HANGUL SYLLABLE TIKEUT YE PIEUP - 0x898D: 0xB3BA, //HANGUL SYLLABLE TIKEUT YE PIEUPSIOS - 0x898E: 0xB3BB, //HANGUL SYLLABLE TIKEUT YE SIOS - 0x898F: 0xB3BC, //HANGUL SYLLABLE TIKEUT YE SSANGSIOS - 0x8990: 0xB3BD, //HANGUL SYLLABLE TIKEUT YE IEUNG - 0x8991: 0xB3BE, //HANGUL SYLLABLE TIKEUT YE CIEUC - 0x8992: 0xB3BF, //HANGUL SYLLABLE TIKEUT YE CHIEUCH - 0x8993: 0xB3C0, //HANGUL SYLLABLE TIKEUT YE KHIEUKH - 0x8994: 0xB3C1, //HANGUL SYLLABLE TIKEUT YE THIEUTH - 0x8995: 0xB3C2, //HANGUL SYLLABLE TIKEUT YE PHIEUPH - 0x8996: 0xB3C3, //HANGUL SYLLABLE TIKEUT YE HIEUH - 0x8997: 0xB3C6, //HANGUL SYLLABLE TIKEUT O SSANGKIYEOK - 0x8998: 0xB3C7, //HANGUL SYLLABLE TIKEUT O KIYEOKSIOS - 0x8999: 0xB3C9, //HANGUL SYLLABLE TIKEUT O NIEUNCIEUC - 0x899A: 0xB3CA, //HANGUL SYLLABLE TIKEUT O NIEUNHIEUH - 0x899B: 0xB3CD, //HANGUL SYLLABLE TIKEUT O RIEULKIYEOK - 0x899C: 0xB3CF, //HANGUL SYLLABLE TIKEUT O RIEULPIEUP - 0x899D: 0xB3D1, //HANGUL SYLLABLE TIKEUT O RIEULTHIEUTH - 0x899E: 0xB3D2, //HANGUL SYLLABLE TIKEUT O RIEULPHIEUPH - 0x899F: 0xB3D3, //HANGUL SYLLABLE TIKEUT O RIEULHIEUH - 0x89A0: 0xB3D6, //HANGUL SYLLABLE TIKEUT O PIEUPSIOS - 0x89A1: 0xB3D8, //HANGUL SYLLABLE TIKEUT O SSANGSIOS - 0x89A2: 0xB3DA, //HANGUL SYLLABLE TIKEUT O CIEUC - 0x89A3: 0xB3DC, //HANGUL SYLLABLE TIKEUT O KHIEUKH - 0x89A4: 0xB3DE, //HANGUL SYLLABLE TIKEUT O PHIEUPH - 0x89A5: 0xB3DF, //HANGUL SYLLABLE TIKEUT O HIEUH - 0x89A6: 0xB3E1, //HANGUL SYLLABLE TIKEUT WA KIYEOK - 0x89A7: 0xB3E2, //HANGUL SYLLABLE TIKEUT WA SSANGKIYEOK - 0x89A8: 0xB3E3, //HANGUL SYLLABLE TIKEUT WA KIYEOKSIOS - 0x89A9: 0xB3E5, //HANGUL SYLLABLE TIKEUT WA NIEUNCIEUC - 0x89AA: 0xB3E6, //HANGUL SYLLABLE TIKEUT WA NIEUNHIEUH - 0x89AB: 0xB3E7, //HANGUL SYLLABLE TIKEUT WA TIKEUT - 0x89AC: 0xB3E9, //HANGUL SYLLABLE TIKEUT WA RIEULKIYEOK - 0x89AD: 0xB3EA, //HANGUL SYLLABLE TIKEUT WA RIEULMIEUM - 0x89AE: 0xB3EB, //HANGUL SYLLABLE TIKEUT WA RIEULPIEUP - 0x89AF: 0xB3EC, //HANGUL SYLLABLE TIKEUT WA RIEULSIOS - 0x89B0: 0xB3ED, //HANGUL SYLLABLE TIKEUT WA RIEULTHIEUTH - 0x89B1: 0xB3EE, //HANGUL SYLLABLE TIKEUT WA RIEULPHIEUPH - 0x89B2: 0xB3EF, //HANGUL SYLLABLE TIKEUT WA RIEULHIEUH - 0x89B3: 0xB3F0, //HANGUL SYLLABLE TIKEUT WA MIEUM - 0x89B4: 0xB3F1, //HANGUL SYLLABLE TIKEUT WA PIEUP - 0x89B5: 0xB3F2, //HANGUL SYLLABLE TIKEUT WA PIEUPSIOS - 0x89B6: 0xB3F3, //HANGUL SYLLABLE TIKEUT WA SIOS - 0x89B7: 0xB3F4, //HANGUL SYLLABLE TIKEUT WA SSANGSIOS - 0x89B8: 0xB3F5, //HANGUL SYLLABLE TIKEUT WA IEUNG - 0x89B9: 0xB3F6, //HANGUL SYLLABLE TIKEUT WA CIEUC - 0x89BA: 0xB3F7, //HANGUL SYLLABLE TIKEUT WA CHIEUCH - 0x89BB: 0xB3F8, //HANGUL SYLLABLE TIKEUT WA KHIEUKH - 0x89BC: 0xB3F9, //HANGUL SYLLABLE TIKEUT WA THIEUTH - 0x89BD: 0xB3FA, //HANGUL SYLLABLE TIKEUT WA PHIEUPH - 0x89BE: 0xB3FB, //HANGUL SYLLABLE TIKEUT WA HIEUH - 0x89BF: 0xB3FD, //HANGUL SYLLABLE TIKEUT WAE KIYEOK - 0x89C0: 0xB3FE, //HANGUL SYLLABLE TIKEUT WAE SSANGKIYEOK - 0x89C1: 0xB3FF, //HANGUL SYLLABLE TIKEUT WAE KIYEOKSIOS - 0x89C2: 0xB400, //HANGUL SYLLABLE TIKEUT WAE NIEUN - 0x89C3: 0xB401, //HANGUL SYLLABLE TIKEUT WAE NIEUNCIEUC - 0x89C4: 0xB402, //HANGUL SYLLABLE TIKEUT WAE NIEUNHIEUH - 0x89C5: 0xB403, //HANGUL SYLLABLE TIKEUT WAE TIKEUT - 0x89C6: 0xB404, //HANGUL SYLLABLE TIKEUT WAE RIEUL - 0x89C7: 0xB405, //HANGUL SYLLABLE TIKEUT WAE RIEULKIYEOK - 0x89C8: 0xB406, //HANGUL SYLLABLE TIKEUT WAE RIEULMIEUM - 0x89C9: 0xB407, //HANGUL SYLLABLE TIKEUT WAE RIEULPIEUP - 0x89CA: 0xB408, //HANGUL SYLLABLE TIKEUT WAE RIEULSIOS - 0x89CB: 0xB409, //HANGUL SYLLABLE TIKEUT WAE RIEULTHIEUTH - 0x89CC: 0xB40A, //HANGUL SYLLABLE TIKEUT WAE RIEULPHIEUPH - 0x89CD: 0xB40B, //HANGUL SYLLABLE TIKEUT WAE RIEULHIEUH - 0x89CE: 0xB40C, //HANGUL SYLLABLE TIKEUT WAE MIEUM - 0x89CF: 0xB40D, //HANGUL SYLLABLE TIKEUT WAE PIEUP - 0x89D0: 0xB40E, //HANGUL SYLLABLE TIKEUT WAE PIEUPSIOS - 0x89D1: 0xB40F, //HANGUL SYLLABLE TIKEUT WAE SIOS - 0x89D2: 0xB411, //HANGUL SYLLABLE TIKEUT WAE IEUNG - 0x89D3: 0xB412, //HANGUL SYLLABLE TIKEUT WAE CIEUC - 0x89D4: 0xB413, //HANGUL SYLLABLE TIKEUT WAE CHIEUCH - 0x89D5: 0xB414, //HANGUL SYLLABLE TIKEUT WAE KHIEUKH - 0x89D6: 0xB415, //HANGUL SYLLABLE TIKEUT WAE THIEUTH - 0x89D7: 0xB416, //HANGUL SYLLABLE TIKEUT WAE PHIEUPH - 0x89D8: 0xB417, //HANGUL SYLLABLE TIKEUT WAE HIEUH - 0x89D9: 0xB419, //HANGUL SYLLABLE TIKEUT OE KIYEOK - 0x89DA: 0xB41A, //HANGUL SYLLABLE TIKEUT OE SSANGKIYEOK - 0x89DB: 0xB41B, //HANGUL SYLLABLE TIKEUT OE KIYEOKSIOS - 0x89DC: 0xB41D, //HANGUL SYLLABLE TIKEUT OE NIEUNCIEUC - 0x89DD: 0xB41E, //HANGUL SYLLABLE TIKEUT OE NIEUNHIEUH - 0x89DE: 0xB41F, //HANGUL SYLLABLE TIKEUT OE TIKEUT - 0x89DF: 0xB421, //HANGUL SYLLABLE TIKEUT OE RIEULKIYEOK - 0x89E0: 0xB422, //HANGUL SYLLABLE TIKEUT OE RIEULMIEUM - 0x89E1: 0xB423, //HANGUL SYLLABLE TIKEUT OE RIEULPIEUP - 0x89E2: 0xB424, //HANGUL SYLLABLE TIKEUT OE RIEULSIOS - 0x89E3: 0xB425, //HANGUL SYLLABLE TIKEUT OE RIEULTHIEUTH - 0x89E4: 0xB426, //HANGUL SYLLABLE TIKEUT OE RIEULPHIEUPH - 0x89E5: 0xB427, //HANGUL SYLLABLE TIKEUT OE RIEULHIEUH - 0x89E6: 0xB42A, //HANGUL SYLLABLE TIKEUT OE PIEUPSIOS - 0x89E7: 0xB42C, //HANGUL SYLLABLE TIKEUT OE SSANGSIOS - 0x89E8: 0xB42D, //HANGUL SYLLABLE TIKEUT OE IEUNG - 0x89E9: 0xB42E, //HANGUL SYLLABLE TIKEUT OE CIEUC - 0x89EA: 0xB42F, //HANGUL SYLLABLE TIKEUT OE CHIEUCH - 0x89EB: 0xB430, //HANGUL SYLLABLE TIKEUT OE KHIEUKH - 0x89EC: 0xB431, //HANGUL SYLLABLE TIKEUT OE THIEUTH - 0x89ED: 0xB432, //HANGUL SYLLABLE TIKEUT OE PHIEUPH - 0x89EE: 0xB433, //HANGUL SYLLABLE TIKEUT OE HIEUH - 0x89EF: 0xB435, //HANGUL SYLLABLE TIKEUT YO KIYEOK - 0x89F0: 0xB436, //HANGUL SYLLABLE TIKEUT YO SSANGKIYEOK - 0x89F1: 0xB437, //HANGUL SYLLABLE TIKEUT YO KIYEOKSIOS - 0x89F2: 0xB438, //HANGUL SYLLABLE TIKEUT YO NIEUN - 0x89F3: 0xB439, //HANGUL SYLLABLE TIKEUT YO NIEUNCIEUC - 0x89F4: 0xB43A, //HANGUL SYLLABLE TIKEUT YO NIEUNHIEUH - 0x89F5: 0xB43B, //HANGUL SYLLABLE TIKEUT YO TIKEUT - 0x89F6: 0xB43C, //HANGUL SYLLABLE TIKEUT YO RIEUL - 0x89F7: 0xB43D, //HANGUL SYLLABLE TIKEUT YO RIEULKIYEOK - 0x89F8: 0xB43E, //HANGUL SYLLABLE TIKEUT YO RIEULMIEUM - 0x89F9: 0xB43F, //HANGUL SYLLABLE TIKEUT YO RIEULPIEUP - 0x89FA: 0xB440, //HANGUL SYLLABLE TIKEUT YO RIEULSIOS - 0x89FB: 0xB441, //HANGUL SYLLABLE TIKEUT YO RIEULTHIEUTH - 0x89FC: 0xB442, //HANGUL SYLLABLE TIKEUT YO RIEULPHIEUPH - 0x89FD: 0xB443, //HANGUL SYLLABLE TIKEUT YO RIEULHIEUH - 0x89FE: 0xB444, //HANGUL SYLLABLE TIKEUT YO MIEUM - 0x8A41: 0xB445, //HANGUL SYLLABLE TIKEUT YO PIEUP - 0x8A42: 0xB446, //HANGUL SYLLABLE TIKEUT YO PIEUPSIOS - 0x8A43: 0xB447, //HANGUL SYLLABLE TIKEUT YO SIOS - 0x8A44: 0xB448, //HANGUL SYLLABLE TIKEUT YO SSANGSIOS - 0x8A45: 0xB449, //HANGUL SYLLABLE TIKEUT YO IEUNG - 0x8A46: 0xB44A, //HANGUL SYLLABLE TIKEUT YO CIEUC - 0x8A47: 0xB44B, //HANGUL SYLLABLE TIKEUT YO CHIEUCH - 0x8A48: 0xB44C, //HANGUL SYLLABLE TIKEUT YO KHIEUKH - 0x8A49: 0xB44D, //HANGUL SYLLABLE TIKEUT YO THIEUTH - 0x8A4A: 0xB44E, //HANGUL SYLLABLE TIKEUT YO PHIEUPH - 0x8A4B: 0xB44F, //HANGUL SYLLABLE TIKEUT YO HIEUH - 0x8A4C: 0xB452, //HANGUL SYLLABLE TIKEUT U SSANGKIYEOK - 0x8A4D: 0xB453, //HANGUL SYLLABLE TIKEUT U KIYEOKSIOS - 0x8A4E: 0xB455, //HANGUL SYLLABLE TIKEUT U NIEUNCIEUC - 0x8A4F: 0xB456, //HANGUL SYLLABLE TIKEUT U NIEUNHIEUH - 0x8A50: 0xB457, //HANGUL SYLLABLE TIKEUT U TIKEUT - 0x8A51: 0xB459, //HANGUL SYLLABLE TIKEUT U RIEULKIYEOK - 0x8A52: 0xB45A, //HANGUL SYLLABLE TIKEUT U RIEULMIEUM - 0x8A53: 0xB45B, //HANGUL SYLLABLE TIKEUT U RIEULPIEUP - 0x8A54: 0xB45C, //HANGUL SYLLABLE TIKEUT U RIEULSIOS - 0x8A55: 0xB45D, //HANGUL SYLLABLE TIKEUT U RIEULTHIEUTH - 0x8A56: 0xB45E, //HANGUL SYLLABLE TIKEUT U RIEULPHIEUPH - 0x8A57: 0xB45F, //HANGUL SYLLABLE TIKEUT U RIEULHIEUH - 0x8A58: 0xB462, //HANGUL SYLLABLE TIKEUT U PIEUPSIOS - 0x8A59: 0xB464, //HANGUL SYLLABLE TIKEUT U SSANGSIOS - 0x8A5A: 0xB466, //HANGUL SYLLABLE TIKEUT U CIEUC - 0x8A61: 0xB467, //HANGUL SYLLABLE TIKEUT U CHIEUCH - 0x8A62: 0xB468, //HANGUL SYLLABLE TIKEUT U KHIEUKH - 0x8A63: 0xB469, //HANGUL SYLLABLE TIKEUT U THIEUTH - 0x8A64: 0xB46A, //HANGUL SYLLABLE TIKEUT U PHIEUPH - 0x8A65: 0xB46B, //HANGUL SYLLABLE TIKEUT U HIEUH - 0x8A66: 0xB46D, //HANGUL SYLLABLE TIKEUT WEO KIYEOK - 0x8A67: 0xB46E, //HANGUL SYLLABLE TIKEUT WEO SSANGKIYEOK - 0x8A68: 0xB46F, //HANGUL SYLLABLE TIKEUT WEO KIYEOKSIOS - 0x8A69: 0xB470, //HANGUL SYLLABLE TIKEUT WEO NIEUN - 0x8A6A: 0xB471, //HANGUL SYLLABLE TIKEUT WEO NIEUNCIEUC - 0x8A6B: 0xB472, //HANGUL SYLLABLE TIKEUT WEO NIEUNHIEUH - 0x8A6C: 0xB473, //HANGUL SYLLABLE TIKEUT WEO TIKEUT - 0x8A6D: 0xB474, //HANGUL SYLLABLE TIKEUT WEO RIEUL - 0x8A6E: 0xB475, //HANGUL SYLLABLE TIKEUT WEO RIEULKIYEOK - 0x8A6F: 0xB476, //HANGUL SYLLABLE TIKEUT WEO RIEULMIEUM - 0x8A70: 0xB477, //HANGUL SYLLABLE TIKEUT WEO RIEULPIEUP - 0x8A71: 0xB478, //HANGUL SYLLABLE TIKEUT WEO RIEULSIOS - 0x8A72: 0xB479, //HANGUL SYLLABLE TIKEUT WEO RIEULTHIEUTH - 0x8A73: 0xB47A, //HANGUL SYLLABLE TIKEUT WEO RIEULPHIEUPH - 0x8A74: 0xB47B, //HANGUL SYLLABLE TIKEUT WEO RIEULHIEUH - 0x8A75: 0xB47C, //HANGUL SYLLABLE TIKEUT WEO MIEUM - 0x8A76: 0xB47D, //HANGUL SYLLABLE TIKEUT WEO PIEUP - 0x8A77: 0xB47E, //HANGUL SYLLABLE TIKEUT WEO PIEUPSIOS - 0x8A78: 0xB47F, //HANGUL SYLLABLE TIKEUT WEO SIOS - 0x8A79: 0xB481, //HANGUL SYLLABLE TIKEUT WEO IEUNG - 0x8A7A: 0xB482, //HANGUL SYLLABLE TIKEUT WEO CIEUC - 0x8A81: 0xB483, //HANGUL SYLLABLE TIKEUT WEO CHIEUCH - 0x8A82: 0xB484, //HANGUL SYLLABLE TIKEUT WEO KHIEUKH - 0x8A83: 0xB485, //HANGUL SYLLABLE TIKEUT WEO THIEUTH - 0x8A84: 0xB486, //HANGUL SYLLABLE TIKEUT WEO PHIEUPH - 0x8A85: 0xB487, //HANGUL SYLLABLE TIKEUT WEO HIEUH - 0x8A86: 0xB489, //HANGUL SYLLABLE TIKEUT WE KIYEOK - 0x8A87: 0xB48A, //HANGUL SYLLABLE TIKEUT WE SSANGKIYEOK - 0x8A88: 0xB48B, //HANGUL SYLLABLE TIKEUT WE KIYEOKSIOS - 0x8A89: 0xB48C, //HANGUL SYLLABLE TIKEUT WE NIEUN - 0x8A8A: 0xB48D, //HANGUL SYLLABLE TIKEUT WE NIEUNCIEUC - 0x8A8B: 0xB48E, //HANGUL SYLLABLE TIKEUT WE NIEUNHIEUH - 0x8A8C: 0xB48F, //HANGUL SYLLABLE TIKEUT WE TIKEUT - 0x8A8D: 0xB490, //HANGUL SYLLABLE TIKEUT WE RIEUL - 0x8A8E: 0xB491, //HANGUL SYLLABLE TIKEUT WE RIEULKIYEOK - 0x8A8F: 0xB492, //HANGUL SYLLABLE TIKEUT WE RIEULMIEUM - 0x8A90: 0xB493, //HANGUL SYLLABLE TIKEUT WE RIEULPIEUP - 0x8A91: 0xB494, //HANGUL SYLLABLE TIKEUT WE RIEULSIOS - 0x8A92: 0xB495, //HANGUL SYLLABLE TIKEUT WE RIEULTHIEUTH - 0x8A93: 0xB496, //HANGUL SYLLABLE TIKEUT WE RIEULPHIEUPH - 0x8A94: 0xB497, //HANGUL SYLLABLE TIKEUT WE RIEULHIEUH - 0x8A95: 0xB498, //HANGUL SYLLABLE TIKEUT WE MIEUM - 0x8A96: 0xB499, //HANGUL SYLLABLE TIKEUT WE PIEUP - 0x8A97: 0xB49A, //HANGUL SYLLABLE TIKEUT WE PIEUPSIOS - 0x8A98: 0xB49B, //HANGUL SYLLABLE TIKEUT WE SIOS - 0x8A99: 0xB49C, //HANGUL SYLLABLE TIKEUT WE SSANGSIOS - 0x8A9A: 0xB49E, //HANGUL SYLLABLE TIKEUT WE CIEUC - 0x8A9B: 0xB49F, //HANGUL SYLLABLE TIKEUT WE CHIEUCH - 0x8A9C: 0xB4A0, //HANGUL SYLLABLE TIKEUT WE KHIEUKH - 0x8A9D: 0xB4A1, //HANGUL SYLLABLE TIKEUT WE THIEUTH - 0x8A9E: 0xB4A2, //HANGUL SYLLABLE TIKEUT WE PHIEUPH - 0x8A9F: 0xB4A3, //HANGUL SYLLABLE TIKEUT WE HIEUH - 0x8AA0: 0xB4A5, //HANGUL SYLLABLE TIKEUT WI KIYEOK - 0x8AA1: 0xB4A6, //HANGUL SYLLABLE TIKEUT WI SSANGKIYEOK - 0x8AA2: 0xB4A7, //HANGUL SYLLABLE TIKEUT WI KIYEOKSIOS - 0x8AA3: 0xB4A9, //HANGUL SYLLABLE TIKEUT WI NIEUNCIEUC - 0x8AA4: 0xB4AA, //HANGUL SYLLABLE TIKEUT WI NIEUNHIEUH - 0x8AA5: 0xB4AB, //HANGUL SYLLABLE TIKEUT WI TIKEUT - 0x8AA6: 0xB4AD, //HANGUL SYLLABLE TIKEUT WI RIEULKIYEOK - 0x8AA7: 0xB4AE, //HANGUL SYLLABLE TIKEUT WI RIEULMIEUM - 0x8AA8: 0xB4AF, //HANGUL SYLLABLE TIKEUT WI RIEULPIEUP - 0x8AA9: 0xB4B0, //HANGUL SYLLABLE TIKEUT WI RIEULSIOS - 0x8AAA: 0xB4B1, //HANGUL SYLLABLE TIKEUT WI RIEULTHIEUTH - 0x8AAB: 0xB4B2, //HANGUL SYLLABLE TIKEUT WI RIEULPHIEUPH - 0x8AAC: 0xB4B3, //HANGUL SYLLABLE TIKEUT WI RIEULHIEUH - 0x8AAD: 0xB4B4, //HANGUL SYLLABLE TIKEUT WI MIEUM - 0x8AAE: 0xB4B6, //HANGUL SYLLABLE TIKEUT WI PIEUPSIOS - 0x8AAF: 0xB4B8, //HANGUL SYLLABLE TIKEUT WI SSANGSIOS - 0x8AB0: 0xB4BA, //HANGUL SYLLABLE TIKEUT WI CIEUC - 0x8AB1: 0xB4BB, //HANGUL SYLLABLE TIKEUT WI CHIEUCH - 0x8AB2: 0xB4BC, //HANGUL SYLLABLE TIKEUT WI KHIEUKH - 0x8AB3: 0xB4BD, //HANGUL SYLLABLE TIKEUT WI THIEUTH - 0x8AB4: 0xB4BE, //HANGUL SYLLABLE TIKEUT WI PHIEUPH - 0x8AB5: 0xB4BF, //HANGUL SYLLABLE TIKEUT WI HIEUH - 0x8AB6: 0xB4C1, //HANGUL SYLLABLE TIKEUT YU KIYEOK - 0x8AB7: 0xB4C2, //HANGUL SYLLABLE TIKEUT YU SSANGKIYEOK - 0x8AB8: 0xB4C3, //HANGUL SYLLABLE TIKEUT YU KIYEOKSIOS - 0x8AB9: 0xB4C5, //HANGUL SYLLABLE TIKEUT YU NIEUNCIEUC - 0x8ABA: 0xB4C6, //HANGUL SYLLABLE TIKEUT YU NIEUNHIEUH - 0x8ABB: 0xB4C7, //HANGUL SYLLABLE TIKEUT YU TIKEUT - 0x8ABC: 0xB4C9, //HANGUL SYLLABLE TIKEUT YU RIEULKIYEOK - 0x8ABD: 0xB4CA, //HANGUL SYLLABLE TIKEUT YU RIEULMIEUM - 0x8ABE: 0xB4CB, //HANGUL SYLLABLE TIKEUT YU RIEULPIEUP - 0x8ABF: 0xB4CC, //HANGUL SYLLABLE TIKEUT YU RIEULSIOS - 0x8AC0: 0xB4CD, //HANGUL SYLLABLE TIKEUT YU RIEULTHIEUTH - 0x8AC1: 0xB4CE, //HANGUL SYLLABLE TIKEUT YU RIEULPHIEUPH - 0x8AC2: 0xB4CF, //HANGUL SYLLABLE TIKEUT YU RIEULHIEUH - 0x8AC3: 0xB4D1, //HANGUL SYLLABLE TIKEUT YU PIEUP - 0x8AC4: 0xB4D2, //HANGUL SYLLABLE TIKEUT YU PIEUPSIOS - 0x8AC5: 0xB4D3, //HANGUL SYLLABLE TIKEUT YU SIOS - 0x8AC6: 0xB4D4, //HANGUL SYLLABLE TIKEUT YU SSANGSIOS - 0x8AC7: 0xB4D6, //HANGUL SYLLABLE TIKEUT YU CIEUC - 0x8AC8: 0xB4D7, //HANGUL SYLLABLE TIKEUT YU CHIEUCH - 0x8AC9: 0xB4D8, //HANGUL SYLLABLE TIKEUT YU KHIEUKH - 0x8ACA: 0xB4D9, //HANGUL SYLLABLE TIKEUT YU THIEUTH - 0x8ACB: 0xB4DA, //HANGUL SYLLABLE TIKEUT YU PHIEUPH - 0x8ACC: 0xB4DB, //HANGUL SYLLABLE TIKEUT YU HIEUH - 0x8ACD: 0xB4DE, //HANGUL SYLLABLE TIKEUT EU SSANGKIYEOK - 0x8ACE: 0xB4DF, //HANGUL SYLLABLE TIKEUT EU KIYEOKSIOS - 0x8ACF: 0xB4E1, //HANGUL SYLLABLE TIKEUT EU NIEUNCIEUC - 0x8AD0: 0xB4E2, //HANGUL SYLLABLE TIKEUT EU NIEUNHIEUH - 0x8AD1: 0xB4E5, //HANGUL SYLLABLE TIKEUT EU RIEULKIYEOK - 0x8AD2: 0xB4E7, //HANGUL SYLLABLE TIKEUT EU RIEULPIEUP - 0x8AD3: 0xB4E8, //HANGUL SYLLABLE TIKEUT EU RIEULSIOS - 0x8AD4: 0xB4E9, //HANGUL SYLLABLE TIKEUT EU RIEULTHIEUTH - 0x8AD5: 0xB4EA, //HANGUL SYLLABLE TIKEUT EU RIEULPHIEUPH - 0x8AD6: 0xB4EB, //HANGUL SYLLABLE TIKEUT EU RIEULHIEUH - 0x8AD7: 0xB4EE, //HANGUL SYLLABLE TIKEUT EU PIEUPSIOS - 0x8AD8: 0xB4F0, //HANGUL SYLLABLE TIKEUT EU SSANGSIOS - 0x8AD9: 0xB4F2, //HANGUL SYLLABLE TIKEUT EU CIEUC - 0x8ADA: 0xB4F3, //HANGUL SYLLABLE TIKEUT EU CHIEUCH - 0x8ADB: 0xB4F4, //HANGUL SYLLABLE TIKEUT EU KHIEUKH - 0x8ADC: 0xB4F5, //HANGUL SYLLABLE TIKEUT EU THIEUTH - 0x8ADD: 0xB4F6, //HANGUL SYLLABLE TIKEUT EU PHIEUPH - 0x8ADE: 0xB4F7, //HANGUL SYLLABLE TIKEUT EU HIEUH - 0x8ADF: 0xB4F9, //HANGUL SYLLABLE TIKEUT YI KIYEOK - 0x8AE0: 0xB4FA, //HANGUL SYLLABLE TIKEUT YI SSANGKIYEOK - 0x8AE1: 0xB4FB, //HANGUL SYLLABLE TIKEUT YI KIYEOKSIOS - 0x8AE2: 0xB4FC, //HANGUL SYLLABLE TIKEUT YI NIEUN - 0x8AE3: 0xB4FD, //HANGUL SYLLABLE TIKEUT YI NIEUNCIEUC - 0x8AE4: 0xB4FE, //HANGUL SYLLABLE TIKEUT YI NIEUNHIEUH - 0x8AE5: 0xB4FF, //HANGUL SYLLABLE TIKEUT YI TIKEUT - 0x8AE6: 0xB500, //HANGUL SYLLABLE TIKEUT YI RIEUL - 0x8AE7: 0xB501, //HANGUL SYLLABLE TIKEUT YI RIEULKIYEOK - 0x8AE8: 0xB502, //HANGUL SYLLABLE TIKEUT YI RIEULMIEUM - 0x8AE9: 0xB503, //HANGUL SYLLABLE TIKEUT YI RIEULPIEUP - 0x8AEA: 0xB504, //HANGUL SYLLABLE TIKEUT YI RIEULSIOS - 0x8AEB: 0xB505, //HANGUL SYLLABLE TIKEUT YI RIEULTHIEUTH - 0x8AEC: 0xB506, //HANGUL SYLLABLE TIKEUT YI RIEULPHIEUPH - 0x8AED: 0xB507, //HANGUL SYLLABLE TIKEUT YI RIEULHIEUH - 0x8AEE: 0xB508, //HANGUL SYLLABLE TIKEUT YI MIEUM - 0x8AEF: 0xB509, //HANGUL SYLLABLE TIKEUT YI PIEUP - 0x8AF0: 0xB50A, //HANGUL SYLLABLE TIKEUT YI PIEUPSIOS - 0x8AF1: 0xB50B, //HANGUL SYLLABLE TIKEUT YI SIOS - 0x8AF2: 0xB50C, //HANGUL SYLLABLE TIKEUT YI SSANGSIOS - 0x8AF3: 0xB50D, //HANGUL SYLLABLE TIKEUT YI IEUNG - 0x8AF4: 0xB50E, //HANGUL SYLLABLE TIKEUT YI CIEUC - 0x8AF5: 0xB50F, //HANGUL SYLLABLE TIKEUT YI CHIEUCH - 0x8AF6: 0xB510, //HANGUL SYLLABLE TIKEUT YI KHIEUKH - 0x8AF7: 0xB511, //HANGUL SYLLABLE TIKEUT YI THIEUTH - 0x8AF8: 0xB512, //HANGUL SYLLABLE TIKEUT YI PHIEUPH - 0x8AF9: 0xB513, //HANGUL SYLLABLE TIKEUT YI HIEUH - 0x8AFA: 0xB516, //HANGUL SYLLABLE TIKEUT I SSANGKIYEOK - 0x8AFB: 0xB517, //HANGUL SYLLABLE TIKEUT I KIYEOKSIOS - 0x8AFC: 0xB519, //HANGUL SYLLABLE TIKEUT I NIEUNCIEUC - 0x8AFD: 0xB51A, //HANGUL SYLLABLE TIKEUT I NIEUNHIEUH - 0x8AFE: 0xB51D, //HANGUL SYLLABLE TIKEUT I RIEULKIYEOK - 0x8B41: 0xB51E, //HANGUL SYLLABLE TIKEUT I RIEULMIEUM - 0x8B42: 0xB51F, //HANGUL SYLLABLE TIKEUT I RIEULPIEUP - 0x8B43: 0xB520, //HANGUL SYLLABLE TIKEUT I RIEULSIOS - 0x8B44: 0xB521, //HANGUL SYLLABLE TIKEUT I RIEULTHIEUTH - 0x8B45: 0xB522, //HANGUL SYLLABLE TIKEUT I RIEULPHIEUPH - 0x8B46: 0xB523, //HANGUL SYLLABLE TIKEUT I RIEULHIEUH - 0x8B47: 0xB526, //HANGUL SYLLABLE TIKEUT I PIEUPSIOS - 0x8B48: 0xB52B, //HANGUL SYLLABLE TIKEUT I CHIEUCH - 0x8B49: 0xB52C, //HANGUL SYLLABLE TIKEUT I KHIEUKH - 0x8B4A: 0xB52D, //HANGUL SYLLABLE TIKEUT I THIEUTH - 0x8B4B: 0xB52E, //HANGUL SYLLABLE TIKEUT I PHIEUPH - 0x8B4C: 0xB52F, //HANGUL SYLLABLE TIKEUT I HIEUH - 0x8B4D: 0xB532, //HANGUL SYLLABLE SSANGTIKEUT A SSANGKIYEOK - 0x8B4E: 0xB533, //HANGUL SYLLABLE SSANGTIKEUT A KIYEOKSIOS - 0x8B4F: 0xB535, //HANGUL SYLLABLE SSANGTIKEUT A NIEUNCIEUC - 0x8B50: 0xB536, //HANGUL SYLLABLE SSANGTIKEUT A NIEUNHIEUH - 0x8B51: 0xB537, //HANGUL SYLLABLE SSANGTIKEUT A TIKEUT - 0x8B52: 0xB539, //HANGUL SYLLABLE SSANGTIKEUT A RIEULKIYEOK - 0x8B53: 0xB53A, //HANGUL SYLLABLE SSANGTIKEUT A RIEULMIEUM - 0x8B54: 0xB53B, //HANGUL SYLLABLE SSANGTIKEUT A RIEULPIEUP - 0x8B55: 0xB53C, //HANGUL SYLLABLE SSANGTIKEUT A RIEULSIOS - 0x8B56: 0xB53D, //HANGUL SYLLABLE SSANGTIKEUT A RIEULTHIEUTH - 0x8B57: 0xB53E, //HANGUL SYLLABLE SSANGTIKEUT A RIEULPHIEUPH - 0x8B58: 0xB53F, //HANGUL SYLLABLE SSANGTIKEUT A RIEULHIEUH - 0x8B59: 0xB542, //HANGUL SYLLABLE SSANGTIKEUT A PIEUPSIOS - 0x8B5A: 0xB546, //HANGUL SYLLABLE SSANGTIKEUT A CIEUC - 0x8B61: 0xB547, //HANGUL SYLLABLE SSANGTIKEUT A CHIEUCH - 0x8B62: 0xB548, //HANGUL SYLLABLE SSANGTIKEUT A KHIEUKH - 0x8B63: 0xB549, //HANGUL SYLLABLE SSANGTIKEUT A THIEUTH - 0x8B64: 0xB54A, //HANGUL SYLLABLE SSANGTIKEUT A PHIEUPH - 0x8B65: 0xB54E, //HANGUL SYLLABLE SSANGTIKEUT AE SSANGKIYEOK - 0x8B66: 0xB54F, //HANGUL SYLLABLE SSANGTIKEUT AE KIYEOKSIOS - 0x8B67: 0xB551, //HANGUL SYLLABLE SSANGTIKEUT AE NIEUNCIEUC - 0x8B68: 0xB552, //HANGUL SYLLABLE SSANGTIKEUT AE NIEUNHIEUH - 0x8B69: 0xB553, //HANGUL SYLLABLE SSANGTIKEUT AE TIKEUT - 0x8B6A: 0xB555, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULKIYEOK - 0x8B6B: 0xB556, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULMIEUM - 0x8B6C: 0xB557, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULPIEUP - 0x8B6D: 0xB558, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULSIOS - 0x8B6E: 0xB559, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULTHIEUTH - 0x8B6F: 0xB55A, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULPHIEUPH - 0x8B70: 0xB55B, //HANGUL SYLLABLE SSANGTIKEUT AE RIEULHIEUH - 0x8B71: 0xB55E, //HANGUL SYLLABLE SSANGTIKEUT AE PIEUPSIOS - 0x8B72: 0xB562, //HANGUL SYLLABLE SSANGTIKEUT AE CIEUC - 0x8B73: 0xB563, //HANGUL SYLLABLE SSANGTIKEUT AE CHIEUCH - 0x8B74: 0xB564, //HANGUL SYLLABLE SSANGTIKEUT AE KHIEUKH - 0x8B75: 0xB565, //HANGUL SYLLABLE SSANGTIKEUT AE THIEUTH - 0x8B76: 0xB566, //HANGUL SYLLABLE SSANGTIKEUT AE PHIEUPH - 0x8B77: 0xB567, //HANGUL SYLLABLE SSANGTIKEUT AE HIEUH - 0x8B78: 0xB568, //HANGUL SYLLABLE SSANGTIKEUT YA - 0x8B79: 0xB569, //HANGUL SYLLABLE SSANGTIKEUT YA KIYEOK - 0x8B7A: 0xB56A, //HANGUL SYLLABLE SSANGTIKEUT YA SSANGKIYEOK - 0x8B81: 0xB56B, //HANGUL SYLLABLE SSANGTIKEUT YA KIYEOKSIOS - 0x8B82: 0xB56C, //HANGUL SYLLABLE SSANGTIKEUT YA NIEUN - 0x8B83: 0xB56D, //HANGUL SYLLABLE SSANGTIKEUT YA NIEUNCIEUC - 0x8B84: 0xB56E, //HANGUL SYLLABLE SSANGTIKEUT YA NIEUNHIEUH - 0x8B85: 0xB56F, //HANGUL SYLLABLE SSANGTIKEUT YA TIKEUT - 0x8B86: 0xB570, //HANGUL SYLLABLE SSANGTIKEUT YA RIEUL - 0x8B87: 0xB571, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULKIYEOK - 0x8B88: 0xB572, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULMIEUM - 0x8B89: 0xB573, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULPIEUP - 0x8B8A: 0xB574, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULSIOS - 0x8B8B: 0xB575, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULTHIEUTH - 0x8B8C: 0xB576, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULPHIEUPH - 0x8B8D: 0xB577, //HANGUL SYLLABLE SSANGTIKEUT YA RIEULHIEUH - 0x8B8E: 0xB578, //HANGUL SYLLABLE SSANGTIKEUT YA MIEUM - 0x8B8F: 0xB579, //HANGUL SYLLABLE SSANGTIKEUT YA PIEUP - 0x8B90: 0xB57A, //HANGUL SYLLABLE SSANGTIKEUT YA PIEUPSIOS - 0x8B91: 0xB57B, //HANGUL SYLLABLE SSANGTIKEUT YA SIOS - 0x8B92: 0xB57C, //HANGUL SYLLABLE SSANGTIKEUT YA SSANGSIOS - 0x8B93: 0xB57D, //HANGUL SYLLABLE SSANGTIKEUT YA IEUNG - 0x8B94: 0xB57E, //HANGUL SYLLABLE SSANGTIKEUT YA CIEUC - 0x8B95: 0xB57F, //HANGUL SYLLABLE SSANGTIKEUT YA CHIEUCH - 0x8B96: 0xB580, //HANGUL SYLLABLE SSANGTIKEUT YA KHIEUKH - 0x8B97: 0xB581, //HANGUL SYLLABLE SSANGTIKEUT YA THIEUTH - 0x8B98: 0xB582, //HANGUL SYLLABLE SSANGTIKEUT YA PHIEUPH - 0x8B99: 0xB583, //HANGUL SYLLABLE SSANGTIKEUT YA HIEUH - 0x8B9A: 0xB584, //HANGUL SYLLABLE SSANGTIKEUT YAE - 0x8B9B: 0xB585, //HANGUL SYLLABLE SSANGTIKEUT YAE KIYEOK - 0x8B9C: 0xB586, //HANGUL SYLLABLE SSANGTIKEUT YAE SSANGKIYEOK - 0x8B9D: 0xB587, //HANGUL SYLLABLE SSANGTIKEUT YAE KIYEOKSIOS - 0x8B9E: 0xB588, //HANGUL SYLLABLE SSANGTIKEUT YAE NIEUN - 0x8B9F: 0xB589, //HANGUL SYLLABLE SSANGTIKEUT YAE NIEUNCIEUC - 0x8BA0: 0xB58A, //HANGUL SYLLABLE SSANGTIKEUT YAE NIEUNHIEUH - 0x8BA1: 0xB58B, //HANGUL SYLLABLE SSANGTIKEUT YAE TIKEUT - 0x8BA2: 0xB58C, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEUL - 0x8BA3: 0xB58D, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULKIYEOK - 0x8BA4: 0xB58E, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULMIEUM - 0x8BA5: 0xB58F, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULPIEUP - 0x8BA6: 0xB590, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULSIOS - 0x8BA7: 0xB591, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULTHIEUTH - 0x8BA8: 0xB592, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULPHIEUPH - 0x8BA9: 0xB593, //HANGUL SYLLABLE SSANGTIKEUT YAE RIEULHIEUH - 0x8BAA: 0xB594, //HANGUL SYLLABLE SSANGTIKEUT YAE MIEUM - 0x8BAB: 0xB595, //HANGUL SYLLABLE SSANGTIKEUT YAE PIEUP - 0x8BAC: 0xB596, //HANGUL SYLLABLE SSANGTIKEUT YAE PIEUPSIOS - 0x8BAD: 0xB597, //HANGUL SYLLABLE SSANGTIKEUT YAE SIOS - 0x8BAE: 0xB598, //HANGUL SYLLABLE SSANGTIKEUT YAE SSANGSIOS - 0x8BAF: 0xB599, //HANGUL SYLLABLE SSANGTIKEUT YAE IEUNG - 0x8BB0: 0xB59A, //HANGUL SYLLABLE SSANGTIKEUT YAE CIEUC - 0x8BB1: 0xB59B, //HANGUL SYLLABLE SSANGTIKEUT YAE CHIEUCH - 0x8BB2: 0xB59C, //HANGUL SYLLABLE SSANGTIKEUT YAE KHIEUKH - 0x8BB3: 0xB59D, //HANGUL SYLLABLE SSANGTIKEUT YAE THIEUTH - 0x8BB4: 0xB59E, //HANGUL SYLLABLE SSANGTIKEUT YAE PHIEUPH - 0x8BB5: 0xB59F, //HANGUL SYLLABLE SSANGTIKEUT YAE HIEUH - 0x8BB6: 0xB5A2, //HANGUL SYLLABLE SSANGTIKEUT EO SSANGKIYEOK - 0x8BB7: 0xB5A3, //HANGUL SYLLABLE SSANGTIKEUT EO KIYEOKSIOS - 0x8BB8: 0xB5A5, //HANGUL SYLLABLE SSANGTIKEUT EO NIEUNCIEUC - 0x8BB9: 0xB5A6, //HANGUL SYLLABLE SSANGTIKEUT EO NIEUNHIEUH - 0x8BBA: 0xB5A7, //HANGUL SYLLABLE SSANGTIKEUT EO TIKEUT - 0x8BBB: 0xB5A9, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULKIYEOK - 0x8BBC: 0xB5AC, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULSIOS - 0x8BBD: 0xB5AD, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULTHIEUTH - 0x8BBE: 0xB5AE, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULPHIEUPH - 0x8BBF: 0xB5AF, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULHIEUH - 0x8BC0: 0xB5B2, //HANGUL SYLLABLE SSANGTIKEUT EO PIEUPSIOS - 0x8BC1: 0xB5B6, //HANGUL SYLLABLE SSANGTIKEUT EO CIEUC - 0x8BC2: 0xB5B7, //HANGUL SYLLABLE SSANGTIKEUT EO CHIEUCH - 0x8BC3: 0xB5B8, //HANGUL SYLLABLE SSANGTIKEUT EO KHIEUKH - 0x8BC4: 0xB5B9, //HANGUL SYLLABLE SSANGTIKEUT EO THIEUTH - 0x8BC5: 0xB5BA, //HANGUL SYLLABLE SSANGTIKEUT EO PHIEUPH - 0x8BC6: 0xB5BE, //HANGUL SYLLABLE SSANGTIKEUT E SSANGKIYEOK - 0x8BC7: 0xB5BF, //HANGUL SYLLABLE SSANGTIKEUT E KIYEOKSIOS - 0x8BC8: 0xB5C1, //HANGUL SYLLABLE SSANGTIKEUT E NIEUNCIEUC - 0x8BC9: 0xB5C2, //HANGUL SYLLABLE SSANGTIKEUT E NIEUNHIEUH - 0x8BCA: 0xB5C3, //HANGUL SYLLABLE SSANGTIKEUT E TIKEUT - 0x8BCB: 0xB5C5, //HANGUL SYLLABLE SSANGTIKEUT E RIEULKIYEOK - 0x8BCC: 0xB5C6, //HANGUL SYLLABLE SSANGTIKEUT E RIEULMIEUM - 0x8BCD: 0xB5C7, //HANGUL SYLLABLE SSANGTIKEUT E RIEULPIEUP - 0x8BCE: 0xB5C8, //HANGUL SYLLABLE SSANGTIKEUT E RIEULSIOS - 0x8BCF: 0xB5C9, //HANGUL SYLLABLE SSANGTIKEUT E RIEULTHIEUTH - 0x8BD0: 0xB5CA, //HANGUL SYLLABLE SSANGTIKEUT E RIEULPHIEUPH - 0x8BD1: 0xB5CB, //HANGUL SYLLABLE SSANGTIKEUT E RIEULHIEUH - 0x8BD2: 0xB5CE, //HANGUL SYLLABLE SSANGTIKEUT E PIEUPSIOS - 0x8BD3: 0xB5D2, //HANGUL SYLLABLE SSANGTIKEUT E CIEUC - 0x8BD4: 0xB5D3, //HANGUL SYLLABLE SSANGTIKEUT E CHIEUCH - 0x8BD5: 0xB5D4, //HANGUL SYLLABLE SSANGTIKEUT E KHIEUKH - 0x8BD6: 0xB5D5, //HANGUL SYLLABLE SSANGTIKEUT E THIEUTH - 0x8BD7: 0xB5D6, //HANGUL SYLLABLE SSANGTIKEUT E PHIEUPH - 0x8BD8: 0xB5D7, //HANGUL SYLLABLE SSANGTIKEUT E HIEUH - 0x8BD9: 0xB5D9, //HANGUL SYLLABLE SSANGTIKEUT YEO KIYEOK - 0x8BDA: 0xB5DA, //HANGUL SYLLABLE SSANGTIKEUT YEO SSANGKIYEOK - 0x8BDB: 0xB5DB, //HANGUL SYLLABLE SSANGTIKEUT YEO KIYEOKSIOS - 0x8BDC: 0xB5DC, //HANGUL SYLLABLE SSANGTIKEUT YEO NIEUN - 0x8BDD: 0xB5DD, //HANGUL SYLLABLE SSANGTIKEUT YEO NIEUNCIEUC - 0x8BDE: 0xB5DE, //HANGUL SYLLABLE SSANGTIKEUT YEO NIEUNHIEUH - 0x8BDF: 0xB5DF, //HANGUL SYLLABLE SSANGTIKEUT YEO TIKEUT - 0x8BE0: 0xB5E0, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEUL - 0x8BE1: 0xB5E1, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULKIYEOK - 0x8BE2: 0xB5E2, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULMIEUM - 0x8BE3: 0xB5E3, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULPIEUP - 0x8BE4: 0xB5E4, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULSIOS - 0x8BE5: 0xB5E5, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULTHIEUTH - 0x8BE6: 0xB5E6, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULPHIEUPH - 0x8BE7: 0xB5E7, //HANGUL SYLLABLE SSANGTIKEUT YEO RIEULHIEUH - 0x8BE8: 0xB5E8, //HANGUL SYLLABLE SSANGTIKEUT YEO MIEUM - 0x8BE9: 0xB5E9, //HANGUL SYLLABLE SSANGTIKEUT YEO PIEUP - 0x8BEA: 0xB5EA, //HANGUL SYLLABLE SSANGTIKEUT YEO PIEUPSIOS - 0x8BEB: 0xB5EB, //HANGUL SYLLABLE SSANGTIKEUT YEO SIOS - 0x8BEC: 0xB5ED, //HANGUL SYLLABLE SSANGTIKEUT YEO IEUNG - 0x8BED: 0xB5EE, //HANGUL SYLLABLE SSANGTIKEUT YEO CIEUC - 0x8BEE: 0xB5EF, //HANGUL SYLLABLE SSANGTIKEUT YEO CHIEUCH - 0x8BEF: 0xB5F0, //HANGUL SYLLABLE SSANGTIKEUT YEO KHIEUKH - 0x8BF0: 0xB5F1, //HANGUL SYLLABLE SSANGTIKEUT YEO THIEUTH - 0x8BF1: 0xB5F2, //HANGUL SYLLABLE SSANGTIKEUT YEO PHIEUPH - 0x8BF2: 0xB5F3, //HANGUL SYLLABLE SSANGTIKEUT YEO HIEUH - 0x8BF3: 0xB5F4, //HANGUL SYLLABLE SSANGTIKEUT YE - 0x8BF4: 0xB5F5, //HANGUL SYLLABLE SSANGTIKEUT YE KIYEOK - 0x8BF5: 0xB5F6, //HANGUL SYLLABLE SSANGTIKEUT YE SSANGKIYEOK - 0x8BF6: 0xB5F7, //HANGUL SYLLABLE SSANGTIKEUT YE KIYEOKSIOS - 0x8BF7: 0xB5F8, //HANGUL SYLLABLE SSANGTIKEUT YE NIEUN - 0x8BF8: 0xB5F9, //HANGUL SYLLABLE SSANGTIKEUT YE NIEUNCIEUC - 0x8BF9: 0xB5FA, //HANGUL SYLLABLE SSANGTIKEUT YE NIEUNHIEUH - 0x8BFA: 0xB5FB, //HANGUL SYLLABLE SSANGTIKEUT YE TIKEUT - 0x8BFB: 0xB5FC, //HANGUL SYLLABLE SSANGTIKEUT YE RIEUL - 0x8BFC: 0xB5FD, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULKIYEOK - 0x8BFD: 0xB5FE, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULMIEUM - 0x8BFE: 0xB5FF, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULPIEUP - 0x8C41: 0xB600, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULSIOS - 0x8C42: 0xB601, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULTHIEUTH - 0x8C43: 0xB602, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULPHIEUPH - 0x8C44: 0xB603, //HANGUL SYLLABLE SSANGTIKEUT YE RIEULHIEUH - 0x8C45: 0xB604, //HANGUL SYLLABLE SSANGTIKEUT YE MIEUM - 0x8C46: 0xB605, //HANGUL SYLLABLE SSANGTIKEUT YE PIEUP - 0x8C47: 0xB606, //HANGUL SYLLABLE SSANGTIKEUT YE PIEUPSIOS - 0x8C48: 0xB607, //HANGUL SYLLABLE SSANGTIKEUT YE SIOS - 0x8C49: 0xB608, //HANGUL SYLLABLE SSANGTIKEUT YE SSANGSIOS - 0x8C4A: 0xB609, //HANGUL SYLLABLE SSANGTIKEUT YE IEUNG - 0x8C4B: 0xB60A, //HANGUL SYLLABLE SSANGTIKEUT YE CIEUC - 0x8C4C: 0xB60B, //HANGUL SYLLABLE SSANGTIKEUT YE CHIEUCH - 0x8C4D: 0xB60C, //HANGUL SYLLABLE SSANGTIKEUT YE KHIEUKH - 0x8C4E: 0xB60D, //HANGUL SYLLABLE SSANGTIKEUT YE THIEUTH - 0x8C4F: 0xB60E, //HANGUL SYLLABLE SSANGTIKEUT YE PHIEUPH - 0x8C50: 0xB60F, //HANGUL SYLLABLE SSANGTIKEUT YE HIEUH - 0x8C51: 0xB612, //HANGUL SYLLABLE SSANGTIKEUT O SSANGKIYEOK - 0x8C52: 0xB613, //HANGUL SYLLABLE SSANGTIKEUT O KIYEOKSIOS - 0x8C53: 0xB615, //HANGUL SYLLABLE SSANGTIKEUT O NIEUNCIEUC - 0x8C54: 0xB616, //HANGUL SYLLABLE SSANGTIKEUT O NIEUNHIEUH - 0x8C55: 0xB617, //HANGUL SYLLABLE SSANGTIKEUT O TIKEUT - 0x8C56: 0xB619, //HANGUL SYLLABLE SSANGTIKEUT O RIEULKIYEOK - 0x8C57: 0xB61A, //HANGUL SYLLABLE SSANGTIKEUT O RIEULMIEUM - 0x8C58: 0xB61B, //HANGUL SYLLABLE SSANGTIKEUT O RIEULPIEUP - 0x8C59: 0xB61C, //HANGUL SYLLABLE SSANGTIKEUT O RIEULSIOS - 0x8C5A: 0xB61D, //HANGUL SYLLABLE SSANGTIKEUT O RIEULTHIEUTH - 0x8C61: 0xB61E, //HANGUL SYLLABLE SSANGTIKEUT O RIEULPHIEUPH - 0x8C62: 0xB61F, //HANGUL SYLLABLE SSANGTIKEUT O RIEULHIEUH - 0x8C63: 0xB620, //HANGUL SYLLABLE SSANGTIKEUT O MIEUM - 0x8C64: 0xB621, //HANGUL SYLLABLE SSANGTIKEUT O PIEUP - 0x8C65: 0xB622, //HANGUL SYLLABLE SSANGTIKEUT O PIEUPSIOS - 0x8C66: 0xB623, //HANGUL SYLLABLE SSANGTIKEUT O SIOS - 0x8C67: 0xB624, //HANGUL SYLLABLE SSANGTIKEUT O SSANGSIOS - 0x8C68: 0xB626, //HANGUL SYLLABLE SSANGTIKEUT O CIEUC - 0x8C69: 0xB627, //HANGUL SYLLABLE SSANGTIKEUT O CHIEUCH - 0x8C6A: 0xB628, //HANGUL SYLLABLE SSANGTIKEUT O KHIEUKH - 0x8C6B: 0xB629, //HANGUL SYLLABLE SSANGTIKEUT O THIEUTH - 0x8C6C: 0xB62A, //HANGUL SYLLABLE SSANGTIKEUT O PHIEUPH - 0x8C6D: 0xB62B, //HANGUL SYLLABLE SSANGTIKEUT O HIEUH - 0x8C6E: 0xB62D, //HANGUL SYLLABLE SSANGTIKEUT WA KIYEOK - 0x8C6F: 0xB62E, //HANGUL SYLLABLE SSANGTIKEUT WA SSANGKIYEOK - 0x8C70: 0xB62F, //HANGUL SYLLABLE SSANGTIKEUT WA KIYEOKSIOS - 0x8C71: 0xB630, //HANGUL SYLLABLE SSANGTIKEUT WA NIEUN - 0x8C72: 0xB631, //HANGUL SYLLABLE SSANGTIKEUT WA NIEUNCIEUC - 0x8C73: 0xB632, //HANGUL SYLLABLE SSANGTIKEUT WA NIEUNHIEUH - 0x8C74: 0xB633, //HANGUL SYLLABLE SSANGTIKEUT WA TIKEUT - 0x8C75: 0xB635, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULKIYEOK - 0x8C76: 0xB636, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULMIEUM - 0x8C77: 0xB637, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULPIEUP - 0x8C78: 0xB638, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULSIOS - 0x8C79: 0xB639, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULTHIEUTH - 0x8C7A: 0xB63A, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULPHIEUPH - 0x8C81: 0xB63B, //HANGUL SYLLABLE SSANGTIKEUT WA RIEULHIEUH - 0x8C82: 0xB63C, //HANGUL SYLLABLE SSANGTIKEUT WA MIEUM - 0x8C83: 0xB63D, //HANGUL SYLLABLE SSANGTIKEUT WA PIEUP - 0x8C84: 0xB63E, //HANGUL SYLLABLE SSANGTIKEUT WA PIEUPSIOS - 0x8C85: 0xB63F, //HANGUL SYLLABLE SSANGTIKEUT WA SIOS - 0x8C86: 0xB640, //HANGUL SYLLABLE SSANGTIKEUT WA SSANGSIOS - 0x8C87: 0xB641, //HANGUL SYLLABLE SSANGTIKEUT WA IEUNG - 0x8C88: 0xB642, //HANGUL SYLLABLE SSANGTIKEUT WA CIEUC - 0x8C89: 0xB643, //HANGUL SYLLABLE SSANGTIKEUT WA CHIEUCH - 0x8C8A: 0xB644, //HANGUL SYLLABLE SSANGTIKEUT WA KHIEUKH - 0x8C8B: 0xB645, //HANGUL SYLLABLE SSANGTIKEUT WA THIEUTH - 0x8C8C: 0xB646, //HANGUL SYLLABLE SSANGTIKEUT WA PHIEUPH - 0x8C8D: 0xB647, //HANGUL SYLLABLE SSANGTIKEUT WA HIEUH - 0x8C8E: 0xB649, //HANGUL SYLLABLE SSANGTIKEUT WAE KIYEOK - 0x8C8F: 0xB64A, //HANGUL SYLLABLE SSANGTIKEUT WAE SSANGKIYEOK - 0x8C90: 0xB64B, //HANGUL SYLLABLE SSANGTIKEUT WAE KIYEOKSIOS - 0x8C91: 0xB64C, //HANGUL SYLLABLE SSANGTIKEUT WAE NIEUN - 0x8C92: 0xB64D, //HANGUL SYLLABLE SSANGTIKEUT WAE NIEUNCIEUC - 0x8C93: 0xB64E, //HANGUL SYLLABLE SSANGTIKEUT WAE NIEUNHIEUH - 0x8C94: 0xB64F, //HANGUL SYLLABLE SSANGTIKEUT WAE TIKEUT - 0x8C95: 0xB650, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEUL - 0x8C96: 0xB651, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULKIYEOK - 0x8C97: 0xB652, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULMIEUM - 0x8C98: 0xB653, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULPIEUP - 0x8C99: 0xB654, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULSIOS - 0x8C9A: 0xB655, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULTHIEUTH - 0x8C9B: 0xB656, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULPHIEUPH - 0x8C9C: 0xB657, //HANGUL SYLLABLE SSANGTIKEUT WAE RIEULHIEUH - 0x8C9D: 0xB658, //HANGUL SYLLABLE SSANGTIKEUT WAE MIEUM - 0x8C9E: 0xB659, //HANGUL SYLLABLE SSANGTIKEUT WAE PIEUP - 0x8C9F: 0xB65A, //HANGUL SYLLABLE SSANGTIKEUT WAE PIEUPSIOS - 0x8CA0: 0xB65B, //HANGUL SYLLABLE SSANGTIKEUT WAE SIOS - 0x8CA1: 0xB65C, //HANGUL SYLLABLE SSANGTIKEUT WAE SSANGSIOS - 0x8CA2: 0xB65D, //HANGUL SYLLABLE SSANGTIKEUT WAE IEUNG - 0x8CA3: 0xB65E, //HANGUL SYLLABLE SSANGTIKEUT WAE CIEUC - 0x8CA4: 0xB65F, //HANGUL SYLLABLE SSANGTIKEUT WAE CHIEUCH - 0x8CA5: 0xB660, //HANGUL SYLLABLE SSANGTIKEUT WAE KHIEUKH - 0x8CA6: 0xB661, //HANGUL SYLLABLE SSANGTIKEUT WAE THIEUTH - 0x8CA7: 0xB662, //HANGUL SYLLABLE SSANGTIKEUT WAE PHIEUPH - 0x8CA8: 0xB663, //HANGUL SYLLABLE SSANGTIKEUT WAE HIEUH - 0x8CA9: 0xB665, //HANGUL SYLLABLE SSANGTIKEUT OE KIYEOK - 0x8CAA: 0xB666, //HANGUL SYLLABLE SSANGTIKEUT OE SSANGKIYEOK - 0x8CAB: 0xB667, //HANGUL SYLLABLE SSANGTIKEUT OE KIYEOKSIOS - 0x8CAC: 0xB669, //HANGUL SYLLABLE SSANGTIKEUT OE NIEUNCIEUC - 0x8CAD: 0xB66A, //HANGUL SYLLABLE SSANGTIKEUT OE NIEUNHIEUH - 0x8CAE: 0xB66B, //HANGUL SYLLABLE SSANGTIKEUT OE TIKEUT - 0x8CAF: 0xB66C, //HANGUL SYLLABLE SSANGTIKEUT OE RIEUL - 0x8CB0: 0xB66D, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULKIYEOK - 0x8CB1: 0xB66E, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULMIEUM - 0x8CB2: 0xB66F, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULPIEUP - 0x8CB3: 0xB670, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULSIOS - 0x8CB4: 0xB671, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULTHIEUTH - 0x8CB5: 0xB672, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULPHIEUPH - 0x8CB6: 0xB673, //HANGUL SYLLABLE SSANGTIKEUT OE RIEULHIEUH - 0x8CB7: 0xB674, //HANGUL SYLLABLE SSANGTIKEUT OE MIEUM - 0x8CB8: 0xB675, //HANGUL SYLLABLE SSANGTIKEUT OE PIEUP - 0x8CB9: 0xB676, //HANGUL SYLLABLE SSANGTIKEUT OE PIEUPSIOS - 0x8CBA: 0xB677, //HANGUL SYLLABLE SSANGTIKEUT OE SIOS - 0x8CBB: 0xB678, //HANGUL SYLLABLE SSANGTIKEUT OE SSANGSIOS - 0x8CBC: 0xB679, //HANGUL SYLLABLE SSANGTIKEUT OE IEUNG - 0x8CBD: 0xB67A, //HANGUL SYLLABLE SSANGTIKEUT OE CIEUC - 0x8CBE: 0xB67B, //HANGUL SYLLABLE SSANGTIKEUT OE CHIEUCH - 0x8CBF: 0xB67C, //HANGUL SYLLABLE SSANGTIKEUT OE KHIEUKH - 0x8CC0: 0xB67D, //HANGUL SYLLABLE SSANGTIKEUT OE THIEUTH - 0x8CC1: 0xB67E, //HANGUL SYLLABLE SSANGTIKEUT OE PHIEUPH - 0x8CC2: 0xB67F, //HANGUL SYLLABLE SSANGTIKEUT OE HIEUH - 0x8CC3: 0xB680, //HANGUL SYLLABLE SSANGTIKEUT YO - 0x8CC4: 0xB681, //HANGUL SYLLABLE SSANGTIKEUT YO KIYEOK - 0x8CC5: 0xB682, //HANGUL SYLLABLE SSANGTIKEUT YO SSANGKIYEOK - 0x8CC6: 0xB683, //HANGUL SYLLABLE SSANGTIKEUT YO KIYEOKSIOS - 0x8CC7: 0xB684, //HANGUL SYLLABLE SSANGTIKEUT YO NIEUN - 0x8CC8: 0xB685, //HANGUL SYLLABLE SSANGTIKEUT YO NIEUNCIEUC - 0x8CC9: 0xB686, //HANGUL SYLLABLE SSANGTIKEUT YO NIEUNHIEUH - 0x8CCA: 0xB687, //HANGUL SYLLABLE SSANGTIKEUT YO TIKEUT - 0x8CCB: 0xB688, //HANGUL SYLLABLE SSANGTIKEUT YO RIEUL - 0x8CCC: 0xB689, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULKIYEOK - 0x8CCD: 0xB68A, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULMIEUM - 0x8CCE: 0xB68B, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULPIEUP - 0x8CCF: 0xB68C, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULSIOS - 0x8CD0: 0xB68D, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULTHIEUTH - 0x8CD1: 0xB68E, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULPHIEUPH - 0x8CD2: 0xB68F, //HANGUL SYLLABLE SSANGTIKEUT YO RIEULHIEUH - 0x8CD3: 0xB690, //HANGUL SYLLABLE SSANGTIKEUT YO MIEUM - 0x8CD4: 0xB691, //HANGUL SYLLABLE SSANGTIKEUT YO PIEUP - 0x8CD5: 0xB692, //HANGUL SYLLABLE SSANGTIKEUT YO PIEUPSIOS - 0x8CD6: 0xB693, //HANGUL SYLLABLE SSANGTIKEUT YO SIOS - 0x8CD7: 0xB694, //HANGUL SYLLABLE SSANGTIKEUT YO SSANGSIOS - 0x8CD8: 0xB695, //HANGUL SYLLABLE SSANGTIKEUT YO IEUNG - 0x8CD9: 0xB696, //HANGUL SYLLABLE SSANGTIKEUT YO CIEUC - 0x8CDA: 0xB697, //HANGUL SYLLABLE SSANGTIKEUT YO CHIEUCH - 0x8CDB: 0xB698, //HANGUL SYLLABLE SSANGTIKEUT YO KHIEUKH - 0x8CDC: 0xB699, //HANGUL SYLLABLE SSANGTIKEUT YO THIEUTH - 0x8CDD: 0xB69A, //HANGUL SYLLABLE SSANGTIKEUT YO PHIEUPH - 0x8CDE: 0xB69B, //HANGUL SYLLABLE SSANGTIKEUT YO HIEUH - 0x8CDF: 0xB69E, //HANGUL SYLLABLE SSANGTIKEUT U SSANGKIYEOK - 0x8CE0: 0xB69F, //HANGUL SYLLABLE SSANGTIKEUT U KIYEOKSIOS - 0x8CE1: 0xB6A1, //HANGUL SYLLABLE SSANGTIKEUT U NIEUNCIEUC - 0x8CE2: 0xB6A2, //HANGUL SYLLABLE SSANGTIKEUT U NIEUNHIEUH - 0x8CE3: 0xB6A3, //HANGUL SYLLABLE SSANGTIKEUT U TIKEUT - 0x8CE4: 0xB6A5, //HANGUL SYLLABLE SSANGTIKEUT U RIEULKIYEOK - 0x8CE5: 0xB6A6, //HANGUL SYLLABLE SSANGTIKEUT U RIEULMIEUM - 0x8CE6: 0xB6A7, //HANGUL SYLLABLE SSANGTIKEUT U RIEULPIEUP - 0x8CE7: 0xB6A8, //HANGUL SYLLABLE SSANGTIKEUT U RIEULSIOS - 0x8CE8: 0xB6A9, //HANGUL SYLLABLE SSANGTIKEUT U RIEULTHIEUTH - 0x8CE9: 0xB6AA, //HANGUL SYLLABLE SSANGTIKEUT U RIEULPHIEUPH - 0x8CEA: 0xB6AD, //HANGUL SYLLABLE SSANGTIKEUT U PIEUP - 0x8CEB: 0xB6AE, //HANGUL SYLLABLE SSANGTIKEUT U PIEUPSIOS - 0x8CEC: 0xB6AF, //HANGUL SYLLABLE SSANGTIKEUT U SIOS - 0x8CED: 0xB6B0, //HANGUL SYLLABLE SSANGTIKEUT U SSANGSIOS - 0x8CEE: 0xB6B2, //HANGUL SYLLABLE SSANGTIKEUT U CIEUC - 0x8CEF: 0xB6B3, //HANGUL SYLLABLE SSANGTIKEUT U CHIEUCH - 0x8CF0: 0xB6B4, //HANGUL SYLLABLE SSANGTIKEUT U KHIEUKH - 0x8CF1: 0xB6B5, //HANGUL SYLLABLE SSANGTIKEUT U THIEUTH - 0x8CF2: 0xB6B6, //HANGUL SYLLABLE SSANGTIKEUT U PHIEUPH - 0x8CF3: 0xB6B7, //HANGUL SYLLABLE SSANGTIKEUT U HIEUH - 0x8CF4: 0xB6B8, //HANGUL SYLLABLE SSANGTIKEUT WEO - 0x8CF5: 0xB6B9, //HANGUL SYLLABLE SSANGTIKEUT WEO KIYEOK - 0x8CF6: 0xB6BA, //HANGUL SYLLABLE SSANGTIKEUT WEO SSANGKIYEOK - 0x8CF7: 0xB6BB, //HANGUL SYLLABLE SSANGTIKEUT WEO KIYEOKSIOS - 0x8CF8: 0xB6BC, //HANGUL SYLLABLE SSANGTIKEUT WEO NIEUN - 0x8CF9: 0xB6BD, //HANGUL SYLLABLE SSANGTIKEUT WEO NIEUNCIEUC - 0x8CFA: 0xB6BE, //HANGUL SYLLABLE SSANGTIKEUT WEO NIEUNHIEUH - 0x8CFB: 0xB6BF, //HANGUL SYLLABLE SSANGTIKEUT WEO TIKEUT - 0x8CFC: 0xB6C0, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEUL - 0x8CFD: 0xB6C1, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULKIYEOK - 0x8CFE: 0xB6C2, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULMIEUM - 0x8D41: 0xB6C3, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULPIEUP - 0x8D42: 0xB6C4, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULSIOS - 0x8D43: 0xB6C5, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULTHIEUTH - 0x8D44: 0xB6C6, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULPHIEUPH - 0x8D45: 0xB6C7, //HANGUL SYLLABLE SSANGTIKEUT WEO RIEULHIEUH - 0x8D46: 0xB6C8, //HANGUL SYLLABLE SSANGTIKEUT WEO MIEUM - 0x8D47: 0xB6C9, //HANGUL SYLLABLE SSANGTIKEUT WEO PIEUP - 0x8D48: 0xB6CA, //HANGUL SYLLABLE SSANGTIKEUT WEO PIEUPSIOS - 0x8D49: 0xB6CB, //HANGUL SYLLABLE SSANGTIKEUT WEO SIOS - 0x8D4A: 0xB6CC, //HANGUL SYLLABLE SSANGTIKEUT WEO SSANGSIOS - 0x8D4B: 0xB6CD, //HANGUL SYLLABLE SSANGTIKEUT WEO IEUNG - 0x8D4C: 0xB6CE, //HANGUL SYLLABLE SSANGTIKEUT WEO CIEUC - 0x8D4D: 0xB6CF, //HANGUL SYLLABLE SSANGTIKEUT WEO CHIEUCH - 0x8D4E: 0xB6D0, //HANGUL SYLLABLE SSANGTIKEUT WEO KHIEUKH - 0x8D4F: 0xB6D1, //HANGUL SYLLABLE SSANGTIKEUT WEO THIEUTH - 0x8D50: 0xB6D2, //HANGUL SYLLABLE SSANGTIKEUT WEO PHIEUPH - 0x8D51: 0xB6D3, //HANGUL SYLLABLE SSANGTIKEUT WEO HIEUH - 0x8D52: 0xB6D5, //HANGUL SYLLABLE SSANGTIKEUT WE KIYEOK - 0x8D53: 0xB6D6, //HANGUL SYLLABLE SSANGTIKEUT WE SSANGKIYEOK - 0x8D54: 0xB6D7, //HANGUL SYLLABLE SSANGTIKEUT WE KIYEOKSIOS - 0x8D55: 0xB6D8, //HANGUL SYLLABLE SSANGTIKEUT WE NIEUN - 0x8D56: 0xB6D9, //HANGUL SYLLABLE SSANGTIKEUT WE NIEUNCIEUC - 0x8D57: 0xB6DA, //HANGUL SYLLABLE SSANGTIKEUT WE NIEUNHIEUH - 0x8D58: 0xB6DB, //HANGUL SYLLABLE SSANGTIKEUT WE TIKEUT - 0x8D59: 0xB6DC, //HANGUL SYLLABLE SSANGTIKEUT WE RIEUL - 0x8D5A: 0xB6DD, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULKIYEOK - 0x8D61: 0xB6DE, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULMIEUM - 0x8D62: 0xB6DF, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULPIEUP - 0x8D63: 0xB6E0, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULSIOS - 0x8D64: 0xB6E1, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULTHIEUTH - 0x8D65: 0xB6E2, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULPHIEUPH - 0x8D66: 0xB6E3, //HANGUL SYLLABLE SSANGTIKEUT WE RIEULHIEUH - 0x8D67: 0xB6E4, //HANGUL SYLLABLE SSANGTIKEUT WE MIEUM - 0x8D68: 0xB6E5, //HANGUL SYLLABLE SSANGTIKEUT WE PIEUP - 0x8D69: 0xB6E6, //HANGUL SYLLABLE SSANGTIKEUT WE PIEUPSIOS - 0x8D6A: 0xB6E7, //HANGUL SYLLABLE SSANGTIKEUT WE SIOS - 0x8D6B: 0xB6E8, //HANGUL SYLLABLE SSANGTIKEUT WE SSANGSIOS - 0x8D6C: 0xB6E9, //HANGUL SYLLABLE SSANGTIKEUT WE IEUNG - 0x8D6D: 0xB6EA, //HANGUL SYLLABLE SSANGTIKEUT WE CIEUC - 0x8D6E: 0xB6EB, //HANGUL SYLLABLE SSANGTIKEUT WE CHIEUCH - 0x8D6F: 0xB6EC, //HANGUL SYLLABLE SSANGTIKEUT WE KHIEUKH - 0x8D70: 0xB6ED, //HANGUL SYLLABLE SSANGTIKEUT WE THIEUTH - 0x8D71: 0xB6EE, //HANGUL SYLLABLE SSANGTIKEUT WE PHIEUPH - 0x8D72: 0xB6EF, //HANGUL SYLLABLE SSANGTIKEUT WE HIEUH - 0x8D73: 0xB6F1, //HANGUL SYLLABLE SSANGTIKEUT WI KIYEOK - 0x8D74: 0xB6F2, //HANGUL SYLLABLE SSANGTIKEUT WI SSANGKIYEOK - 0x8D75: 0xB6F3, //HANGUL SYLLABLE SSANGTIKEUT WI KIYEOKSIOS - 0x8D76: 0xB6F5, //HANGUL SYLLABLE SSANGTIKEUT WI NIEUNCIEUC - 0x8D77: 0xB6F6, //HANGUL SYLLABLE SSANGTIKEUT WI NIEUNHIEUH - 0x8D78: 0xB6F7, //HANGUL SYLLABLE SSANGTIKEUT WI TIKEUT - 0x8D79: 0xB6F9, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULKIYEOK - 0x8D7A: 0xB6FA, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULMIEUM - 0x8D81: 0xB6FB, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULPIEUP - 0x8D82: 0xB6FC, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULSIOS - 0x8D83: 0xB6FD, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULTHIEUTH - 0x8D84: 0xB6FE, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULPHIEUPH - 0x8D85: 0xB6FF, //HANGUL SYLLABLE SSANGTIKEUT WI RIEULHIEUH - 0x8D86: 0xB702, //HANGUL SYLLABLE SSANGTIKEUT WI PIEUPSIOS - 0x8D87: 0xB703, //HANGUL SYLLABLE SSANGTIKEUT WI SIOS - 0x8D88: 0xB704, //HANGUL SYLLABLE SSANGTIKEUT WI SSANGSIOS - 0x8D89: 0xB706, //HANGUL SYLLABLE SSANGTIKEUT WI CIEUC - 0x8D8A: 0xB707, //HANGUL SYLLABLE SSANGTIKEUT WI CHIEUCH - 0x8D8B: 0xB708, //HANGUL SYLLABLE SSANGTIKEUT WI KHIEUKH - 0x8D8C: 0xB709, //HANGUL SYLLABLE SSANGTIKEUT WI THIEUTH - 0x8D8D: 0xB70A, //HANGUL SYLLABLE SSANGTIKEUT WI PHIEUPH - 0x8D8E: 0xB70B, //HANGUL SYLLABLE SSANGTIKEUT WI HIEUH - 0x8D8F: 0xB70C, //HANGUL SYLLABLE SSANGTIKEUT YU - 0x8D90: 0xB70D, //HANGUL SYLLABLE SSANGTIKEUT YU KIYEOK - 0x8D91: 0xB70E, //HANGUL SYLLABLE SSANGTIKEUT YU SSANGKIYEOK - 0x8D92: 0xB70F, //HANGUL SYLLABLE SSANGTIKEUT YU KIYEOKSIOS - 0x8D93: 0xB710, //HANGUL SYLLABLE SSANGTIKEUT YU NIEUN - 0x8D94: 0xB711, //HANGUL SYLLABLE SSANGTIKEUT YU NIEUNCIEUC - 0x8D95: 0xB712, //HANGUL SYLLABLE SSANGTIKEUT YU NIEUNHIEUH - 0x8D96: 0xB713, //HANGUL SYLLABLE SSANGTIKEUT YU TIKEUT - 0x8D97: 0xB714, //HANGUL SYLLABLE SSANGTIKEUT YU RIEUL - 0x8D98: 0xB715, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULKIYEOK - 0x8D99: 0xB716, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULMIEUM - 0x8D9A: 0xB717, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULPIEUP - 0x8D9B: 0xB718, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULSIOS - 0x8D9C: 0xB719, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULTHIEUTH - 0x8D9D: 0xB71A, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULPHIEUPH - 0x8D9E: 0xB71B, //HANGUL SYLLABLE SSANGTIKEUT YU RIEULHIEUH - 0x8D9F: 0xB71C, //HANGUL SYLLABLE SSANGTIKEUT YU MIEUM - 0x8DA0: 0xB71D, //HANGUL SYLLABLE SSANGTIKEUT YU PIEUP - 0x8DA1: 0xB71E, //HANGUL SYLLABLE SSANGTIKEUT YU PIEUPSIOS - 0x8DA2: 0xB71F, //HANGUL SYLLABLE SSANGTIKEUT YU SIOS - 0x8DA3: 0xB720, //HANGUL SYLLABLE SSANGTIKEUT YU SSANGSIOS - 0x8DA4: 0xB721, //HANGUL SYLLABLE SSANGTIKEUT YU IEUNG - 0x8DA5: 0xB722, //HANGUL SYLLABLE SSANGTIKEUT YU CIEUC - 0x8DA6: 0xB723, //HANGUL SYLLABLE SSANGTIKEUT YU CHIEUCH - 0x8DA7: 0xB724, //HANGUL SYLLABLE SSANGTIKEUT YU KHIEUKH - 0x8DA8: 0xB725, //HANGUL SYLLABLE SSANGTIKEUT YU THIEUTH - 0x8DA9: 0xB726, //HANGUL SYLLABLE SSANGTIKEUT YU PHIEUPH - 0x8DAA: 0xB727, //HANGUL SYLLABLE SSANGTIKEUT YU HIEUH - 0x8DAB: 0xB72A, //HANGUL SYLLABLE SSANGTIKEUT EU SSANGKIYEOK - 0x8DAC: 0xB72B, //HANGUL SYLLABLE SSANGTIKEUT EU KIYEOKSIOS - 0x8DAD: 0xB72D, //HANGUL SYLLABLE SSANGTIKEUT EU NIEUNCIEUC - 0x8DAE: 0xB72E, //HANGUL SYLLABLE SSANGTIKEUT EU NIEUNHIEUH - 0x8DAF: 0xB731, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULKIYEOK - 0x8DB0: 0xB732, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULMIEUM - 0x8DB1: 0xB733, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULPIEUP - 0x8DB2: 0xB734, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULSIOS - 0x8DB3: 0xB735, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULTHIEUTH - 0x8DB4: 0xB736, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULPHIEUPH - 0x8DB5: 0xB737, //HANGUL SYLLABLE SSANGTIKEUT EU RIEULHIEUH - 0x8DB6: 0xB73A, //HANGUL SYLLABLE SSANGTIKEUT EU PIEUPSIOS - 0x8DB7: 0xB73C, //HANGUL SYLLABLE SSANGTIKEUT EU SSANGSIOS - 0x8DB8: 0xB73D, //HANGUL SYLLABLE SSANGTIKEUT EU IEUNG - 0x8DB9: 0xB73E, //HANGUL SYLLABLE SSANGTIKEUT EU CIEUC - 0x8DBA: 0xB73F, //HANGUL SYLLABLE SSANGTIKEUT EU CHIEUCH - 0x8DBB: 0xB740, //HANGUL SYLLABLE SSANGTIKEUT EU KHIEUKH - 0x8DBC: 0xB741, //HANGUL SYLLABLE SSANGTIKEUT EU THIEUTH - 0x8DBD: 0xB742, //HANGUL SYLLABLE SSANGTIKEUT EU PHIEUPH - 0x8DBE: 0xB743, //HANGUL SYLLABLE SSANGTIKEUT EU HIEUH - 0x8DBF: 0xB745, //HANGUL SYLLABLE SSANGTIKEUT YI KIYEOK - 0x8DC0: 0xB746, //HANGUL SYLLABLE SSANGTIKEUT YI SSANGKIYEOK - 0x8DC1: 0xB747, //HANGUL SYLLABLE SSANGTIKEUT YI KIYEOKSIOS - 0x8DC2: 0xB749, //HANGUL SYLLABLE SSANGTIKEUT YI NIEUNCIEUC - 0x8DC3: 0xB74A, //HANGUL SYLLABLE SSANGTIKEUT YI NIEUNHIEUH - 0x8DC4: 0xB74B, //HANGUL SYLLABLE SSANGTIKEUT YI TIKEUT - 0x8DC5: 0xB74D, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULKIYEOK - 0x8DC6: 0xB74E, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULMIEUM - 0x8DC7: 0xB74F, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULPIEUP - 0x8DC8: 0xB750, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULSIOS - 0x8DC9: 0xB751, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULTHIEUTH - 0x8DCA: 0xB752, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULPHIEUPH - 0x8DCB: 0xB753, //HANGUL SYLLABLE SSANGTIKEUT YI RIEULHIEUH - 0x8DCC: 0xB756, //HANGUL SYLLABLE SSANGTIKEUT YI PIEUPSIOS - 0x8DCD: 0xB757, //HANGUL SYLLABLE SSANGTIKEUT YI SIOS - 0x8DCE: 0xB758, //HANGUL SYLLABLE SSANGTIKEUT YI SSANGSIOS - 0x8DCF: 0xB759, //HANGUL SYLLABLE SSANGTIKEUT YI IEUNG - 0x8DD0: 0xB75A, //HANGUL SYLLABLE SSANGTIKEUT YI CIEUC - 0x8DD1: 0xB75B, //HANGUL SYLLABLE SSANGTIKEUT YI CHIEUCH - 0x8DD2: 0xB75C, //HANGUL SYLLABLE SSANGTIKEUT YI KHIEUKH - 0x8DD3: 0xB75D, //HANGUL SYLLABLE SSANGTIKEUT YI THIEUTH - 0x8DD4: 0xB75E, //HANGUL SYLLABLE SSANGTIKEUT YI PHIEUPH - 0x8DD5: 0xB75F, //HANGUL SYLLABLE SSANGTIKEUT YI HIEUH - 0x8DD6: 0xB761, //HANGUL SYLLABLE SSANGTIKEUT I KIYEOK - 0x8DD7: 0xB762, //HANGUL SYLLABLE SSANGTIKEUT I SSANGKIYEOK - 0x8DD8: 0xB763, //HANGUL SYLLABLE SSANGTIKEUT I KIYEOKSIOS - 0x8DD9: 0xB765, //HANGUL SYLLABLE SSANGTIKEUT I NIEUNCIEUC - 0x8DDA: 0xB766, //HANGUL SYLLABLE SSANGTIKEUT I NIEUNHIEUH - 0x8DDB: 0xB767, //HANGUL SYLLABLE SSANGTIKEUT I TIKEUT - 0x8DDC: 0xB769, //HANGUL SYLLABLE SSANGTIKEUT I RIEULKIYEOK - 0x8DDD: 0xB76A, //HANGUL SYLLABLE SSANGTIKEUT I RIEULMIEUM - 0x8DDE: 0xB76B, //HANGUL SYLLABLE SSANGTIKEUT I RIEULPIEUP - 0x8DDF: 0xB76C, //HANGUL SYLLABLE SSANGTIKEUT I RIEULSIOS - 0x8DE0: 0xB76D, //HANGUL SYLLABLE SSANGTIKEUT I RIEULTHIEUTH - 0x8DE1: 0xB76E, //HANGUL SYLLABLE SSANGTIKEUT I RIEULPHIEUPH - 0x8DE2: 0xB76F, //HANGUL SYLLABLE SSANGTIKEUT I RIEULHIEUH - 0x8DE3: 0xB772, //HANGUL SYLLABLE SSANGTIKEUT I PIEUPSIOS - 0x8DE4: 0xB774, //HANGUL SYLLABLE SSANGTIKEUT I SSANGSIOS - 0x8DE5: 0xB776, //HANGUL SYLLABLE SSANGTIKEUT I CIEUC - 0x8DE6: 0xB777, //HANGUL SYLLABLE SSANGTIKEUT I CHIEUCH - 0x8DE7: 0xB778, //HANGUL SYLLABLE SSANGTIKEUT I KHIEUKH - 0x8DE8: 0xB779, //HANGUL SYLLABLE SSANGTIKEUT I THIEUTH - 0x8DE9: 0xB77A, //HANGUL SYLLABLE SSANGTIKEUT I PHIEUPH - 0x8DEA: 0xB77B, //HANGUL SYLLABLE SSANGTIKEUT I HIEUH - 0x8DEB: 0xB77E, //HANGUL SYLLABLE RIEUL A SSANGKIYEOK - 0x8DEC: 0xB77F, //HANGUL SYLLABLE RIEUL A KIYEOKSIOS - 0x8DED: 0xB781, //HANGUL SYLLABLE RIEUL A NIEUNCIEUC - 0x8DEE: 0xB782, //HANGUL SYLLABLE RIEUL A NIEUNHIEUH - 0x8DEF: 0xB783, //HANGUL SYLLABLE RIEUL A TIKEUT - 0x8DF0: 0xB785, //HANGUL SYLLABLE RIEUL A RIEULKIYEOK - 0x8DF1: 0xB786, //HANGUL SYLLABLE RIEUL A RIEULMIEUM - 0x8DF2: 0xB787, //HANGUL SYLLABLE RIEUL A RIEULPIEUP - 0x8DF3: 0xB788, //HANGUL SYLLABLE RIEUL A RIEULSIOS - 0x8DF4: 0xB789, //HANGUL SYLLABLE RIEUL A RIEULTHIEUTH - 0x8DF5: 0xB78A, //HANGUL SYLLABLE RIEUL A RIEULPHIEUPH - 0x8DF6: 0xB78B, //HANGUL SYLLABLE RIEUL A RIEULHIEUH - 0x8DF7: 0xB78E, //HANGUL SYLLABLE RIEUL A PIEUPSIOS - 0x8DF8: 0xB793, //HANGUL SYLLABLE RIEUL A CHIEUCH - 0x8DF9: 0xB794, //HANGUL SYLLABLE RIEUL A KHIEUKH - 0x8DFA: 0xB795, //HANGUL SYLLABLE RIEUL A THIEUTH - 0x8DFB: 0xB79A, //HANGUL SYLLABLE RIEUL AE SSANGKIYEOK - 0x8DFC: 0xB79B, //HANGUL SYLLABLE RIEUL AE KIYEOKSIOS - 0x8DFD: 0xB79D, //HANGUL SYLLABLE RIEUL AE NIEUNCIEUC - 0x8DFE: 0xB79E, //HANGUL SYLLABLE RIEUL AE NIEUNHIEUH - 0x8E41: 0xB79F, //HANGUL SYLLABLE RIEUL AE TIKEUT - 0x8E42: 0xB7A1, //HANGUL SYLLABLE RIEUL AE RIEULKIYEOK - 0x8E43: 0xB7A2, //HANGUL SYLLABLE RIEUL AE RIEULMIEUM - 0x8E44: 0xB7A3, //HANGUL SYLLABLE RIEUL AE RIEULPIEUP - 0x8E45: 0xB7A4, //HANGUL SYLLABLE RIEUL AE RIEULSIOS - 0x8E46: 0xB7A5, //HANGUL SYLLABLE RIEUL AE RIEULTHIEUTH - 0x8E47: 0xB7A6, //HANGUL SYLLABLE RIEUL AE RIEULPHIEUPH - 0x8E48: 0xB7A7, //HANGUL SYLLABLE RIEUL AE RIEULHIEUH - 0x8E49: 0xB7AA, //HANGUL SYLLABLE RIEUL AE PIEUPSIOS - 0x8E4A: 0xB7AE, //HANGUL SYLLABLE RIEUL AE CIEUC - 0x8E4B: 0xB7AF, //HANGUL SYLLABLE RIEUL AE CHIEUCH - 0x8E4C: 0xB7B0, //HANGUL SYLLABLE RIEUL AE KHIEUKH - 0x8E4D: 0xB7B1, //HANGUL SYLLABLE RIEUL AE THIEUTH - 0x8E4E: 0xB7B2, //HANGUL SYLLABLE RIEUL AE PHIEUPH - 0x8E4F: 0xB7B3, //HANGUL SYLLABLE RIEUL AE HIEUH - 0x8E50: 0xB7B6, //HANGUL SYLLABLE RIEUL YA SSANGKIYEOK - 0x8E51: 0xB7B7, //HANGUL SYLLABLE RIEUL YA KIYEOKSIOS - 0x8E52: 0xB7B9, //HANGUL SYLLABLE RIEUL YA NIEUNCIEUC - 0x8E53: 0xB7BA, //HANGUL SYLLABLE RIEUL YA NIEUNHIEUH - 0x8E54: 0xB7BB, //HANGUL SYLLABLE RIEUL YA TIKEUT - 0x8E55: 0xB7BC, //HANGUL SYLLABLE RIEUL YA RIEUL - 0x8E56: 0xB7BD, //HANGUL SYLLABLE RIEUL YA RIEULKIYEOK - 0x8E57: 0xB7BE, //HANGUL SYLLABLE RIEUL YA RIEULMIEUM - 0x8E58: 0xB7BF, //HANGUL SYLLABLE RIEUL YA RIEULPIEUP - 0x8E59: 0xB7C0, //HANGUL SYLLABLE RIEUL YA RIEULSIOS - 0x8E5A: 0xB7C1, //HANGUL SYLLABLE RIEUL YA RIEULTHIEUTH - 0x8E61: 0xB7C2, //HANGUL SYLLABLE RIEUL YA RIEULPHIEUPH - 0x8E62: 0xB7C3, //HANGUL SYLLABLE RIEUL YA RIEULHIEUH - 0x8E63: 0xB7C4, //HANGUL SYLLABLE RIEUL YA MIEUM - 0x8E64: 0xB7C5, //HANGUL SYLLABLE RIEUL YA PIEUP - 0x8E65: 0xB7C6, //HANGUL SYLLABLE RIEUL YA PIEUPSIOS - 0x8E66: 0xB7C8, //HANGUL SYLLABLE RIEUL YA SSANGSIOS - 0x8E67: 0xB7CA, //HANGUL SYLLABLE RIEUL YA CIEUC - 0x8E68: 0xB7CB, //HANGUL SYLLABLE RIEUL YA CHIEUCH - 0x8E69: 0xB7CC, //HANGUL SYLLABLE RIEUL YA KHIEUKH - 0x8E6A: 0xB7CD, //HANGUL SYLLABLE RIEUL YA THIEUTH - 0x8E6B: 0xB7CE, //HANGUL SYLLABLE RIEUL YA PHIEUPH - 0x8E6C: 0xB7CF, //HANGUL SYLLABLE RIEUL YA HIEUH - 0x8E6D: 0xB7D0, //HANGUL SYLLABLE RIEUL YAE - 0x8E6E: 0xB7D1, //HANGUL SYLLABLE RIEUL YAE KIYEOK - 0x8E6F: 0xB7D2, //HANGUL SYLLABLE RIEUL YAE SSANGKIYEOK - 0x8E70: 0xB7D3, //HANGUL SYLLABLE RIEUL YAE KIYEOKSIOS - 0x8E71: 0xB7D4, //HANGUL SYLLABLE RIEUL YAE NIEUN - 0x8E72: 0xB7D5, //HANGUL SYLLABLE RIEUL YAE NIEUNCIEUC - 0x8E73: 0xB7D6, //HANGUL SYLLABLE RIEUL YAE NIEUNHIEUH - 0x8E74: 0xB7D7, //HANGUL SYLLABLE RIEUL YAE TIKEUT - 0x8E75: 0xB7D8, //HANGUL SYLLABLE RIEUL YAE RIEUL - 0x8E76: 0xB7D9, //HANGUL SYLLABLE RIEUL YAE RIEULKIYEOK - 0x8E77: 0xB7DA, //HANGUL SYLLABLE RIEUL YAE RIEULMIEUM - 0x8E78: 0xB7DB, //HANGUL SYLLABLE RIEUL YAE RIEULPIEUP - 0x8E79: 0xB7DC, //HANGUL SYLLABLE RIEUL YAE RIEULSIOS - 0x8E7A: 0xB7DD, //HANGUL SYLLABLE RIEUL YAE RIEULTHIEUTH - 0x8E81: 0xB7DE, //HANGUL SYLLABLE RIEUL YAE RIEULPHIEUPH - 0x8E82: 0xB7DF, //HANGUL SYLLABLE RIEUL YAE RIEULHIEUH - 0x8E83: 0xB7E0, //HANGUL SYLLABLE RIEUL YAE MIEUM - 0x8E84: 0xB7E1, //HANGUL SYLLABLE RIEUL YAE PIEUP - 0x8E85: 0xB7E2, //HANGUL SYLLABLE RIEUL YAE PIEUPSIOS - 0x8E86: 0xB7E3, //HANGUL SYLLABLE RIEUL YAE SIOS - 0x8E87: 0xB7E4, //HANGUL SYLLABLE RIEUL YAE SSANGSIOS - 0x8E88: 0xB7E5, //HANGUL SYLLABLE RIEUL YAE IEUNG - 0x8E89: 0xB7E6, //HANGUL SYLLABLE RIEUL YAE CIEUC - 0x8E8A: 0xB7E7, //HANGUL SYLLABLE RIEUL YAE CHIEUCH - 0x8E8B: 0xB7E8, //HANGUL SYLLABLE RIEUL YAE KHIEUKH - 0x8E8C: 0xB7E9, //HANGUL SYLLABLE RIEUL YAE THIEUTH - 0x8E8D: 0xB7EA, //HANGUL SYLLABLE RIEUL YAE PHIEUPH - 0x8E8E: 0xB7EB, //HANGUL SYLLABLE RIEUL YAE HIEUH - 0x8E8F: 0xB7EE, //HANGUL SYLLABLE RIEUL EO SSANGKIYEOK - 0x8E90: 0xB7EF, //HANGUL SYLLABLE RIEUL EO KIYEOKSIOS - 0x8E91: 0xB7F1, //HANGUL SYLLABLE RIEUL EO NIEUNCIEUC - 0x8E92: 0xB7F2, //HANGUL SYLLABLE RIEUL EO NIEUNHIEUH - 0x8E93: 0xB7F3, //HANGUL SYLLABLE RIEUL EO TIKEUT - 0x8E94: 0xB7F5, //HANGUL SYLLABLE RIEUL EO RIEULKIYEOK - 0x8E95: 0xB7F6, //HANGUL SYLLABLE RIEUL EO RIEULMIEUM - 0x8E96: 0xB7F7, //HANGUL SYLLABLE RIEUL EO RIEULPIEUP - 0x8E97: 0xB7F8, //HANGUL SYLLABLE RIEUL EO RIEULSIOS - 0x8E98: 0xB7F9, //HANGUL SYLLABLE RIEUL EO RIEULTHIEUTH - 0x8E99: 0xB7FA, //HANGUL SYLLABLE RIEUL EO RIEULPHIEUPH - 0x8E9A: 0xB7FB, //HANGUL SYLLABLE RIEUL EO RIEULHIEUH - 0x8E9B: 0xB7FE, //HANGUL SYLLABLE RIEUL EO PIEUPSIOS - 0x8E9C: 0xB802, //HANGUL SYLLABLE RIEUL EO CIEUC - 0x8E9D: 0xB803, //HANGUL SYLLABLE RIEUL EO CHIEUCH - 0x8E9E: 0xB804, //HANGUL SYLLABLE RIEUL EO KHIEUKH - 0x8E9F: 0xB805, //HANGUL SYLLABLE RIEUL EO THIEUTH - 0x8EA0: 0xB806, //HANGUL SYLLABLE RIEUL EO PHIEUPH - 0x8EA1: 0xB80A, //HANGUL SYLLABLE RIEUL E SSANGKIYEOK - 0x8EA2: 0xB80B, //HANGUL SYLLABLE RIEUL E KIYEOKSIOS - 0x8EA3: 0xB80D, //HANGUL SYLLABLE RIEUL E NIEUNCIEUC - 0x8EA4: 0xB80E, //HANGUL SYLLABLE RIEUL E NIEUNHIEUH - 0x8EA5: 0xB80F, //HANGUL SYLLABLE RIEUL E TIKEUT - 0x8EA6: 0xB811, //HANGUL SYLLABLE RIEUL E RIEULKIYEOK - 0x8EA7: 0xB812, //HANGUL SYLLABLE RIEUL E RIEULMIEUM - 0x8EA8: 0xB813, //HANGUL SYLLABLE RIEUL E RIEULPIEUP - 0x8EA9: 0xB814, //HANGUL SYLLABLE RIEUL E RIEULSIOS - 0x8EAA: 0xB815, //HANGUL SYLLABLE RIEUL E RIEULTHIEUTH - 0x8EAB: 0xB816, //HANGUL SYLLABLE RIEUL E RIEULPHIEUPH - 0x8EAC: 0xB817, //HANGUL SYLLABLE RIEUL E RIEULHIEUH - 0x8EAD: 0xB81A, //HANGUL SYLLABLE RIEUL E PIEUPSIOS - 0x8EAE: 0xB81C, //HANGUL SYLLABLE RIEUL E SSANGSIOS - 0x8EAF: 0xB81E, //HANGUL SYLLABLE RIEUL E CIEUC - 0x8EB0: 0xB81F, //HANGUL SYLLABLE RIEUL E CHIEUCH - 0x8EB1: 0xB820, //HANGUL SYLLABLE RIEUL E KHIEUKH - 0x8EB2: 0xB821, //HANGUL SYLLABLE RIEUL E THIEUTH - 0x8EB3: 0xB822, //HANGUL SYLLABLE RIEUL E PHIEUPH - 0x8EB4: 0xB823, //HANGUL SYLLABLE RIEUL E HIEUH - 0x8EB5: 0xB826, //HANGUL SYLLABLE RIEUL YEO SSANGKIYEOK - 0x8EB6: 0xB827, //HANGUL SYLLABLE RIEUL YEO KIYEOKSIOS - 0x8EB7: 0xB829, //HANGUL SYLLABLE RIEUL YEO NIEUNCIEUC - 0x8EB8: 0xB82A, //HANGUL SYLLABLE RIEUL YEO NIEUNHIEUH - 0x8EB9: 0xB82B, //HANGUL SYLLABLE RIEUL YEO TIKEUT - 0x8EBA: 0xB82D, //HANGUL SYLLABLE RIEUL YEO RIEULKIYEOK - 0x8EBB: 0xB82E, //HANGUL SYLLABLE RIEUL YEO RIEULMIEUM - 0x8EBC: 0xB82F, //HANGUL SYLLABLE RIEUL YEO RIEULPIEUP - 0x8EBD: 0xB830, //HANGUL SYLLABLE RIEUL YEO RIEULSIOS - 0x8EBE: 0xB831, //HANGUL SYLLABLE RIEUL YEO RIEULTHIEUTH - 0x8EBF: 0xB832, //HANGUL SYLLABLE RIEUL YEO RIEULPHIEUPH - 0x8EC0: 0xB833, //HANGUL SYLLABLE RIEUL YEO RIEULHIEUH - 0x8EC1: 0xB836, //HANGUL SYLLABLE RIEUL YEO PIEUPSIOS - 0x8EC2: 0xB83A, //HANGUL SYLLABLE RIEUL YEO CIEUC - 0x8EC3: 0xB83B, //HANGUL SYLLABLE RIEUL YEO CHIEUCH - 0x8EC4: 0xB83C, //HANGUL SYLLABLE RIEUL YEO KHIEUKH - 0x8EC5: 0xB83D, //HANGUL SYLLABLE RIEUL YEO THIEUTH - 0x8EC6: 0xB83E, //HANGUL SYLLABLE RIEUL YEO PHIEUPH - 0x8EC7: 0xB83F, //HANGUL SYLLABLE RIEUL YEO HIEUH - 0x8EC8: 0xB841, //HANGUL SYLLABLE RIEUL YE KIYEOK - 0x8EC9: 0xB842, //HANGUL SYLLABLE RIEUL YE SSANGKIYEOK - 0x8ECA: 0xB843, //HANGUL SYLLABLE RIEUL YE KIYEOKSIOS - 0x8ECB: 0xB845, //HANGUL SYLLABLE RIEUL YE NIEUNCIEUC - 0x8ECC: 0xB846, //HANGUL SYLLABLE RIEUL YE NIEUNHIEUH - 0x8ECD: 0xB847, //HANGUL SYLLABLE RIEUL YE TIKEUT - 0x8ECE: 0xB848, //HANGUL SYLLABLE RIEUL YE RIEUL - 0x8ECF: 0xB849, //HANGUL SYLLABLE RIEUL YE RIEULKIYEOK - 0x8ED0: 0xB84A, //HANGUL SYLLABLE RIEUL YE RIEULMIEUM - 0x8ED1: 0xB84B, //HANGUL SYLLABLE RIEUL YE RIEULPIEUP - 0x8ED2: 0xB84C, //HANGUL SYLLABLE RIEUL YE RIEULSIOS - 0x8ED3: 0xB84D, //HANGUL SYLLABLE RIEUL YE RIEULTHIEUTH - 0x8ED4: 0xB84E, //HANGUL SYLLABLE RIEUL YE RIEULPHIEUPH - 0x8ED5: 0xB84F, //HANGUL SYLLABLE RIEUL YE RIEULHIEUH - 0x8ED6: 0xB850, //HANGUL SYLLABLE RIEUL YE MIEUM - 0x8ED7: 0xB852, //HANGUL SYLLABLE RIEUL YE PIEUPSIOS - 0x8ED8: 0xB854, //HANGUL SYLLABLE RIEUL YE SSANGSIOS - 0x8ED9: 0xB855, //HANGUL SYLLABLE RIEUL YE IEUNG - 0x8EDA: 0xB856, //HANGUL SYLLABLE RIEUL YE CIEUC - 0x8EDB: 0xB857, //HANGUL SYLLABLE RIEUL YE CHIEUCH - 0x8EDC: 0xB858, //HANGUL SYLLABLE RIEUL YE KHIEUKH - 0x8EDD: 0xB859, //HANGUL SYLLABLE RIEUL YE THIEUTH - 0x8EDE: 0xB85A, //HANGUL SYLLABLE RIEUL YE PHIEUPH - 0x8EDF: 0xB85B, //HANGUL SYLLABLE RIEUL YE HIEUH - 0x8EE0: 0xB85E, //HANGUL SYLLABLE RIEUL O SSANGKIYEOK - 0x8EE1: 0xB85F, //HANGUL SYLLABLE RIEUL O KIYEOKSIOS - 0x8EE2: 0xB861, //HANGUL SYLLABLE RIEUL O NIEUNCIEUC - 0x8EE3: 0xB862, //HANGUL SYLLABLE RIEUL O NIEUNHIEUH - 0x8EE4: 0xB863, //HANGUL SYLLABLE RIEUL O TIKEUT - 0x8EE5: 0xB865, //HANGUL SYLLABLE RIEUL O RIEULKIYEOK - 0x8EE6: 0xB866, //HANGUL SYLLABLE RIEUL O RIEULMIEUM - 0x8EE7: 0xB867, //HANGUL SYLLABLE RIEUL O RIEULPIEUP - 0x8EE8: 0xB868, //HANGUL SYLLABLE RIEUL O RIEULSIOS - 0x8EE9: 0xB869, //HANGUL SYLLABLE RIEUL O RIEULTHIEUTH - 0x8EEA: 0xB86A, //HANGUL SYLLABLE RIEUL O RIEULPHIEUPH - 0x8EEB: 0xB86B, //HANGUL SYLLABLE RIEUL O RIEULHIEUH - 0x8EEC: 0xB86E, //HANGUL SYLLABLE RIEUL O PIEUPSIOS - 0x8EED: 0xB870, //HANGUL SYLLABLE RIEUL O SSANGSIOS - 0x8EEE: 0xB872, //HANGUL SYLLABLE RIEUL O CIEUC - 0x8EEF: 0xB873, //HANGUL SYLLABLE RIEUL O CHIEUCH - 0x8EF0: 0xB874, //HANGUL SYLLABLE RIEUL O KHIEUKH - 0x8EF1: 0xB875, //HANGUL SYLLABLE RIEUL O THIEUTH - 0x8EF2: 0xB876, //HANGUL SYLLABLE RIEUL O PHIEUPH - 0x8EF3: 0xB877, //HANGUL SYLLABLE RIEUL O HIEUH - 0x8EF4: 0xB879, //HANGUL SYLLABLE RIEUL WA KIYEOK - 0x8EF5: 0xB87A, //HANGUL SYLLABLE RIEUL WA SSANGKIYEOK - 0x8EF6: 0xB87B, //HANGUL SYLLABLE RIEUL WA KIYEOKSIOS - 0x8EF7: 0xB87D, //HANGUL SYLLABLE RIEUL WA NIEUNCIEUC - 0x8EF8: 0xB87E, //HANGUL SYLLABLE RIEUL WA NIEUNHIEUH - 0x8EF9: 0xB87F, //HANGUL SYLLABLE RIEUL WA TIKEUT - 0x8EFA: 0xB880, //HANGUL SYLLABLE RIEUL WA RIEUL - 0x8EFB: 0xB881, //HANGUL SYLLABLE RIEUL WA RIEULKIYEOK - 0x8EFC: 0xB882, //HANGUL SYLLABLE RIEUL WA RIEULMIEUM - 0x8EFD: 0xB883, //HANGUL SYLLABLE RIEUL WA RIEULPIEUP - 0x8EFE: 0xB884, //HANGUL SYLLABLE RIEUL WA RIEULSIOS - 0x8F41: 0xB885, //HANGUL SYLLABLE RIEUL WA RIEULTHIEUTH - 0x8F42: 0xB886, //HANGUL SYLLABLE RIEUL WA RIEULPHIEUPH - 0x8F43: 0xB887, //HANGUL SYLLABLE RIEUL WA RIEULHIEUH - 0x8F44: 0xB888, //HANGUL SYLLABLE RIEUL WA MIEUM - 0x8F45: 0xB889, //HANGUL SYLLABLE RIEUL WA PIEUP - 0x8F46: 0xB88A, //HANGUL SYLLABLE RIEUL WA PIEUPSIOS - 0x8F47: 0xB88B, //HANGUL SYLLABLE RIEUL WA SIOS - 0x8F48: 0xB88C, //HANGUL SYLLABLE RIEUL WA SSANGSIOS - 0x8F49: 0xB88E, //HANGUL SYLLABLE RIEUL WA CIEUC - 0x8F4A: 0xB88F, //HANGUL SYLLABLE RIEUL WA CHIEUCH - 0x8F4B: 0xB890, //HANGUL SYLLABLE RIEUL WA KHIEUKH - 0x8F4C: 0xB891, //HANGUL SYLLABLE RIEUL WA THIEUTH - 0x8F4D: 0xB892, //HANGUL SYLLABLE RIEUL WA PHIEUPH - 0x8F4E: 0xB893, //HANGUL SYLLABLE RIEUL WA HIEUH - 0x8F4F: 0xB894, //HANGUL SYLLABLE RIEUL WAE - 0x8F50: 0xB895, //HANGUL SYLLABLE RIEUL WAE KIYEOK - 0x8F51: 0xB896, //HANGUL SYLLABLE RIEUL WAE SSANGKIYEOK - 0x8F52: 0xB897, //HANGUL SYLLABLE RIEUL WAE KIYEOKSIOS - 0x8F53: 0xB898, //HANGUL SYLLABLE RIEUL WAE NIEUN - 0x8F54: 0xB899, //HANGUL SYLLABLE RIEUL WAE NIEUNCIEUC - 0x8F55: 0xB89A, //HANGUL SYLLABLE RIEUL WAE NIEUNHIEUH - 0x8F56: 0xB89B, //HANGUL SYLLABLE RIEUL WAE TIKEUT - 0x8F57: 0xB89C, //HANGUL SYLLABLE RIEUL WAE RIEUL - 0x8F58: 0xB89D, //HANGUL SYLLABLE RIEUL WAE RIEULKIYEOK - 0x8F59: 0xB89E, //HANGUL SYLLABLE RIEUL WAE RIEULMIEUM - 0x8F5A: 0xB89F, //HANGUL SYLLABLE RIEUL WAE RIEULPIEUP - 0x8F61: 0xB8A0, //HANGUL SYLLABLE RIEUL WAE RIEULSIOS - 0x8F62: 0xB8A1, //HANGUL SYLLABLE RIEUL WAE RIEULTHIEUTH - 0x8F63: 0xB8A2, //HANGUL SYLLABLE RIEUL WAE RIEULPHIEUPH - 0x8F64: 0xB8A3, //HANGUL SYLLABLE RIEUL WAE RIEULHIEUH - 0x8F65: 0xB8A4, //HANGUL SYLLABLE RIEUL WAE MIEUM - 0x8F66: 0xB8A5, //HANGUL SYLLABLE RIEUL WAE PIEUP - 0x8F67: 0xB8A6, //HANGUL SYLLABLE RIEUL WAE PIEUPSIOS - 0x8F68: 0xB8A7, //HANGUL SYLLABLE RIEUL WAE SIOS - 0x8F69: 0xB8A9, //HANGUL SYLLABLE RIEUL WAE IEUNG - 0x8F6A: 0xB8AA, //HANGUL SYLLABLE RIEUL WAE CIEUC - 0x8F6B: 0xB8AB, //HANGUL SYLLABLE RIEUL WAE CHIEUCH - 0x8F6C: 0xB8AC, //HANGUL SYLLABLE RIEUL WAE KHIEUKH - 0x8F6D: 0xB8AD, //HANGUL SYLLABLE RIEUL WAE THIEUTH - 0x8F6E: 0xB8AE, //HANGUL SYLLABLE RIEUL WAE PHIEUPH - 0x8F6F: 0xB8AF, //HANGUL SYLLABLE RIEUL WAE HIEUH - 0x8F70: 0xB8B1, //HANGUL SYLLABLE RIEUL OE KIYEOK - 0x8F71: 0xB8B2, //HANGUL SYLLABLE RIEUL OE SSANGKIYEOK - 0x8F72: 0xB8B3, //HANGUL SYLLABLE RIEUL OE KIYEOKSIOS - 0x8F73: 0xB8B5, //HANGUL SYLLABLE RIEUL OE NIEUNCIEUC - 0x8F74: 0xB8B6, //HANGUL SYLLABLE RIEUL OE NIEUNHIEUH - 0x8F75: 0xB8B7, //HANGUL SYLLABLE RIEUL OE TIKEUT - 0x8F76: 0xB8B9, //HANGUL SYLLABLE RIEUL OE RIEULKIYEOK - 0x8F77: 0xB8BA, //HANGUL SYLLABLE RIEUL OE RIEULMIEUM - 0x8F78: 0xB8BB, //HANGUL SYLLABLE RIEUL OE RIEULPIEUP - 0x8F79: 0xB8BC, //HANGUL SYLLABLE RIEUL OE RIEULSIOS - 0x8F7A: 0xB8BD, //HANGUL SYLLABLE RIEUL OE RIEULTHIEUTH - 0x8F81: 0xB8BE, //HANGUL SYLLABLE RIEUL OE RIEULPHIEUPH - 0x8F82: 0xB8BF, //HANGUL SYLLABLE RIEUL OE RIEULHIEUH - 0x8F83: 0xB8C2, //HANGUL SYLLABLE RIEUL OE PIEUPSIOS - 0x8F84: 0xB8C4, //HANGUL SYLLABLE RIEUL OE SSANGSIOS - 0x8F85: 0xB8C6, //HANGUL SYLLABLE RIEUL OE CIEUC - 0x8F86: 0xB8C7, //HANGUL SYLLABLE RIEUL OE CHIEUCH - 0x8F87: 0xB8C8, //HANGUL SYLLABLE RIEUL OE KHIEUKH - 0x8F88: 0xB8C9, //HANGUL SYLLABLE RIEUL OE THIEUTH - 0x8F89: 0xB8CA, //HANGUL SYLLABLE RIEUL OE PHIEUPH - 0x8F8A: 0xB8CB, //HANGUL SYLLABLE RIEUL OE HIEUH - 0x8F8B: 0xB8CD, //HANGUL SYLLABLE RIEUL YO KIYEOK - 0x8F8C: 0xB8CE, //HANGUL SYLLABLE RIEUL YO SSANGKIYEOK - 0x8F8D: 0xB8CF, //HANGUL SYLLABLE RIEUL YO KIYEOKSIOS - 0x8F8E: 0xB8D1, //HANGUL SYLLABLE RIEUL YO NIEUNCIEUC - 0x8F8F: 0xB8D2, //HANGUL SYLLABLE RIEUL YO NIEUNHIEUH - 0x8F90: 0xB8D3, //HANGUL SYLLABLE RIEUL YO TIKEUT - 0x8F91: 0xB8D5, //HANGUL SYLLABLE RIEUL YO RIEULKIYEOK - 0x8F92: 0xB8D6, //HANGUL SYLLABLE RIEUL YO RIEULMIEUM - 0x8F93: 0xB8D7, //HANGUL SYLLABLE RIEUL YO RIEULPIEUP - 0x8F94: 0xB8D8, //HANGUL SYLLABLE RIEUL YO RIEULSIOS - 0x8F95: 0xB8D9, //HANGUL SYLLABLE RIEUL YO RIEULTHIEUTH - 0x8F96: 0xB8DA, //HANGUL SYLLABLE RIEUL YO RIEULPHIEUPH - 0x8F97: 0xB8DB, //HANGUL SYLLABLE RIEUL YO RIEULHIEUH - 0x8F98: 0xB8DC, //HANGUL SYLLABLE RIEUL YO MIEUM - 0x8F99: 0xB8DE, //HANGUL SYLLABLE RIEUL YO PIEUPSIOS - 0x8F9A: 0xB8E0, //HANGUL SYLLABLE RIEUL YO SSANGSIOS - 0x8F9B: 0xB8E2, //HANGUL SYLLABLE RIEUL YO CIEUC - 0x8F9C: 0xB8E3, //HANGUL SYLLABLE RIEUL YO CHIEUCH - 0x8F9D: 0xB8E4, //HANGUL SYLLABLE RIEUL YO KHIEUKH - 0x8F9E: 0xB8E5, //HANGUL SYLLABLE RIEUL YO THIEUTH - 0x8F9F: 0xB8E6, //HANGUL SYLLABLE RIEUL YO PHIEUPH - 0x8FA0: 0xB8E7, //HANGUL SYLLABLE RIEUL YO HIEUH - 0x8FA1: 0xB8EA, //HANGUL SYLLABLE RIEUL U SSANGKIYEOK - 0x8FA2: 0xB8EB, //HANGUL SYLLABLE RIEUL U KIYEOKSIOS - 0x8FA3: 0xB8ED, //HANGUL SYLLABLE RIEUL U NIEUNCIEUC - 0x8FA4: 0xB8EE, //HANGUL SYLLABLE RIEUL U NIEUNHIEUH - 0x8FA5: 0xB8EF, //HANGUL SYLLABLE RIEUL U TIKEUT - 0x8FA6: 0xB8F1, //HANGUL SYLLABLE RIEUL U RIEULKIYEOK - 0x8FA7: 0xB8F2, //HANGUL SYLLABLE RIEUL U RIEULMIEUM - 0x8FA8: 0xB8F3, //HANGUL SYLLABLE RIEUL U RIEULPIEUP - 0x8FA9: 0xB8F4, //HANGUL SYLLABLE RIEUL U RIEULSIOS - 0x8FAA: 0xB8F5, //HANGUL SYLLABLE RIEUL U RIEULTHIEUTH - 0x8FAB: 0xB8F6, //HANGUL SYLLABLE RIEUL U RIEULPHIEUPH - 0x8FAC: 0xB8F7, //HANGUL SYLLABLE RIEUL U RIEULHIEUH - 0x8FAD: 0xB8FA, //HANGUL SYLLABLE RIEUL U PIEUPSIOS - 0x8FAE: 0xB8FC, //HANGUL SYLLABLE RIEUL U SSANGSIOS - 0x8FAF: 0xB8FE, //HANGUL SYLLABLE RIEUL U CIEUC - 0x8FB0: 0xB8FF, //HANGUL SYLLABLE RIEUL U CHIEUCH - 0x8FB1: 0xB900, //HANGUL SYLLABLE RIEUL U KHIEUKH - 0x8FB2: 0xB901, //HANGUL SYLLABLE RIEUL U THIEUTH - 0x8FB3: 0xB902, //HANGUL SYLLABLE RIEUL U PHIEUPH - 0x8FB4: 0xB903, //HANGUL SYLLABLE RIEUL U HIEUH - 0x8FB5: 0xB905, //HANGUL SYLLABLE RIEUL WEO KIYEOK - 0x8FB6: 0xB906, //HANGUL SYLLABLE RIEUL WEO SSANGKIYEOK - 0x8FB7: 0xB907, //HANGUL SYLLABLE RIEUL WEO KIYEOKSIOS - 0x8FB8: 0xB908, //HANGUL SYLLABLE RIEUL WEO NIEUN - 0x8FB9: 0xB909, //HANGUL SYLLABLE RIEUL WEO NIEUNCIEUC - 0x8FBA: 0xB90A, //HANGUL SYLLABLE RIEUL WEO NIEUNHIEUH - 0x8FBB: 0xB90B, //HANGUL SYLLABLE RIEUL WEO TIKEUT - 0x8FBC: 0xB90C, //HANGUL SYLLABLE RIEUL WEO RIEUL - 0x8FBD: 0xB90D, //HANGUL SYLLABLE RIEUL WEO RIEULKIYEOK - 0x8FBE: 0xB90E, //HANGUL SYLLABLE RIEUL WEO RIEULMIEUM - 0x8FBF: 0xB90F, //HANGUL SYLLABLE RIEUL WEO RIEULPIEUP - 0x8FC0: 0xB910, //HANGUL SYLLABLE RIEUL WEO RIEULSIOS - 0x8FC1: 0xB911, //HANGUL SYLLABLE RIEUL WEO RIEULTHIEUTH - 0x8FC2: 0xB912, //HANGUL SYLLABLE RIEUL WEO RIEULPHIEUPH - 0x8FC3: 0xB913, //HANGUL SYLLABLE RIEUL WEO RIEULHIEUH - 0x8FC4: 0xB914, //HANGUL SYLLABLE RIEUL WEO MIEUM - 0x8FC5: 0xB915, //HANGUL SYLLABLE RIEUL WEO PIEUP - 0x8FC6: 0xB916, //HANGUL SYLLABLE RIEUL WEO PIEUPSIOS - 0x8FC7: 0xB917, //HANGUL SYLLABLE RIEUL WEO SIOS - 0x8FC8: 0xB919, //HANGUL SYLLABLE RIEUL WEO IEUNG - 0x8FC9: 0xB91A, //HANGUL SYLLABLE RIEUL WEO CIEUC - 0x8FCA: 0xB91B, //HANGUL SYLLABLE RIEUL WEO CHIEUCH - 0x8FCB: 0xB91C, //HANGUL SYLLABLE RIEUL WEO KHIEUKH - 0x8FCC: 0xB91D, //HANGUL SYLLABLE RIEUL WEO THIEUTH - 0x8FCD: 0xB91E, //HANGUL SYLLABLE RIEUL WEO PHIEUPH - 0x8FCE: 0xB91F, //HANGUL SYLLABLE RIEUL WEO HIEUH - 0x8FCF: 0xB921, //HANGUL SYLLABLE RIEUL WE KIYEOK - 0x8FD0: 0xB922, //HANGUL SYLLABLE RIEUL WE SSANGKIYEOK - 0x8FD1: 0xB923, //HANGUL SYLLABLE RIEUL WE KIYEOKSIOS - 0x8FD2: 0xB924, //HANGUL SYLLABLE RIEUL WE NIEUN - 0x8FD3: 0xB925, //HANGUL SYLLABLE RIEUL WE NIEUNCIEUC - 0x8FD4: 0xB926, //HANGUL SYLLABLE RIEUL WE NIEUNHIEUH - 0x8FD5: 0xB927, //HANGUL SYLLABLE RIEUL WE TIKEUT - 0x8FD6: 0xB928, //HANGUL SYLLABLE RIEUL WE RIEUL - 0x8FD7: 0xB929, //HANGUL SYLLABLE RIEUL WE RIEULKIYEOK - 0x8FD8: 0xB92A, //HANGUL SYLLABLE RIEUL WE RIEULMIEUM - 0x8FD9: 0xB92B, //HANGUL SYLLABLE RIEUL WE RIEULPIEUP - 0x8FDA: 0xB92C, //HANGUL SYLLABLE RIEUL WE RIEULSIOS - 0x8FDB: 0xB92D, //HANGUL SYLLABLE RIEUL WE RIEULTHIEUTH - 0x8FDC: 0xB92E, //HANGUL SYLLABLE RIEUL WE RIEULPHIEUPH - 0x8FDD: 0xB92F, //HANGUL SYLLABLE RIEUL WE RIEULHIEUH - 0x8FDE: 0xB930, //HANGUL SYLLABLE RIEUL WE MIEUM - 0x8FDF: 0xB931, //HANGUL SYLLABLE RIEUL WE PIEUP - 0x8FE0: 0xB932, //HANGUL SYLLABLE RIEUL WE PIEUPSIOS - 0x8FE1: 0xB933, //HANGUL SYLLABLE RIEUL WE SIOS - 0x8FE2: 0xB934, //HANGUL SYLLABLE RIEUL WE SSANGSIOS - 0x8FE3: 0xB935, //HANGUL SYLLABLE RIEUL WE IEUNG - 0x8FE4: 0xB936, //HANGUL SYLLABLE RIEUL WE CIEUC - 0x8FE5: 0xB937, //HANGUL SYLLABLE RIEUL WE CHIEUCH - 0x8FE6: 0xB938, //HANGUL SYLLABLE RIEUL WE KHIEUKH - 0x8FE7: 0xB939, //HANGUL SYLLABLE RIEUL WE THIEUTH - 0x8FE8: 0xB93A, //HANGUL SYLLABLE RIEUL WE PHIEUPH - 0x8FE9: 0xB93B, //HANGUL SYLLABLE RIEUL WE HIEUH - 0x8FEA: 0xB93E, //HANGUL SYLLABLE RIEUL WI SSANGKIYEOK - 0x8FEB: 0xB93F, //HANGUL SYLLABLE RIEUL WI KIYEOKSIOS - 0x8FEC: 0xB941, //HANGUL SYLLABLE RIEUL WI NIEUNCIEUC - 0x8FED: 0xB942, //HANGUL SYLLABLE RIEUL WI NIEUNHIEUH - 0x8FEE: 0xB943, //HANGUL SYLLABLE RIEUL WI TIKEUT - 0x8FEF: 0xB945, //HANGUL SYLLABLE RIEUL WI RIEULKIYEOK - 0x8FF0: 0xB946, //HANGUL SYLLABLE RIEUL WI RIEULMIEUM - 0x8FF1: 0xB947, //HANGUL SYLLABLE RIEUL WI RIEULPIEUP - 0x8FF2: 0xB948, //HANGUL SYLLABLE RIEUL WI RIEULSIOS - 0x8FF3: 0xB949, //HANGUL SYLLABLE RIEUL WI RIEULTHIEUTH - 0x8FF4: 0xB94A, //HANGUL SYLLABLE RIEUL WI RIEULPHIEUPH - 0x8FF5: 0xB94B, //HANGUL SYLLABLE RIEUL WI RIEULHIEUH - 0x8FF6: 0xB94D, //HANGUL SYLLABLE RIEUL WI PIEUP - 0x8FF7: 0xB94E, //HANGUL SYLLABLE RIEUL WI PIEUPSIOS - 0x8FF8: 0xB950, //HANGUL SYLLABLE RIEUL WI SSANGSIOS - 0x8FF9: 0xB952, //HANGUL SYLLABLE RIEUL WI CIEUC - 0x8FFA: 0xB953, //HANGUL SYLLABLE RIEUL WI CHIEUCH - 0x8FFB: 0xB954, //HANGUL SYLLABLE RIEUL WI KHIEUKH - 0x8FFC: 0xB955, //HANGUL SYLLABLE RIEUL WI THIEUTH - 0x8FFD: 0xB956, //HANGUL SYLLABLE RIEUL WI PHIEUPH - 0x8FFE: 0xB957, //HANGUL SYLLABLE RIEUL WI HIEUH - 0x9041: 0xB95A, //HANGUL SYLLABLE RIEUL YU SSANGKIYEOK - 0x9042: 0xB95B, //HANGUL SYLLABLE RIEUL YU KIYEOKSIOS - 0x9043: 0xB95D, //HANGUL SYLLABLE RIEUL YU NIEUNCIEUC - 0x9044: 0xB95E, //HANGUL SYLLABLE RIEUL YU NIEUNHIEUH - 0x9045: 0xB95F, //HANGUL SYLLABLE RIEUL YU TIKEUT - 0x9046: 0xB961, //HANGUL SYLLABLE RIEUL YU RIEULKIYEOK - 0x9047: 0xB962, //HANGUL SYLLABLE RIEUL YU RIEULMIEUM - 0x9048: 0xB963, //HANGUL SYLLABLE RIEUL YU RIEULPIEUP - 0x9049: 0xB964, //HANGUL SYLLABLE RIEUL YU RIEULSIOS - 0x904A: 0xB965, //HANGUL SYLLABLE RIEUL YU RIEULTHIEUTH - 0x904B: 0xB966, //HANGUL SYLLABLE RIEUL YU RIEULPHIEUPH - 0x904C: 0xB967, //HANGUL SYLLABLE RIEUL YU RIEULHIEUH - 0x904D: 0xB96A, //HANGUL SYLLABLE RIEUL YU PIEUPSIOS - 0x904E: 0xB96C, //HANGUL SYLLABLE RIEUL YU SSANGSIOS - 0x904F: 0xB96E, //HANGUL SYLLABLE RIEUL YU CIEUC - 0x9050: 0xB96F, //HANGUL SYLLABLE RIEUL YU CHIEUCH - 0x9051: 0xB970, //HANGUL SYLLABLE RIEUL YU KHIEUKH - 0x9052: 0xB971, //HANGUL SYLLABLE RIEUL YU THIEUTH - 0x9053: 0xB972, //HANGUL SYLLABLE RIEUL YU PHIEUPH - 0x9054: 0xB973, //HANGUL SYLLABLE RIEUL YU HIEUH - 0x9055: 0xB976, //HANGUL SYLLABLE RIEUL EU SSANGKIYEOK - 0x9056: 0xB977, //HANGUL SYLLABLE RIEUL EU KIYEOKSIOS - 0x9057: 0xB979, //HANGUL SYLLABLE RIEUL EU NIEUNCIEUC - 0x9058: 0xB97A, //HANGUL SYLLABLE RIEUL EU NIEUNHIEUH - 0x9059: 0xB97B, //HANGUL SYLLABLE RIEUL EU TIKEUT - 0x905A: 0xB97D, //HANGUL SYLLABLE RIEUL EU RIEULKIYEOK - 0x9061: 0xB97E, //HANGUL SYLLABLE RIEUL EU RIEULMIEUM - 0x9062: 0xB97F, //HANGUL SYLLABLE RIEUL EU RIEULPIEUP - 0x9063: 0xB980, //HANGUL SYLLABLE RIEUL EU RIEULSIOS - 0x9064: 0xB981, //HANGUL SYLLABLE RIEUL EU RIEULTHIEUTH - 0x9065: 0xB982, //HANGUL SYLLABLE RIEUL EU RIEULPHIEUPH - 0x9066: 0xB983, //HANGUL SYLLABLE RIEUL EU RIEULHIEUH - 0x9067: 0xB986, //HANGUL SYLLABLE RIEUL EU PIEUPSIOS - 0x9068: 0xB988, //HANGUL SYLLABLE RIEUL EU SSANGSIOS - 0x9069: 0xB98B, //HANGUL SYLLABLE RIEUL EU CHIEUCH - 0x906A: 0xB98C, //HANGUL SYLLABLE RIEUL EU KHIEUKH - 0x906B: 0xB98F, //HANGUL SYLLABLE RIEUL EU HIEUH - 0x906C: 0xB990, //HANGUL SYLLABLE RIEUL YI - 0x906D: 0xB991, //HANGUL SYLLABLE RIEUL YI KIYEOK - 0x906E: 0xB992, //HANGUL SYLLABLE RIEUL YI SSANGKIYEOK - 0x906F: 0xB993, //HANGUL SYLLABLE RIEUL YI KIYEOKSIOS - 0x9070: 0xB994, //HANGUL SYLLABLE RIEUL YI NIEUN - 0x9071: 0xB995, //HANGUL SYLLABLE RIEUL YI NIEUNCIEUC - 0x9072: 0xB996, //HANGUL SYLLABLE RIEUL YI NIEUNHIEUH - 0x9073: 0xB997, //HANGUL SYLLABLE RIEUL YI TIKEUT - 0x9074: 0xB998, //HANGUL SYLLABLE RIEUL YI RIEUL - 0x9075: 0xB999, //HANGUL SYLLABLE RIEUL YI RIEULKIYEOK - 0x9076: 0xB99A, //HANGUL SYLLABLE RIEUL YI RIEULMIEUM - 0x9077: 0xB99B, //HANGUL SYLLABLE RIEUL YI RIEULPIEUP - 0x9078: 0xB99C, //HANGUL SYLLABLE RIEUL YI RIEULSIOS - 0x9079: 0xB99D, //HANGUL SYLLABLE RIEUL YI RIEULTHIEUTH - 0x907A: 0xB99E, //HANGUL SYLLABLE RIEUL YI RIEULPHIEUPH - 0x9081: 0xB99F, //HANGUL SYLLABLE RIEUL YI RIEULHIEUH - 0x9082: 0xB9A0, //HANGUL SYLLABLE RIEUL YI MIEUM - 0x9083: 0xB9A1, //HANGUL SYLLABLE RIEUL YI PIEUP - 0x9084: 0xB9A2, //HANGUL SYLLABLE RIEUL YI PIEUPSIOS - 0x9085: 0xB9A3, //HANGUL SYLLABLE RIEUL YI SIOS - 0x9086: 0xB9A4, //HANGUL SYLLABLE RIEUL YI SSANGSIOS - 0x9087: 0xB9A5, //HANGUL SYLLABLE RIEUL YI IEUNG - 0x9088: 0xB9A6, //HANGUL SYLLABLE RIEUL YI CIEUC - 0x9089: 0xB9A7, //HANGUL SYLLABLE RIEUL YI CHIEUCH - 0x908A: 0xB9A8, //HANGUL SYLLABLE RIEUL YI KHIEUKH - 0x908B: 0xB9A9, //HANGUL SYLLABLE RIEUL YI THIEUTH - 0x908C: 0xB9AA, //HANGUL SYLLABLE RIEUL YI PHIEUPH - 0x908D: 0xB9AB, //HANGUL SYLLABLE RIEUL YI HIEUH - 0x908E: 0xB9AE, //HANGUL SYLLABLE RIEUL I SSANGKIYEOK - 0x908F: 0xB9AF, //HANGUL SYLLABLE RIEUL I KIYEOKSIOS - 0x9090: 0xB9B1, //HANGUL SYLLABLE RIEUL I NIEUNCIEUC - 0x9091: 0xB9B2, //HANGUL SYLLABLE RIEUL I NIEUNHIEUH - 0x9092: 0xB9B3, //HANGUL SYLLABLE RIEUL I TIKEUT - 0x9093: 0xB9B5, //HANGUL SYLLABLE RIEUL I RIEULKIYEOK - 0x9094: 0xB9B6, //HANGUL SYLLABLE RIEUL I RIEULMIEUM - 0x9095: 0xB9B7, //HANGUL SYLLABLE RIEUL I RIEULPIEUP - 0x9096: 0xB9B8, //HANGUL SYLLABLE RIEUL I RIEULSIOS - 0x9097: 0xB9B9, //HANGUL SYLLABLE RIEUL I RIEULTHIEUTH - 0x9098: 0xB9BA, //HANGUL SYLLABLE RIEUL I RIEULPHIEUPH - 0x9099: 0xB9BB, //HANGUL SYLLABLE RIEUL I RIEULHIEUH - 0x909A: 0xB9BE, //HANGUL SYLLABLE RIEUL I PIEUPSIOS - 0x909B: 0xB9C0, //HANGUL SYLLABLE RIEUL I SSANGSIOS - 0x909C: 0xB9C2, //HANGUL SYLLABLE RIEUL I CIEUC - 0x909D: 0xB9C3, //HANGUL SYLLABLE RIEUL I CHIEUCH - 0x909E: 0xB9C4, //HANGUL SYLLABLE RIEUL I KHIEUKH - 0x909F: 0xB9C5, //HANGUL SYLLABLE RIEUL I THIEUTH - 0x90A0: 0xB9C6, //HANGUL SYLLABLE RIEUL I PHIEUPH - 0x90A1: 0xB9C7, //HANGUL SYLLABLE RIEUL I HIEUH - 0x90A2: 0xB9CA, //HANGUL SYLLABLE MIEUM A SSANGKIYEOK - 0x90A3: 0xB9CB, //HANGUL SYLLABLE MIEUM A KIYEOKSIOS - 0x90A4: 0xB9CD, //HANGUL SYLLABLE MIEUM A NIEUNCIEUC - 0x90A5: 0xB9D3, //HANGUL SYLLABLE MIEUM A RIEULPIEUP - 0x90A6: 0xB9D4, //HANGUL SYLLABLE MIEUM A RIEULSIOS - 0x90A7: 0xB9D5, //HANGUL SYLLABLE MIEUM A RIEULTHIEUTH - 0x90A8: 0xB9D6, //HANGUL SYLLABLE MIEUM A RIEULPHIEUPH - 0x90A9: 0xB9D7, //HANGUL SYLLABLE MIEUM A RIEULHIEUH - 0x90AA: 0xB9DA, //HANGUL SYLLABLE MIEUM A PIEUPSIOS - 0x90AB: 0xB9DC, //HANGUL SYLLABLE MIEUM A SSANGSIOS - 0x90AC: 0xB9DF, //HANGUL SYLLABLE MIEUM A CHIEUCH - 0x90AD: 0xB9E0, //HANGUL SYLLABLE MIEUM A KHIEUKH - 0x90AE: 0xB9E2, //HANGUL SYLLABLE MIEUM A PHIEUPH - 0x90AF: 0xB9E6, //HANGUL SYLLABLE MIEUM AE SSANGKIYEOK - 0x90B0: 0xB9E7, //HANGUL SYLLABLE MIEUM AE KIYEOKSIOS - 0x90B1: 0xB9E9, //HANGUL SYLLABLE MIEUM AE NIEUNCIEUC - 0x90B2: 0xB9EA, //HANGUL SYLLABLE MIEUM AE NIEUNHIEUH - 0x90B3: 0xB9EB, //HANGUL SYLLABLE MIEUM AE TIKEUT - 0x90B4: 0xB9ED, //HANGUL SYLLABLE MIEUM AE RIEULKIYEOK - 0x90B5: 0xB9EE, //HANGUL SYLLABLE MIEUM AE RIEULMIEUM - 0x90B6: 0xB9EF, //HANGUL SYLLABLE MIEUM AE RIEULPIEUP - 0x90B7: 0xB9F0, //HANGUL SYLLABLE MIEUM AE RIEULSIOS - 0x90B8: 0xB9F1, //HANGUL SYLLABLE MIEUM AE RIEULTHIEUTH - 0x90B9: 0xB9F2, //HANGUL SYLLABLE MIEUM AE RIEULPHIEUPH - 0x90BA: 0xB9F3, //HANGUL SYLLABLE MIEUM AE RIEULHIEUH - 0x90BB: 0xB9F6, //HANGUL SYLLABLE MIEUM AE PIEUPSIOS - 0x90BC: 0xB9FB, //HANGUL SYLLABLE MIEUM AE CHIEUCH - 0x90BD: 0xB9FC, //HANGUL SYLLABLE MIEUM AE KHIEUKH - 0x90BE: 0xB9FD, //HANGUL SYLLABLE MIEUM AE THIEUTH - 0x90BF: 0xB9FE, //HANGUL SYLLABLE MIEUM AE PHIEUPH - 0x90C0: 0xB9FF, //HANGUL SYLLABLE MIEUM AE HIEUH - 0x90C1: 0xBA02, //HANGUL SYLLABLE MIEUM YA SSANGKIYEOK - 0x90C2: 0xBA03, //HANGUL SYLLABLE MIEUM YA KIYEOKSIOS - 0x90C3: 0xBA04, //HANGUL SYLLABLE MIEUM YA NIEUN - 0x90C4: 0xBA05, //HANGUL SYLLABLE MIEUM YA NIEUNCIEUC - 0x90C5: 0xBA06, //HANGUL SYLLABLE MIEUM YA NIEUNHIEUH - 0x90C6: 0xBA07, //HANGUL SYLLABLE MIEUM YA TIKEUT - 0x90C7: 0xBA09, //HANGUL SYLLABLE MIEUM YA RIEULKIYEOK - 0x90C8: 0xBA0A, //HANGUL SYLLABLE MIEUM YA RIEULMIEUM - 0x90C9: 0xBA0B, //HANGUL SYLLABLE MIEUM YA RIEULPIEUP - 0x90CA: 0xBA0C, //HANGUL SYLLABLE MIEUM YA RIEULSIOS - 0x90CB: 0xBA0D, //HANGUL SYLLABLE MIEUM YA RIEULTHIEUTH - 0x90CC: 0xBA0E, //HANGUL SYLLABLE MIEUM YA RIEULPHIEUPH - 0x90CD: 0xBA0F, //HANGUL SYLLABLE MIEUM YA RIEULHIEUH - 0x90CE: 0xBA10, //HANGUL SYLLABLE MIEUM YA MIEUM - 0x90CF: 0xBA11, //HANGUL SYLLABLE MIEUM YA PIEUP - 0x90D0: 0xBA12, //HANGUL SYLLABLE MIEUM YA PIEUPSIOS - 0x90D1: 0xBA13, //HANGUL SYLLABLE MIEUM YA SIOS - 0x90D2: 0xBA14, //HANGUL SYLLABLE MIEUM YA SSANGSIOS - 0x90D3: 0xBA16, //HANGUL SYLLABLE MIEUM YA CIEUC - 0x90D4: 0xBA17, //HANGUL SYLLABLE MIEUM YA CHIEUCH - 0x90D5: 0xBA18, //HANGUL SYLLABLE MIEUM YA KHIEUKH - 0x90D6: 0xBA19, //HANGUL SYLLABLE MIEUM YA THIEUTH - 0x90D7: 0xBA1A, //HANGUL SYLLABLE MIEUM YA PHIEUPH - 0x90D8: 0xBA1B, //HANGUL SYLLABLE MIEUM YA HIEUH - 0x90D9: 0xBA1C, //HANGUL SYLLABLE MIEUM YAE - 0x90DA: 0xBA1D, //HANGUL SYLLABLE MIEUM YAE KIYEOK - 0x90DB: 0xBA1E, //HANGUL SYLLABLE MIEUM YAE SSANGKIYEOK - 0x90DC: 0xBA1F, //HANGUL SYLLABLE MIEUM YAE KIYEOKSIOS - 0x90DD: 0xBA20, //HANGUL SYLLABLE MIEUM YAE NIEUN - 0x90DE: 0xBA21, //HANGUL SYLLABLE MIEUM YAE NIEUNCIEUC - 0x90DF: 0xBA22, //HANGUL SYLLABLE MIEUM YAE NIEUNHIEUH - 0x90E0: 0xBA23, //HANGUL SYLLABLE MIEUM YAE TIKEUT - 0x90E1: 0xBA24, //HANGUL SYLLABLE MIEUM YAE RIEUL - 0x90E2: 0xBA25, //HANGUL SYLLABLE MIEUM YAE RIEULKIYEOK - 0x90E3: 0xBA26, //HANGUL SYLLABLE MIEUM YAE RIEULMIEUM - 0x90E4: 0xBA27, //HANGUL SYLLABLE MIEUM YAE RIEULPIEUP - 0x90E5: 0xBA28, //HANGUL SYLLABLE MIEUM YAE RIEULSIOS - 0x90E6: 0xBA29, //HANGUL SYLLABLE MIEUM YAE RIEULTHIEUTH - 0x90E7: 0xBA2A, //HANGUL SYLLABLE MIEUM YAE RIEULPHIEUPH - 0x90E8: 0xBA2B, //HANGUL SYLLABLE MIEUM YAE RIEULHIEUH - 0x90E9: 0xBA2C, //HANGUL SYLLABLE MIEUM YAE MIEUM - 0x90EA: 0xBA2D, //HANGUL SYLLABLE MIEUM YAE PIEUP - 0x90EB: 0xBA2E, //HANGUL SYLLABLE MIEUM YAE PIEUPSIOS - 0x90EC: 0xBA2F, //HANGUL SYLLABLE MIEUM YAE SIOS - 0x90ED: 0xBA30, //HANGUL SYLLABLE MIEUM YAE SSANGSIOS - 0x90EE: 0xBA31, //HANGUL SYLLABLE MIEUM YAE IEUNG - 0x90EF: 0xBA32, //HANGUL SYLLABLE MIEUM YAE CIEUC - 0x90F0: 0xBA33, //HANGUL SYLLABLE MIEUM YAE CHIEUCH - 0x90F1: 0xBA34, //HANGUL SYLLABLE MIEUM YAE KHIEUKH - 0x90F2: 0xBA35, //HANGUL SYLLABLE MIEUM YAE THIEUTH - 0x90F3: 0xBA36, //HANGUL SYLLABLE MIEUM YAE PHIEUPH - 0x90F4: 0xBA37, //HANGUL SYLLABLE MIEUM YAE HIEUH - 0x90F5: 0xBA3A, //HANGUL SYLLABLE MIEUM EO SSANGKIYEOK - 0x90F6: 0xBA3B, //HANGUL SYLLABLE MIEUM EO KIYEOKSIOS - 0x90F7: 0xBA3D, //HANGUL SYLLABLE MIEUM EO NIEUNCIEUC - 0x90F8: 0xBA3E, //HANGUL SYLLABLE MIEUM EO NIEUNHIEUH - 0x90F9: 0xBA3F, //HANGUL SYLLABLE MIEUM EO TIKEUT - 0x90FA: 0xBA41, //HANGUL SYLLABLE MIEUM EO RIEULKIYEOK - 0x90FB: 0xBA43, //HANGUL SYLLABLE MIEUM EO RIEULPIEUP - 0x90FC: 0xBA44, //HANGUL SYLLABLE MIEUM EO RIEULSIOS - 0x90FD: 0xBA45, //HANGUL SYLLABLE MIEUM EO RIEULTHIEUTH - 0x90FE: 0xBA46, //HANGUL SYLLABLE MIEUM EO RIEULPHIEUPH - 0x9141: 0xBA47, //HANGUL SYLLABLE MIEUM EO RIEULHIEUH - 0x9142: 0xBA4A, //HANGUL SYLLABLE MIEUM EO PIEUPSIOS - 0x9143: 0xBA4C, //HANGUL SYLLABLE MIEUM EO SSANGSIOS - 0x9144: 0xBA4F, //HANGUL SYLLABLE MIEUM EO CHIEUCH - 0x9145: 0xBA50, //HANGUL SYLLABLE MIEUM EO KHIEUKH - 0x9146: 0xBA51, //HANGUL SYLLABLE MIEUM EO THIEUTH - 0x9147: 0xBA52, //HANGUL SYLLABLE MIEUM EO PHIEUPH - 0x9148: 0xBA56, //HANGUL SYLLABLE MIEUM E SSANGKIYEOK - 0x9149: 0xBA57, //HANGUL SYLLABLE MIEUM E KIYEOKSIOS - 0x914A: 0xBA59, //HANGUL SYLLABLE MIEUM E NIEUNCIEUC - 0x914B: 0xBA5A, //HANGUL SYLLABLE MIEUM E NIEUNHIEUH - 0x914C: 0xBA5B, //HANGUL SYLLABLE MIEUM E TIKEUT - 0x914D: 0xBA5D, //HANGUL SYLLABLE MIEUM E RIEULKIYEOK - 0x914E: 0xBA5E, //HANGUL SYLLABLE MIEUM E RIEULMIEUM - 0x914F: 0xBA5F, //HANGUL SYLLABLE MIEUM E RIEULPIEUP - 0x9150: 0xBA60, //HANGUL SYLLABLE MIEUM E RIEULSIOS - 0x9151: 0xBA61, //HANGUL SYLLABLE MIEUM E RIEULTHIEUTH - 0x9152: 0xBA62, //HANGUL SYLLABLE MIEUM E RIEULPHIEUPH - 0x9153: 0xBA63, //HANGUL SYLLABLE MIEUM E RIEULHIEUH - 0x9154: 0xBA66, //HANGUL SYLLABLE MIEUM E PIEUPSIOS - 0x9155: 0xBA6A, //HANGUL SYLLABLE MIEUM E CIEUC - 0x9156: 0xBA6B, //HANGUL SYLLABLE MIEUM E CHIEUCH - 0x9157: 0xBA6C, //HANGUL SYLLABLE MIEUM E KHIEUKH - 0x9158: 0xBA6D, //HANGUL SYLLABLE MIEUM E THIEUTH - 0x9159: 0xBA6E, //HANGUL SYLLABLE MIEUM E PHIEUPH - 0x915A: 0xBA6F, //HANGUL SYLLABLE MIEUM E HIEUH - 0x9161: 0xBA72, //HANGUL SYLLABLE MIEUM YEO SSANGKIYEOK - 0x9162: 0xBA73, //HANGUL SYLLABLE MIEUM YEO KIYEOKSIOS - 0x9163: 0xBA75, //HANGUL SYLLABLE MIEUM YEO NIEUNCIEUC - 0x9164: 0xBA76, //HANGUL SYLLABLE MIEUM YEO NIEUNHIEUH - 0x9165: 0xBA77, //HANGUL SYLLABLE MIEUM YEO TIKEUT - 0x9166: 0xBA79, //HANGUL SYLLABLE MIEUM YEO RIEULKIYEOK - 0x9167: 0xBA7A, //HANGUL SYLLABLE MIEUM YEO RIEULMIEUM - 0x9168: 0xBA7B, //HANGUL SYLLABLE MIEUM YEO RIEULPIEUP - 0x9169: 0xBA7C, //HANGUL SYLLABLE MIEUM YEO RIEULSIOS - 0x916A: 0xBA7D, //HANGUL SYLLABLE MIEUM YEO RIEULTHIEUTH - 0x916B: 0xBA7E, //HANGUL SYLLABLE MIEUM YEO RIEULPHIEUPH - 0x916C: 0xBA7F, //HANGUL SYLLABLE MIEUM YEO RIEULHIEUH - 0x916D: 0xBA80, //HANGUL SYLLABLE MIEUM YEO MIEUM - 0x916E: 0xBA81, //HANGUL SYLLABLE MIEUM YEO PIEUP - 0x916F: 0xBA82, //HANGUL SYLLABLE MIEUM YEO PIEUPSIOS - 0x9170: 0xBA86, //HANGUL SYLLABLE MIEUM YEO CIEUC - 0x9171: 0xBA88, //HANGUL SYLLABLE MIEUM YEO KHIEUKH - 0x9172: 0xBA89, //HANGUL SYLLABLE MIEUM YEO THIEUTH - 0x9173: 0xBA8A, //HANGUL SYLLABLE MIEUM YEO PHIEUPH - 0x9174: 0xBA8B, //HANGUL SYLLABLE MIEUM YEO HIEUH - 0x9175: 0xBA8D, //HANGUL SYLLABLE MIEUM YE KIYEOK - 0x9176: 0xBA8E, //HANGUL SYLLABLE MIEUM YE SSANGKIYEOK - 0x9177: 0xBA8F, //HANGUL SYLLABLE MIEUM YE KIYEOKSIOS - 0x9178: 0xBA90, //HANGUL SYLLABLE MIEUM YE NIEUN - 0x9179: 0xBA91, //HANGUL SYLLABLE MIEUM YE NIEUNCIEUC - 0x917A: 0xBA92, //HANGUL SYLLABLE MIEUM YE NIEUNHIEUH - 0x9181: 0xBA93, //HANGUL SYLLABLE MIEUM YE TIKEUT - 0x9182: 0xBA94, //HANGUL SYLLABLE MIEUM YE RIEUL - 0x9183: 0xBA95, //HANGUL SYLLABLE MIEUM YE RIEULKIYEOK - 0x9184: 0xBA96, //HANGUL SYLLABLE MIEUM YE RIEULMIEUM - 0x9185: 0xBA97, //HANGUL SYLLABLE MIEUM YE RIEULPIEUP - 0x9186: 0xBA98, //HANGUL SYLLABLE MIEUM YE RIEULSIOS - 0x9187: 0xBA99, //HANGUL SYLLABLE MIEUM YE RIEULTHIEUTH - 0x9188: 0xBA9A, //HANGUL SYLLABLE MIEUM YE RIEULPHIEUPH - 0x9189: 0xBA9B, //HANGUL SYLLABLE MIEUM YE RIEULHIEUH - 0x918A: 0xBA9C, //HANGUL SYLLABLE MIEUM YE MIEUM - 0x918B: 0xBA9D, //HANGUL SYLLABLE MIEUM YE PIEUP - 0x918C: 0xBA9E, //HANGUL SYLLABLE MIEUM YE PIEUPSIOS - 0x918D: 0xBA9F, //HANGUL SYLLABLE MIEUM YE SIOS - 0x918E: 0xBAA0, //HANGUL SYLLABLE MIEUM YE SSANGSIOS - 0x918F: 0xBAA1, //HANGUL SYLLABLE MIEUM YE IEUNG - 0x9190: 0xBAA2, //HANGUL SYLLABLE MIEUM YE CIEUC - 0x9191: 0xBAA3, //HANGUL SYLLABLE MIEUM YE CHIEUCH - 0x9192: 0xBAA4, //HANGUL SYLLABLE MIEUM YE KHIEUKH - 0x9193: 0xBAA5, //HANGUL SYLLABLE MIEUM YE THIEUTH - 0x9194: 0xBAA6, //HANGUL SYLLABLE MIEUM YE PHIEUPH - 0x9195: 0xBAA7, //HANGUL SYLLABLE MIEUM YE HIEUH - 0x9196: 0xBAAA, //HANGUL SYLLABLE MIEUM O SSANGKIYEOK - 0x9197: 0xBAAD, //HANGUL SYLLABLE MIEUM O NIEUNCIEUC - 0x9198: 0xBAAE, //HANGUL SYLLABLE MIEUM O NIEUNHIEUH - 0x9199: 0xBAAF, //HANGUL SYLLABLE MIEUM O TIKEUT - 0x919A: 0xBAB1, //HANGUL SYLLABLE MIEUM O RIEULKIYEOK - 0x919B: 0xBAB3, //HANGUL SYLLABLE MIEUM O RIEULPIEUP - 0x919C: 0xBAB4, //HANGUL SYLLABLE MIEUM O RIEULSIOS - 0x919D: 0xBAB5, //HANGUL SYLLABLE MIEUM O RIEULTHIEUTH - 0x919E: 0xBAB6, //HANGUL SYLLABLE MIEUM O RIEULPHIEUPH - 0x919F: 0xBAB7, //HANGUL SYLLABLE MIEUM O RIEULHIEUH - 0x91A0: 0xBABA, //HANGUL SYLLABLE MIEUM O PIEUPSIOS - 0x91A1: 0xBABC, //HANGUL SYLLABLE MIEUM O SSANGSIOS - 0x91A2: 0xBABE, //HANGUL SYLLABLE MIEUM O CIEUC - 0x91A3: 0xBABF, //HANGUL SYLLABLE MIEUM O CHIEUCH - 0x91A4: 0xBAC0, //HANGUL SYLLABLE MIEUM O KHIEUKH - 0x91A5: 0xBAC1, //HANGUL SYLLABLE MIEUM O THIEUTH - 0x91A6: 0xBAC2, //HANGUL SYLLABLE MIEUM O PHIEUPH - 0x91A7: 0xBAC3, //HANGUL SYLLABLE MIEUM O HIEUH - 0x91A8: 0xBAC5, //HANGUL SYLLABLE MIEUM WA KIYEOK - 0x91A9: 0xBAC6, //HANGUL SYLLABLE MIEUM WA SSANGKIYEOK - 0x91AA: 0xBAC7, //HANGUL SYLLABLE MIEUM WA KIYEOKSIOS - 0x91AB: 0xBAC9, //HANGUL SYLLABLE MIEUM WA NIEUNCIEUC - 0x91AC: 0xBACA, //HANGUL SYLLABLE MIEUM WA NIEUNHIEUH - 0x91AD: 0xBACB, //HANGUL SYLLABLE MIEUM WA TIKEUT - 0x91AE: 0xBACC, //HANGUL SYLLABLE MIEUM WA RIEUL - 0x91AF: 0xBACD, //HANGUL SYLLABLE MIEUM WA RIEULKIYEOK - 0x91B0: 0xBACE, //HANGUL SYLLABLE MIEUM WA RIEULMIEUM - 0x91B1: 0xBACF, //HANGUL SYLLABLE MIEUM WA RIEULPIEUP - 0x91B2: 0xBAD0, //HANGUL SYLLABLE MIEUM WA RIEULSIOS - 0x91B3: 0xBAD1, //HANGUL SYLLABLE MIEUM WA RIEULTHIEUTH - 0x91B4: 0xBAD2, //HANGUL SYLLABLE MIEUM WA RIEULPHIEUPH - 0x91B5: 0xBAD3, //HANGUL SYLLABLE MIEUM WA RIEULHIEUH - 0x91B6: 0xBAD4, //HANGUL SYLLABLE MIEUM WA MIEUM - 0x91B7: 0xBAD5, //HANGUL SYLLABLE MIEUM WA PIEUP - 0x91B8: 0xBAD6, //HANGUL SYLLABLE MIEUM WA PIEUPSIOS - 0x91B9: 0xBAD7, //HANGUL SYLLABLE MIEUM WA SIOS - 0x91BA: 0xBADA, //HANGUL SYLLABLE MIEUM WA CIEUC - 0x91BB: 0xBADB, //HANGUL SYLLABLE MIEUM WA CHIEUCH - 0x91BC: 0xBADC, //HANGUL SYLLABLE MIEUM WA KHIEUKH - 0x91BD: 0xBADD, //HANGUL SYLLABLE MIEUM WA THIEUTH - 0x91BE: 0xBADE, //HANGUL SYLLABLE MIEUM WA PHIEUPH - 0x91BF: 0xBADF, //HANGUL SYLLABLE MIEUM WA HIEUH - 0x91C0: 0xBAE0, //HANGUL SYLLABLE MIEUM WAE - 0x91C1: 0xBAE1, //HANGUL SYLLABLE MIEUM WAE KIYEOK - 0x91C2: 0xBAE2, //HANGUL SYLLABLE MIEUM WAE SSANGKIYEOK - 0x91C3: 0xBAE3, //HANGUL SYLLABLE MIEUM WAE KIYEOKSIOS - 0x91C4: 0xBAE4, //HANGUL SYLLABLE MIEUM WAE NIEUN - 0x91C5: 0xBAE5, //HANGUL SYLLABLE MIEUM WAE NIEUNCIEUC - 0x91C6: 0xBAE6, //HANGUL SYLLABLE MIEUM WAE NIEUNHIEUH - 0x91C7: 0xBAE7, //HANGUL SYLLABLE MIEUM WAE TIKEUT - 0x91C8: 0xBAE8, //HANGUL SYLLABLE MIEUM WAE RIEUL - 0x91C9: 0xBAE9, //HANGUL SYLLABLE MIEUM WAE RIEULKIYEOK - 0x91CA: 0xBAEA, //HANGUL SYLLABLE MIEUM WAE RIEULMIEUM - 0x91CB: 0xBAEB, //HANGUL SYLLABLE MIEUM WAE RIEULPIEUP - 0x91CC: 0xBAEC, //HANGUL SYLLABLE MIEUM WAE RIEULSIOS - 0x91CD: 0xBAED, //HANGUL SYLLABLE MIEUM WAE RIEULTHIEUTH - 0x91CE: 0xBAEE, //HANGUL SYLLABLE MIEUM WAE RIEULPHIEUPH - 0x91CF: 0xBAEF, //HANGUL SYLLABLE MIEUM WAE RIEULHIEUH - 0x91D0: 0xBAF0, //HANGUL SYLLABLE MIEUM WAE MIEUM - 0x91D1: 0xBAF1, //HANGUL SYLLABLE MIEUM WAE PIEUP - 0x91D2: 0xBAF2, //HANGUL SYLLABLE MIEUM WAE PIEUPSIOS - 0x91D3: 0xBAF3, //HANGUL SYLLABLE MIEUM WAE SIOS - 0x91D4: 0xBAF4, //HANGUL SYLLABLE MIEUM WAE SSANGSIOS - 0x91D5: 0xBAF5, //HANGUL SYLLABLE MIEUM WAE IEUNG - 0x91D6: 0xBAF6, //HANGUL SYLLABLE MIEUM WAE CIEUC - 0x91D7: 0xBAF7, //HANGUL SYLLABLE MIEUM WAE CHIEUCH - 0x91D8: 0xBAF8, //HANGUL SYLLABLE MIEUM WAE KHIEUKH - 0x91D9: 0xBAF9, //HANGUL SYLLABLE MIEUM WAE THIEUTH - 0x91DA: 0xBAFA, //HANGUL SYLLABLE MIEUM WAE PHIEUPH - 0x91DB: 0xBAFB, //HANGUL SYLLABLE MIEUM WAE HIEUH - 0x91DC: 0xBAFD, //HANGUL SYLLABLE MIEUM OE KIYEOK - 0x91DD: 0xBAFE, //HANGUL SYLLABLE MIEUM OE SSANGKIYEOK - 0x91DE: 0xBAFF, //HANGUL SYLLABLE MIEUM OE KIYEOKSIOS - 0x91DF: 0xBB01, //HANGUL SYLLABLE MIEUM OE NIEUNCIEUC - 0x91E0: 0xBB02, //HANGUL SYLLABLE MIEUM OE NIEUNHIEUH - 0x91E1: 0xBB03, //HANGUL SYLLABLE MIEUM OE TIKEUT - 0x91E2: 0xBB05, //HANGUL SYLLABLE MIEUM OE RIEULKIYEOK - 0x91E3: 0xBB06, //HANGUL SYLLABLE MIEUM OE RIEULMIEUM - 0x91E4: 0xBB07, //HANGUL SYLLABLE MIEUM OE RIEULPIEUP - 0x91E5: 0xBB08, //HANGUL SYLLABLE MIEUM OE RIEULSIOS - 0x91E6: 0xBB09, //HANGUL SYLLABLE MIEUM OE RIEULTHIEUTH - 0x91E7: 0xBB0A, //HANGUL SYLLABLE MIEUM OE RIEULPHIEUPH - 0x91E8: 0xBB0B, //HANGUL SYLLABLE MIEUM OE RIEULHIEUH - 0x91E9: 0xBB0C, //HANGUL SYLLABLE MIEUM OE MIEUM - 0x91EA: 0xBB0E, //HANGUL SYLLABLE MIEUM OE PIEUPSIOS - 0x91EB: 0xBB10, //HANGUL SYLLABLE MIEUM OE SSANGSIOS - 0x91EC: 0xBB12, //HANGUL SYLLABLE MIEUM OE CIEUC - 0x91ED: 0xBB13, //HANGUL SYLLABLE MIEUM OE CHIEUCH - 0x91EE: 0xBB14, //HANGUL SYLLABLE MIEUM OE KHIEUKH - 0x91EF: 0xBB15, //HANGUL SYLLABLE MIEUM OE THIEUTH - 0x91F0: 0xBB16, //HANGUL SYLLABLE MIEUM OE PHIEUPH - 0x91F1: 0xBB17, //HANGUL SYLLABLE MIEUM OE HIEUH - 0x91F2: 0xBB19, //HANGUL SYLLABLE MIEUM YO KIYEOK - 0x91F3: 0xBB1A, //HANGUL SYLLABLE MIEUM YO SSANGKIYEOK - 0x91F4: 0xBB1B, //HANGUL SYLLABLE MIEUM YO KIYEOKSIOS - 0x91F5: 0xBB1D, //HANGUL SYLLABLE MIEUM YO NIEUNCIEUC - 0x91F6: 0xBB1E, //HANGUL SYLLABLE MIEUM YO NIEUNHIEUH - 0x91F7: 0xBB1F, //HANGUL SYLLABLE MIEUM YO TIKEUT - 0x91F8: 0xBB21, //HANGUL SYLLABLE MIEUM YO RIEULKIYEOK - 0x91F9: 0xBB22, //HANGUL SYLLABLE MIEUM YO RIEULMIEUM - 0x91FA: 0xBB23, //HANGUL SYLLABLE MIEUM YO RIEULPIEUP - 0x91FB: 0xBB24, //HANGUL SYLLABLE MIEUM YO RIEULSIOS - 0x91FC: 0xBB25, //HANGUL SYLLABLE MIEUM YO RIEULTHIEUTH - 0x91FD: 0xBB26, //HANGUL SYLLABLE MIEUM YO RIEULPHIEUPH - 0x91FE: 0xBB27, //HANGUL SYLLABLE MIEUM YO RIEULHIEUH - 0x9241: 0xBB28, //HANGUL SYLLABLE MIEUM YO MIEUM - 0x9242: 0xBB2A, //HANGUL SYLLABLE MIEUM YO PIEUPSIOS - 0x9243: 0xBB2C, //HANGUL SYLLABLE MIEUM YO SSANGSIOS - 0x9244: 0xBB2D, //HANGUL SYLLABLE MIEUM YO IEUNG - 0x9245: 0xBB2E, //HANGUL SYLLABLE MIEUM YO CIEUC - 0x9246: 0xBB2F, //HANGUL SYLLABLE MIEUM YO CHIEUCH - 0x9247: 0xBB30, //HANGUL SYLLABLE MIEUM YO KHIEUKH - 0x9248: 0xBB31, //HANGUL SYLLABLE MIEUM YO THIEUTH - 0x9249: 0xBB32, //HANGUL SYLLABLE MIEUM YO PHIEUPH - 0x924A: 0xBB33, //HANGUL SYLLABLE MIEUM YO HIEUH - 0x924B: 0xBB37, //HANGUL SYLLABLE MIEUM U KIYEOKSIOS - 0x924C: 0xBB39, //HANGUL SYLLABLE MIEUM U NIEUNCIEUC - 0x924D: 0xBB3A, //HANGUL SYLLABLE MIEUM U NIEUNHIEUH - 0x924E: 0xBB3F, //HANGUL SYLLABLE MIEUM U RIEULPIEUP - 0x924F: 0xBB40, //HANGUL SYLLABLE MIEUM U RIEULSIOS - 0x9250: 0xBB41, //HANGUL SYLLABLE MIEUM U RIEULTHIEUTH - 0x9251: 0xBB42, //HANGUL SYLLABLE MIEUM U RIEULPHIEUPH - 0x9252: 0xBB43, //HANGUL SYLLABLE MIEUM U RIEULHIEUH - 0x9253: 0xBB46, //HANGUL SYLLABLE MIEUM U PIEUPSIOS - 0x9254: 0xBB48, //HANGUL SYLLABLE MIEUM U SSANGSIOS - 0x9255: 0xBB4A, //HANGUL SYLLABLE MIEUM U CIEUC - 0x9256: 0xBB4B, //HANGUL SYLLABLE MIEUM U CHIEUCH - 0x9257: 0xBB4C, //HANGUL SYLLABLE MIEUM U KHIEUKH - 0x9258: 0xBB4E, //HANGUL SYLLABLE MIEUM U PHIEUPH - 0x9259: 0xBB51, //HANGUL SYLLABLE MIEUM WEO KIYEOK - 0x925A: 0xBB52, //HANGUL SYLLABLE MIEUM WEO SSANGKIYEOK - 0x9261: 0xBB53, //HANGUL SYLLABLE MIEUM WEO KIYEOKSIOS - 0x9262: 0xBB55, //HANGUL SYLLABLE MIEUM WEO NIEUNCIEUC - 0x9263: 0xBB56, //HANGUL SYLLABLE MIEUM WEO NIEUNHIEUH - 0x9264: 0xBB57, //HANGUL SYLLABLE MIEUM WEO TIKEUT - 0x9265: 0xBB59, //HANGUL SYLLABLE MIEUM WEO RIEULKIYEOK - 0x9266: 0xBB5A, //HANGUL SYLLABLE MIEUM WEO RIEULMIEUM - 0x9267: 0xBB5B, //HANGUL SYLLABLE MIEUM WEO RIEULPIEUP - 0x9268: 0xBB5C, //HANGUL SYLLABLE MIEUM WEO RIEULSIOS - 0x9269: 0xBB5D, //HANGUL SYLLABLE MIEUM WEO RIEULTHIEUTH - 0x926A: 0xBB5E, //HANGUL SYLLABLE MIEUM WEO RIEULPHIEUPH - 0x926B: 0xBB5F, //HANGUL SYLLABLE MIEUM WEO RIEULHIEUH - 0x926C: 0xBB60, //HANGUL SYLLABLE MIEUM WEO MIEUM - 0x926D: 0xBB62, //HANGUL SYLLABLE MIEUM WEO PIEUPSIOS - 0x926E: 0xBB64, //HANGUL SYLLABLE MIEUM WEO SSANGSIOS - 0x926F: 0xBB65, //HANGUL SYLLABLE MIEUM WEO IEUNG - 0x9270: 0xBB66, //HANGUL SYLLABLE MIEUM WEO CIEUC - 0x9271: 0xBB67, //HANGUL SYLLABLE MIEUM WEO CHIEUCH - 0x9272: 0xBB68, //HANGUL SYLLABLE MIEUM WEO KHIEUKH - 0x9273: 0xBB69, //HANGUL SYLLABLE MIEUM WEO THIEUTH - 0x9274: 0xBB6A, //HANGUL SYLLABLE MIEUM WEO PHIEUPH - 0x9275: 0xBB6B, //HANGUL SYLLABLE MIEUM WEO HIEUH - 0x9276: 0xBB6D, //HANGUL SYLLABLE MIEUM WE KIYEOK - 0x9277: 0xBB6E, //HANGUL SYLLABLE MIEUM WE SSANGKIYEOK - 0x9278: 0xBB6F, //HANGUL SYLLABLE MIEUM WE KIYEOKSIOS - 0x9279: 0xBB70, //HANGUL SYLLABLE MIEUM WE NIEUN - 0x927A: 0xBB71, //HANGUL SYLLABLE MIEUM WE NIEUNCIEUC - 0x9281: 0xBB72, //HANGUL SYLLABLE MIEUM WE NIEUNHIEUH - 0x9282: 0xBB73, //HANGUL SYLLABLE MIEUM WE TIKEUT - 0x9283: 0xBB74, //HANGUL SYLLABLE MIEUM WE RIEUL - 0x9284: 0xBB75, //HANGUL SYLLABLE MIEUM WE RIEULKIYEOK - 0x9285: 0xBB76, //HANGUL SYLLABLE MIEUM WE RIEULMIEUM - 0x9286: 0xBB77, //HANGUL SYLLABLE MIEUM WE RIEULPIEUP - 0x9287: 0xBB78, //HANGUL SYLLABLE MIEUM WE RIEULSIOS - 0x9288: 0xBB79, //HANGUL SYLLABLE MIEUM WE RIEULTHIEUTH - 0x9289: 0xBB7A, //HANGUL SYLLABLE MIEUM WE RIEULPHIEUPH - 0x928A: 0xBB7B, //HANGUL SYLLABLE MIEUM WE RIEULHIEUH - 0x928B: 0xBB7C, //HANGUL SYLLABLE MIEUM WE MIEUM - 0x928C: 0xBB7D, //HANGUL SYLLABLE MIEUM WE PIEUP - 0x928D: 0xBB7E, //HANGUL SYLLABLE MIEUM WE PIEUPSIOS - 0x928E: 0xBB7F, //HANGUL SYLLABLE MIEUM WE SIOS - 0x928F: 0xBB80, //HANGUL SYLLABLE MIEUM WE SSANGSIOS - 0x9290: 0xBB81, //HANGUL SYLLABLE MIEUM WE IEUNG - 0x9291: 0xBB82, //HANGUL SYLLABLE MIEUM WE CIEUC - 0x9292: 0xBB83, //HANGUL SYLLABLE MIEUM WE CHIEUCH - 0x9293: 0xBB84, //HANGUL SYLLABLE MIEUM WE KHIEUKH - 0x9294: 0xBB85, //HANGUL SYLLABLE MIEUM WE THIEUTH - 0x9295: 0xBB86, //HANGUL SYLLABLE MIEUM WE PHIEUPH - 0x9296: 0xBB87, //HANGUL SYLLABLE MIEUM WE HIEUH - 0x9297: 0xBB89, //HANGUL SYLLABLE MIEUM WI KIYEOK - 0x9298: 0xBB8A, //HANGUL SYLLABLE MIEUM WI SSANGKIYEOK - 0x9299: 0xBB8B, //HANGUL SYLLABLE MIEUM WI KIYEOKSIOS - 0x929A: 0xBB8D, //HANGUL SYLLABLE MIEUM WI NIEUNCIEUC - 0x929B: 0xBB8E, //HANGUL SYLLABLE MIEUM WI NIEUNHIEUH - 0x929C: 0xBB8F, //HANGUL SYLLABLE MIEUM WI TIKEUT - 0x929D: 0xBB91, //HANGUL SYLLABLE MIEUM WI RIEULKIYEOK - 0x929E: 0xBB92, //HANGUL SYLLABLE MIEUM WI RIEULMIEUM - 0x929F: 0xBB93, //HANGUL SYLLABLE MIEUM WI RIEULPIEUP - 0x92A0: 0xBB94, //HANGUL SYLLABLE MIEUM WI RIEULSIOS - 0x92A1: 0xBB95, //HANGUL SYLLABLE MIEUM WI RIEULTHIEUTH - 0x92A2: 0xBB96, //HANGUL SYLLABLE MIEUM WI RIEULPHIEUPH - 0x92A3: 0xBB97, //HANGUL SYLLABLE MIEUM WI RIEULHIEUH - 0x92A4: 0xBB98, //HANGUL SYLLABLE MIEUM WI MIEUM - 0x92A5: 0xBB99, //HANGUL SYLLABLE MIEUM WI PIEUP - 0x92A6: 0xBB9A, //HANGUL SYLLABLE MIEUM WI PIEUPSIOS - 0x92A7: 0xBB9B, //HANGUL SYLLABLE MIEUM WI SIOS - 0x92A8: 0xBB9C, //HANGUL SYLLABLE MIEUM WI SSANGSIOS - 0x92A9: 0xBB9D, //HANGUL SYLLABLE MIEUM WI IEUNG - 0x92AA: 0xBB9E, //HANGUL SYLLABLE MIEUM WI CIEUC - 0x92AB: 0xBB9F, //HANGUL SYLLABLE MIEUM WI CHIEUCH - 0x92AC: 0xBBA0, //HANGUL SYLLABLE MIEUM WI KHIEUKH - 0x92AD: 0xBBA1, //HANGUL SYLLABLE MIEUM WI THIEUTH - 0x92AE: 0xBBA2, //HANGUL SYLLABLE MIEUM WI PHIEUPH - 0x92AF: 0xBBA3, //HANGUL SYLLABLE MIEUM WI HIEUH - 0x92B0: 0xBBA5, //HANGUL SYLLABLE MIEUM YU KIYEOK - 0x92B1: 0xBBA6, //HANGUL SYLLABLE MIEUM YU SSANGKIYEOK - 0x92B2: 0xBBA7, //HANGUL SYLLABLE MIEUM YU KIYEOKSIOS - 0x92B3: 0xBBA9, //HANGUL SYLLABLE MIEUM YU NIEUNCIEUC - 0x92B4: 0xBBAA, //HANGUL SYLLABLE MIEUM YU NIEUNHIEUH - 0x92B5: 0xBBAB, //HANGUL SYLLABLE MIEUM YU TIKEUT - 0x92B6: 0xBBAD, //HANGUL SYLLABLE MIEUM YU RIEULKIYEOK - 0x92B7: 0xBBAE, //HANGUL SYLLABLE MIEUM YU RIEULMIEUM - 0x92B8: 0xBBAF, //HANGUL SYLLABLE MIEUM YU RIEULPIEUP - 0x92B9: 0xBBB0, //HANGUL SYLLABLE MIEUM YU RIEULSIOS - 0x92BA: 0xBBB1, //HANGUL SYLLABLE MIEUM YU RIEULTHIEUTH - 0x92BB: 0xBBB2, //HANGUL SYLLABLE MIEUM YU RIEULPHIEUPH - 0x92BC: 0xBBB3, //HANGUL SYLLABLE MIEUM YU RIEULHIEUH - 0x92BD: 0xBBB5, //HANGUL SYLLABLE MIEUM YU PIEUP - 0x92BE: 0xBBB6, //HANGUL SYLLABLE MIEUM YU PIEUPSIOS - 0x92BF: 0xBBB8, //HANGUL SYLLABLE MIEUM YU SSANGSIOS - 0x92C0: 0xBBB9, //HANGUL SYLLABLE MIEUM YU IEUNG - 0x92C1: 0xBBBA, //HANGUL SYLLABLE MIEUM YU CIEUC - 0x92C2: 0xBBBB, //HANGUL SYLLABLE MIEUM YU CHIEUCH - 0x92C3: 0xBBBC, //HANGUL SYLLABLE MIEUM YU KHIEUKH - 0x92C4: 0xBBBD, //HANGUL SYLLABLE MIEUM YU THIEUTH - 0x92C5: 0xBBBE, //HANGUL SYLLABLE MIEUM YU PHIEUPH - 0x92C6: 0xBBBF, //HANGUL SYLLABLE MIEUM YU HIEUH - 0x92C7: 0xBBC1, //HANGUL SYLLABLE MIEUM EU KIYEOK - 0x92C8: 0xBBC2, //HANGUL SYLLABLE MIEUM EU SSANGKIYEOK - 0x92C9: 0xBBC3, //HANGUL SYLLABLE MIEUM EU KIYEOKSIOS - 0x92CA: 0xBBC5, //HANGUL SYLLABLE MIEUM EU NIEUNCIEUC - 0x92CB: 0xBBC6, //HANGUL SYLLABLE MIEUM EU NIEUNHIEUH - 0x92CC: 0xBBC7, //HANGUL SYLLABLE MIEUM EU TIKEUT - 0x92CD: 0xBBC9, //HANGUL SYLLABLE MIEUM EU RIEULKIYEOK - 0x92CE: 0xBBCA, //HANGUL SYLLABLE MIEUM EU RIEULMIEUM - 0x92CF: 0xBBCB, //HANGUL SYLLABLE MIEUM EU RIEULPIEUP - 0x92D0: 0xBBCC, //HANGUL SYLLABLE MIEUM EU RIEULSIOS - 0x92D1: 0xBBCD, //HANGUL SYLLABLE MIEUM EU RIEULTHIEUTH - 0x92D2: 0xBBCE, //HANGUL SYLLABLE MIEUM EU RIEULPHIEUPH - 0x92D3: 0xBBCF, //HANGUL SYLLABLE MIEUM EU RIEULHIEUH - 0x92D4: 0xBBD1, //HANGUL SYLLABLE MIEUM EU PIEUP - 0x92D5: 0xBBD2, //HANGUL SYLLABLE MIEUM EU PIEUPSIOS - 0x92D6: 0xBBD4, //HANGUL SYLLABLE MIEUM EU SSANGSIOS - 0x92D7: 0xBBD5, //HANGUL SYLLABLE MIEUM EU IEUNG - 0x92D8: 0xBBD6, //HANGUL SYLLABLE MIEUM EU CIEUC - 0x92D9: 0xBBD7, //HANGUL SYLLABLE MIEUM EU CHIEUCH - 0x92DA: 0xBBD8, //HANGUL SYLLABLE MIEUM EU KHIEUKH - 0x92DB: 0xBBD9, //HANGUL SYLLABLE MIEUM EU THIEUTH - 0x92DC: 0xBBDA, //HANGUL SYLLABLE MIEUM EU PHIEUPH - 0x92DD: 0xBBDB, //HANGUL SYLLABLE MIEUM EU HIEUH - 0x92DE: 0xBBDC, //HANGUL SYLLABLE MIEUM YI - 0x92DF: 0xBBDD, //HANGUL SYLLABLE MIEUM YI KIYEOK - 0x92E0: 0xBBDE, //HANGUL SYLLABLE MIEUM YI SSANGKIYEOK - 0x92E1: 0xBBDF, //HANGUL SYLLABLE MIEUM YI KIYEOKSIOS - 0x92E2: 0xBBE0, //HANGUL SYLLABLE MIEUM YI NIEUN - 0x92E3: 0xBBE1, //HANGUL SYLLABLE MIEUM YI NIEUNCIEUC - 0x92E4: 0xBBE2, //HANGUL SYLLABLE MIEUM YI NIEUNHIEUH - 0x92E5: 0xBBE3, //HANGUL SYLLABLE MIEUM YI TIKEUT - 0x92E6: 0xBBE4, //HANGUL SYLLABLE MIEUM YI RIEUL - 0x92E7: 0xBBE5, //HANGUL SYLLABLE MIEUM YI RIEULKIYEOK - 0x92E8: 0xBBE6, //HANGUL SYLLABLE MIEUM YI RIEULMIEUM - 0x92E9: 0xBBE7, //HANGUL SYLLABLE MIEUM YI RIEULPIEUP - 0x92EA: 0xBBE8, //HANGUL SYLLABLE MIEUM YI RIEULSIOS - 0x92EB: 0xBBE9, //HANGUL SYLLABLE MIEUM YI RIEULTHIEUTH - 0x92EC: 0xBBEA, //HANGUL SYLLABLE MIEUM YI RIEULPHIEUPH - 0x92ED: 0xBBEB, //HANGUL SYLLABLE MIEUM YI RIEULHIEUH - 0x92EE: 0xBBEC, //HANGUL SYLLABLE MIEUM YI MIEUM - 0x92EF: 0xBBED, //HANGUL SYLLABLE MIEUM YI PIEUP - 0x92F0: 0xBBEE, //HANGUL SYLLABLE MIEUM YI PIEUPSIOS - 0x92F1: 0xBBEF, //HANGUL SYLLABLE MIEUM YI SIOS - 0x92F2: 0xBBF0, //HANGUL SYLLABLE MIEUM YI SSANGSIOS - 0x92F3: 0xBBF1, //HANGUL SYLLABLE MIEUM YI IEUNG - 0x92F4: 0xBBF2, //HANGUL SYLLABLE MIEUM YI CIEUC - 0x92F5: 0xBBF3, //HANGUL SYLLABLE MIEUM YI CHIEUCH - 0x92F6: 0xBBF4, //HANGUL SYLLABLE MIEUM YI KHIEUKH - 0x92F7: 0xBBF5, //HANGUL SYLLABLE MIEUM YI THIEUTH - 0x92F8: 0xBBF6, //HANGUL SYLLABLE MIEUM YI PHIEUPH - 0x92F9: 0xBBF7, //HANGUL SYLLABLE MIEUM YI HIEUH - 0x92FA: 0xBBFA, //HANGUL SYLLABLE MIEUM I SSANGKIYEOK - 0x92FB: 0xBBFB, //HANGUL SYLLABLE MIEUM I KIYEOKSIOS - 0x92FC: 0xBBFD, //HANGUL SYLLABLE MIEUM I NIEUNCIEUC - 0x92FD: 0xBBFE, //HANGUL SYLLABLE MIEUM I NIEUNHIEUH - 0x92FE: 0xBC01, //HANGUL SYLLABLE MIEUM I RIEULKIYEOK - 0x9341: 0xBC03, //HANGUL SYLLABLE MIEUM I RIEULPIEUP - 0x9342: 0xBC04, //HANGUL SYLLABLE MIEUM I RIEULSIOS - 0x9343: 0xBC05, //HANGUL SYLLABLE MIEUM I RIEULTHIEUTH - 0x9344: 0xBC06, //HANGUL SYLLABLE MIEUM I RIEULPHIEUPH - 0x9345: 0xBC07, //HANGUL SYLLABLE MIEUM I RIEULHIEUH - 0x9346: 0xBC0A, //HANGUL SYLLABLE MIEUM I PIEUPSIOS - 0x9347: 0xBC0E, //HANGUL SYLLABLE MIEUM I CIEUC - 0x9348: 0xBC10, //HANGUL SYLLABLE MIEUM I KHIEUKH - 0x9349: 0xBC12, //HANGUL SYLLABLE MIEUM I PHIEUPH - 0x934A: 0xBC13, //HANGUL SYLLABLE MIEUM I HIEUH - 0x934B: 0xBC19, //HANGUL SYLLABLE PIEUP A NIEUNCIEUC - 0x934C: 0xBC1A, //HANGUL SYLLABLE PIEUP A NIEUNHIEUH - 0x934D: 0xBC20, //HANGUL SYLLABLE PIEUP A RIEULSIOS - 0x934E: 0xBC21, //HANGUL SYLLABLE PIEUP A RIEULTHIEUTH - 0x934F: 0xBC22, //HANGUL SYLLABLE PIEUP A RIEULPHIEUPH - 0x9350: 0xBC23, //HANGUL SYLLABLE PIEUP A RIEULHIEUH - 0x9351: 0xBC26, //HANGUL SYLLABLE PIEUP A PIEUPSIOS - 0x9352: 0xBC28, //HANGUL SYLLABLE PIEUP A SSANGSIOS - 0x9353: 0xBC2A, //HANGUL SYLLABLE PIEUP A CIEUC - 0x9354: 0xBC2B, //HANGUL SYLLABLE PIEUP A CHIEUCH - 0x9355: 0xBC2C, //HANGUL SYLLABLE PIEUP A KHIEUKH - 0x9356: 0xBC2E, //HANGUL SYLLABLE PIEUP A PHIEUPH - 0x9357: 0xBC2F, //HANGUL SYLLABLE PIEUP A HIEUH - 0x9358: 0xBC32, //HANGUL SYLLABLE PIEUP AE SSANGKIYEOK - 0x9359: 0xBC33, //HANGUL SYLLABLE PIEUP AE KIYEOKSIOS - 0x935A: 0xBC35, //HANGUL SYLLABLE PIEUP AE NIEUNCIEUC - 0x9361: 0xBC36, //HANGUL SYLLABLE PIEUP AE NIEUNHIEUH - 0x9362: 0xBC37, //HANGUL SYLLABLE PIEUP AE TIKEUT - 0x9363: 0xBC39, //HANGUL SYLLABLE PIEUP AE RIEULKIYEOK - 0x9364: 0xBC3A, //HANGUL SYLLABLE PIEUP AE RIEULMIEUM - 0x9365: 0xBC3B, //HANGUL SYLLABLE PIEUP AE RIEULPIEUP - 0x9366: 0xBC3C, //HANGUL SYLLABLE PIEUP AE RIEULSIOS - 0x9367: 0xBC3D, //HANGUL SYLLABLE PIEUP AE RIEULTHIEUTH - 0x9368: 0xBC3E, //HANGUL SYLLABLE PIEUP AE RIEULPHIEUPH - 0x9369: 0xBC3F, //HANGUL SYLLABLE PIEUP AE RIEULHIEUH - 0x936A: 0xBC42, //HANGUL SYLLABLE PIEUP AE PIEUPSIOS - 0x936B: 0xBC46, //HANGUL SYLLABLE PIEUP AE CIEUC - 0x936C: 0xBC47, //HANGUL SYLLABLE PIEUP AE CHIEUCH - 0x936D: 0xBC48, //HANGUL SYLLABLE PIEUP AE KHIEUKH - 0x936E: 0xBC4A, //HANGUL SYLLABLE PIEUP AE PHIEUPH - 0x936F: 0xBC4B, //HANGUL SYLLABLE PIEUP AE HIEUH - 0x9370: 0xBC4E, //HANGUL SYLLABLE PIEUP YA SSANGKIYEOK - 0x9371: 0xBC4F, //HANGUL SYLLABLE PIEUP YA KIYEOKSIOS - 0x9372: 0xBC51, //HANGUL SYLLABLE PIEUP YA NIEUNCIEUC - 0x9373: 0xBC52, //HANGUL SYLLABLE PIEUP YA NIEUNHIEUH - 0x9374: 0xBC53, //HANGUL SYLLABLE PIEUP YA TIKEUT - 0x9375: 0xBC54, //HANGUL SYLLABLE PIEUP YA RIEUL - 0x9376: 0xBC55, //HANGUL SYLLABLE PIEUP YA RIEULKIYEOK - 0x9377: 0xBC56, //HANGUL SYLLABLE PIEUP YA RIEULMIEUM - 0x9378: 0xBC57, //HANGUL SYLLABLE PIEUP YA RIEULPIEUP - 0x9379: 0xBC58, //HANGUL SYLLABLE PIEUP YA RIEULSIOS - 0x937A: 0xBC59, //HANGUL SYLLABLE PIEUP YA RIEULTHIEUTH - 0x9381: 0xBC5A, //HANGUL SYLLABLE PIEUP YA RIEULPHIEUPH - 0x9382: 0xBC5B, //HANGUL SYLLABLE PIEUP YA RIEULHIEUH - 0x9383: 0xBC5C, //HANGUL SYLLABLE PIEUP YA MIEUM - 0x9384: 0xBC5E, //HANGUL SYLLABLE PIEUP YA PIEUPSIOS - 0x9385: 0xBC5F, //HANGUL SYLLABLE PIEUP YA SIOS - 0x9386: 0xBC60, //HANGUL SYLLABLE PIEUP YA SSANGSIOS - 0x9387: 0xBC61, //HANGUL SYLLABLE PIEUP YA IEUNG - 0x9388: 0xBC62, //HANGUL SYLLABLE PIEUP YA CIEUC - 0x9389: 0xBC63, //HANGUL SYLLABLE PIEUP YA CHIEUCH - 0x938A: 0xBC64, //HANGUL SYLLABLE PIEUP YA KHIEUKH - 0x938B: 0xBC65, //HANGUL SYLLABLE PIEUP YA THIEUTH - 0x938C: 0xBC66, //HANGUL SYLLABLE PIEUP YA PHIEUPH - 0x938D: 0xBC67, //HANGUL SYLLABLE PIEUP YA HIEUH - 0x938E: 0xBC68, //HANGUL SYLLABLE PIEUP YAE - 0x938F: 0xBC69, //HANGUL SYLLABLE PIEUP YAE KIYEOK - 0x9390: 0xBC6A, //HANGUL SYLLABLE PIEUP YAE SSANGKIYEOK - 0x9391: 0xBC6B, //HANGUL SYLLABLE PIEUP YAE KIYEOKSIOS - 0x9392: 0xBC6C, //HANGUL SYLLABLE PIEUP YAE NIEUN - 0x9393: 0xBC6D, //HANGUL SYLLABLE PIEUP YAE NIEUNCIEUC - 0x9394: 0xBC6E, //HANGUL SYLLABLE PIEUP YAE NIEUNHIEUH - 0x9395: 0xBC6F, //HANGUL SYLLABLE PIEUP YAE TIKEUT - 0x9396: 0xBC70, //HANGUL SYLLABLE PIEUP YAE RIEUL - 0x9397: 0xBC71, //HANGUL SYLLABLE PIEUP YAE RIEULKIYEOK - 0x9398: 0xBC72, //HANGUL SYLLABLE PIEUP YAE RIEULMIEUM - 0x9399: 0xBC73, //HANGUL SYLLABLE PIEUP YAE RIEULPIEUP - 0x939A: 0xBC74, //HANGUL SYLLABLE PIEUP YAE RIEULSIOS - 0x939B: 0xBC75, //HANGUL SYLLABLE PIEUP YAE RIEULTHIEUTH - 0x939C: 0xBC76, //HANGUL SYLLABLE PIEUP YAE RIEULPHIEUPH - 0x939D: 0xBC77, //HANGUL SYLLABLE PIEUP YAE RIEULHIEUH - 0x939E: 0xBC78, //HANGUL SYLLABLE PIEUP YAE MIEUM - 0x939F: 0xBC79, //HANGUL SYLLABLE PIEUP YAE PIEUP - 0x93A0: 0xBC7A, //HANGUL SYLLABLE PIEUP YAE PIEUPSIOS - 0x93A1: 0xBC7B, //HANGUL SYLLABLE PIEUP YAE SIOS - 0x93A2: 0xBC7C, //HANGUL SYLLABLE PIEUP YAE SSANGSIOS - 0x93A3: 0xBC7D, //HANGUL SYLLABLE PIEUP YAE IEUNG - 0x93A4: 0xBC7E, //HANGUL SYLLABLE PIEUP YAE CIEUC - 0x93A5: 0xBC7F, //HANGUL SYLLABLE PIEUP YAE CHIEUCH - 0x93A6: 0xBC80, //HANGUL SYLLABLE PIEUP YAE KHIEUKH - 0x93A7: 0xBC81, //HANGUL SYLLABLE PIEUP YAE THIEUTH - 0x93A8: 0xBC82, //HANGUL SYLLABLE PIEUP YAE PHIEUPH - 0x93A9: 0xBC83, //HANGUL SYLLABLE PIEUP YAE HIEUH - 0x93AA: 0xBC86, //HANGUL SYLLABLE PIEUP EO SSANGKIYEOK - 0x93AB: 0xBC87, //HANGUL SYLLABLE PIEUP EO KIYEOKSIOS - 0x93AC: 0xBC89, //HANGUL SYLLABLE PIEUP EO NIEUNCIEUC - 0x93AD: 0xBC8A, //HANGUL SYLLABLE PIEUP EO NIEUNHIEUH - 0x93AE: 0xBC8D, //HANGUL SYLLABLE PIEUP EO RIEULKIYEOK - 0x93AF: 0xBC8F, //HANGUL SYLLABLE PIEUP EO RIEULPIEUP - 0x93B0: 0xBC90, //HANGUL SYLLABLE PIEUP EO RIEULSIOS - 0x93B1: 0xBC91, //HANGUL SYLLABLE PIEUP EO RIEULTHIEUTH - 0x93B2: 0xBC92, //HANGUL SYLLABLE PIEUP EO RIEULPHIEUPH - 0x93B3: 0xBC93, //HANGUL SYLLABLE PIEUP EO RIEULHIEUH - 0x93B4: 0xBC96, //HANGUL SYLLABLE PIEUP EO PIEUPSIOS - 0x93B5: 0xBC98, //HANGUL SYLLABLE PIEUP EO SSANGSIOS - 0x93B6: 0xBC9B, //HANGUL SYLLABLE PIEUP EO CHIEUCH - 0x93B7: 0xBC9C, //HANGUL SYLLABLE PIEUP EO KHIEUKH - 0x93B8: 0xBC9D, //HANGUL SYLLABLE PIEUP EO THIEUTH - 0x93B9: 0xBC9E, //HANGUL SYLLABLE PIEUP EO PHIEUPH - 0x93BA: 0xBC9F, //HANGUL SYLLABLE PIEUP EO HIEUH - 0x93BB: 0xBCA2, //HANGUL SYLLABLE PIEUP E SSANGKIYEOK - 0x93BC: 0xBCA3, //HANGUL SYLLABLE PIEUP E KIYEOKSIOS - 0x93BD: 0xBCA5, //HANGUL SYLLABLE PIEUP E NIEUNCIEUC - 0x93BE: 0xBCA6, //HANGUL SYLLABLE PIEUP E NIEUNHIEUH - 0x93BF: 0xBCA9, //HANGUL SYLLABLE PIEUP E RIEULKIYEOK - 0x93C0: 0xBCAA, //HANGUL SYLLABLE PIEUP E RIEULMIEUM - 0x93C1: 0xBCAB, //HANGUL SYLLABLE PIEUP E RIEULPIEUP - 0x93C2: 0xBCAC, //HANGUL SYLLABLE PIEUP E RIEULSIOS - 0x93C3: 0xBCAD, //HANGUL SYLLABLE PIEUP E RIEULTHIEUTH - 0x93C4: 0xBCAE, //HANGUL SYLLABLE PIEUP E RIEULPHIEUPH - 0x93C5: 0xBCAF, //HANGUL SYLLABLE PIEUP E RIEULHIEUH - 0x93C6: 0xBCB2, //HANGUL SYLLABLE PIEUP E PIEUPSIOS - 0x93C7: 0xBCB6, //HANGUL SYLLABLE PIEUP E CIEUC - 0x93C8: 0xBCB7, //HANGUL SYLLABLE PIEUP E CHIEUCH - 0x93C9: 0xBCB8, //HANGUL SYLLABLE PIEUP E KHIEUKH - 0x93CA: 0xBCB9, //HANGUL SYLLABLE PIEUP E THIEUTH - 0x93CB: 0xBCBA, //HANGUL SYLLABLE PIEUP E PHIEUPH - 0x93CC: 0xBCBB, //HANGUL SYLLABLE PIEUP E HIEUH - 0x93CD: 0xBCBE, //HANGUL SYLLABLE PIEUP YEO SSANGKIYEOK - 0x93CE: 0xBCBF, //HANGUL SYLLABLE PIEUP YEO KIYEOKSIOS - 0x93CF: 0xBCC1, //HANGUL SYLLABLE PIEUP YEO NIEUNCIEUC - 0x93D0: 0xBCC2, //HANGUL SYLLABLE PIEUP YEO NIEUNHIEUH - 0x93D1: 0xBCC3, //HANGUL SYLLABLE PIEUP YEO TIKEUT - 0x93D2: 0xBCC5, //HANGUL SYLLABLE PIEUP YEO RIEULKIYEOK - 0x93D3: 0xBCC6, //HANGUL SYLLABLE PIEUP YEO RIEULMIEUM - 0x93D4: 0xBCC7, //HANGUL SYLLABLE PIEUP YEO RIEULPIEUP - 0x93D5: 0xBCC8, //HANGUL SYLLABLE PIEUP YEO RIEULSIOS - 0x93D6: 0xBCC9, //HANGUL SYLLABLE PIEUP YEO RIEULTHIEUTH - 0x93D7: 0xBCCA, //HANGUL SYLLABLE PIEUP YEO RIEULPHIEUPH - 0x93D8: 0xBCCB, //HANGUL SYLLABLE PIEUP YEO RIEULHIEUH - 0x93D9: 0xBCCC, //HANGUL SYLLABLE PIEUP YEO MIEUM - 0x93DA: 0xBCCE, //HANGUL SYLLABLE PIEUP YEO PIEUPSIOS - 0x93DB: 0xBCD2, //HANGUL SYLLABLE PIEUP YEO CIEUC - 0x93DC: 0xBCD3, //HANGUL SYLLABLE PIEUP YEO CHIEUCH - 0x93DD: 0xBCD4, //HANGUL SYLLABLE PIEUP YEO KHIEUKH - 0x93DE: 0xBCD6, //HANGUL SYLLABLE PIEUP YEO PHIEUPH - 0x93DF: 0xBCD7, //HANGUL SYLLABLE PIEUP YEO HIEUH - 0x93E0: 0xBCD9, //HANGUL SYLLABLE PIEUP YE KIYEOK - 0x93E1: 0xBCDA, //HANGUL SYLLABLE PIEUP YE SSANGKIYEOK - 0x93E2: 0xBCDB, //HANGUL SYLLABLE PIEUP YE KIYEOKSIOS - 0x93E3: 0xBCDD, //HANGUL SYLLABLE PIEUP YE NIEUNCIEUC - 0x93E4: 0xBCDE, //HANGUL SYLLABLE PIEUP YE NIEUNHIEUH - 0x93E5: 0xBCDF, //HANGUL SYLLABLE PIEUP YE TIKEUT - 0x93E6: 0xBCE0, //HANGUL SYLLABLE PIEUP YE RIEUL - 0x93E7: 0xBCE1, //HANGUL SYLLABLE PIEUP YE RIEULKIYEOK - 0x93E8: 0xBCE2, //HANGUL SYLLABLE PIEUP YE RIEULMIEUM - 0x93E9: 0xBCE3, //HANGUL SYLLABLE PIEUP YE RIEULPIEUP - 0x93EA: 0xBCE4, //HANGUL SYLLABLE PIEUP YE RIEULSIOS - 0x93EB: 0xBCE5, //HANGUL SYLLABLE PIEUP YE RIEULTHIEUTH - 0x93EC: 0xBCE6, //HANGUL SYLLABLE PIEUP YE RIEULPHIEUPH - 0x93ED: 0xBCE7, //HANGUL SYLLABLE PIEUP YE RIEULHIEUH - 0x93EE: 0xBCE8, //HANGUL SYLLABLE PIEUP YE MIEUM - 0x93EF: 0xBCE9, //HANGUL SYLLABLE PIEUP YE PIEUP - 0x93F0: 0xBCEA, //HANGUL SYLLABLE PIEUP YE PIEUPSIOS - 0x93F1: 0xBCEB, //HANGUL SYLLABLE PIEUP YE SIOS - 0x93F2: 0xBCEC, //HANGUL SYLLABLE PIEUP YE SSANGSIOS - 0x93F3: 0xBCED, //HANGUL SYLLABLE PIEUP YE IEUNG - 0x93F4: 0xBCEE, //HANGUL SYLLABLE PIEUP YE CIEUC - 0x93F5: 0xBCEF, //HANGUL SYLLABLE PIEUP YE CHIEUCH - 0x93F6: 0xBCF0, //HANGUL SYLLABLE PIEUP YE KHIEUKH - 0x93F7: 0xBCF1, //HANGUL SYLLABLE PIEUP YE THIEUTH - 0x93F8: 0xBCF2, //HANGUL SYLLABLE PIEUP YE PHIEUPH - 0x93F9: 0xBCF3, //HANGUL SYLLABLE PIEUP YE HIEUH - 0x93FA: 0xBCF7, //HANGUL SYLLABLE PIEUP O KIYEOKSIOS - 0x93FB: 0xBCF9, //HANGUL SYLLABLE PIEUP O NIEUNCIEUC - 0x93FC: 0xBCFA, //HANGUL SYLLABLE PIEUP O NIEUNHIEUH - 0x93FD: 0xBCFB, //HANGUL SYLLABLE PIEUP O TIKEUT - 0x93FE: 0xBCFD, //HANGUL SYLLABLE PIEUP O RIEULKIYEOK - 0x9441: 0xBCFE, //HANGUL SYLLABLE PIEUP O RIEULMIEUM - 0x9442: 0xBCFF, //HANGUL SYLLABLE PIEUP O RIEULPIEUP - 0x9443: 0xBD00, //HANGUL SYLLABLE PIEUP O RIEULSIOS - 0x9444: 0xBD01, //HANGUL SYLLABLE PIEUP O RIEULTHIEUTH - 0x9445: 0xBD02, //HANGUL SYLLABLE PIEUP O RIEULPHIEUPH - 0x9446: 0xBD03, //HANGUL SYLLABLE PIEUP O RIEULHIEUH - 0x9447: 0xBD06, //HANGUL SYLLABLE PIEUP O PIEUPSIOS - 0x9448: 0xBD08, //HANGUL SYLLABLE PIEUP O SSANGSIOS - 0x9449: 0xBD0A, //HANGUL SYLLABLE PIEUP O CIEUC - 0x944A: 0xBD0B, //HANGUL SYLLABLE PIEUP O CHIEUCH - 0x944B: 0xBD0C, //HANGUL SYLLABLE PIEUP O KHIEUKH - 0x944C: 0xBD0D, //HANGUL SYLLABLE PIEUP O THIEUTH - 0x944D: 0xBD0E, //HANGUL SYLLABLE PIEUP O PHIEUPH - 0x944E: 0xBD0F, //HANGUL SYLLABLE PIEUP O HIEUH - 0x944F: 0xBD11, //HANGUL SYLLABLE PIEUP WA KIYEOK - 0x9450: 0xBD12, //HANGUL SYLLABLE PIEUP WA SSANGKIYEOK - 0x9451: 0xBD13, //HANGUL SYLLABLE PIEUP WA KIYEOKSIOS - 0x9452: 0xBD15, //HANGUL SYLLABLE PIEUP WA NIEUNCIEUC - 0x9453: 0xBD16, //HANGUL SYLLABLE PIEUP WA NIEUNHIEUH - 0x9454: 0xBD17, //HANGUL SYLLABLE PIEUP WA TIKEUT - 0x9455: 0xBD18, //HANGUL SYLLABLE PIEUP WA RIEUL - 0x9456: 0xBD19, //HANGUL SYLLABLE PIEUP WA RIEULKIYEOK - 0x9457: 0xBD1A, //HANGUL SYLLABLE PIEUP WA RIEULMIEUM - 0x9458: 0xBD1B, //HANGUL SYLLABLE PIEUP WA RIEULPIEUP - 0x9459: 0xBD1C, //HANGUL SYLLABLE PIEUP WA RIEULSIOS - 0x945A: 0xBD1D, //HANGUL SYLLABLE PIEUP WA RIEULTHIEUTH - 0x9461: 0xBD1E, //HANGUL SYLLABLE PIEUP WA RIEULPHIEUPH - 0x9462: 0xBD1F, //HANGUL SYLLABLE PIEUP WA RIEULHIEUH - 0x9463: 0xBD20, //HANGUL SYLLABLE PIEUP WA MIEUM - 0x9464: 0xBD21, //HANGUL SYLLABLE PIEUP WA PIEUP - 0x9465: 0xBD22, //HANGUL SYLLABLE PIEUP WA PIEUPSIOS - 0x9466: 0xBD23, //HANGUL SYLLABLE PIEUP WA SIOS - 0x9467: 0xBD25, //HANGUL SYLLABLE PIEUP WA IEUNG - 0x9468: 0xBD26, //HANGUL SYLLABLE PIEUP WA CIEUC - 0x9469: 0xBD27, //HANGUL SYLLABLE PIEUP WA CHIEUCH - 0x946A: 0xBD28, //HANGUL SYLLABLE PIEUP WA KHIEUKH - 0x946B: 0xBD29, //HANGUL SYLLABLE PIEUP WA THIEUTH - 0x946C: 0xBD2A, //HANGUL SYLLABLE PIEUP WA PHIEUPH - 0x946D: 0xBD2B, //HANGUL SYLLABLE PIEUP WA HIEUH - 0x946E: 0xBD2D, //HANGUL SYLLABLE PIEUP WAE KIYEOK - 0x946F: 0xBD2E, //HANGUL SYLLABLE PIEUP WAE SSANGKIYEOK - 0x9470: 0xBD2F, //HANGUL SYLLABLE PIEUP WAE KIYEOKSIOS - 0x9471: 0xBD30, //HANGUL SYLLABLE PIEUP WAE NIEUN - 0x9472: 0xBD31, //HANGUL SYLLABLE PIEUP WAE NIEUNCIEUC - 0x9473: 0xBD32, //HANGUL SYLLABLE PIEUP WAE NIEUNHIEUH - 0x9474: 0xBD33, //HANGUL SYLLABLE PIEUP WAE TIKEUT - 0x9475: 0xBD34, //HANGUL SYLLABLE PIEUP WAE RIEUL - 0x9476: 0xBD35, //HANGUL SYLLABLE PIEUP WAE RIEULKIYEOK - 0x9477: 0xBD36, //HANGUL SYLLABLE PIEUP WAE RIEULMIEUM - 0x9478: 0xBD37, //HANGUL SYLLABLE PIEUP WAE RIEULPIEUP - 0x9479: 0xBD38, //HANGUL SYLLABLE PIEUP WAE RIEULSIOS - 0x947A: 0xBD39, //HANGUL SYLLABLE PIEUP WAE RIEULTHIEUTH - 0x9481: 0xBD3A, //HANGUL SYLLABLE PIEUP WAE RIEULPHIEUPH - 0x9482: 0xBD3B, //HANGUL SYLLABLE PIEUP WAE RIEULHIEUH - 0x9483: 0xBD3C, //HANGUL SYLLABLE PIEUP WAE MIEUM - 0x9484: 0xBD3D, //HANGUL SYLLABLE PIEUP WAE PIEUP - 0x9485: 0xBD3E, //HANGUL SYLLABLE PIEUP WAE PIEUPSIOS - 0x9486: 0xBD3F, //HANGUL SYLLABLE PIEUP WAE SIOS - 0x9487: 0xBD41, //HANGUL SYLLABLE PIEUP WAE IEUNG - 0x9488: 0xBD42, //HANGUL SYLLABLE PIEUP WAE CIEUC - 0x9489: 0xBD43, //HANGUL SYLLABLE PIEUP WAE CHIEUCH - 0x948A: 0xBD44, //HANGUL SYLLABLE PIEUP WAE KHIEUKH - 0x948B: 0xBD45, //HANGUL SYLLABLE PIEUP WAE THIEUTH - 0x948C: 0xBD46, //HANGUL SYLLABLE PIEUP WAE PHIEUPH - 0x948D: 0xBD47, //HANGUL SYLLABLE PIEUP WAE HIEUH - 0x948E: 0xBD4A, //HANGUL SYLLABLE PIEUP OE SSANGKIYEOK - 0x948F: 0xBD4B, //HANGUL SYLLABLE PIEUP OE KIYEOKSIOS - 0x9490: 0xBD4D, //HANGUL SYLLABLE PIEUP OE NIEUNCIEUC - 0x9491: 0xBD4E, //HANGUL SYLLABLE PIEUP OE NIEUNHIEUH - 0x9492: 0xBD4F, //HANGUL SYLLABLE PIEUP OE TIKEUT - 0x9493: 0xBD51, //HANGUL SYLLABLE PIEUP OE RIEULKIYEOK - 0x9494: 0xBD52, //HANGUL SYLLABLE PIEUP OE RIEULMIEUM - 0x9495: 0xBD53, //HANGUL SYLLABLE PIEUP OE RIEULPIEUP - 0x9496: 0xBD54, //HANGUL SYLLABLE PIEUP OE RIEULSIOS - 0x9497: 0xBD55, //HANGUL SYLLABLE PIEUP OE RIEULTHIEUTH - 0x9498: 0xBD56, //HANGUL SYLLABLE PIEUP OE RIEULPHIEUPH - 0x9499: 0xBD57, //HANGUL SYLLABLE PIEUP OE RIEULHIEUH - 0x949A: 0xBD5A, //HANGUL SYLLABLE PIEUP OE PIEUPSIOS - 0x949B: 0xBD5B, //HANGUL SYLLABLE PIEUP OE SIOS - 0x949C: 0xBD5C, //HANGUL SYLLABLE PIEUP OE SSANGSIOS - 0x949D: 0xBD5D, //HANGUL SYLLABLE PIEUP OE IEUNG - 0x949E: 0xBD5E, //HANGUL SYLLABLE PIEUP OE CIEUC - 0x949F: 0xBD5F, //HANGUL SYLLABLE PIEUP OE CHIEUCH - 0x94A0: 0xBD60, //HANGUL SYLLABLE PIEUP OE KHIEUKH - 0x94A1: 0xBD61, //HANGUL SYLLABLE PIEUP OE THIEUTH - 0x94A2: 0xBD62, //HANGUL SYLLABLE PIEUP OE PHIEUPH - 0x94A3: 0xBD63, //HANGUL SYLLABLE PIEUP OE HIEUH - 0x94A4: 0xBD65, //HANGUL SYLLABLE PIEUP YO KIYEOK - 0x94A5: 0xBD66, //HANGUL SYLLABLE PIEUP YO SSANGKIYEOK - 0x94A6: 0xBD67, //HANGUL SYLLABLE PIEUP YO KIYEOKSIOS - 0x94A7: 0xBD69, //HANGUL SYLLABLE PIEUP YO NIEUNCIEUC - 0x94A8: 0xBD6A, //HANGUL SYLLABLE PIEUP YO NIEUNHIEUH - 0x94A9: 0xBD6B, //HANGUL SYLLABLE PIEUP YO TIKEUT - 0x94AA: 0xBD6C, //HANGUL SYLLABLE PIEUP YO RIEUL - 0x94AB: 0xBD6D, //HANGUL SYLLABLE PIEUP YO RIEULKIYEOK - 0x94AC: 0xBD6E, //HANGUL SYLLABLE PIEUP YO RIEULMIEUM - 0x94AD: 0xBD6F, //HANGUL SYLLABLE PIEUP YO RIEULPIEUP - 0x94AE: 0xBD70, //HANGUL SYLLABLE PIEUP YO RIEULSIOS - 0x94AF: 0xBD71, //HANGUL SYLLABLE PIEUP YO RIEULTHIEUTH - 0x94B0: 0xBD72, //HANGUL SYLLABLE PIEUP YO RIEULPHIEUPH - 0x94B1: 0xBD73, //HANGUL SYLLABLE PIEUP YO RIEULHIEUH - 0x94B2: 0xBD74, //HANGUL SYLLABLE PIEUP YO MIEUM - 0x94B3: 0xBD75, //HANGUL SYLLABLE PIEUP YO PIEUP - 0x94B4: 0xBD76, //HANGUL SYLLABLE PIEUP YO PIEUPSIOS - 0x94B5: 0xBD77, //HANGUL SYLLABLE PIEUP YO SIOS - 0x94B6: 0xBD78, //HANGUL SYLLABLE PIEUP YO SSANGSIOS - 0x94B7: 0xBD79, //HANGUL SYLLABLE PIEUP YO IEUNG - 0x94B8: 0xBD7A, //HANGUL SYLLABLE PIEUP YO CIEUC - 0x94B9: 0xBD7B, //HANGUL SYLLABLE PIEUP YO CHIEUCH - 0x94BA: 0xBD7C, //HANGUL SYLLABLE PIEUP YO KHIEUKH - 0x94BB: 0xBD7D, //HANGUL SYLLABLE PIEUP YO THIEUTH - 0x94BC: 0xBD7E, //HANGUL SYLLABLE PIEUP YO PHIEUPH - 0x94BD: 0xBD7F, //HANGUL SYLLABLE PIEUP YO HIEUH - 0x94BE: 0xBD82, //HANGUL SYLLABLE PIEUP U SSANGKIYEOK - 0x94BF: 0xBD83, //HANGUL SYLLABLE PIEUP U KIYEOKSIOS - 0x94C0: 0xBD85, //HANGUL SYLLABLE PIEUP U NIEUNCIEUC - 0x94C1: 0xBD86, //HANGUL SYLLABLE PIEUP U NIEUNHIEUH - 0x94C2: 0xBD8B, //HANGUL SYLLABLE PIEUP U RIEULPIEUP - 0x94C3: 0xBD8C, //HANGUL SYLLABLE PIEUP U RIEULSIOS - 0x94C4: 0xBD8D, //HANGUL SYLLABLE PIEUP U RIEULTHIEUTH - 0x94C5: 0xBD8E, //HANGUL SYLLABLE PIEUP U RIEULPHIEUPH - 0x94C6: 0xBD8F, //HANGUL SYLLABLE PIEUP U RIEULHIEUH - 0x94C7: 0xBD92, //HANGUL SYLLABLE PIEUP U PIEUPSIOS - 0x94C8: 0xBD94, //HANGUL SYLLABLE PIEUP U SSANGSIOS - 0x94C9: 0xBD96, //HANGUL SYLLABLE PIEUP U CIEUC - 0x94CA: 0xBD97, //HANGUL SYLLABLE PIEUP U CHIEUCH - 0x94CB: 0xBD98, //HANGUL SYLLABLE PIEUP U KHIEUKH - 0x94CC: 0xBD9B, //HANGUL SYLLABLE PIEUP U HIEUH - 0x94CD: 0xBD9D, //HANGUL SYLLABLE PIEUP WEO KIYEOK - 0x94CE: 0xBD9E, //HANGUL SYLLABLE PIEUP WEO SSANGKIYEOK - 0x94CF: 0xBD9F, //HANGUL SYLLABLE PIEUP WEO KIYEOKSIOS - 0x94D0: 0xBDA0, //HANGUL SYLLABLE PIEUP WEO NIEUN - 0x94D1: 0xBDA1, //HANGUL SYLLABLE PIEUP WEO NIEUNCIEUC - 0x94D2: 0xBDA2, //HANGUL SYLLABLE PIEUP WEO NIEUNHIEUH - 0x94D3: 0xBDA3, //HANGUL SYLLABLE PIEUP WEO TIKEUT - 0x94D4: 0xBDA5, //HANGUL SYLLABLE PIEUP WEO RIEULKIYEOK - 0x94D5: 0xBDA6, //HANGUL SYLLABLE PIEUP WEO RIEULMIEUM - 0x94D6: 0xBDA7, //HANGUL SYLLABLE PIEUP WEO RIEULPIEUP - 0x94D7: 0xBDA8, //HANGUL SYLLABLE PIEUP WEO RIEULSIOS - 0x94D8: 0xBDA9, //HANGUL SYLLABLE PIEUP WEO RIEULTHIEUTH - 0x94D9: 0xBDAA, //HANGUL SYLLABLE PIEUP WEO RIEULPHIEUPH - 0x94DA: 0xBDAB, //HANGUL SYLLABLE PIEUP WEO RIEULHIEUH - 0x94DB: 0xBDAC, //HANGUL SYLLABLE PIEUP WEO MIEUM - 0x94DC: 0xBDAD, //HANGUL SYLLABLE PIEUP WEO PIEUP - 0x94DD: 0xBDAE, //HANGUL SYLLABLE PIEUP WEO PIEUPSIOS - 0x94DE: 0xBDAF, //HANGUL SYLLABLE PIEUP WEO SIOS - 0x94DF: 0xBDB1, //HANGUL SYLLABLE PIEUP WEO IEUNG - 0x94E0: 0xBDB2, //HANGUL SYLLABLE PIEUP WEO CIEUC - 0x94E1: 0xBDB3, //HANGUL SYLLABLE PIEUP WEO CHIEUCH - 0x94E2: 0xBDB4, //HANGUL SYLLABLE PIEUP WEO KHIEUKH - 0x94E3: 0xBDB5, //HANGUL SYLLABLE PIEUP WEO THIEUTH - 0x94E4: 0xBDB6, //HANGUL SYLLABLE PIEUP WEO PHIEUPH - 0x94E5: 0xBDB7, //HANGUL SYLLABLE PIEUP WEO HIEUH - 0x94E6: 0xBDB9, //HANGUL SYLLABLE PIEUP WE KIYEOK - 0x94E7: 0xBDBA, //HANGUL SYLLABLE PIEUP WE SSANGKIYEOK - 0x94E8: 0xBDBB, //HANGUL SYLLABLE PIEUP WE KIYEOKSIOS - 0x94E9: 0xBDBC, //HANGUL SYLLABLE PIEUP WE NIEUN - 0x94EA: 0xBDBD, //HANGUL SYLLABLE PIEUP WE NIEUNCIEUC - 0x94EB: 0xBDBE, //HANGUL SYLLABLE PIEUP WE NIEUNHIEUH - 0x94EC: 0xBDBF, //HANGUL SYLLABLE PIEUP WE TIKEUT - 0x94ED: 0xBDC0, //HANGUL SYLLABLE PIEUP WE RIEUL - 0x94EE: 0xBDC1, //HANGUL SYLLABLE PIEUP WE RIEULKIYEOK - 0x94EF: 0xBDC2, //HANGUL SYLLABLE PIEUP WE RIEULMIEUM - 0x94F0: 0xBDC3, //HANGUL SYLLABLE PIEUP WE RIEULPIEUP - 0x94F1: 0xBDC4, //HANGUL SYLLABLE PIEUP WE RIEULSIOS - 0x94F2: 0xBDC5, //HANGUL SYLLABLE PIEUP WE RIEULTHIEUTH - 0x94F3: 0xBDC6, //HANGUL SYLLABLE PIEUP WE RIEULPHIEUPH - 0x94F4: 0xBDC7, //HANGUL SYLLABLE PIEUP WE RIEULHIEUH - 0x94F5: 0xBDC8, //HANGUL SYLLABLE PIEUP WE MIEUM - 0x94F6: 0xBDC9, //HANGUL SYLLABLE PIEUP WE PIEUP - 0x94F7: 0xBDCA, //HANGUL SYLLABLE PIEUP WE PIEUPSIOS - 0x94F8: 0xBDCB, //HANGUL SYLLABLE PIEUP WE SIOS - 0x94F9: 0xBDCC, //HANGUL SYLLABLE PIEUP WE SSANGSIOS - 0x94FA: 0xBDCD, //HANGUL SYLLABLE PIEUP WE IEUNG - 0x94FB: 0xBDCE, //HANGUL SYLLABLE PIEUP WE CIEUC - 0x94FC: 0xBDCF, //HANGUL SYLLABLE PIEUP WE CHIEUCH - 0x94FD: 0xBDD0, //HANGUL SYLLABLE PIEUP WE KHIEUKH - 0x94FE: 0xBDD1, //HANGUL SYLLABLE PIEUP WE THIEUTH - 0x9541: 0xBDD2, //HANGUL SYLLABLE PIEUP WE PHIEUPH - 0x9542: 0xBDD3, //HANGUL SYLLABLE PIEUP WE HIEUH - 0x9543: 0xBDD6, //HANGUL SYLLABLE PIEUP WI SSANGKIYEOK - 0x9544: 0xBDD7, //HANGUL SYLLABLE PIEUP WI KIYEOKSIOS - 0x9545: 0xBDD9, //HANGUL SYLLABLE PIEUP WI NIEUNCIEUC - 0x9546: 0xBDDA, //HANGUL SYLLABLE PIEUP WI NIEUNHIEUH - 0x9547: 0xBDDB, //HANGUL SYLLABLE PIEUP WI TIKEUT - 0x9548: 0xBDDD, //HANGUL SYLLABLE PIEUP WI RIEULKIYEOK - 0x9549: 0xBDDE, //HANGUL SYLLABLE PIEUP WI RIEULMIEUM - 0x954A: 0xBDDF, //HANGUL SYLLABLE PIEUP WI RIEULPIEUP - 0x954B: 0xBDE0, //HANGUL SYLLABLE PIEUP WI RIEULSIOS - 0x954C: 0xBDE1, //HANGUL SYLLABLE PIEUP WI RIEULTHIEUTH - 0x954D: 0xBDE2, //HANGUL SYLLABLE PIEUP WI RIEULPHIEUPH - 0x954E: 0xBDE3, //HANGUL SYLLABLE PIEUP WI RIEULHIEUH - 0x954F: 0xBDE4, //HANGUL SYLLABLE PIEUP WI MIEUM - 0x9550: 0xBDE5, //HANGUL SYLLABLE PIEUP WI PIEUP - 0x9551: 0xBDE6, //HANGUL SYLLABLE PIEUP WI PIEUPSIOS - 0x9552: 0xBDE7, //HANGUL SYLLABLE PIEUP WI SIOS - 0x9553: 0xBDE8, //HANGUL SYLLABLE PIEUP WI SSANGSIOS - 0x9554: 0xBDEA, //HANGUL SYLLABLE PIEUP WI CIEUC - 0x9555: 0xBDEB, //HANGUL SYLLABLE PIEUP WI CHIEUCH - 0x9556: 0xBDEC, //HANGUL SYLLABLE PIEUP WI KHIEUKH - 0x9557: 0xBDED, //HANGUL SYLLABLE PIEUP WI THIEUTH - 0x9558: 0xBDEE, //HANGUL SYLLABLE PIEUP WI PHIEUPH - 0x9559: 0xBDEF, //HANGUL SYLLABLE PIEUP WI HIEUH - 0x955A: 0xBDF1, //HANGUL SYLLABLE PIEUP YU KIYEOK - 0x9561: 0xBDF2, //HANGUL SYLLABLE PIEUP YU SSANGKIYEOK - 0x9562: 0xBDF3, //HANGUL SYLLABLE PIEUP YU KIYEOKSIOS - 0x9563: 0xBDF5, //HANGUL SYLLABLE PIEUP YU NIEUNCIEUC - 0x9564: 0xBDF6, //HANGUL SYLLABLE PIEUP YU NIEUNHIEUH - 0x9565: 0xBDF7, //HANGUL SYLLABLE PIEUP YU TIKEUT - 0x9566: 0xBDF9, //HANGUL SYLLABLE PIEUP YU RIEULKIYEOK - 0x9567: 0xBDFA, //HANGUL SYLLABLE PIEUP YU RIEULMIEUM - 0x9568: 0xBDFB, //HANGUL SYLLABLE PIEUP YU RIEULPIEUP - 0x9569: 0xBDFC, //HANGUL SYLLABLE PIEUP YU RIEULSIOS - 0x956A: 0xBDFD, //HANGUL SYLLABLE PIEUP YU RIEULTHIEUTH - 0x956B: 0xBDFE, //HANGUL SYLLABLE PIEUP YU RIEULPHIEUPH - 0x956C: 0xBDFF, //HANGUL SYLLABLE PIEUP YU RIEULHIEUH - 0x956D: 0xBE01, //HANGUL SYLLABLE PIEUP YU PIEUP - 0x956E: 0xBE02, //HANGUL SYLLABLE PIEUP YU PIEUPSIOS - 0x956F: 0xBE04, //HANGUL SYLLABLE PIEUP YU SSANGSIOS - 0x9570: 0xBE06, //HANGUL SYLLABLE PIEUP YU CIEUC - 0x9571: 0xBE07, //HANGUL SYLLABLE PIEUP YU CHIEUCH - 0x9572: 0xBE08, //HANGUL SYLLABLE PIEUP YU KHIEUKH - 0x9573: 0xBE09, //HANGUL SYLLABLE PIEUP YU THIEUTH - 0x9574: 0xBE0A, //HANGUL SYLLABLE PIEUP YU PHIEUPH - 0x9575: 0xBE0B, //HANGUL SYLLABLE PIEUP YU HIEUH - 0x9576: 0xBE0E, //HANGUL SYLLABLE PIEUP EU SSANGKIYEOK - 0x9577: 0xBE0F, //HANGUL SYLLABLE PIEUP EU KIYEOKSIOS - 0x9578: 0xBE11, //HANGUL SYLLABLE PIEUP EU NIEUNCIEUC - 0x9579: 0xBE12, //HANGUL SYLLABLE PIEUP EU NIEUNHIEUH - 0x957A: 0xBE13, //HANGUL SYLLABLE PIEUP EU TIKEUT - 0x9581: 0xBE15, //HANGUL SYLLABLE PIEUP EU RIEULKIYEOK - 0x9582: 0xBE16, //HANGUL SYLLABLE PIEUP EU RIEULMIEUM - 0x9583: 0xBE17, //HANGUL SYLLABLE PIEUP EU RIEULPIEUP - 0x9584: 0xBE18, //HANGUL SYLLABLE PIEUP EU RIEULSIOS - 0x9585: 0xBE19, //HANGUL SYLLABLE PIEUP EU RIEULTHIEUTH - 0x9586: 0xBE1A, //HANGUL SYLLABLE PIEUP EU RIEULPHIEUPH - 0x9587: 0xBE1B, //HANGUL SYLLABLE PIEUP EU RIEULHIEUH - 0x9588: 0xBE1E, //HANGUL SYLLABLE PIEUP EU PIEUPSIOS - 0x9589: 0xBE20, //HANGUL SYLLABLE PIEUP EU SSANGSIOS - 0x958A: 0xBE21, //HANGUL SYLLABLE PIEUP EU IEUNG - 0x958B: 0xBE22, //HANGUL SYLLABLE PIEUP EU CIEUC - 0x958C: 0xBE23, //HANGUL SYLLABLE PIEUP EU CHIEUCH - 0x958D: 0xBE24, //HANGUL SYLLABLE PIEUP EU KHIEUKH - 0x958E: 0xBE25, //HANGUL SYLLABLE PIEUP EU THIEUTH - 0x958F: 0xBE26, //HANGUL SYLLABLE PIEUP EU PHIEUPH - 0x9590: 0xBE27, //HANGUL SYLLABLE PIEUP EU HIEUH - 0x9591: 0xBE28, //HANGUL SYLLABLE PIEUP YI - 0x9592: 0xBE29, //HANGUL SYLLABLE PIEUP YI KIYEOK - 0x9593: 0xBE2A, //HANGUL SYLLABLE PIEUP YI SSANGKIYEOK - 0x9594: 0xBE2B, //HANGUL SYLLABLE PIEUP YI KIYEOKSIOS - 0x9595: 0xBE2C, //HANGUL SYLLABLE PIEUP YI NIEUN - 0x9596: 0xBE2D, //HANGUL SYLLABLE PIEUP YI NIEUNCIEUC - 0x9597: 0xBE2E, //HANGUL SYLLABLE PIEUP YI NIEUNHIEUH - 0x9598: 0xBE2F, //HANGUL SYLLABLE PIEUP YI TIKEUT - 0x9599: 0xBE30, //HANGUL SYLLABLE PIEUP YI RIEUL - 0x959A: 0xBE31, //HANGUL SYLLABLE PIEUP YI RIEULKIYEOK - 0x959B: 0xBE32, //HANGUL SYLLABLE PIEUP YI RIEULMIEUM - 0x959C: 0xBE33, //HANGUL SYLLABLE PIEUP YI RIEULPIEUP - 0x959D: 0xBE34, //HANGUL SYLLABLE PIEUP YI RIEULSIOS - 0x959E: 0xBE35, //HANGUL SYLLABLE PIEUP YI RIEULTHIEUTH - 0x959F: 0xBE36, //HANGUL SYLLABLE PIEUP YI RIEULPHIEUPH - 0x95A0: 0xBE37, //HANGUL SYLLABLE PIEUP YI RIEULHIEUH - 0x95A1: 0xBE38, //HANGUL SYLLABLE PIEUP YI MIEUM - 0x95A2: 0xBE39, //HANGUL SYLLABLE PIEUP YI PIEUP - 0x95A3: 0xBE3A, //HANGUL SYLLABLE PIEUP YI PIEUPSIOS - 0x95A4: 0xBE3B, //HANGUL SYLLABLE PIEUP YI SIOS - 0x95A5: 0xBE3C, //HANGUL SYLLABLE PIEUP YI SSANGSIOS - 0x95A6: 0xBE3D, //HANGUL SYLLABLE PIEUP YI IEUNG - 0x95A7: 0xBE3E, //HANGUL SYLLABLE PIEUP YI CIEUC - 0x95A8: 0xBE3F, //HANGUL SYLLABLE PIEUP YI CHIEUCH - 0x95A9: 0xBE40, //HANGUL SYLLABLE PIEUP YI KHIEUKH - 0x95AA: 0xBE41, //HANGUL SYLLABLE PIEUP YI THIEUTH - 0x95AB: 0xBE42, //HANGUL SYLLABLE PIEUP YI PHIEUPH - 0x95AC: 0xBE43, //HANGUL SYLLABLE PIEUP YI HIEUH - 0x95AD: 0xBE46, //HANGUL SYLLABLE PIEUP I SSANGKIYEOK - 0x95AE: 0xBE47, //HANGUL SYLLABLE PIEUP I KIYEOKSIOS - 0x95AF: 0xBE49, //HANGUL SYLLABLE PIEUP I NIEUNCIEUC - 0x95B0: 0xBE4A, //HANGUL SYLLABLE PIEUP I NIEUNHIEUH - 0x95B1: 0xBE4B, //HANGUL SYLLABLE PIEUP I TIKEUT - 0x95B2: 0xBE4D, //HANGUL SYLLABLE PIEUP I RIEULKIYEOK - 0x95B3: 0xBE4F, //HANGUL SYLLABLE PIEUP I RIEULPIEUP - 0x95B4: 0xBE50, //HANGUL SYLLABLE PIEUP I RIEULSIOS - 0x95B5: 0xBE51, //HANGUL SYLLABLE PIEUP I RIEULTHIEUTH - 0x95B6: 0xBE52, //HANGUL SYLLABLE PIEUP I RIEULPHIEUPH - 0x95B7: 0xBE53, //HANGUL SYLLABLE PIEUP I RIEULHIEUH - 0x95B8: 0xBE56, //HANGUL SYLLABLE PIEUP I PIEUPSIOS - 0x95B9: 0xBE58, //HANGUL SYLLABLE PIEUP I SSANGSIOS - 0x95BA: 0xBE5C, //HANGUL SYLLABLE PIEUP I KHIEUKH - 0x95BB: 0xBE5D, //HANGUL SYLLABLE PIEUP I THIEUTH - 0x95BC: 0xBE5E, //HANGUL SYLLABLE PIEUP I PHIEUPH - 0x95BD: 0xBE5F, //HANGUL SYLLABLE PIEUP I HIEUH - 0x95BE: 0xBE62, //HANGUL SYLLABLE SSANGPIEUP A SSANGKIYEOK - 0x95BF: 0xBE63, //HANGUL SYLLABLE SSANGPIEUP A KIYEOKSIOS - 0x95C0: 0xBE65, //HANGUL SYLLABLE SSANGPIEUP A NIEUNCIEUC - 0x95C1: 0xBE66, //HANGUL SYLLABLE SSANGPIEUP A NIEUNHIEUH - 0x95C2: 0xBE67, //HANGUL SYLLABLE SSANGPIEUP A TIKEUT - 0x95C3: 0xBE69, //HANGUL SYLLABLE SSANGPIEUP A RIEULKIYEOK - 0x95C4: 0xBE6B, //HANGUL SYLLABLE SSANGPIEUP A RIEULPIEUP - 0x95C5: 0xBE6C, //HANGUL SYLLABLE SSANGPIEUP A RIEULSIOS - 0x95C6: 0xBE6D, //HANGUL SYLLABLE SSANGPIEUP A RIEULTHIEUTH - 0x95C7: 0xBE6E, //HANGUL SYLLABLE SSANGPIEUP A RIEULPHIEUPH - 0x95C8: 0xBE6F, //HANGUL SYLLABLE SSANGPIEUP A RIEULHIEUH - 0x95C9: 0xBE72, //HANGUL SYLLABLE SSANGPIEUP A PIEUPSIOS - 0x95CA: 0xBE76, //HANGUL SYLLABLE SSANGPIEUP A CIEUC - 0x95CB: 0xBE77, //HANGUL SYLLABLE SSANGPIEUP A CHIEUCH - 0x95CC: 0xBE78, //HANGUL SYLLABLE SSANGPIEUP A KHIEUKH - 0x95CD: 0xBE79, //HANGUL SYLLABLE SSANGPIEUP A THIEUTH - 0x95CE: 0xBE7A, //HANGUL SYLLABLE SSANGPIEUP A PHIEUPH - 0x95CF: 0xBE7E, //HANGUL SYLLABLE SSANGPIEUP AE SSANGKIYEOK - 0x95D0: 0xBE7F, //HANGUL SYLLABLE SSANGPIEUP AE KIYEOKSIOS - 0x95D1: 0xBE81, //HANGUL SYLLABLE SSANGPIEUP AE NIEUNCIEUC - 0x95D2: 0xBE82, //HANGUL SYLLABLE SSANGPIEUP AE NIEUNHIEUH - 0x95D3: 0xBE83, //HANGUL SYLLABLE SSANGPIEUP AE TIKEUT - 0x95D4: 0xBE85, //HANGUL SYLLABLE SSANGPIEUP AE RIEULKIYEOK - 0x95D5: 0xBE86, //HANGUL SYLLABLE SSANGPIEUP AE RIEULMIEUM - 0x95D6: 0xBE87, //HANGUL SYLLABLE SSANGPIEUP AE RIEULPIEUP - 0x95D7: 0xBE88, //HANGUL SYLLABLE SSANGPIEUP AE RIEULSIOS - 0x95D8: 0xBE89, //HANGUL SYLLABLE SSANGPIEUP AE RIEULTHIEUTH - 0x95D9: 0xBE8A, //HANGUL SYLLABLE SSANGPIEUP AE RIEULPHIEUPH - 0x95DA: 0xBE8B, //HANGUL SYLLABLE SSANGPIEUP AE RIEULHIEUH - 0x95DB: 0xBE8E, //HANGUL SYLLABLE SSANGPIEUP AE PIEUPSIOS - 0x95DC: 0xBE92, //HANGUL SYLLABLE SSANGPIEUP AE CIEUC - 0x95DD: 0xBE93, //HANGUL SYLLABLE SSANGPIEUP AE CHIEUCH - 0x95DE: 0xBE94, //HANGUL SYLLABLE SSANGPIEUP AE KHIEUKH - 0x95DF: 0xBE95, //HANGUL SYLLABLE SSANGPIEUP AE THIEUTH - 0x95E0: 0xBE96, //HANGUL SYLLABLE SSANGPIEUP AE PHIEUPH - 0x95E1: 0xBE97, //HANGUL SYLLABLE SSANGPIEUP AE HIEUH - 0x95E2: 0xBE9A, //HANGUL SYLLABLE SSANGPIEUP YA SSANGKIYEOK - 0x95E3: 0xBE9B, //HANGUL SYLLABLE SSANGPIEUP YA KIYEOKSIOS - 0x95E4: 0xBE9C, //HANGUL SYLLABLE SSANGPIEUP YA NIEUN - 0x95E5: 0xBE9D, //HANGUL SYLLABLE SSANGPIEUP YA NIEUNCIEUC - 0x95E6: 0xBE9E, //HANGUL SYLLABLE SSANGPIEUP YA NIEUNHIEUH - 0x95E7: 0xBE9F, //HANGUL SYLLABLE SSANGPIEUP YA TIKEUT - 0x95E8: 0xBEA0, //HANGUL SYLLABLE SSANGPIEUP YA RIEUL - 0x95E9: 0xBEA1, //HANGUL SYLLABLE SSANGPIEUP YA RIEULKIYEOK - 0x95EA: 0xBEA2, //HANGUL SYLLABLE SSANGPIEUP YA RIEULMIEUM - 0x95EB: 0xBEA3, //HANGUL SYLLABLE SSANGPIEUP YA RIEULPIEUP - 0x95EC: 0xBEA4, //HANGUL SYLLABLE SSANGPIEUP YA RIEULSIOS - 0x95ED: 0xBEA5, //HANGUL SYLLABLE SSANGPIEUP YA RIEULTHIEUTH - 0x95EE: 0xBEA6, //HANGUL SYLLABLE SSANGPIEUP YA RIEULPHIEUPH - 0x95EF: 0xBEA7, //HANGUL SYLLABLE SSANGPIEUP YA RIEULHIEUH - 0x95F0: 0xBEA9, //HANGUL SYLLABLE SSANGPIEUP YA PIEUP - 0x95F1: 0xBEAA, //HANGUL SYLLABLE SSANGPIEUP YA PIEUPSIOS - 0x95F2: 0xBEAB, //HANGUL SYLLABLE SSANGPIEUP YA SIOS - 0x95F3: 0xBEAC, //HANGUL SYLLABLE SSANGPIEUP YA SSANGSIOS - 0x95F4: 0xBEAD, //HANGUL SYLLABLE SSANGPIEUP YA IEUNG - 0x95F5: 0xBEAE, //HANGUL SYLLABLE SSANGPIEUP YA CIEUC - 0x95F6: 0xBEAF, //HANGUL SYLLABLE SSANGPIEUP YA CHIEUCH - 0x95F7: 0xBEB0, //HANGUL SYLLABLE SSANGPIEUP YA KHIEUKH - 0x95F8: 0xBEB1, //HANGUL SYLLABLE SSANGPIEUP YA THIEUTH - 0x95F9: 0xBEB2, //HANGUL SYLLABLE SSANGPIEUP YA PHIEUPH - 0x95FA: 0xBEB3, //HANGUL SYLLABLE SSANGPIEUP YA HIEUH - 0x95FB: 0xBEB4, //HANGUL SYLLABLE SSANGPIEUP YAE - 0x95FC: 0xBEB5, //HANGUL SYLLABLE SSANGPIEUP YAE KIYEOK - 0x95FD: 0xBEB6, //HANGUL SYLLABLE SSANGPIEUP YAE SSANGKIYEOK - 0x95FE: 0xBEB7, //HANGUL SYLLABLE SSANGPIEUP YAE KIYEOKSIOS - 0x9641: 0xBEB8, //HANGUL SYLLABLE SSANGPIEUP YAE NIEUN - 0x9642: 0xBEB9, //HANGUL SYLLABLE SSANGPIEUP YAE NIEUNCIEUC - 0x9643: 0xBEBA, //HANGUL SYLLABLE SSANGPIEUP YAE NIEUNHIEUH - 0x9644: 0xBEBB, //HANGUL SYLLABLE SSANGPIEUP YAE TIKEUT - 0x9645: 0xBEBC, //HANGUL SYLLABLE SSANGPIEUP YAE RIEUL - 0x9646: 0xBEBD, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULKIYEOK - 0x9647: 0xBEBE, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULMIEUM - 0x9648: 0xBEBF, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULPIEUP - 0x9649: 0xBEC0, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULSIOS - 0x964A: 0xBEC1, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULTHIEUTH - 0x964B: 0xBEC2, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULPHIEUPH - 0x964C: 0xBEC3, //HANGUL SYLLABLE SSANGPIEUP YAE RIEULHIEUH - 0x964D: 0xBEC4, //HANGUL SYLLABLE SSANGPIEUP YAE MIEUM - 0x964E: 0xBEC5, //HANGUL SYLLABLE SSANGPIEUP YAE PIEUP - 0x964F: 0xBEC6, //HANGUL SYLLABLE SSANGPIEUP YAE PIEUPSIOS - 0x9650: 0xBEC7, //HANGUL SYLLABLE SSANGPIEUP YAE SIOS - 0x9651: 0xBEC8, //HANGUL SYLLABLE SSANGPIEUP YAE SSANGSIOS - 0x9652: 0xBEC9, //HANGUL SYLLABLE SSANGPIEUP YAE IEUNG - 0x9653: 0xBECA, //HANGUL SYLLABLE SSANGPIEUP YAE CIEUC - 0x9654: 0xBECB, //HANGUL SYLLABLE SSANGPIEUP YAE CHIEUCH - 0x9655: 0xBECC, //HANGUL SYLLABLE SSANGPIEUP YAE KHIEUKH - 0x9656: 0xBECD, //HANGUL SYLLABLE SSANGPIEUP YAE THIEUTH - 0x9657: 0xBECE, //HANGUL SYLLABLE SSANGPIEUP YAE PHIEUPH - 0x9658: 0xBECF, //HANGUL SYLLABLE SSANGPIEUP YAE HIEUH - 0x9659: 0xBED2, //HANGUL SYLLABLE SSANGPIEUP EO SSANGKIYEOK - 0x965A: 0xBED3, //HANGUL SYLLABLE SSANGPIEUP EO KIYEOKSIOS - 0x9661: 0xBED5, //HANGUL SYLLABLE SSANGPIEUP EO NIEUNCIEUC - 0x9662: 0xBED6, //HANGUL SYLLABLE SSANGPIEUP EO NIEUNHIEUH - 0x9663: 0xBED9, //HANGUL SYLLABLE SSANGPIEUP EO RIEULKIYEOK - 0x9664: 0xBEDA, //HANGUL SYLLABLE SSANGPIEUP EO RIEULMIEUM - 0x9665: 0xBEDB, //HANGUL SYLLABLE SSANGPIEUP EO RIEULPIEUP - 0x9666: 0xBEDC, //HANGUL SYLLABLE SSANGPIEUP EO RIEULSIOS - 0x9667: 0xBEDD, //HANGUL SYLLABLE SSANGPIEUP EO RIEULTHIEUTH - 0x9668: 0xBEDE, //HANGUL SYLLABLE SSANGPIEUP EO RIEULPHIEUPH - 0x9669: 0xBEDF, //HANGUL SYLLABLE SSANGPIEUP EO RIEULHIEUH - 0x966A: 0xBEE1, //HANGUL SYLLABLE SSANGPIEUP EO PIEUP - 0x966B: 0xBEE2, //HANGUL SYLLABLE SSANGPIEUP EO PIEUPSIOS - 0x966C: 0xBEE6, //HANGUL SYLLABLE SSANGPIEUP EO CIEUC - 0x966D: 0xBEE7, //HANGUL SYLLABLE SSANGPIEUP EO CHIEUCH - 0x966E: 0xBEE8, //HANGUL SYLLABLE SSANGPIEUP EO KHIEUKH - 0x966F: 0xBEE9, //HANGUL SYLLABLE SSANGPIEUP EO THIEUTH - 0x9670: 0xBEEA, //HANGUL SYLLABLE SSANGPIEUP EO PHIEUPH - 0x9671: 0xBEEB, //HANGUL SYLLABLE SSANGPIEUP EO HIEUH - 0x9672: 0xBEED, //HANGUL SYLLABLE SSANGPIEUP E KIYEOK - 0x9673: 0xBEEE, //HANGUL SYLLABLE SSANGPIEUP E SSANGKIYEOK - 0x9674: 0xBEEF, //HANGUL SYLLABLE SSANGPIEUP E KIYEOKSIOS - 0x9675: 0xBEF0, //HANGUL SYLLABLE SSANGPIEUP E NIEUN - 0x9676: 0xBEF1, //HANGUL SYLLABLE SSANGPIEUP E NIEUNCIEUC - 0x9677: 0xBEF2, //HANGUL SYLLABLE SSANGPIEUP E NIEUNHIEUH - 0x9678: 0xBEF3, //HANGUL SYLLABLE SSANGPIEUP E TIKEUT - 0x9679: 0xBEF4, //HANGUL SYLLABLE SSANGPIEUP E RIEUL - 0x967A: 0xBEF5, //HANGUL SYLLABLE SSANGPIEUP E RIEULKIYEOK - 0x9681: 0xBEF6, //HANGUL SYLLABLE SSANGPIEUP E RIEULMIEUM - 0x9682: 0xBEF7, //HANGUL SYLLABLE SSANGPIEUP E RIEULPIEUP - 0x9683: 0xBEF8, //HANGUL SYLLABLE SSANGPIEUP E RIEULSIOS - 0x9684: 0xBEF9, //HANGUL SYLLABLE SSANGPIEUP E RIEULTHIEUTH - 0x9685: 0xBEFA, //HANGUL SYLLABLE SSANGPIEUP E RIEULPHIEUPH - 0x9686: 0xBEFB, //HANGUL SYLLABLE SSANGPIEUP E RIEULHIEUH - 0x9687: 0xBEFC, //HANGUL SYLLABLE SSANGPIEUP E MIEUM - 0x9688: 0xBEFD, //HANGUL SYLLABLE SSANGPIEUP E PIEUP - 0x9689: 0xBEFE, //HANGUL SYLLABLE SSANGPIEUP E PIEUPSIOS - 0x968A: 0xBEFF, //HANGUL SYLLABLE SSANGPIEUP E SIOS - 0x968B: 0xBF00, //HANGUL SYLLABLE SSANGPIEUP E SSANGSIOS - 0x968C: 0xBF02, //HANGUL SYLLABLE SSANGPIEUP E CIEUC - 0x968D: 0xBF03, //HANGUL SYLLABLE SSANGPIEUP E CHIEUCH - 0x968E: 0xBF04, //HANGUL SYLLABLE SSANGPIEUP E KHIEUKH - 0x968F: 0xBF05, //HANGUL SYLLABLE SSANGPIEUP E THIEUTH - 0x9690: 0xBF06, //HANGUL SYLLABLE SSANGPIEUP E PHIEUPH - 0x9691: 0xBF07, //HANGUL SYLLABLE SSANGPIEUP E HIEUH - 0x9692: 0xBF0A, //HANGUL SYLLABLE SSANGPIEUP YEO SSANGKIYEOK - 0x9693: 0xBF0B, //HANGUL SYLLABLE SSANGPIEUP YEO KIYEOKSIOS - 0x9694: 0xBF0C, //HANGUL SYLLABLE SSANGPIEUP YEO NIEUN - 0x9695: 0xBF0D, //HANGUL SYLLABLE SSANGPIEUP YEO NIEUNCIEUC - 0x9696: 0xBF0E, //HANGUL SYLLABLE SSANGPIEUP YEO NIEUNHIEUH - 0x9697: 0xBF0F, //HANGUL SYLLABLE SSANGPIEUP YEO TIKEUT - 0x9698: 0xBF10, //HANGUL SYLLABLE SSANGPIEUP YEO RIEUL - 0x9699: 0xBF11, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULKIYEOK - 0x969A: 0xBF12, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULMIEUM - 0x969B: 0xBF13, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULPIEUP - 0x969C: 0xBF14, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULSIOS - 0x969D: 0xBF15, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULTHIEUTH - 0x969E: 0xBF16, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULPHIEUPH - 0x969F: 0xBF17, //HANGUL SYLLABLE SSANGPIEUP YEO RIEULHIEUH - 0x96A0: 0xBF1A, //HANGUL SYLLABLE SSANGPIEUP YEO PIEUPSIOS - 0x96A1: 0xBF1E, //HANGUL SYLLABLE SSANGPIEUP YEO CIEUC - 0x96A2: 0xBF1F, //HANGUL SYLLABLE SSANGPIEUP YEO CHIEUCH - 0x96A3: 0xBF20, //HANGUL SYLLABLE SSANGPIEUP YEO KHIEUKH - 0x96A4: 0xBF21, //HANGUL SYLLABLE SSANGPIEUP YEO THIEUTH - 0x96A5: 0xBF22, //HANGUL SYLLABLE SSANGPIEUP YEO PHIEUPH - 0x96A6: 0xBF23, //HANGUL SYLLABLE SSANGPIEUP YEO HIEUH - 0x96A7: 0xBF24, //HANGUL SYLLABLE SSANGPIEUP YE - 0x96A8: 0xBF25, //HANGUL SYLLABLE SSANGPIEUP YE KIYEOK - 0x96A9: 0xBF26, //HANGUL SYLLABLE SSANGPIEUP YE SSANGKIYEOK - 0x96AA: 0xBF27, //HANGUL SYLLABLE SSANGPIEUP YE KIYEOKSIOS - 0x96AB: 0xBF28, //HANGUL SYLLABLE SSANGPIEUP YE NIEUN - 0x96AC: 0xBF29, //HANGUL SYLLABLE SSANGPIEUP YE NIEUNCIEUC - 0x96AD: 0xBF2A, //HANGUL SYLLABLE SSANGPIEUP YE NIEUNHIEUH - 0x96AE: 0xBF2B, //HANGUL SYLLABLE SSANGPIEUP YE TIKEUT - 0x96AF: 0xBF2C, //HANGUL SYLLABLE SSANGPIEUP YE RIEUL - 0x96B0: 0xBF2D, //HANGUL SYLLABLE SSANGPIEUP YE RIEULKIYEOK - 0x96B1: 0xBF2E, //HANGUL SYLLABLE SSANGPIEUP YE RIEULMIEUM - 0x96B2: 0xBF2F, //HANGUL SYLLABLE SSANGPIEUP YE RIEULPIEUP - 0x96B3: 0xBF30, //HANGUL SYLLABLE SSANGPIEUP YE RIEULSIOS - 0x96B4: 0xBF31, //HANGUL SYLLABLE SSANGPIEUP YE RIEULTHIEUTH - 0x96B5: 0xBF32, //HANGUL SYLLABLE SSANGPIEUP YE RIEULPHIEUPH - 0x96B6: 0xBF33, //HANGUL SYLLABLE SSANGPIEUP YE RIEULHIEUH - 0x96B7: 0xBF34, //HANGUL SYLLABLE SSANGPIEUP YE MIEUM - 0x96B8: 0xBF35, //HANGUL SYLLABLE SSANGPIEUP YE PIEUP - 0x96B9: 0xBF36, //HANGUL SYLLABLE SSANGPIEUP YE PIEUPSIOS - 0x96BA: 0xBF37, //HANGUL SYLLABLE SSANGPIEUP YE SIOS - 0x96BB: 0xBF38, //HANGUL SYLLABLE SSANGPIEUP YE SSANGSIOS - 0x96BC: 0xBF39, //HANGUL SYLLABLE SSANGPIEUP YE IEUNG - 0x96BD: 0xBF3A, //HANGUL SYLLABLE SSANGPIEUP YE CIEUC - 0x96BE: 0xBF3B, //HANGUL SYLLABLE SSANGPIEUP YE CHIEUCH - 0x96BF: 0xBF3C, //HANGUL SYLLABLE SSANGPIEUP YE KHIEUKH - 0x96C0: 0xBF3D, //HANGUL SYLLABLE SSANGPIEUP YE THIEUTH - 0x96C1: 0xBF3E, //HANGUL SYLLABLE SSANGPIEUP YE PHIEUPH - 0x96C2: 0xBF3F, //HANGUL SYLLABLE SSANGPIEUP YE HIEUH - 0x96C3: 0xBF42, //HANGUL SYLLABLE SSANGPIEUP O SSANGKIYEOK - 0x96C4: 0xBF43, //HANGUL SYLLABLE SSANGPIEUP O KIYEOKSIOS - 0x96C5: 0xBF45, //HANGUL SYLLABLE SSANGPIEUP O NIEUNCIEUC - 0x96C6: 0xBF46, //HANGUL SYLLABLE SSANGPIEUP O NIEUNHIEUH - 0x96C7: 0xBF47, //HANGUL SYLLABLE SSANGPIEUP O TIKEUT - 0x96C8: 0xBF49, //HANGUL SYLLABLE SSANGPIEUP O RIEULKIYEOK - 0x96C9: 0xBF4A, //HANGUL SYLLABLE SSANGPIEUP O RIEULMIEUM - 0x96CA: 0xBF4B, //HANGUL SYLLABLE SSANGPIEUP O RIEULPIEUP - 0x96CB: 0xBF4C, //HANGUL SYLLABLE SSANGPIEUP O RIEULSIOS - 0x96CC: 0xBF4D, //HANGUL SYLLABLE SSANGPIEUP O RIEULTHIEUTH - 0x96CD: 0xBF4E, //HANGUL SYLLABLE SSANGPIEUP O RIEULPHIEUPH - 0x96CE: 0xBF4F, //HANGUL SYLLABLE SSANGPIEUP O RIEULHIEUH - 0x96CF: 0xBF52, //HANGUL SYLLABLE SSANGPIEUP O PIEUPSIOS - 0x96D0: 0xBF53, //HANGUL SYLLABLE SSANGPIEUP O SIOS - 0x96D1: 0xBF54, //HANGUL SYLLABLE SSANGPIEUP O SSANGSIOS - 0x96D2: 0xBF56, //HANGUL SYLLABLE SSANGPIEUP O CIEUC - 0x96D3: 0xBF57, //HANGUL SYLLABLE SSANGPIEUP O CHIEUCH - 0x96D4: 0xBF58, //HANGUL SYLLABLE SSANGPIEUP O KHIEUKH - 0x96D5: 0xBF59, //HANGUL SYLLABLE SSANGPIEUP O THIEUTH - 0x96D6: 0xBF5A, //HANGUL SYLLABLE SSANGPIEUP O PHIEUPH - 0x96D7: 0xBF5B, //HANGUL SYLLABLE SSANGPIEUP O HIEUH - 0x96D8: 0xBF5C, //HANGUL SYLLABLE SSANGPIEUP WA - 0x96D9: 0xBF5D, //HANGUL SYLLABLE SSANGPIEUP WA KIYEOK - 0x96DA: 0xBF5E, //HANGUL SYLLABLE SSANGPIEUP WA SSANGKIYEOK - 0x96DB: 0xBF5F, //HANGUL SYLLABLE SSANGPIEUP WA KIYEOKSIOS - 0x96DC: 0xBF60, //HANGUL SYLLABLE SSANGPIEUP WA NIEUN - 0x96DD: 0xBF61, //HANGUL SYLLABLE SSANGPIEUP WA NIEUNCIEUC - 0x96DE: 0xBF62, //HANGUL SYLLABLE SSANGPIEUP WA NIEUNHIEUH - 0x96DF: 0xBF63, //HANGUL SYLLABLE SSANGPIEUP WA TIKEUT - 0x96E0: 0xBF64, //HANGUL SYLLABLE SSANGPIEUP WA RIEUL - 0x96E1: 0xBF65, //HANGUL SYLLABLE SSANGPIEUP WA RIEULKIYEOK - 0x96E2: 0xBF66, //HANGUL SYLLABLE SSANGPIEUP WA RIEULMIEUM - 0x96E3: 0xBF67, //HANGUL SYLLABLE SSANGPIEUP WA RIEULPIEUP - 0x96E4: 0xBF68, //HANGUL SYLLABLE SSANGPIEUP WA RIEULSIOS - 0x96E5: 0xBF69, //HANGUL SYLLABLE SSANGPIEUP WA RIEULTHIEUTH - 0x96E6: 0xBF6A, //HANGUL SYLLABLE SSANGPIEUP WA RIEULPHIEUPH - 0x96E7: 0xBF6B, //HANGUL SYLLABLE SSANGPIEUP WA RIEULHIEUH - 0x96E8: 0xBF6C, //HANGUL SYLLABLE SSANGPIEUP WA MIEUM - 0x96E9: 0xBF6D, //HANGUL SYLLABLE SSANGPIEUP WA PIEUP - 0x96EA: 0xBF6E, //HANGUL SYLLABLE SSANGPIEUP WA PIEUPSIOS - 0x96EB: 0xBF6F, //HANGUL SYLLABLE SSANGPIEUP WA SIOS - 0x96EC: 0xBF70, //HANGUL SYLLABLE SSANGPIEUP WA SSANGSIOS - 0x96ED: 0xBF71, //HANGUL SYLLABLE SSANGPIEUP WA IEUNG - 0x96EE: 0xBF72, //HANGUL SYLLABLE SSANGPIEUP WA CIEUC - 0x96EF: 0xBF73, //HANGUL SYLLABLE SSANGPIEUP WA CHIEUCH - 0x96F0: 0xBF74, //HANGUL SYLLABLE SSANGPIEUP WA KHIEUKH - 0x96F1: 0xBF75, //HANGUL SYLLABLE SSANGPIEUP WA THIEUTH - 0x96F2: 0xBF76, //HANGUL SYLLABLE SSANGPIEUP WA PHIEUPH - 0x96F3: 0xBF77, //HANGUL SYLLABLE SSANGPIEUP WA HIEUH - 0x96F4: 0xBF78, //HANGUL SYLLABLE SSANGPIEUP WAE - 0x96F5: 0xBF79, //HANGUL SYLLABLE SSANGPIEUP WAE KIYEOK - 0x96F6: 0xBF7A, //HANGUL SYLLABLE SSANGPIEUP WAE SSANGKIYEOK - 0x96F7: 0xBF7B, //HANGUL SYLLABLE SSANGPIEUP WAE KIYEOKSIOS - 0x96F8: 0xBF7C, //HANGUL SYLLABLE SSANGPIEUP WAE NIEUN - 0x96F9: 0xBF7D, //HANGUL SYLLABLE SSANGPIEUP WAE NIEUNCIEUC - 0x96FA: 0xBF7E, //HANGUL SYLLABLE SSANGPIEUP WAE NIEUNHIEUH - 0x96FB: 0xBF7F, //HANGUL SYLLABLE SSANGPIEUP WAE TIKEUT - 0x96FC: 0xBF80, //HANGUL SYLLABLE SSANGPIEUP WAE RIEUL - 0x96FD: 0xBF81, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULKIYEOK - 0x96FE: 0xBF82, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULMIEUM - 0x9741: 0xBF83, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULPIEUP - 0x9742: 0xBF84, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULSIOS - 0x9743: 0xBF85, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULTHIEUTH - 0x9744: 0xBF86, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULPHIEUPH - 0x9745: 0xBF87, //HANGUL SYLLABLE SSANGPIEUP WAE RIEULHIEUH - 0x9746: 0xBF88, //HANGUL SYLLABLE SSANGPIEUP WAE MIEUM - 0x9747: 0xBF89, //HANGUL SYLLABLE SSANGPIEUP WAE PIEUP - 0x9748: 0xBF8A, //HANGUL SYLLABLE SSANGPIEUP WAE PIEUPSIOS - 0x9749: 0xBF8B, //HANGUL SYLLABLE SSANGPIEUP WAE SIOS - 0x974A: 0xBF8C, //HANGUL SYLLABLE SSANGPIEUP WAE SSANGSIOS - 0x974B: 0xBF8D, //HANGUL SYLLABLE SSANGPIEUP WAE IEUNG - 0x974C: 0xBF8E, //HANGUL SYLLABLE SSANGPIEUP WAE CIEUC - 0x974D: 0xBF8F, //HANGUL SYLLABLE SSANGPIEUP WAE CHIEUCH - 0x974E: 0xBF90, //HANGUL SYLLABLE SSANGPIEUP WAE KHIEUKH - 0x974F: 0xBF91, //HANGUL SYLLABLE SSANGPIEUP WAE THIEUTH - 0x9750: 0xBF92, //HANGUL SYLLABLE SSANGPIEUP WAE PHIEUPH - 0x9751: 0xBF93, //HANGUL SYLLABLE SSANGPIEUP WAE HIEUH - 0x9752: 0xBF95, //HANGUL SYLLABLE SSANGPIEUP OE KIYEOK - 0x9753: 0xBF96, //HANGUL SYLLABLE SSANGPIEUP OE SSANGKIYEOK - 0x9754: 0xBF97, //HANGUL SYLLABLE SSANGPIEUP OE KIYEOKSIOS - 0x9755: 0xBF98, //HANGUL SYLLABLE SSANGPIEUP OE NIEUN - 0x9756: 0xBF99, //HANGUL SYLLABLE SSANGPIEUP OE NIEUNCIEUC - 0x9757: 0xBF9A, //HANGUL SYLLABLE SSANGPIEUP OE NIEUNHIEUH - 0x9758: 0xBF9B, //HANGUL SYLLABLE SSANGPIEUP OE TIKEUT - 0x9759: 0xBF9C, //HANGUL SYLLABLE SSANGPIEUP OE RIEUL - 0x975A: 0xBF9D, //HANGUL SYLLABLE SSANGPIEUP OE RIEULKIYEOK - 0x9761: 0xBF9E, //HANGUL SYLLABLE SSANGPIEUP OE RIEULMIEUM - 0x9762: 0xBF9F, //HANGUL SYLLABLE SSANGPIEUP OE RIEULPIEUP - 0x9763: 0xBFA0, //HANGUL SYLLABLE SSANGPIEUP OE RIEULSIOS - 0x9764: 0xBFA1, //HANGUL SYLLABLE SSANGPIEUP OE RIEULTHIEUTH - 0x9765: 0xBFA2, //HANGUL SYLLABLE SSANGPIEUP OE RIEULPHIEUPH - 0x9766: 0xBFA3, //HANGUL SYLLABLE SSANGPIEUP OE RIEULHIEUH - 0x9767: 0xBFA4, //HANGUL SYLLABLE SSANGPIEUP OE MIEUM - 0x9768: 0xBFA5, //HANGUL SYLLABLE SSANGPIEUP OE PIEUP - 0x9769: 0xBFA6, //HANGUL SYLLABLE SSANGPIEUP OE PIEUPSIOS - 0x976A: 0xBFA7, //HANGUL SYLLABLE SSANGPIEUP OE SIOS - 0x976B: 0xBFA8, //HANGUL SYLLABLE SSANGPIEUP OE SSANGSIOS - 0x976C: 0xBFA9, //HANGUL SYLLABLE SSANGPIEUP OE IEUNG - 0x976D: 0xBFAA, //HANGUL SYLLABLE SSANGPIEUP OE CIEUC - 0x976E: 0xBFAB, //HANGUL SYLLABLE SSANGPIEUP OE CHIEUCH - 0x976F: 0xBFAC, //HANGUL SYLLABLE SSANGPIEUP OE KHIEUKH - 0x9770: 0xBFAD, //HANGUL SYLLABLE SSANGPIEUP OE THIEUTH - 0x9771: 0xBFAE, //HANGUL SYLLABLE SSANGPIEUP OE PHIEUPH - 0x9772: 0xBFAF, //HANGUL SYLLABLE SSANGPIEUP OE HIEUH - 0x9773: 0xBFB1, //HANGUL SYLLABLE SSANGPIEUP YO KIYEOK - 0x9774: 0xBFB2, //HANGUL SYLLABLE SSANGPIEUP YO SSANGKIYEOK - 0x9775: 0xBFB3, //HANGUL SYLLABLE SSANGPIEUP YO KIYEOKSIOS - 0x9776: 0xBFB4, //HANGUL SYLLABLE SSANGPIEUP YO NIEUN - 0x9777: 0xBFB5, //HANGUL SYLLABLE SSANGPIEUP YO NIEUNCIEUC - 0x9778: 0xBFB6, //HANGUL SYLLABLE SSANGPIEUP YO NIEUNHIEUH - 0x9779: 0xBFB7, //HANGUL SYLLABLE SSANGPIEUP YO TIKEUT - 0x977A: 0xBFB8, //HANGUL SYLLABLE SSANGPIEUP YO RIEUL - 0x9781: 0xBFB9, //HANGUL SYLLABLE SSANGPIEUP YO RIEULKIYEOK - 0x9782: 0xBFBA, //HANGUL SYLLABLE SSANGPIEUP YO RIEULMIEUM - 0x9783: 0xBFBB, //HANGUL SYLLABLE SSANGPIEUP YO RIEULPIEUP - 0x9784: 0xBFBC, //HANGUL SYLLABLE SSANGPIEUP YO RIEULSIOS - 0x9785: 0xBFBD, //HANGUL SYLLABLE SSANGPIEUP YO RIEULTHIEUTH - 0x9786: 0xBFBE, //HANGUL SYLLABLE SSANGPIEUP YO RIEULPHIEUPH - 0x9787: 0xBFBF, //HANGUL SYLLABLE SSANGPIEUP YO RIEULHIEUH - 0x9788: 0xBFC0, //HANGUL SYLLABLE SSANGPIEUP YO MIEUM - 0x9789: 0xBFC1, //HANGUL SYLLABLE SSANGPIEUP YO PIEUP - 0x978A: 0xBFC2, //HANGUL SYLLABLE SSANGPIEUP YO PIEUPSIOS - 0x978B: 0xBFC3, //HANGUL SYLLABLE SSANGPIEUP YO SIOS - 0x978C: 0xBFC4, //HANGUL SYLLABLE SSANGPIEUP YO SSANGSIOS - 0x978D: 0xBFC6, //HANGUL SYLLABLE SSANGPIEUP YO CIEUC - 0x978E: 0xBFC7, //HANGUL SYLLABLE SSANGPIEUP YO CHIEUCH - 0x978F: 0xBFC8, //HANGUL SYLLABLE SSANGPIEUP YO KHIEUKH - 0x9790: 0xBFC9, //HANGUL SYLLABLE SSANGPIEUP YO THIEUTH - 0x9791: 0xBFCA, //HANGUL SYLLABLE SSANGPIEUP YO PHIEUPH - 0x9792: 0xBFCB, //HANGUL SYLLABLE SSANGPIEUP YO HIEUH - 0x9793: 0xBFCE, //HANGUL SYLLABLE SSANGPIEUP U SSANGKIYEOK - 0x9794: 0xBFCF, //HANGUL SYLLABLE SSANGPIEUP U KIYEOKSIOS - 0x9795: 0xBFD1, //HANGUL SYLLABLE SSANGPIEUP U NIEUNCIEUC - 0x9796: 0xBFD2, //HANGUL SYLLABLE SSANGPIEUP U NIEUNHIEUH - 0x9797: 0xBFD3, //HANGUL SYLLABLE SSANGPIEUP U TIKEUT - 0x9798: 0xBFD5, //HANGUL SYLLABLE SSANGPIEUP U RIEULKIYEOK - 0x9799: 0xBFD6, //HANGUL SYLLABLE SSANGPIEUP U RIEULMIEUM - 0x979A: 0xBFD7, //HANGUL SYLLABLE SSANGPIEUP U RIEULPIEUP - 0x979B: 0xBFD8, //HANGUL SYLLABLE SSANGPIEUP U RIEULSIOS - 0x979C: 0xBFD9, //HANGUL SYLLABLE SSANGPIEUP U RIEULTHIEUTH - 0x979D: 0xBFDA, //HANGUL SYLLABLE SSANGPIEUP U RIEULPHIEUPH - 0x979E: 0xBFDB, //HANGUL SYLLABLE SSANGPIEUP U RIEULHIEUH - 0x979F: 0xBFDD, //HANGUL SYLLABLE SSANGPIEUP U PIEUP - 0x97A0: 0xBFDE, //HANGUL SYLLABLE SSANGPIEUP U PIEUPSIOS - 0x97A1: 0xBFE0, //HANGUL SYLLABLE SSANGPIEUP U SSANGSIOS - 0x97A2: 0xBFE2, //HANGUL SYLLABLE SSANGPIEUP U CIEUC - 0x97A3: 0xBFE3, //HANGUL SYLLABLE SSANGPIEUP U CHIEUCH - 0x97A4: 0xBFE4, //HANGUL SYLLABLE SSANGPIEUP U KHIEUKH - 0x97A5: 0xBFE5, //HANGUL SYLLABLE SSANGPIEUP U THIEUTH - 0x97A6: 0xBFE6, //HANGUL SYLLABLE SSANGPIEUP U PHIEUPH - 0x97A7: 0xBFE7, //HANGUL SYLLABLE SSANGPIEUP U HIEUH - 0x97A8: 0xBFE8, //HANGUL SYLLABLE SSANGPIEUP WEO - 0x97A9: 0xBFE9, //HANGUL SYLLABLE SSANGPIEUP WEO KIYEOK - 0x97AA: 0xBFEA, //HANGUL SYLLABLE SSANGPIEUP WEO SSANGKIYEOK - 0x97AB: 0xBFEB, //HANGUL SYLLABLE SSANGPIEUP WEO KIYEOKSIOS - 0x97AC: 0xBFEC, //HANGUL SYLLABLE SSANGPIEUP WEO NIEUN - 0x97AD: 0xBFED, //HANGUL SYLLABLE SSANGPIEUP WEO NIEUNCIEUC - 0x97AE: 0xBFEE, //HANGUL SYLLABLE SSANGPIEUP WEO NIEUNHIEUH - 0x97AF: 0xBFEF, //HANGUL SYLLABLE SSANGPIEUP WEO TIKEUT - 0x97B0: 0xBFF0, //HANGUL SYLLABLE SSANGPIEUP WEO RIEUL - 0x97B1: 0xBFF1, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULKIYEOK - 0x97B2: 0xBFF2, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULMIEUM - 0x97B3: 0xBFF3, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULPIEUP - 0x97B4: 0xBFF4, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULSIOS - 0x97B5: 0xBFF5, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULTHIEUTH - 0x97B6: 0xBFF6, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULPHIEUPH - 0x97B7: 0xBFF7, //HANGUL SYLLABLE SSANGPIEUP WEO RIEULHIEUH - 0x97B8: 0xBFF8, //HANGUL SYLLABLE SSANGPIEUP WEO MIEUM - 0x97B9: 0xBFF9, //HANGUL SYLLABLE SSANGPIEUP WEO PIEUP - 0x97BA: 0xBFFA, //HANGUL SYLLABLE SSANGPIEUP WEO PIEUPSIOS - 0x97BB: 0xBFFB, //HANGUL SYLLABLE SSANGPIEUP WEO SIOS - 0x97BC: 0xBFFC, //HANGUL SYLLABLE SSANGPIEUP WEO SSANGSIOS - 0x97BD: 0xBFFD, //HANGUL SYLLABLE SSANGPIEUP WEO IEUNG - 0x97BE: 0xBFFE, //HANGUL SYLLABLE SSANGPIEUP WEO CIEUC - 0x97BF: 0xBFFF, //HANGUL SYLLABLE SSANGPIEUP WEO CHIEUCH - 0x97C0: 0xC000, //HANGUL SYLLABLE SSANGPIEUP WEO KHIEUKH - 0x97C1: 0xC001, //HANGUL SYLLABLE SSANGPIEUP WEO THIEUTH - 0x97C2: 0xC002, //HANGUL SYLLABLE SSANGPIEUP WEO PHIEUPH - 0x97C3: 0xC003, //HANGUL SYLLABLE SSANGPIEUP WEO HIEUH - 0x97C4: 0xC004, //HANGUL SYLLABLE SSANGPIEUP WE - 0x97C5: 0xC005, //HANGUL SYLLABLE SSANGPIEUP WE KIYEOK - 0x97C6: 0xC006, //HANGUL SYLLABLE SSANGPIEUP WE SSANGKIYEOK - 0x97C7: 0xC007, //HANGUL SYLLABLE SSANGPIEUP WE KIYEOKSIOS - 0x97C8: 0xC008, //HANGUL SYLLABLE SSANGPIEUP WE NIEUN - 0x97C9: 0xC009, //HANGUL SYLLABLE SSANGPIEUP WE NIEUNCIEUC - 0x97CA: 0xC00A, //HANGUL SYLLABLE SSANGPIEUP WE NIEUNHIEUH - 0x97CB: 0xC00B, //HANGUL SYLLABLE SSANGPIEUP WE TIKEUT - 0x97CC: 0xC00C, //HANGUL SYLLABLE SSANGPIEUP WE RIEUL - 0x97CD: 0xC00D, //HANGUL SYLLABLE SSANGPIEUP WE RIEULKIYEOK - 0x97CE: 0xC00E, //HANGUL SYLLABLE SSANGPIEUP WE RIEULMIEUM - 0x97CF: 0xC00F, //HANGUL SYLLABLE SSANGPIEUP WE RIEULPIEUP - 0x97D0: 0xC010, //HANGUL SYLLABLE SSANGPIEUP WE RIEULSIOS - 0x97D1: 0xC011, //HANGUL SYLLABLE SSANGPIEUP WE RIEULTHIEUTH - 0x97D2: 0xC012, //HANGUL SYLLABLE SSANGPIEUP WE RIEULPHIEUPH - 0x97D3: 0xC013, //HANGUL SYLLABLE SSANGPIEUP WE RIEULHIEUH - 0x97D4: 0xC014, //HANGUL SYLLABLE SSANGPIEUP WE MIEUM - 0x97D5: 0xC015, //HANGUL SYLLABLE SSANGPIEUP WE PIEUP - 0x97D6: 0xC016, //HANGUL SYLLABLE SSANGPIEUP WE PIEUPSIOS - 0x97D7: 0xC017, //HANGUL SYLLABLE SSANGPIEUP WE SIOS - 0x97D8: 0xC018, //HANGUL SYLLABLE SSANGPIEUP WE SSANGSIOS - 0x97D9: 0xC019, //HANGUL SYLLABLE SSANGPIEUP WE IEUNG - 0x97DA: 0xC01A, //HANGUL SYLLABLE SSANGPIEUP WE CIEUC - 0x97DB: 0xC01B, //HANGUL SYLLABLE SSANGPIEUP WE CHIEUCH - 0x97DC: 0xC01C, //HANGUL SYLLABLE SSANGPIEUP WE KHIEUKH - 0x97DD: 0xC01D, //HANGUL SYLLABLE SSANGPIEUP WE THIEUTH - 0x97DE: 0xC01E, //HANGUL SYLLABLE SSANGPIEUP WE PHIEUPH - 0x97DF: 0xC01F, //HANGUL SYLLABLE SSANGPIEUP WE HIEUH - 0x97E0: 0xC020, //HANGUL SYLLABLE SSANGPIEUP WI - 0x97E1: 0xC021, //HANGUL SYLLABLE SSANGPIEUP WI KIYEOK - 0x97E2: 0xC022, //HANGUL SYLLABLE SSANGPIEUP WI SSANGKIYEOK - 0x97E3: 0xC023, //HANGUL SYLLABLE SSANGPIEUP WI KIYEOKSIOS - 0x97E4: 0xC024, //HANGUL SYLLABLE SSANGPIEUP WI NIEUN - 0x97E5: 0xC025, //HANGUL SYLLABLE SSANGPIEUP WI NIEUNCIEUC - 0x97E6: 0xC026, //HANGUL SYLLABLE SSANGPIEUP WI NIEUNHIEUH - 0x97E7: 0xC027, //HANGUL SYLLABLE SSANGPIEUP WI TIKEUT - 0x97E8: 0xC028, //HANGUL SYLLABLE SSANGPIEUP WI RIEUL - 0x97E9: 0xC029, //HANGUL SYLLABLE SSANGPIEUP WI RIEULKIYEOK - 0x97EA: 0xC02A, //HANGUL SYLLABLE SSANGPIEUP WI RIEULMIEUM - 0x97EB: 0xC02B, //HANGUL SYLLABLE SSANGPIEUP WI RIEULPIEUP - 0x97EC: 0xC02C, //HANGUL SYLLABLE SSANGPIEUP WI RIEULSIOS - 0x97ED: 0xC02D, //HANGUL SYLLABLE SSANGPIEUP WI RIEULTHIEUTH - 0x97EE: 0xC02E, //HANGUL SYLLABLE SSANGPIEUP WI RIEULPHIEUPH - 0x97EF: 0xC02F, //HANGUL SYLLABLE SSANGPIEUP WI RIEULHIEUH - 0x97F0: 0xC030, //HANGUL SYLLABLE SSANGPIEUP WI MIEUM - 0x97F1: 0xC031, //HANGUL SYLLABLE SSANGPIEUP WI PIEUP - 0x97F2: 0xC032, //HANGUL SYLLABLE SSANGPIEUP WI PIEUPSIOS - 0x97F3: 0xC033, //HANGUL SYLLABLE SSANGPIEUP WI SIOS - 0x97F4: 0xC034, //HANGUL SYLLABLE SSANGPIEUP WI SSANGSIOS - 0x97F5: 0xC035, //HANGUL SYLLABLE SSANGPIEUP WI IEUNG - 0x97F6: 0xC036, //HANGUL SYLLABLE SSANGPIEUP WI CIEUC - 0x97F7: 0xC037, //HANGUL SYLLABLE SSANGPIEUP WI CHIEUCH - 0x97F8: 0xC038, //HANGUL SYLLABLE SSANGPIEUP WI KHIEUKH - 0x97F9: 0xC039, //HANGUL SYLLABLE SSANGPIEUP WI THIEUTH - 0x97FA: 0xC03A, //HANGUL SYLLABLE SSANGPIEUP WI PHIEUPH - 0x97FB: 0xC03B, //HANGUL SYLLABLE SSANGPIEUP WI HIEUH - 0x97FC: 0xC03D, //HANGUL SYLLABLE SSANGPIEUP YU KIYEOK - 0x97FD: 0xC03E, //HANGUL SYLLABLE SSANGPIEUP YU SSANGKIYEOK - 0x97FE: 0xC03F, //HANGUL SYLLABLE SSANGPIEUP YU KIYEOKSIOS - 0x9841: 0xC040, //HANGUL SYLLABLE SSANGPIEUP YU NIEUN - 0x9842: 0xC041, //HANGUL SYLLABLE SSANGPIEUP YU NIEUNCIEUC - 0x9843: 0xC042, //HANGUL SYLLABLE SSANGPIEUP YU NIEUNHIEUH - 0x9844: 0xC043, //HANGUL SYLLABLE SSANGPIEUP YU TIKEUT - 0x9845: 0xC044, //HANGUL SYLLABLE SSANGPIEUP YU RIEUL - 0x9846: 0xC045, //HANGUL SYLLABLE SSANGPIEUP YU RIEULKIYEOK - 0x9847: 0xC046, //HANGUL SYLLABLE SSANGPIEUP YU RIEULMIEUM - 0x9848: 0xC047, //HANGUL SYLLABLE SSANGPIEUP YU RIEULPIEUP - 0x9849: 0xC048, //HANGUL SYLLABLE SSANGPIEUP YU RIEULSIOS - 0x984A: 0xC049, //HANGUL SYLLABLE SSANGPIEUP YU RIEULTHIEUTH - 0x984B: 0xC04A, //HANGUL SYLLABLE SSANGPIEUP YU RIEULPHIEUPH - 0x984C: 0xC04B, //HANGUL SYLLABLE SSANGPIEUP YU RIEULHIEUH - 0x984D: 0xC04C, //HANGUL SYLLABLE SSANGPIEUP YU MIEUM - 0x984E: 0xC04D, //HANGUL SYLLABLE SSANGPIEUP YU PIEUP - 0x984F: 0xC04E, //HANGUL SYLLABLE SSANGPIEUP YU PIEUPSIOS - 0x9850: 0xC04F, //HANGUL SYLLABLE SSANGPIEUP YU SIOS - 0x9851: 0xC050, //HANGUL SYLLABLE SSANGPIEUP YU SSANGSIOS - 0x9852: 0xC052, //HANGUL SYLLABLE SSANGPIEUP YU CIEUC - 0x9853: 0xC053, //HANGUL SYLLABLE SSANGPIEUP YU CHIEUCH - 0x9854: 0xC054, //HANGUL SYLLABLE SSANGPIEUP YU KHIEUKH - 0x9855: 0xC055, //HANGUL SYLLABLE SSANGPIEUP YU THIEUTH - 0x9856: 0xC056, //HANGUL SYLLABLE SSANGPIEUP YU PHIEUPH - 0x9857: 0xC057, //HANGUL SYLLABLE SSANGPIEUP YU HIEUH - 0x9858: 0xC059, //HANGUL SYLLABLE SSANGPIEUP EU KIYEOK - 0x9859: 0xC05A, //HANGUL SYLLABLE SSANGPIEUP EU SSANGKIYEOK - 0x985A: 0xC05B, //HANGUL SYLLABLE SSANGPIEUP EU KIYEOKSIOS - 0x9861: 0xC05D, //HANGUL SYLLABLE SSANGPIEUP EU NIEUNCIEUC - 0x9862: 0xC05E, //HANGUL SYLLABLE SSANGPIEUP EU NIEUNHIEUH - 0x9863: 0xC05F, //HANGUL SYLLABLE SSANGPIEUP EU TIKEUT - 0x9864: 0xC061, //HANGUL SYLLABLE SSANGPIEUP EU RIEULKIYEOK - 0x9865: 0xC062, //HANGUL SYLLABLE SSANGPIEUP EU RIEULMIEUM - 0x9866: 0xC063, //HANGUL SYLLABLE SSANGPIEUP EU RIEULPIEUP - 0x9867: 0xC064, //HANGUL SYLLABLE SSANGPIEUP EU RIEULSIOS - 0x9868: 0xC065, //HANGUL SYLLABLE SSANGPIEUP EU RIEULTHIEUTH - 0x9869: 0xC066, //HANGUL SYLLABLE SSANGPIEUP EU RIEULPHIEUPH - 0x986A: 0xC067, //HANGUL SYLLABLE SSANGPIEUP EU RIEULHIEUH - 0x986B: 0xC06A, //HANGUL SYLLABLE SSANGPIEUP EU PIEUPSIOS - 0x986C: 0xC06B, //HANGUL SYLLABLE SSANGPIEUP EU SIOS - 0x986D: 0xC06C, //HANGUL SYLLABLE SSANGPIEUP EU SSANGSIOS - 0x986E: 0xC06D, //HANGUL SYLLABLE SSANGPIEUP EU IEUNG - 0x986F: 0xC06E, //HANGUL SYLLABLE SSANGPIEUP EU CIEUC - 0x9870: 0xC06F, //HANGUL SYLLABLE SSANGPIEUP EU CHIEUCH - 0x9871: 0xC070, //HANGUL SYLLABLE SSANGPIEUP EU KHIEUKH - 0x9872: 0xC071, //HANGUL SYLLABLE SSANGPIEUP EU THIEUTH - 0x9873: 0xC072, //HANGUL SYLLABLE SSANGPIEUP EU PHIEUPH - 0x9874: 0xC073, //HANGUL SYLLABLE SSANGPIEUP EU HIEUH - 0x9875: 0xC074, //HANGUL SYLLABLE SSANGPIEUP YI - 0x9876: 0xC075, //HANGUL SYLLABLE SSANGPIEUP YI KIYEOK - 0x9877: 0xC076, //HANGUL SYLLABLE SSANGPIEUP YI SSANGKIYEOK - 0x9878: 0xC077, //HANGUL SYLLABLE SSANGPIEUP YI KIYEOKSIOS - 0x9879: 0xC078, //HANGUL SYLLABLE SSANGPIEUP YI NIEUN - 0x987A: 0xC079, //HANGUL SYLLABLE SSANGPIEUP YI NIEUNCIEUC - 0x9881: 0xC07A, //HANGUL SYLLABLE SSANGPIEUP YI NIEUNHIEUH - 0x9882: 0xC07B, //HANGUL SYLLABLE SSANGPIEUP YI TIKEUT - 0x9883: 0xC07C, //HANGUL SYLLABLE SSANGPIEUP YI RIEUL - 0x9884: 0xC07D, //HANGUL SYLLABLE SSANGPIEUP YI RIEULKIYEOK - 0x9885: 0xC07E, //HANGUL SYLLABLE SSANGPIEUP YI RIEULMIEUM - 0x9886: 0xC07F, //HANGUL SYLLABLE SSANGPIEUP YI RIEULPIEUP - 0x9887: 0xC080, //HANGUL SYLLABLE SSANGPIEUP YI RIEULSIOS - 0x9888: 0xC081, //HANGUL SYLLABLE SSANGPIEUP YI RIEULTHIEUTH - 0x9889: 0xC082, //HANGUL SYLLABLE SSANGPIEUP YI RIEULPHIEUPH - 0x988A: 0xC083, //HANGUL SYLLABLE SSANGPIEUP YI RIEULHIEUH - 0x988B: 0xC084, //HANGUL SYLLABLE SSANGPIEUP YI MIEUM - 0x988C: 0xC085, //HANGUL SYLLABLE SSANGPIEUP YI PIEUP - 0x988D: 0xC086, //HANGUL SYLLABLE SSANGPIEUP YI PIEUPSIOS - 0x988E: 0xC087, //HANGUL SYLLABLE SSANGPIEUP YI SIOS - 0x988F: 0xC088, //HANGUL SYLLABLE SSANGPIEUP YI SSANGSIOS - 0x9890: 0xC089, //HANGUL SYLLABLE SSANGPIEUP YI IEUNG - 0x9891: 0xC08A, //HANGUL SYLLABLE SSANGPIEUP YI CIEUC - 0x9892: 0xC08B, //HANGUL SYLLABLE SSANGPIEUP YI CHIEUCH - 0x9893: 0xC08C, //HANGUL SYLLABLE SSANGPIEUP YI KHIEUKH - 0x9894: 0xC08D, //HANGUL SYLLABLE SSANGPIEUP YI THIEUTH - 0x9895: 0xC08E, //HANGUL SYLLABLE SSANGPIEUP YI PHIEUPH - 0x9896: 0xC08F, //HANGUL SYLLABLE SSANGPIEUP YI HIEUH - 0x9897: 0xC092, //HANGUL SYLLABLE SSANGPIEUP I SSANGKIYEOK - 0x9898: 0xC093, //HANGUL SYLLABLE SSANGPIEUP I KIYEOKSIOS - 0x9899: 0xC095, //HANGUL SYLLABLE SSANGPIEUP I NIEUNCIEUC - 0x989A: 0xC096, //HANGUL SYLLABLE SSANGPIEUP I NIEUNHIEUH - 0x989B: 0xC097, //HANGUL SYLLABLE SSANGPIEUP I TIKEUT - 0x989C: 0xC099, //HANGUL SYLLABLE SSANGPIEUP I RIEULKIYEOK - 0x989D: 0xC09A, //HANGUL SYLLABLE SSANGPIEUP I RIEULMIEUM - 0x989E: 0xC09B, //HANGUL SYLLABLE SSANGPIEUP I RIEULPIEUP - 0x989F: 0xC09C, //HANGUL SYLLABLE SSANGPIEUP I RIEULSIOS - 0x98A0: 0xC09D, //HANGUL SYLLABLE SSANGPIEUP I RIEULTHIEUTH - 0x98A1: 0xC09E, //HANGUL SYLLABLE SSANGPIEUP I RIEULPHIEUPH - 0x98A2: 0xC09F, //HANGUL SYLLABLE SSANGPIEUP I RIEULHIEUH - 0x98A3: 0xC0A2, //HANGUL SYLLABLE SSANGPIEUP I PIEUPSIOS - 0x98A4: 0xC0A4, //HANGUL SYLLABLE SSANGPIEUP I SSANGSIOS - 0x98A5: 0xC0A6, //HANGUL SYLLABLE SSANGPIEUP I CIEUC - 0x98A6: 0xC0A7, //HANGUL SYLLABLE SSANGPIEUP I CHIEUCH - 0x98A7: 0xC0A8, //HANGUL SYLLABLE SSANGPIEUP I KHIEUKH - 0x98A8: 0xC0A9, //HANGUL SYLLABLE SSANGPIEUP I THIEUTH - 0x98A9: 0xC0AA, //HANGUL SYLLABLE SSANGPIEUP I PHIEUPH - 0x98AA: 0xC0AB, //HANGUL SYLLABLE SSANGPIEUP I HIEUH - 0x98AB: 0xC0AE, //HANGUL SYLLABLE SIOS A SSANGKIYEOK - 0x98AC: 0xC0B1, //HANGUL SYLLABLE SIOS A NIEUNCIEUC - 0x98AD: 0xC0B2, //HANGUL SYLLABLE SIOS A NIEUNHIEUH - 0x98AE: 0xC0B7, //HANGUL SYLLABLE SIOS A RIEULPIEUP - 0x98AF: 0xC0B8, //HANGUL SYLLABLE SIOS A RIEULSIOS - 0x98B0: 0xC0B9, //HANGUL SYLLABLE SIOS A RIEULTHIEUTH - 0x98B1: 0xC0BA, //HANGUL SYLLABLE SIOS A RIEULPHIEUPH - 0x98B2: 0xC0BB, //HANGUL SYLLABLE SIOS A RIEULHIEUH - 0x98B3: 0xC0BE, //HANGUL SYLLABLE SIOS A PIEUPSIOS - 0x98B4: 0xC0C2, //HANGUL SYLLABLE SIOS A CIEUC - 0x98B5: 0xC0C3, //HANGUL SYLLABLE SIOS A CHIEUCH - 0x98B6: 0xC0C4, //HANGUL SYLLABLE SIOS A KHIEUKH - 0x98B7: 0xC0C6, //HANGUL SYLLABLE SIOS A PHIEUPH - 0x98B8: 0xC0C7, //HANGUL SYLLABLE SIOS A HIEUH - 0x98B9: 0xC0CA, //HANGUL SYLLABLE SIOS AE SSANGKIYEOK - 0x98BA: 0xC0CB, //HANGUL SYLLABLE SIOS AE KIYEOKSIOS - 0x98BB: 0xC0CD, //HANGUL SYLLABLE SIOS AE NIEUNCIEUC - 0x98BC: 0xC0CE, //HANGUL SYLLABLE SIOS AE NIEUNHIEUH - 0x98BD: 0xC0CF, //HANGUL SYLLABLE SIOS AE TIKEUT - 0x98BE: 0xC0D1, //HANGUL SYLLABLE SIOS AE RIEULKIYEOK - 0x98BF: 0xC0D2, //HANGUL SYLLABLE SIOS AE RIEULMIEUM - 0x98C0: 0xC0D3, //HANGUL SYLLABLE SIOS AE RIEULPIEUP - 0x98C1: 0xC0D4, //HANGUL SYLLABLE SIOS AE RIEULSIOS - 0x98C2: 0xC0D5, //HANGUL SYLLABLE SIOS AE RIEULTHIEUTH - 0x98C3: 0xC0D6, //HANGUL SYLLABLE SIOS AE RIEULPHIEUPH - 0x98C4: 0xC0D7, //HANGUL SYLLABLE SIOS AE RIEULHIEUH - 0x98C5: 0xC0DA, //HANGUL SYLLABLE SIOS AE PIEUPSIOS - 0x98C6: 0xC0DE, //HANGUL SYLLABLE SIOS AE CIEUC - 0x98C7: 0xC0DF, //HANGUL SYLLABLE SIOS AE CHIEUCH - 0x98C8: 0xC0E0, //HANGUL SYLLABLE SIOS AE KHIEUKH - 0x98C9: 0xC0E1, //HANGUL SYLLABLE SIOS AE THIEUTH - 0x98CA: 0xC0E2, //HANGUL SYLLABLE SIOS AE PHIEUPH - 0x98CB: 0xC0E3, //HANGUL SYLLABLE SIOS AE HIEUH - 0x98CC: 0xC0E6, //HANGUL SYLLABLE SIOS YA SSANGKIYEOK - 0x98CD: 0xC0E7, //HANGUL SYLLABLE SIOS YA KIYEOKSIOS - 0x98CE: 0xC0E9, //HANGUL SYLLABLE SIOS YA NIEUNCIEUC - 0x98CF: 0xC0EA, //HANGUL SYLLABLE SIOS YA NIEUNHIEUH - 0x98D0: 0xC0EB, //HANGUL SYLLABLE SIOS YA TIKEUT - 0x98D1: 0xC0ED, //HANGUL SYLLABLE SIOS YA RIEULKIYEOK - 0x98D2: 0xC0EE, //HANGUL SYLLABLE SIOS YA RIEULMIEUM - 0x98D3: 0xC0EF, //HANGUL SYLLABLE SIOS YA RIEULPIEUP - 0x98D4: 0xC0F0, //HANGUL SYLLABLE SIOS YA RIEULSIOS - 0x98D5: 0xC0F1, //HANGUL SYLLABLE SIOS YA RIEULTHIEUTH - 0x98D6: 0xC0F2, //HANGUL SYLLABLE SIOS YA RIEULPHIEUPH - 0x98D7: 0xC0F3, //HANGUL SYLLABLE SIOS YA RIEULHIEUH - 0x98D8: 0xC0F6, //HANGUL SYLLABLE SIOS YA PIEUPSIOS - 0x98D9: 0xC0F8, //HANGUL SYLLABLE SIOS YA SSANGSIOS - 0x98DA: 0xC0FA, //HANGUL SYLLABLE SIOS YA CIEUC - 0x98DB: 0xC0FB, //HANGUL SYLLABLE SIOS YA CHIEUCH - 0x98DC: 0xC0FC, //HANGUL SYLLABLE SIOS YA KHIEUKH - 0x98DD: 0xC0FD, //HANGUL SYLLABLE SIOS YA THIEUTH - 0x98DE: 0xC0FE, //HANGUL SYLLABLE SIOS YA PHIEUPH - 0x98DF: 0xC0FF, //HANGUL SYLLABLE SIOS YA HIEUH - 0x98E0: 0xC101, //HANGUL SYLLABLE SIOS YAE KIYEOK - 0x98E1: 0xC102, //HANGUL SYLLABLE SIOS YAE SSANGKIYEOK - 0x98E2: 0xC103, //HANGUL SYLLABLE SIOS YAE KIYEOKSIOS - 0x98E3: 0xC105, //HANGUL SYLLABLE SIOS YAE NIEUNCIEUC - 0x98E4: 0xC106, //HANGUL SYLLABLE SIOS YAE NIEUNHIEUH - 0x98E5: 0xC107, //HANGUL SYLLABLE SIOS YAE TIKEUT - 0x98E6: 0xC109, //HANGUL SYLLABLE SIOS YAE RIEULKIYEOK - 0x98E7: 0xC10A, //HANGUL SYLLABLE SIOS YAE RIEULMIEUM - 0x98E8: 0xC10B, //HANGUL SYLLABLE SIOS YAE RIEULPIEUP - 0x98E9: 0xC10C, //HANGUL SYLLABLE SIOS YAE RIEULSIOS - 0x98EA: 0xC10D, //HANGUL SYLLABLE SIOS YAE RIEULTHIEUTH - 0x98EB: 0xC10E, //HANGUL SYLLABLE SIOS YAE RIEULPHIEUPH - 0x98EC: 0xC10F, //HANGUL SYLLABLE SIOS YAE RIEULHIEUH - 0x98ED: 0xC111, //HANGUL SYLLABLE SIOS YAE PIEUP - 0x98EE: 0xC112, //HANGUL SYLLABLE SIOS YAE PIEUPSIOS - 0x98EF: 0xC113, //HANGUL SYLLABLE SIOS YAE SIOS - 0x98F0: 0xC114, //HANGUL SYLLABLE SIOS YAE SSANGSIOS - 0x98F1: 0xC116, //HANGUL SYLLABLE SIOS YAE CIEUC - 0x98F2: 0xC117, //HANGUL SYLLABLE SIOS YAE CHIEUCH - 0x98F3: 0xC118, //HANGUL SYLLABLE SIOS YAE KHIEUKH - 0x98F4: 0xC119, //HANGUL SYLLABLE SIOS YAE THIEUTH - 0x98F5: 0xC11A, //HANGUL SYLLABLE SIOS YAE PHIEUPH - 0x98F6: 0xC11B, //HANGUL SYLLABLE SIOS YAE HIEUH - 0x98F7: 0xC121, //HANGUL SYLLABLE SIOS EO NIEUNCIEUC - 0x98F8: 0xC122, //HANGUL SYLLABLE SIOS EO NIEUNHIEUH - 0x98F9: 0xC125, //HANGUL SYLLABLE SIOS EO RIEULKIYEOK - 0x98FA: 0xC128, //HANGUL SYLLABLE SIOS EO RIEULSIOS - 0x98FB: 0xC129, //HANGUL SYLLABLE SIOS EO RIEULTHIEUTH - 0x98FC: 0xC12A, //HANGUL SYLLABLE SIOS EO RIEULPHIEUPH - 0x98FD: 0xC12B, //HANGUL SYLLABLE SIOS EO RIEULHIEUH - 0x98FE: 0xC12E, //HANGUL SYLLABLE SIOS EO PIEUPSIOS - 0x9941: 0xC132, //HANGUL SYLLABLE SIOS EO CIEUC - 0x9942: 0xC133, //HANGUL SYLLABLE SIOS EO CHIEUCH - 0x9943: 0xC134, //HANGUL SYLLABLE SIOS EO KHIEUKH - 0x9944: 0xC135, //HANGUL SYLLABLE SIOS EO THIEUTH - 0x9945: 0xC137, //HANGUL SYLLABLE SIOS EO HIEUH - 0x9946: 0xC13A, //HANGUL SYLLABLE SIOS E SSANGKIYEOK - 0x9947: 0xC13B, //HANGUL SYLLABLE SIOS E KIYEOKSIOS - 0x9948: 0xC13D, //HANGUL SYLLABLE SIOS E NIEUNCIEUC - 0x9949: 0xC13E, //HANGUL SYLLABLE SIOS E NIEUNHIEUH - 0x994A: 0xC13F, //HANGUL SYLLABLE SIOS E TIKEUT - 0x994B: 0xC141, //HANGUL SYLLABLE SIOS E RIEULKIYEOK - 0x994C: 0xC142, //HANGUL SYLLABLE SIOS E RIEULMIEUM - 0x994D: 0xC143, //HANGUL SYLLABLE SIOS E RIEULPIEUP - 0x994E: 0xC144, //HANGUL SYLLABLE SIOS E RIEULSIOS - 0x994F: 0xC145, //HANGUL SYLLABLE SIOS E RIEULTHIEUTH - 0x9950: 0xC146, //HANGUL SYLLABLE SIOS E RIEULPHIEUPH - 0x9951: 0xC147, //HANGUL SYLLABLE SIOS E RIEULHIEUH - 0x9952: 0xC14A, //HANGUL SYLLABLE SIOS E PIEUPSIOS - 0x9953: 0xC14E, //HANGUL SYLLABLE SIOS E CIEUC - 0x9954: 0xC14F, //HANGUL SYLLABLE SIOS E CHIEUCH - 0x9955: 0xC150, //HANGUL SYLLABLE SIOS E KHIEUKH - 0x9956: 0xC151, //HANGUL SYLLABLE SIOS E THIEUTH - 0x9957: 0xC152, //HANGUL SYLLABLE SIOS E PHIEUPH - 0x9958: 0xC153, //HANGUL SYLLABLE SIOS E HIEUH - 0x9959: 0xC156, //HANGUL SYLLABLE SIOS YEO SSANGKIYEOK - 0x995A: 0xC157, //HANGUL SYLLABLE SIOS YEO KIYEOKSIOS - 0x9961: 0xC159, //HANGUL SYLLABLE SIOS YEO NIEUNCIEUC - 0x9962: 0xC15A, //HANGUL SYLLABLE SIOS YEO NIEUNHIEUH - 0x9963: 0xC15B, //HANGUL SYLLABLE SIOS YEO TIKEUT - 0x9964: 0xC15D, //HANGUL SYLLABLE SIOS YEO RIEULKIYEOK - 0x9965: 0xC15E, //HANGUL SYLLABLE SIOS YEO RIEULMIEUM - 0x9966: 0xC15F, //HANGUL SYLLABLE SIOS YEO RIEULPIEUP - 0x9967: 0xC160, //HANGUL SYLLABLE SIOS YEO RIEULSIOS - 0x9968: 0xC161, //HANGUL SYLLABLE SIOS YEO RIEULTHIEUTH - 0x9969: 0xC162, //HANGUL SYLLABLE SIOS YEO RIEULPHIEUPH - 0x996A: 0xC163, //HANGUL SYLLABLE SIOS YEO RIEULHIEUH - 0x996B: 0xC166, //HANGUL SYLLABLE SIOS YEO PIEUPSIOS - 0x996C: 0xC16A, //HANGUL SYLLABLE SIOS YEO CIEUC - 0x996D: 0xC16B, //HANGUL SYLLABLE SIOS YEO CHIEUCH - 0x996E: 0xC16C, //HANGUL SYLLABLE SIOS YEO KHIEUKH - 0x996F: 0xC16D, //HANGUL SYLLABLE SIOS YEO THIEUTH - 0x9970: 0xC16E, //HANGUL SYLLABLE SIOS YEO PHIEUPH - 0x9971: 0xC16F, //HANGUL SYLLABLE SIOS YEO HIEUH - 0x9972: 0xC171, //HANGUL SYLLABLE SIOS YE KIYEOK - 0x9973: 0xC172, //HANGUL SYLLABLE SIOS YE SSANGKIYEOK - 0x9974: 0xC173, //HANGUL SYLLABLE SIOS YE KIYEOKSIOS - 0x9975: 0xC175, //HANGUL SYLLABLE SIOS YE NIEUNCIEUC - 0x9976: 0xC176, //HANGUL SYLLABLE SIOS YE NIEUNHIEUH - 0x9977: 0xC177, //HANGUL SYLLABLE SIOS YE TIKEUT - 0x9978: 0xC179, //HANGUL SYLLABLE SIOS YE RIEULKIYEOK - 0x9979: 0xC17A, //HANGUL SYLLABLE SIOS YE RIEULMIEUM - 0x997A: 0xC17B, //HANGUL SYLLABLE SIOS YE RIEULPIEUP - 0x9981: 0xC17C, //HANGUL SYLLABLE SIOS YE RIEULSIOS - 0x9982: 0xC17D, //HANGUL SYLLABLE SIOS YE RIEULTHIEUTH - 0x9983: 0xC17E, //HANGUL SYLLABLE SIOS YE RIEULPHIEUPH - 0x9984: 0xC17F, //HANGUL SYLLABLE SIOS YE RIEULHIEUH - 0x9985: 0xC180, //HANGUL SYLLABLE SIOS YE MIEUM - 0x9986: 0xC181, //HANGUL SYLLABLE SIOS YE PIEUP - 0x9987: 0xC182, //HANGUL SYLLABLE SIOS YE PIEUPSIOS - 0x9988: 0xC183, //HANGUL SYLLABLE SIOS YE SIOS - 0x9989: 0xC184, //HANGUL SYLLABLE SIOS YE SSANGSIOS - 0x998A: 0xC186, //HANGUL SYLLABLE SIOS YE CIEUC - 0x998B: 0xC187, //HANGUL SYLLABLE SIOS YE CHIEUCH - 0x998C: 0xC188, //HANGUL SYLLABLE SIOS YE KHIEUKH - 0x998D: 0xC189, //HANGUL SYLLABLE SIOS YE THIEUTH - 0x998E: 0xC18A, //HANGUL SYLLABLE SIOS YE PHIEUPH - 0x998F: 0xC18B, //HANGUL SYLLABLE SIOS YE HIEUH - 0x9990: 0xC18F, //HANGUL SYLLABLE SIOS O KIYEOKSIOS - 0x9991: 0xC191, //HANGUL SYLLABLE SIOS O NIEUNCIEUC - 0x9992: 0xC192, //HANGUL SYLLABLE SIOS O NIEUNHIEUH - 0x9993: 0xC193, //HANGUL SYLLABLE SIOS O TIKEUT - 0x9994: 0xC195, //HANGUL SYLLABLE SIOS O RIEULKIYEOK - 0x9995: 0xC197, //HANGUL SYLLABLE SIOS O RIEULPIEUP - 0x9996: 0xC198, //HANGUL SYLLABLE SIOS O RIEULSIOS - 0x9997: 0xC199, //HANGUL SYLLABLE SIOS O RIEULTHIEUTH - 0x9998: 0xC19A, //HANGUL SYLLABLE SIOS O RIEULPHIEUPH - 0x9999: 0xC19B, //HANGUL SYLLABLE SIOS O RIEULHIEUH - 0x999A: 0xC19E, //HANGUL SYLLABLE SIOS O PIEUPSIOS - 0x999B: 0xC1A0, //HANGUL SYLLABLE SIOS O SSANGSIOS - 0x999C: 0xC1A2, //HANGUL SYLLABLE SIOS O CIEUC - 0x999D: 0xC1A3, //HANGUL SYLLABLE SIOS O CHIEUCH - 0x999E: 0xC1A4, //HANGUL SYLLABLE SIOS O KHIEUKH - 0x999F: 0xC1A6, //HANGUL SYLLABLE SIOS O PHIEUPH - 0x99A0: 0xC1A7, //HANGUL SYLLABLE SIOS O HIEUH - 0x99A1: 0xC1AA, //HANGUL SYLLABLE SIOS WA SSANGKIYEOK - 0x99A2: 0xC1AB, //HANGUL SYLLABLE SIOS WA KIYEOKSIOS - 0x99A3: 0xC1AD, //HANGUL SYLLABLE SIOS WA NIEUNCIEUC - 0x99A4: 0xC1AE, //HANGUL SYLLABLE SIOS WA NIEUNHIEUH - 0x99A5: 0xC1AF, //HANGUL SYLLABLE SIOS WA TIKEUT - 0x99A6: 0xC1B1, //HANGUL SYLLABLE SIOS WA RIEULKIYEOK - 0x99A7: 0xC1B2, //HANGUL SYLLABLE SIOS WA RIEULMIEUM - 0x99A8: 0xC1B3, //HANGUL SYLLABLE SIOS WA RIEULPIEUP - 0x99A9: 0xC1B4, //HANGUL SYLLABLE SIOS WA RIEULSIOS - 0x99AA: 0xC1B5, //HANGUL SYLLABLE SIOS WA RIEULTHIEUTH - 0x99AB: 0xC1B6, //HANGUL SYLLABLE SIOS WA RIEULPHIEUPH - 0x99AC: 0xC1B7, //HANGUL SYLLABLE SIOS WA RIEULHIEUH - 0x99AD: 0xC1B8, //HANGUL SYLLABLE SIOS WA MIEUM - 0x99AE: 0xC1B9, //HANGUL SYLLABLE SIOS WA PIEUP - 0x99AF: 0xC1BA, //HANGUL SYLLABLE SIOS WA PIEUPSIOS - 0x99B0: 0xC1BB, //HANGUL SYLLABLE SIOS WA SIOS - 0x99B1: 0xC1BC, //HANGUL SYLLABLE SIOS WA SSANGSIOS - 0x99B2: 0xC1BE, //HANGUL SYLLABLE SIOS WA CIEUC - 0x99B3: 0xC1BF, //HANGUL SYLLABLE SIOS WA CHIEUCH - 0x99B4: 0xC1C0, //HANGUL SYLLABLE SIOS WA KHIEUKH - 0x99B5: 0xC1C1, //HANGUL SYLLABLE SIOS WA THIEUTH - 0x99B6: 0xC1C2, //HANGUL SYLLABLE SIOS WA PHIEUPH - 0x99B7: 0xC1C3, //HANGUL SYLLABLE SIOS WA HIEUH - 0x99B8: 0xC1C5, //HANGUL SYLLABLE SIOS WAE KIYEOK - 0x99B9: 0xC1C6, //HANGUL SYLLABLE SIOS WAE SSANGKIYEOK - 0x99BA: 0xC1C7, //HANGUL SYLLABLE SIOS WAE KIYEOKSIOS - 0x99BB: 0xC1C9, //HANGUL SYLLABLE SIOS WAE NIEUNCIEUC - 0x99BC: 0xC1CA, //HANGUL SYLLABLE SIOS WAE NIEUNHIEUH - 0x99BD: 0xC1CB, //HANGUL SYLLABLE SIOS WAE TIKEUT - 0x99BE: 0xC1CD, //HANGUL SYLLABLE SIOS WAE RIEULKIYEOK - 0x99BF: 0xC1CE, //HANGUL SYLLABLE SIOS WAE RIEULMIEUM - 0x99C0: 0xC1CF, //HANGUL SYLLABLE SIOS WAE RIEULPIEUP - 0x99C1: 0xC1D0, //HANGUL SYLLABLE SIOS WAE RIEULSIOS - 0x99C2: 0xC1D1, //HANGUL SYLLABLE SIOS WAE RIEULTHIEUTH - 0x99C3: 0xC1D2, //HANGUL SYLLABLE SIOS WAE RIEULPHIEUPH - 0x99C4: 0xC1D3, //HANGUL SYLLABLE SIOS WAE RIEULHIEUH - 0x99C5: 0xC1D5, //HANGUL SYLLABLE SIOS WAE PIEUP - 0x99C6: 0xC1D6, //HANGUL SYLLABLE SIOS WAE PIEUPSIOS - 0x99C7: 0xC1D9, //HANGUL SYLLABLE SIOS WAE IEUNG - 0x99C8: 0xC1DA, //HANGUL SYLLABLE SIOS WAE CIEUC - 0x99C9: 0xC1DB, //HANGUL SYLLABLE SIOS WAE CHIEUCH - 0x99CA: 0xC1DC, //HANGUL SYLLABLE SIOS WAE KHIEUKH - 0x99CB: 0xC1DD, //HANGUL SYLLABLE SIOS WAE THIEUTH - 0x99CC: 0xC1DE, //HANGUL SYLLABLE SIOS WAE PHIEUPH - 0x99CD: 0xC1DF, //HANGUL SYLLABLE SIOS WAE HIEUH - 0x99CE: 0xC1E1, //HANGUL SYLLABLE SIOS OE KIYEOK - 0x99CF: 0xC1E2, //HANGUL SYLLABLE SIOS OE SSANGKIYEOK - 0x99D0: 0xC1E3, //HANGUL SYLLABLE SIOS OE KIYEOKSIOS - 0x99D1: 0xC1E5, //HANGUL SYLLABLE SIOS OE NIEUNCIEUC - 0x99D2: 0xC1E6, //HANGUL SYLLABLE SIOS OE NIEUNHIEUH - 0x99D3: 0xC1E7, //HANGUL SYLLABLE SIOS OE TIKEUT - 0x99D4: 0xC1E9, //HANGUL SYLLABLE SIOS OE RIEULKIYEOK - 0x99D5: 0xC1EA, //HANGUL SYLLABLE SIOS OE RIEULMIEUM - 0x99D6: 0xC1EB, //HANGUL SYLLABLE SIOS OE RIEULPIEUP - 0x99D7: 0xC1EC, //HANGUL SYLLABLE SIOS OE RIEULSIOS - 0x99D8: 0xC1ED, //HANGUL SYLLABLE SIOS OE RIEULTHIEUTH - 0x99D9: 0xC1EE, //HANGUL SYLLABLE SIOS OE RIEULPHIEUPH - 0x99DA: 0xC1EF, //HANGUL SYLLABLE SIOS OE RIEULHIEUH - 0x99DB: 0xC1F2, //HANGUL SYLLABLE SIOS OE PIEUPSIOS - 0x99DC: 0xC1F4, //HANGUL SYLLABLE SIOS OE SSANGSIOS - 0x99DD: 0xC1F5, //HANGUL SYLLABLE SIOS OE IEUNG - 0x99DE: 0xC1F6, //HANGUL SYLLABLE SIOS OE CIEUC - 0x99DF: 0xC1F7, //HANGUL SYLLABLE SIOS OE CHIEUCH - 0x99E0: 0xC1F8, //HANGUL SYLLABLE SIOS OE KHIEUKH - 0x99E1: 0xC1F9, //HANGUL SYLLABLE SIOS OE THIEUTH - 0x99E2: 0xC1FA, //HANGUL SYLLABLE SIOS OE PHIEUPH - 0x99E3: 0xC1FB, //HANGUL SYLLABLE SIOS OE HIEUH - 0x99E4: 0xC1FE, //HANGUL SYLLABLE SIOS YO SSANGKIYEOK - 0x99E5: 0xC1FF, //HANGUL SYLLABLE SIOS YO KIYEOKSIOS - 0x99E6: 0xC201, //HANGUL SYLLABLE SIOS YO NIEUNCIEUC - 0x99E7: 0xC202, //HANGUL SYLLABLE SIOS YO NIEUNHIEUH - 0x99E8: 0xC203, //HANGUL SYLLABLE SIOS YO TIKEUT - 0x99E9: 0xC205, //HANGUL SYLLABLE SIOS YO RIEULKIYEOK - 0x99EA: 0xC206, //HANGUL SYLLABLE SIOS YO RIEULMIEUM - 0x99EB: 0xC207, //HANGUL SYLLABLE SIOS YO RIEULPIEUP - 0x99EC: 0xC208, //HANGUL SYLLABLE SIOS YO RIEULSIOS - 0x99ED: 0xC209, //HANGUL SYLLABLE SIOS YO RIEULTHIEUTH - 0x99EE: 0xC20A, //HANGUL SYLLABLE SIOS YO RIEULPHIEUPH - 0x99EF: 0xC20B, //HANGUL SYLLABLE SIOS YO RIEULHIEUH - 0x99F0: 0xC20E, //HANGUL SYLLABLE SIOS YO PIEUPSIOS - 0x99F1: 0xC210, //HANGUL SYLLABLE SIOS YO SSANGSIOS - 0x99F2: 0xC212, //HANGUL SYLLABLE SIOS YO CIEUC - 0x99F3: 0xC213, //HANGUL SYLLABLE SIOS YO CHIEUCH - 0x99F4: 0xC214, //HANGUL SYLLABLE SIOS YO KHIEUKH - 0x99F5: 0xC215, //HANGUL SYLLABLE SIOS YO THIEUTH - 0x99F6: 0xC216, //HANGUL SYLLABLE SIOS YO PHIEUPH - 0x99F7: 0xC217, //HANGUL SYLLABLE SIOS YO HIEUH - 0x99F8: 0xC21A, //HANGUL SYLLABLE SIOS U SSANGKIYEOK - 0x99F9: 0xC21B, //HANGUL SYLLABLE SIOS U KIYEOKSIOS - 0x99FA: 0xC21D, //HANGUL SYLLABLE SIOS U NIEUNCIEUC - 0x99FB: 0xC21E, //HANGUL SYLLABLE SIOS U NIEUNHIEUH - 0x99FC: 0xC221, //HANGUL SYLLABLE SIOS U RIEULKIYEOK - 0x99FD: 0xC222, //HANGUL SYLLABLE SIOS U RIEULMIEUM - 0x99FE: 0xC223, //HANGUL SYLLABLE SIOS U RIEULPIEUP - 0x9A41: 0xC224, //HANGUL SYLLABLE SIOS U RIEULSIOS - 0x9A42: 0xC225, //HANGUL SYLLABLE SIOS U RIEULTHIEUTH - 0x9A43: 0xC226, //HANGUL SYLLABLE SIOS U RIEULPHIEUPH - 0x9A44: 0xC227, //HANGUL SYLLABLE SIOS U RIEULHIEUH - 0x9A45: 0xC22A, //HANGUL SYLLABLE SIOS U PIEUPSIOS - 0x9A46: 0xC22C, //HANGUL SYLLABLE SIOS U SSANGSIOS - 0x9A47: 0xC22E, //HANGUL SYLLABLE SIOS U CIEUC - 0x9A48: 0xC230, //HANGUL SYLLABLE SIOS U KHIEUKH - 0x9A49: 0xC233, //HANGUL SYLLABLE SIOS U HIEUH - 0x9A4A: 0xC235, //HANGUL SYLLABLE SIOS WEO KIYEOK - 0x9A4B: 0xC236, //HANGUL SYLLABLE SIOS WEO SSANGKIYEOK - 0x9A4C: 0xC237, //HANGUL SYLLABLE SIOS WEO KIYEOKSIOS - 0x9A4D: 0xC238, //HANGUL SYLLABLE SIOS WEO NIEUN - 0x9A4E: 0xC239, //HANGUL SYLLABLE SIOS WEO NIEUNCIEUC - 0x9A4F: 0xC23A, //HANGUL SYLLABLE SIOS WEO NIEUNHIEUH - 0x9A50: 0xC23B, //HANGUL SYLLABLE SIOS WEO TIKEUT - 0x9A51: 0xC23C, //HANGUL SYLLABLE SIOS WEO RIEUL - 0x9A52: 0xC23D, //HANGUL SYLLABLE SIOS WEO RIEULKIYEOK - 0x9A53: 0xC23E, //HANGUL SYLLABLE SIOS WEO RIEULMIEUM - 0x9A54: 0xC23F, //HANGUL SYLLABLE SIOS WEO RIEULPIEUP - 0x9A55: 0xC240, //HANGUL SYLLABLE SIOS WEO RIEULSIOS - 0x9A56: 0xC241, //HANGUL SYLLABLE SIOS WEO RIEULTHIEUTH - 0x9A57: 0xC242, //HANGUL SYLLABLE SIOS WEO RIEULPHIEUPH - 0x9A58: 0xC243, //HANGUL SYLLABLE SIOS WEO RIEULHIEUH - 0x9A59: 0xC244, //HANGUL SYLLABLE SIOS WEO MIEUM - 0x9A5A: 0xC245, //HANGUL SYLLABLE SIOS WEO PIEUP - 0x9A61: 0xC246, //HANGUL SYLLABLE SIOS WEO PIEUPSIOS - 0x9A62: 0xC247, //HANGUL SYLLABLE SIOS WEO SIOS - 0x9A63: 0xC249, //HANGUL SYLLABLE SIOS WEO IEUNG - 0x9A64: 0xC24A, //HANGUL SYLLABLE SIOS WEO CIEUC - 0x9A65: 0xC24B, //HANGUL SYLLABLE SIOS WEO CHIEUCH - 0x9A66: 0xC24C, //HANGUL SYLLABLE SIOS WEO KHIEUKH - 0x9A67: 0xC24D, //HANGUL SYLLABLE SIOS WEO THIEUTH - 0x9A68: 0xC24E, //HANGUL SYLLABLE SIOS WEO PHIEUPH - 0x9A69: 0xC24F, //HANGUL SYLLABLE SIOS WEO HIEUH - 0x9A6A: 0xC252, //HANGUL SYLLABLE SIOS WE SSANGKIYEOK - 0x9A6B: 0xC253, //HANGUL SYLLABLE SIOS WE KIYEOKSIOS - 0x9A6C: 0xC255, //HANGUL SYLLABLE SIOS WE NIEUNCIEUC - 0x9A6D: 0xC256, //HANGUL SYLLABLE SIOS WE NIEUNHIEUH - 0x9A6E: 0xC257, //HANGUL SYLLABLE SIOS WE TIKEUT - 0x9A6F: 0xC259, //HANGUL SYLLABLE SIOS WE RIEULKIYEOK - 0x9A70: 0xC25A, //HANGUL SYLLABLE SIOS WE RIEULMIEUM - 0x9A71: 0xC25B, //HANGUL SYLLABLE SIOS WE RIEULPIEUP - 0x9A72: 0xC25C, //HANGUL SYLLABLE SIOS WE RIEULSIOS - 0x9A73: 0xC25D, //HANGUL SYLLABLE SIOS WE RIEULTHIEUTH - 0x9A74: 0xC25E, //HANGUL SYLLABLE SIOS WE RIEULPHIEUPH - 0x9A75: 0xC25F, //HANGUL SYLLABLE SIOS WE RIEULHIEUH - 0x9A76: 0xC261, //HANGUL SYLLABLE SIOS WE PIEUP - 0x9A77: 0xC262, //HANGUL SYLLABLE SIOS WE PIEUPSIOS - 0x9A78: 0xC263, //HANGUL SYLLABLE SIOS WE SIOS - 0x9A79: 0xC264, //HANGUL SYLLABLE SIOS WE SSANGSIOS - 0x9A7A: 0xC266, //HANGUL SYLLABLE SIOS WE CIEUC - 0x9A81: 0xC267, //HANGUL SYLLABLE SIOS WE CHIEUCH - 0x9A82: 0xC268, //HANGUL SYLLABLE SIOS WE KHIEUKH - 0x9A83: 0xC269, //HANGUL SYLLABLE SIOS WE THIEUTH - 0x9A84: 0xC26A, //HANGUL SYLLABLE SIOS WE PHIEUPH - 0x9A85: 0xC26B, //HANGUL SYLLABLE SIOS WE HIEUH - 0x9A86: 0xC26E, //HANGUL SYLLABLE SIOS WI SSANGKIYEOK - 0x9A87: 0xC26F, //HANGUL SYLLABLE SIOS WI KIYEOKSIOS - 0x9A88: 0xC271, //HANGUL SYLLABLE SIOS WI NIEUNCIEUC - 0x9A89: 0xC272, //HANGUL SYLLABLE SIOS WI NIEUNHIEUH - 0x9A8A: 0xC273, //HANGUL SYLLABLE SIOS WI TIKEUT - 0x9A8B: 0xC275, //HANGUL SYLLABLE SIOS WI RIEULKIYEOK - 0x9A8C: 0xC276, //HANGUL SYLLABLE SIOS WI RIEULMIEUM - 0x9A8D: 0xC277, //HANGUL SYLLABLE SIOS WI RIEULPIEUP - 0x9A8E: 0xC278, //HANGUL SYLLABLE SIOS WI RIEULSIOS - 0x9A8F: 0xC279, //HANGUL SYLLABLE SIOS WI RIEULTHIEUTH - 0x9A90: 0xC27A, //HANGUL SYLLABLE SIOS WI RIEULPHIEUPH - 0x9A91: 0xC27B, //HANGUL SYLLABLE SIOS WI RIEULHIEUH - 0x9A92: 0xC27E, //HANGUL SYLLABLE SIOS WI PIEUPSIOS - 0x9A93: 0xC280, //HANGUL SYLLABLE SIOS WI SSANGSIOS - 0x9A94: 0xC282, //HANGUL SYLLABLE SIOS WI CIEUC - 0x9A95: 0xC283, //HANGUL SYLLABLE SIOS WI CHIEUCH - 0x9A96: 0xC284, //HANGUL SYLLABLE SIOS WI KHIEUKH - 0x9A97: 0xC285, //HANGUL SYLLABLE SIOS WI THIEUTH - 0x9A98: 0xC286, //HANGUL SYLLABLE SIOS WI PHIEUPH - 0x9A99: 0xC287, //HANGUL SYLLABLE SIOS WI HIEUH - 0x9A9A: 0xC28A, //HANGUL SYLLABLE SIOS YU SSANGKIYEOK - 0x9A9B: 0xC28B, //HANGUL SYLLABLE SIOS YU KIYEOKSIOS - 0x9A9C: 0xC28C, //HANGUL SYLLABLE SIOS YU NIEUN - 0x9A9D: 0xC28D, //HANGUL SYLLABLE SIOS YU NIEUNCIEUC - 0x9A9E: 0xC28E, //HANGUL SYLLABLE SIOS YU NIEUNHIEUH - 0x9A9F: 0xC28F, //HANGUL SYLLABLE SIOS YU TIKEUT - 0x9AA0: 0xC291, //HANGUL SYLLABLE SIOS YU RIEULKIYEOK - 0x9AA1: 0xC292, //HANGUL SYLLABLE SIOS YU RIEULMIEUM - 0x9AA2: 0xC293, //HANGUL SYLLABLE SIOS YU RIEULPIEUP - 0x9AA3: 0xC294, //HANGUL SYLLABLE SIOS YU RIEULSIOS - 0x9AA4: 0xC295, //HANGUL SYLLABLE SIOS YU RIEULTHIEUTH - 0x9AA5: 0xC296, //HANGUL SYLLABLE SIOS YU RIEULPHIEUPH - 0x9AA6: 0xC297, //HANGUL SYLLABLE SIOS YU RIEULHIEUH - 0x9AA7: 0xC299, //HANGUL SYLLABLE SIOS YU PIEUP - 0x9AA8: 0xC29A, //HANGUL SYLLABLE SIOS YU PIEUPSIOS - 0x9AA9: 0xC29C, //HANGUL SYLLABLE SIOS YU SSANGSIOS - 0x9AAA: 0xC29E, //HANGUL SYLLABLE SIOS YU CIEUC - 0x9AAB: 0xC29F, //HANGUL SYLLABLE SIOS YU CHIEUCH - 0x9AAC: 0xC2A0, //HANGUL SYLLABLE SIOS YU KHIEUKH - 0x9AAD: 0xC2A1, //HANGUL SYLLABLE SIOS YU THIEUTH - 0x9AAE: 0xC2A2, //HANGUL SYLLABLE SIOS YU PHIEUPH - 0x9AAF: 0xC2A3, //HANGUL SYLLABLE SIOS YU HIEUH - 0x9AB0: 0xC2A6, //HANGUL SYLLABLE SIOS EU SSANGKIYEOK - 0x9AB1: 0xC2A7, //HANGUL SYLLABLE SIOS EU KIYEOKSIOS - 0x9AB2: 0xC2A9, //HANGUL SYLLABLE SIOS EU NIEUNCIEUC - 0x9AB3: 0xC2AA, //HANGUL SYLLABLE SIOS EU NIEUNHIEUH - 0x9AB4: 0xC2AB, //HANGUL SYLLABLE SIOS EU TIKEUT - 0x9AB5: 0xC2AE, //HANGUL SYLLABLE SIOS EU RIEULMIEUM - 0x9AB6: 0xC2AF, //HANGUL SYLLABLE SIOS EU RIEULPIEUP - 0x9AB7: 0xC2B0, //HANGUL SYLLABLE SIOS EU RIEULSIOS - 0x9AB8: 0xC2B1, //HANGUL SYLLABLE SIOS EU RIEULTHIEUTH - 0x9AB9: 0xC2B2, //HANGUL SYLLABLE SIOS EU RIEULPHIEUPH - 0x9ABA: 0xC2B3, //HANGUL SYLLABLE SIOS EU RIEULHIEUH - 0x9ABB: 0xC2B6, //HANGUL SYLLABLE SIOS EU PIEUPSIOS - 0x9ABC: 0xC2B8, //HANGUL SYLLABLE SIOS EU SSANGSIOS - 0x9ABD: 0xC2BA, //HANGUL SYLLABLE SIOS EU CIEUC - 0x9ABE: 0xC2BB, //HANGUL SYLLABLE SIOS EU CHIEUCH - 0x9ABF: 0xC2BC, //HANGUL SYLLABLE SIOS EU KHIEUKH - 0x9AC0: 0xC2BD, //HANGUL SYLLABLE SIOS EU THIEUTH - 0x9AC1: 0xC2BE, //HANGUL SYLLABLE SIOS EU PHIEUPH - 0x9AC2: 0xC2BF, //HANGUL SYLLABLE SIOS EU HIEUH - 0x9AC3: 0xC2C0, //HANGUL SYLLABLE SIOS YI - 0x9AC4: 0xC2C1, //HANGUL SYLLABLE SIOS YI KIYEOK - 0x9AC5: 0xC2C2, //HANGUL SYLLABLE SIOS YI SSANGKIYEOK - 0x9AC6: 0xC2C3, //HANGUL SYLLABLE SIOS YI KIYEOKSIOS - 0x9AC7: 0xC2C4, //HANGUL SYLLABLE SIOS YI NIEUN - 0x9AC8: 0xC2C5, //HANGUL SYLLABLE SIOS YI NIEUNCIEUC - 0x9AC9: 0xC2C6, //HANGUL SYLLABLE SIOS YI NIEUNHIEUH - 0x9ACA: 0xC2C7, //HANGUL SYLLABLE SIOS YI TIKEUT - 0x9ACB: 0xC2C8, //HANGUL SYLLABLE SIOS YI RIEUL - 0x9ACC: 0xC2C9, //HANGUL SYLLABLE SIOS YI RIEULKIYEOK - 0x9ACD: 0xC2CA, //HANGUL SYLLABLE SIOS YI RIEULMIEUM - 0x9ACE: 0xC2CB, //HANGUL SYLLABLE SIOS YI RIEULPIEUP - 0x9ACF: 0xC2CC, //HANGUL SYLLABLE SIOS YI RIEULSIOS - 0x9AD0: 0xC2CD, //HANGUL SYLLABLE SIOS YI RIEULTHIEUTH - 0x9AD1: 0xC2CE, //HANGUL SYLLABLE SIOS YI RIEULPHIEUPH - 0x9AD2: 0xC2CF, //HANGUL SYLLABLE SIOS YI RIEULHIEUH - 0x9AD3: 0xC2D0, //HANGUL SYLLABLE SIOS YI MIEUM - 0x9AD4: 0xC2D1, //HANGUL SYLLABLE SIOS YI PIEUP - 0x9AD5: 0xC2D2, //HANGUL SYLLABLE SIOS YI PIEUPSIOS - 0x9AD6: 0xC2D3, //HANGUL SYLLABLE SIOS YI SIOS - 0x9AD7: 0xC2D4, //HANGUL SYLLABLE SIOS YI SSANGSIOS - 0x9AD8: 0xC2D5, //HANGUL SYLLABLE SIOS YI IEUNG - 0x9AD9: 0xC2D6, //HANGUL SYLLABLE SIOS YI CIEUC - 0x9ADA: 0xC2D7, //HANGUL SYLLABLE SIOS YI CHIEUCH - 0x9ADB: 0xC2D8, //HANGUL SYLLABLE SIOS YI KHIEUKH - 0x9ADC: 0xC2D9, //HANGUL SYLLABLE SIOS YI THIEUTH - 0x9ADD: 0xC2DA, //HANGUL SYLLABLE SIOS YI PHIEUPH - 0x9ADE: 0xC2DB, //HANGUL SYLLABLE SIOS YI HIEUH - 0x9ADF: 0xC2DE, //HANGUL SYLLABLE SIOS I SSANGKIYEOK - 0x9AE0: 0xC2DF, //HANGUL SYLLABLE SIOS I KIYEOKSIOS - 0x9AE1: 0xC2E1, //HANGUL SYLLABLE SIOS I NIEUNCIEUC - 0x9AE2: 0xC2E2, //HANGUL SYLLABLE SIOS I NIEUNHIEUH - 0x9AE3: 0xC2E5, //HANGUL SYLLABLE SIOS I RIEULKIYEOK - 0x9AE4: 0xC2E6, //HANGUL SYLLABLE SIOS I RIEULMIEUM - 0x9AE5: 0xC2E7, //HANGUL SYLLABLE SIOS I RIEULPIEUP - 0x9AE6: 0xC2E8, //HANGUL SYLLABLE SIOS I RIEULSIOS - 0x9AE7: 0xC2E9, //HANGUL SYLLABLE SIOS I RIEULTHIEUTH - 0x9AE8: 0xC2EA, //HANGUL SYLLABLE SIOS I RIEULPHIEUPH - 0x9AE9: 0xC2EE, //HANGUL SYLLABLE SIOS I PIEUPSIOS - 0x9AEA: 0xC2F0, //HANGUL SYLLABLE SIOS I SSANGSIOS - 0x9AEB: 0xC2F2, //HANGUL SYLLABLE SIOS I CIEUC - 0x9AEC: 0xC2F3, //HANGUL SYLLABLE SIOS I CHIEUCH - 0x9AED: 0xC2F4, //HANGUL SYLLABLE SIOS I KHIEUKH - 0x9AEE: 0xC2F5, //HANGUL SYLLABLE SIOS I THIEUTH - 0x9AEF: 0xC2F7, //HANGUL SYLLABLE SIOS I HIEUH - 0x9AF0: 0xC2FA, //HANGUL SYLLABLE SSANGSIOS A SSANGKIYEOK - 0x9AF1: 0xC2FD, //HANGUL SYLLABLE SSANGSIOS A NIEUNCIEUC - 0x9AF2: 0xC2FE, //HANGUL SYLLABLE SSANGSIOS A NIEUNHIEUH - 0x9AF3: 0xC2FF, //HANGUL SYLLABLE SSANGSIOS A TIKEUT - 0x9AF4: 0xC301, //HANGUL SYLLABLE SSANGSIOS A RIEULKIYEOK - 0x9AF5: 0xC302, //HANGUL SYLLABLE SSANGSIOS A RIEULMIEUM - 0x9AF6: 0xC303, //HANGUL SYLLABLE SSANGSIOS A RIEULPIEUP - 0x9AF7: 0xC304, //HANGUL SYLLABLE SSANGSIOS A RIEULSIOS - 0x9AF8: 0xC305, //HANGUL SYLLABLE SSANGSIOS A RIEULTHIEUTH - 0x9AF9: 0xC306, //HANGUL SYLLABLE SSANGSIOS A RIEULPHIEUPH - 0x9AFA: 0xC307, //HANGUL SYLLABLE SSANGSIOS A RIEULHIEUH - 0x9AFB: 0xC30A, //HANGUL SYLLABLE SSANGSIOS A PIEUPSIOS - 0x9AFC: 0xC30B, //HANGUL SYLLABLE SSANGSIOS A SIOS - 0x9AFD: 0xC30E, //HANGUL SYLLABLE SSANGSIOS A CIEUC - 0x9AFE: 0xC30F, //HANGUL SYLLABLE SSANGSIOS A CHIEUCH - 0x9B41: 0xC310, //HANGUL SYLLABLE SSANGSIOS A KHIEUKH - 0x9B42: 0xC311, //HANGUL SYLLABLE SSANGSIOS A THIEUTH - 0x9B43: 0xC312, //HANGUL SYLLABLE SSANGSIOS A PHIEUPH - 0x9B44: 0xC316, //HANGUL SYLLABLE SSANGSIOS AE SSANGKIYEOK - 0x9B45: 0xC317, //HANGUL SYLLABLE SSANGSIOS AE KIYEOKSIOS - 0x9B46: 0xC319, //HANGUL SYLLABLE SSANGSIOS AE NIEUNCIEUC - 0x9B47: 0xC31A, //HANGUL SYLLABLE SSANGSIOS AE NIEUNHIEUH - 0x9B48: 0xC31B, //HANGUL SYLLABLE SSANGSIOS AE TIKEUT - 0x9B49: 0xC31D, //HANGUL SYLLABLE SSANGSIOS AE RIEULKIYEOK - 0x9B4A: 0xC31E, //HANGUL SYLLABLE SSANGSIOS AE RIEULMIEUM - 0x9B4B: 0xC31F, //HANGUL SYLLABLE SSANGSIOS AE RIEULPIEUP - 0x9B4C: 0xC320, //HANGUL SYLLABLE SSANGSIOS AE RIEULSIOS - 0x9B4D: 0xC321, //HANGUL SYLLABLE SSANGSIOS AE RIEULTHIEUTH - 0x9B4E: 0xC322, //HANGUL SYLLABLE SSANGSIOS AE RIEULPHIEUPH - 0x9B4F: 0xC323, //HANGUL SYLLABLE SSANGSIOS AE RIEULHIEUH - 0x9B50: 0xC326, //HANGUL SYLLABLE SSANGSIOS AE PIEUPSIOS - 0x9B51: 0xC327, //HANGUL SYLLABLE SSANGSIOS AE SIOS - 0x9B52: 0xC32A, //HANGUL SYLLABLE SSANGSIOS AE CIEUC - 0x9B53: 0xC32B, //HANGUL SYLLABLE SSANGSIOS AE CHIEUCH - 0x9B54: 0xC32C, //HANGUL SYLLABLE SSANGSIOS AE KHIEUKH - 0x9B55: 0xC32D, //HANGUL SYLLABLE SSANGSIOS AE THIEUTH - 0x9B56: 0xC32E, //HANGUL SYLLABLE SSANGSIOS AE PHIEUPH - 0x9B57: 0xC32F, //HANGUL SYLLABLE SSANGSIOS AE HIEUH - 0x9B58: 0xC330, //HANGUL SYLLABLE SSANGSIOS YA - 0x9B59: 0xC331, //HANGUL SYLLABLE SSANGSIOS YA KIYEOK - 0x9B5A: 0xC332, //HANGUL SYLLABLE SSANGSIOS YA SSANGKIYEOK - 0x9B61: 0xC333, //HANGUL SYLLABLE SSANGSIOS YA KIYEOKSIOS - 0x9B62: 0xC334, //HANGUL SYLLABLE SSANGSIOS YA NIEUN - 0x9B63: 0xC335, //HANGUL SYLLABLE SSANGSIOS YA NIEUNCIEUC - 0x9B64: 0xC336, //HANGUL SYLLABLE SSANGSIOS YA NIEUNHIEUH - 0x9B65: 0xC337, //HANGUL SYLLABLE SSANGSIOS YA TIKEUT - 0x9B66: 0xC338, //HANGUL SYLLABLE SSANGSIOS YA RIEUL - 0x9B67: 0xC339, //HANGUL SYLLABLE SSANGSIOS YA RIEULKIYEOK - 0x9B68: 0xC33A, //HANGUL SYLLABLE SSANGSIOS YA RIEULMIEUM - 0x9B69: 0xC33B, //HANGUL SYLLABLE SSANGSIOS YA RIEULPIEUP - 0x9B6A: 0xC33C, //HANGUL SYLLABLE SSANGSIOS YA RIEULSIOS - 0x9B6B: 0xC33D, //HANGUL SYLLABLE SSANGSIOS YA RIEULTHIEUTH - 0x9B6C: 0xC33E, //HANGUL SYLLABLE SSANGSIOS YA RIEULPHIEUPH - 0x9B6D: 0xC33F, //HANGUL SYLLABLE SSANGSIOS YA RIEULHIEUH - 0x9B6E: 0xC340, //HANGUL SYLLABLE SSANGSIOS YA MIEUM - 0x9B6F: 0xC341, //HANGUL SYLLABLE SSANGSIOS YA PIEUP - 0x9B70: 0xC342, //HANGUL SYLLABLE SSANGSIOS YA PIEUPSIOS - 0x9B71: 0xC343, //HANGUL SYLLABLE SSANGSIOS YA SIOS - 0x9B72: 0xC344, //HANGUL SYLLABLE SSANGSIOS YA SSANGSIOS - 0x9B73: 0xC346, //HANGUL SYLLABLE SSANGSIOS YA CIEUC - 0x9B74: 0xC347, //HANGUL SYLLABLE SSANGSIOS YA CHIEUCH - 0x9B75: 0xC348, //HANGUL SYLLABLE SSANGSIOS YA KHIEUKH - 0x9B76: 0xC349, //HANGUL SYLLABLE SSANGSIOS YA THIEUTH - 0x9B77: 0xC34A, //HANGUL SYLLABLE SSANGSIOS YA PHIEUPH - 0x9B78: 0xC34B, //HANGUL SYLLABLE SSANGSIOS YA HIEUH - 0x9B79: 0xC34C, //HANGUL SYLLABLE SSANGSIOS YAE - 0x9B7A: 0xC34D, //HANGUL SYLLABLE SSANGSIOS YAE KIYEOK - 0x9B81: 0xC34E, //HANGUL SYLLABLE SSANGSIOS YAE SSANGKIYEOK - 0x9B82: 0xC34F, //HANGUL SYLLABLE SSANGSIOS YAE KIYEOKSIOS - 0x9B83: 0xC350, //HANGUL SYLLABLE SSANGSIOS YAE NIEUN - 0x9B84: 0xC351, //HANGUL SYLLABLE SSANGSIOS YAE NIEUNCIEUC - 0x9B85: 0xC352, //HANGUL SYLLABLE SSANGSIOS YAE NIEUNHIEUH - 0x9B86: 0xC353, //HANGUL SYLLABLE SSANGSIOS YAE TIKEUT - 0x9B87: 0xC354, //HANGUL SYLLABLE SSANGSIOS YAE RIEUL - 0x9B88: 0xC355, //HANGUL SYLLABLE SSANGSIOS YAE RIEULKIYEOK - 0x9B89: 0xC356, //HANGUL SYLLABLE SSANGSIOS YAE RIEULMIEUM - 0x9B8A: 0xC357, //HANGUL SYLLABLE SSANGSIOS YAE RIEULPIEUP - 0x9B8B: 0xC358, //HANGUL SYLLABLE SSANGSIOS YAE RIEULSIOS - 0x9B8C: 0xC359, //HANGUL SYLLABLE SSANGSIOS YAE RIEULTHIEUTH - 0x9B8D: 0xC35A, //HANGUL SYLLABLE SSANGSIOS YAE RIEULPHIEUPH - 0x9B8E: 0xC35B, //HANGUL SYLLABLE SSANGSIOS YAE RIEULHIEUH - 0x9B8F: 0xC35C, //HANGUL SYLLABLE SSANGSIOS YAE MIEUM - 0x9B90: 0xC35D, //HANGUL SYLLABLE SSANGSIOS YAE PIEUP - 0x9B91: 0xC35E, //HANGUL SYLLABLE SSANGSIOS YAE PIEUPSIOS - 0x9B92: 0xC35F, //HANGUL SYLLABLE SSANGSIOS YAE SIOS - 0x9B93: 0xC360, //HANGUL SYLLABLE SSANGSIOS YAE SSANGSIOS - 0x9B94: 0xC361, //HANGUL SYLLABLE SSANGSIOS YAE IEUNG - 0x9B95: 0xC362, //HANGUL SYLLABLE SSANGSIOS YAE CIEUC - 0x9B96: 0xC363, //HANGUL SYLLABLE SSANGSIOS YAE CHIEUCH - 0x9B97: 0xC364, //HANGUL SYLLABLE SSANGSIOS YAE KHIEUKH - 0x9B98: 0xC365, //HANGUL SYLLABLE SSANGSIOS YAE THIEUTH - 0x9B99: 0xC366, //HANGUL SYLLABLE SSANGSIOS YAE PHIEUPH - 0x9B9A: 0xC367, //HANGUL SYLLABLE SSANGSIOS YAE HIEUH - 0x9B9B: 0xC36A, //HANGUL SYLLABLE SSANGSIOS EO SSANGKIYEOK - 0x9B9C: 0xC36B, //HANGUL SYLLABLE SSANGSIOS EO KIYEOKSIOS - 0x9B9D: 0xC36D, //HANGUL SYLLABLE SSANGSIOS EO NIEUNCIEUC - 0x9B9E: 0xC36E, //HANGUL SYLLABLE SSANGSIOS EO NIEUNHIEUH - 0x9B9F: 0xC36F, //HANGUL SYLLABLE SSANGSIOS EO TIKEUT - 0x9BA0: 0xC371, //HANGUL SYLLABLE SSANGSIOS EO RIEULKIYEOK - 0x9BA1: 0xC373, //HANGUL SYLLABLE SSANGSIOS EO RIEULPIEUP - 0x9BA2: 0xC374, //HANGUL SYLLABLE SSANGSIOS EO RIEULSIOS - 0x9BA3: 0xC375, //HANGUL SYLLABLE SSANGSIOS EO RIEULTHIEUTH - 0x9BA4: 0xC376, //HANGUL SYLLABLE SSANGSIOS EO RIEULPHIEUPH - 0x9BA5: 0xC377, //HANGUL SYLLABLE SSANGSIOS EO RIEULHIEUH - 0x9BA6: 0xC37A, //HANGUL SYLLABLE SSANGSIOS EO PIEUPSIOS - 0x9BA7: 0xC37B, //HANGUL SYLLABLE SSANGSIOS EO SIOS - 0x9BA8: 0xC37E, //HANGUL SYLLABLE SSANGSIOS EO CIEUC - 0x9BA9: 0xC37F, //HANGUL SYLLABLE SSANGSIOS EO CHIEUCH - 0x9BAA: 0xC380, //HANGUL SYLLABLE SSANGSIOS EO KHIEUKH - 0x9BAB: 0xC381, //HANGUL SYLLABLE SSANGSIOS EO THIEUTH - 0x9BAC: 0xC382, //HANGUL SYLLABLE SSANGSIOS EO PHIEUPH - 0x9BAD: 0xC383, //HANGUL SYLLABLE SSANGSIOS EO HIEUH - 0x9BAE: 0xC385, //HANGUL SYLLABLE SSANGSIOS E KIYEOK - 0x9BAF: 0xC386, //HANGUL SYLLABLE SSANGSIOS E SSANGKIYEOK - 0x9BB0: 0xC387, //HANGUL SYLLABLE SSANGSIOS E KIYEOKSIOS - 0x9BB1: 0xC389, //HANGUL SYLLABLE SSANGSIOS E NIEUNCIEUC - 0x9BB2: 0xC38A, //HANGUL SYLLABLE SSANGSIOS E NIEUNHIEUH - 0x9BB3: 0xC38B, //HANGUL SYLLABLE SSANGSIOS E TIKEUT - 0x9BB4: 0xC38D, //HANGUL SYLLABLE SSANGSIOS E RIEULKIYEOK - 0x9BB5: 0xC38E, //HANGUL SYLLABLE SSANGSIOS E RIEULMIEUM - 0x9BB6: 0xC38F, //HANGUL SYLLABLE SSANGSIOS E RIEULPIEUP - 0x9BB7: 0xC390, //HANGUL SYLLABLE SSANGSIOS E RIEULSIOS - 0x9BB8: 0xC391, //HANGUL SYLLABLE SSANGSIOS E RIEULTHIEUTH - 0x9BB9: 0xC392, //HANGUL SYLLABLE SSANGSIOS E RIEULPHIEUPH - 0x9BBA: 0xC393, //HANGUL SYLLABLE SSANGSIOS E RIEULHIEUH - 0x9BBB: 0xC394, //HANGUL SYLLABLE SSANGSIOS E MIEUM - 0x9BBC: 0xC395, //HANGUL SYLLABLE SSANGSIOS E PIEUP - 0x9BBD: 0xC396, //HANGUL SYLLABLE SSANGSIOS E PIEUPSIOS - 0x9BBE: 0xC397, //HANGUL SYLLABLE SSANGSIOS E SIOS - 0x9BBF: 0xC398, //HANGUL SYLLABLE SSANGSIOS E SSANGSIOS - 0x9BC0: 0xC399, //HANGUL SYLLABLE SSANGSIOS E IEUNG - 0x9BC1: 0xC39A, //HANGUL SYLLABLE SSANGSIOS E CIEUC - 0x9BC2: 0xC39B, //HANGUL SYLLABLE SSANGSIOS E CHIEUCH - 0x9BC3: 0xC39C, //HANGUL SYLLABLE SSANGSIOS E KHIEUKH - 0x9BC4: 0xC39D, //HANGUL SYLLABLE SSANGSIOS E THIEUTH - 0x9BC5: 0xC39E, //HANGUL SYLLABLE SSANGSIOS E PHIEUPH - 0x9BC6: 0xC39F, //HANGUL SYLLABLE SSANGSIOS E HIEUH - 0x9BC7: 0xC3A0, //HANGUL SYLLABLE SSANGSIOS YEO - 0x9BC8: 0xC3A1, //HANGUL SYLLABLE SSANGSIOS YEO KIYEOK - 0x9BC9: 0xC3A2, //HANGUL SYLLABLE SSANGSIOS YEO SSANGKIYEOK - 0x9BCA: 0xC3A3, //HANGUL SYLLABLE SSANGSIOS YEO KIYEOKSIOS - 0x9BCB: 0xC3A4, //HANGUL SYLLABLE SSANGSIOS YEO NIEUN - 0x9BCC: 0xC3A5, //HANGUL SYLLABLE SSANGSIOS YEO NIEUNCIEUC - 0x9BCD: 0xC3A6, //HANGUL SYLLABLE SSANGSIOS YEO NIEUNHIEUH - 0x9BCE: 0xC3A7, //HANGUL SYLLABLE SSANGSIOS YEO TIKEUT - 0x9BCF: 0xC3A8, //HANGUL SYLLABLE SSANGSIOS YEO RIEUL - 0x9BD0: 0xC3A9, //HANGUL SYLLABLE SSANGSIOS YEO RIEULKIYEOK - 0x9BD1: 0xC3AA, //HANGUL SYLLABLE SSANGSIOS YEO RIEULMIEUM - 0x9BD2: 0xC3AB, //HANGUL SYLLABLE SSANGSIOS YEO RIEULPIEUP - 0x9BD3: 0xC3AC, //HANGUL SYLLABLE SSANGSIOS YEO RIEULSIOS - 0x9BD4: 0xC3AD, //HANGUL SYLLABLE SSANGSIOS YEO RIEULTHIEUTH - 0x9BD5: 0xC3AE, //HANGUL SYLLABLE SSANGSIOS YEO RIEULPHIEUPH - 0x9BD6: 0xC3AF, //HANGUL SYLLABLE SSANGSIOS YEO RIEULHIEUH - 0x9BD7: 0xC3B0, //HANGUL SYLLABLE SSANGSIOS YEO MIEUM - 0x9BD8: 0xC3B1, //HANGUL SYLLABLE SSANGSIOS YEO PIEUP - 0x9BD9: 0xC3B2, //HANGUL SYLLABLE SSANGSIOS YEO PIEUPSIOS - 0x9BDA: 0xC3B3, //HANGUL SYLLABLE SSANGSIOS YEO SIOS - 0x9BDB: 0xC3B4, //HANGUL SYLLABLE SSANGSIOS YEO SSANGSIOS - 0x9BDC: 0xC3B5, //HANGUL SYLLABLE SSANGSIOS YEO IEUNG - 0x9BDD: 0xC3B6, //HANGUL SYLLABLE SSANGSIOS YEO CIEUC - 0x9BDE: 0xC3B7, //HANGUL SYLLABLE SSANGSIOS YEO CHIEUCH - 0x9BDF: 0xC3B8, //HANGUL SYLLABLE SSANGSIOS YEO KHIEUKH - 0x9BE0: 0xC3B9, //HANGUL SYLLABLE SSANGSIOS YEO THIEUTH - 0x9BE1: 0xC3BA, //HANGUL SYLLABLE SSANGSIOS YEO PHIEUPH - 0x9BE2: 0xC3BB, //HANGUL SYLLABLE SSANGSIOS YEO HIEUH - 0x9BE3: 0xC3BC, //HANGUL SYLLABLE SSANGSIOS YE - 0x9BE4: 0xC3BD, //HANGUL SYLLABLE SSANGSIOS YE KIYEOK - 0x9BE5: 0xC3BE, //HANGUL SYLLABLE SSANGSIOS YE SSANGKIYEOK - 0x9BE6: 0xC3BF, //HANGUL SYLLABLE SSANGSIOS YE KIYEOKSIOS - 0x9BE7: 0xC3C1, //HANGUL SYLLABLE SSANGSIOS YE NIEUNCIEUC - 0x9BE8: 0xC3C2, //HANGUL SYLLABLE SSANGSIOS YE NIEUNHIEUH - 0x9BE9: 0xC3C3, //HANGUL SYLLABLE SSANGSIOS YE TIKEUT - 0x9BEA: 0xC3C4, //HANGUL SYLLABLE SSANGSIOS YE RIEUL - 0x9BEB: 0xC3C5, //HANGUL SYLLABLE SSANGSIOS YE RIEULKIYEOK - 0x9BEC: 0xC3C6, //HANGUL SYLLABLE SSANGSIOS YE RIEULMIEUM - 0x9BED: 0xC3C7, //HANGUL SYLLABLE SSANGSIOS YE RIEULPIEUP - 0x9BEE: 0xC3C8, //HANGUL SYLLABLE SSANGSIOS YE RIEULSIOS - 0x9BEF: 0xC3C9, //HANGUL SYLLABLE SSANGSIOS YE RIEULTHIEUTH - 0x9BF0: 0xC3CA, //HANGUL SYLLABLE SSANGSIOS YE RIEULPHIEUPH - 0x9BF1: 0xC3CB, //HANGUL SYLLABLE SSANGSIOS YE RIEULHIEUH - 0x9BF2: 0xC3CC, //HANGUL SYLLABLE SSANGSIOS YE MIEUM - 0x9BF3: 0xC3CD, //HANGUL SYLLABLE SSANGSIOS YE PIEUP - 0x9BF4: 0xC3CE, //HANGUL SYLLABLE SSANGSIOS YE PIEUPSIOS - 0x9BF5: 0xC3CF, //HANGUL SYLLABLE SSANGSIOS YE SIOS - 0x9BF6: 0xC3D0, //HANGUL SYLLABLE SSANGSIOS YE SSANGSIOS - 0x9BF7: 0xC3D1, //HANGUL SYLLABLE SSANGSIOS YE IEUNG - 0x9BF8: 0xC3D2, //HANGUL SYLLABLE SSANGSIOS YE CIEUC - 0x9BF9: 0xC3D3, //HANGUL SYLLABLE SSANGSIOS YE CHIEUCH - 0x9BFA: 0xC3D4, //HANGUL SYLLABLE SSANGSIOS YE KHIEUKH - 0x9BFB: 0xC3D5, //HANGUL SYLLABLE SSANGSIOS YE THIEUTH - 0x9BFC: 0xC3D6, //HANGUL SYLLABLE SSANGSIOS YE PHIEUPH - 0x9BFD: 0xC3D7, //HANGUL SYLLABLE SSANGSIOS YE HIEUH - 0x9BFE: 0xC3DA, //HANGUL SYLLABLE SSANGSIOS O SSANGKIYEOK - 0x9C41: 0xC3DB, //HANGUL SYLLABLE SSANGSIOS O KIYEOKSIOS - 0x9C42: 0xC3DD, //HANGUL SYLLABLE SSANGSIOS O NIEUNCIEUC - 0x9C43: 0xC3DE, //HANGUL SYLLABLE SSANGSIOS O NIEUNHIEUH - 0x9C44: 0xC3E1, //HANGUL SYLLABLE SSANGSIOS O RIEULKIYEOK - 0x9C45: 0xC3E3, //HANGUL SYLLABLE SSANGSIOS O RIEULPIEUP - 0x9C46: 0xC3E4, //HANGUL SYLLABLE SSANGSIOS O RIEULSIOS - 0x9C47: 0xC3E5, //HANGUL SYLLABLE SSANGSIOS O RIEULTHIEUTH - 0x9C48: 0xC3E6, //HANGUL SYLLABLE SSANGSIOS O RIEULPHIEUPH - 0x9C49: 0xC3E7, //HANGUL SYLLABLE SSANGSIOS O RIEULHIEUH - 0x9C4A: 0xC3EA, //HANGUL SYLLABLE SSANGSIOS O PIEUPSIOS - 0x9C4B: 0xC3EB, //HANGUL SYLLABLE SSANGSIOS O SIOS - 0x9C4C: 0xC3EC, //HANGUL SYLLABLE SSANGSIOS O SSANGSIOS - 0x9C4D: 0xC3EE, //HANGUL SYLLABLE SSANGSIOS O CIEUC - 0x9C4E: 0xC3EF, //HANGUL SYLLABLE SSANGSIOS O CHIEUCH - 0x9C4F: 0xC3F0, //HANGUL SYLLABLE SSANGSIOS O KHIEUKH - 0x9C50: 0xC3F1, //HANGUL SYLLABLE SSANGSIOS O THIEUTH - 0x9C51: 0xC3F2, //HANGUL SYLLABLE SSANGSIOS O PHIEUPH - 0x9C52: 0xC3F3, //HANGUL SYLLABLE SSANGSIOS O HIEUH - 0x9C53: 0xC3F6, //HANGUL SYLLABLE SSANGSIOS WA SSANGKIYEOK - 0x9C54: 0xC3F7, //HANGUL SYLLABLE SSANGSIOS WA KIYEOKSIOS - 0x9C55: 0xC3F9, //HANGUL SYLLABLE SSANGSIOS WA NIEUNCIEUC - 0x9C56: 0xC3FA, //HANGUL SYLLABLE SSANGSIOS WA NIEUNHIEUH - 0x9C57: 0xC3FB, //HANGUL SYLLABLE SSANGSIOS WA TIKEUT - 0x9C58: 0xC3FC, //HANGUL SYLLABLE SSANGSIOS WA RIEUL - 0x9C59: 0xC3FD, //HANGUL SYLLABLE SSANGSIOS WA RIEULKIYEOK - 0x9C5A: 0xC3FE, //HANGUL SYLLABLE SSANGSIOS WA RIEULMIEUM - 0x9C61: 0xC3FF, //HANGUL SYLLABLE SSANGSIOS WA RIEULPIEUP - 0x9C62: 0xC400, //HANGUL SYLLABLE SSANGSIOS WA RIEULSIOS - 0x9C63: 0xC401, //HANGUL SYLLABLE SSANGSIOS WA RIEULTHIEUTH - 0x9C64: 0xC402, //HANGUL SYLLABLE SSANGSIOS WA RIEULPHIEUPH - 0x9C65: 0xC403, //HANGUL SYLLABLE SSANGSIOS WA RIEULHIEUH - 0x9C66: 0xC404, //HANGUL SYLLABLE SSANGSIOS WA MIEUM - 0x9C67: 0xC405, //HANGUL SYLLABLE SSANGSIOS WA PIEUP - 0x9C68: 0xC406, //HANGUL SYLLABLE SSANGSIOS WA PIEUPSIOS - 0x9C69: 0xC407, //HANGUL SYLLABLE SSANGSIOS WA SIOS - 0x9C6A: 0xC409, //HANGUL SYLLABLE SSANGSIOS WA IEUNG - 0x9C6B: 0xC40A, //HANGUL SYLLABLE SSANGSIOS WA CIEUC - 0x9C6C: 0xC40B, //HANGUL SYLLABLE SSANGSIOS WA CHIEUCH - 0x9C6D: 0xC40C, //HANGUL SYLLABLE SSANGSIOS WA KHIEUKH - 0x9C6E: 0xC40D, //HANGUL SYLLABLE SSANGSIOS WA THIEUTH - 0x9C6F: 0xC40E, //HANGUL SYLLABLE SSANGSIOS WA PHIEUPH - 0x9C70: 0xC40F, //HANGUL SYLLABLE SSANGSIOS WA HIEUH - 0x9C71: 0xC411, //HANGUL SYLLABLE SSANGSIOS WAE KIYEOK - 0x9C72: 0xC412, //HANGUL SYLLABLE SSANGSIOS WAE SSANGKIYEOK - 0x9C73: 0xC413, //HANGUL SYLLABLE SSANGSIOS WAE KIYEOKSIOS - 0x9C74: 0xC414, //HANGUL SYLLABLE SSANGSIOS WAE NIEUN - 0x9C75: 0xC415, //HANGUL SYLLABLE SSANGSIOS WAE NIEUNCIEUC - 0x9C76: 0xC416, //HANGUL SYLLABLE SSANGSIOS WAE NIEUNHIEUH - 0x9C77: 0xC417, //HANGUL SYLLABLE SSANGSIOS WAE TIKEUT - 0x9C78: 0xC418, //HANGUL SYLLABLE SSANGSIOS WAE RIEUL - 0x9C79: 0xC419, //HANGUL SYLLABLE SSANGSIOS WAE RIEULKIYEOK - 0x9C7A: 0xC41A, //HANGUL SYLLABLE SSANGSIOS WAE RIEULMIEUM - 0x9C81: 0xC41B, //HANGUL SYLLABLE SSANGSIOS WAE RIEULPIEUP - 0x9C82: 0xC41C, //HANGUL SYLLABLE SSANGSIOS WAE RIEULSIOS - 0x9C83: 0xC41D, //HANGUL SYLLABLE SSANGSIOS WAE RIEULTHIEUTH - 0x9C84: 0xC41E, //HANGUL SYLLABLE SSANGSIOS WAE RIEULPHIEUPH - 0x9C85: 0xC41F, //HANGUL SYLLABLE SSANGSIOS WAE RIEULHIEUH - 0x9C86: 0xC420, //HANGUL SYLLABLE SSANGSIOS WAE MIEUM - 0x9C87: 0xC421, //HANGUL SYLLABLE SSANGSIOS WAE PIEUP - 0x9C88: 0xC422, //HANGUL SYLLABLE SSANGSIOS WAE PIEUPSIOS - 0x9C89: 0xC423, //HANGUL SYLLABLE SSANGSIOS WAE SIOS - 0x9C8A: 0xC425, //HANGUL SYLLABLE SSANGSIOS WAE IEUNG - 0x9C8B: 0xC426, //HANGUL SYLLABLE SSANGSIOS WAE CIEUC - 0x9C8C: 0xC427, //HANGUL SYLLABLE SSANGSIOS WAE CHIEUCH - 0x9C8D: 0xC428, //HANGUL SYLLABLE SSANGSIOS WAE KHIEUKH - 0x9C8E: 0xC429, //HANGUL SYLLABLE SSANGSIOS WAE THIEUTH - 0x9C8F: 0xC42A, //HANGUL SYLLABLE SSANGSIOS WAE PHIEUPH - 0x9C90: 0xC42B, //HANGUL SYLLABLE SSANGSIOS WAE HIEUH - 0x9C91: 0xC42D, //HANGUL SYLLABLE SSANGSIOS OE KIYEOK - 0x9C92: 0xC42E, //HANGUL SYLLABLE SSANGSIOS OE SSANGKIYEOK - 0x9C93: 0xC42F, //HANGUL SYLLABLE SSANGSIOS OE KIYEOKSIOS - 0x9C94: 0xC431, //HANGUL SYLLABLE SSANGSIOS OE NIEUNCIEUC - 0x9C95: 0xC432, //HANGUL SYLLABLE SSANGSIOS OE NIEUNHIEUH - 0x9C96: 0xC433, //HANGUL SYLLABLE SSANGSIOS OE TIKEUT - 0x9C97: 0xC435, //HANGUL SYLLABLE SSANGSIOS OE RIEULKIYEOK - 0x9C98: 0xC436, //HANGUL SYLLABLE SSANGSIOS OE RIEULMIEUM - 0x9C99: 0xC437, //HANGUL SYLLABLE SSANGSIOS OE RIEULPIEUP - 0x9C9A: 0xC438, //HANGUL SYLLABLE SSANGSIOS OE RIEULSIOS - 0x9C9B: 0xC439, //HANGUL SYLLABLE SSANGSIOS OE RIEULTHIEUTH - 0x9C9C: 0xC43A, //HANGUL SYLLABLE SSANGSIOS OE RIEULPHIEUPH - 0x9C9D: 0xC43B, //HANGUL SYLLABLE SSANGSIOS OE RIEULHIEUH - 0x9C9E: 0xC43E, //HANGUL SYLLABLE SSANGSIOS OE PIEUPSIOS - 0x9C9F: 0xC43F, //HANGUL SYLLABLE SSANGSIOS OE SIOS - 0x9CA0: 0xC440, //HANGUL SYLLABLE SSANGSIOS OE SSANGSIOS - 0x9CA1: 0xC441, //HANGUL SYLLABLE SSANGSIOS OE IEUNG - 0x9CA2: 0xC442, //HANGUL SYLLABLE SSANGSIOS OE CIEUC - 0x9CA3: 0xC443, //HANGUL SYLLABLE SSANGSIOS OE CHIEUCH - 0x9CA4: 0xC444, //HANGUL SYLLABLE SSANGSIOS OE KHIEUKH - 0x9CA5: 0xC445, //HANGUL SYLLABLE SSANGSIOS OE THIEUTH - 0x9CA6: 0xC446, //HANGUL SYLLABLE SSANGSIOS OE PHIEUPH - 0x9CA7: 0xC447, //HANGUL SYLLABLE SSANGSIOS OE HIEUH - 0x9CA8: 0xC449, //HANGUL SYLLABLE SSANGSIOS YO KIYEOK - 0x9CA9: 0xC44A, //HANGUL SYLLABLE SSANGSIOS YO SSANGKIYEOK - 0x9CAA: 0xC44B, //HANGUL SYLLABLE SSANGSIOS YO KIYEOKSIOS - 0x9CAB: 0xC44C, //HANGUL SYLLABLE SSANGSIOS YO NIEUN - 0x9CAC: 0xC44D, //HANGUL SYLLABLE SSANGSIOS YO NIEUNCIEUC - 0x9CAD: 0xC44E, //HANGUL SYLLABLE SSANGSIOS YO NIEUNHIEUH - 0x9CAE: 0xC44F, //HANGUL SYLLABLE SSANGSIOS YO TIKEUT - 0x9CAF: 0xC450, //HANGUL SYLLABLE SSANGSIOS YO RIEUL - 0x9CB0: 0xC451, //HANGUL SYLLABLE SSANGSIOS YO RIEULKIYEOK - 0x9CB1: 0xC452, //HANGUL SYLLABLE SSANGSIOS YO RIEULMIEUM - 0x9CB2: 0xC453, //HANGUL SYLLABLE SSANGSIOS YO RIEULPIEUP - 0x9CB3: 0xC454, //HANGUL SYLLABLE SSANGSIOS YO RIEULSIOS - 0x9CB4: 0xC455, //HANGUL SYLLABLE SSANGSIOS YO RIEULTHIEUTH - 0x9CB5: 0xC456, //HANGUL SYLLABLE SSANGSIOS YO RIEULPHIEUPH - 0x9CB6: 0xC457, //HANGUL SYLLABLE SSANGSIOS YO RIEULHIEUH - 0x9CB7: 0xC458, //HANGUL SYLLABLE SSANGSIOS YO MIEUM - 0x9CB8: 0xC459, //HANGUL SYLLABLE SSANGSIOS YO PIEUP - 0x9CB9: 0xC45A, //HANGUL SYLLABLE SSANGSIOS YO PIEUPSIOS - 0x9CBA: 0xC45B, //HANGUL SYLLABLE SSANGSIOS YO SIOS - 0x9CBB: 0xC45C, //HANGUL SYLLABLE SSANGSIOS YO SSANGSIOS - 0x9CBC: 0xC45D, //HANGUL SYLLABLE SSANGSIOS YO IEUNG - 0x9CBD: 0xC45E, //HANGUL SYLLABLE SSANGSIOS YO CIEUC - 0x9CBE: 0xC45F, //HANGUL SYLLABLE SSANGSIOS YO CHIEUCH - 0x9CBF: 0xC460, //HANGUL SYLLABLE SSANGSIOS YO KHIEUKH - 0x9CC0: 0xC461, //HANGUL SYLLABLE SSANGSIOS YO THIEUTH - 0x9CC1: 0xC462, //HANGUL SYLLABLE SSANGSIOS YO PHIEUPH - 0x9CC2: 0xC463, //HANGUL SYLLABLE SSANGSIOS YO HIEUH - 0x9CC3: 0xC466, //HANGUL SYLLABLE SSANGSIOS U SSANGKIYEOK - 0x9CC4: 0xC467, //HANGUL SYLLABLE SSANGSIOS U KIYEOKSIOS - 0x9CC5: 0xC469, //HANGUL SYLLABLE SSANGSIOS U NIEUNCIEUC - 0x9CC6: 0xC46A, //HANGUL SYLLABLE SSANGSIOS U NIEUNHIEUH - 0x9CC7: 0xC46B, //HANGUL SYLLABLE SSANGSIOS U TIKEUT - 0x9CC8: 0xC46D, //HANGUL SYLLABLE SSANGSIOS U RIEULKIYEOK - 0x9CC9: 0xC46E, //HANGUL SYLLABLE SSANGSIOS U RIEULMIEUM - 0x9CCA: 0xC46F, //HANGUL SYLLABLE SSANGSIOS U RIEULPIEUP - 0x9CCB: 0xC470, //HANGUL SYLLABLE SSANGSIOS U RIEULSIOS - 0x9CCC: 0xC471, //HANGUL SYLLABLE SSANGSIOS U RIEULTHIEUTH - 0x9CCD: 0xC472, //HANGUL SYLLABLE SSANGSIOS U RIEULPHIEUPH - 0x9CCE: 0xC473, //HANGUL SYLLABLE SSANGSIOS U RIEULHIEUH - 0x9CCF: 0xC476, //HANGUL SYLLABLE SSANGSIOS U PIEUPSIOS - 0x9CD0: 0xC477, //HANGUL SYLLABLE SSANGSIOS U SIOS - 0x9CD1: 0xC478, //HANGUL SYLLABLE SSANGSIOS U SSANGSIOS - 0x9CD2: 0xC47A, //HANGUL SYLLABLE SSANGSIOS U CIEUC - 0x9CD3: 0xC47B, //HANGUL SYLLABLE SSANGSIOS U CHIEUCH - 0x9CD4: 0xC47C, //HANGUL SYLLABLE SSANGSIOS U KHIEUKH - 0x9CD5: 0xC47D, //HANGUL SYLLABLE SSANGSIOS U THIEUTH - 0x9CD6: 0xC47E, //HANGUL SYLLABLE SSANGSIOS U PHIEUPH - 0x9CD7: 0xC47F, //HANGUL SYLLABLE SSANGSIOS U HIEUH - 0x9CD8: 0xC481, //HANGUL SYLLABLE SSANGSIOS WEO KIYEOK - 0x9CD9: 0xC482, //HANGUL SYLLABLE SSANGSIOS WEO SSANGKIYEOK - 0x9CDA: 0xC483, //HANGUL SYLLABLE SSANGSIOS WEO KIYEOKSIOS - 0x9CDB: 0xC484, //HANGUL SYLLABLE SSANGSIOS WEO NIEUN - 0x9CDC: 0xC485, //HANGUL SYLLABLE SSANGSIOS WEO NIEUNCIEUC - 0x9CDD: 0xC486, //HANGUL SYLLABLE SSANGSIOS WEO NIEUNHIEUH - 0x9CDE: 0xC487, //HANGUL SYLLABLE SSANGSIOS WEO TIKEUT - 0x9CDF: 0xC488, //HANGUL SYLLABLE SSANGSIOS WEO RIEUL - 0x9CE0: 0xC489, //HANGUL SYLLABLE SSANGSIOS WEO RIEULKIYEOK - 0x9CE1: 0xC48A, //HANGUL SYLLABLE SSANGSIOS WEO RIEULMIEUM - 0x9CE2: 0xC48B, //HANGUL SYLLABLE SSANGSIOS WEO RIEULPIEUP - 0x9CE3: 0xC48C, //HANGUL SYLLABLE SSANGSIOS WEO RIEULSIOS - 0x9CE4: 0xC48D, //HANGUL SYLLABLE SSANGSIOS WEO RIEULTHIEUTH - 0x9CE5: 0xC48E, //HANGUL SYLLABLE SSANGSIOS WEO RIEULPHIEUPH - 0x9CE6: 0xC48F, //HANGUL SYLLABLE SSANGSIOS WEO RIEULHIEUH - 0x9CE7: 0xC490, //HANGUL SYLLABLE SSANGSIOS WEO MIEUM - 0x9CE8: 0xC491, //HANGUL SYLLABLE SSANGSIOS WEO PIEUP - 0x9CE9: 0xC492, //HANGUL SYLLABLE SSANGSIOS WEO PIEUPSIOS - 0x9CEA: 0xC493, //HANGUL SYLLABLE SSANGSIOS WEO SIOS - 0x9CEB: 0xC495, //HANGUL SYLLABLE SSANGSIOS WEO IEUNG - 0x9CEC: 0xC496, //HANGUL SYLLABLE SSANGSIOS WEO CIEUC - 0x9CED: 0xC497, //HANGUL SYLLABLE SSANGSIOS WEO CHIEUCH - 0x9CEE: 0xC498, //HANGUL SYLLABLE SSANGSIOS WEO KHIEUKH - 0x9CEF: 0xC499, //HANGUL SYLLABLE SSANGSIOS WEO THIEUTH - 0x9CF0: 0xC49A, //HANGUL SYLLABLE SSANGSIOS WEO PHIEUPH - 0x9CF1: 0xC49B, //HANGUL SYLLABLE SSANGSIOS WEO HIEUH - 0x9CF2: 0xC49D, //HANGUL SYLLABLE SSANGSIOS WE KIYEOK - 0x9CF3: 0xC49E, //HANGUL SYLLABLE SSANGSIOS WE SSANGKIYEOK - 0x9CF4: 0xC49F, //HANGUL SYLLABLE SSANGSIOS WE KIYEOKSIOS - 0x9CF5: 0xC4A0, //HANGUL SYLLABLE SSANGSIOS WE NIEUN - 0x9CF6: 0xC4A1, //HANGUL SYLLABLE SSANGSIOS WE NIEUNCIEUC - 0x9CF7: 0xC4A2, //HANGUL SYLLABLE SSANGSIOS WE NIEUNHIEUH - 0x9CF8: 0xC4A3, //HANGUL SYLLABLE SSANGSIOS WE TIKEUT - 0x9CF9: 0xC4A4, //HANGUL SYLLABLE SSANGSIOS WE RIEUL - 0x9CFA: 0xC4A5, //HANGUL SYLLABLE SSANGSIOS WE RIEULKIYEOK - 0x9CFB: 0xC4A6, //HANGUL SYLLABLE SSANGSIOS WE RIEULMIEUM - 0x9CFC: 0xC4A7, //HANGUL SYLLABLE SSANGSIOS WE RIEULPIEUP - 0x9CFD: 0xC4A8, //HANGUL SYLLABLE SSANGSIOS WE RIEULSIOS - 0x9CFE: 0xC4A9, //HANGUL SYLLABLE SSANGSIOS WE RIEULTHIEUTH - 0x9D41: 0xC4AA, //HANGUL SYLLABLE SSANGSIOS WE RIEULPHIEUPH - 0x9D42: 0xC4AB, //HANGUL SYLLABLE SSANGSIOS WE RIEULHIEUH - 0x9D43: 0xC4AC, //HANGUL SYLLABLE SSANGSIOS WE MIEUM - 0x9D44: 0xC4AD, //HANGUL SYLLABLE SSANGSIOS WE PIEUP - 0x9D45: 0xC4AE, //HANGUL SYLLABLE SSANGSIOS WE PIEUPSIOS - 0x9D46: 0xC4AF, //HANGUL SYLLABLE SSANGSIOS WE SIOS - 0x9D47: 0xC4B0, //HANGUL SYLLABLE SSANGSIOS WE SSANGSIOS - 0x9D48: 0xC4B1, //HANGUL SYLLABLE SSANGSIOS WE IEUNG - 0x9D49: 0xC4B2, //HANGUL SYLLABLE SSANGSIOS WE CIEUC - 0x9D4A: 0xC4B3, //HANGUL SYLLABLE SSANGSIOS WE CHIEUCH - 0x9D4B: 0xC4B4, //HANGUL SYLLABLE SSANGSIOS WE KHIEUKH - 0x9D4C: 0xC4B5, //HANGUL SYLLABLE SSANGSIOS WE THIEUTH - 0x9D4D: 0xC4B6, //HANGUL SYLLABLE SSANGSIOS WE PHIEUPH - 0x9D4E: 0xC4B7, //HANGUL SYLLABLE SSANGSIOS WE HIEUH - 0x9D4F: 0xC4B9, //HANGUL SYLLABLE SSANGSIOS WI KIYEOK - 0x9D50: 0xC4BA, //HANGUL SYLLABLE SSANGSIOS WI SSANGKIYEOK - 0x9D51: 0xC4BB, //HANGUL SYLLABLE SSANGSIOS WI KIYEOKSIOS - 0x9D52: 0xC4BD, //HANGUL SYLLABLE SSANGSIOS WI NIEUNCIEUC - 0x9D53: 0xC4BE, //HANGUL SYLLABLE SSANGSIOS WI NIEUNHIEUH - 0x9D54: 0xC4BF, //HANGUL SYLLABLE SSANGSIOS WI TIKEUT - 0x9D55: 0xC4C0, //HANGUL SYLLABLE SSANGSIOS WI RIEUL - 0x9D56: 0xC4C1, //HANGUL SYLLABLE SSANGSIOS WI RIEULKIYEOK - 0x9D57: 0xC4C2, //HANGUL SYLLABLE SSANGSIOS WI RIEULMIEUM - 0x9D58: 0xC4C3, //HANGUL SYLLABLE SSANGSIOS WI RIEULPIEUP - 0x9D59: 0xC4C4, //HANGUL SYLLABLE SSANGSIOS WI RIEULSIOS - 0x9D5A: 0xC4C5, //HANGUL SYLLABLE SSANGSIOS WI RIEULTHIEUTH - 0x9D61: 0xC4C6, //HANGUL SYLLABLE SSANGSIOS WI RIEULPHIEUPH - 0x9D62: 0xC4C7, //HANGUL SYLLABLE SSANGSIOS WI RIEULHIEUH - 0x9D63: 0xC4C8, //HANGUL SYLLABLE SSANGSIOS WI MIEUM - 0x9D64: 0xC4C9, //HANGUL SYLLABLE SSANGSIOS WI PIEUP - 0x9D65: 0xC4CA, //HANGUL SYLLABLE SSANGSIOS WI PIEUPSIOS - 0x9D66: 0xC4CB, //HANGUL SYLLABLE SSANGSIOS WI SIOS - 0x9D67: 0xC4CC, //HANGUL SYLLABLE SSANGSIOS WI SSANGSIOS - 0x9D68: 0xC4CD, //HANGUL SYLLABLE SSANGSIOS WI IEUNG - 0x9D69: 0xC4CE, //HANGUL SYLLABLE SSANGSIOS WI CIEUC - 0x9D6A: 0xC4CF, //HANGUL SYLLABLE SSANGSIOS WI CHIEUCH - 0x9D6B: 0xC4D0, //HANGUL SYLLABLE SSANGSIOS WI KHIEUKH - 0x9D6C: 0xC4D1, //HANGUL SYLLABLE SSANGSIOS WI THIEUTH - 0x9D6D: 0xC4D2, //HANGUL SYLLABLE SSANGSIOS WI PHIEUPH - 0x9D6E: 0xC4D3, //HANGUL SYLLABLE SSANGSIOS WI HIEUH - 0x9D6F: 0xC4D4, //HANGUL SYLLABLE SSANGSIOS YU - 0x9D70: 0xC4D5, //HANGUL SYLLABLE SSANGSIOS YU KIYEOK - 0x9D71: 0xC4D6, //HANGUL SYLLABLE SSANGSIOS YU SSANGKIYEOK - 0x9D72: 0xC4D7, //HANGUL SYLLABLE SSANGSIOS YU KIYEOKSIOS - 0x9D73: 0xC4D8, //HANGUL SYLLABLE SSANGSIOS YU NIEUN - 0x9D74: 0xC4D9, //HANGUL SYLLABLE SSANGSIOS YU NIEUNCIEUC - 0x9D75: 0xC4DA, //HANGUL SYLLABLE SSANGSIOS YU NIEUNHIEUH - 0x9D76: 0xC4DB, //HANGUL SYLLABLE SSANGSIOS YU TIKEUT - 0x9D77: 0xC4DC, //HANGUL SYLLABLE SSANGSIOS YU RIEUL - 0x9D78: 0xC4DD, //HANGUL SYLLABLE SSANGSIOS YU RIEULKIYEOK - 0x9D79: 0xC4DE, //HANGUL SYLLABLE SSANGSIOS YU RIEULMIEUM - 0x9D7A: 0xC4DF, //HANGUL SYLLABLE SSANGSIOS YU RIEULPIEUP - 0x9D81: 0xC4E0, //HANGUL SYLLABLE SSANGSIOS YU RIEULSIOS - 0x9D82: 0xC4E1, //HANGUL SYLLABLE SSANGSIOS YU RIEULTHIEUTH - 0x9D83: 0xC4E2, //HANGUL SYLLABLE SSANGSIOS YU RIEULPHIEUPH - 0x9D84: 0xC4E3, //HANGUL SYLLABLE SSANGSIOS YU RIEULHIEUH - 0x9D85: 0xC4E4, //HANGUL SYLLABLE SSANGSIOS YU MIEUM - 0x9D86: 0xC4E5, //HANGUL SYLLABLE SSANGSIOS YU PIEUP - 0x9D87: 0xC4E6, //HANGUL SYLLABLE SSANGSIOS YU PIEUPSIOS - 0x9D88: 0xC4E7, //HANGUL SYLLABLE SSANGSIOS YU SIOS - 0x9D89: 0xC4E8, //HANGUL SYLLABLE SSANGSIOS YU SSANGSIOS - 0x9D8A: 0xC4EA, //HANGUL SYLLABLE SSANGSIOS YU CIEUC - 0x9D8B: 0xC4EB, //HANGUL SYLLABLE SSANGSIOS YU CHIEUCH - 0x9D8C: 0xC4EC, //HANGUL SYLLABLE SSANGSIOS YU KHIEUKH - 0x9D8D: 0xC4ED, //HANGUL SYLLABLE SSANGSIOS YU THIEUTH - 0x9D8E: 0xC4EE, //HANGUL SYLLABLE SSANGSIOS YU PHIEUPH - 0x9D8F: 0xC4EF, //HANGUL SYLLABLE SSANGSIOS YU HIEUH - 0x9D90: 0xC4F2, //HANGUL SYLLABLE SSANGSIOS EU SSANGKIYEOK - 0x9D91: 0xC4F3, //HANGUL SYLLABLE SSANGSIOS EU KIYEOKSIOS - 0x9D92: 0xC4F5, //HANGUL SYLLABLE SSANGSIOS EU NIEUNCIEUC - 0x9D93: 0xC4F6, //HANGUL SYLLABLE SSANGSIOS EU NIEUNHIEUH - 0x9D94: 0xC4F7, //HANGUL SYLLABLE SSANGSIOS EU TIKEUT - 0x9D95: 0xC4F9, //HANGUL SYLLABLE SSANGSIOS EU RIEULKIYEOK - 0x9D96: 0xC4FB, //HANGUL SYLLABLE SSANGSIOS EU RIEULPIEUP - 0x9D97: 0xC4FC, //HANGUL SYLLABLE SSANGSIOS EU RIEULSIOS - 0x9D98: 0xC4FD, //HANGUL SYLLABLE SSANGSIOS EU RIEULTHIEUTH - 0x9D99: 0xC4FE, //HANGUL SYLLABLE SSANGSIOS EU RIEULPHIEUPH - 0x9D9A: 0xC502, //HANGUL SYLLABLE SSANGSIOS EU PIEUPSIOS - 0x9D9B: 0xC503, //HANGUL SYLLABLE SSANGSIOS EU SIOS - 0x9D9C: 0xC504, //HANGUL SYLLABLE SSANGSIOS EU SSANGSIOS - 0x9D9D: 0xC505, //HANGUL SYLLABLE SSANGSIOS EU IEUNG - 0x9D9E: 0xC506, //HANGUL SYLLABLE SSANGSIOS EU CIEUC - 0x9D9F: 0xC507, //HANGUL SYLLABLE SSANGSIOS EU CHIEUCH - 0x9DA0: 0xC508, //HANGUL SYLLABLE SSANGSIOS EU KHIEUKH - 0x9DA1: 0xC509, //HANGUL SYLLABLE SSANGSIOS EU THIEUTH - 0x9DA2: 0xC50A, //HANGUL SYLLABLE SSANGSIOS EU PHIEUPH - 0x9DA3: 0xC50B, //HANGUL SYLLABLE SSANGSIOS EU HIEUH - 0x9DA4: 0xC50D, //HANGUL SYLLABLE SSANGSIOS YI KIYEOK - 0x9DA5: 0xC50E, //HANGUL SYLLABLE SSANGSIOS YI SSANGKIYEOK - 0x9DA6: 0xC50F, //HANGUL SYLLABLE SSANGSIOS YI KIYEOKSIOS - 0x9DA7: 0xC511, //HANGUL SYLLABLE SSANGSIOS YI NIEUNCIEUC - 0x9DA8: 0xC512, //HANGUL SYLLABLE SSANGSIOS YI NIEUNHIEUH - 0x9DA9: 0xC513, //HANGUL SYLLABLE SSANGSIOS YI TIKEUT - 0x9DAA: 0xC515, //HANGUL SYLLABLE SSANGSIOS YI RIEULKIYEOK - 0x9DAB: 0xC516, //HANGUL SYLLABLE SSANGSIOS YI RIEULMIEUM - 0x9DAC: 0xC517, //HANGUL SYLLABLE SSANGSIOS YI RIEULPIEUP - 0x9DAD: 0xC518, //HANGUL SYLLABLE SSANGSIOS YI RIEULSIOS - 0x9DAE: 0xC519, //HANGUL SYLLABLE SSANGSIOS YI RIEULTHIEUTH - 0x9DAF: 0xC51A, //HANGUL SYLLABLE SSANGSIOS YI RIEULPHIEUPH - 0x9DB0: 0xC51B, //HANGUL SYLLABLE SSANGSIOS YI RIEULHIEUH - 0x9DB1: 0xC51D, //HANGUL SYLLABLE SSANGSIOS YI PIEUP - 0x9DB2: 0xC51E, //HANGUL SYLLABLE SSANGSIOS YI PIEUPSIOS - 0x9DB3: 0xC51F, //HANGUL SYLLABLE SSANGSIOS YI SIOS - 0x9DB4: 0xC520, //HANGUL SYLLABLE SSANGSIOS YI SSANGSIOS - 0x9DB5: 0xC521, //HANGUL SYLLABLE SSANGSIOS YI IEUNG - 0x9DB6: 0xC522, //HANGUL SYLLABLE SSANGSIOS YI CIEUC - 0x9DB7: 0xC523, //HANGUL SYLLABLE SSANGSIOS YI CHIEUCH - 0x9DB8: 0xC524, //HANGUL SYLLABLE SSANGSIOS YI KHIEUKH - 0x9DB9: 0xC525, //HANGUL SYLLABLE SSANGSIOS YI THIEUTH - 0x9DBA: 0xC526, //HANGUL SYLLABLE SSANGSIOS YI PHIEUPH - 0x9DBB: 0xC527, //HANGUL SYLLABLE SSANGSIOS YI HIEUH - 0x9DBC: 0xC52A, //HANGUL SYLLABLE SSANGSIOS I SSANGKIYEOK - 0x9DBD: 0xC52B, //HANGUL SYLLABLE SSANGSIOS I KIYEOKSIOS - 0x9DBE: 0xC52D, //HANGUL SYLLABLE SSANGSIOS I NIEUNCIEUC - 0x9DBF: 0xC52E, //HANGUL SYLLABLE SSANGSIOS I NIEUNHIEUH - 0x9DC0: 0xC52F, //HANGUL SYLLABLE SSANGSIOS I TIKEUT - 0x9DC1: 0xC531, //HANGUL SYLLABLE SSANGSIOS I RIEULKIYEOK - 0x9DC2: 0xC532, //HANGUL SYLLABLE SSANGSIOS I RIEULMIEUM - 0x9DC3: 0xC533, //HANGUL SYLLABLE SSANGSIOS I RIEULPIEUP - 0x9DC4: 0xC534, //HANGUL SYLLABLE SSANGSIOS I RIEULSIOS - 0x9DC5: 0xC535, //HANGUL SYLLABLE SSANGSIOS I RIEULTHIEUTH - 0x9DC6: 0xC536, //HANGUL SYLLABLE SSANGSIOS I RIEULPHIEUPH - 0x9DC7: 0xC537, //HANGUL SYLLABLE SSANGSIOS I RIEULHIEUH - 0x9DC8: 0xC53A, //HANGUL SYLLABLE SSANGSIOS I PIEUPSIOS - 0x9DC9: 0xC53C, //HANGUL SYLLABLE SSANGSIOS I SSANGSIOS - 0x9DCA: 0xC53E, //HANGUL SYLLABLE SSANGSIOS I CIEUC - 0x9DCB: 0xC53F, //HANGUL SYLLABLE SSANGSIOS I CHIEUCH - 0x9DCC: 0xC540, //HANGUL SYLLABLE SSANGSIOS I KHIEUKH - 0x9DCD: 0xC541, //HANGUL SYLLABLE SSANGSIOS I THIEUTH - 0x9DCE: 0xC542, //HANGUL SYLLABLE SSANGSIOS I PHIEUPH - 0x9DCF: 0xC543, //HANGUL SYLLABLE SSANGSIOS I HIEUH - 0x9DD0: 0xC546, //HANGUL SYLLABLE IEUNG A SSANGKIYEOK - 0x9DD1: 0xC547, //HANGUL SYLLABLE IEUNG A KIYEOKSIOS - 0x9DD2: 0xC54B, //HANGUL SYLLABLE IEUNG A TIKEUT - 0x9DD3: 0xC54F, //HANGUL SYLLABLE IEUNG A RIEULPIEUP - 0x9DD4: 0xC550, //HANGUL SYLLABLE IEUNG A RIEULSIOS - 0x9DD5: 0xC551, //HANGUL SYLLABLE IEUNG A RIEULTHIEUTH - 0x9DD6: 0xC552, //HANGUL SYLLABLE IEUNG A RIEULPHIEUPH - 0x9DD7: 0xC556, //HANGUL SYLLABLE IEUNG A PIEUPSIOS - 0x9DD8: 0xC55A, //HANGUL SYLLABLE IEUNG A CIEUC - 0x9DD9: 0xC55B, //HANGUL SYLLABLE IEUNG A CHIEUCH - 0x9DDA: 0xC55C, //HANGUL SYLLABLE IEUNG A KHIEUKH - 0x9DDB: 0xC55F, //HANGUL SYLLABLE IEUNG A HIEUH - 0x9DDC: 0xC562, //HANGUL SYLLABLE IEUNG AE SSANGKIYEOK - 0x9DDD: 0xC563, //HANGUL SYLLABLE IEUNG AE KIYEOKSIOS - 0x9DDE: 0xC565, //HANGUL SYLLABLE IEUNG AE NIEUNCIEUC - 0x9DDF: 0xC566, //HANGUL SYLLABLE IEUNG AE NIEUNHIEUH - 0x9DE0: 0xC567, //HANGUL SYLLABLE IEUNG AE TIKEUT - 0x9DE1: 0xC569, //HANGUL SYLLABLE IEUNG AE RIEULKIYEOK - 0x9DE2: 0xC56A, //HANGUL SYLLABLE IEUNG AE RIEULMIEUM - 0x9DE3: 0xC56B, //HANGUL SYLLABLE IEUNG AE RIEULPIEUP - 0x9DE4: 0xC56C, //HANGUL SYLLABLE IEUNG AE RIEULSIOS - 0x9DE5: 0xC56D, //HANGUL SYLLABLE IEUNG AE RIEULTHIEUTH - 0x9DE6: 0xC56E, //HANGUL SYLLABLE IEUNG AE RIEULPHIEUPH - 0x9DE7: 0xC56F, //HANGUL SYLLABLE IEUNG AE RIEULHIEUH - 0x9DE8: 0xC572, //HANGUL SYLLABLE IEUNG AE PIEUPSIOS - 0x9DE9: 0xC576, //HANGUL SYLLABLE IEUNG AE CIEUC - 0x9DEA: 0xC577, //HANGUL SYLLABLE IEUNG AE CHIEUCH - 0x9DEB: 0xC578, //HANGUL SYLLABLE IEUNG AE KHIEUKH - 0x9DEC: 0xC579, //HANGUL SYLLABLE IEUNG AE THIEUTH - 0x9DED: 0xC57A, //HANGUL SYLLABLE IEUNG AE PHIEUPH - 0x9DEE: 0xC57B, //HANGUL SYLLABLE IEUNG AE HIEUH - 0x9DEF: 0xC57E, //HANGUL SYLLABLE IEUNG YA SSANGKIYEOK - 0x9DF0: 0xC57F, //HANGUL SYLLABLE IEUNG YA KIYEOKSIOS - 0x9DF1: 0xC581, //HANGUL SYLLABLE IEUNG YA NIEUNCIEUC - 0x9DF2: 0xC582, //HANGUL SYLLABLE IEUNG YA NIEUNHIEUH - 0x9DF3: 0xC583, //HANGUL SYLLABLE IEUNG YA TIKEUT - 0x9DF4: 0xC585, //HANGUL SYLLABLE IEUNG YA RIEULKIYEOK - 0x9DF5: 0xC586, //HANGUL SYLLABLE IEUNG YA RIEULMIEUM - 0x9DF6: 0xC588, //HANGUL SYLLABLE IEUNG YA RIEULSIOS - 0x9DF7: 0xC589, //HANGUL SYLLABLE IEUNG YA RIEULTHIEUTH - 0x9DF8: 0xC58A, //HANGUL SYLLABLE IEUNG YA RIEULPHIEUPH - 0x9DF9: 0xC58B, //HANGUL SYLLABLE IEUNG YA RIEULHIEUH - 0x9DFA: 0xC58E, //HANGUL SYLLABLE IEUNG YA PIEUPSIOS - 0x9DFB: 0xC590, //HANGUL SYLLABLE IEUNG YA SSANGSIOS - 0x9DFC: 0xC592, //HANGUL SYLLABLE IEUNG YA CIEUC - 0x9DFD: 0xC593, //HANGUL SYLLABLE IEUNG YA CHIEUCH - 0x9DFE: 0xC594, //HANGUL SYLLABLE IEUNG YA KHIEUKH - 0x9E41: 0xC596, //HANGUL SYLLABLE IEUNG YA PHIEUPH - 0x9E42: 0xC599, //HANGUL SYLLABLE IEUNG YAE KIYEOK - 0x9E43: 0xC59A, //HANGUL SYLLABLE IEUNG YAE SSANGKIYEOK - 0x9E44: 0xC59B, //HANGUL SYLLABLE IEUNG YAE KIYEOKSIOS - 0x9E45: 0xC59D, //HANGUL SYLLABLE IEUNG YAE NIEUNCIEUC - 0x9E46: 0xC59E, //HANGUL SYLLABLE IEUNG YAE NIEUNHIEUH - 0x9E47: 0xC59F, //HANGUL SYLLABLE IEUNG YAE TIKEUT - 0x9E48: 0xC5A1, //HANGUL SYLLABLE IEUNG YAE RIEULKIYEOK - 0x9E49: 0xC5A2, //HANGUL SYLLABLE IEUNG YAE RIEULMIEUM - 0x9E4A: 0xC5A3, //HANGUL SYLLABLE IEUNG YAE RIEULPIEUP - 0x9E4B: 0xC5A4, //HANGUL SYLLABLE IEUNG YAE RIEULSIOS - 0x9E4C: 0xC5A5, //HANGUL SYLLABLE IEUNG YAE RIEULTHIEUTH - 0x9E4D: 0xC5A6, //HANGUL SYLLABLE IEUNG YAE RIEULPHIEUPH - 0x9E4E: 0xC5A7, //HANGUL SYLLABLE IEUNG YAE RIEULHIEUH - 0x9E4F: 0xC5A8, //HANGUL SYLLABLE IEUNG YAE MIEUM - 0x9E50: 0xC5AA, //HANGUL SYLLABLE IEUNG YAE PIEUPSIOS - 0x9E51: 0xC5AB, //HANGUL SYLLABLE IEUNG YAE SIOS - 0x9E52: 0xC5AC, //HANGUL SYLLABLE IEUNG YAE SSANGSIOS - 0x9E53: 0xC5AD, //HANGUL SYLLABLE IEUNG YAE IEUNG - 0x9E54: 0xC5AE, //HANGUL SYLLABLE IEUNG YAE CIEUC - 0x9E55: 0xC5AF, //HANGUL SYLLABLE IEUNG YAE CHIEUCH - 0x9E56: 0xC5B0, //HANGUL SYLLABLE IEUNG YAE KHIEUKH - 0x9E57: 0xC5B1, //HANGUL SYLLABLE IEUNG YAE THIEUTH - 0x9E58: 0xC5B2, //HANGUL SYLLABLE IEUNG YAE PHIEUPH - 0x9E59: 0xC5B3, //HANGUL SYLLABLE IEUNG YAE HIEUH - 0x9E5A: 0xC5B6, //HANGUL SYLLABLE IEUNG EO SSANGKIYEOK - 0x9E61: 0xC5B7, //HANGUL SYLLABLE IEUNG EO KIYEOKSIOS - 0x9E62: 0xC5BA, //HANGUL SYLLABLE IEUNG EO NIEUNHIEUH - 0x9E63: 0xC5BF, //HANGUL SYLLABLE IEUNG EO RIEULPIEUP - 0x9E64: 0xC5C0, //HANGUL SYLLABLE IEUNG EO RIEULSIOS - 0x9E65: 0xC5C1, //HANGUL SYLLABLE IEUNG EO RIEULTHIEUTH - 0x9E66: 0xC5C2, //HANGUL SYLLABLE IEUNG EO RIEULPHIEUPH - 0x9E67: 0xC5C3, //HANGUL SYLLABLE IEUNG EO RIEULHIEUH - 0x9E68: 0xC5CB, //HANGUL SYLLABLE IEUNG EO CHIEUCH - 0x9E69: 0xC5CD, //HANGUL SYLLABLE IEUNG EO THIEUTH - 0x9E6A: 0xC5CF, //HANGUL SYLLABLE IEUNG EO HIEUH - 0x9E6B: 0xC5D2, //HANGUL SYLLABLE IEUNG E SSANGKIYEOK - 0x9E6C: 0xC5D3, //HANGUL SYLLABLE IEUNG E KIYEOKSIOS - 0x9E6D: 0xC5D5, //HANGUL SYLLABLE IEUNG E NIEUNCIEUC - 0x9E6E: 0xC5D6, //HANGUL SYLLABLE IEUNG E NIEUNHIEUH - 0x9E6F: 0xC5D7, //HANGUL SYLLABLE IEUNG E TIKEUT - 0x9E70: 0xC5D9, //HANGUL SYLLABLE IEUNG E RIEULKIYEOK - 0x9E71: 0xC5DA, //HANGUL SYLLABLE IEUNG E RIEULMIEUM - 0x9E72: 0xC5DB, //HANGUL SYLLABLE IEUNG E RIEULPIEUP - 0x9E73: 0xC5DC, //HANGUL SYLLABLE IEUNG E RIEULSIOS - 0x9E74: 0xC5DD, //HANGUL SYLLABLE IEUNG E RIEULTHIEUTH - 0x9E75: 0xC5DE, //HANGUL SYLLABLE IEUNG E RIEULPHIEUPH - 0x9E76: 0xC5DF, //HANGUL SYLLABLE IEUNG E RIEULHIEUH - 0x9E77: 0xC5E2, //HANGUL SYLLABLE IEUNG E PIEUPSIOS - 0x9E78: 0xC5E4, //HANGUL SYLLABLE IEUNG E SSANGSIOS - 0x9E79: 0xC5E6, //HANGUL SYLLABLE IEUNG E CIEUC - 0x9E7A: 0xC5E7, //HANGUL SYLLABLE IEUNG E CHIEUCH - 0x9E81: 0xC5E8, //HANGUL SYLLABLE IEUNG E KHIEUKH - 0x9E82: 0xC5E9, //HANGUL SYLLABLE IEUNG E THIEUTH - 0x9E83: 0xC5EA, //HANGUL SYLLABLE IEUNG E PHIEUPH - 0x9E84: 0xC5EB, //HANGUL SYLLABLE IEUNG E HIEUH - 0x9E85: 0xC5EF, //HANGUL SYLLABLE IEUNG YEO KIYEOKSIOS - 0x9E86: 0xC5F1, //HANGUL SYLLABLE IEUNG YEO NIEUNCIEUC - 0x9E87: 0xC5F2, //HANGUL SYLLABLE IEUNG YEO NIEUNHIEUH - 0x9E88: 0xC5F3, //HANGUL SYLLABLE IEUNG YEO TIKEUT - 0x9E89: 0xC5F5, //HANGUL SYLLABLE IEUNG YEO RIEULKIYEOK - 0x9E8A: 0xC5F8, //HANGUL SYLLABLE IEUNG YEO RIEULSIOS - 0x9E8B: 0xC5F9, //HANGUL SYLLABLE IEUNG YEO RIEULTHIEUTH - 0x9E8C: 0xC5FA, //HANGUL SYLLABLE IEUNG YEO RIEULPHIEUPH - 0x9E8D: 0xC5FB, //HANGUL SYLLABLE IEUNG YEO RIEULHIEUH - 0x9E8E: 0xC602, //HANGUL SYLLABLE IEUNG YEO CIEUC - 0x9E8F: 0xC603, //HANGUL SYLLABLE IEUNG YEO CHIEUCH - 0x9E90: 0xC604, //HANGUL SYLLABLE IEUNG YEO KHIEUKH - 0x9E91: 0xC609, //HANGUL SYLLABLE IEUNG YE KIYEOK - 0x9E92: 0xC60A, //HANGUL SYLLABLE IEUNG YE SSANGKIYEOK - 0x9E93: 0xC60B, //HANGUL SYLLABLE IEUNG YE KIYEOKSIOS - 0x9E94: 0xC60D, //HANGUL SYLLABLE IEUNG YE NIEUNCIEUC - 0x9E95: 0xC60E, //HANGUL SYLLABLE IEUNG YE NIEUNHIEUH - 0x9E96: 0xC60F, //HANGUL SYLLABLE IEUNG YE TIKEUT - 0x9E97: 0xC611, //HANGUL SYLLABLE IEUNG YE RIEULKIYEOK - 0x9E98: 0xC612, //HANGUL SYLLABLE IEUNG YE RIEULMIEUM - 0x9E99: 0xC613, //HANGUL SYLLABLE IEUNG YE RIEULPIEUP - 0x9E9A: 0xC614, //HANGUL SYLLABLE IEUNG YE RIEULSIOS - 0x9E9B: 0xC615, //HANGUL SYLLABLE IEUNG YE RIEULTHIEUTH - 0x9E9C: 0xC616, //HANGUL SYLLABLE IEUNG YE RIEULPHIEUPH - 0x9E9D: 0xC617, //HANGUL SYLLABLE IEUNG YE RIEULHIEUH - 0x9E9E: 0xC61A, //HANGUL SYLLABLE IEUNG YE PIEUPSIOS - 0x9E9F: 0xC61D, //HANGUL SYLLABLE IEUNG YE IEUNG - 0x9EA0: 0xC61E, //HANGUL SYLLABLE IEUNG YE CIEUC - 0x9EA1: 0xC61F, //HANGUL SYLLABLE IEUNG YE CHIEUCH - 0x9EA2: 0xC620, //HANGUL SYLLABLE IEUNG YE KHIEUKH - 0x9EA3: 0xC621, //HANGUL SYLLABLE IEUNG YE THIEUTH - 0x9EA4: 0xC622, //HANGUL SYLLABLE IEUNG YE PHIEUPH - 0x9EA5: 0xC623, //HANGUL SYLLABLE IEUNG YE HIEUH - 0x9EA6: 0xC626, //HANGUL SYLLABLE IEUNG O SSANGKIYEOK - 0x9EA7: 0xC627, //HANGUL SYLLABLE IEUNG O KIYEOKSIOS - 0x9EA8: 0xC629, //HANGUL SYLLABLE IEUNG O NIEUNCIEUC - 0x9EA9: 0xC62A, //HANGUL SYLLABLE IEUNG O NIEUNHIEUH - 0x9EAA: 0xC62B, //HANGUL SYLLABLE IEUNG O TIKEUT - 0x9EAB: 0xC62F, //HANGUL SYLLABLE IEUNG O RIEULPIEUP - 0x9EAC: 0xC631, //HANGUL SYLLABLE IEUNG O RIEULTHIEUTH - 0x9EAD: 0xC632, //HANGUL SYLLABLE IEUNG O RIEULPHIEUPH - 0x9EAE: 0xC636, //HANGUL SYLLABLE IEUNG O PIEUPSIOS - 0x9EAF: 0xC638, //HANGUL SYLLABLE IEUNG O SSANGSIOS - 0x9EB0: 0xC63A, //HANGUL SYLLABLE IEUNG O CIEUC - 0x9EB1: 0xC63C, //HANGUL SYLLABLE IEUNG O KHIEUKH - 0x9EB2: 0xC63D, //HANGUL SYLLABLE IEUNG O THIEUTH - 0x9EB3: 0xC63E, //HANGUL SYLLABLE IEUNG O PHIEUPH - 0x9EB4: 0xC63F, //HANGUL SYLLABLE IEUNG O HIEUH - 0x9EB5: 0xC642, //HANGUL SYLLABLE IEUNG WA SSANGKIYEOK - 0x9EB6: 0xC643, //HANGUL SYLLABLE IEUNG WA KIYEOKSIOS - 0x9EB7: 0xC645, //HANGUL SYLLABLE IEUNG WA NIEUNCIEUC - 0x9EB8: 0xC646, //HANGUL SYLLABLE IEUNG WA NIEUNHIEUH - 0x9EB9: 0xC647, //HANGUL SYLLABLE IEUNG WA TIKEUT - 0x9EBA: 0xC649, //HANGUL SYLLABLE IEUNG WA RIEULKIYEOK - 0x9EBB: 0xC64A, //HANGUL SYLLABLE IEUNG WA RIEULMIEUM - 0x9EBC: 0xC64B, //HANGUL SYLLABLE IEUNG WA RIEULPIEUP - 0x9EBD: 0xC64C, //HANGUL SYLLABLE IEUNG WA RIEULSIOS - 0x9EBE: 0xC64D, //HANGUL SYLLABLE IEUNG WA RIEULTHIEUTH - 0x9EBF: 0xC64E, //HANGUL SYLLABLE IEUNG WA RIEULPHIEUPH - 0x9EC0: 0xC64F, //HANGUL SYLLABLE IEUNG WA RIEULHIEUH - 0x9EC1: 0xC652, //HANGUL SYLLABLE IEUNG WA PIEUPSIOS - 0x9EC2: 0xC656, //HANGUL SYLLABLE IEUNG WA CIEUC - 0x9EC3: 0xC657, //HANGUL SYLLABLE IEUNG WA CHIEUCH - 0x9EC4: 0xC658, //HANGUL SYLLABLE IEUNG WA KHIEUKH - 0x9EC5: 0xC659, //HANGUL SYLLABLE IEUNG WA THIEUTH - 0x9EC6: 0xC65A, //HANGUL SYLLABLE IEUNG WA PHIEUPH - 0x9EC7: 0xC65B, //HANGUL SYLLABLE IEUNG WA HIEUH - 0x9EC8: 0xC65E, //HANGUL SYLLABLE IEUNG WAE SSANGKIYEOK - 0x9EC9: 0xC65F, //HANGUL SYLLABLE IEUNG WAE KIYEOKSIOS - 0x9ECA: 0xC661, //HANGUL SYLLABLE IEUNG WAE NIEUNCIEUC - 0x9ECB: 0xC662, //HANGUL SYLLABLE IEUNG WAE NIEUNHIEUH - 0x9ECC: 0xC663, //HANGUL SYLLABLE IEUNG WAE TIKEUT - 0x9ECD: 0xC664, //HANGUL SYLLABLE IEUNG WAE RIEUL - 0x9ECE: 0xC665, //HANGUL SYLLABLE IEUNG WAE RIEULKIYEOK - 0x9ECF: 0xC666, //HANGUL SYLLABLE IEUNG WAE RIEULMIEUM - 0x9ED0: 0xC667, //HANGUL SYLLABLE IEUNG WAE RIEULPIEUP - 0x9ED1: 0xC668, //HANGUL SYLLABLE IEUNG WAE RIEULSIOS - 0x9ED2: 0xC669, //HANGUL SYLLABLE IEUNG WAE RIEULTHIEUTH - 0x9ED3: 0xC66A, //HANGUL SYLLABLE IEUNG WAE RIEULPHIEUPH - 0x9ED4: 0xC66B, //HANGUL SYLLABLE IEUNG WAE RIEULHIEUH - 0x9ED5: 0xC66D, //HANGUL SYLLABLE IEUNG WAE PIEUP - 0x9ED6: 0xC66E, //HANGUL SYLLABLE IEUNG WAE PIEUPSIOS - 0x9ED7: 0xC670, //HANGUL SYLLABLE IEUNG WAE SSANGSIOS - 0x9ED8: 0xC672, //HANGUL SYLLABLE IEUNG WAE CIEUC - 0x9ED9: 0xC673, //HANGUL SYLLABLE IEUNG WAE CHIEUCH - 0x9EDA: 0xC674, //HANGUL SYLLABLE IEUNG WAE KHIEUKH - 0x9EDB: 0xC675, //HANGUL SYLLABLE IEUNG WAE THIEUTH - 0x9EDC: 0xC676, //HANGUL SYLLABLE IEUNG WAE PHIEUPH - 0x9EDD: 0xC677, //HANGUL SYLLABLE IEUNG WAE HIEUH - 0x9EDE: 0xC67A, //HANGUL SYLLABLE IEUNG OE SSANGKIYEOK - 0x9EDF: 0xC67B, //HANGUL SYLLABLE IEUNG OE KIYEOKSIOS - 0x9EE0: 0xC67D, //HANGUL SYLLABLE IEUNG OE NIEUNCIEUC - 0x9EE1: 0xC67E, //HANGUL SYLLABLE IEUNG OE NIEUNHIEUH - 0x9EE2: 0xC67F, //HANGUL SYLLABLE IEUNG OE TIKEUT - 0x9EE3: 0xC681, //HANGUL SYLLABLE IEUNG OE RIEULKIYEOK - 0x9EE4: 0xC682, //HANGUL SYLLABLE IEUNG OE RIEULMIEUM - 0x9EE5: 0xC683, //HANGUL SYLLABLE IEUNG OE RIEULPIEUP - 0x9EE6: 0xC684, //HANGUL SYLLABLE IEUNG OE RIEULSIOS - 0x9EE7: 0xC685, //HANGUL SYLLABLE IEUNG OE RIEULTHIEUTH - 0x9EE8: 0xC686, //HANGUL SYLLABLE IEUNG OE RIEULPHIEUPH - 0x9EE9: 0xC687, //HANGUL SYLLABLE IEUNG OE RIEULHIEUH - 0x9EEA: 0xC68A, //HANGUL SYLLABLE IEUNG OE PIEUPSIOS - 0x9EEB: 0xC68C, //HANGUL SYLLABLE IEUNG OE SSANGSIOS - 0x9EEC: 0xC68E, //HANGUL SYLLABLE IEUNG OE CIEUC - 0x9EED: 0xC68F, //HANGUL SYLLABLE IEUNG OE CHIEUCH - 0x9EEE: 0xC690, //HANGUL SYLLABLE IEUNG OE KHIEUKH - 0x9EEF: 0xC691, //HANGUL SYLLABLE IEUNG OE THIEUTH - 0x9EF0: 0xC692, //HANGUL SYLLABLE IEUNG OE PHIEUPH - 0x9EF1: 0xC693, //HANGUL SYLLABLE IEUNG OE HIEUH - 0x9EF2: 0xC696, //HANGUL SYLLABLE IEUNG YO SSANGKIYEOK - 0x9EF3: 0xC697, //HANGUL SYLLABLE IEUNG YO KIYEOKSIOS - 0x9EF4: 0xC699, //HANGUL SYLLABLE IEUNG YO NIEUNCIEUC - 0x9EF5: 0xC69A, //HANGUL SYLLABLE IEUNG YO NIEUNHIEUH - 0x9EF6: 0xC69B, //HANGUL SYLLABLE IEUNG YO TIKEUT - 0x9EF7: 0xC69D, //HANGUL SYLLABLE IEUNG YO RIEULKIYEOK - 0x9EF8: 0xC69E, //HANGUL SYLLABLE IEUNG YO RIEULMIEUM - 0x9EF9: 0xC69F, //HANGUL SYLLABLE IEUNG YO RIEULPIEUP - 0x9EFA: 0xC6A0, //HANGUL SYLLABLE IEUNG YO RIEULSIOS - 0x9EFB: 0xC6A1, //HANGUL SYLLABLE IEUNG YO RIEULTHIEUTH - 0x9EFC: 0xC6A2, //HANGUL SYLLABLE IEUNG YO RIEULPHIEUPH - 0x9EFD: 0xC6A3, //HANGUL SYLLABLE IEUNG YO RIEULHIEUH - 0x9EFE: 0xC6A6, //HANGUL SYLLABLE IEUNG YO PIEUPSIOS - 0x9F41: 0xC6A8, //HANGUL SYLLABLE IEUNG YO SSANGSIOS - 0x9F42: 0xC6AA, //HANGUL SYLLABLE IEUNG YO CIEUC - 0x9F43: 0xC6AB, //HANGUL SYLLABLE IEUNG YO CHIEUCH - 0x9F44: 0xC6AC, //HANGUL SYLLABLE IEUNG YO KHIEUKH - 0x9F45: 0xC6AD, //HANGUL SYLLABLE IEUNG YO THIEUTH - 0x9F46: 0xC6AE, //HANGUL SYLLABLE IEUNG YO PHIEUPH - 0x9F47: 0xC6AF, //HANGUL SYLLABLE IEUNG YO HIEUH - 0x9F48: 0xC6B2, //HANGUL SYLLABLE IEUNG U SSANGKIYEOK - 0x9F49: 0xC6B3, //HANGUL SYLLABLE IEUNG U KIYEOKSIOS - 0x9F4A: 0xC6B5, //HANGUL SYLLABLE IEUNG U NIEUNCIEUC - 0x9F4B: 0xC6B6, //HANGUL SYLLABLE IEUNG U NIEUNHIEUH - 0x9F4C: 0xC6B7, //HANGUL SYLLABLE IEUNG U TIKEUT - 0x9F4D: 0xC6BB, //HANGUL SYLLABLE IEUNG U RIEULPIEUP - 0x9F4E: 0xC6BC, //HANGUL SYLLABLE IEUNG U RIEULSIOS - 0x9F4F: 0xC6BD, //HANGUL SYLLABLE IEUNG U RIEULTHIEUTH - 0x9F50: 0xC6BE, //HANGUL SYLLABLE IEUNG U RIEULPHIEUPH - 0x9F51: 0xC6BF, //HANGUL SYLLABLE IEUNG U RIEULHIEUH - 0x9F52: 0xC6C2, //HANGUL SYLLABLE IEUNG U PIEUPSIOS - 0x9F53: 0xC6C4, //HANGUL SYLLABLE IEUNG U SSANGSIOS - 0x9F54: 0xC6C6, //HANGUL SYLLABLE IEUNG U CIEUC - 0x9F55: 0xC6C7, //HANGUL SYLLABLE IEUNG U CHIEUCH - 0x9F56: 0xC6C8, //HANGUL SYLLABLE IEUNG U KHIEUKH - 0x9F57: 0xC6C9, //HANGUL SYLLABLE IEUNG U THIEUTH - 0x9F58: 0xC6CA, //HANGUL SYLLABLE IEUNG U PHIEUPH - 0x9F59: 0xC6CB, //HANGUL SYLLABLE IEUNG U HIEUH - 0x9F5A: 0xC6CE, //HANGUL SYLLABLE IEUNG WEO SSANGKIYEOK - 0x9F61: 0xC6CF, //HANGUL SYLLABLE IEUNG WEO KIYEOKSIOS - 0x9F62: 0xC6D1, //HANGUL SYLLABLE IEUNG WEO NIEUNCIEUC - 0x9F63: 0xC6D2, //HANGUL SYLLABLE IEUNG WEO NIEUNHIEUH - 0x9F64: 0xC6D3, //HANGUL SYLLABLE IEUNG WEO TIKEUT - 0x9F65: 0xC6D5, //HANGUL SYLLABLE IEUNG WEO RIEULKIYEOK - 0x9F66: 0xC6D6, //HANGUL SYLLABLE IEUNG WEO RIEULMIEUM - 0x9F67: 0xC6D7, //HANGUL SYLLABLE IEUNG WEO RIEULPIEUP - 0x9F68: 0xC6D8, //HANGUL SYLLABLE IEUNG WEO RIEULSIOS - 0x9F69: 0xC6D9, //HANGUL SYLLABLE IEUNG WEO RIEULTHIEUTH - 0x9F6A: 0xC6DA, //HANGUL SYLLABLE IEUNG WEO RIEULPHIEUPH - 0x9F6B: 0xC6DB, //HANGUL SYLLABLE IEUNG WEO RIEULHIEUH - 0x9F6C: 0xC6DE, //HANGUL SYLLABLE IEUNG WEO PIEUPSIOS - 0x9F6D: 0xC6DF, //HANGUL SYLLABLE IEUNG WEO SIOS - 0x9F6E: 0xC6E2, //HANGUL SYLLABLE IEUNG WEO CIEUC - 0x9F6F: 0xC6E3, //HANGUL SYLLABLE IEUNG WEO CHIEUCH - 0x9F70: 0xC6E4, //HANGUL SYLLABLE IEUNG WEO KHIEUKH - 0x9F71: 0xC6E5, //HANGUL SYLLABLE IEUNG WEO THIEUTH - 0x9F72: 0xC6E6, //HANGUL SYLLABLE IEUNG WEO PHIEUPH - 0x9F73: 0xC6E7, //HANGUL SYLLABLE IEUNG WEO HIEUH - 0x9F74: 0xC6EA, //HANGUL SYLLABLE IEUNG WE SSANGKIYEOK - 0x9F75: 0xC6EB, //HANGUL SYLLABLE IEUNG WE KIYEOKSIOS - 0x9F76: 0xC6ED, //HANGUL SYLLABLE IEUNG WE NIEUNCIEUC - 0x9F77: 0xC6EE, //HANGUL SYLLABLE IEUNG WE NIEUNHIEUH - 0x9F78: 0xC6EF, //HANGUL SYLLABLE IEUNG WE TIKEUT - 0x9F79: 0xC6F1, //HANGUL SYLLABLE IEUNG WE RIEULKIYEOK - 0x9F7A: 0xC6F2, //HANGUL SYLLABLE IEUNG WE RIEULMIEUM - 0x9F81: 0xC6F3, //HANGUL SYLLABLE IEUNG WE RIEULPIEUP - 0x9F82: 0xC6F4, //HANGUL SYLLABLE IEUNG WE RIEULSIOS - 0x9F83: 0xC6F5, //HANGUL SYLLABLE IEUNG WE RIEULTHIEUTH - 0x9F84: 0xC6F6, //HANGUL SYLLABLE IEUNG WE RIEULPHIEUPH - 0x9F85: 0xC6F7, //HANGUL SYLLABLE IEUNG WE RIEULHIEUH - 0x9F86: 0xC6FA, //HANGUL SYLLABLE IEUNG WE PIEUPSIOS - 0x9F87: 0xC6FB, //HANGUL SYLLABLE IEUNG WE SIOS - 0x9F88: 0xC6FC, //HANGUL SYLLABLE IEUNG WE SSANGSIOS - 0x9F89: 0xC6FE, //HANGUL SYLLABLE IEUNG WE CIEUC - 0x9F8A: 0xC6FF, //HANGUL SYLLABLE IEUNG WE CHIEUCH - 0x9F8B: 0xC700, //HANGUL SYLLABLE IEUNG WE KHIEUKH - 0x9F8C: 0xC701, //HANGUL SYLLABLE IEUNG WE THIEUTH - 0x9F8D: 0xC702, //HANGUL SYLLABLE IEUNG WE PHIEUPH - 0x9F8E: 0xC703, //HANGUL SYLLABLE IEUNG WE HIEUH - 0x9F8F: 0xC706, //HANGUL SYLLABLE IEUNG WI SSANGKIYEOK - 0x9F90: 0xC707, //HANGUL SYLLABLE IEUNG WI KIYEOKSIOS - 0x9F91: 0xC709, //HANGUL SYLLABLE IEUNG WI NIEUNCIEUC - 0x9F92: 0xC70A, //HANGUL SYLLABLE IEUNG WI NIEUNHIEUH - 0x9F93: 0xC70B, //HANGUL SYLLABLE IEUNG WI TIKEUT - 0x9F94: 0xC70D, //HANGUL SYLLABLE IEUNG WI RIEULKIYEOK - 0x9F95: 0xC70E, //HANGUL SYLLABLE IEUNG WI RIEULMIEUM - 0x9F96: 0xC70F, //HANGUL SYLLABLE IEUNG WI RIEULPIEUP - 0x9F97: 0xC710, //HANGUL SYLLABLE IEUNG WI RIEULSIOS - 0x9F98: 0xC711, //HANGUL SYLLABLE IEUNG WI RIEULTHIEUTH - 0x9F99: 0xC712, //HANGUL SYLLABLE IEUNG WI RIEULPHIEUPH - 0x9F9A: 0xC713, //HANGUL SYLLABLE IEUNG WI RIEULHIEUH - 0x9F9B: 0xC716, //HANGUL SYLLABLE IEUNG WI PIEUPSIOS - 0x9F9C: 0xC718, //HANGUL SYLLABLE IEUNG WI SSANGSIOS - 0x9F9D: 0xC71A, //HANGUL SYLLABLE IEUNG WI CIEUC - 0x9F9E: 0xC71B, //HANGUL SYLLABLE IEUNG WI CHIEUCH - 0x9F9F: 0xC71C, //HANGUL SYLLABLE IEUNG WI KHIEUKH - 0x9FA0: 0xC71D, //HANGUL SYLLABLE IEUNG WI THIEUTH - 0x9FA1: 0xC71E, //HANGUL SYLLABLE IEUNG WI PHIEUPH - 0x9FA2: 0xC71F, //HANGUL SYLLABLE IEUNG WI HIEUH - 0x9FA3: 0xC722, //HANGUL SYLLABLE IEUNG YU SSANGKIYEOK - 0x9FA4: 0xC723, //HANGUL SYLLABLE IEUNG YU KIYEOKSIOS - 0x9FA5: 0xC725, //HANGUL SYLLABLE IEUNG YU NIEUNCIEUC - 0x9FA6: 0xC726, //HANGUL SYLLABLE IEUNG YU NIEUNHIEUH - 0x9FA7: 0xC727, //HANGUL SYLLABLE IEUNG YU TIKEUT - 0x9FA8: 0xC729, //HANGUL SYLLABLE IEUNG YU RIEULKIYEOK - 0x9FA9: 0xC72A, //HANGUL SYLLABLE IEUNG YU RIEULMIEUM - 0x9FAA: 0xC72B, //HANGUL SYLLABLE IEUNG YU RIEULPIEUP - 0x9FAB: 0xC72C, //HANGUL SYLLABLE IEUNG YU RIEULSIOS - 0x9FAC: 0xC72D, //HANGUL SYLLABLE IEUNG YU RIEULTHIEUTH - 0x9FAD: 0xC72E, //HANGUL SYLLABLE IEUNG YU RIEULPHIEUPH - 0x9FAE: 0xC72F, //HANGUL SYLLABLE IEUNG YU RIEULHIEUH - 0x9FAF: 0xC732, //HANGUL SYLLABLE IEUNG YU PIEUPSIOS - 0x9FB0: 0xC734, //HANGUL SYLLABLE IEUNG YU SSANGSIOS - 0x9FB1: 0xC736, //HANGUL SYLLABLE IEUNG YU CIEUC - 0x9FB2: 0xC738, //HANGUL SYLLABLE IEUNG YU KHIEUKH - 0x9FB3: 0xC739, //HANGUL SYLLABLE IEUNG YU THIEUTH - 0x9FB4: 0xC73A, //HANGUL SYLLABLE IEUNG YU PHIEUPH - 0x9FB5: 0xC73B, //HANGUL SYLLABLE IEUNG YU HIEUH - 0x9FB6: 0xC73E, //HANGUL SYLLABLE IEUNG EU SSANGKIYEOK - 0x9FB7: 0xC73F, //HANGUL SYLLABLE IEUNG EU KIYEOKSIOS - 0x9FB8: 0xC741, //HANGUL SYLLABLE IEUNG EU NIEUNCIEUC - 0x9FB9: 0xC742, //HANGUL SYLLABLE IEUNG EU NIEUNHIEUH - 0x9FBA: 0xC743, //HANGUL SYLLABLE IEUNG EU TIKEUT - 0x9FBB: 0xC745, //HANGUL SYLLABLE IEUNG EU RIEULKIYEOK - 0x9FBC: 0xC746, //HANGUL SYLLABLE IEUNG EU RIEULMIEUM - 0x9FBD: 0xC747, //HANGUL SYLLABLE IEUNG EU RIEULPIEUP - 0x9FBE: 0xC748, //HANGUL SYLLABLE IEUNG EU RIEULSIOS - 0x9FBF: 0xC749, //HANGUL SYLLABLE IEUNG EU RIEULTHIEUTH - 0x9FC0: 0xC74B, //HANGUL SYLLABLE IEUNG EU RIEULHIEUH - 0x9FC1: 0xC74E, //HANGUL SYLLABLE IEUNG EU PIEUPSIOS - 0x9FC2: 0xC750, //HANGUL SYLLABLE IEUNG EU SSANGSIOS - 0x9FC3: 0xC759, //HANGUL SYLLABLE IEUNG YI KIYEOK - 0x9FC4: 0xC75A, //HANGUL SYLLABLE IEUNG YI SSANGKIYEOK - 0x9FC5: 0xC75B, //HANGUL SYLLABLE IEUNG YI KIYEOKSIOS - 0x9FC6: 0xC75D, //HANGUL SYLLABLE IEUNG YI NIEUNCIEUC - 0x9FC7: 0xC75E, //HANGUL SYLLABLE IEUNG YI NIEUNHIEUH - 0x9FC8: 0xC75F, //HANGUL SYLLABLE IEUNG YI TIKEUT - 0x9FC9: 0xC761, //HANGUL SYLLABLE IEUNG YI RIEULKIYEOK - 0x9FCA: 0xC762, //HANGUL SYLLABLE IEUNG YI RIEULMIEUM - 0x9FCB: 0xC763, //HANGUL SYLLABLE IEUNG YI RIEULPIEUP - 0x9FCC: 0xC764, //HANGUL SYLLABLE IEUNG YI RIEULSIOS - 0x9FCD: 0xC765, //HANGUL SYLLABLE IEUNG YI RIEULTHIEUTH - 0x9FCE: 0xC766, //HANGUL SYLLABLE IEUNG YI RIEULPHIEUPH - 0x9FCF: 0xC767, //HANGUL SYLLABLE IEUNG YI RIEULHIEUH - 0x9FD0: 0xC769, //HANGUL SYLLABLE IEUNG YI PIEUP - 0x9FD1: 0xC76A, //HANGUL SYLLABLE IEUNG YI PIEUPSIOS - 0x9FD2: 0xC76C, //HANGUL SYLLABLE IEUNG YI SSANGSIOS - 0x9FD3: 0xC76D, //HANGUL SYLLABLE IEUNG YI IEUNG - 0x9FD4: 0xC76E, //HANGUL SYLLABLE IEUNG YI CIEUC - 0x9FD5: 0xC76F, //HANGUL SYLLABLE IEUNG YI CHIEUCH - 0x9FD6: 0xC770, //HANGUL SYLLABLE IEUNG YI KHIEUKH - 0x9FD7: 0xC771, //HANGUL SYLLABLE IEUNG YI THIEUTH - 0x9FD8: 0xC772, //HANGUL SYLLABLE IEUNG YI PHIEUPH - 0x9FD9: 0xC773, //HANGUL SYLLABLE IEUNG YI HIEUH - 0x9FDA: 0xC776, //HANGUL SYLLABLE IEUNG I SSANGKIYEOK - 0x9FDB: 0xC777, //HANGUL SYLLABLE IEUNG I KIYEOKSIOS - 0x9FDC: 0xC779, //HANGUL SYLLABLE IEUNG I NIEUNCIEUC - 0x9FDD: 0xC77A, //HANGUL SYLLABLE IEUNG I NIEUNHIEUH - 0x9FDE: 0xC77B, //HANGUL SYLLABLE IEUNG I TIKEUT - 0x9FDF: 0xC77F, //HANGUL SYLLABLE IEUNG I RIEULPIEUP - 0x9FE0: 0xC780, //HANGUL SYLLABLE IEUNG I RIEULSIOS - 0x9FE1: 0xC781, //HANGUL SYLLABLE IEUNG I RIEULTHIEUTH - 0x9FE2: 0xC782, //HANGUL SYLLABLE IEUNG I RIEULPHIEUPH - 0x9FE3: 0xC786, //HANGUL SYLLABLE IEUNG I PIEUPSIOS - 0x9FE4: 0xC78B, //HANGUL SYLLABLE IEUNG I CHIEUCH - 0x9FE5: 0xC78C, //HANGUL SYLLABLE IEUNG I KHIEUKH - 0x9FE6: 0xC78D, //HANGUL SYLLABLE IEUNG I THIEUTH - 0x9FE7: 0xC78F, //HANGUL SYLLABLE IEUNG I HIEUH - 0x9FE8: 0xC792, //HANGUL SYLLABLE CIEUC A SSANGKIYEOK - 0x9FE9: 0xC793, //HANGUL SYLLABLE CIEUC A KIYEOKSIOS - 0x9FEA: 0xC795, //HANGUL SYLLABLE CIEUC A NIEUNCIEUC - 0x9FEB: 0xC799, //HANGUL SYLLABLE CIEUC A RIEULKIYEOK - 0x9FEC: 0xC79B, //HANGUL SYLLABLE CIEUC A RIEULPIEUP - 0x9FED: 0xC79C, //HANGUL SYLLABLE CIEUC A RIEULSIOS - 0x9FEE: 0xC79D, //HANGUL SYLLABLE CIEUC A RIEULTHIEUTH - 0x9FEF: 0xC79E, //HANGUL SYLLABLE CIEUC A RIEULPHIEUPH - 0x9FF0: 0xC79F, //HANGUL SYLLABLE CIEUC A RIEULHIEUH - 0x9FF1: 0xC7A2, //HANGUL SYLLABLE CIEUC A PIEUPSIOS - 0x9FF2: 0xC7A7, //HANGUL SYLLABLE CIEUC A CHIEUCH - 0x9FF3: 0xC7A8, //HANGUL SYLLABLE CIEUC A KHIEUKH - 0x9FF4: 0xC7A9, //HANGUL SYLLABLE CIEUC A THIEUTH - 0x9FF5: 0xC7AA, //HANGUL SYLLABLE CIEUC A PHIEUPH - 0x9FF6: 0xC7AB, //HANGUL SYLLABLE CIEUC A HIEUH - 0x9FF7: 0xC7AE, //HANGUL SYLLABLE CIEUC AE SSANGKIYEOK - 0x9FF8: 0xC7AF, //HANGUL SYLLABLE CIEUC AE KIYEOKSIOS - 0x9FF9: 0xC7B1, //HANGUL SYLLABLE CIEUC AE NIEUNCIEUC - 0x9FFA: 0xC7B2, //HANGUL SYLLABLE CIEUC AE NIEUNHIEUH - 0x9FFB: 0xC7B3, //HANGUL SYLLABLE CIEUC AE TIKEUT - 0x9FFC: 0xC7B5, //HANGUL SYLLABLE CIEUC AE RIEULKIYEOK - 0x9FFD: 0xC7B6, //HANGUL SYLLABLE CIEUC AE RIEULMIEUM - 0x9FFE: 0xC7B7, //HANGUL SYLLABLE CIEUC AE RIEULPIEUP - 0xA041: 0xC7B8, //HANGUL SYLLABLE CIEUC AE RIEULSIOS - 0xA042: 0xC7B9, //HANGUL SYLLABLE CIEUC AE RIEULTHIEUTH - 0xA043: 0xC7BA, //HANGUL SYLLABLE CIEUC AE RIEULPHIEUPH - 0xA044: 0xC7BB, //HANGUL SYLLABLE CIEUC AE RIEULHIEUH - 0xA045: 0xC7BE, //HANGUL SYLLABLE CIEUC AE PIEUPSIOS - 0xA046: 0xC7C2, //HANGUL SYLLABLE CIEUC AE CIEUC - 0xA047: 0xC7C3, //HANGUL SYLLABLE CIEUC AE CHIEUCH - 0xA048: 0xC7C4, //HANGUL SYLLABLE CIEUC AE KHIEUKH - 0xA049: 0xC7C5, //HANGUL SYLLABLE CIEUC AE THIEUTH - 0xA04A: 0xC7C6, //HANGUL SYLLABLE CIEUC AE PHIEUPH - 0xA04B: 0xC7C7, //HANGUL SYLLABLE CIEUC AE HIEUH - 0xA04C: 0xC7CA, //HANGUL SYLLABLE CIEUC YA SSANGKIYEOK - 0xA04D: 0xC7CB, //HANGUL SYLLABLE CIEUC YA KIYEOKSIOS - 0xA04E: 0xC7CD, //HANGUL SYLLABLE CIEUC YA NIEUNCIEUC - 0xA04F: 0xC7CF, //HANGUL SYLLABLE CIEUC YA TIKEUT - 0xA050: 0xC7D1, //HANGUL SYLLABLE CIEUC YA RIEULKIYEOK - 0xA051: 0xC7D2, //HANGUL SYLLABLE CIEUC YA RIEULMIEUM - 0xA052: 0xC7D3, //HANGUL SYLLABLE CIEUC YA RIEULPIEUP - 0xA053: 0xC7D4, //HANGUL SYLLABLE CIEUC YA RIEULSIOS - 0xA054: 0xC7D5, //HANGUL SYLLABLE CIEUC YA RIEULTHIEUTH - 0xA055: 0xC7D6, //HANGUL SYLLABLE CIEUC YA RIEULPHIEUPH - 0xA056: 0xC7D7, //HANGUL SYLLABLE CIEUC YA RIEULHIEUH - 0xA057: 0xC7D9, //HANGUL SYLLABLE CIEUC YA PIEUP - 0xA058: 0xC7DA, //HANGUL SYLLABLE CIEUC YA PIEUPSIOS - 0xA059: 0xC7DB, //HANGUL SYLLABLE CIEUC YA SIOS - 0xA05A: 0xC7DC, //HANGUL SYLLABLE CIEUC YA SSANGSIOS - 0xA061: 0xC7DE, //HANGUL SYLLABLE CIEUC YA CIEUC - 0xA062: 0xC7DF, //HANGUL SYLLABLE CIEUC YA CHIEUCH - 0xA063: 0xC7E0, //HANGUL SYLLABLE CIEUC YA KHIEUKH - 0xA064: 0xC7E1, //HANGUL SYLLABLE CIEUC YA THIEUTH - 0xA065: 0xC7E2, //HANGUL SYLLABLE CIEUC YA PHIEUPH - 0xA066: 0xC7E3, //HANGUL SYLLABLE CIEUC YA HIEUH - 0xA067: 0xC7E5, //HANGUL SYLLABLE CIEUC YAE KIYEOK - 0xA068: 0xC7E6, //HANGUL SYLLABLE CIEUC YAE SSANGKIYEOK - 0xA069: 0xC7E7, //HANGUL SYLLABLE CIEUC YAE KIYEOKSIOS - 0xA06A: 0xC7E9, //HANGUL SYLLABLE CIEUC YAE NIEUNCIEUC - 0xA06B: 0xC7EA, //HANGUL SYLLABLE CIEUC YAE NIEUNHIEUH - 0xA06C: 0xC7EB, //HANGUL SYLLABLE CIEUC YAE TIKEUT - 0xA06D: 0xC7ED, //HANGUL SYLLABLE CIEUC YAE RIEULKIYEOK - 0xA06E: 0xC7EE, //HANGUL SYLLABLE CIEUC YAE RIEULMIEUM - 0xA06F: 0xC7EF, //HANGUL SYLLABLE CIEUC YAE RIEULPIEUP - 0xA070: 0xC7F0, //HANGUL SYLLABLE CIEUC YAE RIEULSIOS - 0xA071: 0xC7F1, //HANGUL SYLLABLE CIEUC YAE RIEULTHIEUTH - 0xA072: 0xC7F2, //HANGUL SYLLABLE CIEUC YAE RIEULPHIEUPH - 0xA073: 0xC7F3, //HANGUL SYLLABLE CIEUC YAE RIEULHIEUH - 0xA074: 0xC7F4, //HANGUL SYLLABLE CIEUC YAE MIEUM - 0xA075: 0xC7F5, //HANGUL SYLLABLE CIEUC YAE PIEUP - 0xA076: 0xC7F6, //HANGUL SYLLABLE CIEUC YAE PIEUPSIOS - 0xA077: 0xC7F7, //HANGUL SYLLABLE CIEUC YAE SIOS - 0xA078: 0xC7F8, //HANGUL SYLLABLE CIEUC YAE SSANGSIOS - 0xA079: 0xC7F9, //HANGUL SYLLABLE CIEUC YAE IEUNG - 0xA07A: 0xC7FA, //HANGUL SYLLABLE CIEUC YAE CIEUC - 0xA081: 0xC7FB, //HANGUL SYLLABLE CIEUC YAE CHIEUCH - 0xA082: 0xC7FC, //HANGUL SYLLABLE CIEUC YAE KHIEUKH - 0xA083: 0xC7FD, //HANGUL SYLLABLE CIEUC YAE THIEUTH - 0xA084: 0xC7FE, //HANGUL SYLLABLE CIEUC YAE PHIEUPH - 0xA085: 0xC7FF, //HANGUL SYLLABLE CIEUC YAE HIEUH - 0xA086: 0xC802, //HANGUL SYLLABLE CIEUC EO SSANGKIYEOK - 0xA087: 0xC803, //HANGUL SYLLABLE CIEUC EO KIYEOKSIOS - 0xA088: 0xC805, //HANGUL SYLLABLE CIEUC EO NIEUNCIEUC - 0xA089: 0xC806, //HANGUL SYLLABLE CIEUC EO NIEUNHIEUH - 0xA08A: 0xC807, //HANGUL SYLLABLE CIEUC EO TIKEUT - 0xA08B: 0xC809, //HANGUL SYLLABLE CIEUC EO RIEULKIYEOK - 0xA08C: 0xC80B, //HANGUL SYLLABLE CIEUC EO RIEULPIEUP - 0xA08D: 0xC80C, //HANGUL SYLLABLE CIEUC EO RIEULSIOS - 0xA08E: 0xC80D, //HANGUL SYLLABLE CIEUC EO RIEULTHIEUTH - 0xA08F: 0xC80E, //HANGUL SYLLABLE CIEUC EO RIEULPHIEUPH - 0xA090: 0xC80F, //HANGUL SYLLABLE CIEUC EO RIEULHIEUH - 0xA091: 0xC812, //HANGUL SYLLABLE CIEUC EO PIEUPSIOS - 0xA092: 0xC814, //HANGUL SYLLABLE CIEUC EO SSANGSIOS - 0xA093: 0xC817, //HANGUL SYLLABLE CIEUC EO CHIEUCH - 0xA094: 0xC818, //HANGUL SYLLABLE CIEUC EO KHIEUKH - 0xA095: 0xC819, //HANGUL SYLLABLE CIEUC EO THIEUTH - 0xA096: 0xC81A, //HANGUL SYLLABLE CIEUC EO PHIEUPH - 0xA097: 0xC81B, //HANGUL SYLLABLE CIEUC EO HIEUH - 0xA098: 0xC81E, //HANGUL SYLLABLE CIEUC E SSANGKIYEOK - 0xA099: 0xC81F, //HANGUL SYLLABLE CIEUC E KIYEOKSIOS - 0xA09A: 0xC821, //HANGUL SYLLABLE CIEUC E NIEUNCIEUC - 0xA09B: 0xC822, //HANGUL SYLLABLE CIEUC E NIEUNHIEUH - 0xA09C: 0xC823, //HANGUL SYLLABLE CIEUC E TIKEUT - 0xA09D: 0xC825, //HANGUL SYLLABLE CIEUC E RIEULKIYEOK - 0xA09E: 0xC826, //HANGUL SYLLABLE CIEUC E RIEULMIEUM - 0xA09F: 0xC827, //HANGUL SYLLABLE CIEUC E RIEULPIEUP - 0xA0A0: 0xC828, //HANGUL SYLLABLE CIEUC E RIEULSIOS - 0xA0A1: 0xC829, //HANGUL SYLLABLE CIEUC E RIEULTHIEUTH - 0xA0A2: 0xC82A, //HANGUL SYLLABLE CIEUC E RIEULPHIEUPH - 0xA0A3: 0xC82B, //HANGUL SYLLABLE CIEUC E RIEULHIEUH - 0xA0A4: 0xC82E, //HANGUL SYLLABLE CIEUC E PIEUPSIOS - 0xA0A5: 0xC830, //HANGUL SYLLABLE CIEUC E SSANGSIOS - 0xA0A6: 0xC832, //HANGUL SYLLABLE CIEUC E CIEUC - 0xA0A7: 0xC833, //HANGUL SYLLABLE CIEUC E CHIEUCH - 0xA0A8: 0xC834, //HANGUL SYLLABLE CIEUC E KHIEUKH - 0xA0A9: 0xC835, //HANGUL SYLLABLE CIEUC E THIEUTH - 0xA0AA: 0xC836, //HANGUL SYLLABLE CIEUC E PHIEUPH - 0xA0AB: 0xC837, //HANGUL SYLLABLE CIEUC E HIEUH - 0xA0AC: 0xC839, //HANGUL SYLLABLE CIEUC YEO KIYEOK - 0xA0AD: 0xC83A, //HANGUL SYLLABLE CIEUC YEO SSANGKIYEOK - 0xA0AE: 0xC83B, //HANGUL SYLLABLE CIEUC YEO KIYEOKSIOS - 0xA0AF: 0xC83D, //HANGUL SYLLABLE CIEUC YEO NIEUNCIEUC - 0xA0B0: 0xC83E, //HANGUL SYLLABLE CIEUC YEO NIEUNHIEUH - 0xA0B1: 0xC83F, //HANGUL SYLLABLE CIEUC YEO TIKEUT - 0xA0B2: 0xC841, //HANGUL SYLLABLE CIEUC YEO RIEULKIYEOK - 0xA0B3: 0xC842, //HANGUL SYLLABLE CIEUC YEO RIEULMIEUM - 0xA0B4: 0xC843, //HANGUL SYLLABLE CIEUC YEO RIEULPIEUP - 0xA0B5: 0xC844, //HANGUL SYLLABLE CIEUC YEO RIEULSIOS - 0xA0B6: 0xC845, //HANGUL SYLLABLE CIEUC YEO RIEULTHIEUTH - 0xA0B7: 0xC846, //HANGUL SYLLABLE CIEUC YEO RIEULPHIEUPH - 0xA0B8: 0xC847, //HANGUL SYLLABLE CIEUC YEO RIEULHIEUH - 0xA0B9: 0xC84A, //HANGUL SYLLABLE CIEUC YEO PIEUPSIOS - 0xA0BA: 0xC84B, //HANGUL SYLLABLE CIEUC YEO SIOS - 0xA0BB: 0xC84E, //HANGUL SYLLABLE CIEUC YEO CIEUC - 0xA0BC: 0xC84F, //HANGUL SYLLABLE CIEUC YEO CHIEUCH - 0xA0BD: 0xC850, //HANGUL SYLLABLE CIEUC YEO KHIEUKH - 0xA0BE: 0xC851, //HANGUL SYLLABLE CIEUC YEO THIEUTH - 0xA0BF: 0xC852, //HANGUL SYLLABLE CIEUC YEO PHIEUPH - 0xA0C0: 0xC853, //HANGUL SYLLABLE CIEUC YEO HIEUH - 0xA0C1: 0xC855, //HANGUL SYLLABLE CIEUC YE KIYEOK - 0xA0C2: 0xC856, //HANGUL SYLLABLE CIEUC YE SSANGKIYEOK - 0xA0C3: 0xC857, //HANGUL SYLLABLE CIEUC YE KIYEOKSIOS - 0xA0C4: 0xC858, //HANGUL SYLLABLE CIEUC YE NIEUN - 0xA0C5: 0xC859, //HANGUL SYLLABLE CIEUC YE NIEUNCIEUC - 0xA0C6: 0xC85A, //HANGUL SYLLABLE CIEUC YE NIEUNHIEUH - 0xA0C7: 0xC85B, //HANGUL SYLLABLE CIEUC YE TIKEUT - 0xA0C8: 0xC85C, //HANGUL SYLLABLE CIEUC YE RIEUL - 0xA0C9: 0xC85D, //HANGUL SYLLABLE CIEUC YE RIEULKIYEOK - 0xA0CA: 0xC85E, //HANGUL SYLLABLE CIEUC YE RIEULMIEUM - 0xA0CB: 0xC85F, //HANGUL SYLLABLE CIEUC YE RIEULPIEUP - 0xA0CC: 0xC860, //HANGUL SYLLABLE CIEUC YE RIEULSIOS - 0xA0CD: 0xC861, //HANGUL SYLLABLE CIEUC YE RIEULTHIEUTH - 0xA0CE: 0xC862, //HANGUL SYLLABLE CIEUC YE RIEULPHIEUPH - 0xA0CF: 0xC863, //HANGUL SYLLABLE CIEUC YE RIEULHIEUH - 0xA0D0: 0xC864, //HANGUL SYLLABLE CIEUC YE MIEUM - 0xA0D1: 0xC865, //HANGUL SYLLABLE CIEUC YE PIEUP - 0xA0D2: 0xC866, //HANGUL SYLLABLE CIEUC YE PIEUPSIOS - 0xA0D3: 0xC867, //HANGUL SYLLABLE CIEUC YE SIOS - 0xA0D4: 0xC868, //HANGUL SYLLABLE CIEUC YE SSANGSIOS - 0xA0D5: 0xC869, //HANGUL SYLLABLE CIEUC YE IEUNG - 0xA0D6: 0xC86A, //HANGUL SYLLABLE CIEUC YE CIEUC - 0xA0D7: 0xC86B, //HANGUL SYLLABLE CIEUC YE CHIEUCH - 0xA0D8: 0xC86C, //HANGUL SYLLABLE CIEUC YE KHIEUKH - 0xA0D9: 0xC86D, //HANGUL SYLLABLE CIEUC YE THIEUTH - 0xA0DA: 0xC86E, //HANGUL SYLLABLE CIEUC YE PHIEUPH - 0xA0DB: 0xC86F, //HANGUL SYLLABLE CIEUC YE HIEUH - 0xA0DC: 0xC872, //HANGUL SYLLABLE CIEUC O SSANGKIYEOK - 0xA0DD: 0xC873, //HANGUL SYLLABLE CIEUC O KIYEOKSIOS - 0xA0DE: 0xC875, //HANGUL SYLLABLE CIEUC O NIEUNCIEUC - 0xA0DF: 0xC876, //HANGUL SYLLABLE CIEUC O NIEUNHIEUH - 0xA0E0: 0xC877, //HANGUL SYLLABLE CIEUC O TIKEUT - 0xA0E1: 0xC879, //HANGUL SYLLABLE CIEUC O RIEULKIYEOK - 0xA0E2: 0xC87B, //HANGUL SYLLABLE CIEUC O RIEULPIEUP - 0xA0E3: 0xC87C, //HANGUL SYLLABLE CIEUC O RIEULSIOS - 0xA0E4: 0xC87D, //HANGUL SYLLABLE CIEUC O RIEULTHIEUTH - 0xA0E5: 0xC87E, //HANGUL SYLLABLE CIEUC O RIEULPHIEUPH - 0xA0E6: 0xC87F, //HANGUL SYLLABLE CIEUC O RIEULHIEUH - 0xA0E7: 0xC882, //HANGUL SYLLABLE CIEUC O PIEUPSIOS - 0xA0E8: 0xC884, //HANGUL SYLLABLE CIEUC O SSANGSIOS - 0xA0E9: 0xC888, //HANGUL SYLLABLE CIEUC O KHIEUKH - 0xA0EA: 0xC889, //HANGUL SYLLABLE CIEUC O THIEUTH - 0xA0EB: 0xC88A, //HANGUL SYLLABLE CIEUC O PHIEUPH - 0xA0EC: 0xC88E, //HANGUL SYLLABLE CIEUC WA SSANGKIYEOK - 0xA0ED: 0xC88F, //HANGUL SYLLABLE CIEUC WA KIYEOKSIOS - 0xA0EE: 0xC890, //HANGUL SYLLABLE CIEUC WA NIEUN - 0xA0EF: 0xC891, //HANGUL SYLLABLE CIEUC WA NIEUNCIEUC - 0xA0F0: 0xC892, //HANGUL SYLLABLE CIEUC WA NIEUNHIEUH - 0xA0F1: 0xC893, //HANGUL SYLLABLE CIEUC WA TIKEUT - 0xA0F2: 0xC895, //HANGUL SYLLABLE CIEUC WA RIEULKIYEOK - 0xA0F3: 0xC896, //HANGUL SYLLABLE CIEUC WA RIEULMIEUM - 0xA0F4: 0xC897, //HANGUL SYLLABLE CIEUC WA RIEULPIEUP - 0xA0F5: 0xC898, //HANGUL SYLLABLE CIEUC WA RIEULSIOS - 0xA0F6: 0xC899, //HANGUL SYLLABLE CIEUC WA RIEULTHIEUTH - 0xA0F7: 0xC89A, //HANGUL SYLLABLE CIEUC WA RIEULPHIEUPH - 0xA0F8: 0xC89B, //HANGUL SYLLABLE CIEUC WA RIEULHIEUH - 0xA0F9: 0xC89C, //HANGUL SYLLABLE CIEUC WA MIEUM - 0xA0FA: 0xC89E, //HANGUL SYLLABLE CIEUC WA PIEUPSIOS - 0xA0FB: 0xC8A0, //HANGUL SYLLABLE CIEUC WA SSANGSIOS - 0xA0FC: 0xC8A2, //HANGUL SYLLABLE CIEUC WA CIEUC - 0xA0FD: 0xC8A3, //HANGUL SYLLABLE CIEUC WA CHIEUCH - 0xA0FE: 0xC8A4, //HANGUL SYLLABLE CIEUC WA KHIEUKH - 0xA141: 0xC8A5, //HANGUL SYLLABLE CIEUC WA THIEUTH - 0xA142: 0xC8A6, //HANGUL SYLLABLE CIEUC WA PHIEUPH - 0xA143: 0xC8A7, //HANGUL SYLLABLE CIEUC WA HIEUH - 0xA144: 0xC8A9, //HANGUL SYLLABLE CIEUC WAE KIYEOK - 0xA145: 0xC8AA, //HANGUL SYLLABLE CIEUC WAE SSANGKIYEOK - 0xA146: 0xC8AB, //HANGUL SYLLABLE CIEUC WAE KIYEOKSIOS - 0xA147: 0xC8AC, //HANGUL SYLLABLE CIEUC WAE NIEUN - 0xA148: 0xC8AD, //HANGUL SYLLABLE CIEUC WAE NIEUNCIEUC - 0xA149: 0xC8AE, //HANGUL SYLLABLE CIEUC WAE NIEUNHIEUH - 0xA14A: 0xC8AF, //HANGUL SYLLABLE CIEUC WAE TIKEUT - 0xA14B: 0xC8B0, //HANGUL SYLLABLE CIEUC WAE RIEUL - 0xA14C: 0xC8B1, //HANGUL SYLLABLE CIEUC WAE RIEULKIYEOK - 0xA14D: 0xC8B2, //HANGUL SYLLABLE CIEUC WAE RIEULMIEUM - 0xA14E: 0xC8B3, //HANGUL SYLLABLE CIEUC WAE RIEULPIEUP - 0xA14F: 0xC8B4, //HANGUL SYLLABLE CIEUC WAE RIEULSIOS - 0xA150: 0xC8B5, //HANGUL SYLLABLE CIEUC WAE RIEULTHIEUTH - 0xA151: 0xC8B6, //HANGUL SYLLABLE CIEUC WAE RIEULPHIEUPH - 0xA152: 0xC8B7, //HANGUL SYLLABLE CIEUC WAE RIEULHIEUH - 0xA153: 0xC8B8, //HANGUL SYLLABLE CIEUC WAE MIEUM - 0xA154: 0xC8B9, //HANGUL SYLLABLE CIEUC WAE PIEUP - 0xA155: 0xC8BA, //HANGUL SYLLABLE CIEUC WAE PIEUPSIOS - 0xA156: 0xC8BB, //HANGUL SYLLABLE CIEUC WAE SIOS - 0xA157: 0xC8BE, //HANGUL SYLLABLE CIEUC WAE CIEUC - 0xA158: 0xC8BF, //HANGUL SYLLABLE CIEUC WAE CHIEUCH - 0xA159: 0xC8C0, //HANGUL SYLLABLE CIEUC WAE KHIEUKH - 0xA15A: 0xC8C1, //HANGUL SYLLABLE CIEUC WAE THIEUTH - 0xA161: 0xC8C2, //HANGUL SYLLABLE CIEUC WAE PHIEUPH - 0xA162: 0xC8C3, //HANGUL SYLLABLE CIEUC WAE HIEUH - 0xA163: 0xC8C5, //HANGUL SYLLABLE CIEUC OE KIYEOK - 0xA164: 0xC8C6, //HANGUL SYLLABLE CIEUC OE SSANGKIYEOK - 0xA165: 0xC8C7, //HANGUL SYLLABLE CIEUC OE KIYEOKSIOS - 0xA166: 0xC8C9, //HANGUL SYLLABLE CIEUC OE NIEUNCIEUC - 0xA167: 0xC8CA, //HANGUL SYLLABLE CIEUC OE NIEUNHIEUH - 0xA168: 0xC8CB, //HANGUL SYLLABLE CIEUC OE TIKEUT - 0xA169: 0xC8CD, //HANGUL SYLLABLE CIEUC OE RIEULKIYEOK - 0xA16A: 0xC8CE, //HANGUL SYLLABLE CIEUC OE RIEULMIEUM - 0xA16B: 0xC8CF, //HANGUL SYLLABLE CIEUC OE RIEULPIEUP - 0xA16C: 0xC8D0, //HANGUL SYLLABLE CIEUC OE RIEULSIOS - 0xA16D: 0xC8D1, //HANGUL SYLLABLE CIEUC OE RIEULTHIEUTH - 0xA16E: 0xC8D2, //HANGUL SYLLABLE CIEUC OE RIEULPHIEUPH - 0xA16F: 0xC8D3, //HANGUL SYLLABLE CIEUC OE RIEULHIEUH - 0xA170: 0xC8D6, //HANGUL SYLLABLE CIEUC OE PIEUPSIOS - 0xA171: 0xC8D8, //HANGUL SYLLABLE CIEUC OE SSANGSIOS - 0xA172: 0xC8DA, //HANGUL SYLLABLE CIEUC OE CIEUC - 0xA173: 0xC8DB, //HANGUL SYLLABLE CIEUC OE CHIEUCH - 0xA174: 0xC8DC, //HANGUL SYLLABLE CIEUC OE KHIEUKH - 0xA175: 0xC8DD, //HANGUL SYLLABLE CIEUC OE THIEUTH - 0xA176: 0xC8DE, //HANGUL SYLLABLE CIEUC OE PHIEUPH - 0xA177: 0xC8DF, //HANGUL SYLLABLE CIEUC OE HIEUH - 0xA178: 0xC8E2, //HANGUL SYLLABLE CIEUC YO SSANGKIYEOK - 0xA179: 0xC8E3, //HANGUL SYLLABLE CIEUC YO KIYEOKSIOS - 0xA17A: 0xC8E5, //HANGUL SYLLABLE CIEUC YO NIEUNCIEUC - 0xA181: 0xC8E6, //HANGUL SYLLABLE CIEUC YO NIEUNHIEUH - 0xA182: 0xC8E7, //HANGUL SYLLABLE CIEUC YO TIKEUT - 0xA183: 0xC8E8, //HANGUL SYLLABLE CIEUC YO RIEUL - 0xA184: 0xC8E9, //HANGUL SYLLABLE CIEUC YO RIEULKIYEOK - 0xA185: 0xC8EA, //HANGUL SYLLABLE CIEUC YO RIEULMIEUM - 0xA186: 0xC8EB, //HANGUL SYLLABLE CIEUC YO RIEULPIEUP - 0xA187: 0xC8EC, //HANGUL SYLLABLE CIEUC YO RIEULSIOS - 0xA188: 0xC8ED, //HANGUL SYLLABLE CIEUC YO RIEULTHIEUTH - 0xA189: 0xC8EE, //HANGUL SYLLABLE CIEUC YO RIEULPHIEUPH - 0xA18A: 0xC8EF, //HANGUL SYLLABLE CIEUC YO RIEULHIEUH - 0xA18B: 0xC8F0, //HANGUL SYLLABLE CIEUC YO MIEUM - 0xA18C: 0xC8F1, //HANGUL SYLLABLE CIEUC YO PIEUP - 0xA18D: 0xC8F2, //HANGUL SYLLABLE CIEUC YO PIEUPSIOS - 0xA18E: 0xC8F3, //HANGUL SYLLABLE CIEUC YO SIOS - 0xA18F: 0xC8F4, //HANGUL SYLLABLE CIEUC YO SSANGSIOS - 0xA190: 0xC8F6, //HANGUL SYLLABLE CIEUC YO CIEUC - 0xA191: 0xC8F7, //HANGUL SYLLABLE CIEUC YO CHIEUCH - 0xA192: 0xC8F8, //HANGUL SYLLABLE CIEUC YO KHIEUKH - 0xA193: 0xC8F9, //HANGUL SYLLABLE CIEUC YO THIEUTH - 0xA194: 0xC8FA, //HANGUL SYLLABLE CIEUC YO PHIEUPH - 0xA195: 0xC8FB, //HANGUL SYLLABLE CIEUC YO HIEUH - 0xA196: 0xC8FE, //HANGUL SYLLABLE CIEUC U SSANGKIYEOK - 0xA197: 0xC8FF, //HANGUL SYLLABLE CIEUC U KIYEOKSIOS - 0xA198: 0xC901, //HANGUL SYLLABLE CIEUC U NIEUNCIEUC - 0xA199: 0xC902, //HANGUL SYLLABLE CIEUC U NIEUNHIEUH - 0xA19A: 0xC903, //HANGUL SYLLABLE CIEUC U TIKEUT - 0xA19B: 0xC907, //HANGUL SYLLABLE CIEUC U RIEULPIEUP - 0xA19C: 0xC908, //HANGUL SYLLABLE CIEUC U RIEULSIOS - 0xA19D: 0xC909, //HANGUL SYLLABLE CIEUC U RIEULTHIEUTH - 0xA19E: 0xC90A, //HANGUL SYLLABLE CIEUC U RIEULPHIEUPH - 0xA19F: 0xC90B, //HANGUL SYLLABLE CIEUC U RIEULHIEUH - 0xA1A0: 0xC90E, //HANGUL SYLLABLE CIEUC U PIEUPSIOS - 0xA1A1: 0x3000, //IDEOGRAPHIC SPACE - 0xA1A2: 0x3001, //IDEOGRAPHIC COMMA - 0xA1A3: 0x3002, //IDEOGRAPHIC FULL STOP - 0xA1A4: 0x00B7, //MIDDLE DOT - 0xA1A5: 0x2025, //TWO DOT LEADER - 0xA1A6: 0x2026, //HORIZONTAL ELLIPSIS - 0xA1A7: 0x00A8, //DIAERESIS - 0xA1A8: 0x3003, //DITTO MARK - 0xA1A9: 0x00AD, //SOFT HYPHEN - 0xA1AA: 0x2015, //HORIZONTAL BAR - 0xA1AB: 0x2225, //PARALLEL TO - 0xA1AC: 0xFF3C, //FULLWIDTH REVERSE SOLIDUS - 0xA1AD: 0x223C, //TILDE OPERATOR - 0xA1AE: 0x2018, //LEFT SINGLE QUOTATION MARK - 0xA1AF: 0x2019, //RIGHT SINGLE QUOTATION MARK - 0xA1B0: 0x201C, //LEFT DOUBLE QUOTATION MARK - 0xA1B1: 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0xA1B2: 0x3014, //LEFT TORTOISE SHELL BRACKET - 0xA1B3: 0x3015, //RIGHT TORTOISE SHELL BRACKET - 0xA1B4: 0x3008, //LEFT ANGLE BRACKET - 0xA1B5: 0x3009, //RIGHT ANGLE BRACKET - 0xA1B6: 0x300A, //LEFT DOUBLE ANGLE BRACKET - 0xA1B7: 0x300B, //RIGHT DOUBLE ANGLE BRACKET - 0xA1B8: 0x300C, //LEFT CORNER BRACKET - 0xA1B9: 0x300D, //RIGHT CORNER BRACKET - 0xA1BA: 0x300E, //LEFT WHITE CORNER BRACKET - 0xA1BB: 0x300F, //RIGHT WHITE CORNER BRACKET - 0xA1BC: 0x3010, //LEFT BLACK LENTICULAR BRACKET - 0xA1BD: 0x3011, //RIGHT BLACK LENTICULAR BRACKET - 0xA1BE: 0x00B1, //PLUS-MINUS SIGN - 0xA1BF: 0x00D7, //MULTIPLICATION SIGN - 0xA1C0: 0x00F7, //DIVISION SIGN - 0xA1C1: 0x2260, //NOT EQUAL TO - 0xA1C2: 0x2264, //LESS-THAN OR EQUAL TO - 0xA1C3: 0x2265, //GREATER-THAN OR EQUAL TO - 0xA1C4: 0x221E, //INFINITY - 0xA1C5: 0x2234, //THEREFORE - 0xA1C6: 0x00B0, //DEGREE SIGN - 0xA1C7: 0x2032, //PRIME - 0xA1C8: 0x2033, //DOUBLE PRIME - 0xA1C9: 0x2103, //DEGREE CELSIUS - 0xA1CA: 0x212B, //ANGSTROM SIGN - 0xA1CB: 0xFFE0, //FULLWIDTH CENT SIGN - 0xA1CC: 0xFFE1, //FULLWIDTH POUND SIGN - 0xA1CD: 0xFFE5, //FULLWIDTH YEN SIGN - 0xA1CE: 0x2642, //MALE SIGN - 0xA1CF: 0x2640, //FEMALE SIGN - 0xA1D0: 0x2220, //ANGLE - 0xA1D1: 0x22A5, //UP TACK - 0xA1D2: 0x2312, //ARC - 0xA1D3: 0x2202, //PARTIAL DIFFERENTIAL - 0xA1D4: 0x2207, //NABLA - 0xA1D5: 0x2261, //IDENTICAL TO - 0xA1D6: 0x2252, //APPROXIMATELY EQUAL TO OR THE IMAGE OF - 0xA1D7: 0x00A7, //SECTION SIGN - 0xA1D8: 0x203B, //REFERENCE MARK - 0xA1D9: 0x2606, //WHITE STAR - 0xA1DA: 0x2605, //BLACK STAR - 0xA1DB: 0x25CB, //WHITE CIRCLE - 0xA1DC: 0x25CF, //BLACK CIRCLE - 0xA1DD: 0x25CE, //BULLSEYE - 0xA1DE: 0x25C7, //WHITE DIAMOND - 0xA1DF: 0x25C6, //BLACK DIAMOND - 0xA1E0: 0x25A1, //WHITE SQUARE - 0xA1E1: 0x25A0, //BLACK SQUARE - 0xA1E2: 0x25B3, //WHITE UP-POINTING TRIANGLE - 0xA1E3: 0x25B2, //BLACK UP-POINTING TRIANGLE - 0xA1E4: 0x25BD, //WHITE DOWN-POINTING TRIANGLE - 0xA1E5: 0x25BC, //BLACK DOWN-POINTING TRIANGLE - 0xA1E6: 0x2192, //RIGHTWARDS ARROW - 0xA1E7: 0x2190, //LEFTWARDS ARROW - 0xA1E8: 0x2191, //UPWARDS ARROW - 0xA1E9: 0x2193, //DOWNWARDS ARROW - 0xA1EA: 0x2194, //LEFT RIGHT ARROW - 0xA1EB: 0x3013, //GETA MARK - 0xA1EC: 0x226A, //MUCH LESS-THAN - 0xA1ED: 0x226B, //MUCH GREATER-THAN - 0xA1EE: 0x221A, //SQUARE ROOT - 0xA1EF: 0x223D, //REVERSED TILDE - 0xA1F0: 0x221D, //PROPORTIONAL TO - 0xA1F1: 0x2235, //BECAUSE - 0xA1F2: 0x222B, //INTEGRAL - 0xA1F3: 0x222C, //DOUBLE INTEGRAL - 0xA1F4: 0x2208, //ELEMENT OF - 0xA1F5: 0x220B, //CONTAINS AS MEMBER - 0xA1F6: 0x2286, //SUBSET OF OR EQUAL TO - 0xA1F7: 0x2287, //SUPERSET OF OR EQUAL TO - 0xA1F8: 0x2282, //SUBSET OF - 0xA1F9: 0x2283, //SUPERSET OF - 0xA1FA: 0x222A, //UNION - 0xA1FB: 0x2229, //INTERSECTION - 0xA1FC: 0x2227, //LOGICAL AND - 0xA1FD: 0x2228, //LOGICAL OR - 0xA1FE: 0xFFE2, //FULLWIDTH NOT SIGN - 0xA241: 0xC910, //HANGUL SYLLABLE CIEUC U SSANGSIOS - 0xA242: 0xC912, //HANGUL SYLLABLE CIEUC U CIEUC - 0xA243: 0xC913, //HANGUL SYLLABLE CIEUC U CHIEUCH - 0xA244: 0xC914, //HANGUL SYLLABLE CIEUC U KHIEUKH - 0xA245: 0xC915, //HANGUL SYLLABLE CIEUC U THIEUTH - 0xA246: 0xC916, //HANGUL SYLLABLE CIEUC U PHIEUPH - 0xA247: 0xC917, //HANGUL SYLLABLE CIEUC U HIEUH - 0xA248: 0xC919, //HANGUL SYLLABLE CIEUC WEO KIYEOK - 0xA249: 0xC91A, //HANGUL SYLLABLE CIEUC WEO SSANGKIYEOK - 0xA24A: 0xC91B, //HANGUL SYLLABLE CIEUC WEO KIYEOKSIOS - 0xA24B: 0xC91C, //HANGUL SYLLABLE CIEUC WEO NIEUN - 0xA24C: 0xC91D, //HANGUL SYLLABLE CIEUC WEO NIEUNCIEUC - 0xA24D: 0xC91E, //HANGUL SYLLABLE CIEUC WEO NIEUNHIEUH - 0xA24E: 0xC91F, //HANGUL SYLLABLE CIEUC WEO TIKEUT - 0xA24F: 0xC920, //HANGUL SYLLABLE CIEUC WEO RIEUL - 0xA250: 0xC921, //HANGUL SYLLABLE CIEUC WEO RIEULKIYEOK - 0xA251: 0xC922, //HANGUL SYLLABLE CIEUC WEO RIEULMIEUM - 0xA252: 0xC923, //HANGUL SYLLABLE CIEUC WEO RIEULPIEUP - 0xA253: 0xC924, //HANGUL SYLLABLE CIEUC WEO RIEULSIOS - 0xA254: 0xC925, //HANGUL SYLLABLE CIEUC WEO RIEULTHIEUTH - 0xA255: 0xC926, //HANGUL SYLLABLE CIEUC WEO RIEULPHIEUPH - 0xA256: 0xC927, //HANGUL SYLLABLE CIEUC WEO RIEULHIEUH - 0xA257: 0xC928, //HANGUL SYLLABLE CIEUC WEO MIEUM - 0xA258: 0xC929, //HANGUL SYLLABLE CIEUC WEO PIEUP - 0xA259: 0xC92A, //HANGUL SYLLABLE CIEUC WEO PIEUPSIOS - 0xA25A: 0xC92B, //HANGUL SYLLABLE CIEUC WEO SIOS - 0xA261: 0xC92D, //HANGUL SYLLABLE CIEUC WEO IEUNG - 0xA262: 0xC92E, //HANGUL SYLLABLE CIEUC WEO CIEUC - 0xA263: 0xC92F, //HANGUL SYLLABLE CIEUC WEO CHIEUCH - 0xA264: 0xC930, //HANGUL SYLLABLE CIEUC WEO KHIEUKH - 0xA265: 0xC931, //HANGUL SYLLABLE CIEUC WEO THIEUTH - 0xA266: 0xC932, //HANGUL SYLLABLE CIEUC WEO PHIEUPH - 0xA267: 0xC933, //HANGUL SYLLABLE CIEUC WEO HIEUH - 0xA268: 0xC935, //HANGUL SYLLABLE CIEUC WE KIYEOK - 0xA269: 0xC936, //HANGUL SYLLABLE CIEUC WE SSANGKIYEOK - 0xA26A: 0xC937, //HANGUL SYLLABLE CIEUC WE KIYEOKSIOS - 0xA26B: 0xC938, //HANGUL SYLLABLE CIEUC WE NIEUN - 0xA26C: 0xC939, //HANGUL SYLLABLE CIEUC WE NIEUNCIEUC - 0xA26D: 0xC93A, //HANGUL SYLLABLE CIEUC WE NIEUNHIEUH - 0xA26E: 0xC93B, //HANGUL SYLLABLE CIEUC WE TIKEUT - 0xA26F: 0xC93C, //HANGUL SYLLABLE CIEUC WE RIEUL - 0xA270: 0xC93D, //HANGUL SYLLABLE CIEUC WE RIEULKIYEOK - 0xA271: 0xC93E, //HANGUL SYLLABLE CIEUC WE RIEULMIEUM - 0xA272: 0xC93F, //HANGUL SYLLABLE CIEUC WE RIEULPIEUP - 0xA273: 0xC940, //HANGUL SYLLABLE CIEUC WE RIEULSIOS - 0xA274: 0xC941, //HANGUL SYLLABLE CIEUC WE RIEULTHIEUTH - 0xA275: 0xC942, //HANGUL SYLLABLE CIEUC WE RIEULPHIEUPH - 0xA276: 0xC943, //HANGUL SYLLABLE CIEUC WE RIEULHIEUH - 0xA277: 0xC944, //HANGUL SYLLABLE CIEUC WE MIEUM - 0xA278: 0xC945, //HANGUL SYLLABLE CIEUC WE PIEUP - 0xA279: 0xC946, //HANGUL SYLLABLE CIEUC WE PIEUPSIOS - 0xA27A: 0xC947, //HANGUL SYLLABLE CIEUC WE SIOS - 0xA281: 0xC948, //HANGUL SYLLABLE CIEUC WE SSANGSIOS - 0xA282: 0xC949, //HANGUL SYLLABLE CIEUC WE IEUNG - 0xA283: 0xC94A, //HANGUL SYLLABLE CIEUC WE CIEUC - 0xA284: 0xC94B, //HANGUL SYLLABLE CIEUC WE CHIEUCH - 0xA285: 0xC94C, //HANGUL SYLLABLE CIEUC WE KHIEUKH - 0xA286: 0xC94D, //HANGUL SYLLABLE CIEUC WE THIEUTH - 0xA287: 0xC94E, //HANGUL SYLLABLE CIEUC WE PHIEUPH - 0xA288: 0xC94F, //HANGUL SYLLABLE CIEUC WE HIEUH - 0xA289: 0xC952, //HANGUL SYLLABLE CIEUC WI SSANGKIYEOK - 0xA28A: 0xC953, //HANGUL SYLLABLE CIEUC WI KIYEOKSIOS - 0xA28B: 0xC955, //HANGUL SYLLABLE CIEUC WI NIEUNCIEUC - 0xA28C: 0xC956, //HANGUL SYLLABLE CIEUC WI NIEUNHIEUH - 0xA28D: 0xC957, //HANGUL SYLLABLE CIEUC WI TIKEUT - 0xA28E: 0xC959, //HANGUL SYLLABLE CIEUC WI RIEULKIYEOK - 0xA28F: 0xC95A, //HANGUL SYLLABLE CIEUC WI RIEULMIEUM - 0xA290: 0xC95B, //HANGUL SYLLABLE CIEUC WI RIEULPIEUP - 0xA291: 0xC95C, //HANGUL SYLLABLE CIEUC WI RIEULSIOS - 0xA292: 0xC95D, //HANGUL SYLLABLE CIEUC WI RIEULTHIEUTH - 0xA293: 0xC95E, //HANGUL SYLLABLE CIEUC WI RIEULPHIEUPH - 0xA294: 0xC95F, //HANGUL SYLLABLE CIEUC WI RIEULHIEUH - 0xA295: 0xC962, //HANGUL SYLLABLE CIEUC WI PIEUPSIOS - 0xA296: 0xC964, //HANGUL SYLLABLE CIEUC WI SSANGSIOS - 0xA297: 0xC965, //HANGUL SYLLABLE CIEUC WI IEUNG - 0xA298: 0xC966, //HANGUL SYLLABLE CIEUC WI CIEUC - 0xA299: 0xC967, //HANGUL SYLLABLE CIEUC WI CHIEUCH - 0xA29A: 0xC968, //HANGUL SYLLABLE CIEUC WI KHIEUKH - 0xA29B: 0xC969, //HANGUL SYLLABLE CIEUC WI THIEUTH - 0xA29C: 0xC96A, //HANGUL SYLLABLE CIEUC WI PHIEUPH - 0xA29D: 0xC96B, //HANGUL SYLLABLE CIEUC WI HIEUH - 0xA29E: 0xC96D, //HANGUL SYLLABLE CIEUC YU KIYEOK - 0xA29F: 0xC96E, //HANGUL SYLLABLE CIEUC YU SSANGKIYEOK - 0xA2A0: 0xC96F, //HANGUL SYLLABLE CIEUC YU KIYEOKSIOS - 0xA2A1: 0x21D2, //RIGHTWARDS DOUBLE ARROW - 0xA2A2: 0x21D4, //LEFT RIGHT DOUBLE ARROW - 0xA2A3: 0x2200, //FOR ALL - 0xA2A4: 0x2203, //THERE EXISTS - 0xA2A5: 0x00B4, //ACUTE ACCENT - 0xA2A6: 0xFF5E, //FULLWIDTH TILDE - 0xA2A7: 0x02C7, //CARON - 0xA2A8: 0x02D8, //BREVE - 0xA2A9: 0x02DD, //DOUBLE ACUTE ACCENT - 0xA2AA: 0x02DA, //RING ABOVE - 0xA2AB: 0x02D9, //DOT ABOVE - 0xA2AC: 0x00B8, //CEDILLA - 0xA2AD: 0x02DB, //OGONEK - 0xA2AE: 0x00A1, //INVERTED EXCLAMATION MARK - 0xA2AF: 0x00BF, //INVERTED QUESTION MARK - 0xA2B0: 0x02D0, //MODIFIER LETTER TRIANGULAR COLON - 0xA2B1: 0x222E, //CONTOUR INTEGRAL - 0xA2B2: 0x2211, //N-ARY SUMMATION - 0xA2B3: 0x220F, //N-ARY PRODUCT - 0xA2B4: 0x00A4, //CURRENCY SIGN - 0xA2B5: 0x2109, //DEGREE FAHRENHEIT - 0xA2B6: 0x2030, //PER MILLE SIGN - 0xA2B7: 0x25C1, //WHITE LEFT-POINTING TRIANGLE - 0xA2B8: 0x25C0, //BLACK LEFT-POINTING TRIANGLE - 0xA2B9: 0x25B7, //WHITE RIGHT-POINTING TRIANGLE - 0xA2BA: 0x25B6, //BLACK RIGHT-POINTING TRIANGLE - 0xA2BB: 0x2664, //WHITE SPADE SUIT - 0xA2BC: 0x2660, //BLACK SPADE SUIT - 0xA2BD: 0x2661, //WHITE HEART SUIT - 0xA2BE: 0x2665, //BLACK HEART SUIT - 0xA2BF: 0x2667, //WHITE CLUB SUIT - 0xA2C0: 0x2663, //BLACK CLUB SUIT - 0xA2C1: 0x2299, //CIRCLED DOT OPERATOR - 0xA2C2: 0x25C8, //WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND - 0xA2C3: 0x25A3, //WHITE SQUARE CONTAINING BLACK SMALL SQUARE - 0xA2C4: 0x25D0, //CIRCLE WITH LEFT HALF BLACK - 0xA2C5: 0x25D1, //CIRCLE WITH RIGHT HALF BLACK - 0xA2C6: 0x2592, //MEDIUM SHADE - 0xA2C7: 0x25A4, //SQUARE WITH HORIZONTAL FILL - 0xA2C8: 0x25A5, //SQUARE WITH VERTICAL FILL - 0xA2C9: 0x25A8, //SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL - 0xA2CA: 0x25A7, //SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL - 0xA2CB: 0x25A6, //SQUARE WITH ORTHOGONAL CROSSHATCH FILL - 0xA2CC: 0x25A9, //SQUARE WITH DIAGONAL CROSSHATCH FILL - 0xA2CD: 0x2668, //HOT SPRINGS - 0xA2CE: 0x260F, //WHITE TELEPHONE - 0xA2CF: 0x260E, //BLACK TELEPHONE - 0xA2D0: 0x261C, //WHITE LEFT POINTING INDEX - 0xA2D1: 0x261E, //WHITE RIGHT POINTING INDEX - 0xA2D2: 0x00B6, //PILCROW SIGN - 0xA2D3: 0x2020, //DAGGER - 0xA2D4: 0x2021, //DOUBLE DAGGER - 0xA2D5: 0x2195, //UP DOWN ARROW - 0xA2D6: 0x2197, //NORTH EAST ARROW - 0xA2D7: 0x2199, //SOUTH WEST ARROW - 0xA2D8: 0x2196, //NORTH WEST ARROW - 0xA2D9: 0x2198, //SOUTH EAST ARROW - 0xA2DA: 0x266D, //MUSIC FLAT SIGN - 0xA2DB: 0x2669, //QUARTER NOTE - 0xA2DC: 0x266A, //EIGHTH NOTE - 0xA2DD: 0x266C, //BEAMED SIXTEENTH NOTES - 0xA2DE: 0x327F, //KOREAN STANDARD SYMBOL - 0xA2DF: 0x321C, //PARENTHESIZED HANGUL CIEUC U - 0xA2E0: 0x2116, //NUMERO SIGN - 0xA2E1: 0x33C7, //SQUARE CO - 0xA2E2: 0x2122, //TRADE MARK SIGN - 0xA2E3: 0x33C2, //SQUARE AM - 0xA2E4: 0x33D8, //SQUARE PM - 0xA2E5: 0x2121, //TELEPHONE SIGN - 0xA2E6: 0x20AC, //EURO SIGN - 0xA2E7: 0x00AE, //REGISTERED SIGN - 0xA341: 0xC971, //HANGUL SYLLABLE CIEUC YU NIEUNCIEUC - 0xA342: 0xC972, //HANGUL SYLLABLE CIEUC YU NIEUNHIEUH - 0xA343: 0xC973, //HANGUL SYLLABLE CIEUC YU TIKEUT - 0xA344: 0xC975, //HANGUL SYLLABLE CIEUC YU RIEULKIYEOK - 0xA345: 0xC976, //HANGUL SYLLABLE CIEUC YU RIEULMIEUM - 0xA346: 0xC977, //HANGUL SYLLABLE CIEUC YU RIEULPIEUP - 0xA347: 0xC978, //HANGUL SYLLABLE CIEUC YU RIEULSIOS - 0xA348: 0xC979, //HANGUL SYLLABLE CIEUC YU RIEULTHIEUTH - 0xA349: 0xC97A, //HANGUL SYLLABLE CIEUC YU RIEULPHIEUPH - 0xA34A: 0xC97B, //HANGUL SYLLABLE CIEUC YU RIEULHIEUH - 0xA34B: 0xC97D, //HANGUL SYLLABLE CIEUC YU PIEUP - 0xA34C: 0xC97E, //HANGUL SYLLABLE CIEUC YU PIEUPSIOS - 0xA34D: 0xC97F, //HANGUL SYLLABLE CIEUC YU SIOS - 0xA34E: 0xC980, //HANGUL SYLLABLE CIEUC YU SSANGSIOS - 0xA34F: 0xC981, //HANGUL SYLLABLE CIEUC YU IEUNG - 0xA350: 0xC982, //HANGUL SYLLABLE CIEUC YU CIEUC - 0xA351: 0xC983, //HANGUL SYLLABLE CIEUC YU CHIEUCH - 0xA352: 0xC984, //HANGUL SYLLABLE CIEUC YU KHIEUKH - 0xA353: 0xC985, //HANGUL SYLLABLE CIEUC YU THIEUTH - 0xA354: 0xC986, //HANGUL SYLLABLE CIEUC YU PHIEUPH - 0xA355: 0xC987, //HANGUL SYLLABLE CIEUC YU HIEUH - 0xA356: 0xC98A, //HANGUL SYLLABLE CIEUC EU SSANGKIYEOK - 0xA357: 0xC98B, //HANGUL SYLLABLE CIEUC EU KIYEOKSIOS - 0xA358: 0xC98D, //HANGUL SYLLABLE CIEUC EU NIEUNCIEUC - 0xA359: 0xC98E, //HANGUL SYLLABLE CIEUC EU NIEUNHIEUH - 0xA35A: 0xC98F, //HANGUL SYLLABLE CIEUC EU TIKEUT - 0xA361: 0xC991, //HANGUL SYLLABLE CIEUC EU RIEULKIYEOK - 0xA362: 0xC992, //HANGUL SYLLABLE CIEUC EU RIEULMIEUM - 0xA363: 0xC993, //HANGUL SYLLABLE CIEUC EU RIEULPIEUP - 0xA364: 0xC994, //HANGUL SYLLABLE CIEUC EU RIEULSIOS - 0xA365: 0xC995, //HANGUL SYLLABLE CIEUC EU RIEULTHIEUTH - 0xA366: 0xC996, //HANGUL SYLLABLE CIEUC EU RIEULPHIEUPH - 0xA367: 0xC997, //HANGUL SYLLABLE CIEUC EU RIEULHIEUH - 0xA368: 0xC99A, //HANGUL SYLLABLE CIEUC EU PIEUPSIOS - 0xA369: 0xC99C, //HANGUL SYLLABLE CIEUC EU SSANGSIOS - 0xA36A: 0xC99E, //HANGUL SYLLABLE CIEUC EU CIEUC - 0xA36B: 0xC99F, //HANGUL SYLLABLE CIEUC EU CHIEUCH - 0xA36C: 0xC9A0, //HANGUL SYLLABLE CIEUC EU KHIEUKH - 0xA36D: 0xC9A1, //HANGUL SYLLABLE CIEUC EU THIEUTH - 0xA36E: 0xC9A2, //HANGUL SYLLABLE CIEUC EU PHIEUPH - 0xA36F: 0xC9A3, //HANGUL SYLLABLE CIEUC EU HIEUH - 0xA370: 0xC9A4, //HANGUL SYLLABLE CIEUC YI - 0xA371: 0xC9A5, //HANGUL SYLLABLE CIEUC YI KIYEOK - 0xA372: 0xC9A6, //HANGUL SYLLABLE CIEUC YI SSANGKIYEOK - 0xA373: 0xC9A7, //HANGUL SYLLABLE CIEUC YI KIYEOKSIOS - 0xA374: 0xC9A8, //HANGUL SYLLABLE CIEUC YI NIEUN - 0xA375: 0xC9A9, //HANGUL SYLLABLE CIEUC YI NIEUNCIEUC - 0xA376: 0xC9AA, //HANGUL SYLLABLE CIEUC YI NIEUNHIEUH - 0xA377: 0xC9AB, //HANGUL SYLLABLE CIEUC YI TIKEUT - 0xA378: 0xC9AC, //HANGUL SYLLABLE CIEUC YI RIEUL - 0xA379: 0xC9AD, //HANGUL SYLLABLE CIEUC YI RIEULKIYEOK - 0xA37A: 0xC9AE, //HANGUL SYLLABLE CIEUC YI RIEULMIEUM - 0xA381: 0xC9AF, //HANGUL SYLLABLE CIEUC YI RIEULPIEUP - 0xA382: 0xC9B0, //HANGUL SYLLABLE CIEUC YI RIEULSIOS - 0xA383: 0xC9B1, //HANGUL SYLLABLE CIEUC YI RIEULTHIEUTH - 0xA384: 0xC9B2, //HANGUL SYLLABLE CIEUC YI RIEULPHIEUPH - 0xA385: 0xC9B3, //HANGUL SYLLABLE CIEUC YI RIEULHIEUH - 0xA386: 0xC9B4, //HANGUL SYLLABLE CIEUC YI MIEUM - 0xA387: 0xC9B5, //HANGUL SYLLABLE CIEUC YI PIEUP - 0xA388: 0xC9B6, //HANGUL SYLLABLE CIEUC YI PIEUPSIOS - 0xA389: 0xC9B7, //HANGUL SYLLABLE CIEUC YI SIOS - 0xA38A: 0xC9B8, //HANGUL SYLLABLE CIEUC YI SSANGSIOS - 0xA38B: 0xC9B9, //HANGUL SYLLABLE CIEUC YI IEUNG - 0xA38C: 0xC9BA, //HANGUL SYLLABLE CIEUC YI CIEUC - 0xA38D: 0xC9BB, //HANGUL SYLLABLE CIEUC YI CHIEUCH - 0xA38E: 0xC9BC, //HANGUL SYLLABLE CIEUC YI KHIEUKH - 0xA38F: 0xC9BD, //HANGUL SYLLABLE CIEUC YI THIEUTH - 0xA390: 0xC9BE, //HANGUL SYLLABLE CIEUC YI PHIEUPH - 0xA391: 0xC9BF, //HANGUL SYLLABLE CIEUC YI HIEUH - 0xA392: 0xC9C2, //HANGUL SYLLABLE CIEUC I SSANGKIYEOK - 0xA393: 0xC9C3, //HANGUL SYLLABLE CIEUC I KIYEOKSIOS - 0xA394: 0xC9C5, //HANGUL SYLLABLE CIEUC I NIEUNCIEUC - 0xA395: 0xC9C6, //HANGUL SYLLABLE CIEUC I NIEUNHIEUH - 0xA396: 0xC9C9, //HANGUL SYLLABLE CIEUC I RIEULKIYEOK - 0xA397: 0xC9CB, //HANGUL SYLLABLE CIEUC I RIEULPIEUP - 0xA398: 0xC9CC, //HANGUL SYLLABLE CIEUC I RIEULSIOS - 0xA399: 0xC9CD, //HANGUL SYLLABLE CIEUC I RIEULTHIEUTH - 0xA39A: 0xC9CE, //HANGUL SYLLABLE CIEUC I RIEULPHIEUPH - 0xA39B: 0xC9CF, //HANGUL SYLLABLE CIEUC I RIEULHIEUH - 0xA39C: 0xC9D2, //HANGUL SYLLABLE CIEUC I PIEUPSIOS - 0xA39D: 0xC9D4, //HANGUL SYLLABLE CIEUC I SSANGSIOS - 0xA39E: 0xC9D7, //HANGUL SYLLABLE CIEUC I CHIEUCH - 0xA39F: 0xC9D8, //HANGUL SYLLABLE CIEUC I KHIEUKH - 0xA3A0: 0xC9DB, //HANGUL SYLLABLE CIEUC I HIEUH - 0xA3A1: 0xFF01, //FULLWIDTH EXCLAMATION MARK - 0xA3A2: 0xFF02, //FULLWIDTH QUOTATION MARK - 0xA3A3: 0xFF03, //FULLWIDTH NUMBER SIGN - 0xA3A4: 0xFF04, //FULLWIDTH DOLLAR SIGN - 0xA3A5: 0xFF05, //FULLWIDTH PERCENT SIGN - 0xA3A6: 0xFF06, //FULLWIDTH AMPERSAND - 0xA3A7: 0xFF07, //FULLWIDTH APOSTROPHE - 0xA3A8: 0xFF08, //FULLWIDTH LEFT PARENTHESIS - 0xA3A9: 0xFF09, //FULLWIDTH RIGHT PARENTHESIS - 0xA3AA: 0xFF0A, //FULLWIDTH ASTERISK - 0xA3AB: 0xFF0B, //FULLWIDTH PLUS SIGN - 0xA3AC: 0xFF0C, //FULLWIDTH COMMA - 0xA3AD: 0xFF0D, //FULLWIDTH HYPHEN-MINUS - 0xA3AE: 0xFF0E, //FULLWIDTH FULL STOP - 0xA3AF: 0xFF0F, //FULLWIDTH SOLIDUS - 0xA3B0: 0xFF10, //FULLWIDTH DIGIT ZERO - 0xA3B1: 0xFF11, //FULLWIDTH DIGIT ONE - 0xA3B2: 0xFF12, //FULLWIDTH DIGIT TWO - 0xA3B3: 0xFF13, //FULLWIDTH DIGIT THREE - 0xA3B4: 0xFF14, //FULLWIDTH DIGIT FOUR - 0xA3B5: 0xFF15, //FULLWIDTH DIGIT FIVE - 0xA3B6: 0xFF16, //FULLWIDTH DIGIT SIX - 0xA3B7: 0xFF17, //FULLWIDTH DIGIT SEVEN - 0xA3B8: 0xFF18, //FULLWIDTH DIGIT EIGHT - 0xA3B9: 0xFF19, //FULLWIDTH DIGIT NINE - 0xA3BA: 0xFF1A, //FULLWIDTH COLON - 0xA3BB: 0xFF1B, //FULLWIDTH SEMICOLON - 0xA3BC: 0xFF1C, //FULLWIDTH LESS-THAN SIGN - 0xA3BD: 0xFF1D, //FULLWIDTH EQUALS SIGN - 0xA3BE: 0xFF1E, //FULLWIDTH GREATER-THAN SIGN - 0xA3BF: 0xFF1F, //FULLWIDTH QUESTION MARK - 0xA3C0: 0xFF20, //FULLWIDTH COMMERCIAL AT - 0xA3C1: 0xFF21, //FULLWIDTH LATIN CAPITAL LETTER A - 0xA3C2: 0xFF22, //FULLWIDTH LATIN CAPITAL LETTER B - 0xA3C3: 0xFF23, //FULLWIDTH LATIN CAPITAL LETTER C - 0xA3C4: 0xFF24, //FULLWIDTH LATIN CAPITAL LETTER D - 0xA3C5: 0xFF25, //FULLWIDTH LATIN CAPITAL LETTER E - 0xA3C6: 0xFF26, //FULLWIDTH LATIN CAPITAL LETTER F - 0xA3C7: 0xFF27, //FULLWIDTH LATIN CAPITAL LETTER G - 0xA3C8: 0xFF28, //FULLWIDTH LATIN CAPITAL LETTER H - 0xA3C9: 0xFF29, //FULLWIDTH LATIN CAPITAL LETTER I - 0xA3CA: 0xFF2A, //FULLWIDTH LATIN CAPITAL LETTER J - 0xA3CB: 0xFF2B, //FULLWIDTH LATIN CAPITAL LETTER K - 0xA3CC: 0xFF2C, //FULLWIDTH LATIN CAPITAL LETTER L - 0xA3CD: 0xFF2D, //FULLWIDTH LATIN CAPITAL LETTER M - 0xA3CE: 0xFF2E, //FULLWIDTH LATIN CAPITAL LETTER N - 0xA3CF: 0xFF2F, //FULLWIDTH LATIN CAPITAL LETTER O - 0xA3D0: 0xFF30, //FULLWIDTH LATIN CAPITAL LETTER P - 0xA3D1: 0xFF31, //FULLWIDTH LATIN CAPITAL LETTER Q - 0xA3D2: 0xFF32, //FULLWIDTH LATIN CAPITAL LETTER R - 0xA3D3: 0xFF33, //FULLWIDTH LATIN CAPITAL LETTER S - 0xA3D4: 0xFF34, //FULLWIDTH LATIN CAPITAL LETTER T - 0xA3D5: 0xFF35, //FULLWIDTH LATIN CAPITAL LETTER U - 0xA3D6: 0xFF36, //FULLWIDTH LATIN CAPITAL LETTER V - 0xA3D7: 0xFF37, //FULLWIDTH LATIN CAPITAL LETTER W - 0xA3D8: 0xFF38, //FULLWIDTH LATIN CAPITAL LETTER X - 0xA3D9: 0xFF39, //FULLWIDTH LATIN CAPITAL LETTER Y - 0xA3DA: 0xFF3A, //FULLWIDTH LATIN CAPITAL LETTER Z - 0xA3DB: 0xFF3B, //FULLWIDTH LEFT SQUARE BRACKET - 0xA3DC: 0xFFE6, //FULLWIDTH WON SIGN - 0xA3DD: 0xFF3D, //FULLWIDTH RIGHT SQUARE BRACKET - 0xA3DE: 0xFF3E, //FULLWIDTH CIRCUMFLEX ACCENT - 0xA3DF: 0xFF3F, //FULLWIDTH LOW LINE - 0xA3E0: 0xFF40, //FULLWIDTH GRAVE ACCENT - 0xA3E1: 0xFF41, //FULLWIDTH LATIN SMALL LETTER A - 0xA3E2: 0xFF42, //FULLWIDTH LATIN SMALL LETTER B - 0xA3E3: 0xFF43, //FULLWIDTH LATIN SMALL LETTER C - 0xA3E4: 0xFF44, //FULLWIDTH LATIN SMALL LETTER D - 0xA3E5: 0xFF45, //FULLWIDTH LATIN SMALL LETTER E - 0xA3E6: 0xFF46, //FULLWIDTH LATIN SMALL LETTER F - 0xA3E7: 0xFF47, //FULLWIDTH LATIN SMALL LETTER G - 0xA3E8: 0xFF48, //FULLWIDTH LATIN SMALL LETTER H - 0xA3E9: 0xFF49, //FULLWIDTH LATIN SMALL LETTER I - 0xA3EA: 0xFF4A, //FULLWIDTH LATIN SMALL LETTER J - 0xA3EB: 0xFF4B, //FULLWIDTH LATIN SMALL LETTER K - 0xA3EC: 0xFF4C, //FULLWIDTH LATIN SMALL LETTER L - 0xA3ED: 0xFF4D, //FULLWIDTH LATIN SMALL LETTER M - 0xA3EE: 0xFF4E, //FULLWIDTH LATIN SMALL LETTER N - 0xA3EF: 0xFF4F, //FULLWIDTH LATIN SMALL LETTER O - 0xA3F0: 0xFF50, //FULLWIDTH LATIN SMALL LETTER P - 0xA3F1: 0xFF51, //FULLWIDTH LATIN SMALL LETTER Q - 0xA3F2: 0xFF52, //FULLWIDTH LATIN SMALL LETTER R - 0xA3F3: 0xFF53, //FULLWIDTH LATIN SMALL LETTER S - 0xA3F4: 0xFF54, //FULLWIDTH LATIN SMALL LETTER T - 0xA3F5: 0xFF55, //FULLWIDTH LATIN SMALL LETTER U - 0xA3F6: 0xFF56, //FULLWIDTH LATIN SMALL LETTER V - 0xA3F7: 0xFF57, //FULLWIDTH LATIN SMALL LETTER W - 0xA3F8: 0xFF58, //FULLWIDTH LATIN SMALL LETTER X - 0xA3F9: 0xFF59, //FULLWIDTH LATIN SMALL LETTER Y - 0xA3FA: 0xFF5A, //FULLWIDTH LATIN SMALL LETTER Z - 0xA3FB: 0xFF5B, //FULLWIDTH LEFT CURLY BRACKET - 0xA3FC: 0xFF5C, //FULLWIDTH VERTICAL LINE - 0xA3FD: 0xFF5D, //FULLWIDTH RIGHT CURLY BRACKET - 0xA3FE: 0xFFE3, //FULLWIDTH MACRON - 0xA441: 0xC9DE, //HANGUL SYLLABLE SSANGCIEUC A SSANGKIYEOK - 0xA442: 0xC9DF, //HANGUL SYLLABLE SSANGCIEUC A KIYEOKSIOS - 0xA443: 0xC9E1, //HANGUL SYLLABLE SSANGCIEUC A NIEUNCIEUC - 0xA444: 0xC9E3, //HANGUL SYLLABLE SSANGCIEUC A TIKEUT - 0xA445: 0xC9E5, //HANGUL SYLLABLE SSANGCIEUC A RIEULKIYEOK - 0xA446: 0xC9E6, //HANGUL SYLLABLE SSANGCIEUC A RIEULMIEUM - 0xA447: 0xC9E8, //HANGUL SYLLABLE SSANGCIEUC A RIEULSIOS - 0xA448: 0xC9E9, //HANGUL SYLLABLE SSANGCIEUC A RIEULTHIEUTH - 0xA449: 0xC9EA, //HANGUL SYLLABLE SSANGCIEUC A RIEULPHIEUPH - 0xA44A: 0xC9EB, //HANGUL SYLLABLE SSANGCIEUC A RIEULHIEUH - 0xA44B: 0xC9EE, //HANGUL SYLLABLE SSANGCIEUC A PIEUPSIOS - 0xA44C: 0xC9F2, //HANGUL SYLLABLE SSANGCIEUC A CIEUC - 0xA44D: 0xC9F3, //HANGUL SYLLABLE SSANGCIEUC A CHIEUCH - 0xA44E: 0xC9F4, //HANGUL SYLLABLE SSANGCIEUC A KHIEUKH - 0xA44F: 0xC9F5, //HANGUL SYLLABLE SSANGCIEUC A THIEUTH - 0xA450: 0xC9F6, //HANGUL SYLLABLE SSANGCIEUC A PHIEUPH - 0xA451: 0xC9F7, //HANGUL SYLLABLE SSANGCIEUC A HIEUH - 0xA452: 0xC9FA, //HANGUL SYLLABLE SSANGCIEUC AE SSANGKIYEOK - 0xA453: 0xC9FB, //HANGUL SYLLABLE SSANGCIEUC AE KIYEOKSIOS - 0xA454: 0xC9FD, //HANGUL SYLLABLE SSANGCIEUC AE NIEUNCIEUC - 0xA455: 0xC9FE, //HANGUL SYLLABLE SSANGCIEUC AE NIEUNHIEUH - 0xA456: 0xC9FF, //HANGUL SYLLABLE SSANGCIEUC AE TIKEUT - 0xA457: 0xCA01, //HANGUL SYLLABLE SSANGCIEUC AE RIEULKIYEOK - 0xA458: 0xCA02, //HANGUL SYLLABLE SSANGCIEUC AE RIEULMIEUM - 0xA459: 0xCA03, //HANGUL SYLLABLE SSANGCIEUC AE RIEULPIEUP - 0xA45A: 0xCA04, //HANGUL SYLLABLE SSANGCIEUC AE RIEULSIOS - 0xA461: 0xCA05, //HANGUL SYLLABLE SSANGCIEUC AE RIEULTHIEUTH - 0xA462: 0xCA06, //HANGUL SYLLABLE SSANGCIEUC AE RIEULPHIEUPH - 0xA463: 0xCA07, //HANGUL SYLLABLE SSANGCIEUC AE RIEULHIEUH - 0xA464: 0xCA0A, //HANGUL SYLLABLE SSANGCIEUC AE PIEUPSIOS - 0xA465: 0xCA0E, //HANGUL SYLLABLE SSANGCIEUC AE CIEUC - 0xA466: 0xCA0F, //HANGUL SYLLABLE SSANGCIEUC AE CHIEUCH - 0xA467: 0xCA10, //HANGUL SYLLABLE SSANGCIEUC AE KHIEUKH - 0xA468: 0xCA11, //HANGUL SYLLABLE SSANGCIEUC AE THIEUTH - 0xA469: 0xCA12, //HANGUL SYLLABLE SSANGCIEUC AE PHIEUPH - 0xA46A: 0xCA13, //HANGUL SYLLABLE SSANGCIEUC AE HIEUH - 0xA46B: 0xCA15, //HANGUL SYLLABLE SSANGCIEUC YA KIYEOK - 0xA46C: 0xCA16, //HANGUL SYLLABLE SSANGCIEUC YA SSANGKIYEOK - 0xA46D: 0xCA17, //HANGUL SYLLABLE SSANGCIEUC YA KIYEOKSIOS - 0xA46E: 0xCA19, //HANGUL SYLLABLE SSANGCIEUC YA NIEUNCIEUC - 0xA46F: 0xCA1A, //HANGUL SYLLABLE SSANGCIEUC YA NIEUNHIEUH - 0xA470: 0xCA1B, //HANGUL SYLLABLE SSANGCIEUC YA TIKEUT - 0xA471: 0xCA1C, //HANGUL SYLLABLE SSANGCIEUC YA RIEUL - 0xA472: 0xCA1D, //HANGUL SYLLABLE SSANGCIEUC YA RIEULKIYEOK - 0xA473: 0xCA1E, //HANGUL SYLLABLE SSANGCIEUC YA RIEULMIEUM - 0xA474: 0xCA1F, //HANGUL SYLLABLE SSANGCIEUC YA RIEULPIEUP - 0xA475: 0xCA20, //HANGUL SYLLABLE SSANGCIEUC YA RIEULSIOS - 0xA476: 0xCA21, //HANGUL SYLLABLE SSANGCIEUC YA RIEULTHIEUTH - 0xA477: 0xCA22, //HANGUL SYLLABLE SSANGCIEUC YA RIEULPHIEUPH - 0xA478: 0xCA23, //HANGUL SYLLABLE SSANGCIEUC YA RIEULHIEUH - 0xA479: 0xCA24, //HANGUL SYLLABLE SSANGCIEUC YA MIEUM - 0xA47A: 0xCA25, //HANGUL SYLLABLE SSANGCIEUC YA PIEUP - 0xA481: 0xCA26, //HANGUL SYLLABLE SSANGCIEUC YA PIEUPSIOS - 0xA482: 0xCA27, //HANGUL SYLLABLE SSANGCIEUC YA SIOS - 0xA483: 0xCA28, //HANGUL SYLLABLE SSANGCIEUC YA SSANGSIOS - 0xA484: 0xCA2A, //HANGUL SYLLABLE SSANGCIEUC YA CIEUC - 0xA485: 0xCA2B, //HANGUL SYLLABLE SSANGCIEUC YA CHIEUCH - 0xA486: 0xCA2C, //HANGUL SYLLABLE SSANGCIEUC YA KHIEUKH - 0xA487: 0xCA2D, //HANGUL SYLLABLE SSANGCIEUC YA THIEUTH - 0xA488: 0xCA2E, //HANGUL SYLLABLE SSANGCIEUC YA PHIEUPH - 0xA489: 0xCA2F, //HANGUL SYLLABLE SSANGCIEUC YA HIEUH - 0xA48A: 0xCA30, //HANGUL SYLLABLE SSANGCIEUC YAE - 0xA48B: 0xCA31, //HANGUL SYLLABLE SSANGCIEUC YAE KIYEOK - 0xA48C: 0xCA32, //HANGUL SYLLABLE SSANGCIEUC YAE SSANGKIYEOK - 0xA48D: 0xCA33, //HANGUL SYLLABLE SSANGCIEUC YAE KIYEOKSIOS - 0xA48E: 0xCA34, //HANGUL SYLLABLE SSANGCIEUC YAE NIEUN - 0xA48F: 0xCA35, //HANGUL SYLLABLE SSANGCIEUC YAE NIEUNCIEUC - 0xA490: 0xCA36, //HANGUL SYLLABLE SSANGCIEUC YAE NIEUNHIEUH - 0xA491: 0xCA37, //HANGUL SYLLABLE SSANGCIEUC YAE TIKEUT - 0xA492: 0xCA38, //HANGUL SYLLABLE SSANGCIEUC YAE RIEUL - 0xA493: 0xCA39, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULKIYEOK - 0xA494: 0xCA3A, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULMIEUM - 0xA495: 0xCA3B, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULPIEUP - 0xA496: 0xCA3C, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULSIOS - 0xA497: 0xCA3D, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULTHIEUTH - 0xA498: 0xCA3E, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULPHIEUPH - 0xA499: 0xCA3F, //HANGUL SYLLABLE SSANGCIEUC YAE RIEULHIEUH - 0xA49A: 0xCA40, //HANGUL SYLLABLE SSANGCIEUC YAE MIEUM - 0xA49B: 0xCA41, //HANGUL SYLLABLE SSANGCIEUC YAE PIEUP - 0xA49C: 0xCA42, //HANGUL SYLLABLE SSANGCIEUC YAE PIEUPSIOS - 0xA49D: 0xCA43, //HANGUL SYLLABLE SSANGCIEUC YAE SIOS - 0xA49E: 0xCA44, //HANGUL SYLLABLE SSANGCIEUC YAE SSANGSIOS - 0xA49F: 0xCA45, //HANGUL SYLLABLE SSANGCIEUC YAE IEUNG - 0xA4A0: 0xCA46, //HANGUL SYLLABLE SSANGCIEUC YAE CIEUC - 0xA4A1: 0x3131, //HANGUL LETTER KIYEOK - 0xA4A2: 0x3132, //HANGUL LETTER SSANGKIYEOK - 0xA4A3: 0x3133, //HANGUL LETTER KIYEOK-SIOS - 0xA4A4: 0x3134, //HANGUL LETTER NIEUN - 0xA4A5: 0x3135, //HANGUL LETTER NIEUN-CIEUC - 0xA4A6: 0x3136, //HANGUL LETTER NIEUN-HIEUH - 0xA4A7: 0x3137, //HANGUL LETTER TIKEUT - 0xA4A8: 0x3138, //HANGUL LETTER SSANGTIKEUT - 0xA4A9: 0x3139, //HANGUL LETTER RIEUL - 0xA4AA: 0x313A, //HANGUL LETTER RIEUL-KIYEOK - 0xA4AB: 0x313B, //HANGUL LETTER RIEUL-MIEUM - 0xA4AC: 0x313C, //HANGUL LETTER RIEUL-PIEUP - 0xA4AD: 0x313D, //HANGUL LETTER RIEUL-SIOS - 0xA4AE: 0x313E, //HANGUL LETTER RIEUL-THIEUTH - 0xA4AF: 0x313F, //HANGUL LETTER RIEUL-PHIEUPH - 0xA4B0: 0x3140, //HANGUL LETTER RIEUL-HIEUH - 0xA4B1: 0x3141, //HANGUL LETTER MIEUM - 0xA4B2: 0x3142, //HANGUL LETTER PIEUP - 0xA4B3: 0x3143, //HANGUL LETTER SSANGPIEUP - 0xA4B4: 0x3144, //HANGUL LETTER PIEUP-SIOS - 0xA4B5: 0x3145, //HANGUL LETTER SIOS - 0xA4B6: 0x3146, //HANGUL LETTER SSANGSIOS - 0xA4B7: 0x3147, //HANGUL LETTER IEUNG - 0xA4B8: 0x3148, //HANGUL LETTER CIEUC - 0xA4B9: 0x3149, //HANGUL LETTER SSANGCIEUC - 0xA4BA: 0x314A, //HANGUL LETTER CHIEUCH - 0xA4BB: 0x314B, //HANGUL LETTER KHIEUKH - 0xA4BC: 0x314C, //HANGUL LETTER THIEUTH - 0xA4BD: 0x314D, //HANGUL LETTER PHIEUPH - 0xA4BE: 0x314E, //HANGUL LETTER HIEUH - 0xA4BF: 0x314F, //HANGUL LETTER A - 0xA4C0: 0x3150, //HANGUL LETTER AE - 0xA4C1: 0x3151, //HANGUL LETTER YA - 0xA4C2: 0x3152, //HANGUL LETTER YAE - 0xA4C3: 0x3153, //HANGUL LETTER EO - 0xA4C4: 0x3154, //HANGUL LETTER E - 0xA4C5: 0x3155, //HANGUL LETTER YEO - 0xA4C6: 0x3156, //HANGUL LETTER YE - 0xA4C7: 0x3157, //HANGUL LETTER O - 0xA4C8: 0x3158, //HANGUL LETTER WA - 0xA4C9: 0x3159, //HANGUL LETTER WAE - 0xA4CA: 0x315A, //HANGUL LETTER OE - 0xA4CB: 0x315B, //HANGUL LETTER YO - 0xA4CC: 0x315C, //HANGUL LETTER U - 0xA4CD: 0x315D, //HANGUL LETTER WEO - 0xA4CE: 0x315E, //HANGUL LETTER WE - 0xA4CF: 0x315F, //HANGUL LETTER WI - 0xA4D0: 0x3160, //HANGUL LETTER YU - 0xA4D1: 0x3161, //HANGUL LETTER EU - 0xA4D2: 0x3162, //HANGUL LETTER YI - 0xA4D3: 0x3163, //HANGUL LETTER I - 0xA4D4: 0x3164, //HANGUL FILLER - 0xA4D5: 0x3165, //HANGUL LETTER SSANGNIEUN - 0xA4D6: 0x3166, //HANGUL LETTER NIEUN-TIKEUT - 0xA4D7: 0x3167, //HANGUL LETTER NIEUN-SIOS - 0xA4D8: 0x3168, //HANGUL LETTER NIEUN-PANSIOS - 0xA4D9: 0x3169, //HANGUL LETTER RIEUL-KIYEOK-SIOS - 0xA4DA: 0x316A, //HANGUL LETTER RIEUL-TIKEUT - 0xA4DB: 0x316B, //HANGUL LETTER RIEUL-PIEUP-SIOS - 0xA4DC: 0x316C, //HANGUL LETTER RIEUL-PANSIOS - 0xA4DD: 0x316D, //HANGUL LETTER RIEUL-YEORINHIEUH - 0xA4DE: 0x316E, //HANGUL LETTER MIEUM-PIEUP - 0xA4DF: 0x316F, //HANGUL LETTER MIEUM-SIOS - 0xA4E0: 0x3170, //HANGUL LETTER MIEUM-PANSIOS - 0xA4E1: 0x3171, //HANGUL LETTER KAPYEOUNMIEUM - 0xA4E2: 0x3172, //HANGUL LETTER PIEUP-KIYEOK - 0xA4E3: 0x3173, //HANGUL LETTER PIEUP-TIKEUT - 0xA4E4: 0x3174, //HANGUL LETTER PIEUP-SIOS-KIYEOK - 0xA4E5: 0x3175, //HANGUL LETTER PIEUP-SIOS-TIKEUT - 0xA4E6: 0x3176, //HANGUL LETTER PIEUP-CIEUC - 0xA4E7: 0x3177, //HANGUL LETTER PIEUP-THIEUTH - 0xA4E8: 0x3178, //HANGUL LETTER KAPYEOUNPIEUP - 0xA4E9: 0x3179, //HANGUL LETTER KAPYEOUNSSANGPIEUP - 0xA4EA: 0x317A, //HANGUL LETTER SIOS-KIYEOK - 0xA4EB: 0x317B, //HANGUL LETTER SIOS-NIEUN - 0xA4EC: 0x317C, //HANGUL LETTER SIOS-TIKEUT - 0xA4ED: 0x317D, //HANGUL LETTER SIOS-PIEUP - 0xA4EE: 0x317E, //HANGUL LETTER SIOS-CIEUC - 0xA4EF: 0x317F, //HANGUL LETTER PANSIOS - 0xA4F0: 0x3180, //HANGUL LETTER SSANGIEUNG - 0xA4F1: 0x3181, //HANGUL LETTER YESIEUNG - 0xA4F2: 0x3182, //HANGUL LETTER YESIEUNG-SIOS - 0xA4F3: 0x3183, //HANGUL LETTER YESIEUNG-PANSIOS - 0xA4F4: 0x3184, //HANGUL LETTER KAPYEOUNPHIEUPH - 0xA4F5: 0x3185, //HANGUL LETTER SSANGHIEUH - 0xA4F6: 0x3186, //HANGUL LETTER YEORINHIEUH - 0xA4F7: 0x3187, //HANGUL LETTER YO-YA - 0xA4F8: 0x3188, //HANGUL LETTER YO-YAE - 0xA4F9: 0x3189, //HANGUL LETTER YO-I - 0xA4FA: 0x318A, //HANGUL LETTER YU-YEO - 0xA4FB: 0x318B, //HANGUL LETTER YU-YE - 0xA4FC: 0x318C, //HANGUL LETTER YU-I - 0xA4FD: 0x318D, //HANGUL LETTER ARAEA - 0xA4FE: 0x318E, //HANGUL LETTER ARAEAE - 0xA541: 0xCA47, //HANGUL SYLLABLE SSANGCIEUC YAE CHIEUCH - 0xA542: 0xCA48, //HANGUL SYLLABLE SSANGCIEUC YAE KHIEUKH - 0xA543: 0xCA49, //HANGUL SYLLABLE SSANGCIEUC YAE THIEUTH - 0xA544: 0xCA4A, //HANGUL SYLLABLE SSANGCIEUC YAE PHIEUPH - 0xA545: 0xCA4B, //HANGUL SYLLABLE SSANGCIEUC YAE HIEUH - 0xA546: 0xCA4E, //HANGUL SYLLABLE SSANGCIEUC EO SSANGKIYEOK - 0xA547: 0xCA4F, //HANGUL SYLLABLE SSANGCIEUC EO KIYEOKSIOS - 0xA548: 0xCA51, //HANGUL SYLLABLE SSANGCIEUC EO NIEUNCIEUC - 0xA549: 0xCA52, //HANGUL SYLLABLE SSANGCIEUC EO NIEUNHIEUH - 0xA54A: 0xCA53, //HANGUL SYLLABLE SSANGCIEUC EO TIKEUT - 0xA54B: 0xCA55, //HANGUL SYLLABLE SSANGCIEUC EO RIEULKIYEOK - 0xA54C: 0xCA56, //HANGUL SYLLABLE SSANGCIEUC EO RIEULMIEUM - 0xA54D: 0xCA57, //HANGUL SYLLABLE SSANGCIEUC EO RIEULPIEUP - 0xA54E: 0xCA58, //HANGUL SYLLABLE SSANGCIEUC EO RIEULSIOS - 0xA54F: 0xCA59, //HANGUL SYLLABLE SSANGCIEUC EO RIEULTHIEUTH - 0xA550: 0xCA5A, //HANGUL SYLLABLE SSANGCIEUC EO RIEULPHIEUPH - 0xA551: 0xCA5B, //HANGUL SYLLABLE SSANGCIEUC EO RIEULHIEUH - 0xA552: 0xCA5E, //HANGUL SYLLABLE SSANGCIEUC EO PIEUPSIOS - 0xA553: 0xCA62, //HANGUL SYLLABLE SSANGCIEUC EO CIEUC - 0xA554: 0xCA63, //HANGUL SYLLABLE SSANGCIEUC EO CHIEUCH - 0xA555: 0xCA64, //HANGUL SYLLABLE SSANGCIEUC EO KHIEUKH - 0xA556: 0xCA65, //HANGUL SYLLABLE SSANGCIEUC EO THIEUTH - 0xA557: 0xCA66, //HANGUL SYLLABLE SSANGCIEUC EO PHIEUPH - 0xA558: 0xCA67, //HANGUL SYLLABLE SSANGCIEUC EO HIEUH - 0xA559: 0xCA69, //HANGUL SYLLABLE SSANGCIEUC E KIYEOK - 0xA55A: 0xCA6A, //HANGUL SYLLABLE SSANGCIEUC E SSANGKIYEOK - 0xA561: 0xCA6B, //HANGUL SYLLABLE SSANGCIEUC E KIYEOKSIOS - 0xA562: 0xCA6C, //HANGUL SYLLABLE SSANGCIEUC E NIEUN - 0xA563: 0xCA6D, //HANGUL SYLLABLE SSANGCIEUC E NIEUNCIEUC - 0xA564: 0xCA6E, //HANGUL SYLLABLE SSANGCIEUC E NIEUNHIEUH - 0xA565: 0xCA6F, //HANGUL SYLLABLE SSANGCIEUC E TIKEUT - 0xA566: 0xCA70, //HANGUL SYLLABLE SSANGCIEUC E RIEUL - 0xA567: 0xCA71, //HANGUL SYLLABLE SSANGCIEUC E RIEULKIYEOK - 0xA568: 0xCA72, //HANGUL SYLLABLE SSANGCIEUC E RIEULMIEUM - 0xA569: 0xCA73, //HANGUL SYLLABLE SSANGCIEUC E RIEULPIEUP - 0xA56A: 0xCA74, //HANGUL SYLLABLE SSANGCIEUC E RIEULSIOS - 0xA56B: 0xCA75, //HANGUL SYLLABLE SSANGCIEUC E RIEULTHIEUTH - 0xA56C: 0xCA76, //HANGUL SYLLABLE SSANGCIEUC E RIEULPHIEUPH - 0xA56D: 0xCA77, //HANGUL SYLLABLE SSANGCIEUC E RIEULHIEUH - 0xA56E: 0xCA78, //HANGUL SYLLABLE SSANGCIEUC E MIEUM - 0xA56F: 0xCA79, //HANGUL SYLLABLE SSANGCIEUC E PIEUP - 0xA570: 0xCA7A, //HANGUL SYLLABLE SSANGCIEUC E PIEUPSIOS - 0xA571: 0xCA7B, //HANGUL SYLLABLE SSANGCIEUC E SIOS - 0xA572: 0xCA7C, //HANGUL SYLLABLE SSANGCIEUC E SSANGSIOS - 0xA573: 0xCA7E, //HANGUL SYLLABLE SSANGCIEUC E CIEUC - 0xA574: 0xCA7F, //HANGUL SYLLABLE SSANGCIEUC E CHIEUCH - 0xA575: 0xCA80, //HANGUL SYLLABLE SSANGCIEUC E KHIEUKH - 0xA576: 0xCA81, //HANGUL SYLLABLE SSANGCIEUC E THIEUTH - 0xA577: 0xCA82, //HANGUL SYLLABLE SSANGCIEUC E PHIEUPH - 0xA578: 0xCA83, //HANGUL SYLLABLE SSANGCIEUC E HIEUH - 0xA579: 0xCA85, //HANGUL SYLLABLE SSANGCIEUC YEO KIYEOK - 0xA57A: 0xCA86, //HANGUL SYLLABLE SSANGCIEUC YEO SSANGKIYEOK - 0xA581: 0xCA87, //HANGUL SYLLABLE SSANGCIEUC YEO KIYEOKSIOS - 0xA582: 0xCA88, //HANGUL SYLLABLE SSANGCIEUC YEO NIEUN - 0xA583: 0xCA89, //HANGUL SYLLABLE SSANGCIEUC YEO NIEUNCIEUC - 0xA584: 0xCA8A, //HANGUL SYLLABLE SSANGCIEUC YEO NIEUNHIEUH - 0xA585: 0xCA8B, //HANGUL SYLLABLE SSANGCIEUC YEO TIKEUT - 0xA586: 0xCA8C, //HANGUL SYLLABLE SSANGCIEUC YEO RIEUL - 0xA587: 0xCA8D, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULKIYEOK - 0xA588: 0xCA8E, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULMIEUM - 0xA589: 0xCA8F, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULPIEUP - 0xA58A: 0xCA90, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULSIOS - 0xA58B: 0xCA91, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULTHIEUTH - 0xA58C: 0xCA92, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULPHIEUPH - 0xA58D: 0xCA93, //HANGUL SYLLABLE SSANGCIEUC YEO RIEULHIEUH - 0xA58E: 0xCA94, //HANGUL SYLLABLE SSANGCIEUC YEO MIEUM - 0xA58F: 0xCA95, //HANGUL SYLLABLE SSANGCIEUC YEO PIEUP - 0xA590: 0xCA96, //HANGUL SYLLABLE SSANGCIEUC YEO PIEUPSIOS - 0xA591: 0xCA97, //HANGUL SYLLABLE SSANGCIEUC YEO SIOS - 0xA592: 0xCA99, //HANGUL SYLLABLE SSANGCIEUC YEO IEUNG - 0xA593: 0xCA9A, //HANGUL SYLLABLE SSANGCIEUC YEO CIEUC - 0xA594: 0xCA9B, //HANGUL SYLLABLE SSANGCIEUC YEO CHIEUCH - 0xA595: 0xCA9C, //HANGUL SYLLABLE SSANGCIEUC YEO KHIEUKH - 0xA596: 0xCA9D, //HANGUL SYLLABLE SSANGCIEUC YEO THIEUTH - 0xA597: 0xCA9E, //HANGUL SYLLABLE SSANGCIEUC YEO PHIEUPH - 0xA598: 0xCA9F, //HANGUL SYLLABLE SSANGCIEUC YEO HIEUH - 0xA599: 0xCAA0, //HANGUL SYLLABLE SSANGCIEUC YE - 0xA59A: 0xCAA1, //HANGUL SYLLABLE SSANGCIEUC YE KIYEOK - 0xA59B: 0xCAA2, //HANGUL SYLLABLE SSANGCIEUC YE SSANGKIYEOK - 0xA59C: 0xCAA3, //HANGUL SYLLABLE SSANGCIEUC YE KIYEOKSIOS - 0xA59D: 0xCAA4, //HANGUL SYLLABLE SSANGCIEUC YE NIEUN - 0xA59E: 0xCAA5, //HANGUL SYLLABLE SSANGCIEUC YE NIEUNCIEUC - 0xA59F: 0xCAA6, //HANGUL SYLLABLE SSANGCIEUC YE NIEUNHIEUH - 0xA5A0: 0xCAA7, //HANGUL SYLLABLE SSANGCIEUC YE TIKEUT - 0xA5A1: 0x2170, //SMALL ROMAN NUMERAL ONE - 0xA5A2: 0x2171, //SMALL ROMAN NUMERAL TWO - 0xA5A3: 0x2172, //SMALL ROMAN NUMERAL THREE - 0xA5A4: 0x2173, //SMALL ROMAN NUMERAL FOUR - 0xA5A5: 0x2174, //SMALL ROMAN NUMERAL FIVE - 0xA5A6: 0x2175, //SMALL ROMAN NUMERAL SIX - 0xA5A7: 0x2176, //SMALL ROMAN NUMERAL SEVEN - 0xA5A8: 0x2177, //SMALL ROMAN NUMERAL EIGHT - 0xA5A9: 0x2178, //SMALL ROMAN NUMERAL NINE - 0xA5AA: 0x2179, //SMALL ROMAN NUMERAL TEN - 0xA5B0: 0x2160, //ROMAN NUMERAL ONE - 0xA5B1: 0x2161, //ROMAN NUMERAL TWO - 0xA5B2: 0x2162, //ROMAN NUMERAL THREE - 0xA5B3: 0x2163, //ROMAN NUMERAL FOUR - 0xA5B4: 0x2164, //ROMAN NUMERAL FIVE - 0xA5B5: 0x2165, //ROMAN NUMERAL SIX - 0xA5B6: 0x2166, //ROMAN NUMERAL SEVEN - 0xA5B7: 0x2167, //ROMAN NUMERAL EIGHT - 0xA5B8: 0x2168, //ROMAN NUMERAL NINE - 0xA5B9: 0x2169, //ROMAN NUMERAL TEN - 0xA5C1: 0x0391, //GREEK CAPITAL LETTER ALPHA - 0xA5C2: 0x0392, //GREEK CAPITAL LETTER BETA - 0xA5C3: 0x0393, //GREEK CAPITAL LETTER GAMMA - 0xA5C4: 0x0394, //GREEK CAPITAL LETTER DELTA - 0xA5C5: 0x0395, //GREEK CAPITAL LETTER EPSILON - 0xA5C6: 0x0396, //GREEK CAPITAL LETTER ZETA - 0xA5C7: 0x0397, //GREEK CAPITAL LETTER ETA - 0xA5C8: 0x0398, //GREEK CAPITAL LETTER THETA - 0xA5C9: 0x0399, //GREEK CAPITAL LETTER IOTA - 0xA5CA: 0x039A, //GREEK CAPITAL LETTER KAPPA - 0xA5CB: 0x039B, //GREEK CAPITAL LETTER LAMDA - 0xA5CC: 0x039C, //GREEK CAPITAL LETTER MU - 0xA5CD: 0x039D, //GREEK CAPITAL LETTER NU - 0xA5CE: 0x039E, //GREEK CAPITAL LETTER XI - 0xA5CF: 0x039F, //GREEK CAPITAL LETTER OMICRON - 0xA5D0: 0x03A0, //GREEK CAPITAL LETTER PI - 0xA5D1: 0x03A1, //GREEK CAPITAL LETTER RHO - 0xA5D2: 0x03A3, //GREEK CAPITAL LETTER SIGMA - 0xA5D3: 0x03A4, //GREEK CAPITAL LETTER TAU - 0xA5D4: 0x03A5, //GREEK CAPITAL LETTER UPSILON - 0xA5D5: 0x03A6, //GREEK CAPITAL LETTER PHI - 0xA5D6: 0x03A7, //GREEK CAPITAL LETTER CHI - 0xA5D7: 0x03A8, //GREEK CAPITAL LETTER PSI - 0xA5D8: 0x03A9, //GREEK CAPITAL LETTER OMEGA - 0xA5E1: 0x03B1, //GREEK SMALL LETTER ALPHA - 0xA5E2: 0x03B2, //GREEK SMALL LETTER BETA - 0xA5E3: 0x03B3, //GREEK SMALL LETTER GAMMA - 0xA5E4: 0x03B4, //GREEK SMALL LETTER DELTA - 0xA5E5: 0x03B5, //GREEK SMALL LETTER EPSILON - 0xA5E6: 0x03B6, //GREEK SMALL LETTER ZETA - 0xA5E7: 0x03B7, //GREEK SMALL LETTER ETA - 0xA5E8: 0x03B8, //GREEK SMALL LETTER THETA - 0xA5E9: 0x03B9, //GREEK SMALL LETTER IOTA - 0xA5EA: 0x03BA, //GREEK SMALL LETTER KAPPA - 0xA5EB: 0x03BB, //GREEK SMALL LETTER LAMDA - 0xA5EC: 0x03BC, //GREEK SMALL LETTER MU - 0xA5ED: 0x03BD, //GREEK SMALL LETTER NU - 0xA5EE: 0x03BE, //GREEK SMALL LETTER XI - 0xA5EF: 0x03BF, //GREEK SMALL LETTER OMICRON - 0xA5F0: 0x03C0, //GREEK SMALL LETTER PI - 0xA5F1: 0x03C1, //GREEK SMALL LETTER RHO - 0xA5F2: 0x03C3, //GREEK SMALL LETTER SIGMA - 0xA5F3: 0x03C4, //GREEK SMALL LETTER TAU - 0xA5F4: 0x03C5, //GREEK SMALL LETTER UPSILON - 0xA5F5: 0x03C6, //GREEK SMALL LETTER PHI - 0xA5F6: 0x03C7, //GREEK SMALL LETTER CHI - 0xA5F7: 0x03C8, //GREEK SMALL LETTER PSI - 0xA5F8: 0x03C9, //GREEK SMALL LETTER OMEGA - 0xA641: 0xCAA8, //HANGUL SYLLABLE SSANGCIEUC YE RIEUL - 0xA642: 0xCAA9, //HANGUL SYLLABLE SSANGCIEUC YE RIEULKIYEOK - 0xA643: 0xCAAA, //HANGUL SYLLABLE SSANGCIEUC YE RIEULMIEUM - 0xA644: 0xCAAB, //HANGUL SYLLABLE SSANGCIEUC YE RIEULPIEUP - 0xA645: 0xCAAC, //HANGUL SYLLABLE SSANGCIEUC YE RIEULSIOS - 0xA646: 0xCAAD, //HANGUL SYLLABLE SSANGCIEUC YE RIEULTHIEUTH - 0xA647: 0xCAAE, //HANGUL SYLLABLE SSANGCIEUC YE RIEULPHIEUPH - 0xA648: 0xCAAF, //HANGUL SYLLABLE SSANGCIEUC YE RIEULHIEUH - 0xA649: 0xCAB0, //HANGUL SYLLABLE SSANGCIEUC YE MIEUM - 0xA64A: 0xCAB1, //HANGUL SYLLABLE SSANGCIEUC YE PIEUP - 0xA64B: 0xCAB2, //HANGUL SYLLABLE SSANGCIEUC YE PIEUPSIOS - 0xA64C: 0xCAB3, //HANGUL SYLLABLE SSANGCIEUC YE SIOS - 0xA64D: 0xCAB4, //HANGUL SYLLABLE SSANGCIEUC YE SSANGSIOS - 0xA64E: 0xCAB5, //HANGUL SYLLABLE SSANGCIEUC YE IEUNG - 0xA64F: 0xCAB6, //HANGUL SYLLABLE SSANGCIEUC YE CIEUC - 0xA650: 0xCAB7, //HANGUL SYLLABLE SSANGCIEUC YE CHIEUCH - 0xA651: 0xCAB8, //HANGUL SYLLABLE SSANGCIEUC YE KHIEUKH - 0xA652: 0xCAB9, //HANGUL SYLLABLE SSANGCIEUC YE THIEUTH - 0xA653: 0xCABA, //HANGUL SYLLABLE SSANGCIEUC YE PHIEUPH - 0xA654: 0xCABB, //HANGUL SYLLABLE SSANGCIEUC YE HIEUH - 0xA655: 0xCABE, //HANGUL SYLLABLE SSANGCIEUC O SSANGKIYEOK - 0xA656: 0xCABF, //HANGUL SYLLABLE SSANGCIEUC O KIYEOKSIOS - 0xA657: 0xCAC1, //HANGUL SYLLABLE SSANGCIEUC O NIEUNCIEUC - 0xA658: 0xCAC2, //HANGUL SYLLABLE SSANGCIEUC O NIEUNHIEUH - 0xA659: 0xCAC3, //HANGUL SYLLABLE SSANGCIEUC O TIKEUT - 0xA65A: 0xCAC5, //HANGUL SYLLABLE SSANGCIEUC O RIEULKIYEOK - 0xA661: 0xCAC6, //HANGUL SYLLABLE SSANGCIEUC O RIEULMIEUM - 0xA662: 0xCAC7, //HANGUL SYLLABLE SSANGCIEUC O RIEULPIEUP - 0xA663: 0xCAC8, //HANGUL SYLLABLE SSANGCIEUC O RIEULSIOS - 0xA664: 0xCAC9, //HANGUL SYLLABLE SSANGCIEUC O RIEULTHIEUTH - 0xA665: 0xCACA, //HANGUL SYLLABLE SSANGCIEUC O RIEULPHIEUPH - 0xA666: 0xCACB, //HANGUL SYLLABLE SSANGCIEUC O RIEULHIEUH - 0xA667: 0xCACE, //HANGUL SYLLABLE SSANGCIEUC O PIEUPSIOS - 0xA668: 0xCAD0, //HANGUL SYLLABLE SSANGCIEUC O SSANGSIOS - 0xA669: 0xCAD2, //HANGUL SYLLABLE SSANGCIEUC O CIEUC - 0xA66A: 0xCAD4, //HANGUL SYLLABLE SSANGCIEUC O KHIEUKH - 0xA66B: 0xCAD5, //HANGUL SYLLABLE SSANGCIEUC O THIEUTH - 0xA66C: 0xCAD6, //HANGUL SYLLABLE SSANGCIEUC O PHIEUPH - 0xA66D: 0xCAD7, //HANGUL SYLLABLE SSANGCIEUC O HIEUH - 0xA66E: 0xCADA, //HANGUL SYLLABLE SSANGCIEUC WA SSANGKIYEOK - 0xA66F: 0xCADB, //HANGUL SYLLABLE SSANGCIEUC WA KIYEOKSIOS - 0xA670: 0xCADC, //HANGUL SYLLABLE SSANGCIEUC WA NIEUN - 0xA671: 0xCADD, //HANGUL SYLLABLE SSANGCIEUC WA NIEUNCIEUC - 0xA672: 0xCADE, //HANGUL SYLLABLE SSANGCIEUC WA NIEUNHIEUH - 0xA673: 0xCADF, //HANGUL SYLLABLE SSANGCIEUC WA TIKEUT - 0xA674: 0xCAE1, //HANGUL SYLLABLE SSANGCIEUC WA RIEULKIYEOK - 0xA675: 0xCAE2, //HANGUL SYLLABLE SSANGCIEUC WA RIEULMIEUM - 0xA676: 0xCAE3, //HANGUL SYLLABLE SSANGCIEUC WA RIEULPIEUP - 0xA677: 0xCAE4, //HANGUL SYLLABLE SSANGCIEUC WA RIEULSIOS - 0xA678: 0xCAE5, //HANGUL SYLLABLE SSANGCIEUC WA RIEULTHIEUTH - 0xA679: 0xCAE6, //HANGUL SYLLABLE SSANGCIEUC WA RIEULPHIEUPH - 0xA67A: 0xCAE7, //HANGUL SYLLABLE SSANGCIEUC WA RIEULHIEUH - 0xA681: 0xCAE8, //HANGUL SYLLABLE SSANGCIEUC WA MIEUM - 0xA682: 0xCAE9, //HANGUL SYLLABLE SSANGCIEUC WA PIEUP - 0xA683: 0xCAEA, //HANGUL SYLLABLE SSANGCIEUC WA PIEUPSIOS - 0xA684: 0xCAEB, //HANGUL SYLLABLE SSANGCIEUC WA SIOS - 0xA685: 0xCAED, //HANGUL SYLLABLE SSANGCIEUC WA IEUNG - 0xA686: 0xCAEE, //HANGUL SYLLABLE SSANGCIEUC WA CIEUC - 0xA687: 0xCAEF, //HANGUL SYLLABLE SSANGCIEUC WA CHIEUCH - 0xA688: 0xCAF0, //HANGUL SYLLABLE SSANGCIEUC WA KHIEUKH - 0xA689: 0xCAF1, //HANGUL SYLLABLE SSANGCIEUC WA THIEUTH - 0xA68A: 0xCAF2, //HANGUL SYLLABLE SSANGCIEUC WA PHIEUPH - 0xA68B: 0xCAF3, //HANGUL SYLLABLE SSANGCIEUC WA HIEUH - 0xA68C: 0xCAF5, //HANGUL SYLLABLE SSANGCIEUC WAE KIYEOK - 0xA68D: 0xCAF6, //HANGUL SYLLABLE SSANGCIEUC WAE SSANGKIYEOK - 0xA68E: 0xCAF7, //HANGUL SYLLABLE SSANGCIEUC WAE KIYEOKSIOS - 0xA68F: 0xCAF8, //HANGUL SYLLABLE SSANGCIEUC WAE NIEUN - 0xA690: 0xCAF9, //HANGUL SYLLABLE SSANGCIEUC WAE NIEUNCIEUC - 0xA691: 0xCAFA, //HANGUL SYLLABLE SSANGCIEUC WAE NIEUNHIEUH - 0xA692: 0xCAFB, //HANGUL SYLLABLE SSANGCIEUC WAE TIKEUT - 0xA693: 0xCAFC, //HANGUL SYLLABLE SSANGCIEUC WAE RIEUL - 0xA694: 0xCAFD, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULKIYEOK - 0xA695: 0xCAFE, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULMIEUM - 0xA696: 0xCAFF, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULPIEUP - 0xA697: 0xCB00, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULSIOS - 0xA698: 0xCB01, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULTHIEUTH - 0xA699: 0xCB02, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULPHIEUPH - 0xA69A: 0xCB03, //HANGUL SYLLABLE SSANGCIEUC WAE RIEULHIEUH - 0xA69B: 0xCB04, //HANGUL SYLLABLE SSANGCIEUC WAE MIEUM - 0xA69C: 0xCB05, //HANGUL SYLLABLE SSANGCIEUC WAE PIEUP - 0xA69D: 0xCB06, //HANGUL SYLLABLE SSANGCIEUC WAE PIEUPSIOS - 0xA69E: 0xCB07, //HANGUL SYLLABLE SSANGCIEUC WAE SIOS - 0xA69F: 0xCB09, //HANGUL SYLLABLE SSANGCIEUC WAE IEUNG - 0xA6A0: 0xCB0A, //HANGUL SYLLABLE SSANGCIEUC WAE CIEUC - 0xA6A1: 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0xA6A2: 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0xA6A3: 0x250C, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0xA6A4: 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0xA6A5: 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0xA6A6: 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0xA6A7: 0x251C, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0xA6A8: 0x252C, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0xA6A9: 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0xA6AA: 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0xA6AB: 0x253C, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0xA6AC: 0x2501, //BOX DRAWINGS HEAVY HORIZONTAL - 0xA6AD: 0x2503, //BOX DRAWINGS HEAVY VERTICAL - 0xA6AE: 0x250F, //BOX DRAWINGS HEAVY DOWN AND RIGHT - 0xA6AF: 0x2513, //BOX DRAWINGS HEAVY DOWN AND LEFT - 0xA6B0: 0x251B, //BOX DRAWINGS HEAVY UP AND LEFT - 0xA6B1: 0x2517, //BOX DRAWINGS HEAVY UP AND RIGHT - 0xA6B2: 0x2523, //BOX DRAWINGS HEAVY VERTICAL AND RIGHT - 0xA6B3: 0x2533, //BOX DRAWINGS HEAVY DOWN AND HORIZONTAL - 0xA6B4: 0x252B, //BOX DRAWINGS HEAVY VERTICAL AND LEFT - 0xA6B5: 0x253B, //BOX DRAWINGS HEAVY UP AND HORIZONTAL - 0xA6B6: 0x254B, //BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - 0xA6B7: 0x2520, //BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT - 0xA6B8: 0x252F, //BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY - 0xA6B9: 0x2528, //BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT - 0xA6BA: 0x2537, //BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY - 0xA6BB: 0x253F, //BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY - 0xA6BC: 0x251D, //BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY - 0xA6BD: 0x2530, //BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT - 0xA6BE: 0x2525, //BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY - 0xA6BF: 0x2538, //BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT - 0xA6C0: 0x2542, //BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT - 0xA6C1: 0x2512, //BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT - 0xA6C2: 0x2511, //BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY - 0xA6C3: 0x251A, //BOX DRAWINGS UP HEAVY AND LEFT LIGHT - 0xA6C4: 0x2519, //BOX DRAWINGS UP LIGHT AND LEFT HEAVY - 0xA6C5: 0x2516, //BOX DRAWINGS UP HEAVY AND RIGHT LIGHT - 0xA6C6: 0x2515, //BOX DRAWINGS UP LIGHT AND RIGHT HEAVY - 0xA6C7: 0x250E, //BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT - 0xA6C8: 0x250D, //BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY - 0xA6C9: 0x251E, //BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT - 0xA6CA: 0x251F, //BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT - 0xA6CB: 0x2521, //BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY - 0xA6CC: 0x2522, //BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY - 0xA6CD: 0x2526, //BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT - 0xA6CE: 0x2527, //BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT - 0xA6CF: 0x2529, //BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY - 0xA6D0: 0x252A, //BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY - 0xA6D1: 0x252D, //BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT - 0xA6D2: 0x252E, //BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT - 0xA6D3: 0x2531, //BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY - 0xA6D4: 0x2532, //BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY - 0xA6D5: 0x2535, //BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT - 0xA6D6: 0x2536, //BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT - 0xA6D7: 0x2539, //BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY - 0xA6D8: 0x253A, //BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY - 0xA6D9: 0x253D, //BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT - 0xA6DA: 0x253E, //BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT - 0xA6DB: 0x2540, //BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT - 0xA6DC: 0x2541, //BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT - 0xA6DD: 0x2543, //BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT - 0xA6DE: 0x2544, //BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT - 0xA6DF: 0x2545, //BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT - 0xA6E0: 0x2546, //BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT - 0xA6E1: 0x2547, //BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY - 0xA6E2: 0x2548, //BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY - 0xA6E3: 0x2549, //BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY - 0xA6E4: 0x254A, //BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY - 0xA741: 0xCB0B, //HANGUL SYLLABLE SSANGCIEUC WAE CHIEUCH - 0xA742: 0xCB0C, //HANGUL SYLLABLE SSANGCIEUC WAE KHIEUKH - 0xA743: 0xCB0D, //HANGUL SYLLABLE SSANGCIEUC WAE THIEUTH - 0xA744: 0xCB0E, //HANGUL SYLLABLE SSANGCIEUC WAE PHIEUPH - 0xA745: 0xCB0F, //HANGUL SYLLABLE SSANGCIEUC WAE HIEUH - 0xA746: 0xCB11, //HANGUL SYLLABLE SSANGCIEUC OE KIYEOK - 0xA747: 0xCB12, //HANGUL SYLLABLE SSANGCIEUC OE SSANGKIYEOK - 0xA748: 0xCB13, //HANGUL SYLLABLE SSANGCIEUC OE KIYEOKSIOS - 0xA749: 0xCB15, //HANGUL SYLLABLE SSANGCIEUC OE NIEUNCIEUC - 0xA74A: 0xCB16, //HANGUL SYLLABLE SSANGCIEUC OE NIEUNHIEUH - 0xA74B: 0xCB17, //HANGUL SYLLABLE SSANGCIEUC OE TIKEUT - 0xA74C: 0xCB19, //HANGUL SYLLABLE SSANGCIEUC OE RIEULKIYEOK - 0xA74D: 0xCB1A, //HANGUL SYLLABLE SSANGCIEUC OE RIEULMIEUM - 0xA74E: 0xCB1B, //HANGUL SYLLABLE SSANGCIEUC OE RIEULPIEUP - 0xA74F: 0xCB1C, //HANGUL SYLLABLE SSANGCIEUC OE RIEULSIOS - 0xA750: 0xCB1D, //HANGUL SYLLABLE SSANGCIEUC OE RIEULTHIEUTH - 0xA751: 0xCB1E, //HANGUL SYLLABLE SSANGCIEUC OE RIEULPHIEUPH - 0xA752: 0xCB1F, //HANGUL SYLLABLE SSANGCIEUC OE RIEULHIEUH - 0xA753: 0xCB22, //HANGUL SYLLABLE SSANGCIEUC OE PIEUPSIOS - 0xA754: 0xCB23, //HANGUL SYLLABLE SSANGCIEUC OE SIOS - 0xA755: 0xCB24, //HANGUL SYLLABLE SSANGCIEUC OE SSANGSIOS - 0xA756: 0xCB25, //HANGUL SYLLABLE SSANGCIEUC OE IEUNG - 0xA757: 0xCB26, //HANGUL SYLLABLE SSANGCIEUC OE CIEUC - 0xA758: 0xCB27, //HANGUL SYLLABLE SSANGCIEUC OE CHIEUCH - 0xA759: 0xCB28, //HANGUL SYLLABLE SSANGCIEUC OE KHIEUKH - 0xA75A: 0xCB29, //HANGUL SYLLABLE SSANGCIEUC OE THIEUTH - 0xA761: 0xCB2A, //HANGUL SYLLABLE SSANGCIEUC OE PHIEUPH - 0xA762: 0xCB2B, //HANGUL SYLLABLE SSANGCIEUC OE HIEUH - 0xA763: 0xCB2C, //HANGUL SYLLABLE SSANGCIEUC YO - 0xA764: 0xCB2D, //HANGUL SYLLABLE SSANGCIEUC YO KIYEOK - 0xA765: 0xCB2E, //HANGUL SYLLABLE SSANGCIEUC YO SSANGKIYEOK - 0xA766: 0xCB2F, //HANGUL SYLLABLE SSANGCIEUC YO KIYEOKSIOS - 0xA767: 0xCB30, //HANGUL SYLLABLE SSANGCIEUC YO NIEUN - 0xA768: 0xCB31, //HANGUL SYLLABLE SSANGCIEUC YO NIEUNCIEUC - 0xA769: 0xCB32, //HANGUL SYLLABLE SSANGCIEUC YO NIEUNHIEUH - 0xA76A: 0xCB33, //HANGUL SYLLABLE SSANGCIEUC YO TIKEUT - 0xA76B: 0xCB34, //HANGUL SYLLABLE SSANGCIEUC YO RIEUL - 0xA76C: 0xCB35, //HANGUL SYLLABLE SSANGCIEUC YO RIEULKIYEOK - 0xA76D: 0xCB36, //HANGUL SYLLABLE SSANGCIEUC YO RIEULMIEUM - 0xA76E: 0xCB37, //HANGUL SYLLABLE SSANGCIEUC YO RIEULPIEUP - 0xA76F: 0xCB38, //HANGUL SYLLABLE SSANGCIEUC YO RIEULSIOS - 0xA770: 0xCB39, //HANGUL SYLLABLE SSANGCIEUC YO RIEULTHIEUTH - 0xA771: 0xCB3A, //HANGUL SYLLABLE SSANGCIEUC YO RIEULPHIEUPH - 0xA772: 0xCB3B, //HANGUL SYLLABLE SSANGCIEUC YO RIEULHIEUH - 0xA773: 0xCB3C, //HANGUL SYLLABLE SSANGCIEUC YO MIEUM - 0xA774: 0xCB3D, //HANGUL SYLLABLE SSANGCIEUC YO PIEUP - 0xA775: 0xCB3E, //HANGUL SYLLABLE SSANGCIEUC YO PIEUPSIOS - 0xA776: 0xCB3F, //HANGUL SYLLABLE SSANGCIEUC YO SIOS - 0xA777: 0xCB40, //HANGUL SYLLABLE SSANGCIEUC YO SSANGSIOS - 0xA778: 0xCB42, //HANGUL SYLLABLE SSANGCIEUC YO CIEUC - 0xA779: 0xCB43, //HANGUL SYLLABLE SSANGCIEUC YO CHIEUCH - 0xA77A: 0xCB44, //HANGUL SYLLABLE SSANGCIEUC YO KHIEUKH - 0xA781: 0xCB45, //HANGUL SYLLABLE SSANGCIEUC YO THIEUTH - 0xA782: 0xCB46, //HANGUL SYLLABLE SSANGCIEUC YO PHIEUPH - 0xA783: 0xCB47, //HANGUL SYLLABLE SSANGCIEUC YO HIEUH - 0xA784: 0xCB4A, //HANGUL SYLLABLE SSANGCIEUC U SSANGKIYEOK - 0xA785: 0xCB4B, //HANGUL SYLLABLE SSANGCIEUC U KIYEOKSIOS - 0xA786: 0xCB4D, //HANGUL SYLLABLE SSANGCIEUC U NIEUNCIEUC - 0xA787: 0xCB4E, //HANGUL SYLLABLE SSANGCIEUC U NIEUNHIEUH - 0xA788: 0xCB4F, //HANGUL SYLLABLE SSANGCIEUC U TIKEUT - 0xA789: 0xCB51, //HANGUL SYLLABLE SSANGCIEUC U RIEULKIYEOK - 0xA78A: 0xCB52, //HANGUL SYLLABLE SSANGCIEUC U RIEULMIEUM - 0xA78B: 0xCB53, //HANGUL SYLLABLE SSANGCIEUC U RIEULPIEUP - 0xA78C: 0xCB54, //HANGUL SYLLABLE SSANGCIEUC U RIEULSIOS - 0xA78D: 0xCB55, //HANGUL SYLLABLE SSANGCIEUC U RIEULTHIEUTH - 0xA78E: 0xCB56, //HANGUL SYLLABLE SSANGCIEUC U RIEULPHIEUPH - 0xA78F: 0xCB57, //HANGUL SYLLABLE SSANGCIEUC U RIEULHIEUH - 0xA790: 0xCB5A, //HANGUL SYLLABLE SSANGCIEUC U PIEUPSIOS - 0xA791: 0xCB5B, //HANGUL SYLLABLE SSANGCIEUC U SIOS - 0xA792: 0xCB5C, //HANGUL SYLLABLE SSANGCIEUC U SSANGSIOS - 0xA793: 0xCB5E, //HANGUL SYLLABLE SSANGCIEUC U CIEUC - 0xA794: 0xCB5F, //HANGUL SYLLABLE SSANGCIEUC U CHIEUCH - 0xA795: 0xCB60, //HANGUL SYLLABLE SSANGCIEUC U KHIEUKH - 0xA796: 0xCB61, //HANGUL SYLLABLE SSANGCIEUC U THIEUTH - 0xA797: 0xCB62, //HANGUL SYLLABLE SSANGCIEUC U PHIEUPH - 0xA798: 0xCB63, //HANGUL SYLLABLE SSANGCIEUC U HIEUH - 0xA799: 0xCB65, //HANGUL SYLLABLE SSANGCIEUC WEO KIYEOK - 0xA79A: 0xCB66, //HANGUL SYLLABLE SSANGCIEUC WEO SSANGKIYEOK - 0xA79B: 0xCB67, //HANGUL SYLLABLE SSANGCIEUC WEO KIYEOKSIOS - 0xA79C: 0xCB68, //HANGUL SYLLABLE SSANGCIEUC WEO NIEUN - 0xA79D: 0xCB69, //HANGUL SYLLABLE SSANGCIEUC WEO NIEUNCIEUC - 0xA79E: 0xCB6A, //HANGUL SYLLABLE SSANGCIEUC WEO NIEUNHIEUH - 0xA79F: 0xCB6B, //HANGUL SYLLABLE SSANGCIEUC WEO TIKEUT - 0xA7A0: 0xCB6C, //HANGUL SYLLABLE SSANGCIEUC WEO RIEUL - 0xA7A1: 0x3395, //SQUARE MU L - 0xA7A2: 0x3396, //SQUARE ML - 0xA7A3: 0x3397, //SQUARE DL - 0xA7A4: 0x2113, //SCRIPT SMALL L - 0xA7A5: 0x3398, //SQUARE KL - 0xA7A6: 0x33C4, //SQUARE CC - 0xA7A7: 0x33A3, //SQUARE MM CUBED - 0xA7A8: 0x33A4, //SQUARE CM CUBED - 0xA7A9: 0x33A5, //SQUARE M CUBED - 0xA7AA: 0x33A6, //SQUARE KM CUBED - 0xA7AB: 0x3399, //SQUARE FM - 0xA7AC: 0x339A, //SQUARE NM - 0xA7AD: 0x339B, //SQUARE MU M - 0xA7AE: 0x339C, //SQUARE MM - 0xA7AF: 0x339D, //SQUARE CM - 0xA7B0: 0x339E, //SQUARE KM - 0xA7B1: 0x339F, //SQUARE MM SQUARED - 0xA7B2: 0x33A0, //SQUARE CM SQUARED - 0xA7B3: 0x33A1, //SQUARE M SQUARED - 0xA7B4: 0x33A2, //SQUARE KM SQUARED - 0xA7B5: 0x33CA, //SQUARE HA - 0xA7B6: 0x338D, //SQUARE MU G - 0xA7B7: 0x338E, //SQUARE MG - 0xA7B8: 0x338F, //SQUARE KG - 0xA7B9: 0x33CF, //SQUARE KT - 0xA7BA: 0x3388, //SQUARE CAL - 0xA7BB: 0x3389, //SQUARE KCAL - 0xA7BC: 0x33C8, //SQUARE DB - 0xA7BD: 0x33A7, //SQUARE M OVER S - 0xA7BE: 0x33A8, //SQUARE M OVER S SQUARED - 0xA7BF: 0x33B0, //SQUARE PS - 0xA7C0: 0x33B1, //SQUARE NS - 0xA7C1: 0x33B2, //SQUARE MU S - 0xA7C2: 0x33B3, //SQUARE MS - 0xA7C3: 0x33B4, //SQUARE PV - 0xA7C4: 0x33B5, //SQUARE NV - 0xA7C5: 0x33B6, //SQUARE MU V - 0xA7C6: 0x33B7, //SQUARE MV - 0xA7C7: 0x33B8, //SQUARE KV - 0xA7C8: 0x33B9, //SQUARE MV MEGA - 0xA7C9: 0x3380, //SQUARE PA AMPS - 0xA7CA: 0x3381, //SQUARE NA - 0xA7CB: 0x3382, //SQUARE MU A - 0xA7CC: 0x3383, //SQUARE MA - 0xA7CD: 0x3384, //SQUARE KA - 0xA7CE: 0x33BA, //SQUARE PW - 0xA7CF: 0x33BB, //SQUARE NW - 0xA7D0: 0x33BC, //SQUARE MU W - 0xA7D1: 0x33BD, //SQUARE MW - 0xA7D2: 0x33BE, //SQUARE KW - 0xA7D3: 0x33BF, //SQUARE MW MEGA - 0xA7D4: 0x3390, //SQUARE HZ - 0xA7D5: 0x3391, //SQUARE KHZ - 0xA7D6: 0x3392, //SQUARE MHZ - 0xA7D7: 0x3393, //SQUARE GHZ - 0xA7D8: 0x3394, //SQUARE THZ - 0xA7D9: 0x2126, //OHM SIGN - 0xA7DA: 0x33C0, //SQUARE K OHM - 0xA7DB: 0x33C1, //SQUARE M OHM - 0xA7DC: 0x338A, //SQUARE PF - 0xA7DD: 0x338B, //SQUARE NF - 0xA7DE: 0x338C, //SQUARE MU F - 0xA7DF: 0x33D6, //SQUARE MOL - 0xA7E0: 0x33C5, //SQUARE CD - 0xA7E1: 0x33AD, //SQUARE RAD - 0xA7E2: 0x33AE, //SQUARE RAD OVER S - 0xA7E3: 0x33AF, //SQUARE RAD OVER S SQUARED - 0xA7E4: 0x33DB, //SQUARE SR - 0xA7E5: 0x33A9, //SQUARE PA - 0xA7E6: 0x33AA, //SQUARE KPA - 0xA7E7: 0x33AB, //SQUARE MPA - 0xA7E8: 0x33AC, //SQUARE GPA - 0xA7E9: 0x33DD, //SQUARE WB - 0xA7EA: 0x33D0, //SQUARE LM - 0xA7EB: 0x33D3, //SQUARE LX - 0xA7EC: 0x33C3, //SQUARE BQ - 0xA7ED: 0x33C9, //SQUARE GY - 0xA7EE: 0x33DC, //SQUARE SV - 0xA7EF: 0x33C6, //SQUARE C OVER KG - 0xA841: 0xCB6D, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULKIYEOK - 0xA842: 0xCB6E, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULMIEUM - 0xA843: 0xCB6F, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULPIEUP - 0xA844: 0xCB70, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULSIOS - 0xA845: 0xCB71, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULTHIEUTH - 0xA846: 0xCB72, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULPHIEUPH - 0xA847: 0xCB73, //HANGUL SYLLABLE SSANGCIEUC WEO RIEULHIEUH - 0xA848: 0xCB74, //HANGUL SYLLABLE SSANGCIEUC WEO MIEUM - 0xA849: 0xCB75, //HANGUL SYLLABLE SSANGCIEUC WEO PIEUP - 0xA84A: 0xCB76, //HANGUL SYLLABLE SSANGCIEUC WEO PIEUPSIOS - 0xA84B: 0xCB77, //HANGUL SYLLABLE SSANGCIEUC WEO SIOS - 0xA84C: 0xCB7A, //HANGUL SYLLABLE SSANGCIEUC WEO CIEUC - 0xA84D: 0xCB7B, //HANGUL SYLLABLE SSANGCIEUC WEO CHIEUCH - 0xA84E: 0xCB7C, //HANGUL SYLLABLE SSANGCIEUC WEO KHIEUKH - 0xA84F: 0xCB7D, //HANGUL SYLLABLE SSANGCIEUC WEO THIEUTH - 0xA850: 0xCB7E, //HANGUL SYLLABLE SSANGCIEUC WEO PHIEUPH - 0xA851: 0xCB7F, //HANGUL SYLLABLE SSANGCIEUC WEO HIEUH - 0xA852: 0xCB80, //HANGUL SYLLABLE SSANGCIEUC WE - 0xA853: 0xCB81, //HANGUL SYLLABLE SSANGCIEUC WE KIYEOK - 0xA854: 0xCB82, //HANGUL SYLLABLE SSANGCIEUC WE SSANGKIYEOK - 0xA855: 0xCB83, //HANGUL SYLLABLE SSANGCIEUC WE KIYEOKSIOS - 0xA856: 0xCB84, //HANGUL SYLLABLE SSANGCIEUC WE NIEUN - 0xA857: 0xCB85, //HANGUL SYLLABLE SSANGCIEUC WE NIEUNCIEUC - 0xA858: 0xCB86, //HANGUL SYLLABLE SSANGCIEUC WE NIEUNHIEUH - 0xA859: 0xCB87, //HANGUL SYLLABLE SSANGCIEUC WE TIKEUT - 0xA85A: 0xCB88, //HANGUL SYLLABLE SSANGCIEUC WE RIEUL - 0xA861: 0xCB89, //HANGUL SYLLABLE SSANGCIEUC WE RIEULKIYEOK - 0xA862: 0xCB8A, //HANGUL SYLLABLE SSANGCIEUC WE RIEULMIEUM - 0xA863: 0xCB8B, //HANGUL SYLLABLE SSANGCIEUC WE RIEULPIEUP - 0xA864: 0xCB8C, //HANGUL SYLLABLE SSANGCIEUC WE RIEULSIOS - 0xA865: 0xCB8D, //HANGUL SYLLABLE SSANGCIEUC WE RIEULTHIEUTH - 0xA866: 0xCB8E, //HANGUL SYLLABLE SSANGCIEUC WE RIEULPHIEUPH - 0xA867: 0xCB8F, //HANGUL SYLLABLE SSANGCIEUC WE RIEULHIEUH - 0xA868: 0xCB90, //HANGUL SYLLABLE SSANGCIEUC WE MIEUM - 0xA869: 0xCB91, //HANGUL SYLLABLE SSANGCIEUC WE PIEUP - 0xA86A: 0xCB92, //HANGUL SYLLABLE SSANGCIEUC WE PIEUPSIOS - 0xA86B: 0xCB93, //HANGUL SYLLABLE SSANGCIEUC WE SIOS - 0xA86C: 0xCB94, //HANGUL SYLLABLE SSANGCIEUC WE SSANGSIOS - 0xA86D: 0xCB95, //HANGUL SYLLABLE SSANGCIEUC WE IEUNG - 0xA86E: 0xCB96, //HANGUL SYLLABLE SSANGCIEUC WE CIEUC - 0xA86F: 0xCB97, //HANGUL SYLLABLE SSANGCIEUC WE CHIEUCH - 0xA870: 0xCB98, //HANGUL SYLLABLE SSANGCIEUC WE KHIEUKH - 0xA871: 0xCB99, //HANGUL SYLLABLE SSANGCIEUC WE THIEUTH - 0xA872: 0xCB9A, //HANGUL SYLLABLE SSANGCIEUC WE PHIEUPH - 0xA873: 0xCB9B, //HANGUL SYLLABLE SSANGCIEUC WE HIEUH - 0xA874: 0xCB9D, //HANGUL SYLLABLE SSANGCIEUC WI KIYEOK - 0xA875: 0xCB9E, //HANGUL SYLLABLE SSANGCIEUC WI SSANGKIYEOK - 0xA876: 0xCB9F, //HANGUL SYLLABLE SSANGCIEUC WI KIYEOKSIOS - 0xA877: 0xCBA0, //HANGUL SYLLABLE SSANGCIEUC WI NIEUN - 0xA878: 0xCBA1, //HANGUL SYLLABLE SSANGCIEUC WI NIEUNCIEUC - 0xA879: 0xCBA2, //HANGUL SYLLABLE SSANGCIEUC WI NIEUNHIEUH - 0xA87A: 0xCBA3, //HANGUL SYLLABLE SSANGCIEUC WI TIKEUT - 0xA881: 0xCBA4, //HANGUL SYLLABLE SSANGCIEUC WI RIEUL - 0xA882: 0xCBA5, //HANGUL SYLLABLE SSANGCIEUC WI RIEULKIYEOK - 0xA883: 0xCBA6, //HANGUL SYLLABLE SSANGCIEUC WI RIEULMIEUM - 0xA884: 0xCBA7, //HANGUL SYLLABLE SSANGCIEUC WI RIEULPIEUP - 0xA885: 0xCBA8, //HANGUL SYLLABLE SSANGCIEUC WI RIEULSIOS - 0xA886: 0xCBA9, //HANGUL SYLLABLE SSANGCIEUC WI RIEULTHIEUTH - 0xA887: 0xCBAA, //HANGUL SYLLABLE SSANGCIEUC WI RIEULPHIEUPH - 0xA888: 0xCBAB, //HANGUL SYLLABLE SSANGCIEUC WI RIEULHIEUH - 0xA889: 0xCBAC, //HANGUL SYLLABLE SSANGCIEUC WI MIEUM - 0xA88A: 0xCBAD, //HANGUL SYLLABLE SSANGCIEUC WI PIEUP - 0xA88B: 0xCBAE, //HANGUL SYLLABLE SSANGCIEUC WI PIEUPSIOS - 0xA88C: 0xCBAF, //HANGUL SYLLABLE SSANGCIEUC WI SIOS - 0xA88D: 0xCBB0, //HANGUL SYLLABLE SSANGCIEUC WI SSANGSIOS - 0xA88E: 0xCBB1, //HANGUL SYLLABLE SSANGCIEUC WI IEUNG - 0xA88F: 0xCBB2, //HANGUL SYLLABLE SSANGCIEUC WI CIEUC - 0xA890: 0xCBB3, //HANGUL SYLLABLE SSANGCIEUC WI CHIEUCH - 0xA891: 0xCBB4, //HANGUL SYLLABLE SSANGCIEUC WI KHIEUKH - 0xA892: 0xCBB5, //HANGUL SYLLABLE SSANGCIEUC WI THIEUTH - 0xA893: 0xCBB6, //HANGUL SYLLABLE SSANGCIEUC WI PHIEUPH - 0xA894: 0xCBB7, //HANGUL SYLLABLE SSANGCIEUC WI HIEUH - 0xA895: 0xCBB9, //HANGUL SYLLABLE SSANGCIEUC YU KIYEOK - 0xA896: 0xCBBA, //HANGUL SYLLABLE SSANGCIEUC YU SSANGKIYEOK - 0xA897: 0xCBBB, //HANGUL SYLLABLE SSANGCIEUC YU KIYEOKSIOS - 0xA898: 0xCBBC, //HANGUL SYLLABLE SSANGCIEUC YU NIEUN - 0xA899: 0xCBBD, //HANGUL SYLLABLE SSANGCIEUC YU NIEUNCIEUC - 0xA89A: 0xCBBE, //HANGUL SYLLABLE SSANGCIEUC YU NIEUNHIEUH - 0xA89B: 0xCBBF, //HANGUL SYLLABLE SSANGCIEUC YU TIKEUT - 0xA89C: 0xCBC0, //HANGUL SYLLABLE SSANGCIEUC YU RIEUL - 0xA89D: 0xCBC1, //HANGUL SYLLABLE SSANGCIEUC YU RIEULKIYEOK - 0xA89E: 0xCBC2, //HANGUL SYLLABLE SSANGCIEUC YU RIEULMIEUM - 0xA89F: 0xCBC3, //HANGUL SYLLABLE SSANGCIEUC YU RIEULPIEUP - 0xA8A0: 0xCBC4, //HANGUL SYLLABLE SSANGCIEUC YU RIEULSIOS - 0xA8A1: 0x00C6, //LATIN CAPITAL LETTER AE - 0xA8A2: 0x00D0, //LATIN CAPITAL LETTER ETH - 0xA8A3: 0x00AA, //FEMININE ORDINAL INDICATOR - 0xA8A4: 0x0126, //LATIN CAPITAL LETTER H WITH STROKE - 0xA8A6: 0x0132, //LATIN CAPITAL LIGATURE IJ - 0xA8A8: 0x013F, //LATIN CAPITAL LETTER L WITH MIDDLE DOT - 0xA8A9: 0x0141, //LATIN CAPITAL LETTER L WITH STROKE - 0xA8AA: 0x00D8, //LATIN CAPITAL LETTER O WITH STROKE - 0xA8AB: 0x0152, //LATIN CAPITAL LIGATURE OE - 0xA8AC: 0x00BA, //MASCULINE ORDINAL INDICATOR - 0xA8AD: 0x00DE, //LATIN CAPITAL LETTER THORN - 0xA8AE: 0x0166, //LATIN CAPITAL LETTER T WITH STROKE - 0xA8AF: 0x014A, //LATIN CAPITAL LETTER ENG - 0xA8B1: 0x3260, //CIRCLED HANGUL KIYEOK - 0xA8B2: 0x3261, //CIRCLED HANGUL NIEUN - 0xA8B3: 0x3262, //CIRCLED HANGUL TIKEUT - 0xA8B4: 0x3263, //CIRCLED HANGUL RIEUL - 0xA8B5: 0x3264, //CIRCLED HANGUL MIEUM - 0xA8B6: 0x3265, //CIRCLED HANGUL PIEUP - 0xA8B7: 0x3266, //CIRCLED HANGUL SIOS - 0xA8B8: 0x3267, //CIRCLED HANGUL IEUNG - 0xA8B9: 0x3268, //CIRCLED HANGUL CIEUC - 0xA8BA: 0x3269, //CIRCLED HANGUL CHIEUCH - 0xA8BB: 0x326A, //CIRCLED HANGUL KHIEUKH - 0xA8BC: 0x326B, //CIRCLED HANGUL THIEUTH - 0xA8BD: 0x326C, //CIRCLED HANGUL PHIEUPH - 0xA8BE: 0x326D, //CIRCLED HANGUL HIEUH - 0xA8BF: 0x326E, //CIRCLED HANGUL KIYEOK A - 0xA8C0: 0x326F, //CIRCLED HANGUL NIEUN A - 0xA8C1: 0x3270, //CIRCLED HANGUL TIKEUT A - 0xA8C2: 0x3271, //CIRCLED HANGUL RIEUL A - 0xA8C3: 0x3272, //CIRCLED HANGUL MIEUM A - 0xA8C4: 0x3273, //CIRCLED HANGUL PIEUP A - 0xA8C5: 0x3274, //CIRCLED HANGUL SIOS A - 0xA8C6: 0x3275, //CIRCLED HANGUL IEUNG A - 0xA8C7: 0x3276, //CIRCLED HANGUL CIEUC A - 0xA8C8: 0x3277, //CIRCLED HANGUL CHIEUCH A - 0xA8C9: 0x3278, //CIRCLED HANGUL KHIEUKH A - 0xA8CA: 0x3279, //CIRCLED HANGUL THIEUTH A - 0xA8CB: 0x327A, //CIRCLED HANGUL PHIEUPH A - 0xA8CC: 0x327B, //CIRCLED HANGUL HIEUH A - 0xA8CD: 0x24D0, //CIRCLED LATIN SMALL LETTER A - 0xA8CE: 0x24D1, //CIRCLED LATIN SMALL LETTER B - 0xA8CF: 0x24D2, //CIRCLED LATIN SMALL LETTER C - 0xA8D0: 0x24D3, //CIRCLED LATIN SMALL LETTER D - 0xA8D1: 0x24D4, //CIRCLED LATIN SMALL LETTER E - 0xA8D2: 0x24D5, //CIRCLED LATIN SMALL LETTER F - 0xA8D3: 0x24D6, //CIRCLED LATIN SMALL LETTER G - 0xA8D4: 0x24D7, //CIRCLED LATIN SMALL LETTER H - 0xA8D5: 0x24D8, //CIRCLED LATIN SMALL LETTER I - 0xA8D6: 0x24D9, //CIRCLED LATIN SMALL LETTER J - 0xA8D7: 0x24DA, //CIRCLED LATIN SMALL LETTER K - 0xA8D8: 0x24DB, //CIRCLED LATIN SMALL LETTER L - 0xA8D9: 0x24DC, //CIRCLED LATIN SMALL LETTER M - 0xA8DA: 0x24DD, //CIRCLED LATIN SMALL LETTER N - 0xA8DB: 0x24DE, //CIRCLED LATIN SMALL LETTER O - 0xA8DC: 0x24DF, //CIRCLED LATIN SMALL LETTER P - 0xA8DD: 0x24E0, //CIRCLED LATIN SMALL LETTER Q - 0xA8DE: 0x24E1, //CIRCLED LATIN SMALL LETTER R - 0xA8DF: 0x24E2, //CIRCLED LATIN SMALL LETTER S - 0xA8E0: 0x24E3, //CIRCLED LATIN SMALL LETTER T - 0xA8E1: 0x24E4, //CIRCLED LATIN SMALL LETTER U - 0xA8E2: 0x24E5, //CIRCLED LATIN SMALL LETTER V - 0xA8E3: 0x24E6, //CIRCLED LATIN SMALL LETTER W - 0xA8E4: 0x24E7, //CIRCLED LATIN SMALL LETTER X - 0xA8E5: 0x24E8, //CIRCLED LATIN SMALL LETTER Y - 0xA8E6: 0x24E9, //CIRCLED LATIN SMALL LETTER Z - 0xA8E7: 0x2460, //CIRCLED DIGIT ONE - 0xA8E8: 0x2461, //CIRCLED DIGIT TWO - 0xA8E9: 0x2462, //CIRCLED DIGIT THREE - 0xA8EA: 0x2463, //CIRCLED DIGIT FOUR - 0xA8EB: 0x2464, //CIRCLED DIGIT FIVE - 0xA8EC: 0x2465, //CIRCLED DIGIT SIX - 0xA8ED: 0x2466, //CIRCLED DIGIT SEVEN - 0xA8EE: 0x2467, //CIRCLED DIGIT EIGHT - 0xA8EF: 0x2468, //CIRCLED DIGIT NINE - 0xA8F0: 0x2469, //CIRCLED NUMBER TEN - 0xA8F1: 0x246A, //CIRCLED NUMBER ELEVEN - 0xA8F2: 0x246B, //CIRCLED NUMBER TWELVE - 0xA8F3: 0x246C, //CIRCLED NUMBER THIRTEEN - 0xA8F4: 0x246D, //CIRCLED NUMBER FOURTEEN - 0xA8F5: 0x246E, //CIRCLED NUMBER FIFTEEN - 0xA8F6: 0x00BD, //VULGAR FRACTION ONE HALF - 0xA8F7: 0x2153, //VULGAR FRACTION ONE THIRD - 0xA8F8: 0x2154, //VULGAR FRACTION TWO THIRDS - 0xA8F9: 0x00BC, //VULGAR FRACTION ONE QUARTER - 0xA8FA: 0x00BE, //VULGAR FRACTION THREE QUARTERS - 0xA8FB: 0x215B, //VULGAR FRACTION ONE EIGHTH - 0xA8FC: 0x215C, //VULGAR FRACTION THREE EIGHTHS - 0xA8FD: 0x215D, //VULGAR FRACTION FIVE EIGHTHS - 0xA8FE: 0x215E, //VULGAR FRACTION SEVEN EIGHTHS - 0xA941: 0xCBC5, //HANGUL SYLLABLE SSANGCIEUC YU RIEULTHIEUTH - 0xA942: 0xCBC6, //HANGUL SYLLABLE SSANGCIEUC YU RIEULPHIEUPH - 0xA943: 0xCBC7, //HANGUL SYLLABLE SSANGCIEUC YU RIEULHIEUH - 0xA944: 0xCBC8, //HANGUL SYLLABLE SSANGCIEUC YU MIEUM - 0xA945: 0xCBC9, //HANGUL SYLLABLE SSANGCIEUC YU PIEUP - 0xA946: 0xCBCA, //HANGUL SYLLABLE SSANGCIEUC YU PIEUPSIOS - 0xA947: 0xCBCB, //HANGUL SYLLABLE SSANGCIEUC YU SIOS - 0xA948: 0xCBCC, //HANGUL SYLLABLE SSANGCIEUC YU SSANGSIOS - 0xA949: 0xCBCD, //HANGUL SYLLABLE SSANGCIEUC YU IEUNG - 0xA94A: 0xCBCE, //HANGUL SYLLABLE SSANGCIEUC YU CIEUC - 0xA94B: 0xCBCF, //HANGUL SYLLABLE SSANGCIEUC YU CHIEUCH - 0xA94C: 0xCBD0, //HANGUL SYLLABLE SSANGCIEUC YU KHIEUKH - 0xA94D: 0xCBD1, //HANGUL SYLLABLE SSANGCIEUC YU THIEUTH - 0xA94E: 0xCBD2, //HANGUL SYLLABLE SSANGCIEUC YU PHIEUPH - 0xA94F: 0xCBD3, //HANGUL SYLLABLE SSANGCIEUC YU HIEUH - 0xA950: 0xCBD5, //HANGUL SYLLABLE SSANGCIEUC EU KIYEOK - 0xA951: 0xCBD6, //HANGUL SYLLABLE SSANGCIEUC EU SSANGKIYEOK - 0xA952: 0xCBD7, //HANGUL SYLLABLE SSANGCIEUC EU KIYEOKSIOS - 0xA953: 0xCBD8, //HANGUL SYLLABLE SSANGCIEUC EU NIEUN - 0xA954: 0xCBD9, //HANGUL SYLLABLE SSANGCIEUC EU NIEUNCIEUC - 0xA955: 0xCBDA, //HANGUL SYLLABLE SSANGCIEUC EU NIEUNHIEUH - 0xA956: 0xCBDB, //HANGUL SYLLABLE SSANGCIEUC EU TIKEUT - 0xA957: 0xCBDC, //HANGUL SYLLABLE SSANGCIEUC EU RIEUL - 0xA958: 0xCBDD, //HANGUL SYLLABLE SSANGCIEUC EU RIEULKIYEOK - 0xA959: 0xCBDE, //HANGUL SYLLABLE SSANGCIEUC EU RIEULMIEUM - 0xA95A: 0xCBDF, //HANGUL SYLLABLE SSANGCIEUC EU RIEULPIEUP - 0xA961: 0xCBE0, //HANGUL SYLLABLE SSANGCIEUC EU RIEULSIOS - 0xA962: 0xCBE1, //HANGUL SYLLABLE SSANGCIEUC EU RIEULTHIEUTH - 0xA963: 0xCBE2, //HANGUL SYLLABLE SSANGCIEUC EU RIEULPHIEUPH - 0xA964: 0xCBE3, //HANGUL SYLLABLE SSANGCIEUC EU RIEULHIEUH - 0xA965: 0xCBE5, //HANGUL SYLLABLE SSANGCIEUC EU PIEUP - 0xA966: 0xCBE6, //HANGUL SYLLABLE SSANGCIEUC EU PIEUPSIOS - 0xA967: 0xCBE8, //HANGUL SYLLABLE SSANGCIEUC EU SSANGSIOS - 0xA968: 0xCBEA, //HANGUL SYLLABLE SSANGCIEUC EU CIEUC - 0xA969: 0xCBEB, //HANGUL SYLLABLE SSANGCIEUC EU CHIEUCH - 0xA96A: 0xCBEC, //HANGUL SYLLABLE SSANGCIEUC EU KHIEUKH - 0xA96B: 0xCBED, //HANGUL SYLLABLE SSANGCIEUC EU THIEUTH - 0xA96C: 0xCBEE, //HANGUL SYLLABLE SSANGCIEUC EU PHIEUPH - 0xA96D: 0xCBEF, //HANGUL SYLLABLE SSANGCIEUC EU HIEUH - 0xA96E: 0xCBF0, //HANGUL SYLLABLE SSANGCIEUC YI - 0xA96F: 0xCBF1, //HANGUL SYLLABLE SSANGCIEUC YI KIYEOK - 0xA970: 0xCBF2, //HANGUL SYLLABLE SSANGCIEUC YI SSANGKIYEOK - 0xA971: 0xCBF3, //HANGUL SYLLABLE SSANGCIEUC YI KIYEOKSIOS - 0xA972: 0xCBF4, //HANGUL SYLLABLE SSANGCIEUC YI NIEUN - 0xA973: 0xCBF5, //HANGUL SYLLABLE SSANGCIEUC YI NIEUNCIEUC - 0xA974: 0xCBF6, //HANGUL SYLLABLE SSANGCIEUC YI NIEUNHIEUH - 0xA975: 0xCBF7, //HANGUL SYLLABLE SSANGCIEUC YI TIKEUT - 0xA976: 0xCBF8, //HANGUL SYLLABLE SSANGCIEUC YI RIEUL - 0xA977: 0xCBF9, //HANGUL SYLLABLE SSANGCIEUC YI RIEULKIYEOK - 0xA978: 0xCBFA, //HANGUL SYLLABLE SSANGCIEUC YI RIEULMIEUM - 0xA979: 0xCBFB, //HANGUL SYLLABLE SSANGCIEUC YI RIEULPIEUP - 0xA97A: 0xCBFC, //HANGUL SYLLABLE SSANGCIEUC YI RIEULSIOS - 0xA981: 0xCBFD, //HANGUL SYLLABLE SSANGCIEUC YI RIEULTHIEUTH - 0xA982: 0xCBFE, //HANGUL SYLLABLE SSANGCIEUC YI RIEULPHIEUPH - 0xA983: 0xCBFF, //HANGUL SYLLABLE SSANGCIEUC YI RIEULHIEUH - 0xA984: 0xCC00, //HANGUL SYLLABLE SSANGCIEUC YI MIEUM - 0xA985: 0xCC01, //HANGUL SYLLABLE SSANGCIEUC YI PIEUP - 0xA986: 0xCC02, //HANGUL SYLLABLE SSANGCIEUC YI PIEUPSIOS - 0xA987: 0xCC03, //HANGUL SYLLABLE SSANGCIEUC YI SIOS - 0xA988: 0xCC04, //HANGUL SYLLABLE SSANGCIEUC YI SSANGSIOS - 0xA989: 0xCC05, //HANGUL SYLLABLE SSANGCIEUC YI IEUNG - 0xA98A: 0xCC06, //HANGUL SYLLABLE SSANGCIEUC YI CIEUC - 0xA98B: 0xCC07, //HANGUL SYLLABLE SSANGCIEUC YI CHIEUCH - 0xA98C: 0xCC08, //HANGUL SYLLABLE SSANGCIEUC YI KHIEUKH - 0xA98D: 0xCC09, //HANGUL SYLLABLE SSANGCIEUC YI THIEUTH - 0xA98E: 0xCC0A, //HANGUL SYLLABLE SSANGCIEUC YI PHIEUPH - 0xA98F: 0xCC0B, //HANGUL SYLLABLE SSANGCIEUC YI HIEUH - 0xA990: 0xCC0E, //HANGUL SYLLABLE SSANGCIEUC I SSANGKIYEOK - 0xA991: 0xCC0F, //HANGUL SYLLABLE SSANGCIEUC I KIYEOKSIOS - 0xA992: 0xCC11, //HANGUL SYLLABLE SSANGCIEUC I NIEUNCIEUC - 0xA993: 0xCC12, //HANGUL SYLLABLE SSANGCIEUC I NIEUNHIEUH - 0xA994: 0xCC13, //HANGUL SYLLABLE SSANGCIEUC I TIKEUT - 0xA995: 0xCC15, //HANGUL SYLLABLE SSANGCIEUC I RIEULKIYEOK - 0xA996: 0xCC16, //HANGUL SYLLABLE SSANGCIEUC I RIEULMIEUM - 0xA997: 0xCC17, //HANGUL SYLLABLE SSANGCIEUC I RIEULPIEUP - 0xA998: 0xCC18, //HANGUL SYLLABLE SSANGCIEUC I RIEULSIOS - 0xA999: 0xCC19, //HANGUL SYLLABLE SSANGCIEUC I RIEULTHIEUTH - 0xA99A: 0xCC1A, //HANGUL SYLLABLE SSANGCIEUC I RIEULPHIEUPH - 0xA99B: 0xCC1B, //HANGUL SYLLABLE SSANGCIEUC I RIEULHIEUH - 0xA99C: 0xCC1E, //HANGUL SYLLABLE SSANGCIEUC I PIEUPSIOS - 0xA99D: 0xCC1F, //HANGUL SYLLABLE SSANGCIEUC I SIOS - 0xA99E: 0xCC20, //HANGUL SYLLABLE SSANGCIEUC I SSANGSIOS - 0xA99F: 0xCC23, //HANGUL SYLLABLE SSANGCIEUC I CHIEUCH - 0xA9A0: 0xCC24, //HANGUL SYLLABLE SSANGCIEUC I KHIEUKH - 0xA9A1: 0x00E6, //LATIN SMALL LETTER AE - 0xA9A2: 0x0111, //LATIN SMALL LETTER D WITH STROKE - 0xA9A3: 0x00F0, //LATIN SMALL LETTER ETH - 0xA9A4: 0x0127, //LATIN SMALL LETTER H WITH STROKE - 0xA9A5: 0x0131, //LATIN SMALL LETTER DOTLESS I - 0xA9A6: 0x0133, //LATIN SMALL LIGATURE IJ - 0xA9A7: 0x0138, //LATIN SMALL LETTER KRA - 0xA9A8: 0x0140, //LATIN SMALL LETTER L WITH MIDDLE DOT - 0xA9A9: 0x0142, //LATIN SMALL LETTER L WITH STROKE - 0xA9AA: 0x00F8, //LATIN SMALL LETTER O WITH STROKE - 0xA9AB: 0x0153, //LATIN SMALL LIGATURE OE - 0xA9AC: 0x00DF, //LATIN SMALL LETTER SHARP S - 0xA9AD: 0x00FE, //LATIN SMALL LETTER THORN - 0xA9AE: 0x0167, //LATIN SMALL LETTER T WITH STROKE - 0xA9AF: 0x014B, //LATIN SMALL LETTER ENG - 0xA9B0: 0x0149, //LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - 0xA9B1: 0x3200, //PARENTHESIZED HANGUL KIYEOK - 0xA9B2: 0x3201, //PARENTHESIZED HANGUL NIEUN - 0xA9B3: 0x3202, //PARENTHESIZED HANGUL TIKEUT - 0xA9B4: 0x3203, //PARENTHESIZED HANGUL RIEUL - 0xA9B5: 0x3204, //PARENTHESIZED HANGUL MIEUM - 0xA9B6: 0x3205, //PARENTHESIZED HANGUL PIEUP - 0xA9B7: 0x3206, //PARENTHESIZED HANGUL SIOS - 0xA9B8: 0x3207, //PARENTHESIZED HANGUL IEUNG - 0xA9B9: 0x3208, //PARENTHESIZED HANGUL CIEUC - 0xA9BA: 0x3209, //PARENTHESIZED HANGUL CHIEUCH - 0xA9BB: 0x320A, //PARENTHESIZED HANGUL KHIEUKH - 0xA9BC: 0x320B, //PARENTHESIZED HANGUL THIEUTH - 0xA9BD: 0x320C, //PARENTHESIZED HANGUL PHIEUPH - 0xA9BE: 0x320D, //PARENTHESIZED HANGUL HIEUH - 0xA9BF: 0x320E, //PARENTHESIZED HANGUL KIYEOK A - 0xA9C0: 0x320F, //PARENTHESIZED HANGUL NIEUN A - 0xA9C1: 0x3210, //PARENTHESIZED HANGUL TIKEUT A - 0xA9C2: 0x3211, //PARENTHESIZED HANGUL RIEUL A - 0xA9C3: 0x3212, //PARENTHESIZED HANGUL MIEUM A - 0xA9C4: 0x3213, //PARENTHESIZED HANGUL PIEUP A - 0xA9C5: 0x3214, //PARENTHESIZED HANGUL SIOS A - 0xA9C6: 0x3215, //PARENTHESIZED HANGUL IEUNG A - 0xA9C7: 0x3216, //PARENTHESIZED HANGUL CIEUC A - 0xA9C8: 0x3217, //PARENTHESIZED HANGUL CHIEUCH A - 0xA9C9: 0x3218, //PARENTHESIZED HANGUL KHIEUKH A - 0xA9CA: 0x3219, //PARENTHESIZED HANGUL THIEUTH A - 0xA9CB: 0x321A, //PARENTHESIZED HANGUL PHIEUPH A - 0xA9CC: 0x321B, //PARENTHESIZED HANGUL HIEUH A - 0xA9CD: 0x249C, //PARENTHESIZED LATIN SMALL LETTER A - 0xA9CE: 0x249D, //PARENTHESIZED LATIN SMALL LETTER B - 0xA9CF: 0x249E, //PARENTHESIZED LATIN SMALL LETTER C - 0xA9D0: 0x249F, //PARENTHESIZED LATIN SMALL LETTER D - 0xA9D1: 0x24A0, //PARENTHESIZED LATIN SMALL LETTER E - 0xA9D2: 0x24A1, //PARENTHESIZED LATIN SMALL LETTER F - 0xA9D3: 0x24A2, //PARENTHESIZED LATIN SMALL LETTER G - 0xA9D4: 0x24A3, //PARENTHESIZED LATIN SMALL LETTER H - 0xA9D5: 0x24A4, //PARENTHESIZED LATIN SMALL LETTER I - 0xA9D6: 0x24A5, //PARENTHESIZED LATIN SMALL LETTER J - 0xA9D7: 0x24A6, //PARENTHESIZED LATIN SMALL LETTER K - 0xA9D8: 0x24A7, //PARENTHESIZED LATIN SMALL LETTER L - 0xA9D9: 0x24A8, //PARENTHESIZED LATIN SMALL LETTER M - 0xA9DA: 0x24A9, //PARENTHESIZED LATIN SMALL LETTER N - 0xA9DB: 0x24AA, //PARENTHESIZED LATIN SMALL LETTER O - 0xA9DC: 0x24AB, //PARENTHESIZED LATIN SMALL LETTER P - 0xA9DD: 0x24AC, //PARENTHESIZED LATIN SMALL LETTER Q - 0xA9DE: 0x24AD, //PARENTHESIZED LATIN SMALL LETTER R - 0xA9DF: 0x24AE, //PARENTHESIZED LATIN SMALL LETTER S - 0xA9E0: 0x24AF, //PARENTHESIZED LATIN SMALL LETTER T - 0xA9E1: 0x24B0, //PARENTHESIZED LATIN SMALL LETTER U - 0xA9E2: 0x24B1, //PARENTHESIZED LATIN SMALL LETTER V - 0xA9E3: 0x24B2, //PARENTHESIZED LATIN SMALL LETTER W - 0xA9E4: 0x24B3, //PARENTHESIZED LATIN SMALL LETTER X - 0xA9E5: 0x24B4, //PARENTHESIZED LATIN SMALL LETTER Y - 0xA9E6: 0x24B5, //PARENTHESIZED LATIN SMALL LETTER Z - 0xA9E7: 0x2474, //PARENTHESIZED DIGIT ONE - 0xA9E8: 0x2475, //PARENTHESIZED DIGIT TWO - 0xA9E9: 0x2476, //PARENTHESIZED DIGIT THREE - 0xA9EA: 0x2477, //PARENTHESIZED DIGIT FOUR - 0xA9EB: 0x2478, //PARENTHESIZED DIGIT FIVE - 0xA9EC: 0x2479, //PARENTHESIZED DIGIT SIX - 0xA9ED: 0x247A, //PARENTHESIZED DIGIT SEVEN - 0xA9EE: 0x247B, //PARENTHESIZED DIGIT EIGHT - 0xA9EF: 0x247C, //PARENTHESIZED DIGIT NINE - 0xA9F0: 0x247D, //PARENTHESIZED NUMBER TEN - 0xA9F1: 0x247E, //PARENTHESIZED NUMBER ELEVEN - 0xA9F2: 0x247F, //PARENTHESIZED NUMBER TWELVE - 0xA9F3: 0x2480, //PARENTHESIZED NUMBER THIRTEEN - 0xA9F4: 0x2481, //PARENTHESIZED NUMBER FOURTEEN - 0xA9F5: 0x2482, //PARENTHESIZED NUMBER FIFTEEN - 0xA9F6: 0x00B9, //SUPERSCRIPT ONE - 0xA9F7: 0x00B2, //SUPERSCRIPT TWO - 0xA9F8: 0x00B3, //SUPERSCRIPT THREE - 0xA9F9: 0x2074, //SUPERSCRIPT FOUR - 0xA9FA: 0x207F, //SUPERSCRIPT LATIN SMALL LETTER N - 0xA9FB: 0x2081, //SUBSCRIPT ONE - 0xA9FC: 0x2082, //SUBSCRIPT TWO - 0xA9FD: 0x2083, //SUBSCRIPT THREE - 0xA9FE: 0x2084, //SUBSCRIPT FOUR - 0xAA41: 0xCC25, //HANGUL SYLLABLE SSANGCIEUC I THIEUTH - 0xAA42: 0xCC26, //HANGUL SYLLABLE SSANGCIEUC I PHIEUPH - 0xAA43: 0xCC2A, //HANGUL SYLLABLE CHIEUCH A SSANGKIYEOK - 0xAA44: 0xCC2B, //HANGUL SYLLABLE CHIEUCH A KIYEOKSIOS - 0xAA45: 0xCC2D, //HANGUL SYLLABLE CHIEUCH A NIEUNCIEUC - 0xAA46: 0xCC2F, //HANGUL SYLLABLE CHIEUCH A TIKEUT - 0xAA47: 0xCC31, //HANGUL SYLLABLE CHIEUCH A RIEULKIYEOK - 0xAA48: 0xCC32, //HANGUL SYLLABLE CHIEUCH A RIEULMIEUM - 0xAA49: 0xCC33, //HANGUL SYLLABLE CHIEUCH A RIEULPIEUP - 0xAA4A: 0xCC34, //HANGUL SYLLABLE CHIEUCH A RIEULSIOS - 0xAA4B: 0xCC35, //HANGUL SYLLABLE CHIEUCH A RIEULTHIEUTH - 0xAA4C: 0xCC36, //HANGUL SYLLABLE CHIEUCH A RIEULPHIEUPH - 0xAA4D: 0xCC37, //HANGUL SYLLABLE CHIEUCH A RIEULHIEUH - 0xAA4E: 0xCC3A, //HANGUL SYLLABLE CHIEUCH A PIEUPSIOS - 0xAA4F: 0xCC3F, //HANGUL SYLLABLE CHIEUCH A CHIEUCH - 0xAA50: 0xCC40, //HANGUL SYLLABLE CHIEUCH A KHIEUKH - 0xAA51: 0xCC41, //HANGUL SYLLABLE CHIEUCH A THIEUTH - 0xAA52: 0xCC42, //HANGUL SYLLABLE CHIEUCH A PHIEUPH - 0xAA53: 0xCC43, //HANGUL SYLLABLE CHIEUCH A HIEUH - 0xAA54: 0xCC46, //HANGUL SYLLABLE CHIEUCH AE SSANGKIYEOK - 0xAA55: 0xCC47, //HANGUL SYLLABLE CHIEUCH AE KIYEOKSIOS - 0xAA56: 0xCC49, //HANGUL SYLLABLE CHIEUCH AE NIEUNCIEUC - 0xAA57: 0xCC4A, //HANGUL SYLLABLE CHIEUCH AE NIEUNHIEUH - 0xAA58: 0xCC4B, //HANGUL SYLLABLE CHIEUCH AE TIKEUT - 0xAA59: 0xCC4D, //HANGUL SYLLABLE CHIEUCH AE RIEULKIYEOK - 0xAA5A: 0xCC4E, //HANGUL SYLLABLE CHIEUCH AE RIEULMIEUM - 0xAA61: 0xCC4F, //HANGUL SYLLABLE CHIEUCH AE RIEULPIEUP - 0xAA62: 0xCC50, //HANGUL SYLLABLE CHIEUCH AE RIEULSIOS - 0xAA63: 0xCC51, //HANGUL SYLLABLE CHIEUCH AE RIEULTHIEUTH - 0xAA64: 0xCC52, //HANGUL SYLLABLE CHIEUCH AE RIEULPHIEUPH - 0xAA65: 0xCC53, //HANGUL SYLLABLE CHIEUCH AE RIEULHIEUH - 0xAA66: 0xCC56, //HANGUL SYLLABLE CHIEUCH AE PIEUPSIOS - 0xAA67: 0xCC5A, //HANGUL SYLLABLE CHIEUCH AE CIEUC - 0xAA68: 0xCC5B, //HANGUL SYLLABLE CHIEUCH AE CHIEUCH - 0xAA69: 0xCC5C, //HANGUL SYLLABLE CHIEUCH AE KHIEUKH - 0xAA6A: 0xCC5D, //HANGUL SYLLABLE CHIEUCH AE THIEUTH - 0xAA6B: 0xCC5E, //HANGUL SYLLABLE CHIEUCH AE PHIEUPH - 0xAA6C: 0xCC5F, //HANGUL SYLLABLE CHIEUCH AE HIEUH - 0xAA6D: 0xCC61, //HANGUL SYLLABLE CHIEUCH YA KIYEOK - 0xAA6E: 0xCC62, //HANGUL SYLLABLE CHIEUCH YA SSANGKIYEOK - 0xAA6F: 0xCC63, //HANGUL SYLLABLE CHIEUCH YA KIYEOKSIOS - 0xAA70: 0xCC65, //HANGUL SYLLABLE CHIEUCH YA NIEUNCIEUC - 0xAA71: 0xCC67, //HANGUL SYLLABLE CHIEUCH YA TIKEUT - 0xAA72: 0xCC69, //HANGUL SYLLABLE CHIEUCH YA RIEULKIYEOK - 0xAA73: 0xCC6A, //HANGUL SYLLABLE CHIEUCH YA RIEULMIEUM - 0xAA74: 0xCC6B, //HANGUL SYLLABLE CHIEUCH YA RIEULPIEUP - 0xAA75: 0xCC6C, //HANGUL SYLLABLE CHIEUCH YA RIEULSIOS - 0xAA76: 0xCC6D, //HANGUL SYLLABLE CHIEUCH YA RIEULTHIEUTH - 0xAA77: 0xCC6E, //HANGUL SYLLABLE CHIEUCH YA RIEULPHIEUPH - 0xAA78: 0xCC6F, //HANGUL SYLLABLE CHIEUCH YA RIEULHIEUH - 0xAA79: 0xCC71, //HANGUL SYLLABLE CHIEUCH YA PIEUP - 0xAA7A: 0xCC72, //HANGUL SYLLABLE CHIEUCH YA PIEUPSIOS - 0xAA81: 0xCC73, //HANGUL SYLLABLE CHIEUCH YA SIOS - 0xAA82: 0xCC74, //HANGUL SYLLABLE CHIEUCH YA SSANGSIOS - 0xAA83: 0xCC76, //HANGUL SYLLABLE CHIEUCH YA CIEUC - 0xAA84: 0xCC77, //HANGUL SYLLABLE CHIEUCH YA CHIEUCH - 0xAA85: 0xCC78, //HANGUL SYLLABLE CHIEUCH YA KHIEUKH - 0xAA86: 0xCC79, //HANGUL SYLLABLE CHIEUCH YA THIEUTH - 0xAA87: 0xCC7A, //HANGUL SYLLABLE CHIEUCH YA PHIEUPH - 0xAA88: 0xCC7B, //HANGUL SYLLABLE CHIEUCH YA HIEUH - 0xAA89: 0xCC7C, //HANGUL SYLLABLE CHIEUCH YAE - 0xAA8A: 0xCC7D, //HANGUL SYLLABLE CHIEUCH YAE KIYEOK - 0xAA8B: 0xCC7E, //HANGUL SYLLABLE CHIEUCH YAE SSANGKIYEOK - 0xAA8C: 0xCC7F, //HANGUL SYLLABLE CHIEUCH YAE KIYEOKSIOS - 0xAA8D: 0xCC80, //HANGUL SYLLABLE CHIEUCH YAE NIEUN - 0xAA8E: 0xCC81, //HANGUL SYLLABLE CHIEUCH YAE NIEUNCIEUC - 0xAA8F: 0xCC82, //HANGUL SYLLABLE CHIEUCH YAE NIEUNHIEUH - 0xAA90: 0xCC83, //HANGUL SYLLABLE CHIEUCH YAE TIKEUT - 0xAA91: 0xCC84, //HANGUL SYLLABLE CHIEUCH YAE RIEUL - 0xAA92: 0xCC85, //HANGUL SYLLABLE CHIEUCH YAE RIEULKIYEOK - 0xAA93: 0xCC86, //HANGUL SYLLABLE CHIEUCH YAE RIEULMIEUM - 0xAA94: 0xCC87, //HANGUL SYLLABLE CHIEUCH YAE RIEULPIEUP - 0xAA95: 0xCC88, //HANGUL SYLLABLE CHIEUCH YAE RIEULSIOS - 0xAA96: 0xCC89, //HANGUL SYLLABLE CHIEUCH YAE RIEULTHIEUTH - 0xAA97: 0xCC8A, //HANGUL SYLLABLE CHIEUCH YAE RIEULPHIEUPH - 0xAA98: 0xCC8B, //HANGUL SYLLABLE CHIEUCH YAE RIEULHIEUH - 0xAA99: 0xCC8C, //HANGUL SYLLABLE CHIEUCH YAE MIEUM - 0xAA9A: 0xCC8D, //HANGUL SYLLABLE CHIEUCH YAE PIEUP - 0xAA9B: 0xCC8E, //HANGUL SYLLABLE CHIEUCH YAE PIEUPSIOS - 0xAA9C: 0xCC8F, //HANGUL SYLLABLE CHIEUCH YAE SIOS - 0xAA9D: 0xCC90, //HANGUL SYLLABLE CHIEUCH YAE SSANGSIOS - 0xAA9E: 0xCC91, //HANGUL SYLLABLE CHIEUCH YAE IEUNG - 0xAA9F: 0xCC92, //HANGUL SYLLABLE CHIEUCH YAE CIEUC - 0xAAA0: 0xCC93, //HANGUL SYLLABLE CHIEUCH YAE CHIEUCH - 0xAAA1: 0x3041, //HIRAGANA LETTER SMALL A - 0xAAA2: 0x3042, //HIRAGANA LETTER A - 0xAAA3: 0x3043, //HIRAGANA LETTER SMALL I - 0xAAA4: 0x3044, //HIRAGANA LETTER I - 0xAAA5: 0x3045, //HIRAGANA LETTER SMALL U - 0xAAA6: 0x3046, //HIRAGANA LETTER U - 0xAAA7: 0x3047, //HIRAGANA LETTER SMALL E - 0xAAA8: 0x3048, //HIRAGANA LETTER E - 0xAAA9: 0x3049, //HIRAGANA LETTER SMALL O - 0xAAAA: 0x304A, //HIRAGANA LETTER O - 0xAAAB: 0x304B, //HIRAGANA LETTER KA - 0xAAAC: 0x304C, //HIRAGANA LETTER GA - 0xAAAD: 0x304D, //HIRAGANA LETTER KI - 0xAAAE: 0x304E, //HIRAGANA LETTER GI - 0xAAAF: 0x304F, //HIRAGANA LETTER KU - 0xAAB0: 0x3050, //HIRAGANA LETTER GU - 0xAAB1: 0x3051, //HIRAGANA LETTER KE - 0xAAB2: 0x3052, //HIRAGANA LETTER GE - 0xAAB3: 0x3053, //HIRAGANA LETTER KO - 0xAAB4: 0x3054, //HIRAGANA LETTER GO - 0xAAB5: 0x3055, //HIRAGANA LETTER SA - 0xAAB6: 0x3056, //HIRAGANA LETTER ZA - 0xAAB7: 0x3057, //HIRAGANA LETTER SI - 0xAAB8: 0x3058, //HIRAGANA LETTER ZI - 0xAAB9: 0x3059, //HIRAGANA LETTER SU - 0xAABA: 0x305A, //HIRAGANA LETTER ZU - 0xAABB: 0x305B, //HIRAGANA LETTER SE - 0xAABC: 0x305C, //HIRAGANA LETTER ZE - 0xAABD: 0x305D, //HIRAGANA LETTER SO - 0xAABE: 0x305E, //HIRAGANA LETTER ZO - 0xAABF: 0x305F, //HIRAGANA LETTER TA - 0xAAC0: 0x3060, //HIRAGANA LETTER DA - 0xAAC1: 0x3061, //HIRAGANA LETTER TI - 0xAAC2: 0x3062, //HIRAGANA LETTER DI - 0xAAC3: 0x3063, //HIRAGANA LETTER SMALL TU - 0xAAC4: 0x3064, //HIRAGANA LETTER TU - 0xAAC5: 0x3065, //HIRAGANA LETTER DU - 0xAAC6: 0x3066, //HIRAGANA LETTER TE - 0xAAC7: 0x3067, //HIRAGANA LETTER DE - 0xAAC8: 0x3068, //HIRAGANA LETTER TO - 0xAAC9: 0x3069, //HIRAGANA LETTER DO - 0xAACA: 0x306A, //HIRAGANA LETTER NA - 0xAACB: 0x306B, //HIRAGANA LETTER NI - 0xAACC: 0x306C, //HIRAGANA LETTER NU - 0xAACD: 0x306D, //HIRAGANA LETTER NE - 0xAACE: 0x306E, //HIRAGANA LETTER NO - 0xAACF: 0x306F, //HIRAGANA LETTER HA - 0xAAD0: 0x3070, //HIRAGANA LETTER BA - 0xAAD1: 0x3071, //HIRAGANA LETTER PA - 0xAAD2: 0x3072, //HIRAGANA LETTER HI - 0xAAD3: 0x3073, //HIRAGANA LETTER BI - 0xAAD4: 0x3074, //HIRAGANA LETTER PI - 0xAAD5: 0x3075, //HIRAGANA LETTER HU - 0xAAD6: 0x3076, //HIRAGANA LETTER BU - 0xAAD7: 0x3077, //HIRAGANA LETTER PU - 0xAAD8: 0x3078, //HIRAGANA LETTER HE - 0xAAD9: 0x3079, //HIRAGANA LETTER BE - 0xAADA: 0x307A, //HIRAGANA LETTER PE - 0xAADB: 0x307B, //HIRAGANA LETTER HO - 0xAADC: 0x307C, //HIRAGANA LETTER BO - 0xAADD: 0x307D, //HIRAGANA LETTER PO - 0xAADE: 0x307E, //HIRAGANA LETTER MA - 0xAADF: 0x307F, //HIRAGANA LETTER MI - 0xAAE0: 0x3080, //HIRAGANA LETTER MU - 0xAAE1: 0x3081, //HIRAGANA LETTER ME - 0xAAE2: 0x3082, //HIRAGANA LETTER MO - 0xAAE3: 0x3083, //HIRAGANA LETTER SMALL YA - 0xAAE4: 0x3084, //HIRAGANA LETTER YA - 0xAAE5: 0x3085, //HIRAGANA LETTER SMALL YU - 0xAAE6: 0x3086, //HIRAGANA LETTER YU - 0xAAE7: 0x3087, //HIRAGANA LETTER SMALL YO - 0xAAE8: 0x3088, //HIRAGANA LETTER YO - 0xAAE9: 0x3089, //HIRAGANA LETTER RA - 0xAAEA: 0x308A, //HIRAGANA LETTER RI - 0xAAEB: 0x308B, //HIRAGANA LETTER RU - 0xAAEC: 0x308C, //HIRAGANA LETTER RE - 0xAAED: 0x308D, //HIRAGANA LETTER RO - 0xAAEE: 0x308E, //HIRAGANA LETTER SMALL WA - 0xAAEF: 0x308F, //HIRAGANA LETTER WA - 0xAAF0: 0x3090, //HIRAGANA LETTER WI - 0xAAF1: 0x3091, //HIRAGANA LETTER WE - 0xAAF2: 0x3092, //HIRAGANA LETTER WO - 0xAAF3: 0x3093, //HIRAGANA LETTER N - 0xAB41: 0xCC94, //HANGUL SYLLABLE CHIEUCH YAE KHIEUKH - 0xAB42: 0xCC95, //HANGUL SYLLABLE CHIEUCH YAE THIEUTH - 0xAB43: 0xCC96, //HANGUL SYLLABLE CHIEUCH YAE PHIEUPH - 0xAB44: 0xCC97, //HANGUL SYLLABLE CHIEUCH YAE HIEUH - 0xAB45: 0xCC9A, //HANGUL SYLLABLE CHIEUCH EO SSANGKIYEOK - 0xAB46: 0xCC9B, //HANGUL SYLLABLE CHIEUCH EO KIYEOKSIOS - 0xAB47: 0xCC9D, //HANGUL SYLLABLE CHIEUCH EO NIEUNCIEUC - 0xAB48: 0xCC9E, //HANGUL SYLLABLE CHIEUCH EO NIEUNHIEUH - 0xAB49: 0xCC9F, //HANGUL SYLLABLE CHIEUCH EO TIKEUT - 0xAB4A: 0xCCA1, //HANGUL SYLLABLE CHIEUCH EO RIEULKIYEOK - 0xAB4B: 0xCCA2, //HANGUL SYLLABLE CHIEUCH EO RIEULMIEUM - 0xAB4C: 0xCCA3, //HANGUL SYLLABLE CHIEUCH EO RIEULPIEUP - 0xAB4D: 0xCCA4, //HANGUL SYLLABLE CHIEUCH EO RIEULSIOS - 0xAB4E: 0xCCA5, //HANGUL SYLLABLE CHIEUCH EO RIEULTHIEUTH - 0xAB4F: 0xCCA6, //HANGUL SYLLABLE CHIEUCH EO RIEULPHIEUPH - 0xAB50: 0xCCA7, //HANGUL SYLLABLE CHIEUCH EO RIEULHIEUH - 0xAB51: 0xCCAA, //HANGUL SYLLABLE CHIEUCH EO PIEUPSIOS - 0xAB52: 0xCCAE, //HANGUL SYLLABLE CHIEUCH EO CIEUC - 0xAB53: 0xCCAF, //HANGUL SYLLABLE CHIEUCH EO CHIEUCH - 0xAB54: 0xCCB0, //HANGUL SYLLABLE CHIEUCH EO KHIEUKH - 0xAB55: 0xCCB1, //HANGUL SYLLABLE CHIEUCH EO THIEUTH - 0xAB56: 0xCCB2, //HANGUL SYLLABLE CHIEUCH EO PHIEUPH - 0xAB57: 0xCCB3, //HANGUL SYLLABLE CHIEUCH EO HIEUH - 0xAB58: 0xCCB6, //HANGUL SYLLABLE CHIEUCH E SSANGKIYEOK - 0xAB59: 0xCCB7, //HANGUL SYLLABLE CHIEUCH E KIYEOKSIOS - 0xAB5A: 0xCCB9, //HANGUL SYLLABLE CHIEUCH E NIEUNCIEUC - 0xAB61: 0xCCBA, //HANGUL SYLLABLE CHIEUCH E NIEUNHIEUH - 0xAB62: 0xCCBB, //HANGUL SYLLABLE CHIEUCH E TIKEUT - 0xAB63: 0xCCBD, //HANGUL SYLLABLE CHIEUCH E RIEULKIYEOK - 0xAB64: 0xCCBE, //HANGUL SYLLABLE CHIEUCH E RIEULMIEUM - 0xAB65: 0xCCBF, //HANGUL SYLLABLE CHIEUCH E RIEULPIEUP - 0xAB66: 0xCCC0, //HANGUL SYLLABLE CHIEUCH E RIEULSIOS - 0xAB67: 0xCCC1, //HANGUL SYLLABLE CHIEUCH E RIEULTHIEUTH - 0xAB68: 0xCCC2, //HANGUL SYLLABLE CHIEUCH E RIEULPHIEUPH - 0xAB69: 0xCCC3, //HANGUL SYLLABLE CHIEUCH E RIEULHIEUH - 0xAB6A: 0xCCC6, //HANGUL SYLLABLE CHIEUCH E PIEUPSIOS - 0xAB6B: 0xCCC8, //HANGUL SYLLABLE CHIEUCH E SSANGSIOS - 0xAB6C: 0xCCCA, //HANGUL SYLLABLE CHIEUCH E CIEUC - 0xAB6D: 0xCCCB, //HANGUL SYLLABLE CHIEUCH E CHIEUCH - 0xAB6E: 0xCCCC, //HANGUL SYLLABLE CHIEUCH E KHIEUKH - 0xAB6F: 0xCCCD, //HANGUL SYLLABLE CHIEUCH E THIEUTH - 0xAB70: 0xCCCE, //HANGUL SYLLABLE CHIEUCH E PHIEUPH - 0xAB71: 0xCCCF, //HANGUL SYLLABLE CHIEUCH E HIEUH - 0xAB72: 0xCCD1, //HANGUL SYLLABLE CHIEUCH YEO KIYEOK - 0xAB73: 0xCCD2, //HANGUL SYLLABLE CHIEUCH YEO SSANGKIYEOK - 0xAB74: 0xCCD3, //HANGUL SYLLABLE CHIEUCH YEO KIYEOKSIOS - 0xAB75: 0xCCD5, //HANGUL SYLLABLE CHIEUCH YEO NIEUNCIEUC - 0xAB76: 0xCCD6, //HANGUL SYLLABLE CHIEUCH YEO NIEUNHIEUH - 0xAB77: 0xCCD7, //HANGUL SYLLABLE CHIEUCH YEO TIKEUT - 0xAB78: 0xCCD8, //HANGUL SYLLABLE CHIEUCH YEO RIEUL - 0xAB79: 0xCCD9, //HANGUL SYLLABLE CHIEUCH YEO RIEULKIYEOK - 0xAB7A: 0xCCDA, //HANGUL SYLLABLE CHIEUCH YEO RIEULMIEUM - 0xAB81: 0xCCDB, //HANGUL SYLLABLE CHIEUCH YEO RIEULPIEUP - 0xAB82: 0xCCDC, //HANGUL SYLLABLE CHIEUCH YEO RIEULSIOS - 0xAB83: 0xCCDD, //HANGUL SYLLABLE CHIEUCH YEO RIEULTHIEUTH - 0xAB84: 0xCCDE, //HANGUL SYLLABLE CHIEUCH YEO RIEULPHIEUPH - 0xAB85: 0xCCDF, //HANGUL SYLLABLE CHIEUCH YEO RIEULHIEUH - 0xAB86: 0xCCE0, //HANGUL SYLLABLE CHIEUCH YEO MIEUM - 0xAB87: 0xCCE1, //HANGUL SYLLABLE CHIEUCH YEO PIEUP - 0xAB88: 0xCCE2, //HANGUL SYLLABLE CHIEUCH YEO PIEUPSIOS - 0xAB89: 0xCCE3, //HANGUL SYLLABLE CHIEUCH YEO SIOS - 0xAB8A: 0xCCE5, //HANGUL SYLLABLE CHIEUCH YEO IEUNG - 0xAB8B: 0xCCE6, //HANGUL SYLLABLE CHIEUCH YEO CIEUC - 0xAB8C: 0xCCE7, //HANGUL SYLLABLE CHIEUCH YEO CHIEUCH - 0xAB8D: 0xCCE8, //HANGUL SYLLABLE CHIEUCH YEO KHIEUKH - 0xAB8E: 0xCCE9, //HANGUL SYLLABLE CHIEUCH YEO THIEUTH - 0xAB8F: 0xCCEA, //HANGUL SYLLABLE CHIEUCH YEO PHIEUPH - 0xAB90: 0xCCEB, //HANGUL SYLLABLE CHIEUCH YEO HIEUH - 0xAB91: 0xCCED, //HANGUL SYLLABLE CHIEUCH YE KIYEOK - 0xAB92: 0xCCEE, //HANGUL SYLLABLE CHIEUCH YE SSANGKIYEOK - 0xAB93: 0xCCEF, //HANGUL SYLLABLE CHIEUCH YE KIYEOKSIOS - 0xAB94: 0xCCF1, //HANGUL SYLLABLE CHIEUCH YE NIEUNCIEUC - 0xAB95: 0xCCF2, //HANGUL SYLLABLE CHIEUCH YE NIEUNHIEUH - 0xAB96: 0xCCF3, //HANGUL SYLLABLE CHIEUCH YE TIKEUT - 0xAB97: 0xCCF4, //HANGUL SYLLABLE CHIEUCH YE RIEUL - 0xAB98: 0xCCF5, //HANGUL SYLLABLE CHIEUCH YE RIEULKIYEOK - 0xAB99: 0xCCF6, //HANGUL SYLLABLE CHIEUCH YE RIEULMIEUM - 0xAB9A: 0xCCF7, //HANGUL SYLLABLE CHIEUCH YE RIEULPIEUP - 0xAB9B: 0xCCF8, //HANGUL SYLLABLE CHIEUCH YE RIEULSIOS - 0xAB9C: 0xCCF9, //HANGUL SYLLABLE CHIEUCH YE RIEULTHIEUTH - 0xAB9D: 0xCCFA, //HANGUL SYLLABLE CHIEUCH YE RIEULPHIEUPH - 0xAB9E: 0xCCFB, //HANGUL SYLLABLE CHIEUCH YE RIEULHIEUH - 0xAB9F: 0xCCFC, //HANGUL SYLLABLE CHIEUCH YE MIEUM - 0xABA0: 0xCCFD, //HANGUL SYLLABLE CHIEUCH YE PIEUP - 0xABA1: 0x30A1, //KATAKANA LETTER SMALL A - 0xABA2: 0x30A2, //KATAKANA LETTER A - 0xABA3: 0x30A3, //KATAKANA LETTER SMALL I - 0xABA4: 0x30A4, //KATAKANA LETTER I - 0xABA5: 0x30A5, //KATAKANA LETTER SMALL U - 0xABA6: 0x30A6, //KATAKANA LETTER U - 0xABA7: 0x30A7, //KATAKANA LETTER SMALL E - 0xABA8: 0x30A8, //KATAKANA LETTER E - 0xABA9: 0x30A9, //KATAKANA LETTER SMALL O - 0xABAA: 0x30AA, //KATAKANA LETTER O - 0xABAB: 0x30AB, //KATAKANA LETTER KA - 0xABAC: 0x30AC, //KATAKANA LETTER GA - 0xABAD: 0x30AD, //KATAKANA LETTER KI - 0xABAE: 0x30AE, //KATAKANA LETTER GI - 0xABAF: 0x30AF, //KATAKANA LETTER KU - 0xABB0: 0x30B0, //KATAKANA LETTER GU - 0xABB1: 0x30B1, //KATAKANA LETTER KE - 0xABB2: 0x30B2, //KATAKANA LETTER GE - 0xABB3: 0x30B3, //KATAKANA LETTER KO - 0xABB4: 0x30B4, //KATAKANA LETTER GO - 0xABB5: 0x30B5, //KATAKANA LETTER SA - 0xABB6: 0x30B6, //KATAKANA LETTER ZA - 0xABB7: 0x30B7, //KATAKANA LETTER SI - 0xABB8: 0x30B8, //KATAKANA LETTER ZI - 0xABB9: 0x30B9, //KATAKANA LETTER SU - 0xABBA: 0x30BA, //KATAKANA LETTER ZU - 0xABBB: 0x30BB, //KATAKANA LETTER SE - 0xABBC: 0x30BC, //KATAKANA LETTER ZE - 0xABBD: 0x30BD, //KATAKANA LETTER SO - 0xABBE: 0x30BE, //KATAKANA LETTER ZO - 0xABBF: 0x30BF, //KATAKANA LETTER TA - 0xABC0: 0x30C0, //KATAKANA LETTER DA - 0xABC1: 0x30C1, //KATAKANA LETTER TI - 0xABC2: 0x30C2, //KATAKANA LETTER DI - 0xABC3: 0x30C3, //KATAKANA LETTER SMALL TU - 0xABC4: 0x30C4, //KATAKANA LETTER TU - 0xABC5: 0x30C5, //KATAKANA LETTER DU - 0xABC6: 0x30C6, //KATAKANA LETTER TE - 0xABC7: 0x30C7, //KATAKANA LETTER DE - 0xABC8: 0x30C8, //KATAKANA LETTER TO - 0xABC9: 0x30C9, //KATAKANA LETTER DO - 0xABCA: 0x30CA, //KATAKANA LETTER NA - 0xABCB: 0x30CB, //KATAKANA LETTER NI - 0xABCC: 0x30CC, //KATAKANA LETTER NU - 0xABCD: 0x30CD, //KATAKANA LETTER NE - 0xABCE: 0x30CE, //KATAKANA LETTER NO - 0xABCF: 0x30CF, //KATAKANA LETTER HA - 0xABD0: 0x30D0, //KATAKANA LETTER BA - 0xABD1: 0x30D1, //KATAKANA LETTER PA - 0xABD2: 0x30D2, //KATAKANA LETTER HI - 0xABD3: 0x30D3, //KATAKANA LETTER BI - 0xABD4: 0x30D4, //KATAKANA LETTER PI - 0xABD5: 0x30D5, //KATAKANA LETTER HU - 0xABD6: 0x30D6, //KATAKANA LETTER BU - 0xABD7: 0x30D7, //KATAKANA LETTER PU - 0xABD8: 0x30D8, //KATAKANA LETTER HE - 0xABD9: 0x30D9, //KATAKANA LETTER BE - 0xABDA: 0x30DA, //KATAKANA LETTER PE - 0xABDB: 0x30DB, //KATAKANA LETTER HO - 0xABDC: 0x30DC, //KATAKANA LETTER BO - 0xABDD: 0x30DD, //KATAKANA LETTER PO - 0xABDE: 0x30DE, //KATAKANA LETTER MA - 0xABDF: 0x30DF, //KATAKANA LETTER MI - 0xABE0: 0x30E0, //KATAKANA LETTER MU - 0xABE1: 0x30E1, //KATAKANA LETTER ME - 0xABE2: 0x30E2, //KATAKANA LETTER MO - 0xABE3: 0x30E3, //KATAKANA LETTER SMALL YA - 0xABE4: 0x30E4, //KATAKANA LETTER YA - 0xABE5: 0x30E5, //KATAKANA LETTER SMALL YU - 0xABE6: 0x30E6, //KATAKANA LETTER YU - 0xABE7: 0x30E7, //KATAKANA LETTER SMALL YO - 0xABE8: 0x30E8, //KATAKANA LETTER YO - 0xABE9: 0x30E9, //KATAKANA LETTER RA - 0xABEA: 0x30EA, //KATAKANA LETTER RI - 0xABEB: 0x30EB, //KATAKANA LETTER RU - 0xABEC: 0x30EC, //KATAKANA LETTER RE - 0xABED: 0x30ED, //KATAKANA LETTER RO - 0xABEE: 0x30EE, //KATAKANA LETTER SMALL WA - 0xABEF: 0x30EF, //KATAKANA LETTER WA - 0xABF0: 0x30F0, //KATAKANA LETTER WI - 0xABF1: 0x30F1, //KATAKANA LETTER WE - 0xABF2: 0x30F2, //KATAKANA LETTER WO - 0xABF3: 0x30F3, //KATAKANA LETTER N - 0xABF4: 0x30F4, //KATAKANA LETTER VU - 0xABF5: 0x30F5, //KATAKANA LETTER SMALL KA - 0xABF6: 0x30F6, //KATAKANA LETTER SMALL KE - 0xAC41: 0xCCFE, //HANGUL SYLLABLE CHIEUCH YE PIEUPSIOS - 0xAC42: 0xCCFF, //HANGUL SYLLABLE CHIEUCH YE SIOS - 0xAC43: 0xCD00, //HANGUL SYLLABLE CHIEUCH YE SSANGSIOS - 0xAC44: 0xCD02, //HANGUL SYLLABLE CHIEUCH YE CIEUC - 0xAC45: 0xCD03, //HANGUL SYLLABLE CHIEUCH YE CHIEUCH - 0xAC46: 0xCD04, //HANGUL SYLLABLE CHIEUCH YE KHIEUKH - 0xAC47: 0xCD05, //HANGUL SYLLABLE CHIEUCH YE THIEUTH - 0xAC48: 0xCD06, //HANGUL SYLLABLE CHIEUCH YE PHIEUPH - 0xAC49: 0xCD07, //HANGUL SYLLABLE CHIEUCH YE HIEUH - 0xAC4A: 0xCD0A, //HANGUL SYLLABLE CHIEUCH O SSANGKIYEOK - 0xAC4B: 0xCD0B, //HANGUL SYLLABLE CHIEUCH O KIYEOKSIOS - 0xAC4C: 0xCD0D, //HANGUL SYLLABLE CHIEUCH O NIEUNCIEUC - 0xAC4D: 0xCD0E, //HANGUL SYLLABLE CHIEUCH O NIEUNHIEUH - 0xAC4E: 0xCD0F, //HANGUL SYLLABLE CHIEUCH O TIKEUT - 0xAC4F: 0xCD11, //HANGUL SYLLABLE CHIEUCH O RIEULKIYEOK - 0xAC50: 0xCD12, //HANGUL SYLLABLE CHIEUCH O RIEULMIEUM - 0xAC51: 0xCD13, //HANGUL SYLLABLE CHIEUCH O RIEULPIEUP - 0xAC52: 0xCD14, //HANGUL SYLLABLE CHIEUCH O RIEULSIOS - 0xAC53: 0xCD15, //HANGUL SYLLABLE CHIEUCH O RIEULTHIEUTH - 0xAC54: 0xCD16, //HANGUL SYLLABLE CHIEUCH O RIEULPHIEUPH - 0xAC55: 0xCD17, //HANGUL SYLLABLE CHIEUCH O RIEULHIEUH - 0xAC56: 0xCD1A, //HANGUL SYLLABLE CHIEUCH O PIEUPSIOS - 0xAC57: 0xCD1C, //HANGUL SYLLABLE CHIEUCH O SSANGSIOS - 0xAC58: 0xCD1E, //HANGUL SYLLABLE CHIEUCH O CIEUC - 0xAC59: 0xCD1F, //HANGUL SYLLABLE CHIEUCH O CHIEUCH - 0xAC5A: 0xCD20, //HANGUL SYLLABLE CHIEUCH O KHIEUKH - 0xAC61: 0xCD21, //HANGUL SYLLABLE CHIEUCH O THIEUTH - 0xAC62: 0xCD22, //HANGUL SYLLABLE CHIEUCH O PHIEUPH - 0xAC63: 0xCD23, //HANGUL SYLLABLE CHIEUCH O HIEUH - 0xAC64: 0xCD25, //HANGUL SYLLABLE CHIEUCH WA KIYEOK - 0xAC65: 0xCD26, //HANGUL SYLLABLE CHIEUCH WA SSANGKIYEOK - 0xAC66: 0xCD27, //HANGUL SYLLABLE CHIEUCH WA KIYEOKSIOS - 0xAC67: 0xCD29, //HANGUL SYLLABLE CHIEUCH WA NIEUNCIEUC - 0xAC68: 0xCD2A, //HANGUL SYLLABLE CHIEUCH WA NIEUNHIEUH - 0xAC69: 0xCD2B, //HANGUL SYLLABLE CHIEUCH WA TIKEUT - 0xAC6A: 0xCD2D, //HANGUL SYLLABLE CHIEUCH WA RIEULKIYEOK - 0xAC6B: 0xCD2E, //HANGUL SYLLABLE CHIEUCH WA RIEULMIEUM - 0xAC6C: 0xCD2F, //HANGUL SYLLABLE CHIEUCH WA RIEULPIEUP - 0xAC6D: 0xCD30, //HANGUL SYLLABLE CHIEUCH WA RIEULSIOS - 0xAC6E: 0xCD31, //HANGUL SYLLABLE CHIEUCH WA RIEULTHIEUTH - 0xAC6F: 0xCD32, //HANGUL SYLLABLE CHIEUCH WA RIEULPHIEUPH - 0xAC70: 0xCD33, //HANGUL SYLLABLE CHIEUCH WA RIEULHIEUH - 0xAC71: 0xCD34, //HANGUL SYLLABLE CHIEUCH WA MIEUM - 0xAC72: 0xCD35, //HANGUL SYLLABLE CHIEUCH WA PIEUP - 0xAC73: 0xCD36, //HANGUL SYLLABLE CHIEUCH WA PIEUPSIOS - 0xAC74: 0xCD37, //HANGUL SYLLABLE CHIEUCH WA SIOS - 0xAC75: 0xCD38, //HANGUL SYLLABLE CHIEUCH WA SSANGSIOS - 0xAC76: 0xCD3A, //HANGUL SYLLABLE CHIEUCH WA CIEUC - 0xAC77: 0xCD3B, //HANGUL SYLLABLE CHIEUCH WA CHIEUCH - 0xAC78: 0xCD3C, //HANGUL SYLLABLE CHIEUCH WA KHIEUKH - 0xAC79: 0xCD3D, //HANGUL SYLLABLE CHIEUCH WA THIEUTH - 0xAC7A: 0xCD3E, //HANGUL SYLLABLE CHIEUCH WA PHIEUPH - 0xAC81: 0xCD3F, //HANGUL SYLLABLE CHIEUCH WA HIEUH - 0xAC82: 0xCD40, //HANGUL SYLLABLE CHIEUCH WAE - 0xAC83: 0xCD41, //HANGUL SYLLABLE CHIEUCH WAE KIYEOK - 0xAC84: 0xCD42, //HANGUL SYLLABLE CHIEUCH WAE SSANGKIYEOK - 0xAC85: 0xCD43, //HANGUL SYLLABLE CHIEUCH WAE KIYEOKSIOS - 0xAC86: 0xCD44, //HANGUL SYLLABLE CHIEUCH WAE NIEUN - 0xAC87: 0xCD45, //HANGUL SYLLABLE CHIEUCH WAE NIEUNCIEUC - 0xAC88: 0xCD46, //HANGUL SYLLABLE CHIEUCH WAE NIEUNHIEUH - 0xAC89: 0xCD47, //HANGUL SYLLABLE CHIEUCH WAE TIKEUT - 0xAC8A: 0xCD48, //HANGUL SYLLABLE CHIEUCH WAE RIEUL - 0xAC8B: 0xCD49, //HANGUL SYLLABLE CHIEUCH WAE RIEULKIYEOK - 0xAC8C: 0xCD4A, //HANGUL SYLLABLE CHIEUCH WAE RIEULMIEUM - 0xAC8D: 0xCD4B, //HANGUL SYLLABLE CHIEUCH WAE RIEULPIEUP - 0xAC8E: 0xCD4C, //HANGUL SYLLABLE CHIEUCH WAE RIEULSIOS - 0xAC8F: 0xCD4D, //HANGUL SYLLABLE CHIEUCH WAE RIEULTHIEUTH - 0xAC90: 0xCD4E, //HANGUL SYLLABLE CHIEUCH WAE RIEULPHIEUPH - 0xAC91: 0xCD4F, //HANGUL SYLLABLE CHIEUCH WAE RIEULHIEUH - 0xAC92: 0xCD50, //HANGUL SYLLABLE CHIEUCH WAE MIEUM - 0xAC93: 0xCD51, //HANGUL SYLLABLE CHIEUCH WAE PIEUP - 0xAC94: 0xCD52, //HANGUL SYLLABLE CHIEUCH WAE PIEUPSIOS - 0xAC95: 0xCD53, //HANGUL SYLLABLE CHIEUCH WAE SIOS - 0xAC96: 0xCD54, //HANGUL SYLLABLE CHIEUCH WAE SSANGSIOS - 0xAC97: 0xCD55, //HANGUL SYLLABLE CHIEUCH WAE IEUNG - 0xAC98: 0xCD56, //HANGUL SYLLABLE CHIEUCH WAE CIEUC - 0xAC99: 0xCD57, //HANGUL SYLLABLE CHIEUCH WAE CHIEUCH - 0xAC9A: 0xCD58, //HANGUL SYLLABLE CHIEUCH WAE KHIEUKH - 0xAC9B: 0xCD59, //HANGUL SYLLABLE CHIEUCH WAE THIEUTH - 0xAC9C: 0xCD5A, //HANGUL SYLLABLE CHIEUCH WAE PHIEUPH - 0xAC9D: 0xCD5B, //HANGUL SYLLABLE CHIEUCH WAE HIEUH - 0xAC9E: 0xCD5D, //HANGUL SYLLABLE CHIEUCH OE KIYEOK - 0xAC9F: 0xCD5E, //HANGUL SYLLABLE CHIEUCH OE SSANGKIYEOK - 0xACA0: 0xCD5F, //HANGUL SYLLABLE CHIEUCH OE KIYEOKSIOS - 0xACA1: 0x0410, //CYRILLIC CAPITAL LETTER A - 0xACA2: 0x0411, //CYRILLIC CAPITAL LETTER BE - 0xACA3: 0x0412, //CYRILLIC CAPITAL LETTER VE - 0xACA4: 0x0413, //CYRILLIC CAPITAL LETTER GHE - 0xACA5: 0x0414, //CYRILLIC CAPITAL LETTER DE - 0xACA6: 0x0415, //CYRILLIC CAPITAL LETTER IE - 0xACA7: 0x0401, //CYRILLIC CAPITAL LETTER IO - 0xACA8: 0x0416, //CYRILLIC CAPITAL LETTER ZHE - 0xACA9: 0x0417, //CYRILLIC CAPITAL LETTER ZE - 0xACAA: 0x0418, //CYRILLIC CAPITAL LETTER I - 0xACAB: 0x0419, //CYRILLIC CAPITAL LETTER SHORT I - 0xACAC: 0x041A, //CYRILLIC CAPITAL LETTER KA - 0xACAD: 0x041B, //CYRILLIC CAPITAL LETTER EL - 0xACAE: 0x041C, //CYRILLIC CAPITAL LETTER EM - 0xACAF: 0x041D, //CYRILLIC CAPITAL LETTER EN - 0xACB0: 0x041E, //CYRILLIC CAPITAL LETTER O - 0xACB1: 0x041F, //CYRILLIC CAPITAL LETTER PE - 0xACB2: 0x0420, //CYRILLIC CAPITAL LETTER ER - 0xACB3: 0x0421, //CYRILLIC CAPITAL LETTER ES - 0xACB4: 0x0422, //CYRILLIC CAPITAL LETTER TE - 0xACB5: 0x0423, //CYRILLIC CAPITAL LETTER U - 0xACB6: 0x0424, //CYRILLIC CAPITAL LETTER EF - 0xACB7: 0x0425, //CYRILLIC CAPITAL LETTER HA - 0xACB8: 0x0426, //CYRILLIC CAPITAL LETTER TSE - 0xACB9: 0x0427, //CYRILLIC CAPITAL LETTER CHE - 0xACBA: 0x0428, //CYRILLIC CAPITAL LETTER SHA - 0xACBB: 0x0429, //CYRILLIC CAPITAL LETTER SHCHA - 0xACBC: 0x042A, //CYRILLIC CAPITAL LETTER HARD SIGN - 0xACBD: 0x042B, //CYRILLIC CAPITAL LETTER YERU - 0xACBE: 0x042C, //CYRILLIC CAPITAL LETTER SOFT SIGN - 0xACBF: 0x042D, //CYRILLIC CAPITAL LETTER E - 0xACC0: 0x042E, //CYRILLIC CAPITAL LETTER YU - 0xACC1: 0x042F, //CYRILLIC CAPITAL LETTER YA - 0xACD1: 0x0430, //CYRILLIC SMALL LETTER A - 0xACD2: 0x0431, //CYRILLIC SMALL LETTER BE - 0xACD3: 0x0432, //CYRILLIC SMALL LETTER VE - 0xACD4: 0x0433, //CYRILLIC SMALL LETTER GHE - 0xACD5: 0x0434, //CYRILLIC SMALL LETTER DE - 0xACD6: 0x0435, //CYRILLIC SMALL LETTER IE - 0xACD7: 0x0451, //CYRILLIC SMALL LETTER IO - 0xACD8: 0x0436, //CYRILLIC SMALL LETTER ZHE - 0xACD9: 0x0437, //CYRILLIC SMALL LETTER ZE - 0xACDA: 0x0438, //CYRILLIC SMALL LETTER I - 0xACDB: 0x0439, //CYRILLIC SMALL LETTER SHORT I - 0xACDC: 0x043A, //CYRILLIC SMALL LETTER KA - 0xACDD: 0x043B, //CYRILLIC SMALL LETTER EL - 0xACDE: 0x043C, //CYRILLIC SMALL LETTER EM - 0xACDF: 0x043D, //CYRILLIC SMALL LETTER EN - 0xACE0: 0x043E, //CYRILLIC SMALL LETTER O - 0xACE1: 0x043F, //CYRILLIC SMALL LETTER PE - 0xACE2: 0x0440, //CYRILLIC SMALL LETTER ER - 0xACE3: 0x0441, //CYRILLIC SMALL LETTER ES - 0xACE4: 0x0442, //CYRILLIC SMALL LETTER TE - 0xACE5: 0x0443, //CYRILLIC SMALL LETTER U - 0xACE6: 0x0444, //CYRILLIC SMALL LETTER EF - 0xACE7: 0x0445, //CYRILLIC SMALL LETTER HA - 0xACE8: 0x0446, //CYRILLIC SMALL LETTER TSE - 0xACE9: 0x0447, //CYRILLIC SMALL LETTER CHE - 0xACEA: 0x0448, //CYRILLIC SMALL LETTER SHA - 0xACEB: 0x0449, //CYRILLIC SMALL LETTER SHCHA - 0xACEC: 0x044A, //CYRILLIC SMALL LETTER HARD SIGN - 0xACED: 0x044B, //CYRILLIC SMALL LETTER YERU - 0xACEE: 0x044C, //CYRILLIC SMALL LETTER SOFT SIGN - 0xACEF: 0x044D, //CYRILLIC SMALL LETTER E - 0xACF0: 0x044E, //CYRILLIC SMALL LETTER YU - 0xACF1: 0x044F, //CYRILLIC SMALL LETTER YA - 0xAD41: 0xCD61, //HANGUL SYLLABLE CHIEUCH OE NIEUNCIEUC - 0xAD42: 0xCD62, //HANGUL SYLLABLE CHIEUCH OE NIEUNHIEUH - 0xAD43: 0xCD63, //HANGUL SYLLABLE CHIEUCH OE TIKEUT - 0xAD44: 0xCD65, //HANGUL SYLLABLE CHIEUCH OE RIEULKIYEOK - 0xAD45: 0xCD66, //HANGUL SYLLABLE CHIEUCH OE RIEULMIEUM - 0xAD46: 0xCD67, //HANGUL SYLLABLE CHIEUCH OE RIEULPIEUP - 0xAD47: 0xCD68, //HANGUL SYLLABLE CHIEUCH OE RIEULSIOS - 0xAD48: 0xCD69, //HANGUL SYLLABLE CHIEUCH OE RIEULTHIEUTH - 0xAD49: 0xCD6A, //HANGUL SYLLABLE CHIEUCH OE RIEULPHIEUPH - 0xAD4A: 0xCD6B, //HANGUL SYLLABLE CHIEUCH OE RIEULHIEUH - 0xAD4B: 0xCD6E, //HANGUL SYLLABLE CHIEUCH OE PIEUPSIOS - 0xAD4C: 0xCD70, //HANGUL SYLLABLE CHIEUCH OE SSANGSIOS - 0xAD4D: 0xCD72, //HANGUL SYLLABLE CHIEUCH OE CIEUC - 0xAD4E: 0xCD73, //HANGUL SYLLABLE CHIEUCH OE CHIEUCH - 0xAD4F: 0xCD74, //HANGUL SYLLABLE CHIEUCH OE KHIEUKH - 0xAD50: 0xCD75, //HANGUL SYLLABLE CHIEUCH OE THIEUTH - 0xAD51: 0xCD76, //HANGUL SYLLABLE CHIEUCH OE PHIEUPH - 0xAD52: 0xCD77, //HANGUL SYLLABLE CHIEUCH OE HIEUH - 0xAD53: 0xCD79, //HANGUL SYLLABLE CHIEUCH YO KIYEOK - 0xAD54: 0xCD7A, //HANGUL SYLLABLE CHIEUCH YO SSANGKIYEOK - 0xAD55: 0xCD7B, //HANGUL SYLLABLE CHIEUCH YO KIYEOKSIOS - 0xAD56: 0xCD7C, //HANGUL SYLLABLE CHIEUCH YO NIEUN - 0xAD57: 0xCD7D, //HANGUL SYLLABLE CHIEUCH YO NIEUNCIEUC - 0xAD58: 0xCD7E, //HANGUL SYLLABLE CHIEUCH YO NIEUNHIEUH - 0xAD59: 0xCD7F, //HANGUL SYLLABLE CHIEUCH YO TIKEUT - 0xAD5A: 0xCD80, //HANGUL SYLLABLE CHIEUCH YO RIEUL - 0xAD61: 0xCD81, //HANGUL SYLLABLE CHIEUCH YO RIEULKIYEOK - 0xAD62: 0xCD82, //HANGUL SYLLABLE CHIEUCH YO RIEULMIEUM - 0xAD63: 0xCD83, //HANGUL SYLLABLE CHIEUCH YO RIEULPIEUP - 0xAD64: 0xCD84, //HANGUL SYLLABLE CHIEUCH YO RIEULSIOS - 0xAD65: 0xCD85, //HANGUL SYLLABLE CHIEUCH YO RIEULTHIEUTH - 0xAD66: 0xCD86, //HANGUL SYLLABLE CHIEUCH YO RIEULPHIEUPH - 0xAD67: 0xCD87, //HANGUL SYLLABLE CHIEUCH YO RIEULHIEUH - 0xAD68: 0xCD89, //HANGUL SYLLABLE CHIEUCH YO PIEUP - 0xAD69: 0xCD8A, //HANGUL SYLLABLE CHIEUCH YO PIEUPSIOS - 0xAD6A: 0xCD8B, //HANGUL SYLLABLE CHIEUCH YO SIOS - 0xAD6B: 0xCD8C, //HANGUL SYLLABLE CHIEUCH YO SSANGSIOS - 0xAD6C: 0xCD8D, //HANGUL SYLLABLE CHIEUCH YO IEUNG - 0xAD6D: 0xCD8E, //HANGUL SYLLABLE CHIEUCH YO CIEUC - 0xAD6E: 0xCD8F, //HANGUL SYLLABLE CHIEUCH YO CHIEUCH - 0xAD6F: 0xCD90, //HANGUL SYLLABLE CHIEUCH YO KHIEUKH - 0xAD70: 0xCD91, //HANGUL SYLLABLE CHIEUCH YO THIEUTH - 0xAD71: 0xCD92, //HANGUL SYLLABLE CHIEUCH YO PHIEUPH - 0xAD72: 0xCD93, //HANGUL SYLLABLE CHIEUCH YO HIEUH - 0xAD73: 0xCD96, //HANGUL SYLLABLE CHIEUCH U SSANGKIYEOK - 0xAD74: 0xCD97, //HANGUL SYLLABLE CHIEUCH U KIYEOKSIOS - 0xAD75: 0xCD99, //HANGUL SYLLABLE CHIEUCH U NIEUNCIEUC - 0xAD76: 0xCD9A, //HANGUL SYLLABLE CHIEUCH U NIEUNHIEUH - 0xAD77: 0xCD9B, //HANGUL SYLLABLE CHIEUCH U TIKEUT - 0xAD78: 0xCD9D, //HANGUL SYLLABLE CHIEUCH U RIEULKIYEOK - 0xAD79: 0xCD9E, //HANGUL SYLLABLE CHIEUCH U RIEULMIEUM - 0xAD7A: 0xCD9F, //HANGUL SYLLABLE CHIEUCH U RIEULPIEUP - 0xAD81: 0xCDA0, //HANGUL SYLLABLE CHIEUCH U RIEULSIOS - 0xAD82: 0xCDA1, //HANGUL SYLLABLE CHIEUCH U RIEULTHIEUTH - 0xAD83: 0xCDA2, //HANGUL SYLLABLE CHIEUCH U RIEULPHIEUPH - 0xAD84: 0xCDA3, //HANGUL SYLLABLE CHIEUCH U RIEULHIEUH - 0xAD85: 0xCDA6, //HANGUL SYLLABLE CHIEUCH U PIEUPSIOS - 0xAD86: 0xCDA8, //HANGUL SYLLABLE CHIEUCH U SSANGSIOS - 0xAD87: 0xCDAA, //HANGUL SYLLABLE CHIEUCH U CIEUC - 0xAD88: 0xCDAB, //HANGUL SYLLABLE CHIEUCH U CHIEUCH - 0xAD89: 0xCDAC, //HANGUL SYLLABLE CHIEUCH U KHIEUKH - 0xAD8A: 0xCDAD, //HANGUL SYLLABLE CHIEUCH U THIEUTH - 0xAD8B: 0xCDAE, //HANGUL SYLLABLE CHIEUCH U PHIEUPH - 0xAD8C: 0xCDAF, //HANGUL SYLLABLE CHIEUCH U HIEUH - 0xAD8D: 0xCDB1, //HANGUL SYLLABLE CHIEUCH WEO KIYEOK - 0xAD8E: 0xCDB2, //HANGUL SYLLABLE CHIEUCH WEO SSANGKIYEOK - 0xAD8F: 0xCDB3, //HANGUL SYLLABLE CHIEUCH WEO KIYEOKSIOS - 0xAD90: 0xCDB4, //HANGUL SYLLABLE CHIEUCH WEO NIEUN - 0xAD91: 0xCDB5, //HANGUL SYLLABLE CHIEUCH WEO NIEUNCIEUC - 0xAD92: 0xCDB6, //HANGUL SYLLABLE CHIEUCH WEO NIEUNHIEUH - 0xAD93: 0xCDB7, //HANGUL SYLLABLE CHIEUCH WEO TIKEUT - 0xAD94: 0xCDB8, //HANGUL SYLLABLE CHIEUCH WEO RIEUL - 0xAD95: 0xCDB9, //HANGUL SYLLABLE CHIEUCH WEO RIEULKIYEOK - 0xAD96: 0xCDBA, //HANGUL SYLLABLE CHIEUCH WEO RIEULMIEUM - 0xAD97: 0xCDBB, //HANGUL SYLLABLE CHIEUCH WEO RIEULPIEUP - 0xAD98: 0xCDBC, //HANGUL SYLLABLE CHIEUCH WEO RIEULSIOS - 0xAD99: 0xCDBD, //HANGUL SYLLABLE CHIEUCH WEO RIEULTHIEUTH - 0xAD9A: 0xCDBE, //HANGUL SYLLABLE CHIEUCH WEO RIEULPHIEUPH - 0xAD9B: 0xCDBF, //HANGUL SYLLABLE CHIEUCH WEO RIEULHIEUH - 0xAD9C: 0xCDC0, //HANGUL SYLLABLE CHIEUCH WEO MIEUM - 0xAD9D: 0xCDC1, //HANGUL SYLLABLE CHIEUCH WEO PIEUP - 0xAD9E: 0xCDC2, //HANGUL SYLLABLE CHIEUCH WEO PIEUPSIOS - 0xAD9F: 0xCDC3, //HANGUL SYLLABLE CHIEUCH WEO SIOS - 0xADA0: 0xCDC5, //HANGUL SYLLABLE CHIEUCH WEO IEUNG - 0xAE41: 0xCDC6, //HANGUL SYLLABLE CHIEUCH WEO CIEUC - 0xAE42: 0xCDC7, //HANGUL SYLLABLE CHIEUCH WEO CHIEUCH - 0xAE43: 0xCDC8, //HANGUL SYLLABLE CHIEUCH WEO KHIEUKH - 0xAE44: 0xCDC9, //HANGUL SYLLABLE CHIEUCH WEO THIEUTH - 0xAE45: 0xCDCA, //HANGUL SYLLABLE CHIEUCH WEO PHIEUPH - 0xAE46: 0xCDCB, //HANGUL SYLLABLE CHIEUCH WEO HIEUH - 0xAE47: 0xCDCD, //HANGUL SYLLABLE CHIEUCH WE KIYEOK - 0xAE48: 0xCDCE, //HANGUL SYLLABLE CHIEUCH WE SSANGKIYEOK - 0xAE49: 0xCDCF, //HANGUL SYLLABLE CHIEUCH WE KIYEOKSIOS - 0xAE4A: 0xCDD1, //HANGUL SYLLABLE CHIEUCH WE NIEUNCIEUC - 0xAE4B: 0xCDD2, //HANGUL SYLLABLE CHIEUCH WE NIEUNHIEUH - 0xAE4C: 0xCDD3, //HANGUL SYLLABLE CHIEUCH WE TIKEUT - 0xAE4D: 0xCDD4, //HANGUL SYLLABLE CHIEUCH WE RIEUL - 0xAE4E: 0xCDD5, //HANGUL SYLLABLE CHIEUCH WE RIEULKIYEOK - 0xAE4F: 0xCDD6, //HANGUL SYLLABLE CHIEUCH WE RIEULMIEUM - 0xAE50: 0xCDD7, //HANGUL SYLLABLE CHIEUCH WE RIEULPIEUP - 0xAE51: 0xCDD8, //HANGUL SYLLABLE CHIEUCH WE RIEULSIOS - 0xAE52: 0xCDD9, //HANGUL SYLLABLE CHIEUCH WE RIEULTHIEUTH - 0xAE53: 0xCDDA, //HANGUL SYLLABLE CHIEUCH WE RIEULPHIEUPH - 0xAE54: 0xCDDB, //HANGUL SYLLABLE CHIEUCH WE RIEULHIEUH - 0xAE55: 0xCDDC, //HANGUL SYLLABLE CHIEUCH WE MIEUM - 0xAE56: 0xCDDD, //HANGUL SYLLABLE CHIEUCH WE PIEUP - 0xAE57: 0xCDDE, //HANGUL SYLLABLE CHIEUCH WE PIEUPSIOS - 0xAE58: 0xCDDF, //HANGUL SYLLABLE CHIEUCH WE SIOS - 0xAE59: 0xCDE0, //HANGUL SYLLABLE CHIEUCH WE SSANGSIOS - 0xAE5A: 0xCDE1, //HANGUL SYLLABLE CHIEUCH WE IEUNG - 0xAE61: 0xCDE2, //HANGUL SYLLABLE CHIEUCH WE CIEUC - 0xAE62: 0xCDE3, //HANGUL SYLLABLE CHIEUCH WE CHIEUCH - 0xAE63: 0xCDE4, //HANGUL SYLLABLE CHIEUCH WE KHIEUKH - 0xAE64: 0xCDE5, //HANGUL SYLLABLE CHIEUCH WE THIEUTH - 0xAE65: 0xCDE6, //HANGUL SYLLABLE CHIEUCH WE PHIEUPH - 0xAE66: 0xCDE7, //HANGUL SYLLABLE CHIEUCH WE HIEUH - 0xAE67: 0xCDE9, //HANGUL SYLLABLE CHIEUCH WI KIYEOK - 0xAE68: 0xCDEA, //HANGUL SYLLABLE CHIEUCH WI SSANGKIYEOK - 0xAE69: 0xCDEB, //HANGUL SYLLABLE CHIEUCH WI KIYEOKSIOS - 0xAE6A: 0xCDED, //HANGUL SYLLABLE CHIEUCH WI NIEUNCIEUC - 0xAE6B: 0xCDEE, //HANGUL SYLLABLE CHIEUCH WI NIEUNHIEUH - 0xAE6C: 0xCDEF, //HANGUL SYLLABLE CHIEUCH WI TIKEUT - 0xAE6D: 0xCDF1, //HANGUL SYLLABLE CHIEUCH WI RIEULKIYEOK - 0xAE6E: 0xCDF2, //HANGUL SYLLABLE CHIEUCH WI RIEULMIEUM - 0xAE6F: 0xCDF3, //HANGUL SYLLABLE CHIEUCH WI RIEULPIEUP - 0xAE70: 0xCDF4, //HANGUL SYLLABLE CHIEUCH WI RIEULSIOS - 0xAE71: 0xCDF5, //HANGUL SYLLABLE CHIEUCH WI RIEULTHIEUTH - 0xAE72: 0xCDF6, //HANGUL SYLLABLE CHIEUCH WI RIEULPHIEUPH - 0xAE73: 0xCDF7, //HANGUL SYLLABLE CHIEUCH WI RIEULHIEUH - 0xAE74: 0xCDFA, //HANGUL SYLLABLE CHIEUCH WI PIEUPSIOS - 0xAE75: 0xCDFC, //HANGUL SYLLABLE CHIEUCH WI SSANGSIOS - 0xAE76: 0xCDFE, //HANGUL SYLLABLE CHIEUCH WI CIEUC - 0xAE77: 0xCDFF, //HANGUL SYLLABLE CHIEUCH WI CHIEUCH - 0xAE78: 0xCE00, //HANGUL SYLLABLE CHIEUCH WI KHIEUKH - 0xAE79: 0xCE01, //HANGUL SYLLABLE CHIEUCH WI THIEUTH - 0xAE7A: 0xCE02, //HANGUL SYLLABLE CHIEUCH WI PHIEUPH - 0xAE81: 0xCE03, //HANGUL SYLLABLE CHIEUCH WI HIEUH - 0xAE82: 0xCE05, //HANGUL SYLLABLE CHIEUCH YU KIYEOK - 0xAE83: 0xCE06, //HANGUL SYLLABLE CHIEUCH YU SSANGKIYEOK - 0xAE84: 0xCE07, //HANGUL SYLLABLE CHIEUCH YU KIYEOKSIOS - 0xAE85: 0xCE09, //HANGUL SYLLABLE CHIEUCH YU NIEUNCIEUC - 0xAE86: 0xCE0A, //HANGUL SYLLABLE CHIEUCH YU NIEUNHIEUH - 0xAE87: 0xCE0B, //HANGUL SYLLABLE CHIEUCH YU TIKEUT - 0xAE88: 0xCE0D, //HANGUL SYLLABLE CHIEUCH YU RIEULKIYEOK - 0xAE89: 0xCE0E, //HANGUL SYLLABLE CHIEUCH YU RIEULMIEUM - 0xAE8A: 0xCE0F, //HANGUL SYLLABLE CHIEUCH YU RIEULPIEUP - 0xAE8B: 0xCE10, //HANGUL SYLLABLE CHIEUCH YU RIEULSIOS - 0xAE8C: 0xCE11, //HANGUL SYLLABLE CHIEUCH YU RIEULTHIEUTH - 0xAE8D: 0xCE12, //HANGUL SYLLABLE CHIEUCH YU RIEULPHIEUPH - 0xAE8E: 0xCE13, //HANGUL SYLLABLE CHIEUCH YU RIEULHIEUH - 0xAE8F: 0xCE15, //HANGUL SYLLABLE CHIEUCH YU PIEUP - 0xAE90: 0xCE16, //HANGUL SYLLABLE CHIEUCH YU PIEUPSIOS - 0xAE91: 0xCE17, //HANGUL SYLLABLE CHIEUCH YU SIOS - 0xAE92: 0xCE18, //HANGUL SYLLABLE CHIEUCH YU SSANGSIOS - 0xAE93: 0xCE1A, //HANGUL SYLLABLE CHIEUCH YU CIEUC - 0xAE94: 0xCE1B, //HANGUL SYLLABLE CHIEUCH YU CHIEUCH - 0xAE95: 0xCE1C, //HANGUL SYLLABLE CHIEUCH YU KHIEUKH - 0xAE96: 0xCE1D, //HANGUL SYLLABLE CHIEUCH YU THIEUTH - 0xAE97: 0xCE1E, //HANGUL SYLLABLE CHIEUCH YU PHIEUPH - 0xAE98: 0xCE1F, //HANGUL SYLLABLE CHIEUCH YU HIEUH - 0xAE99: 0xCE22, //HANGUL SYLLABLE CHIEUCH EU SSANGKIYEOK - 0xAE9A: 0xCE23, //HANGUL SYLLABLE CHIEUCH EU KIYEOKSIOS - 0xAE9B: 0xCE25, //HANGUL SYLLABLE CHIEUCH EU NIEUNCIEUC - 0xAE9C: 0xCE26, //HANGUL SYLLABLE CHIEUCH EU NIEUNHIEUH - 0xAE9D: 0xCE27, //HANGUL SYLLABLE CHIEUCH EU TIKEUT - 0xAE9E: 0xCE29, //HANGUL SYLLABLE CHIEUCH EU RIEULKIYEOK - 0xAE9F: 0xCE2A, //HANGUL SYLLABLE CHIEUCH EU RIEULMIEUM - 0xAEA0: 0xCE2B, //HANGUL SYLLABLE CHIEUCH EU RIEULPIEUP - 0xAF41: 0xCE2C, //HANGUL SYLLABLE CHIEUCH EU RIEULSIOS - 0xAF42: 0xCE2D, //HANGUL SYLLABLE CHIEUCH EU RIEULTHIEUTH - 0xAF43: 0xCE2E, //HANGUL SYLLABLE CHIEUCH EU RIEULPHIEUPH - 0xAF44: 0xCE2F, //HANGUL SYLLABLE CHIEUCH EU RIEULHIEUH - 0xAF45: 0xCE32, //HANGUL SYLLABLE CHIEUCH EU PIEUPSIOS - 0xAF46: 0xCE34, //HANGUL SYLLABLE CHIEUCH EU SSANGSIOS - 0xAF47: 0xCE36, //HANGUL SYLLABLE CHIEUCH EU CIEUC - 0xAF48: 0xCE37, //HANGUL SYLLABLE CHIEUCH EU CHIEUCH - 0xAF49: 0xCE38, //HANGUL SYLLABLE CHIEUCH EU KHIEUKH - 0xAF4A: 0xCE39, //HANGUL SYLLABLE CHIEUCH EU THIEUTH - 0xAF4B: 0xCE3A, //HANGUL SYLLABLE CHIEUCH EU PHIEUPH - 0xAF4C: 0xCE3B, //HANGUL SYLLABLE CHIEUCH EU HIEUH - 0xAF4D: 0xCE3C, //HANGUL SYLLABLE CHIEUCH YI - 0xAF4E: 0xCE3D, //HANGUL SYLLABLE CHIEUCH YI KIYEOK - 0xAF4F: 0xCE3E, //HANGUL SYLLABLE CHIEUCH YI SSANGKIYEOK - 0xAF50: 0xCE3F, //HANGUL SYLLABLE CHIEUCH YI KIYEOKSIOS - 0xAF51: 0xCE40, //HANGUL SYLLABLE CHIEUCH YI NIEUN - 0xAF52: 0xCE41, //HANGUL SYLLABLE CHIEUCH YI NIEUNCIEUC - 0xAF53: 0xCE42, //HANGUL SYLLABLE CHIEUCH YI NIEUNHIEUH - 0xAF54: 0xCE43, //HANGUL SYLLABLE CHIEUCH YI TIKEUT - 0xAF55: 0xCE44, //HANGUL SYLLABLE CHIEUCH YI RIEUL - 0xAF56: 0xCE45, //HANGUL SYLLABLE CHIEUCH YI RIEULKIYEOK - 0xAF57: 0xCE46, //HANGUL SYLLABLE CHIEUCH YI RIEULMIEUM - 0xAF58: 0xCE47, //HANGUL SYLLABLE CHIEUCH YI RIEULPIEUP - 0xAF59: 0xCE48, //HANGUL SYLLABLE CHIEUCH YI RIEULSIOS - 0xAF5A: 0xCE49, //HANGUL SYLLABLE CHIEUCH YI RIEULTHIEUTH - 0xAF61: 0xCE4A, //HANGUL SYLLABLE CHIEUCH YI RIEULPHIEUPH - 0xAF62: 0xCE4B, //HANGUL SYLLABLE CHIEUCH YI RIEULHIEUH - 0xAF63: 0xCE4C, //HANGUL SYLLABLE CHIEUCH YI MIEUM - 0xAF64: 0xCE4D, //HANGUL SYLLABLE CHIEUCH YI PIEUP - 0xAF65: 0xCE4E, //HANGUL SYLLABLE CHIEUCH YI PIEUPSIOS - 0xAF66: 0xCE4F, //HANGUL SYLLABLE CHIEUCH YI SIOS - 0xAF67: 0xCE50, //HANGUL SYLLABLE CHIEUCH YI SSANGSIOS - 0xAF68: 0xCE51, //HANGUL SYLLABLE CHIEUCH YI IEUNG - 0xAF69: 0xCE52, //HANGUL SYLLABLE CHIEUCH YI CIEUC - 0xAF6A: 0xCE53, //HANGUL SYLLABLE CHIEUCH YI CHIEUCH - 0xAF6B: 0xCE54, //HANGUL SYLLABLE CHIEUCH YI KHIEUKH - 0xAF6C: 0xCE55, //HANGUL SYLLABLE CHIEUCH YI THIEUTH - 0xAF6D: 0xCE56, //HANGUL SYLLABLE CHIEUCH YI PHIEUPH - 0xAF6E: 0xCE57, //HANGUL SYLLABLE CHIEUCH YI HIEUH - 0xAF6F: 0xCE5A, //HANGUL SYLLABLE CHIEUCH I SSANGKIYEOK - 0xAF70: 0xCE5B, //HANGUL SYLLABLE CHIEUCH I KIYEOKSIOS - 0xAF71: 0xCE5D, //HANGUL SYLLABLE CHIEUCH I NIEUNCIEUC - 0xAF72: 0xCE5E, //HANGUL SYLLABLE CHIEUCH I NIEUNHIEUH - 0xAF73: 0xCE62, //HANGUL SYLLABLE CHIEUCH I RIEULMIEUM - 0xAF74: 0xCE63, //HANGUL SYLLABLE CHIEUCH I RIEULPIEUP - 0xAF75: 0xCE64, //HANGUL SYLLABLE CHIEUCH I RIEULSIOS - 0xAF76: 0xCE65, //HANGUL SYLLABLE CHIEUCH I RIEULTHIEUTH - 0xAF77: 0xCE66, //HANGUL SYLLABLE CHIEUCH I RIEULPHIEUPH - 0xAF78: 0xCE67, //HANGUL SYLLABLE CHIEUCH I RIEULHIEUH - 0xAF79: 0xCE6A, //HANGUL SYLLABLE CHIEUCH I PIEUPSIOS - 0xAF7A: 0xCE6C, //HANGUL SYLLABLE CHIEUCH I SSANGSIOS - 0xAF81: 0xCE6E, //HANGUL SYLLABLE CHIEUCH I CIEUC - 0xAF82: 0xCE6F, //HANGUL SYLLABLE CHIEUCH I CHIEUCH - 0xAF83: 0xCE70, //HANGUL SYLLABLE CHIEUCH I KHIEUKH - 0xAF84: 0xCE71, //HANGUL SYLLABLE CHIEUCH I THIEUTH - 0xAF85: 0xCE72, //HANGUL SYLLABLE CHIEUCH I PHIEUPH - 0xAF86: 0xCE73, //HANGUL SYLLABLE CHIEUCH I HIEUH - 0xAF87: 0xCE76, //HANGUL SYLLABLE KHIEUKH A SSANGKIYEOK - 0xAF88: 0xCE77, //HANGUL SYLLABLE KHIEUKH A KIYEOKSIOS - 0xAF89: 0xCE79, //HANGUL SYLLABLE KHIEUKH A NIEUNCIEUC - 0xAF8A: 0xCE7A, //HANGUL SYLLABLE KHIEUKH A NIEUNHIEUH - 0xAF8B: 0xCE7B, //HANGUL SYLLABLE KHIEUKH A TIKEUT - 0xAF8C: 0xCE7D, //HANGUL SYLLABLE KHIEUKH A RIEULKIYEOK - 0xAF8D: 0xCE7E, //HANGUL SYLLABLE KHIEUKH A RIEULMIEUM - 0xAF8E: 0xCE7F, //HANGUL SYLLABLE KHIEUKH A RIEULPIEUP - 0xAF8F: 0xCE80, //HANGUL SYLLABLE KHIEUKH A RIEULSIOS - 0xAF90: 0xCE81, //HANGUL SYLLABLE KHIEUKH A RIEULTHIEUTH - 0xAF91: 0xCE82, //HANGUL SYLLABLE KHIEUKH A RIEULPHIEUPH - 0xAF92: 0xCE83, //HANGUL SYLLABLE KHIEUKH A RIEULHIEUH - 0xAF93: 0xCE86, //HANGUL SYLLABLE KHIEUKH A PIEUPSIOS - 0xAF94: 0xCE88, //HANGUL SYLLABLE KHIEUKH A SSANGSIOS - 0xAF95: 0xCE8A, //HANGUL SYLLABLE KHIEUKH A CIEUC - 0xAF96: 0xCE8B, //HANGUL SYLLABLE KHIEUKH A CHIEUCH - 0xAF97: 0xCE8C, //HANGUL SYLLABLE KHIEUKH A KHIEUKH - 0xAF98: 0xCE8D, //HANGUL SYLLABLE KHIEUKH A THIEUTH - 0xAF99: 0xCE8E, //HANGUL SYLLABLE KHIEUKH A PHIEUPH - 0xAF9A: 0xCE8F, //HANGUL SYLLABLE KHIEUKH A HIEUH - 0xAF9B: 0xCE92, //HANGUL SYLLABLE KHIEUKH AE SSANGKIYEOK - 0xAF9C: 0xCE93, //HANGUL SYLLABLE KHIEUKH AE KIYEOKSIOS - 0xAF9D: 0xCE95, //HANGUL SYLLABLE KHIEUKH AE NIEUNCIEUC - 0xAF9E: 0xCE96, //HANGUL SYLLABLE KHIEUKH AE NIEUNHIEUH - 0xAF9F: 0xCE97, //HANGUL SYLLABLE KHIEUKH AE TIKEUT - 0xAFA0: 0xCE99, //HANGUL SYLLABLE KHIEUKH AE RIEULKIYEOK - 0xB041: 0xCE9A, //HANGUL SYLLABLE KHIEUKH AE RIEULMIEUM - 0xB042: 0xCE9B, //HANGUL SYLLABLE KHIEUKH AE RIEULPIEUP - 0xB043: 0xCE9C, //HANGUL SYLLABLE KHIEUKH AE RIEULSIOS - 0xB044: 0xCE9D, //HANGUL SYLLABLE KHIEUKH AE RIEULTHIEUTH - 0xB045: 0xCE9E, //HANGUL SYLLABLE KHIEUKH AE RIEULPHIEUPH - 0xB046: 0xCE9F, //HANGUL SYLLABLE KHIEUKH AE RIEULHIEUH - 0xB047: 0xCEA2, //HANGUL SYLLABLE KHIEUKH AE PIEUPSIOS - 0xB048: 0xCEA6, //HANGUL SYLLABLE KHIEUKH AE CIEUC - 0xB049: 0xCEA7, //HANGUL SYLLABLE KHIEUKH AE CHIEUCH - 0xB04A: 0xCEA8, //HANGUL SYLLABLE KHIEUKH AE KHIEUKH - 0xB04B: 0xCEA9, //HANGUL SYLLABLE KHIEUKH AE THIEUTH - 0xB04C: 0xCEAA, //HANGUL SYLLABLE KHIEUKH AE PHIEUPH - 0xB04D: 0xCEAB, //HANGUL SYLLABLE KHIEUKH AE HIEUH - 0xB04E: 0xCEAE, //HANGUL SYLLABLE KHIEUKH YA SSANGKIYEOK - 0xB04F: 0xCEAF, //HANGUL SYLLABLE KHIEUKH YA KIYEOKSIOS - 0xB050: 0xCEB0, //HANGUL SYLLABLE KHIEUKH YA NIEUN - 0xB051: 0xCEB1, //HANGUL SYLLABLE KHIEUKH YA NIEUNCIEUC - 0xB052: 0xCEB2, //HANGUL SYLLABLE KHIEUKH YA NIEUNHIEUH - 0xB053: 0xCEB3, //HANGUL SYLLABLE KHIEUKH YA TIKEUT - 0xB054: 0xCEB4, //HANGUL SYLLABLE KHIEUKH YA RIEUL - 0xB055: 0xCEB5, //HANGUL SYLLABLE KHIEUKH YA RIEULKIYEOK - 0xB056: 0xCEB6, //HANGUL SYLLABLE KHIEUKH YA RIEULMIEUM - 0xB057: 0xCEB7, //HANGUL SYLLABLE KHIEUKH YA RIEULPIEUP - 0xB058: 0xCEB8, //HANGUL SYLLABLE KHIEUKH YA RIEULSIOS - 0xB059: 0xCEB9, //HANGUL SYLLABLE KHIEUKH YA RIEULTHIEUTH - 0xB05A: 0xCEBA, //HANGUL SYLLABLE KHIEUKH YA RIEULPHIEUPH - 0xB061: 0xCEBB, //HANGUL SYLLABLE KHIEUKH YA RIEULHIEUH - 0xB062: 0xCEBC, //HANGUL SYLLABLE KHIEUKH YA MIEUM - 0xB063: 0xCEBD, //HANGUL SYLLABLE KHIEUKH YA PIEUP - 0xB064: 0xCEBE, //HANGUL SYLLABLE KHIEUKH YA PIEUPSIOS - 0xB065: 0xCEBF, //HANGUL SYLLABLE KHIEUKH YA SIOS - 0xB066: 0xCEC0, //HANGUL SYLLABLE KHIEUKH YA SSANGSIOS - 0xB067: 0xCEC2, //HANGUL SYLLABLE KHIEUKH YA CIEUC - 0xB068: 0xCEC3, //HANGUL SYLLABLE KHIEUKH YA CHIEUCH - 0xB069: 0xCEC4, //HANGUL SYLLABLE KHIEUKH YA KHIEUKH - 0xB06A: 0xCEC5, //HANGUL SYLLABLE KHIEUKH YA THIEUTH - 0xB06B: 0xCEC6, //HANGUL SYLLABLE KHIEUKH YA PHIEUPH - 0xB06C: 0xCEC7, //HANGUL SYLLABLE KHIEUKH YA HIEUH - 0xB06D: 0xCEC8, //HANGUL SYLLABLE KHIEUKH YAE - 0xB06E: 0xCEC9, //HANGUL SYLLABLE KHIEUKH YAE KIYEOK - 0xB06F: 0xCECA, //HANGUL SYLLABLE KHIEUKH YAE SSANGKIYEOK - 0xB070: 0xCECB, //HANGUL SYLLABLE KHIEUKH YAE KIYEOKSIOS - 0xB071: 0xCECC, //HANGUL SYLLABLE KHIEUKH YAE NIEUN - 0xB072: 0xCECD, //HANGUL SYLLABLE KHIEUKH YAE NIEUNCIEUC - 0xB073: 0xCECE, //HANGUL SYLLABLE KHIEUKH YAE NIEUNHIEUH - 0xB074: 0xCECF, //HANGUL SYLLABLE KHIEUKH YAE TIKEUT - 0xB075: 0xCED0, //HANGUL SYLLABLE KHIEUKH YAE RIEUL - 0xB076: 0xCED1, //HANGUL SYLLABLE KHIEUKH YAE RIEULKIYEOK - 0xB077: 0xCED2, //HANGUL SYLLABLE KHIEUKH YAE RIEULMIEUM - 0xB078: 0xCED3, //HANGUL SYLLABLE KHIEUKH YAE RIEULPIEUP - 0xB079: 0xCED4, //HANGUL SYLLABLE KHIEUKH YAE RIEULSIOS - 0xB07A: 0xCED5, //HANGUL SYLLABLE KHIEUKH YAE RIEULTHIEUTH - 0xB081: 0xCED6, //HANGUL SYLLABLE KHIEUKH YAE RIEULPHIEUPH - 0xB082: 0xCED7, //HANGUL SYLLABLE KHIEUKH YAE RIEULHIEUH - 0xB083: 0xCED8, //HANGUL SYLLABLE KHIEUKH YAE MIEUM - 0xB084: 0xCED9, //HANGUL SYLLABLE KHIEUKH YAE PIEUP - 0xB085: 0xCEDA, //HANGUL SYLLABLE KHIEUKH YAE PIEUPSIOS - 0xB086: 0xCEDB, //HANGUL SYLLABLE KHIEUKH YAE SIOS - 0xB087: 0xCEDC, //HANGUL SYLLABLE KHIEUKH YAE SSANGSIOS - 0xB088: 0xCEDD, //HANGUL SYLLABLE KHIEUKH YAE IEUNG - 0xB089: 0xCEDE, //HANGUL SYLLABLE KHIEUKH YAE CIEUC - 0xB08A: 0xCEDF, //HANGUL SYLLABLE KHIEUKH YAE CHIEUCH - 0xB08B: 0xCEE0, //HANGUL SYLLABLE KHIEUKH YAE KHIEUKH - 0xB08C: 0xCEE1, //HANGUL SYLLABLE KHIEUKH YAE THIEUTH - 0xB08D: 0xCEE2, //HANGUL SYLLABLE KHIEUKH YAE PHIEUPH - 0xB08E: 0xCEE3, //HANGUL SYLLABLE KHIEUKH YAE HIEUH - 0xB08F: 0xCEE6, //HANGUL SYLLABLE KHIEUKH EO SSANGKIYEOK - 0xB090: 0xCEE7, //HANGUL SYLLABLE KHIEUKH EO KIYEOKSIOS - 0xB091: 0xCEE9, //HANGUL SYLLABLE KHIEUKH EO NIEUNCIEUC - 0xB092: 0xCEEA, //HANGUL SYLLABLE KHIEUKH EO NIEUNHIEUH - 0xB093: 0xCEED, //HANGUL SYLLABLE KHIEUKH EO RIEULKIYEOK - 0xB094: 0xCEEE, //HANGUL SYLLABLE KHIEUKH EO RIEULMIEUM - 0xB095: 0xCEEF, //HANGUL SYLLABLE KHIEUKH EO RIEULPIEUP - 0xB096: 0xCEF0, //HANGUL SYLLABLE KHIEUKH EO RIEULSIOS - 0xB097: 0xCEF1, //HANGUL SYLLABLE KHIEUKH EO RIEULTHIEUTH - 0xB098: 0xCEF2, //HANGUL SYLLABLE KHIEUKH EO RIEULPHIEUPH - 0xB099: 0xCEF3, //HANGUL SYLLABLE KHIEUKH EO RIEULHIEUH - 0xB09A: 0xCEF6, //HANGUL SYLLABLE KHIEUKH EO PIEUPSIOS - 0xB09B: 0xCEFA, //HANGUL SYLLABLE KHIEUKH EO CIEUC - 0xB09C: 0xCEFB, //HANGUL SYLLABLE KHIEUKH EO CHIEUCH - 0xB09D: 0xCEFC, //HANGUL SYLLABLE KHIEUKH EO KHIEUKH - 0xB09E: 0xCEFD, //HANGUL SYLLABLE KHIEUKH EO THIEUTH - 0xB09F: 0xCEFE, //HANGUL SYLLABLE KHIEUKH EO PHIEUPH - 0xB0A0: 0xCEFF, //HANGUL SYLLABLE KHIEUKH EO HIEUH - 0xB0A1: 0xAC00, //HANGUL SYLLABLE KIYEOK A - 0xB0A2: 0xAC01, //HANGUL SYLLABLE KIYEOK A KIYEOK - 0xB0A3: 0xAC04, //HANGUL SYLLABLE KIYEOK A NIEUN - 0xB0A4: 0xAC07, //HANGUL SYLLABLE KIYEOK A TIKEUT - 0xB0A5: 0xAC08, //HANGUL SYLLABLE KIYEOK A RIEUL - 0xB0A6: 0xAC09, //HANGUL SYLLABLE KIYEOK A RIEULKIYEOK - 0xB0A7: 0xAC0A, //HANGUL SYLLABLE KIYEOK A RIEULMIEUM - 0xB0A8: 0xAC10, //HANGUL SYLLABLE KIYEOK A MIEUM - 0xB0A9: 0xAC11, //HANGUL SYLLABLE KIYEOK A PIEUP - 0xB0AA: 0xAC12, //HANGUL SYLLABLE KIYEOK A PIEUPSIOS - 0xB0AB: 0xAC13, //HANGUL SYLLABLE KIYEOK A SIOS - 0xB0AC: 0xAC14, //HANGUL SYLLABLE KIYEOK A SSANGSIOS - 0xB0AD: 0xAC15, //HANGUL SYLLABLE KIYEOK A IEUNG - 0xB0AE: 0xAC16, //HANGUL SYLLABLE KIYEOK A CIEUC - 0xB0AF: 0xAC17, //HANGUL SYLLABLE KIYEOK A CHIEUCH - 0xB0B0: 0xAC19, //HANGUL SYLLABLE KIYEOK A THIEUTH - 0xB0B1: 0xAC1A, //HANGUL SYLLABLE KIYEOK A PHIEUPH - 0xB0B2: 0xAC1B, //HANGUL SYLLABLE KIYEOK A HIEUH - 0xB0B3: 0xAC1C, //HANGUL SYLLABLE KIYEOK AE - 0xB0B4: 0xAC1D, //HANGUL SYLLABLE KIYEOK AE KIYEOK - 0xB0B5: 0xAC20, //HANGUL SYLLABLE KIYEOK AE NIEUN - 0xB0B6: 0xAC24, //HANGUL SYLLABLE KIYEOK AE RIEUL - 0xB0B7: 0xAC2C, //HANGUL SYLLABLE KIYEOK AE MIEUM - 0xB0B8: 0xAC2D, //HANGUL SYLLABLE KIYEOK AE PIEUP - 0xB0B9: 0xAC2F, //HANGUL SYLLABLE KIYEOK AE SIOS - 0xB0BA: 0xAC30, //HANGUL SYLLABLE KIYEOK AE SSANGSIOS - 0xB0BB: 0xAC31, //HANGUL SYLLABLE KIYEOK AE IEUNG - 0xB0BC: 0xAC38, //HANGUL SYLLABLE KIYEOK YA - 0xB0BD: 0xAC39, //HANGUL SYLLABLE KIYEOK YA KIYEOK - 0xB0BE: 0xAC3C, //HANGUL SYLLABLE KIYEOK YA NIEUN - 0xB0BF: 0xAC40, //HANGUL SYLLABLE KIYEOK YA RIEUL - 0xB0C0: 0xAC4B, //HANGUL SYLLABLE KIYEOK YA SIOS - 0xB0C1: 0xAC4D, //HANGUL SYLLABLE KIYEOK YA IEUNG - 0xB0C2: 0xAC54, //HANGUL SYLLABLE KIYEOK YAE - 0xB0C3: 0xAC58, //HANGUL SYLLABLE KIYEOK YAE NIEUN - 0xB0C4: 0xAC5C, //HANGUL SYLLABLE KIYEOK YAE RIEUL - 0xB0C5: 0xAC70, //HANGUL SYLLABLE KIYEOK EO - 0xB0C6: 0xAC71, //HANGUL SYLLABLE KIYEOK EO KIYEOK - 0xB0C7: 0xAC74, //HANGUL SYLLABLE KIYEOK EO NIEUN - 0xB0C8: 0xAC77, //HANGUL SYLLABLE KIYEOK EO TIKEUT - 0xB0C9: 0xAC78, //HANGUL SYLLABLE KIYEOK EO RIEUL - 0xB0CA: 0xAC7A, //HANGUL SYLLABLE KIYEOK EO RIEULMIEUM - 0xB0CB: 0xAC80, //HANGUL SYLLABLE KIYEOK EO MIEUM - 0xB0CC: 0xAC81, //HANGUL SYLLABLE KIYEOK EO PIEUP - 0xB0CD: 0xAC83, //HANGUL SYLLABLE KIYEOK EO SIOS - 0xB0CE: 0xAC84, //HANGUL SYLLABLE KIYEOK EO SSANGSIOS - 0xB0CF: 0xAC85, //HANGUL SYLLABLE KIYEOK EO IEUNG - 0xB0D0: 0xAC86, //HANGUL SYLLABLE KIYEOK EO CIEUC - 0xB0D1: 0xAC89, //HANGUL SYLLABLE KIYEOK EO THIEUTH - 0xB0D2: 0xAC8A, //HANGUL SYLLABLE KIYEOK EO PHIEUPH - 0xB0D3: 0xAC8B, //HANGUL SYLLABLE KIYEOK EO HIEUH - 0xB0D4: 0xAC8C, //HANGUL SYLLABLE KIYEOK E - 0xB0D5: 0xAC90, //HANGUL SYLLABLE KIYEOK E NIEUN - 0xB0D6: 0xAC94, //HANGUL SYLLABLE KIYEOK E RIEUL - 0xB0D7: 0xAC9C, //HANGUL SYLLABLE KIYEOK E MIEUM - 0xB0D8: 0xAC9D, //HANGUL SYLLABLE KIYEOK E PIEUP - 0xB0D9: 0xAC9F, //HANGUL SYLLABLE KIYEOK E SIOS - 0xB0DA: 0xACA0, //HANGUL SYLLABLE KIYEOK E SSANGSIOS - 0xB0DB: 0xACA1, //HANGUL SYLLABLE KIYEOK E IEUNG - 0xB0DC: 0xACA8, //HANGUL SYLLABLE KIYEOK YEO - 0xB0DD: 0xACA9, //HANGUL SYLLABLE KIYEOK YEO KIYEOK - 0xB0DE: 0xACAA, //HANGUL SYLLABLE KIYEOK YEO SSANGKIYEOK - 0xB0DF: 0xACAC, //HANGUL SYLLABLE KIYEOK YEO NIEUN - 0xB0E0: 0xACAF, //HANGUL SYLLABLE KIYEOK YEO TIKEUT - 0xB0E1: 0xACB0, //HANGUL SYLLABLE KIYEOK YEO RIEUL - 0xB0E2: 0xACB8, //HANGUL SYLLABLE KIYEOK YEO MIEUM - 0xB0E3: 0xACB9, //HANGUL SYLLABLE KIYEOK YEO PIEUP - 0xB0E4: 0xACBB, //HANGUL SYLLABLE KIYEOK YEO SIOS - 0xB0E5: 0xACBC, //HANGUL SYLLABLE KIYEOK YEO SSANGSIOS - 0xB0E6: 0xACBD, //HANGUL SYLLABLE KIYEOK YEO IEUNG - 0xB0E7: 0xACC1, //HANGUL SYLLABLE KIYEOK YEO THIEUTH - 0xB0E8: 0xACC4, //HANGUL SYLLABLE KIYEOK YE - 0xB0E9: 0xACC8, //HANGUL SYLLABLE KIYEOK YE NIEUN - 0xB0EA: 0xACCC, //HANGUL SYLLABLE KIYEOK YE RIEUL - 0xB0EB: 0xACD5, //HANGUL SYLLABLE KIYEOK YE PIEUP - 0xB0EC: 0xACD7, //HANGUL SYLLABLE KIYEOK YE SIOS - 0xB0ED: 0xACE0, //HANGUL SYLLABLE KIYEOK O - 0xB0EE: 0xACE1, //HANGUL SYLLABLE KIYEOK O KIYEOK - 0xB0EF: 0xACE4, //HANGUL SYLLABLE KIYEOK O NIEUN - 0xB0F0: 0xACE7, //HANGUL SYLLABLE KIYEOK O TIKEUT - 0xB0F1: 0xACE8, //HANGUL SYLLABLE KIYEOK O RIEUL - 0xB0F2: 0xACEA, //HANGUL SYLLABLE KIYEOK O RIEULMIEUM - 0xB0F3: 0xACEC, //HANGUL SYLLABLE KIYEOK O RIEULSIOS - 0xB0F4: 0xACEF, //HANGUL SYLLABLE KIYEOK O RIEULHIEUH - 0xB0F5: 0xACF0, //HANGUL SYLLABLE KIYEOK O MIEUM - 0xB0F6: 0xACF1, //HANGUL SYLLABLE KIYEOK O PIEUP - 0xB0F7: 0xACF3, //HANGUL SYLLABLE KIYEOK O SIOS - 0xB0F8: 0xACF5, //HANGUL SYLLABLE KIYEOK O IEUNG - 0xB0F9: 0xACF6, //HANGUL SYLLABLE KIYEOK O CIEUC - 0xB0FA: 0xACFC, //HANGUL SYLLABLE KIYEOK WA - 0xB0FB: 0xACFD, //HANGUL SYLLABLE KIYEOK WA KIYEOK - 0xB0FC: 0xAD00, //HANGUL SYLLABLE KIYEOK WA NIEUN - 0xB0FD: 0xAD04, //HANGUL SYLLABLE KIYEOK WA RIEUL - 0xB0FE: 0xAD06, //HANGUL SYLLABLE KIYEOK WA RIEULMIEUM - 0xB141: 0xCF02, //HANGUL SYLLABLE KHIEUKH E SSANGKIYEOK - 0xB142: 0xCF03, //HANGUL SYLLABLE KHIEUKH E KIYEOKSIOS - 0xB143: 0xCF05, //HANGUL SYLLABLE KHIEUKH E NIEUNCIEUC - 0xB144: 0xCF06, //HANGUL SYLLABLE KHIEUKH E NIEUNHIEUH - 0xB145: 0xCF07, //HANGUL SYLLABLE KHIEUKH E TIKEUT - 0xB146: 0xCF09, //HANGUL SYLLABLE KHIEUKH E RIEULKIYEOK - 0xB147: 0xCF0A, //HANGUL SYLLABLE KHIEUKH E RIEULMIEUM - 0xB148: 0xCF0B, //HANGUL SYLLABLE KHIEUKH E RIEULPIEUP - 0xB149: 0xCF0C, //HANGUL SYLLABLE KHIEUKH E RIEULSIOS - 0xB14A: 0xCF0D, //HANGUL SYLLABLE KHIEUKH E RIEULTHIEUTH - 0xB14B: 0xCF0E, //HANGUL SYLLABLE KHIEUKH E RIEULPHIEUPH - 0xB14C: 0xCF0F, //HANGUL SYLLABLE KHIEUKH E RIEULHIEUH - 0xB14D: 0xCF12, //HANGUL SYLLABLE KHIEUKH E PIEUPSIOS - 0xB14E: 0xCF14, //HANGUL SYLLABLE KHIEUKH E SSANGSIOS - 0xB14F: 0xCF16, //HANGUL SYLLABLE KHIEUKH E CIEUC - 0xB150: 0xCF17, //HANGUL SYLLABLE KHIEUKH E CHIEUCH - 0xB151: 0xCF18, //HANGUL SYLLABLE KHIEUKH E KHIEUKH - 0xB152: 0xCF19, //HANGUL SYLLABLE KHIEUKH E THIEUTH - 0xB153: 0xCF1A, //HANGUL SYLLABLE KHIEUKH E PHIEUPH - 0xB154: 0xCF1B, //HANGUL SYLLABLE KHIEUKH E HIEUH - 0xB155: 0xCF1D, //HANGUL SYLLABLE KHIEUKH YEO KIYEOK - 0xB156: 0xCF1E, //HANGUL SYLLABLE KHIEUKH YEO SSANGKIYEOK - 0xB157: 0xCF1F, //HANGUL SYLLABLE KHIEUKH YEO KIYEOKSIOS - 0xB158: 0xCF21, //HANGUL SYLLABLE KHIEUKH YEO NIEUNCIEUC - 0xB159: 0xCF22, //HANGUL SYLLABLE KHIEUKH YEO NIEUNHIEUH - 0xB15A: 0xCF23, //HANGUL SYLLABLE KHIEUKH YEO TIKEUT - 0xB161: 0xCF25, //HANGUL SYLLABLE KHIEUKH YEO RIEULKIYEOK - 0xB162: 0xCF26, //HANGUL SYLLABLE KHIEUKH YEO RIEULMIEUM - 0xB163: 0xCF27, //HANGUL SYLLABLE KHIEUKH YEO RIEULPIEUP - 0xB164: 0xCF28, //HANGUL SYLLABLE KHIEUKH YEO RIEULSIOS - 0xB165: 0xCF29, //HANGUL SYLLABLE KHIEUKH YEO RIEULTHIEUTH - 0xB166: 0xCF2A, //HANGUL SYLLABLE KHIEUKH YEO RIEULPHIEUPH - 0xB167: 0xCF2B, //HANGUL SYLLABLE KHIEUKH YEO RIEULHIEUH - 0xB168: 0xCF2E, //HANGUL SYLLABLE KHIEUKH YEO PIEUPSIOS - 0xB169: 0xCF32, //HANGUL SYLLABLE KHIEUKH YEO CIEUC - 0xB16A: 0xCF33, //HANGUL SYLLABLE KHIEUKH YEO CHIEUCH - 0xB16B: 0xCF34, //HANGUL SYLLABLE KHIEUKH YEO KHIEUKH - 0xB16C: 0xCF35, //HANGUL SYLLABLE KHIEUKH YEO THIEUTH - 0xB16D: 0xCF36, //HANGUL SYLLABLE KHIEUKH YEO PHIEUPH - 0xB16E: 0xCF37, //HANGUL SYLLABLE KHIEUKH YEO HIEUH - 0xB16F: 0xCF39, //HANGUL SYLLABLE KHIEUKH YE KIYEOK - 0xB170: 0xCF3A, //HANGUL SYLLABLE KHIEUKH YE SSANGKIYEOK - 0xB171: 0xCF3B, //HANGUL SYLLABLE KHIEUKH YE KIYEOKSIOS - 0xB172: 0xCF3C, //HANGUL SYLLABLE KHIEUKH YE NIEUN - 0xB173: 0xCF3D, //HANGUL SYLLABLE KHIEUKH YE NIEUNCIEUC - 0xB174: 0xCF3E, //HANGUL SYLLABLE KHIEUKH YE NIEUNHIEUH - 0xB175: 0xCF3F, //HANGUL SYLLABLE KHIEUKH YE TIKEUT - 0xB176: 0xCF40, //HANGUL SYLLABLE KHIEUKH YE RIEUL - 0xB177: 0xCF41, //HANGUL SYLLABLE KHIEUKH YE RIEULKIYEOK - 0xB178: 0xCF42, //HANGUL SYLLABLE KHIEUKH YE RIEULMIEUM - 0xB179: 0xCF43, //HANGUL SYLLABLE KHIEUKH YE RIEULPIEUP - 0xB17A: 0xCF44, //HANGUL SYLLABLE KHIEUKH YE RIEULSIOS - 0xB181: 0xCF45, //HANGUL SYLLABLE KHIEUKH YE RIEULTHIEUTH - 0xB182: 0xCF46, //HANGUL SYLLABLE KHIEUKH YE RIEULPHIEUPH - 0xB183: 0xCF47, //HANGUL SYLLABLE KHIEUKH YE RIEULHIEUH - 0xB184: 0xCF48, //HANGUL SYLLABLE KHIEUKH YE MIEUM - 0xB185: 0xCF49, //HANGUL SYLLABLE KHIEUKH YE PIEUP - 0xB186: 0xCF4A, //HANGUL SYLLABLE KHIEUKH YE PIEUPSIOS - 0xB187: 0xCF4B, //HANGUL SYLLABLE KHIEUKH YE SIOS - 0xB188: 0xCF4C, //HANGUL SYLLABLE KHIEUKH YE SSANGSIOS - 0xB189: 0xCF4D, //HANGUL SYLLABLE KHIEUKH YE IEUNG - 0xB18A: 0xCF4E, //HANGUL SYLLABLE KHIEUKH YE CIEUC - 0xB18B: 0xCF4F, //HANGUL SYLLABLE KHIEUKH YE CHIEUCH - 0xB18C: 0xCF50, //HANGUL SYLLABLE KHIEUKH YE KHIEUKH - 0xB18D: 0xCF51, //HANGUL SYLLABLE KHIEUKH YE THIEUTH - 0xB18E: 0xCF52, //HANGUL SYLLABLE KHIEUKH YE PHIEUPH - 0xB18F: 0xCF53, //HANGUL SYLLABLE KHIEUKH YE HIEUH - 0xB190: 0xCF56, //HANGUL SYLLABLE KHIEUKH O SSANGKIYEOK - 0xB191: 0xCF57, //HANGUL SYLLABLE KHIEUKH O KIYEOKSIOS - 0xB192: 0xCF59, //HANGUL SYLLABLE KHIEUKH O NIEUNCIEUC - 0xB193: 0xCF5A, //HANGUL SYLLABLE KHIEUKH O NIEUNHIEUH - 0xB194: 0xCF5B, //HANGUL SYLLABLE KHIEUKH O TIKEUT - 0xB195: 0xCF5D, //HANGUL SYLLABLE KHIEUKH O RIEULKIYEOK - 0xB196: 0xCF5E, //HANGUL SYLLABLE KHIEUKH O RIEULMIEUM - 0xB197: 0xCF5F, //HANGUL SYLLABLE KHIEUKH O RIEULPIEUP - 0xB198: 0xCF60, //HANGUL SYLLABLE KHIEUKH O RIEULSIOS - 0xB199: 0xCF61, //HANGUL SYLLABLE KHIEUKH O RIEULTHIEUTH - 0xB19A: 0xCF62, //HANGUL SYLLABLE KHIEUKH O RIEULPHIEUPH - 0xB19B: 0xCF63, //HANGUL SYLLABLE KHIEUKH O RIEULHIEUH - 0xB19C: 0xCF66, //HANGUL SYLLABLE KHIEUKH O PIEUPSIOS - 0xB19D: 0xCF68, //HANGUL SYLLABLE KHIEUKH O SSANGSIOS - 0xB19E: 0xCF6A, //HANGUL SYLLABLE KHIEUKH O CIEUC - 0xB19F: 0xCF6B, //HANGUL SYLLABLE KHIEUKH O CHIEUCH - 0xB1A0: 0xCF6C, //HANGUL SYLLABLE KHIEUKH O KHIEUKH - 0xB1A1: 0xAD0C, //HANGUL SYLLABLE KIYEOK WA MIEUM - 0xB1A2: 0xAD0D, //HANGUL SYLLABLE KIYEOK WA PIEUP - 0xB1A3: 0xAD0F, //HANGUL SYLLABLE KIYEOK WA SIOS - 0xB1A4: 0xAD11, //HANGUL SYLLABLE KIYEOK WA IEUNG - 0xB1A5: 0xAD18, //HANGUL SYLLABLE KIYEOK WAE - 0xB1A6: 0xAD1C, //HANGUL SYLLABLE KIYEOK WAE NIEUN - 0xB1A7: 0xAD20, //HANGUL SYLLABLE KIYEOK WAE RIEUL - 0xB1A8: 0xAD29, //HANGUL SYLLABLE KIYEOK WAE PIEUP - 0xB1A9: 0xAD2C, //HANGUL SYLLABLE KIYEOK WAE SSANGSIOS - 0xB1AA: 0xAD2D, //HANGUL SYLLABLE KIYEOK WAE IEUNG - 0xB1AB: 0xAD34, //HANGUL SYLLABLE KIYEOK OE - 0xB1AC: 0xAD35, //HANGUL SYLLABLE KIYEOK OE KIYEOK - 0xB1AD: 0xAD38, //HANGUL SYLLABLE KIYEOK OE NIEUN - 0xB1AE: 0xAD3C, //HANGUL SYLLABLE KIYEOK OE RIEUL - 0xB1AF: 0xAD44, //HANGUL SYLLABLE KIYEOK OE MIEUM - 0xB1B0: 0xAD45, //HANGUL SYLLABLE KIYEOK OE PIEUP - 0xB1B1: 0xAD47, //HANGUL SYLLABLE KIYEOK OE SIOS - 0xB1B2: 0xAD49, //HANGUL SYLLABLE KIYEOK OE IEUNG - 0xB1B3: 0xAD50, //HANGUL SYLLABLE KIYEOK YO - 0xB1B4: 0xAD54, //HANGUL SYLLABLE KIYEOK YO NIEUN - 0xB1B5: 0xAD58, //HANGUL SYLLABLE KIYEOK YO RIEUL - 0xB1B6: 0xAD61, //HANGUL SYLLABLE KIYEOK YO PIEUP - 0xB1B7: 0xAD63, //HANGUL SYLLABLE KIYEOK YO SIOS - 0xB1B8: 0xAD6C, //HANGUL SYLLABLE KIYEOK U - 0xB1B9: 0xAD6D, //HANGUL SYLLABLE KIYEOK U KIYEOK - 0xB1BA: 0xAD70, //HANGUL SYLLABLE KIYEOK U NIEUN - 0xB1BB: 0xAD73, //HANGUL SYLLABLE KIYEOK U TIKEUT - 0xB1BC: 0xAD74, //HANGUL SYLLABLE KIYEOK U RIEUL - 0xB1BD: 0xAD75, //HANGUL SYLLABLE KIYEOK U RIEULKIYEOK - 0xB1BE: 0xAD76, //HANGUL SYLLABLE KIYEOK U RIEULMIEUM - 0xB1BF: 0xAD7B, //HANGUL SYLLABLE KIYEOK U RIEULHIEUH - 0xB1C0: 0xAD7C, //HANGUL SYLLABLE KIYEOK U MIEUM - 0xB1C1: 0xAD7D, //HANGUL SYLLABLE KIYEOK U PIEUP - 0xB1C2: 0xAD7F, //HANGUL SYLLABLE KIYEOK U SIOS - 0xB1C3: 0xAD81, //HANGUL SYLLABLE KIYEOK U IEUNG - 0xB1C4: 0xAD82, //HANGUL SYLLABLE KIYEOK U CIEUC - 0xB1C5: 0xAD88, //HANGUL SYLLABLE KIYEOK WEO - 0xB1C6: 0xAD89, //HANGUL SYLLABLE KIYEOK WEO KIYEOK - 0xB1C7: 0xAD8C, //HANGUL SYLLABLE KIYEOK WEO NIEUN - 0xB1C8: 0xAD90, //HANGUL SYLLABLE KIYEOK WEO RIEUL - 0xB1C9: 0xAD9C, //HANGUL SYLLABLE KIYEOK WEO SSANGSIOS - 0xB1CA: 0xAD9D, //HANGUL SYLLABLE KIYEOK WEO IEUNG - 0xB1CB: 0xADA4, //HANGUL SYLLABLE KIYEOK WE - 0xB1CC: 0xADB7, //HANGUL SYLLABLE KIYEOK WE SIOS - 0xB1CD: 0xADC0, //HANGUL SYLLABLE KIYEOK WI - 0xB1CE: 0xADC1, //HANGUL SYLLABLE KIYEOK WI KIYEOK - 0xB1CF: 0xADC4, //HANGUL SYLLABLE KIYEOK WI NIEUN - 0xB1D0: 0xADC8, //HANGUL SYLLABLE KIYEOK WI RIEUL - 0xB1D1: 0xADD0, //HANGUL SYLLABLE KIYEOK WI MIEUM - 0xB1D2: 0xADD1, //HANGUL SYLLABLE KIYEOK WI PIEUP - 0xB1D3: 0xADD3, //HANGUL SYLLABLE KIYEOK WI SIOS - 0xB1D4: 0xADDC, //HANGUL SYLLABLE KIYEOK YU - 0xB1D5: 0xADE0, //HANGUL SYLLABLE KIYEOK YU NIEUN - 0xB1D6: 0xADE4, //HANGUL SYLLABLE KIYEOK YU RIEUL - 0xB1D7: 0xADF8, //HANGUL SYLLABLE KIYEOK EU - 0xB1D8: 0xADF9, //HANGUL SYLLABLE KIYEOK EU KIYEOK - 0xB1D9: 0xADFC, //HANGUL SYLLABLE KIYEOK EU NIEUN - 0xB1DA: 0xADFF, //HANGUL SYLLABLE KIYEOK EU TIKEUT - 0xB1DB: 0xAE00, //HANGUL SYLLABLE KIYEOK EU RIEUL - 0xB1DC: 0xAE01, //HANGUL SYLLABLE KIYEOK EU RIEULKIYEOK - 0xB1DD: 0xAE08, //HANGUL SYLLABLE KIYEOK EU MIEUM - 0xB1DE: 0xAE09, //HANGUL SYLLABLE KIYEOK EU PIEUP - 0xB1DF: 0xAE0B, //HANGUL SYLLABLE KIYEOK EU SIOS - 0xB1E0: 0xAE0D, //HANGUL SYLLABLE KIYEOK EU IEUNG - 0xB1E1: 0xAE14, //HANGUL SYLLABLE KIYEOK YI - 0xB1E2: 0xAE30, //HANGUL SYLLABLE KIYEOK I - 0xB1E3: 0xAE31, //HANGUL SYLLABLE KIYEOK I KIYEOK - 0xB1E4: 0xAE34, //HANGUL SYLLABLE KIYEOK I NIEUN - 0xB1E5: 0xAE37, //HANGUL SYLLABLE KIYEOK I TIKEUT - 0xB1E6: 0xAE38, //HANGUL SYLLABLE KIYEOK I RIEUL - 0xB1E7: 0xAE3A, //HANGUL SYLLABLE KIYEOK I RIEULMIEUM - 0xB1E8: 0xAE40, //HANGUL SYLLABLE KIYEOK I MIEUM - 0xB1E9: 0xAE41, //HANGUL SYLLABLE KIYEOK I PIEUP - 0xB1EA: 0xAE43, //HANGUL SYLLABLE KIYEOK I SIOS - 0xB1EB: 0xAE45, //HANGUL SYLLABLE KIYEOK I IEUNG - 0xB1EC: 0xAE46, //HANGUL SYLLABLE KIYEOK I CIEUC - 0xB1ED: 0xAE4A, //HANGUL SYLLABLE KIYEOK I PHIEUPH - 0xB1EE: 0xAE4C, //HANGUL SYLLABLE SSANGKIYEOK A - 0xB1EF: 0xAE4D, //HANGUL SYLLABLE SSANGKIYEOK A KIYEOK - 0xB1F0: 0xAE4E, //HANGUL SYLLABLE SSANGKIYEOK A SSANGKIYEOK - 0xB1F1: 0xAE50, //HANGUL SYLLABLE SSANGKIYEOK A NIEUN - 0xB1F2: 0xAE54, //HANGUL SYLLABLE SSANGKIYEOK A RIEUL - 0xB1F3: 0xAE56, //HANGUL SYLLABLE SSANGKIYEOK A RIEULMIEUM - 0xB1F4: 0xAE5C, //HANGUL SYLLABLE SSANGKIYEOK A MIEUM - 0xB1F5: 0xAE5D, //HANGUL SYLLABLE SSANGKIYEOK A PIEUP - 0xB1F6: 0xAE5F, //HANGUL SYLLABLE SSANGKIYEOK A SIOS - 0xB1F7: 0xAE60, //HANGUL SYLLABLE SSANGKIYEOK A SSANGSIOS - 0xB1F8: 0xAE61, //HANGUL SYLLABLE SSANGKIYEOK A IEUNG - 0xB1F9: 0xAE65, //HANGUL SYLLABLE SSANGKIYEOK A THIEUTH - 0xB1FA: 0xAE68, //HANGUL SYLLABLE SSANGKIYEOK AE - 0xB1FB: 0xAE69, //HANGUL SYLLABLE SSANGKIYEOK AE KIYEOK - 0xB1FC: 0xAE6C, //HANGUL SYLLABLE SSANGKIYEOK AE NIEUN - 0xB1FD: 0xAE70, //HANGUL SYLLABLE SSANGKIYEOK AE RIEUL - 0xB1FE: 0xAE78, //HANGUL SYLLABLE SSANGKIYEOK AE MIEUM - 0xB241: 0xCF6D, //HANGUL SYLLABLE KHIEUKH O THIEUTH - 0xB242: 0xCF6E, //HANGUL SYLLABLE KHIEUKH O PHIEUPH - 0xB243: 0xCF6F, //HANGUL SYLLABLE KHIEUKH O HIEUH - 0xB244: 0xCF72, //HANGUL SYLLABLE KHIEUKH WA SSANGKIYEOK - 0xB245: 0xCF73, //HANGUL SYLLABLE KHIEUKH WA KIYEOKSIOS - 0xB246: 0xCF75, //HANGUL SYLLABLE KHIEUKH WA NIEUNCIEUC - 0xB247: 0xCF76, //HANGUL SYLLABLE KHIEUKH WA NIEUNHIEUH - 0xB248: 0xCF77, //HANGUL SYLLABLE KHIEUKH WA TIKEUT - 0xB249: 0xCF79, //HANGUL SYLLABLE KHIEUKH WA RIEULKIYEOK - 0xB24A: 0xCF7A, //HANGUL SYLLABLE KHIEUKH WA RIEULMIEUM - 0xB24B: 0xCF7B, //HANGUL SYLLABLE KHIEUKH WA RIEULPIEUP - 0xB24C: 0xCF7C, //HANGUL SYLLABLE KHIEUKH WA RIEULSIOS - 0xB24D: 0xCF7D, //HANGUL SYLLABLE KHIEUKH WA RIEULTHIEUTH - 0xB24E: 0xCF7E, //HANGUL SYLLABLE KHIEUKH WA RIEULPHIEUPH - 0xB24F: 0xCF7F, //HANGUL SYLLABLE KHIEUKH WA RIEULHIEUH - 0xB250: 0xCF81, //HANGUL SYLLABLE KHIEUKH WA PIEUP - 0xB251: 0xCF82, //HANGUL SYLLABLE KHIEUKH WA PIEUPSIOS - 0xB252: 0xCF83, //HANGUL SYLLABLE KHIEUKH WA SIOS - 0xB253: 0xCF84, //HANGUL SYLLABLE KHIEUKH WA SSANGSIOS - 0xB254: 0xCF86, //HANGUL SYLLABLE KHIEUKH WA CIEUC - 0xB255: 0xCF87, //HANGUL SYLLABLE KHIEUKH WA CHIEUCH - 0xB256: 0xCF88, //HANGUL SYLLABLE KHIEUKH WA KHIEUKH - 0xB257: 0xCF89, //HANGUL SYLLABLE KHIEUKH WA THIEUTH - 0xB258: 0xCF8A, //HANGUL SYLLABLE KHIEUKH WA PHIEUPH - 0xB259: 0xCF8B, //HANGUL SYLLABLE KHIEUKH WA HIEUH - 0xB25A: 0xCF8D, //HANGUL SYLLABLE KHIEUKH WAE KIYEOK - 0xB261: 0xCF8E, //HANGUL SYLLABLE KHIEUKH WAE SSANGKIYEOK - 0xB262: 0xCF8F, //HANGUL SYLLABLE KHIEUKH WAE KIYEOKSIOS - 0xB263: 0xCF90, //HANGUL SYLLABLE KHIEUKH WAE NIEUN - 0xB264: 0xCF91, //HANGUL SYLLABLE KHIEUKH WAE NIEUNCIEUC - 0xB265: 0xCF92, //HANGUL SYLLABLE KHIEUKH WAE NIEUNHIEUH - 0xB266: 0xCF93, //HANGUL SYLLABLE KHIEUKH WAE TIKEUT - 0xB267: 0xCF94, //HANGUL SYLLABLE KHIEUKH WAE RIEUL - 0xB268: 0xCF95, //HANGUL SYLLABLE KHIEUKH WAE RIEULKIYEOK - 0xB269: 0xCF96, //HANGUL SYLLABLE KHIEUKH WAE RIEULMIEUM - 0xB26A: 0xCF97, //HANGUL SYLLABLE KHIEUKH WAE RIEULPIEUP - 0xB26B: 0xCF98, //HANGUL SYLLABLE KHIEUKH WAE RIEULSIOS - 0xB26C: 0xCF99, //HANGUL SYLLABLE KHIEUKH WAE RIEULTHIEUTH - 0xB26D: 0xCF9A, //HANGUL SYLLABLE KHIEUKH WAE RIEULPHIEUPH - 0xB26E: 0xCF9B, //HANGUL SYLLABLE KHIEUKH WAE RIEULHIEUH - 0xB26F: 0xCF9C, //HANGUL SYLLABLE KHIEUKH WAE MIEUM - 0xB270: 0xCF9D, //HANGUL SYLLABLE KHIEUKH WAE PIEUP - 0xB271: 0xCF9E, //HANGUL SYLLABLE KHIEUKH WAE PIEUPSIOS - 0xB272: 0xCF9F, //HANGUL SYLLABLE KHIEUKH WAE SIOS - 0xB273: 0xCFA0, //HANGUL SYLLABLE KHIEUKH WAE SSANGSIOS - 0xB274: 0xCFA2, //HANGUL SYLLABLE KHIEUKH WAE CIEUC - 0xB275: 0xCFA3, //HANGUL SYLLABLE KHIEUKH WAE CHIEUCH - 0xB276: 0xCFA4, //HANGUL SYLLABLE KHIEUKH WAE KHIEUKH - 0xB277: 0xCFA5, //HANGUL SYLLABLE KHIEUKH WAE THIEUTH - 0xB278: 0xCFA6, //HANGUL SYLLABLE KHIEUKH WAE PHIEUPH - 0xB279: 0xCFA7, //HANGUL SYLLABLE KHIEUKH WAE HIEUH - 0xB27A: 0xCFA9, //HANGUL SYLLABLE KHIEUKH OE KIYEOK - 0xB281: 0xCFAA, //HANGUL SYLLABLE KHIEUKH OE SSANGKIYEOK - 0xB282: 0xCFAB, //HANGUL SYLLABLE KHIEUKH OE KIYEOKSIOS - 0xB283: 0xCFAC, //HANGUL SYLLABLE KHIEUKH OE NIEUN - 0xB284: 0xCFAD, //HANGUL SYLLABLE KHIEUKH OE NIEUNCIEUC - 0xB285: 0xCFAE, //HANGUL SYLLABLE KHIEUKH OE NIEUNHIEUH - 0xB286: 0xCFAF, //HANGUL SYLLABLE KHIEUKH OE TIKEUT - 0xB287: 0xCFB1, //HANGUL SYLLABLE KHIEUKH OE RIEULKIYEOK - 0xB288: 0xCFB2, //HANGUL SYLLABLE KHIEUKH OE RIEULMIEUM - 0xB289: 0xCFB3, //HANGUL SYLLABLE KHIEUKH OE RIEULPIEUP - 0xB28A: 0xCFB4, //HANGUL SYLLABLE KHIEUKH OE RIEULSIOS - 0xB28B: 0xCFB5, //HANGUL SYLLABLE KHIEUKH OE RIEULTHIEUTH - 0xB28C: 0xCFB6, //HANGUL SYLLABLE KHIEUKH OE RIEULPHIEUPH - 0xB28D: 0xCFB7, //HANGUL SYLLABLE KHIEUKH OE RIEULHIEUH - 0xB28E: 0xCFB8, //HANGUL SYLLABLE KHIEUKH OE MIEUM - 0xB28F: 0xCFB9, //HANGUL SYLLABLE KHIEUKH OE PIEUP - 0xB290: 0xCFBA, //HANGUL SYLLABLE KHIEUKH OE PIEUPSIOS - 0xB291: 0xCFBB, //HANGUL SYLLABLE KHIEUKH OE SIOS - 0xB292: 0xCFBC, //HANGUL SYLLABLE KHIEUKH OE SSANGSIOS - 0xB293: 0xCFBD, //HANGUL SYLLABLE KHIEUKH OE IEUNG - 0xB294: 0xCFBE, //HANGUL SYLLABLE KHIEUKH OE CIEUC - 0xB295: 0xCFBF, //HANGUL SYLLABLE KHIEUKH OE CHIEUCH - 0xB296: 0xCFC0, //HANGUL SYLLABLE KHIEUKH OE KHIEUKH - 0xB297: 0xCFC1, //HANGUL SYLLABLE KHIEUKH OE THIEUTH - 0xB298: 0xCFC2, //HANGUL SYLLABLE KHIEUKH OE PHIEUPH - 0xB299: 0xCFC3, //HANGUL SYLLABLE KHIEUKH OE HIEUH - 0xB29A: 0xCFC5, //HANGUL SYLLABLE KHIEUKH YO KIYEOK - 0xB29B: 0xCFC6, //HANGUL SYLLABLE KHIEUKH YO SSANGKIYEOK - 0xB29C: 0xCFC7, //HANGUL SYLLABLE KHIEUKH YO KIYEOKSIOS - 0xB29D: 0xCFC8, //HANGUL SYLLABLE KHIEUKH YO NIEUN - 0xB29E: 0xCFC9, //HANGUL SYLLABLE KHIEUKH YO NIEUNCIEUC - 0xB29F: 0xCFCA, //HANGUL SYLLABLE KHIEUKH YO NIEUNHIEUH - 0xB2A0: 0xCFCB, //HANGUL SYLLABLE KHIEUKH YO TIKEUT - 0xB2A1: 0xAE79, //HANGUL SYLLABLE SSANGKIYEOK AE PIEUP - 0xB2A2: 0xAE7B, //HANGUL SYLLABLE SSANGKIYEOK AE SIOS - 0xB2A3: 0xAE7C, //HANGUL SYLLABLE SSANGKIYEOK AE SSANGSIOS - 0xB2A4: 0xAE7D, //HANGUL SYLLABLE SSANGKIYEOK AE IEUNG - 0xB2A5: 0xAE84, //HANGUL SYLLABLE SSANGKIYEOK YA - 0xB2A6: 0xAE85, //HANGUL SYLLABLE SSANGKIYEOK YA KIYEOK - 0xB2A7: 0xAE8C, //HANGUL SYLLABLE SSANGKIYEOK YA RIEUL - 0xB2A8: 0xAEBC, //HANGUL SYLLABLE SSANGKIYEOK EO - 0xB2A9: 0xAEBD, //HANGUL SYLLABLE SSANGKIYEOK EO KIYEOK - 0xB2AA: 0xAEBE, //HANGUL SYLLABLE SSANGKIYEOK EO SSANGKIYEOK - 0xB2AB: 0xAEC0, //HANGUL SYLLABLE SSANGKIYEOK EO NIEUN - 0xB2AC: 0xAEC4, //HANGUL SYLLABLE SSANGKIYEOK EO RIEUL - 0xB2AD: 0xAECC, //HANGUL SYLLABLE SSANGKIYEOK EO MIEUM - 0xB2AE: 0xAECD, //HANGUL SYLLABLE SSANGKIYEOK EO PIEUP - 0xB2AF: 0xAECF, //HANGUL SYLLABLE SSANGKIYEOK EO SIOS - 0xB2B0: 0xAED0, //HANGUL SYLLABLE SSANGKIYEOK EO SSANGSIOS - 0xB2B1: 0xAED1, //HANGUL SYLLABLE SSANGKIYEOK EO IEUNG - 0xB2B2: 0xAED8, //HANGUL SYLLABLE SSANGKIYEOK E - 0xB2B3: 0xAED9, //HANGUL SYLLABLE SSANGKIYEOK E KIYEOK - 0xB2B4: 0xAEDC, //HANGUL SYLLABLE SSANGKIYEOK E NIEUN - 0xB2B5: 0xAEE8, //HANGUL SYLLABLE SSANGKIYEOK E MIEUM - 0xB2B6: 0xAEEB, //HANGUL SYLLABLE SSANGKIYEOK E SIOS - 0xB2B7: 0xAEED, //HANGUL SYLLABLE SSANGKIYEOK E IEUNG - 0xB2B8: 0xAEF4, //HANGUL SYLLABLE SSANGKIYEOK YEO - 0xB2B9: 0xAEF8, //HANGUL SYLLABLE SSANGKIYEOK YEO NIEUN - 0xB2BA: 0xAEFC, //HANGUL SYLLABLE SSANGKIYEOK YEO RIEUL - 0xB2BB: 0xAF07, //HANGUL SYLLABLE SSANGKIYEOK YEO SIOS - 0xB2BC: 0xAF08, //HANGUL SYLLABLE SSANGKIYEOK YEO SSANGSIOS - 0xB2BD: 0xAF0D, //HANGUL SYLLABLE SSANGKIYEOK YEO THIEUTH - 0xB2BE: 0xAF10, //HANGUL SYLLABLE SSANGKIYEOK YE - 0xB2BF: 0xAF2C, //HANGUL SYLLABLE SSANGKIYEOK O - 0xB2C0: 0xAF2D, //HANGUL SYLLABLE SSANGKIYEOK O KIYEOK - 0xB2C1: 0xAF30, //HANGUL SYLLABLE SSANGKIYEOK O NIEUN - 0xB2C2: 0xAF32, //HANGUL SYLLABLE SSANGKIYEOK O NIEUNHIEUH - 0xB2C3: 0xAF34, //HANGUL SYLLABLE SSANGKIYEOK O RIEUL - 0xB2C4: 0xAF3C, //HANGUL SYLLABLE SSANGKIYEOK O MIEUM - 0xB2C5: 0xAF3D, //HANGUL SYLLABLE SSANGKIYEOK O PIEUP - 0xB2C6: 0xAF3F, //HANGUL SYLLABLE SSANGKIYEOK O SIOS - 0xB2C7: 0xAF41, //HANGUL SYLLABLE SSANGKIYEOK O IEUNG - 0xB2C8: 0xAF42, //HANGUL SYLLABLE SSANGKIYEOK O CIEUC - 0xB2C9: 0xAF43, //HANGUL SYLLABLE SSANGKIYEOK O CHIEUCH - 0xB2CA: 0xAF48, //HANGUL SYLLABLE SSANGKIYEOK WA - 0xB2CB: 0xAF49, //HANGUL SYLLABLE SSANGKIYEOK WA KIYEOK - 0xB2CC: 0xAF50, //HANGUL SYLLABLE SSANGKIYEOK WA RIEUL - 0xB2CD: 0xAF5C, //HANGUL SYLLABLE SSANGKIYEOK WA SSANGSIOS - 0xB2CE: 0xAF5D, //HANGUL SYLLABLE SSANGKIYEOK WA IEUNG - 0xB2CF: 0xAF64, //HANGUL SYLLABLE SSANGKIYEOK WAE - 0xB2D0: 0xAF65, //HANGUL SYLLABLE SSANGKIYEOK WAE KIYEOK - 0xB2D1: 0xAF79, //HANGUL SYLLABLE SSANGKIYEOK WAE IEUNG - 0xB2D2: 0xAF80, //HANGUL SYLLABLE SSANGKIYEOK OE - 0xB2D3: 0xAF84, //HANGUL SYLLABLE SSANGKIYEOK OE NIEUN - 0xB2D4: 0xAF88, //HANGUL SYLLABLE SSANGKIYEOK OE RIEUL - 0xB2D5: 0xAF90, //HANGUL SYLLABLE SSANGKIYEOK OE MIEUM - 0xB2D6: 0xAF91, //HANGUL SYLLABLE SSANGKIYEOK OE PIEUP - 0xB2D7: 0xAF95, //HANGUL SYLLABLE SSANGKIYEOK OE IEUNG - 0xB2D8: 0xAF9C, //HANGUL SYLLABLE SSANGKIYEOK YO - 0xB2D9: 0xAFB8, //HANGUL SYLLABLE SSANGKIYEOK U - 0xB2DA: 0xAFB9, //HANGUL SYLLABLE SSANGKIYEOK U KIYEOK - 0xB2DB: 0xAFBC, //HANGUL SYLLABLE SSANGKIYEOK U NIEUN - 0xB2DC: 0xAFC0, //HANGUL SYLLABLE SSANGKIYEOK U RIEUL - 0xB2DD: 0xAFC7, //HANGUL SYLLABLE SSANGKIYEOK U RIEULHIEUH - 0xB2DE: 0xAFC8, //HANGUL SYLLABLE SSANGKIYEOK U MIEUM - 0xB2DF: 0xAFC9, //HANGUL SYLLABLE SSANGKIYEOK U PIEUP - 0xB2E0: 0xAFCB, //HANGUL SYLLABLE SSANGKIYEOK U SIOS - 0xB2E1: 0xAFCD, //HANGUL SYLLABLE SSANGKIYEOK U IEUNG - 0xB2E2: 0xAFCE, //HANGUL SYLLABLE SSANGKIYEOK U CIEUC - 0xB2E3: 0xAFD4, //HANGUL SYLLABLE SSANGKIYEOK WEO - 0xB2E4: 0xAFDC, //HANGUL SYLLABLE SSANGKIYEOK WEO RIEUL - 0xB2E5: 0xAFE8, //HANGUL SYLLABLE SSANGKIYEOK WEO SSANGSIOS - 0xB2E6: 0xAFE9, //HANGUL SYLLABLE SSANGKIYEOK WEO IEUNG - 0xB2E7: 0xAFF0, //HANGUL SYLLABLE SSANGKIYEOK WE - 0xB2E8: 0xAFF1, //HANGUL SYLLABLE SSANGKIYEOK WE KIYEOK - 0xB2E9: 0xAFF4, //HANGUL SYLLABLE SSANGKIYEOK WE NIEUN - 0xB2EA: 0xAFF8, //HANGUL SYLLABLE SSANGKIYEOK WE RIEUL - 0xB2EB: 0xB000, //HANGUL SYLLABLE SSANGKIYEOK WE MIEUM - 0xB2EC: 0xB001, //HANGUL SYLLABLE SSANGKIYEOK WE PIEUP - 0xB2ED: 0xB004, //HANGUL SYLLABLE SSANGKIYEOK WE SSANGSIOS - 0xB2EE: 0xB00C, //HANGUL SYLLABLE SSANGKIYEOK WI - 0xB2EF: 0xB010, //HANGUL SYLLABLE SSANGKIYEOK WI NIEUN - 0xB2F0: 0xB014, //HANGUL SYLLABLE SSANGKIYEOK WI RIEUL - 0xB2F1: 0xB01C, //HANGUL SYLLABLE SSANGKIYEOK WI MIEUM - 0xB2F2: 0xB01D, //HANGUL SYLLABLE SSANGKIYEOK WI PIEUP - 0xB2F3: 0xB028, //HANGUL SYLLABLE SSANGKIYEOK YU - 0xB2F4: 0xB044, //HANGUL SYLLABLE SSANGKIYEOK EU - 0xB2F5: 0xB045, //HANGUL SYLLABLE SSANGKIYEOK EU KIYEOK - 0xB2F6: 0xB048, //HANGUL SYLLABLE SSANGKIYEOK EU NIEUN - 0xB2F7: 0xB04A, //HANGUL SYLLABLE SSANGKIYEOK EU NIEUNHIEUH - 0xB2F8: 0xB04C, //HANGUL SYLLABLE SSANGKIYEOK EU RIEUL - 0xB2F9: 0xB04E, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULMIEUM - 0xB2FA: 0xB053, //HANGUL SYLLABLE SSANGKIYEOK EU RIEULHIEUH - 0xB2FB: 0xB054, //HANGUL SYLLABLE SSANGKIYEOK EU MIEUM - 0xB2FC: 0xB055, //HANGUL SYLLABLE SSANGKIYEOK EU PIEUP - 0xB2FD: 0xB057, //HANGUL SYLLABLE SSANGKIYEOK EU SIOS - 0xB2FE: 0xB059, //HANGUL SYLLABLE SSANGKIYEOK EU IEUNG - 0xB341: 0xCFCC, //HANGUL SYLLABLE KHIEUKH YO RIEUL - 0xB342: 0xCFCD, //HANGUL SYLLABLE KHIEUKH YO RIEULKIYEOK - 0xB343: 0xCFCE, //HANGUL SYLLABLE KHIEUKH YO RIEULMIEUM - 0xB344: 0xCFCF, //HANGUL SYLLABLE KHIEUKH YO RIEULPIEUP - 0xB345: 0xCFD0, //HANGUL SYLLABLE KHIEUKH YO RIEULSIOS - 0xB346: 0xCFD1, //HANGUL SYLLABLE KHIEUKH YO RIEULTHIEUTH - 0xB347: 0xCFD2, //HANGUL SYLLABLE KHIEUKH YO RIEULPHIEUPH - 0xB348: 0xCFD3, //HANGUL SYLLABLE KHIEUKH YO RIEULHIEUH - 0xB349: 0xCFD4, //HANGUL SYLLABLE KHIEUKH YO MIEUM - 0xB34A: 0xCFD5, //HANGUL SYLLABLE KHIEUKH YO PIEUP - 0xB34B: 0xCFD6, //HANGUL SYLLABLE KHIEUKH YO PIEUPSIOS - 0xB34C: 0xCFD7, //HANGUL SYLLABLE KHIEUKH YO SIOS - 0xB34D: 0xCFD8, //HANGUL SYLLABLE KHIEUKH YO SSANGSIOS - 0xB34E: 0xCFD9, //HANGUL SYLLABLE KHIEUKH YO IEUNG - 0xB34F: 0xCFDA, //HANGUL SYLLABLE KHIEUKH YO CIEUC - 0xB350: 0xCFDB, //HANGUL SYLLABLE KHIEUKH YO CHIEUCH - 0xB351: 0xCFDC, //HANGUL SYLLABLE KHIEUKH YO KHIEUKH - 0xB352: 0xCFDD, //HANGUL SYLLABLE KHIEUKH YO THIEUTH - 0xB353: 0xCFDE, //HANGUL SYLLABLE KHIEUKH YO PHIEUPH - 0xB354: 0xCFDF, //HANGUL SYLLABLE KHIEUKH YO HIEUH - 0xB355: 0xCFE2, //HANGUL SYLLABLE KHIEUKH U SSANGKIYEOK - 0xB356: 0xCFE3, //HANGUL SYLLABLE KHIEUKH U KIYEOKSIOS - 0xB357: 0xCFE5, //HANGUL SYLLABLE KHIEUKH U NIEUNCIEUC - 0xB358: 0xCFE6, //HANGUL SYLLABLE KHIEUKH U NIEUNHIEUH - 0xB359: 0xCFE7, //HANGUL SYLLABLE KHIEUKH U TIKEUT - 0xB35A: 0xCFE9, //HANGUL SYLLABLE KHIEUKH U RIEULKIYEOK - 0xB361: 0xCFEA, //HANGUL SYLLABLE KHIEUKH U RIEULMIEUM - 0xB362: 0xCFEB, //HANGUL SYLLABLE KHIEUKH U RIEULPIEUP - 0xB363: 0xCFEC, //HANGUL SYLLABLE KHIEUKH U RIEULSIOS - 0xB364: 0xCFED, //HANGUL SYLLABLE KHIEUKH U RIEULTHIEUTH - 0xB365: 0xCFEE, //HANGUL SYLLABLE KHIEUKH U RIEULPHIEUPH - 0xB366: 0xCFEF, //HANGUL SYLLABLE KHIEUKH U RIEULHIEUH - 0xB367: 0xCFF2, //HANGUL SYLLABLE KHIEUKH U PIEUPSIOS - 0xB368: 0xCFF4, //HANGUL SYLLABLE KHIEUKH U SSANGSIOS - 0xB369: 0xCFF6, //HANGUL SYLLABLE KHIEUKH U CIEUC - 0xB36A: 0xCFF7, //HANGUL SYLLABLE KHIEUKH U CHIEUCH - 0xB36B: 0xCFF8, //HANGUL SYLLABLE KHIEUKH U KHIEUKH - 0xB36C: 0xCFF9, //HANGUL SYLLABLE KHIEUKH U THIEUTH - 0xB36D: 0xCFFA, //HANGUL SYLLABLE KHIEUKH U PHIEUPH - 0xB36E: 0xCFFB, //HANGUL SYLLABLE KHIEUKH U HIEUH - 0xB36F: 0xCFFD, //HANGUL SYLLABLE KHIEUKH WEO KIYEOK - 0xB370: 0xCFFE, //HANGUL SYLLABLE KHIEUKH WEO SSANGKIYEOK - 0xB371: 0xCFFF, //HANGUL SYLLABLE KHIEUKH WEO KIYEOKSIOS - 0xB372: 0xD001, //HANGUL SYLLABLE KHIEUKH WEO NIEUNCIEUC - 0xB373: 0xD002, //HANGUL SYLLABLE KHIEUKH WEO NIEUNHIEUH - 0xB374: 0xD003, //HANGUL SYLLABLE KHIEUKH WEO TIKEUT - 0xB375: 0xD005, //HANGUL SYLLABLE KHIEUKH WEO RIEULKIYEOK - 0xB376: 0xD006, //HANGUL SYLLABLE KHIEUKH WEO RIEULMIEUM - 0xB377: 0xD007, //HANGUL SYLLABLE KHIEUKH WEO RIEULPIEUP - 0xB378: 0xD008, //HANGUL SYLLABLE KHIEUKH WEO RIEULSIOS - 0xB379: 0xD009, //HANGUL SYLLABLE KHIEUKH WEO RIEULTHIEUTH - 0xB37A: 0xD00A, //HANGUL SYLLABLE KHIEUKH WEO RIEULPHIEUPH - 0xB381: 0xD00B, //HANGUL SYLLABLE KHIEUKH WEO RIEULHIEUH - 0xB382: 0xD00C, //HANGUL SYLLABLE KHIEUKH WEO MIEUM - 0xB383: 0xD00D, //HANGUL SYLLABLE KHIEUKH WEO PIEUP - 0xB384: 0xD00E, //HANGUL SYLLABLE KHIEUKH WEO PIEUPSIOS - 0xB385: 0xD00F, //HANGUL SYLLABLE KHIEUKH WEO SIOS - 0xB386: 0xD010, //HANGUL SYLLABLE KHIEUKH WEO SSANGSIOS - 0xB387: 0xD012, //HANGUL SYLLABLE KHIEUKH WEO CIEUC - 0xB388: 0xD013, //HANGUL SYLLABLE KHIEUKH WEO CHIEUCH - 0xB389: 0xD014, //HANGUL SYLLABLE KHIEUKH WEO KHIEUKH - 0xB38A: 0xD015, //HANGUL SYLLABLE KHIEUKH WEO THIEUTH - 0xB38B: 0xD016, //HANGUL SYLLABLE KHIEUKH WEO PHIEUPH - 0xB38C: 0xD017, //HANGUL SYLLABLE KHIEUKH WEO HIEUH - 0xB38D: 0xD019, //HANGUL SYLLABLE KHIEUKH WE KIYEOK - 0xB38E: 0xD01A, //HANGUL SYLLABLE KHIEUKH WE SSANGKIYEOK - 0xB38F: 0xD01B, //HANGUL SYLLABLE KHIEUKH WE KIYEOKSIOS - 0xB390: 0xD01C, //HANGUL SYLLABLE KHIEUKH WE NIEUN - 0xB391: 0xD01D, //HANGUL SYLLABLE KHIEUKH WE NIEUNCIEUC - 0xB392: 0xD01E, //HANGUL SYLLABLE KHIEUKH WE NIEUNHIEUH - 0xB393: 0xD01F, //HANGUL SYLLABLE KHIEUKH WE TIKEUT - 0xB394: 0xD020, //HANGUL SYLLABLE KHIEUKH WE RIEUL - 0xB395: 0xD021, //HANGUL SYLLABLE KHIEUKH WE RIEULKIYEOK - 0xB396: 0xD022, //HANGUL SYLLABLE KHIEUKH WE RIEULMIEUM - 0xB397: 0xD023, //HANGUL SYLLABLE KHIEUKH WE RIEULPIEUP - 0xB398: 0xD024, //HANGUL SYLLABLE KHIEUKH WE RIEULSIOS - 0xB399: 0xD025, //HANGUL SYLLABLE KHIEUKH WE RIEULTHIEUTH - 0xB39A: 0xD026, //HANGUL SYLLABLE KHIEUKH WE RIEULPHIEUPH - 0xB39B: 0xD027, //HANGUL SYLLABLE KHIEUKH WE RIEULHIEUH - 0xB39C: 0xD028, //HANGUL SYLLABLE KHIEUKH WE MIEUM - 0xB39D: 0xD029, //HANGUL SYLLABLE KHIEUKH WE PIEUP - 0xB39E: 0xD02A, //HANGUL SYLLABLE KHIEUKH WE PIEUPSIOS - 0xB39F: 0xD02B, //HANGUL SYLLABLE KHIEUKH WE SIOS - 0xB3A0: 0xD02C, //HANGUL SYLLABLE KHIEUKH WE SSANGSIOS - 0xB3A1: 0xB05D, //HANGUL SYLLABLE SSANGKIYEOK EU THIEUTH - 0xB3A2: 0xB07C, //HANGUL SYLLABLE SSANGKIYEOK I - 0xB3A3: 0xB07D, //HANGUL SYLLABLE SSANGKIYEOK I KIYEOK - 0xB3A4: 0xB080, //HANGUL SYLLABLE SSANGKIYEOK I NIEUN - 0xB3A5: 0xB084, //HANGUL SYLLABLE SSANGKIYEOK I RIEUL - 0xB3A6: 0xB08C, //HANGUL SYLLABLE SSANGKIYEOK I MIEUM - 0xB3A7: 0xB08D, //HANGUL SYLLABLE SSANGKIYEOK I PIEUP - 0xB3A8: 0xB08F, //HANGUL SYLLABLE SSANGKIYEOK I SIOS - 0xB3A9: 0xB091, //HANGUL SYLLABLE SSANGKIYEOK I IEUNG - 0xB3AA: 0xB098, //HANGUL SYLLABLE NIEUN A - 0xB3AB: 0xB099, //HANGUL SYLLABLE NIEUN A KIYEOK - 0xB3AC: 0xB09A, //HANGUL SYLLABLE NIEUN A SSANGKIYEOK - 0xB3AD: 0xB09C, //HANGUL SYLLABLE NIEUN A NIEUN - 0xB3AE: 0xB09F, //HANGUL SYLLABLE NIEUN A TIKEUT - 0xB3AF: 0xB0A0, //HANGUL SYLLABLE NIEUN A RIEUL - 0xB3B0: 0xB0A1, //HANGUL SYLLABLE NIEUN A RIEULKIYEOK - 0xB3B1: 0xB0A2, //HANGUL SYLLABLE NIEUN A RIEULMIEUM - 0xB3B2: 0xB0A8, //HANGUL SYLLABLE NIEUN A MIEUM - 0xB3B3: 0xB0A9, //HANGUL SYLLABLE NIEUN A PIEUP - 0xB3B4: 0xB0AB, //HANGUL SYLLABLE NIEUN A SIOS - 0xB3B5: 0xB0AC, //HANGUL SYLLABLE NIEUN A SSANGSIOS - 0xB3B6: 0xB0AD, //HANGUL SYLLABLE NIEUN A IEUNG - 0xB3B7: 0xB0AE, //HANGUL SYLLABLE NIEUN A CIEUC - 0xB3B8: 0xB0AF, //HANGUL SYLLABLE NIEUN A CHIEUCH - 0xB3B9: 0xB0B1, //HANGUL SYLLABLE NIEUN A THIEUTH - 0xB3BA: 0xB0B3, //HANGUL SYLLABLE NIEUN A HIEUH - 0xB3BB: 0xB0B4, //HANGUL SYLLABLE NIEUN AE - 0xB3BC: 0xB0B5, //HANGUL SYLLABLE NIEUN AE KIYEOK - 0xB3BD: 0xB0B8, //HANGUL SYLLABLE NIEUN AE NIEUN - 0xB3BE: 0xB0BC, //HANGUL SYLLABLE NIEUN AE RIEUL - 0xB3BF: 0xB0C4, //HANGUL SYLLABLE NIEUN AE MIEUM - 0xB3C0: 0xB0C5, //HANGUL SYLLABLE NIEUN AE PIEUP - 0xB3C1: 0xB0C7, //HANGUL SYLLABLE NIEUN AE SIOS - 0xB3C2: 0xB0C8, //HANGUL SYLLABLE NIEUN AE SSANGSIOS - 0xB3C3: 0xB0C9, //HANGUL SYLLABLE NIEUN AE IEUNG - 0xB3C4: 0xB0D0, //HANGUL SYLLABLE NIEUN YA - 0xB3C5: 0xB0D1, //HANGUL SYLLABLE NIEUN YA KIYEOK - 0xB3C6: 0xB0D4, //HANGUL SYLLABLE NIEUN YA NIEUN - 0xB3C7: 0xB0D8, //HANGUL SYLLABLE NIEUN YA RIEUL - 0xB3C8: 0xB0E0, //HANGUL SYLLABLE NIEUN YA MIEUM - 0xB3C9: 0xB0E5, //HANGUL SYLLABLE NIEUN YA IEUNG - 0xB3CA: 0xB108, //HANGUL SYLLABLE NIEUN EO - 0xB3CB: 0xB109, //HANGUL SYLLABLE NIEUN EO KIYEOK - 0xB3CC: 0xB10B, //HANGUL SYLLABLE NIEUN EO KIYEOKSIOS - 0xB3CD: 0xB10C, //HANGUL SYLLABLE NIEUN EO NIEUN - 0xB3CE: 0xB110, //HANGUL SYLLABLE NIEUN EO RIEUL - 0xB3CF: 0xB112, //HANGUL SYLLABLE NIEUN EO RIEULMIEUM - 0xB3D0: 0xB113, //HANGUL SYLLABLE NIEUN EO RIEULPIEUP - 0xB3D1: 0xB118, //HANGUL SYLLABLE NIEUN EO MIEUM - 0xB3D2: 0xB119, //HANGUL SYLLABLE NIEUN EO PIEUP - 0xB3D3: 0xB11B, //HANGUL SYLLABLE NIEUN EO SIOS - 0xB3D4: 0xB11C, //HANGUL SYLLABLE NIEUN EO SSANGSIOS - 0xB3D5: 0xB11D, //HANGUL SYLLABLE NIEUN EO IEUNG - 0xB3D6: 0xB123, //HANGUL SYLLABLE NIEUN EO HIEUH - 0xB3D7: 0xB124, //HANGUL SYLLABLE NIEUN E - 0xB3D8: 0xB125, //HANGUL SYLLABLE NIEUN E KIYEOK - 0xB3D9: 0xB128, //HANGUL SYLLABLE NIEUN E NIEUN - 0xB3DA: 0xB12C, //HANGUL SYLLABLE NIEUN E RIEUL - 0xB3DB: 0xB134, //HANGUL SYLLABLE NIEUN E MIEUM - 0xB3DC: 0xB135, //HANGUL SYLLABLE NIEUN E PIEUP - 0xB3DD: 0xB137, //HANGUL SYLLABLE NIEUN E SIOS - 0xB3DE: 0xB138, //HANGUL SYLLABLE NIEUN E SSANGSIOS - 0xB3DF: 0xB139, //HANGUL SYLLABLE NIEUN E IEUNG - 0xB3E0: 0xB140, //HANGUL SYLLABLE NIEUN YEO - 0xB3E1: 0xB141, //HANGUL SYLLABLE NIEUN YEO KIYEOK - 0xB3E2: 0xB144, //HANGUL SYLLABLE NIEUN YEO NIEUN - 0xB3E3: 0xB148, //HANGUL SYLLABLE NIEUN YEO RIEUL - 0xB3E4: 0xB150, //HANGUL SYLLABLE NIEUN YEO MIEUM - 0xB3E5: 0xB151, //HANGUL SYLLABLE NIEUN YEO PIEUP - 0xB3E6: 0xB154, //HANGUL SYLLABLE NIEUN YEO SSANGSIOS - 0xB3E7: 0xB155, //HANGUL SYLLABLE NIEUN YEO IEUNG - 0xB3E8: 0xB158, //HANGUL SYLLABLE NIEUN YEO KHIEUKH - 0xB3E9: 0xB15C, //HANGUL SYLLABLE NIEUN YE - 0xB3EA: 0xB160, //HANGUL SYLLABLE NIEUN YE NIEUN - 0xB3EB: 0xB178, //HANGUL SYLLABLE NIEUN O - 0xB3EC: 0xB179, //HANGUL SYLLABLE NIEUN O KIYEOK - 0xB3ED: 0xB17C, //HANGUL SYLLABLE NIEUN O NIEUN - 0xB3EE: 0xB180, //HANGUL SYLLABLE NIEUN O RIEUL - 0xB3EF: 0xB182, //HANGUL SYLLABLE NIEUN O RIEULMIEUM - 0xB3F0: 0xB188, //HANGUL SYLLABLE NIEUN O MIEUM - 0xB3F1: 0xB189, //HANGUL SYLLABLE NIEUN O PIEUP - 0xB3F2: 0xB18B, //HANGUL SYLLABLE NIEUN O SIOS - 0xB3F3: 0xB18D, //HANGUL SYLLABLE NIEUN O IEUNG - 0xB3F4: 0xB192, //HANGUL SYLLABLE NIEUN O PHIEUPH - 0xB3F5: 0xB193, //HANGUL SYLLABLE NIEUN O HIEUH - 0xB3F6: 0xB194, //HANGUL SYLLABLE NIEUN WA - 0xB3F7: 0xB198, //HANGUL SYLLABLE NIEUN WA NIEUN - 0xB3F8: 0xB19C, //HANGUL SYLLABLE NIEUN WA RIEUL - 0xB3F9: 0xB1A8, //HANGUL SYLLABLE NIEUN WA SSANGSIOS - 0xB3FA: 0xB1CC, //HANGUL SYLLABLE NIEUN OE - 0xB3FB: 0xB1D0, //HANGUL SYLLABLE NIEUN OE NIEUN - 0xB3FC: 0xB1D4, //HANGUL SYLLABLE NIEUN OE RIEUL - 0xB3FD: 0xB1DC, //HANGUL SYLLABLE NIEUN OE MIEUM - 0xB3FE: 0xB1DD, //HANGUL SYLLABLE NIEUN OE PIEUP - 0xB441: 0xD02E, //HANGUL SYLLABLE KHIEUKH WE CIEUC - 0xB442: 0xD02F, //HANGUL SYLLABLE KHIEUKH WE CHIEUCH - 0xB443: 0xD030, //HANGUL SYLLABLE KHIEUKH WE KHIEUKH - 0xB444: 0xD031, //HANGUL SYLLABLE KHIEUKH WE THIEUTH - 0xB445: 0xD032, //HANGUL SYLLABLE KHIEUKH WE PHIEUPH - 0xB446: 0xD033, //HANGUL SYLLABLE KHIEUKH WE HIEUH - 0xB447: 0xD036, //HANGUL SYLLABLE KHIEUKH WI SSANGKIYEOK - 0xB448: 0xD037, //HANGUL SYLLABLE KHIEUKH WI KIYEOKSIOS - 0xB449: 0xD039, //HANGUL SYLLABLE KHIEUKH WI NIEUNCIEUC - 0xB44A: 0xD03A, //HANGUL SYLLABLE KHIEUKH WI NIEUNHIEUH - 0xB44B: 0xD03B, //HANGUL SYLLABLE KHIEUKH WI TIKEUT - 0xB44C: 0xD03D, //HANGUL SYLLABLE KHIEUKH WI RIEULKIYEOK - 0xB44D: 0xD03E, //HANGUL SYLLABLE KHIEUKH WI RIEULMIEUM - 0xB44E: 0xD03F, //HANGUL SYLLABLE KHIEUKH WI RIEULPIEUP - 0xB44F: 0xD040, //HANGUL SYLLABLE KHIEUKH WI RIEULSIOS - 0xB450: 0xD041, //HANGUL SYLLABLE KHIEUKH WI RIEULTHIEUTH - 0xB451: 0xD042, //HANGUL SYLLABLE KHIEUKH WI RIEULPHIEUPH - 0xB452: 0xD043, //HANGUL SYLLABLE KHIEUKH WI RIEULHIEUH - 0xB453: 0xD046, //HANGUL SYLLABLE KHIEUKH WI PIEUPSIOS - 0xB454: 0xD048, //HANGUL SYLLABLE KHIEUKH WI SSANGSIOS - 0xB455: 0xD04A, //HANGUL SYLLABLE KHIEUKH WI CIEUC - 0xB456: 0xD04B, //HANGUL SYLLABLE KHIEUKH WI CHIEUCH - 0xB457: 0xD04C, //HANGUL SYLLABLE KHIEUKH WI KHIEUKH - 0xB458: 0xD04D, //HANGUL SYLLABLE KHIEUKH WI THIEUTH - 0xB459: 0xD04E, //HANGUL SYLLABLE KHIEUKH WI PHIEUPH - 0xB45A: 0xD04F, //HANGUL SYLLABLE KHIEUKH WI HIEUH - 0xB461: 0xD051, //HANGUL SYLLABLE KHIEUKH YU KIYEOK - 0xB462: 0xD052, //HANGUL SYLLABLE KHIEUKH YU SSANGKIYEOK - 0xB463: 0xD053, //HANGUL SYLLABLE KHIEUKH YU KIYEOKSIOS - 0xB464: 0xD055, //HANGUL SYLLABLE KHIEUKH YU NIEUNCIEUC - 0xB465: 0xD056, //HANGUL SYLLABLE KHIEUKH YU NIEUNHIEUH - 0xB466: 0xD057, //HANGUL SYLLABLE KHIEUKH YU TIKEUT - 0xB467: 0xD059, //HANGUL SYLLABLE KHIEUKH YU RIEULKIYEOK - 0xB468: 0xD05A, //HANGUL SYLLABLE KHIEUKH YU RIEULMIEUM - 0xB469: 0xD05B, //HANGUL SYLLABLE KHIEUKH YU RIEULPIEUP - 0xB46A: 0xD05C, //HANGUL SYLLABLE KHIEUKH YU RIEULSIOS - 0xB46B: 0xD05D, //HANGUL SYLLABLE KHIEUKH YU RIEULTHIEUTH - 0xB46C: 0xD05E, //HANGUL SYLLABLE KHIEUKH YU RIEULPHIEUPH - 0xB46D: 0xD05F, //HANGUL SYLLABLE KHIEUKH YU RIEULHIEUH - 0xB46E: 0xD061, //HANGUL SYLLABLE KHIEUKH YU PIEUP - 0xB46F: 0xD062, //HANGUL SYLLABLE KHIEUKH YU PIEUPSIOS - 0xB470: 0xD063, //HANGUL SYLLABLE KHIEUKH YU SIOS - 0xB471: 0xD064, //HANGUL SYLLABLE KHIEUKH YU SSANGSIOS - 0xB472: 0xD065, //HANGUL SYLLABLE KHIEUKH YU IEUNG - 0xB473: 0xD066, //HANGUL SYLLABLE KHIEUKH YU CIEUC - 0xB474: 0xD067, //HANGUL SYLLABLE KHIEUKH YU CHIEUCH - 0xB475: 0xD068, //HANGUL SYLLABLE KHIEUKH YU KHIEUKH - 0xB476: 0xD069, //HANGUL SYLLABLE KHIEUKH YU THIEUTH - 0xB477: 0xD06A, //HANGUL SYLLABLE KHIEUKH YU PHIEUPH - 0xB478: 0xD06B, //HANGUL SYLLABLE KHIEUKH YU HIEUH - 0xB479: 0xD06E, //HANGUL SYLLABLE KHIEUKH EU SSANGKIYEOK - 0xB47A: 0xD06F, //HANGUL SYLLABLE KHIEUKH EU KIYEOKSIOS - 0xB481: 0xD071, //HANGUL SYLLABLE KHIEUKH EU NIEUNCIEUC - 0xB482: 0xD072, //HANGUL SYLLABLE KHIEUKH EU NIEUNHIEUH - 0xB483: 0xD073, //HANGUL SYLLABLE KHIEUKH EU TIKEUT - 0xB484: 0xD075, //HANGUL SYLLABLE KHIEUKH EU RIEULKIYEOK - 0xB485: 0xD076, //HANGUL SYLLABLE KHIEUKH EU RIEULMIEUM - 0xB486: 0xD077, //HANGUL SYLLABLE KHIEUKH EU RIEULPIEUP - 0xB487: 0xD078, //HANGUL SYLLABLE KHIEUKH EU RIEULSIOS - 0xB488: 0xD079, //HANGUL SYLLABLE KHIEUKH EU RIEULTHIEUTH - 0xB489: 0xD07A, //HANGUL SYLLABLE KHIEUKH EU RIEULPHIEUPH - 0xB48A: 0xD07B, //HANGUL SYLLABLE KHIEUKH EU RIEULHIEUH - 0xB48B: 0xD07E, //HANGUL SYLLABLE KHIEUKH EU PIEUPSIOS - 0xB48C: 0xD07F, //HANGUL SYLLABLE KHIEUKH EU SIOS - 0xB48D: 0xD080, //HANGUL SYLLABLE KHIEUKH EU SSANGSIOS - 0xB48E: 0xD082, //HANGUL SYLLABLE KHIEUKH EU CIEUC - 0xB48F: 0xD083, //HANGUL SYLLABLE KHIEUKH EU CHIEUCH - 0xB490: 0xD084, //HANGUL SYLLABLE KHIEUKH EU KHIEUKH - 0xB491: 0xD085, //HANGUL SYLLABLE KHIEUKH EU THIEUTH - 0xB492: 0xD086, //HANGUL SYLLABLE KHIEUKH EU PHIEUPH - 0xB493: 0xD087, //HANGUL SYLLABLE KHIEUKH EU HIEUH - 0xB494: 0xD088, //HANGUL SYLLABLE KHIEUKH YI - 0xB495: 0xD089, //HANGUL SYLLABLE KHIEUKH YI KIYEOK - 0xB496: 0xD08A, //HANGUL SYLLABLE KHIEUKH YI SSANGKIYEOK - 0xB497: 0xD08B, //HANGUL SYLLABLE KHIEUKH YI KIYEOKSIOS - 0xB498: 0xD08C, //HANGUL SYLLABLE KHIEUKH YI NIEUN - 0xB499: 0xD08D, //HANGUL SYLLABLE KHIEUKH YI NIEUNCIEUC - 0xB49A: 0xD08E, //HANGUL SYLLABLE KHIEUKH YI NIEUNHIEUH - 0xB49B: 0xD08F, //HANGUL SYLLABLE KHIEUKH YI TIKEUT - 0xB49C: 0xD090, //HANGUL SYLLABLE KHIEUKH YI RIEUL - 0xB49D: 0xD091, //HANGUL SYLLABLE KHIEUKH YI RIEULKIYEOK - 0xB49E: 0xD092, //HANGUL SYLLABLE KHIEUKH YI RIEULMIEUM - 0xB49F: 0xD093, //HANGUL SYLLABLE KHIEUKH YI RIEULPIEUP - 0xB4A0: 0xD094, //HANGUL SYLLABLE KHIEUKH YI RIEULSIOS - 0xB4A1: 0xB1DF, //HANGUL SYLLABLE NIEUN OE SIOS - 0xB4A2: 0xB1E8, //HANGUL SYLLABLE NIEUN YO - 0xB4A3: 0xB1E9, //HANGUL SYLLABLE NIEUN YO KIYEOK - 0xB4A4: 0xB1EC, //HANGUL SYLLABLE NIEUN YO NIEUN - 0xB4A5: 0xB1F0, //HANGUL SYLLABLE NIEUN YO RIEUL - 0xB4A6: 0xB1F9, //HANGUL SYLLABLE NIEUN YO PIEUP - 0xB4A7: 0xB1FB, //HANGUL SYLLABLE NIEUN YO SIOS - 0xB4A8: 0xB1FD, //HANGUL SYLLABLE NIEUN YO IEUNG - 0xB4A9: 0xB204, //HANGUL SYLLABLE NIEUN U - 0xB4AA: 0xB205, //HANGUL SYLLABLE NIEUN U KIYEOK - 0xB4AB: 0xB208, //HANGUL SYLLABLE NIEUN U NIEUN - 0xB4AC: 0xB20B, //HANGUL SYLLABLE NIEUN U TIKEUT - 0xB4AD: 0xB20C, //HANGUL SYLLABLE NIEUN U RIEUL - 0xB4AE: 0xB214, //HANGUL SYLLABLE NIEUN U MIEUM - 0xB4AF: 0xB215, //HANGUL SYLLABLE NIEUN U PIEUP - 0xB4B0: 0xB217, //HANGUL SYLLABLE NIEUN U SIOS - 0xB4B1: 0xB219, //HANGUL SYLLABLE NIEUN U IEUNG - 0xB4B2: 0xB220, //HANGUL SYLLABLE NIEUN WEO - 0xB4B3: 0xB234, //HANGUL SYLLABLE NIEUN WEO SSANGSIOS - 0xB4B4: 0xB23C, //HANGUL SYLLABLE NIEUN WE - 0xB4B5: 0xB258, //HANGUL SYLLABLE NIEUN WI - 0xB4B6: 0xB25C, //HANGUL SYLLABLE NIEUN WI NIEUN - 0xB4B7: 0xB260, //HANGUL SYLLABLE NIEUN WI RIEUL - 0xB4B8: 0xB268, //HANGUL SYLLABLE NIEUN WI MIEUM - 0xB4B9: 0xB269, //HANGUL SYLLABLE NIEUN WI PIEUP - 0xB4BA: 0xB274, //HANGUL SYLLABLE NIEUN YU - 0xB4BB: 0xB275, //HANGUL SYLLABLE NIEUN YU KIYEOK - 0xB4BC: 0xB27C, //HANGUL SYLLABLE NIEUN YU RIEUL - 0xB4BD: 0xB284, //HANGUL SYLLABLE NIEUN YU MIEUM - 0xB4BE: 0xB285, //HANGUL SYLLABLE NIEUN YU PIEUP - 0xB4BF: 0xB289, //HANGUL SYLLABLE NIEUN YU IEUNG - 0xB4C0: 0xB290, //HANGUL SYLLABLE NIEUN EU - 0xB4C1: 0xB291, //HANGUL SYLLABLE NIEUN EU KIYEOK - 0xB4C2: 0xB294, //HANGUL SYLLABLE NIEUN EU NIEUN - 0xB4C3: 0xB298, //HANGUL SYLLABLE NIEUN EU RIEUL - 0xB4C4: 0xB299, //HANGUL SYLLABLE NIEUN EU RIEULKIYEOK - 0xB4C5: 0xB29A, //HANGUL SYLLABLE NIEUN EU RIEULMIEUM - 0xB4C6: 0xB2A0, //HANGUL SYLLABLE NIEUN EU MIEUM - 0xB4C7: 0xB2A1, //HANGUL SYLLABLE NIEUN EU PIEUP - 0xB4C8: 0xB2A3, //HANGUL SYLLABLE NIEUN EU SIOS - 0xB4C9: 0xB2A5, //HANGUL SYLLABLE NIEUN EU IEUNG - 0xB4CA: 0xB2A6, //HANGUL SYLLABLE NIEUN EU CIEUC - 0xB4CB: 0xB2AA, //HANGUL SYLLABLE NIEUN EU PHIEUPH - 0xB4CC: 0xB2AC, //HANGUL SYLLABLE NIEUN YI - 0xB4CD: 0xB2B0, //HANGUL SYLLABLE NIEUN YI NIEUN - 0xB4CE: 0xB2B4, //HANGUL SYLLABLE NIEUN YI RIEUL - 0xB4CF: 0xB2C8, //HANGUL SYLLABLE NIEUN I - 0xB4D0: 0xB2C9, //HANGUL SYLLABLE NIEUN I KIYEOK - 0xB4D1: 0xB2CC, //HANGUL SYLLABLE NIEUN I NIEUN - 0xB4D2: 0xB2D0, //HANGUL SYLLABLE NIEUN I RIEUL - 0xB4D3: 0xB2D2, //HANGUL SYLLABLE NIEUN I RIEULMIEUM - 0xB4D4: 0xB2D8, //HANGUL SYLLABLE NIEUN I MIEUM - 0xB4D5: 0xB2D9, //HANGUL SYLLABLE NIEUN I PIEUP - 0xB4D6: 0xB2DB, //HANGUL SYLLABLE NIEUN I SIOS - 0xB4D7: 0xB2DD, //HANGUL SYLLABLE NIEUN I IEUNG - 0xB4D8: 0xB2E2, //HANGUL SYLLABLE NIEUN I PHIEUPH - 0xB4D9: 0xB2E4, //HANGUL SYLLABLE TIKEUT A - 0xB4DA: 0xB2E5, //HANGUL SYLLABLE TIKEUT A KIYEOK - 0xB4DB: 0xB2E6, //HANGUL SYLLABLE TIKEUT A SSANGKIYEOK - 0xB4DC: 0xB2E8, //HANGUL SYLLABLE TIKEUT A NIEUN - 0xB4DD: 0xB2EB, //HANGUL SYLLABLE TIKEUT A TIKEUT - 0xB4DE: 0xB2EC, //HANGUL SYLLABLE TIKEUT A RIEUL - 0xB4DF: 0xB2ED, //HANGUL SYLLABLE TIKEUT A RIEULKIYEOK - 0xB4E0: 0xB2EE, //HANGUL SYLLABLE TIKEUT A RIEULMIEUM - 0xB4E1: 0xB2EF, //HANGUL SYLLABLE TIKEUT A RIEULPIEUP - 0xB4E2: 0xB2F3, //HANGUL SYLLABLE TIKEUT A RIEULHIEUH - 0xB4E3: 0xB2F4, //HANGUL SYLLABLE TIKEUT A MIEUM - 0xB4E4: 0xB2F5, //HANGUL SYLLABLE TIKEUT A PIEUP - 0xB4E5: 0xB2F7, //HANGUL SYLLABLE TIKEUT A SIOS - 0xB4E6: 0xB2F8, //HANGUL SYLLABLE TIKEUT A SSANGSIOS - 0xB4E7: 0xB2F9, //HANGUL SYLLABLE TIKEUT A IEUNG - 0xB4E8: 0xB2FA, //HANGUL SYLLABLE TIKEUT A CIEUC - 0xB4E9: 0xB2FB, //HANGUL SYLLABLE TIKEUT A CHIEUCH - 0xB4EA: 0xB2FF, //HANGUL SYLLABLE TIKEUT A HIEUH - 0xB4EB: 0xB300, //HANGUL SYLLABLE TIKEUT AE - 0xB4EC: 0xB301, //HANGUL SYLLABLE TIKEUT AE KIYEOK - 0xB4ED: 0xB304, //HANGUL SYLLABLE TIKEUT AE NIEUN - 0xB4EE: 0xB308, //HANGUL SYLLABLE TIKEUT AE RIEUL - 0xB4EF: 0xB310, //HANGUL SYLLABLE TIKEUT AE MIEUM - 0xB4F0: 0xB311, //HANGUL SYLLABLE TIKEUT AE PIEUP - 0xB4F1: 0xB313, //HANGUL SYLLABLE TIKEUT AE SIOS - 0xB4F2: 0xB314, //HANGUL SYLLABLE TIKEUT AE SSANGSIOS - 0xB4F3: 0xB315, //HANGUL SYLLABLE TIKEUT AE IEUNG - 0xB4F4: 0xB31C, //HANGUL SYLLABLE TIKEUT YA - 0xB4F5: 0xB354, //HANGUL SYLLABLE TIKEUT EO - 0xB4F6: 0xB355, //HANGUL SYLLABLE TIKEUT EO KIYEOK - 0xB4F7: 0xB356, //HANGUL SYLLABLE TIKEUT EO SSANGKIYEOK - 0xB4F8: 0xB358, //HANGUL SYLLABLE TIKEUT EO NIEUN - 0xB4F9: 0xB35B, //HANGUL SYLLABLE TIKEUT EO TIKEUT - 0xB4FA: 0xB35C, //HANGUL SYLLABLE TIKEUT EO RIEUL - 0xB4FB: 0xB35E, //HANGUL SYLLABLE TIKEUT EO RIEULMIEUM - 0xB4FC: 0xB35F, //HANGUL SYLLABLE TIKEUT EO RIEULPIEUP - 0xB4FD: 0xB364, //HANGUL SYLLABLE TIKEUT EO MIEUM - 0xB4FE: 0xB365, //HANGUL SYLLABLE TIKEUT EO PIEUP - 0xB541: 0xD095, //HANGUL SYLLABLE KHIEUKH YI RIEULTHIEUTH - 0xB542: 0xD096, //HANGUL SYLLABLE KHIEUKH YI RIEULPHIEUPH - 0xB543: 0xD097, //HANGUL SYLLABLE KHIEUKH YI RIEULHIEUH - 0xB544: 0xD098, //HANGUL SYLLABLE KHIEUKH YI MIEUM - 0xB545: 0xD099, //HANGUL SYLLABLE KHIEUKH YI PIEUP - 0xB546: 0xD09A, //HANGUL SYLLABLE KHIEUKH YI PIEUPSIOS - 0xB547: 0xD09B, //HANGUL SYLLABLE KHIEUKH YI SIOS - 0xB548: 0xD09C, //HANGUL SYLLABLE KHIEUKH YI SSANGSIOS - 0xB549: 0xD09D, //HANGUL SYLLABLE KHIEUKH YI IEUNG - 0xB54A: 0xD09E, //HANGUL SYLLABLE KHIEUKH YI CIEUC - 0xB54B: 0xD09F, //HANGUL SYLLABLE KHIEUKH YI CHIEUCH - 0xB54C: 0xD0A0, //HANGUL SYLLABLE KHIEUKH YI KHIEUKH - 0xB54D: 0xD0A1, //HANGUL SYLLABLE KHIEUKH YI THIEUTH - 0xB54E: 0xD0A2, //HANGUL SYLLABLE KHIEUKH YI PHIEUPH - 0xB54F: 0xD0A3, //HANGUL SYLLABLE KHIEUKH YI HIEUH - 0xB550: 0xD0A6, //HANGUL SYLLABLE KHIEUKH I SSANGKIYEOK - 0xB551: 0xD0A7, //HANGUL SYLLABLE KHIEUKH I KIYEOKSIOS - 0xB552: 0xD0A9, //HANGUL SYLLABLE KHIEUKH I NIEUNCIEUC - 0xB553: 0xD0AA, //HANGUL SYLLABLE KHIEUKH I NIEUNHIEUH - 0xB554: 0xD0AB, //HANGUL SYLLABLE KHIEUKH I TIKEUT - 0xB555: 0xD0AD, //HANGUL SYLLABLE KHIEUKH I RIEULKIYEOK - 0xB556: 0xD0AE, //HANGUL SYLLABLE KHIEUKH I RIEULMIEUM - 0xB557: 0xD0AF, //HANGUL SYLLABLE KHIEUKH I RIEULPIEUP - 0xB558: 0xD0B0, //HANGUL SYLLABLE KHIEUKH I RIEULSIOS - 0xB559: 0xD0B1, //HANGUL SYLLABLE KHIEUKH I RIEULTHIEUTH - 0xB55A: 0xD0B2, //HANGUL SYLLABLE KHIEUKH I RIEULPHIEUPH - 0xB561: 0xD0B3, //HANGUL SYLLABLE KHIEUKH I RIEULHIEUH - 0xB562: 0xD0B6, //HANGUL SYLLABLE KHIEUKH I PIEUPSIOS - 0xB563: 0xD0B8, //HANGUL SYLLABLE KHIEUKH I SSANGSIOS - 0xB564: 0xD0BA, //HANGUL SYLLABLE KHIEUKH I CIEUC - 0xB565: 0xD0BB, //HANGUL SYLLABLE KHIEUKH I CHIEUCH - 0xB566: 0xD0BC, //HANGUL SYLLABLE KHIEUKH I KHIEUKH - 0xB567: 0xD0BD, //HANGUL SYLLABLE KHIEUKH I THIEUTH - 0xB568: 0xD0BE, //HANGUL SYLLABLE KHIEUKH I PHIEUPH - 0xB569: 0xD0BF, //HANGUL SYLLABLE KHIEUKH I HIEUH - 0xB56A: 0xD0C2, //HANGUL SYLLABLE THIEUTH A SSANGKIYEOK - 0xB56B: 0xD0C3, //HANGUL SYLLABLE THIEUTH A KIYEOKSIOS - 0xB56C: 0xD0C5, //HANGUL SYLLABLE THIEUTH A NIEUNCIEUC - 0xB56D: 0xD0C6, //HANGUL SYLLABLE THIEUTH A NIEUNHIEUH - 0xB56E: 0xD0C7, //HANGUL SYLLABLE THIEUTH A TIKEUT - 0xB56F: 0xD0CA, //HANGUL SYLLABLE THIEUTH A RIEULMIEUM - 0xB570: 0xD0CB, //HANGUL SYLLABLE THIEUTH A RIEULPIEUP - 0xB571: 0xD0CC, //HANGUL SYLLABLE THIEUTH A RIEULSIOS - 0xB572: 0xD0CD, //HANGUL SYLLABLE THIEUTH A RIEULTHIEUTH - 0xB573: 0xD0CE, //HANGUL SYLLABLE THIEUTH A RIEULPHIEUPH - 0xB574: 0xD0CF, //HANGUL SYLLABLE THIEUTH A RIEULHIEUH - 0xB575: 0xD0D2, //HANGUL SYLLABLE THIEUTH A PIEUPSIOS - 0xB576: 0xD0D6, //HANGUL SYLLABLE THIEUTH A CIEUC - 0xB577: 0xD0D7, //HANGUL SYLLABLE THIEUTH A CHIEUCH - 0xB578: 0xD0D8, //HANGUL SYLLABLE THIEUTH A KHIEUKH - 0xB579: 0xD0D9, //HANGUL SYLLABLE THIEUTH A THIEUTH - 0xB57A: 0xD0DA, //HANGUL SYLLABLE THIEUTH A PHIEUPH - 0xB581: 0xD0DB, //HANGUL SYLLABLE THIEUTH A HIEUH - 0xB582: 0xD0DE, //HANGUL SYLLABLE THIEUTH AE SSANGKIYEOK - 0xB583: 0xD0DF, //HANGUL SYLLABLE THIEUTH AE KIYEOKSIOS - 0xB584: 0xD0E1, //HANGUL SYLLABLE THIEUTH AE NIEUNCIEUC - 0xB585: 0xD0E2, //HANGUL SYLLABLE THIEUTH AE NIEUNHIEUH - 0xB586: 0xD0E3, //HANGUL SYLLABLE THIEUTH AE TIKEUT - 0xB587: 0xD0E5, //HANGUL SYLLABLE THIEUTH AE RIEULKIYEOK - 0xB588: 0xD0E6, //HANGUL SYLLABLE THIEUTH AE RIEULMIEUM - 0xB589: 0xD0E7, //HANGUL SYLLABLE THIEUTH AE RIEULPIEUP - 0xB58A: 0xD0E8, //HANGUL SYLLABLE THIEUTH AE RIEULSIOS - 0xB58B: 0xD0E9, //HANGUL SYLLABLE THIEUTH AE RIEULTHIEUTH - 0xB58C: 0xD0EA, //HANGUL SYLLABLE THIEUTH AE RIEULPHIEUPH - 0xB58D: 0xD0EB, //HANGUL SYLLABLE THIEUTH AE RIEULHIEUH - 0xB58E: 0xD0EE, //HANGUL SYLLABLE THIEUTH AE PIEUPSIOS - 0xB58F: 0xD0F2, //HANGUL SYLLABLE THIEUTH AE CIEUC - 0xB590: 0xD0F3, //HANGUL SYLLABLE THIEUTH AE CHIEUCH - 0xB591: 0xD0F4, //HANGUL SYLLABLE THIEUTH AE KHIEUKH - 0xB592: 0xD0F5, //HANGUL SYLLABLE THIEUTH AE THIEUTH - 0xB593: 0xD0F6, //HANGUL SYLLABLE THIEUTH AE PHIEUPH - 0xB594: 0xD0F7, //HANGUL SYLLABLE THIEUTH AE HIEUH - 0xB595: 0xD0F9, //HANGUL SYLLABLE THIEUTH YA KIYEOK - 0xB596: 0xD0FA, //HANGUL SYLLABLE THIEUTH YA SSANGKIYEOK - 0xB597: 0xD0FB, //HANGUL SYLLABLE THIEUTH YA KIYEOKSIOS - 0xB598: 0xD0FC, //HANGUL SYLLABLE THIEUTH YA NIEUN - 0xB599: 0xD0FD, //HANGUL SYLLABLE THIEUTH YA NIEUNCIEUC - 0xB59A: 0xD0FE, //HANGUL SYLLABLE THIEUTH YA NIEUNHIEUH - 0xB59B: 0xD0FF, //HANGUL SYLLABLE THIEUTH YA TIKEUT - 0xB59C: 0xD100, //HANGUL SYLLABLE THIEUTH YA RIEUL - 0xB59D: 0xD101, //HANGUL SYLLABLE THIEUTH YA RIEULKIYEOK - 0xB59E: 0xD102, //HANGUL SYLLABLE THIEUTH YA RIEULMIEUM - 0xB59F: 0xD103, //HANGUL SYLLABLE THIEUTH YA RIEULPIEUP - 0xB5A0: 0xD104, //HANGUL SYLLABLE THIEUTH YA RIEULSIOS - 0xB5A1: 0xB367, //HANGUL SYLLABLE TIKEUT EO SIOS - 0xB5A2: 0xB369, //HANGUL SYLLABLE TIKEUT EO IEUNG - 0xB5A3: 0xB36B, //HANGUL SYLLABLE TIKEUT EO CHIEUCH - 0xB5A4: 0xB36E, //HANGUL SYLLABLE TIKEUT EO PHIEUPH - 0xB5A5: 0xB370, //HANGUL SYLLABLE TIKEUT E - 0xB5A6: 0xB371, //HANGUL SYLLABLE TIKEUT E KIYEOK - 0xB5A7: 0xB374, //HANGUL SYLLABLE TIKEUT E NIEUN - 0xB5A8: 0xB378, //HANGUL SYLLABLE TIKEUT E RIEUL - 0xB5A9: 0xB380, //HANGUL SYLLABLE TIKEUT E MIEUM - 0xB5AA: 0xB381, //HANGUL SYLLABLE TIKEUT E PIEUP - 0xB5AB: 0xB383, //HANGUL SYLLABLE TIKEUT E SIOS - 0xB5AC: 0xB384, //HANGUL SYLLABLE TIKEUT E SSANGSIOS - 0xB5AD: 0xB385, //HANGUL SYLLABLE TIKEUT E IEUNG - 0xB5AE: 0xB38C, //HANGUL SYLLABLE TIKEUT YEO - 0xB5AF: 0xB390, //HANGUL SYLLABLE TIKEUT YEO NIEUN - 0xB5B0: 0xB394, //HANGUL SYLLABLE TIKEUT YEO RIEUL - 0xB5B1: 0xB3A0, //HANGUL SYLLABLE TIKEUT YEO SSANGSIOS - 0xB5B2: 0xB3A1, //HANGUL SYLLABLE TIKEUT YEO IEUNG - 0xB5B3: 0xB3A8, //HANGUL SYLLABLE TIKEUT YE - 0xB5B4: 0xB3AC, //HANGUL SYLLABLE TIKEUT YE NIEUN - 0xB5B5: 0xB3C4, //HANGUL SYLLABLE TIKEUT O - 0xB5B6: 0xB3C5, //HANGUL SYLLABLE TIKEUT O KIYEOK - 0xB5B7: 0xB3C8, //HANGUL SYLLABLE TIKEUT O NIEUN - 0xB5B8: 0xB3CB, //HANGUL SYLLABLE TIKEUT O TIKEUT - 0xB5B9: 0xB3CC, //HANGUL SYLLABLE TIKEUT O RIEUL - 0xB5BA: 0xB3CE, //HANGUL SYLLABLE TIKEUT O RIEULMIEUM - 0xB5BB: 0xB3D0, //HANGUL SYLLABLE TIKEUT O RIEULSIOS - 0xB5BC: 0xB3D4, //HANGUL SYLLABLE TIKEUT O MIEUM - 0xB5BD: 0xB3D5, //HANGUL SYLLABLE TIKEUT O PIEUP - 0xB5BE: 0xB3D7, //HANGUL SYLLABLE TIKEUT O SIOS - 0xB5BF: 0xB3D9, //HANGUL SYLLABLE TIKEUT O IEUNG - 0xB5C0: 0xB3DB, //HANGUL SYLLABLE TIKEUT O CHIEUCH - 0xB5C1: 0xB3DD, //HANGUL SYLLABLE TIKEUT O THIEUTH - 0xB5C2: 0xB3E0, //HANGUL SYLLABLE TIKEUT WA - 0xB5C3: 0xB3E4, //HANGUL SYLLABLE TIKEUT WA NIEUN - 0xB5C4: 0xB3E8, //HANGUL SYLLABLE TIKEUT WA RIEUL - 0xB5C5: 0xB3FC, //HANGUL SYLLABLE TIKEUT WAE - 0xB5C6: 0xB410, //HANGUL SYLLABLE TIKEUT WAE SSANGSIOS - 0xB5C7: 0xB418, //HANGUL SYLLABLE TIKEUT OE - 0xB5C8: 0xB41C, //HANGUL SYLLABLE TIKEUT OE NIEUN - 0xB5C9: 0xB420, //HANGUL SYLLABLE TIKEUT OE RIEUL - 0xB5CA: 0xB428, //HANGUL SYLLABLE TIKEUT OE MIEUM - 0xB5CB: 0xB429, //HANGUL SYLLABLE TIKEUT OE PIEUP - 0xB5CC: 0xB42B, //HANGUL SYLLABLE TIKEUT OE SIOS - 0xB5CD: 0xB434, //HANGUL SYLLABLE TIKEUT YO - 0xB5CE: 0xB450, //HANGUL SYLLABLE TIKEUT U - 0xB5CF: 0xB451, //HANGUL SYLLABLE TIKEUT U KIYEOK - 0xB5D0: 0xB454, //HANGUL SYLLABLE TIKEUT U NIEUN - 0xB5D1: 0xB458, //HANGUL SYLLABLE TIKEUT U RIEUL - 0xB5D2: 0xB460, //HANGUL SYLLABLE TIKEUT U MIEUM - 0xB5D3: 0xB461, //HANGUL SYLLABLE TIKEUT U PIEUP - 0xB5D4: 0xB463, //HANGUL SYLLABLE TIKEUT U SIOS - 0xB5D5: 0xB465, //HANGUL SYLLABLE TIKEUT U IEUNG - 0xB5D6: 0xB46C, //HANGUL SYLLABLE TIKEUT WEO - 0xB5D7: 0xB480, //HANGUL SYLLABLE TIKEUT WEO SSANGSIOS - 0xB5D8: 0xB488, //HANGUL SYLLABLE TIKEUT WE - 0xB5D9: 0xB49D, //HANGUL SYLLABLE TIKEUT WE IEUNG - 0xB5DA: 0xB4A4, //HANGUL SYLLABLE TIKEUT WI - 0xB5DB: 0xB4A8, //HANGUL SYLLABLE TIKEUT WI NIEUN - 0xB5DC: 0xB4AC, //HANGUL SYLLABLE TIKEUT WI RIEUL - 0xB5DD: 0xB4B5, //HANGUL SYLLABLE TIKEUT WI PIEUP - 0xB5DE: 0xB4B7, //HANGUL SYLLABLE TIKEUT WI SIOS - 0xB5DF: 0xB4B9, //HANGUL SYLLABLE TIKEUT WI IEUNG - 0xB5E0: 0xB4C0, //HANGUL SYLLABLE TIKEUT YU - 0xB5E1: 0xB4C4, //HANGUL SYLLABLE TIKEUT YU NIEUN - 0xB5E2: 0xB4C8, //HANGUL SYLLABLE TIKEUT YU RIEUL - 0xB5E3: 0xB4D0, //HANGUL SYLLABLE TIKEUT YU MIEUM - 0xB5E4: 0xB4D5, //HANGUL SYLLABLE TIKEUT YU IEUNG - 0xB5E5: 0xB4DC, //HANGUL SYLLABLE TIKEUT EU - 0xB5E6: 0xB4DD, //HANGUL SYLLABLE TIKEUT EU KIYEOK - 0xB5E7: 0xB4E0, //HANGUL SYLLABLE TIKEUT EU NIEUN - 0xB5E8: 0xB4E3, //HANGUL SYLLABLE TIKEUT EU TIKEUT - 0xB5E9: 0xB4E4, //HANGUL SYLLABLE TIKEUT EU RIEUL - 0xB5EA: 0xB4E6, //HANGUL SYLLABLE TIKEUT EU RIEULMIEUM - 0xB5EB: 0xB4EC, //HANGUL SYLLABLE TIKEUT EU MIEUM - 0xB5EC: 0xB4ED, //HANGUL SYLLABLE TIKEUT EU PIEUP - 0xB5ED: 0xB4EF, //HANGUL SYLLABLE TIKEUT EU SIOS - 0xB5EE: 0xB4F1, //HANGUL SYLLABLE TIKEUT EU IEUNG - 0xB5EF: 0xB4F8, //HANGUL SYLLABLE TIKEUT YI - 0xB5F0: 0xB514, //HANGUL SYLLABLE TIKEUT I - 0xB5F1: 0xB515, //HANGUL SYLLABLE TIKEUT I KIYEOK - 0xB5F2: 0xB518, //HANGUL SYLLABLE TIKEUT I NIEUN - 0xB5F3: 0xB51B, //HANGUL SYLLABLE TIKEUT I TIKEUT - 0xB5F4: 0xB51C, //HANGUL SYLLABLE TIKEUT I RIEUL - 0xB5F5: 0xB524, //HANGUL SYLLABLE TIKEUT I MIEUM - 0xB5F6: 0xB525, //HANGUL SYLLABLE TIKEUT I PIEUP - 0xB5F7: 0xB527, //HANGUL SYLLABLE TIKEUT I SIOS - 0xB5F8: 0xB528, //HANGUL SYLLABLE TIKEUT I SSANGSIOS - 0xB5F9: 0xB529, //HANGUL SYLLABLE TIKEUT I IEUNG - 0xB5FA: 0xB52A, //HANGUL SYLLABLE TIKEUT I CIEUC - 0xB5FB: 0xB530, //HANGUL SYLLABLE SSANGTIKEUT A - 0xB5FC: 0xB531, //HANGUL SYLLABLE SSANGTIKEUT A KIYEOK - 0xB5FD: 0xB534, //HANGUL SYLLABLE SSANGTIKEUT A NIEUN - 0xB5FE: 0xB538, //HANGUL SYLLABLE SSANGTIKEUT A RIEUL - 0xB641: 0xD105, //HANGUL SYLLABLE THIEUTH YA RIEULTHIEUTH - 0xB642: 0xD106, //HANGUL SYLLABLE THIEUTH YA RIEULPHIEUPH - 0xB643: 0xD107, //HANGUL SYLLABLE THIEUTH YA RIEULHIEUH - 0xB644: 0xD108, //HANGUL SYLLABLE THIEUTH YA MIEUM - 0xB645: 0xD109, //HANGUL SYLLABLE THIEUTH YA PIEUP - 0xB646: 0xD10A, //HANGUL SYLLABLE THIEUTH YA PIEUPSIOS - 0xB647: 0xD10B, //HANGUL SYLLABLE THIEUTH YA SIOS - 0xB648: 0xD10C, //HANGUL SYLLABLE THIEUTH YA SSANGSIOS - 0xB649: 0xD10E, //HANGUL SYLLABLE THIEUTH YA CIEUC - 0xB64A: 0xD10F, //HANGUL SYLLABLE THIEUTH YA CHIEUCH - 0xB64B: 0xD110, //HANGUL SYLLABLE THIEUTH YA KHIEUKH - 0xB64C: 0xD111, //HANGUL SYLLABLE THIEUTH YA THIEUTH - 0xB64D: 0xD112, //HANGUL SYLLABLE THIEUTH YA PHIEUPH - 0xB64E: 0xD113, //HANGUL SYLLABLE THIEUTH YA HIEUH - 0xB64F: 0xD114, //HANGUL SYLLABLE THIEUTH YAE - 0xB650: 0xD115, //HANGUL SYLLABLE THIEUTH YAE KIYEOK - 0xB651: 0xD116, //HANGUL SYLLABLE THIEUTH YAE SSANGKIYEOK - 0xB652: 0xD117, //HANGUL SYLLABLE THIEUTH YAE KIYEOKSIOS - 0xB653: 0xD118, //HANGUL SYLLABLE THIEUTH YAE NIEUN - 0xB654: 0xD119, //HANGUL SYLLABLE THIEUTH YAE NIEUNCIEUC - 0xB655: 0xD11A, //HANGUL SYLLABLE THIEUTH YAE NIEUNHIEUH - 0xB656: 0xD11B, //HANGUL SYLLABLE THIEUTH YAE TIKEUT - 0xB657: 0xD11C, //HANGUL SYLLABLE THIEUTH YAE RIEUL - 0xB658: 0xD11D, //HANGUL SYLLABLE THIEUTH YAE RIEULKIYEOK - 0xB659: 0xD11E, //HANGUL SYLLABLE THIEUTH YAE RIEULMIEUM - 0xB65A: 0xD11F, //HANGUL SYLLABLE THIEUTH YAE RIEULPIEUP - 0xB661: 0xD120, //HANGUL SYLLABLE THIEUTH YAE RIEULSIOS - 0xB662: 0xD121, //HANGUL SYLLABLE THIEUTH YAE RIEULTHIEUTH - 0xB663: 0xD122, //HANGUL SYLLABLE THIEUTH YAE RIEULPHIEUPH - 0xB664: 0xD123, //HANGUL SYLLABLE THIEUTH YAE RIEULHIEUH - 0xB665: 0xD124, //HANGUL SYLLABLE THIEUTH YAE MIEUM - 0xB666: 0xD125, //HANGUL SYLLABLE THIEUTH YAE PIEUP - 0xB667: 0xD126, //HANGUL SYLLABLE THIEUTH YAE PIEUPSIOS - 0xB668: 0xD127, //HANGUL SYLLABLE THIEUTH YAE SIOS - 0xB669: 0xD128, //HANGUL SYLLABLE THIEUTH YAE SSANGSIOS - 0xB66A: 0xD129, //HANGUL SYLLABLE THIEUTH YAE IEUNG - 0xB66B: 0xD12A, //HANGUL SYLLABLE THIEUTH YAE CIEUC - 0xB66C: 0xD12B, //HANGUL SYLLABLE THIEUTH YAE CHIEUCH - 0xB66D: 0xD12C, //HANGUL SYLLABLE THIEUTH YAE KHIEUKH - 0xB66E: 0xD12D, //HANGUL SYLLABLE THIEUTH YAE THIEUTH - 0xB66F: 0xD12E, //HANGUL SYLLABLE THIEUTH YAE PHIEUPH - 0xB670: 0xD12F, //HANGUL SYLLABLE THIEUTH YAE HIEUH - 0xB671: 0xD132, //HANGUL SYLLABLE THIEUTH EO SSANGKIYEOK - 0xB672: 0xD133, //HANGUL SYLLABLE THIEUTH EO KIYEOKSIOS - 0xB673: 0xD135, //HANGUL SYLLABLE THIEUTH EO NIEUNCIEUC - 0xB674: 0xD136, //HANGUL SYLLABLE THIEUTH EO NIEUNHIEUH - 0xB675: 0xD137, //HANGUL SYLLABLE THIEUTH EO TIKEUT - 0xB676: 0xD139, //HANGUL SYLLABLE THIEUTH EO RIEULKIYEOK - 0xB677: 0xD13B, //HANGUL SYLLABLE THIEUTH EO RIEULPIEUP - 0xB678: 0xD13C, //HANGUL SYLLABLE THIEUTH EO RIEULSIOS - 0xB679: 0xD13D, //HANGUL SYLLABLE THIEUTH EO RIEULTHIEUTH - 0xB67A: 0xD13E, //HANGUL SYLLABLE THIEUTH EO RIEULPHIEUPH - 0xB681: 0xD13F, //HANGUL SYLLABLE THIEUTH EO RIEULHIEUH - 0xB682: 0xD142, //HANGUL SYLLABLE THIEUTH EO PIEUPSIOS - 0xB683: 0xD146, //HANGUL SYLLABLE THIEUTH EO CIEUC - 0xB684: 0xD147, //HANGUL SYLLABLE THIEUTH EO CHIEUCH - 0xB685: 0xD148, //HANGUL SYLLABLE THIEUTH EO KHIEUKH - 0xB686: 0xD149, //HANGUL SYLLABLE THIEUTH EO THIEUTH - 0xB687: 0xD14A, //HANGUL SYLLABLE THIEUTH EO PHIEUPH - 0xB688: 0xD14B, //HANGUL SYLLABLE THIEUTH EO HIEUH - 0xB689: 0xD14E, //HANGUL SYLLABLE THIEUTH E SSANGKIYEOK - 0xB68A: 0xD14F, //HANGUL SYLLABLE THIEUTH E KIYEOKSIOS - 0xB68B: 0xD151, //HANGUL SYLLABLE THIEUTH E NIEUNCIEUC - 0xB68C: 0xD152, //HANGUL SYLLABLE THIEUTH E NIEUNHIEUH - 0xB68D: 0xD153, //HANGUL SYLLABLE THIEUTH E TIKEUT - 0xB68E: 0xD155, //HANGUL SYLLABLE THIEUTH E RIEULKIYEOK - 0xB68F: 0xD156, //HANGUL SYLLABLE THIEUTH E RIEULMIEUM - 0xB690: 0xD157, //HANGUL SYLLABLE THIEUTH E RIEULPIEUP - 0xB691: 0xD158, //HANGUL SYLLABLE THIEUTH E RIEULSIOS - 0xB692: 0xD159, //HANGUL SYLLABLE THIEUTH E RIEULTHIEUTH - 0xB693: 0xD15A, //HANGUL SYLLABLE THIEUTH E RIEULPHIEUPH - 0xB694: 0xD15B, //HANGUL SYLLABLE THIEUTH E RIEULHIEUH - 0xB695: 0xD15E, //HANGUL SYLLABLE THIEUTH E PIEUPSIOS - 0xB696: 0xD160, //HANGUL SYLLABLE THIEUTH E SSANGSIOS - 0xB697: 0xD162, //HANGUL SYLLABLE THIEUTH E CIEUC - 0xB698: 0xD163, //HANGUL SYLLABLE THIEUTH E CHIEUCH - 0xB699: 0xD164, //HANGUL SYLLABLE THIEUTH E KHIEUKH - 0xB69A: 0xD165, //HANGUL SYLLABLE THIEUTH E THIEUTH - 0xB69B: 0xD166, //HANGUL SYLLABLE THIEUTH E PHIEUPH - 0xB69C: 0xD167, //HANGUL SYLLABLE THIEUTH E HIEUH - 0xB69D: 0xD169, //HANGUL SYLLABLE THIEUTH YEO KIYEOK - 0xB69E: 0xD16A, //HANGUL SYLLABLE THIEUTH YEO SSANGKIYEOK - 0xB69F: 0xD16B, //HANGUL SYLLABLE THIEUTH YEO KIYEOKSIOS - 0xB6A0: 0xD16D, //HANGUL SYLLABLE THIEUTH YEO NIEUNCIEUC - 0xB6A1: 0xB540, //HANGUL SYLLABLE SSANGTIKEUT A MIEUM - 0xB6A2: 0xB541, //HANGUL SYLLABLE SSANGTIKEUT A PIEUP - 0xB6A3: 0xB543, //HANGUL SYLLABLE SSANGTIKEUT A SIOS - 0xB6A4: 0xB544, //HANGUL SYLLABLE SSANGTIKEUT A SSANGSIOS - 0xB6A5: 0xB545, //HANGUL SYLLABLE SSANGTIKEUT A IEUNG - 0xB6A6: 0xB54B, //HANGUL SYLLABLE SSANGTIKEUT A HIEUH - 0xB6A7: 0xB54C, //HANGUL SYLLABLE SSANGTIKEUT AE - 0xB6A8: 0xB54D, //HANGUL SYLLABLE SSANGTIKEUT AE KIYEOK - 0xB6A9: 0xB550, //HANGUL SYLLABLE SSANGTIKEUT AE NIEUN - 0xB6AA: 0xB554, //HANGUL SYLLABLE SSANGTIKEUT AE RIEUL - 0xB6AB: 0xB55C, //HANGUL SYLLABLE SSANGTIKEUT AE MIEUM - 0xB6AC: 0xB55D, //HANGUL SYLLABLE SSANGTIKEUT AE PIEUP - 0xB6AD: 0xB55F, //HANGUL SYLLABLE SSANGTIKEUT AE SIOS - 0xB6AE: 0xB560, //HANGUL SYLLABLE SSANGTIKEUT AE SSANGSIOS - 0xB6AF: 0xB561, //HANGUL SYLLABLE SSANGTIKEUT AE IEUNG - 0xB6B0: 0xB5A0, //HANGUL SYLLABLE SSANGTIKEUT EO - 0xB6B1: 0xB5A1, //HANGUL SYLLABLE SSANGTIKEUT EO KIYEOK - 0xB6B2: 0xB5A4, //HANGUL SYLLABLE SSANGTIKEUT EO NIEUN - 0xB6B3: 0xB5A8, //HANGUL SYLLABLE SSANGTIKEUT EO RIEUL - 0xB6B4: 0xB5AA, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULMIEUM - 0xB6B5: 0xB5AB, //HANGUL SYLLABLE SSANGTIKEUT EO RIEULPIEUP - 0xB6B6: 0xB5B0, //HANGUL SYLLABLE SSANGTIKEUT EO MIEUM - 0xB6B7: 0xB5B1, //HANGUL SYLLABLE SSANGTIKEUT EO PIEUP - 0xB6B8: 0xB5B3, //HANGUL SYLLABLE SSANGTIKEUT EO SIOS - 0xB6B9: 0xB5B4, //HANGUL SYLLABLE SSANGTIKEUT EO SSANGSIOS - 0xB6BA: 0xB5B5, //HANGUL SYLLABLE SSANGTIKEUT EO IEUNG - 0xB6BB: 0xB5BB, //HANGUL SYLLABLE SSANGTIKEUT EO HIEUH - 0xB6BC: 0xB5BC, //HANGUL SYLLABLE SSANGTIKEUT E - 0xB6BD: 0xB5BD, //HANGUL SYLLABLE SSANGTIKEUT E KIYEOK - 0xB6BE: 0xB5C0, //HANGUL SYLLABLE SSANGTIKEUT E NIEUN - 0xB6BF: 0xB5C4, //HANGUL SYLLABLE SSANGTIKEUT E RIEUL - 0xB6C0: 0xB5CC, //HANGUL SYLLABLE SSANGTIKEUT E MIEUM - 0xB6C1: 0xB5CD, //HANGUL SYLLABLE SSANGTIKEUT E PIEUP - 0xB6C2: 0xB5CF, //HANGUL SYLLABLE SSANGTIKEUT E SIOS - 0xB6C3: 0xB5D0, //HANGUL SYLLABLE SSANGTIKEUT E SSANGSIOS - 0xB6C4: 0xB5D1, //HANGUL SYLLABLE SSANGTIKEUT E IEUNG - 0xB6C5: 0xB5D8, //HANGUL SYLLABLE SSANGTIKEUT YEO - 0xB6C6: 0xB5EC, //HANGUL SYLLABLE SSANGTIKEUT YEO SSANGSIOS - 0xB6C7: 0xB610, //HANGUL SYLLABLE SSANGTIKEUT O - 0xB6C8: 0xB611, //HANGUL SYLLABLE SSANGTIKEUT O KIYEOK - 0xB6C9: 0xB614, //HANGUL SYLLABLE SSANGTIKEUT O NIEUN - 0xB6CA: 0xB618, //HANGUL SYLLABLE SSANGTIKEUT O RIEUL - 0xB6CB: 0xB625, //HANGUL SYLLABLE SSANGTIKEUT O IEUNG - 0xB6CC: 0xB62C, //HANGUL SYLLABLE SSANGTIKEUT WA - 0xB6CD: 0xB634, //HANGUL SYLLABLE SSANGTIKEUT WA RIEUL - 0xB6CE: 0xB648, //HANGUL SYLLABLE SSANGTIKEUT WAE - 0xB6CF: 0xB664, //HANGUL SYLLABLE SSANGTIKEUT OE - 0xB6D0: 0xB668, //HANGUL SYLLABLE SSANGTIKEUT OE NIEUN - 0xB6D1: 0xB69C, //HANGUL SYLLABLE SSANGTIKEUT U - 0xB6D2: 0xB69D, //HANGUL SYLLABLE SSANGTIKEUT U KIYEOK - 0xB6D3: 0xB6A0, //HANGUL SYLLABLE SSANGTIKEUT U NIEUN - 0xB6D4: 0xB6A4, //HANGUL SYLLABLE SSANGTIKEUT U RIEUL - 0xB6D5: 0xB6AB, //HANGUL SYLLABLE SSANGTIKEUT U RIEULHIEUH - 0xB6D6: 0xB6AC, //HANGUL SYLLABLE SSANGTIKEUT U MIEUM - 0xB6D7: 0xB6B1, //HANGUL SYLLABLE SSANGTIKEUT U IEUNG - 0xB6D8: 0xB6D4, //HANGUL SYLLABLE SSANGTIKEUT WE - 0xB6D9: 0xB6F0, //HANGUL SYLLABLE SSANGTIKEUT WI - 0xB6DA: 0xB6F4, //HANGUL SYLLABLE SSANGTIKEUT WI NIEUN - 0xB6DB: 0xB6F8, //HANGUL SYLLABLE SSANGTIKEUT WI RIEUL - 0xB6DC: 0xB700, //HANGUL SYLLABLE SSANGTIKEUT WI MIEUM - 0xB6DD: 0xB701, //HANGUL SYLLABLE SSANGTIKEUT WI PIEUP - 0xB6DE: 0xB705, //HANGUL SYLLABLE SSANGTIKEUT WI IEUNG - 0xB6DF: 0xB728, //HANGUL SYLLABLE SSANGTIKEUT EU - 0xB6E0: 0xB729, //HANGUL SYLLABLE SSANGTIKEUT EU KIYEOK - 0xB6E1: 0xB72C, //HANGUL SYLLABLE SSANGTIKEUT EU NIEUN - 0xB6E2: 0xB72F, //HANGUL SYLLABLE SSANGTIKEUT EU TIKEUT - 0xB6E3: 0xB730, //HANGUL SYLLABLE SSANGTIKEUT EU RIEUL - 0xB6E4: 0xB738, //HANGUL SYLLABLE SSANGTIKEUT EU MIEUM - 0xB6E5: 0xB739, //HANGUL SYLLABLE SSANGTIKEUT EU PIEUP - 0xB6E6: 0xB73B, //HANGUL SYLLABLE SSANGTIKEUT EU SIOS - 0xB6E7: 0xB744, //HANGUL SYLLABLE SSANGTIKEUT YI - 0xB6E8: 0xB748, //HANGUL SYLLABLE SSANGTIKEUT YI NIEUN - 0xB6E9: 0xB74C, //HANGUL SYLLABLE SSANGTIKEUT YI RIEUL - 0xB6EA: 0xB754, //HANGUL SYLLABLE SSANGTIKEUT YI MIEUM - 0xB6EB: 0xB755, //HANGUL SYLLABLE SSANGTIKEUT YI PIEUP - 0xB6EC: 0xB760, //HANGUL SYLLABLE SSANGTIKEUT I - 0xB6ED: 0xB764, //HANGUL SYLLABLE SSANGTIKEUT I NIEUN - 0xB6EE: 0xB768, //HANGUL SYLLABLE SSANGTIKEUT I RIEUL - 0xB6EF: 0xB770, //HANGUL SYLLABLE SSANGTIKEUT I MIEUM - 0xB6F0: 0xB771, //HANGUL SYLLABLE SSANGTIKEUT I PIEUP - 0xB6F1: 0xB773, //HANGUL SYLLABLE SSANGTIKEUT I SIOS - 0xB6F2: 0xB775, //HANGUL SYLLABLE SSANGTIKEUT I IEUNG - 0xB6F3: 0xB77C, //HANGUL SYLLABLE RIEUL A - 0xB6F4: 0xB77D, //HANGUL SYLLABLE RIEUL A KIYEOK - 0xB6F5: 0xB780, //HANGUL SYLLABLE RIEUL A NIEUN - 0xB6F6: 0xB784, //HANGUL SYLLABLE RIEUL A RIEUL - 0xB6F7: 0xB78C, //HANGUL SYLLABLE RIEUL A MIEUM - 0xB6F8: 0xB78D, //HANGUL SYLLABLE RIEUL A PIEUP - 0xB6F9: 0xB78F, //HANGUL SYLLABLE RIEUL A SIOS - 0xB6FA: 0xB790, //HANGUL SYLLABLE RIEUL A SSANGSIOS - 0xB6FB: 0xB791, //HANGUL SYLLABLE RIEUL A IEUNG - 0xB6FC: 0xB792, //HANGUL SYLLABLE RIEUL A CIEUC - 0xB6FD: 0xB796, //HANGUL SYLLABLE RIEUL A PHIEUPH - 0xB6FE: 0xB797, //HANGUL SYLLABLE RIEUL A HIEUH - 0xB741: 0xD16E, //HANGUL SYLLABLE THIEUTH YEO NIEUNHIEUH - 0xB742: 0xD16F, //HANGUL SYLLABLE THIEUTH YEO TIKEUT - 0xB743: 0xD170, //HANGUL SYLLABLE THIEUTH YEO RIEUL - 0xB744: 0xD171, //HANGUL SYLLABLE THIEUTH YEO RIEULKIYEOK - 0xB745: 0xD172, //HANGUL SYLLABLE THIEUTH YEO RIEULMIEUM - 0xB746: 0xD173, //HANGUL SYLLABLE THIEUTH YEO RIEULPIEUP - 0xB747: 0xD174, //HANGUL SYLLABLE THIEUTH YEO RIEULSIOS - 0xB748: 0xD175, //HANGUL SYLLABLE THIEUTH YEO RIEULTHIEUTH - 0xB749: 0xD176, //HANGUL SYLLABLE THIEUTH YEO RIEULPHIEUPH - 0xB74A: 0xD177, //HANGUL SYLLABLE THIEUTH YEO RIEULHIEUH - 0xB74B: 0xD178, //HANGUL SYLLABLE THIEUTH YEO MIEUM - 0xB74C: 0xD179, //HANGUL SYLLABLE THIEUTH YEO PIEUP - 0xB74D: 0xD17A, //HANGUL SYLLABLE THIEUTH YEO PIEUPSIOS - 0xB74E: 0xD17B, //HANGUL SYLLABLE THIEUTH YEO SIOS - 0xB74F: 0xD17D, //HANGUL SYLLABLE THIEUTH YEO IEUNG - 0xB750: 0xD17E, //HANGUL SYLLABLE THIEUTH YEO CIEUC - 0xB751: 0xD17F, //HANGUL SYLLABLE THIEUTH YEO CHIEUCH - 0xB752: 0xD180, //HANGUL SYLLABLE THIEUTH YEO KHIEUKH - 0xB753: 0xD181, //HANGUL SYLLABLE THIEUTH YEO THIEUTH - 0xB754: 0xD182, //HANGUL SYLLABLE THIEUTH YEO PHIEUPH - 0xB755: 0xD183, //HANGUL SYLLABLE THIEUTH YEO HIEUH - 0xB756: 0xD185, //HANGUL SYLLABLE THIEUTH YE KIYEOK - 0xB757: 0xD186, //HANGUL SYLLABLE THIEUTH YE SSANGKIYEOK - 0xB758: 0xD187, //HANGUL SYLLABLE THIEUTH YE KIYEOKSIOS - 0xB759: 0xD189, //HANGUL SYLLABLE THIEUTH YE NIEUNCIEUC - 0xB75A: 0xD18A, //HANGUL SYLLABLE THIEUTH YE NIEUNHIEUH - 0xB761: 0xD18B, //HANGUL SYLLABLE THIEUTH YE TIKEUT - 0xB762: 0xD18C, //HANGUL SYLLABLE THIEUTH YE RIEUL - 0xB763: 0xD18D, //HANGUL SYLLABLE THIEUTH YE RIEULKIYEOK - 0xB764: 0xD18E, //HANGUL SYLLABLE THIEUTH YE RIEULMIEUM - 0xB765: 0xD18F, //HANGUL SYLLABLE THIEUTH YE RIEULPIEUP - 0xB766: 0xD190, //HANGUL SYLLABLE THIEUTH YE RIEULSIOS - 0xB767: 0xD191, //HANGUL SYLLABLE THIEUTH YE RIEULTHIEUTH - 0xB768: 0xD192, //HANGUL SYLLABLE THIEUTH YE RIEULPHIEUPH - 0xB769: 0xD193, //HANGUL SYLLABLE THIEUTH YE RIEULHIEUH - 0xB76A: 0xD194, //HANGUL SYLLABLE THIEUTH YE MIEUM - 0xB76B: 0xD195, //HANGUL SYLLABLE THIEUTH YE PIEUP - 0xB76C: 0xD196, //HANGUL SYLLABLE THIEUTH YE PIEUPSIOS - 0xB76D: 0xD197, //HANGUL SYLLABLE THIEUTH YE SIOS - 0xB76E: 0xD198, //HANGUL SYLLABLE THIEUTH YE SSANGSIOS - 0xB76F: 0xD199, //HANGUL SYLLABLE THIEUTH YE IEUNG - 0xB770: 0xD19A, //HANGUL SYLLABLE THIEUTH YE CIEUC - 0xB771: 0xD19B, //HANGUL SYLLABLE THIEUTH YE CHIEUCH - 0xB772: 0xD19C, //HANGUL SYLLABLE THIEUTH YE KHIEUKH - 0xB773: 0xD19D, //HANGUL SYLLABLE THIEUTH YE THIEUTH - 0xB774: 0xD19E, //HANGUL SYLLABLE THIEUTH YE PHIEUPH - 0xB775: 0xD19F, //HANGUL SYLLABLE THIEUTH YE HIEUH - 0xB776: 0xD1A2, //HANGUL SYLLABLE THIEUTH O SSANGKIYEOK - 0xB777: 0xD1A3, //HANGUL SYLLABLE THIEUTH O KIYEOKSIOS - 0xB778: 0xD1A5, //HANGUL SYLLABLE THIEUTH O NIEUNCIEUC - 0xB779: 0xD1A6, //HANGUL SYLLABLE THIEUTH O NIEUNHIEUH - 0xB77A: 0xD1A7, //HANGUL SYLLABLE THIEUTH O TIKEUT - 0xB781: 0xD1A9, //HANGUL SYLLABLE THIEUTH O RIEULKIYEOK - 0xB782: 0xD1AA, //HANGUL SYLLABLE THIEUTH O RIEULMIEUM - 0xB783: 0xD1AB, //HANGUL SYLLABLE THIEUTH O RIEULPIEUP - 0xB784: 0xD1AC, //HANGUL SYLLABLE THIEUTH O RIEULSIOS - 0xB785: 0xD1AD, //HANGUL SYLLABLE THIEUTH O RIEULTHIEUTH - 0xB786: 0xD1AE, //HANGUL SYLLABLE THIEUTH O RIEULPHIEUPH - 0xB787: 0xD1AF, //HANGUL SYLLABLE THIEUTH O RIEULHIEUH - 0xB788: 0xD1B2, //HANGUL SYLLABLE THIEUTH O PIEUPSIOS - 0xB789: 0xD1B4, //HANGUL SYLLABLE THIEUTH O SSANGSIOS - 0xB78A: 0xD1B6, //HANGUL SYLLABLE THIEUTH O CIEUC - 0xB78B: 0xD1B7, //HANGUL SYLLABLE THIEUTH O CHIEUCH - 0xB78C: 0xD1B8, //HANGUL SYLLABLE THIEUTH O KHIEUKH - 0xB78D: 0xD1B9, //HANGUL SYLLABLE THIEUTH O THIEUTH - 0xB78E: 0xD1BB, //HANGUL SYLLABLE THIEUTH O HIEUH - 0xB78F: 0xD1BD, //HANGUL SYLLABLE THIEUTH WA KIYEOK - 0xB790: 0xD1BE, //HANGUL SYLLABLE THIEUTH WA SSANGKIYEOK - 0xB791: 0xD1BF, //HANGUL SYLLABLE THIEUTH WA KIYEOKSIOS - 0xB792: 0xD1C1, //HANGUL SYLLABLE THIEUTH WA NIEUNCIEUC - 0xB793: 0xD1C2, //HANGUL SYLLABLE THIEUTH WA NIEUNHIEUH - 0xB794: 0xD1C3, //HANGUL SYLLABLE THIEUTH WA TIKEUT - 0xB795: 0xD1C4, //HANGUL SYLLABLE THIEUTH WA RIEUL - 0xB796: 0xD1C5, //HANGUL SYLLABLE THIEUTH WA RIEULKIYEOK - 0xB797: 0xD1C6, //HANGUL SYLLABLE THIEUTH WA RIEULMIEUM - 0xB798: 0xD1C7, //HANGUL SYLLABLE THIEUTH WA RIEULPIEUP - 0xB799: 0xD1C8, //HANGUL SYLLABLE THIEUTH WA RIEULSIOS - 0xB79A: 0xD1C9, //HANGUL SYLLABLE THIEUTH WA RIEULTHIEUTH - 0xB79B: 0xD1CA, //HANGUL SYLLABLE THIEUTH WA RIEULPHIEUPH - 0xB79C: 0xD1CB, //HANGUL SYLLABLE THIEUTH WA RIEULHIEUH - 0xB79D: 0xD1CC, //HANGUL SYLLABLE THIEUTH WA MIEUM - 0xB79E: 0xD1CD, //HANGUL SYLLABLE THIEUTH WA PIEUP - 0xB79F: 0xD1CE, //HANGUL SYLLABLE THIEUTH WA PIEUPSIOS - 0xB7A0: 0xD1CF, //HANGUL SYLLABLE THIEUTH WA SIOS - 0xB7A1: 0xB798, //HANGUL SYLLABLE RIEUL AE - 0xB7A2: 0xB799, //HANGUL SYLLABLE RIEUL AE KIYEOK - 0xB7A3: 0xB79C, //HANGUL SYLLABLE RIEUL AE NIEUN - 0xB7A4: 0xB7A0, //HANGUL SYLLABLE RIEUL AE RIEUL - 0xB7A5: 0xB7A8, //HANGUL SYLLABLE RIEUL AE MIEUM - 0xB7A6: 0xB7A9, //HANGUL SYLLABLE RIEUL AE PIEUP - 0xB7A7: 0xB7AB, //HANGUL SYLLABLE RIEUL AE SIOS - 0xB7A8: 0xB7AC, //HANGUL SYLLABLE RIEUL AE SSANGSIOS - 0xB7A9: 0xB7AD, //HANGUL SYLLABLE RIEUL AE IEUNG - 0xB7AA: 0xB7B4, //HANGUL SYLLABLE RIEUL YA - 0xB7AB: 0xB7B5, //HANGUL SYLLABLE RIEUL YA KIYEOK - 0xB7AC: 0xB7B8, //HANGUL SYLLABLE RIEUL YA NIEUN - 0xB7AD: 0xB7C7, //HANGUL SYLLABLE RIEUL YA SIOS - 0xB7AE: 0xB7C9, //HANGUL SYLLABLE RIEUL YA IEUNG - 0xB7AF: 0xB7EC, //HANGUL SYLLABLE RIEUL EO - 0xB7B0: 0xB7ED, //HANGUL SYLLABLE RIEUL EO KIYEOK - 0xB7B1: 0xB7F0, //HANGUL SYLLABLE RIEUL EO NIEUN - 0xB7B2: 0xB7F4, //HANGUL SYLLABLE RIEUL EO RIEUL - 0xB7B3: 0xB7FC, //HANGUL SYLLABLE RIEUL EO MIEUM - 0xB7B4: 0xB7FD, //HANGUL SYLLABLE RIEUL EO PIEUP - 0xB7B5: 0xB7FF, //HANGUL SYLLABLE RIEUL EO SIOS - 0xB7B6: 0xB800, //HANGUL SYLLABLE RIEUL EO SSANGSIOS - 0xB7B7: 0xB801, //HANGUL SYLLABLE RIEUL EO IEUNG - 0xB7B8: 0xB807, //HANGUL SYLLABLE RIEUL EO HIEUH - 0xB7B9: 0xB808, //HANGUL SYLLABLE RIEUL E - 0xB7BA: 0xB809, //HANGUL SYLLABLE RIEUL E KIYEOK - 0xB7BB: 0xB80C, //HANGUL SYLLABLE RIEUL E NIEUN - 0xB7BC: 0xB810, //HANGUL SYLLABLE RIEUL E RIEUL - 0xB7BD: 0xB818, //HANGUL SYLLABLE RIEUL E MIEUM - 0xB7BE: 0xB819, //HANGUL SYLLABLE RIEUL E PIEUP - 0xB7BF: 0xB81B, //HANGUL SYLLABLE RIEUL E SIOS - 0xB7C0: 0xB81D, //HANGUL SYLLABLE RIEUL E IEUNG - 0xB7C1: 0xB824, //HANGUL SYLLABLE RIEUL YEO - 0xB7C2: 0xB825, //HANGUL SYLLABLE RIEUL YEO KIYEOK - 0xB7C3: 0xB828, //HANGUL SYLLABLE RIEUL YEO NIEUN - 0xB7C4: 0xB82C, //HANGUL SYLLABLE RIEUL YEO RIEUL - 0xB7C5: 0xB834, //HANGUL SYLLABLE RIEUL YEO MIEUM - 0xB7C6: 0xB835, //HANGUL SYLLABLE RIEUL YEO PIEUP - 0xB7C7: 0xB837, //HANGUL SYLLABLE RIEUL YEO SIOS - 0xB7C8: 0xB838, //HANGUL SYLLABLE RIEUL YEO SSANGSIOS - 0xB7C9: 0xB839, //HANGUL SYLLABLE RIEUL YEO IEUNG - 0xB7CA: 0xB840, //HANGUL SYLLABLE RIEUL YE - 0xB7CB: 0xB844, //HANGUL SYLLABLE RIEUL YE NIEUN - 0xB7CC: 0xB851, //HANGUL SYLLABLE RIEUL YE PIEUP - 0xB7CD: 0xB853, //HANGUL SYLLABLE RIEUL YE SIOS - 0xB7CE: 0xB85C, //HANGUL SYLLABLE RIEUL O - 0xB7CF: 0xB85D, //HANGUL SYLLABLE RIEUL O KIYEOK - 0xB7D0: 0xB860, //HANGUL SYLLABLE RIEUL O NIEUN - 0xB7D1: 0xB864, //HANGUL SYLLABLE RIEUL O RIEUL - 0xB7D2: 0xB86C, //HANGUL SYLLABLE RIEUL O MIEUM - 0xB7D3: 0xB86D, //HANGUL SYLLABLE RIEUL O PIEUP - 0xB7D4: 0xB86F, //HANGUL SYLLABLE RIEUL O SIOS - 0xB7D5: 0xB871, //HANGUL SYLLABLE RIEUL O IEUNG - 0xB7D6: 0xB878, //HANGUL SYLLABLE RIEUL WA - 0xB7D7: 0xB87C, //HANGUL SYLLABLE RIEUL WA NIEUN - 0xB7D8: 0xB88D, //HANGUL SYLLABLE RIEUL WA IEUNG - 0xB7D9: 0xB8A8, //HANGUL SYLLABLE RIEUL WAE SSANGSIOS - 0xB7DA: 0xB8B0, //HANGUL SYLLABLE RIEUL OE - 0xB7DB: 0xB8B4, //HANGUL SYLLABLE RIEUL OE NIEUN - 0xB7DC: 0xB8B8, //HANGUL SYLLABLE RIEUL OE RIEUL - 0xB7DD: 0xB8C0, //HANGUL SYLLABLE RIEUL OE MIEUM - 0xB7DE: 0xB8C1, //HANGUL SYLLABLE RIEUL OE PIEUP - 0xB7DF: 0xB8C3, //HANGUL SYLLABLE RIEUL OE SIOS - 0xB7E0: 0xB8C5, //HANGUL SYLLABLE RIEUL OE IEUNG - 0xB7E1: 0xB8CC, //HANGUL SYLLABLE RIEUL YO - 0xB7E2: 0xB8D0, //HANGUL SYLLABLE RIEUL YO NIEUN - 0xB7E3: 0xB8D4, //HANGUL SYLLABLE RIEUL YO RIEUL - 0xB7E4: 0xB8DD, //HANGUL SYLLABLE RIEUL YO PIEUP - 0xB7E5: 0xB8DF, //HANGUL SYLLABLE RIEUL YO SIOS - 0xB7E6: 0xB8E1, //HANGUL SYLLABLE RIEUL YO IEUNG - 0xB7E7: 0xB8E8, //HANGUL SYLLABLE RIEUL U - 0xB7E8: 0xB8E9, //HANGUL SYLLABLE RIEUL U KIYEOK - 0xB7E9: 0xB8EC, //HANGUL SYLLABLE RIEUL U NIEUN - 0xB7EA: 0xB8F0, //HANGUL SYLLABLE RIEUL U RIEUL - 0xB7EB: 0xB8F8, //HANGUL SYLLABLE RIEUL U MIEUM - 0xB7EC: 0xB8F9, //HANGUL SYLLABLE RIEUL U PIEUP - 0xB7ED: 0xB8FB, //HANGUL SYLLABLE RIEUL U SIOS - 0xB7EE: 0xB8FD, //HANGUL SYLLABLE RIEUL U IEUNG - 0xB7EF: 0xB904, //HANGUL SYLLABLE RIEUL WEO - 0xB7F0: 0xB918, //HANGUL SYLLABLE RIEUL WEO SSANGSIOS - 0xB7F1: 0xB920, //HANGUL SYLLABLE RIEUL WE - 0xB7F2: 0xB93C, //HANGUL SYLLABLE RIEUL WI - 0xB7F3: 0xB93D, //HANGUL SYLLABLE RIEUL WI KIYEOK - 0xB7F4: 0xB940, //HANGUL SYLLABLE RIEUL WI NIEUN - 0xB7F5: 0xB944, //HANGUL SYLLABLE RIEUL WI RIEUL - 0xB7F6: 0xB94C, //HANGUL SYLLABLE RIEUL WI MIEUM - 0xB7F7: 0xB94F, //HANGUL SYLLABLE RIEUL WI SIOS - 0xB7F8: 0xB951, //HANGUL SYLLABLE RIEUL WI IEUNG - 0xB7F9: 0xB958, //HANGUL SYLLABLE RIEUL YU - 0xB7FA: 0xB959, //HANGUL SYLLABLE RIEUL YU KIYEOK - 0xB7FB: 0xB95C, //HANGUL SYLLABLE RIEUL YU NIEUN - 0xB7FC: 0xB960, //HANGUL SYLLABLE RIEUL YU RIEUL - 0xB7FD: 0xB968, //HANGUL SYLLABLE RIEUL YU MIEUM - 0xB7FE: 0xB969, //HANGUL SYLLABLE RIEUL YU PIEUP - 0xB841: 0xD1D0, //HANGUL SYLLABLE THIEUTH WA SSANGSIOS - 0xB842: 0xD1D1, //HANGUL SYLLABLE THIEUTH WA IEUNG - 0xB843: 0xD1D2, //HANGUL SYLLABLE THIEUTH WA CIEUC - 0xB844: 0xD1D3, //HANGUL SYLLABLE THIEUTH WA CHIEUCH - 0xB845: 0xD1D4, //HANGUL SYLLABLE THIEUTH WA KHIEUKH - 0xB846: 0xD1D5, //HANGUL SYLLABLE THIEUTH WA THIEUTH - 0xB847: 0xD1D6, //HANGUL SYLLABLE THIEUTH WA PHIEUPH - 0xB848: 0xD1D7, //HANGUL SYLLABLE THIEUTH WA HIEUH - 0xB849: 0xD1D9, //HANGUL SYLLABLE THIEUTH WAE KIYEOK - 0xB84A: 0xD1DA, //HANGUL SYLLABLE THIEUTH WAE SSANGKIYEOK - 0xB84B: 0xD1DB, //HANGUL SYLLABLE THIEUTH WAE KIYEOKSIOS - 0xB84C: 0xD1DC, //HANGUL SYLLABLE THIEUTH WAE NIEUN - 0xB84D: 0xD1DD, //HANGUL SYLLABLE THIEUTH WAE NIEUNCIEUC - 0xB84E: 0xD1DE, //HANGUL SYLLABLE THIEUTH WAE NIEUNHIEUH - 0xB84F: 0xD1DF, //HANGUL SYLLABLE THIEUTH WAE TIKEUT - 0xB850: 0xD1E0, //HANGUL SYLLABLE THIEUTH WAE RIEUL - 0xB851: 0xD1E1, //HANGUL SYLLABLE THIEUTH WAE RIEULKIYEOK - 0xB852: 0xD1E2, //HANGUL SYLLABLE THIEUTH WAE RIEULMIEUM - 0xB853: 0xD1E3, //HANGUL SYLLABLE THIEUTH WAE RIEULPIEUP - 0xB854: 0xD1E4, //HANGUL SYLLABLE THIEUTH WAE RIEULSIOS - 0xB855: 0xD1E5, //HANGUL SYLLABLE THIEUTH WAE RIEULTHIEUTH - 0xB856: 0xD1E6, //HANGUL SYLLABLE THIEUTH WAE RIEULPHIEUPH - 0xB857: 0xD1E7, //HANGUL SYLLABLE THIEUTH WAE RIEULHIEUH - 0xB858: 0xD1E8, //HANGUL SYLLABLE THIEUTH WAE MIEUM - 0xB859: 0xD1E9, //HANGUL SYLLABLE THIEUTH WAE PIEUP - 0xB85A: 0xD1EA, //HANGUL SYLLABLE THIEUTH WAE PIEUPSIOS - 0xB861: 0xD1EB, //HANGUL SYLLABLE THIEUTH WAE SIOS - 0xB862: 0xD1EC, //HANGUL SYLLABLE THIEUTH WAE SSANGSIOS - 0xB863: 0xD1ED, //HANGUL SYLLABLE THIEUTH WAE IEUNG - 0xB864: 0xD1EE, //HANGUL SYLLABLE THIEUTH WAE CIEUC - 0xB865: 0xD1EF, //HANGUL SYLLABLE THIEUTH WAE CHIEUCH - 0xB866: 0xD1F0, //HANGUL SYLLABLE THIEUTH WAE KHIEUKH - 0xB867: 0xD1F1, //HANGUL SYLLABLE THIEUTH WAE THIEUTH - 0xB868: 0xD1F2, //HANGUL SYLLABLE THIEUTH WAE PHIEUPH - 0xB869: 0xD1F3, //HANGUL SYLLABLE THIEUTH WAE HIEUH - 0xB86A: 0xD1F5, //HANGUL SYLLABLE THIEUTH OE KIYEOK - 0xB86B: 0xD1F6, //HANGUL SYLLABLE THIEUTH OE SSANGKIYEOK - 0xB86C: 0xD1F7, //HANGUL SYLLABLE THIEUTH OE KIYEOKSIOS - 0xB86D: 0xD1F9, //HANGUL SYLLABLE THIEUTH OE NIEUNCIEUC - 0xB86E: 0xD1FA, //HANGUL SYLLABLE THIEUTH OE NIEUNHIEUH - 0xB86F: 0xD1FB, //HANGUL SYLLABLE THIEUTH OE TIKEUT - 0xB870: 0xD1FC, //HANGUL SYLLABLE THIEUTH OE RIEUL - 0xB871: 0xD1FD, //HANGUL SYLLABLE THIEUTH OE RIEULKIYEOK - 0xB872: 0xD1FE, //HANGUL SYLLABLE THIEUTH OE RIEULMIEUM - 0xB873: 0xD1FF, //HANGUL SYLLABLE THIEUTH OE RIEULPIEUP - 0xB874: 0xD200, //HANGUL SYLLABLE THIEUTH OE RIEULSIOS - 0xB875: 0xD201, //HANGUL SYLLABLE THIEUTH OE RIEULTHIEUTH - 0xB876: 0xD202, //HANGUL SYLLABLE THIEUTH OE RIEULPHIEUPH - 0xB877: 0xD203, //HANGUL SYLLABLE THIEUTH OE RIEULHIEUH - 0xB878: 0xD204, //HANGUL SYLLABLE THIEUTH OE MIEUM - 0xB879: 0xD205, //HANGUL SYLLABLE THIEUTH OE PIEUP - 0xB87A: 0xD206, //HANGUL SYLLABLE THIEUTH OE PIEUPSIOS - 0xB881: 0xD208, //HANGUL SYLLABLE THIEUTH OE SSANGSIOS - 0xB882: 0xD20A, //HANGUL SYLLABLE THIEUTH OE CIEUC - 0xB883: 0xD20B, //HANGUL SYLLABLE THIEUTH OE CHIEUCH - 0xB884: 0xD20C, //HANGUL SYLLABLE THIEUTH OE KHIEUKH - 0xB885: 0xD20D, //HANGUL SYLLABLE THIEUTH OE THIEUTH - 0xB886: 0xD20E, //HANGUL SYLLABLE THIEUTH OE PHIEUPH - 0xB887: 0xD20F, //HANGUL SYLLABLE THIEUTH OE HIEUH - 0xB888: 0xD211, //HANGUL SYLLABLE THIEUTH YO KIYEOK - 0xB889: 0xD212, //HANGUL SYLLABLE THIEUTH YO SSANGKIYEOK - 0xB88A: 0xD213, //HANGUL SYLLABLE THIEUTH YO KIYEOKSIOS - 0xB88B: 0xD214, //HANGUL SYLLABLE THIEUTH YO NIEUN - 0xB88C: 0xD215, //HANGUL SYLLABLE THIEUTH YO NIEUNCIEUC - 0xB88D: 0xD216, //HANGUL SYLLABLE THIEUTH YO NIEUNHIEUH - 0xB88E: 0xD217, //HANGUL SYLLABLE THIEUTH YO TIKEUT - 0xB88F: 0xD218, //HANGUL SYLLABLE THIEUTH YO RIEUL - 0xB890: 0xD219, //HANGUL SYLLABLE THIEUTH YO RIEULKIYEOK - 0xB891: 0xD21A, //HANGUL SYLLABLE THIEUTH YO RIEULMIEUM - 0xB892: 0xD21B, //HANGUL SYLLABLE THIEUTH YO RIEULPIEUP - 0xB893: 0xD21C, //HANGUL SYLLABLE THIEUTH YO RIEULSIOS - 0xB894: 0xD21D, //HANGUL SYLLABLE THIEUTH YO RIEULTHIEUTH - 0xB895: 0xD21E, //HANGUL SYLLABLE THIEUTH YO RIEULPHIEUPH - 0xB896: 0xD21F, //HANGUL SYLLABLE THIEUTH YO RIEULHIEUH - 0xB897: 0xD220, //HANGUL SYLLABLE THIEUTH YO MIEUM - 0xB898: 0xD221, //HANGUL SYLLABLE THIEUTH YO PIEUP - 0xB899: 0xD222, //HANGUL SYLLABLE THIEUTH YO PIEUPSIOS - 0xB89A: 0xD223, //HANGUL SYLLABLE THIEUTH YO SIOS - 0xB89B: 0xD224, //HANGUL SYLLABLE THIEUTH YO SSANGSIOS - 0xB89C: 0xD225, //HANGUL SYLLABLE THIEUTH YO IEUNG - 0xB89D: 0xD226, //HANGUL SYLLABLE THIEUTH YO CIEUC - 0xB89E: 0xD227, //HANGUL SYLLABLE THIEUTH YO CHIEUCH - 0xB89F: 0xD228, //HANGUL SYLLABLE THIEUTH YO KHIEUKH - 0xB8A0: 0xD229, //HANGUL SYLLABLE THIEUTH YO THIEUTH - 0xB8A1: 0xB96B, //HANGUL SYLLABLE RIEUL YU SIOS - 0xB8A2: 0xB96D, //HANGUL SYLLABLE RIEUL YU IEUNG - 0xB8A3: 0xB974, //HANGUL SYLLABLE RIEUL EU - 0xB8A4: 0xB975, //HANGUL SYLLABLE RIEUL EU KIYEOK - 0xB8A5: 0xB978, //HANGUL SYLLABLE RIEUL EU NIEUN - 0xB8A6: 0xB97C, //HANGUL SYLLABLE RIEUL EU RIEUL - 0xB8A7: 0xB984, //HANGUL SYLLABLE RIEUL EU MIEUM - 0xB8A8: 0xB985, //HANGUL SYLLABLE RIEUL EU PIEUP - 0xB8A9: 0xB987, //HANGUL SYLLABLE RIEUL EU SIOS - 0xB8AA: 0xB989, //HANGUL SYLLABLE RIEUL EU IEUNG - 0xB8AB: 0xB98A, //HANGUL SYLLABLE RIEUL EU CIEUC - 0xB8AC: 0xB98D, //HANGUL SYLLABLE RIEUL EU THIEUTH - 0xB8AD: 0xB98E, //HANGUL SYLLABLE RIEUL EU PHIEUPH - 0xB8AE: 0xB9AC, //HANGUL SYLLABLE RIEUL I - 0xB8AF: 0xB9AD, //HANGUL SYLLABLE RIEUL I KIYEOK - 0xB8B0: 0xB9B0, //HANGUL SYLLABLE RIEUL I NIEUN - 0xB8B1: 0xB9B4, //HANGUL SYLLABLE RIEUL I RIEUL - 0xB8B2: 0xB9BC, //HANGUL SYLLABLE RIEUL I MIEUM - 0xB8B3: 0xB9BD, //HANGUL SYLLABLE RIEUL I PIEUP - 0xB8B4: 0xB9BF, //HANGUL SYLLABLE RIEUL I SIOS - 0xB8B5: 0xB9C1, //HANGUL SYLLABLE RIEUL I IEUNG - 0xB8B6: 0xB9C8, //HANGUL SYLLABLE MIEUM A - 0xB8B7: 0xB9C9, //HANGUL SYLLABLE MIEUM A KIYEOK - 0xB8B8: 0xB9CC, //HANGUL SYLLABLE MIEUM A NIEUN - 0xB8B9: 0xB9CE, //HANGUL SYLLABLE MIEUM A NIEUNHIEUH - 0xB8BA: 0xB9CF, //HANGUL SYLLABLE MIEUM A TIKEUT - 0xB8BB: 0xB9D0, //HANGUL SYLLABLE MIEUM A RIEUL - 0xB8BC: 0xB9D1, //HANGUL SYLLABLE MIEUM A RIEULKIYEOK - 0xB8BD: 0xB9D2, //HANGUL SYLLABLE MIEUM A RIEULMIEUM - 0xB8BE: 0xB9D8, //HANGUL SYLLABLE MIEUM A MIEUM - 0xB8BF: 0xB9D9, //HANGUL SYLLABLE MIEUM A PIEUP - 0xB8C0: 0xB9DB, //HANGUL SYLLABLE MIEUM A SIOS - 0xB8C1: 0xB9DD, //HANGUL SYLLABLE MIEUM A IEUNG - 0xB8C2: 0xB9DE, //HANGUL SYLLABLE MIEUM A CIEUC - 0xB8C3: 0xB9E1, //HANGUL SYLLABLE MIEUM A THIEUTH - 0xB8C4: 0xB9E3, //HANGUL SYLLABLE MIEUM A HIEUH - 0xB8C5: 0xB9E4, //HANGUL SYLLABLE MIEUM AE - 0xB8C6: 0xB9E5, //HANGUL SYLLABLE MIEUM AE KIYEOK - 0xB8C7: 0xB9E8, //HANGUL SYLLABLE MIEUM AE NIEUN - 0xB8C8: 0xB9EC, //HANGUL SYLLABLE MIEUM AE RIEUL - 0xB8C9: 0xB9F4, //HANGUL SYLLABLE MIEUM AE MIEUM - 0xB8CA: 0xB9F5, //HANGUL SYLLABLE MIEUM AE PIEUP - 0xB8CB: 0xB9F7, //HANGUL SYLLABLE MIEUM AE SIOS - 0xB8CC: 0xB9F8, //HANGUL SYLLABLE MIEUM AE SSANGSIOS - 0xB8CD: 0xB9F9, //HANGUL SYLLABLE MIEUM AE IEUNG - 0xB8CE: 0xB9FA, //HANGUL SYLLABLE MIEUM AE CIEUC - 0xB8CF: 0xBA00, //HANGUL SYLLABLE MIEUM YA - 0xB8D0: 0xBA01, //HANGUL SYLLABLE MIEUM YA KIYEOK - 0xB8D1: 0xBA08, //HANGUL SYLLABLE MIEUM YA RIEUL - 0xB8D2: 0xBA15, //HANGUL SYLLABLE MIEUM YA IEUNG - 0xB8D3: 0xBA38, //HANGUL SYLLABLE MIEUM EO - 0xB8D4: 0xBA39, //HANGUL SYLLABLE MIEUM EO KIYEOK - 0xB8D5: 0xBA3C, //HANGUL SYLLABLE MIEUM EO NIEUN - 0xB8D6: 0xBA40, //HANGUL SYLLABLE MIEUM EO RIEUL - 0xB8D7: 0xBA42, //HANGUL SYLLABLE MIEUM EO RIEULMIEUM - 0xB8D8: 0xBA48, //HANGUL SYLLABLE MIEUM EO MIEUM - 0xB8D9: 0xBA49, //HANGUL SYLLABLE MIEUM EO PIEUP - 0xB8DA: 0xBA4B, //HANGUL SYLLABLE MIEUM EO SIOS - 0xB8DB: 0xBA4D, //HANGUL SYLLABLE MIEUM EO IEUNG - 0xB8DC: 0xBA4E, //HANGUL SYLLABLE MIEUM EO CIEUC - 0xB8DD: 0xBA53, //HANGUL SYLLABLE MIEUM EO HIEUH - 0xB8DE: 0xBA54, //HANGUL SYLLABLE MIEUM E - 0xB8DF: 0xBA55, //HANGUL SYLLABLE MIEUM E KIYEOK - 0xB8E0: 0xBA58, //HANGUL SYLLABLE MIEUM E NIEUN - 0xB8E1: 0xBA5C, //HANGUL SYLLABLE MIEUM E RIEUL - 0xB8E2: 0xBA64, //HANGUL SYLLABLE MIEUM E MIEUM - 0xB8E3: 0xBA65, //HANGUL SYLLABLE MIEUM E PIEUP - 0xB8E4: 0xBA67, //HANGUL SYLLABLE MIEUM E SIOS - 0xB8E5: 0xBA68, //HANGUL SYLLABLE MIEUM E SSANGSIOS - 0xB8E6: 0xBA69, //HANGUL SYLLABLE MIEUM E IEUNG - 0xB8E7: 0xBA70, //HANGUL SYLLABLE MIEUM YEO - 0xB8E8: 0xBA71, //HANGUL SYLLABLE MIEUM YEO KIYEOK - 0xB8E9: 0xBA74, //HANGUL SYLLABLE MIEUM YEO NIEUN - 0xB8EA: 0xBA78, //HANGUL SYLLABLE MIEUM YEO RIEUL - 0xB8EB: 0xBA83, //HANGUL SYLLABLE MIEUM YEO SIOS - 0xB8EC: 0xBA84, //HANGUL SYLLABLE MIEUM YEO SSANGSIOS - 0xB8ED: 0xBA85, //HANGUL SYLLABLE MIEUM YEO IEUNG - 0xB8EE: 0xBA87, //HANGUL SYLLABLE MIEUM YEO CHIEUCH - 0xB8EF: 0xBA8C, //HANGUL SYLLABLE MIEUM YE - 0xB8F0: 0xBAA8, //HANGUL SYLLABLE MIEUM O - 0xB8F1: 0xBAA9, //HANGUL SYLLABLE MIEUM O KIYEOK - 0xB8F2: 0xBAAB, //HANGUL SYLLABLE MIEUM O KIYEOKSIOS - 0xB8F3: 0xBAAC, //HANGUL SYLLABLE MIEUM O NIEUN - 0xB8F4: 0xBAB0, //HANGUL SYLLABLE MIEUM O RIEUL - 0xB8F5: 0xBAB2, //HANGUL SYLLABLE MIEUM O RIEULMIEUM - 0xB8F6: 0xBAB8, //HANGUL SYLLABLE MIEUM O MIEUM - 0xB8F7: 0xBAB9, //HANGUL SYLLABLE MIEUM O PIEUP - 0xB8F8: 0xBABB, //HANGUL SYLLABLE MIEUM O SIOS - 0xB8F9: 0xBABD, //HANGUL SYLLABLE MIEUM O IEUNG - 0xB8FA: 0xBAC4, //HANGUL SYLLABLE MIEUM WA - 0xB8FB: 0xBAC8, //HANGUL SYLLABLE MIEUM WA NIEUN - 0xB8FC: 0xBAD8, //HANGUL SYLLABLE MIEUM WA SSANGSIOS - 0xB8FD: 0xBAD9, //HANGUL SYLLABLE MIEUM WA IEUNG - 0xB8FE: 0xBAFC, //HANGUL SYLLABLE MIEUM OE - 0xB941: 0xD22A, //HANGUL SYLLABLE THIEUTH YO PHIEUPH - 0xB942: 0xD22B, //HANGUL SYLLABLE THIEUTH YO HIEUH - 0xB943: 0xD22E, //HANGUL SYLLABLE THIEUTH U SSANGKIYEOK - 0xB944: 0xD22F, //HANGUL SYLLABLE THIEUTH U KIYEOKSIOS - 0xB945: 0xD231, //HANGUL SYLLABLE THIEUTH U NIEUNCIEUC - 0xB946: 0xD232, //HANGUL SYLLABLE THIEUTH U NIEUNHIEUH - 0xB947: 0xD233, //HANGUL SYLLABLE THIEUTH U TIKEUT - 0xB948: 0xD235, //HANGUL SYLLABLE THIEUTH U RIEULKIYEOK - 0xB949: 0xD236, //HANGUL SYLLABLE THIEUTH U RIEULMIEUM - 0xB94A: 0xD237, //HANGUL SYLLABLE THIEUTH U RIEULPIEUP - 0xB94B: 0xD238, //HANGUL SYLLABLE THIEUTH U RIEULSIOS - 0xB94C: 0xD239, //HANGUL SYLLABLE THIEUTH U RIEULTHIEUTH - 0xB94D: 0xD23A, //HANGUL SYLLABLE THIEUTH U RIEULPHIEUPH - 0xB94E: 0xD23B, //HANGUL SYLLABLE THIEUTH U RIEULHIEUH - 0xB94F: 0xD23E, //HANGUL SYLLABLE THIEUTH U PIEUPSIOS - 0xB950: 0xD240, //HANGUL SYLLABLE THIEUTH U SSANGSIOS - 0xB951: 0xD242, //HANGUL SYLLABLE THIEUTH U CIEUC - 0xB952: 0xD243, //HANGUL SYLLABLE THIEUTH U CHIEUCH - 0xB953: 0xD244, //HANGUL SYLLABLE THIEUTH U KHIEUKH - 0xB954: 0xD245, //HANGUL SYLLABLE THIEUTH U THIEUTH - 0xB955: 0xD246, //HANGUL SYLLABLE THIEUTH U PHIEUPH - 0xB956: 0xD247, //HANGUL SYLLABLE THIEUTH U HIEUH - 0xB957: 0xD249, //HANGUL SYLLABLE THIEUTH WEO KIYEOK - 0xB958: 0xD24A, //HANGUL SYLLABLE THIEUTH WEO SSANGKIYEOK - 0xB959: 0xD24B, //HANGUL SYLLABLE THIEUTH WEO KIYEOKSIOS - 0xB95A: 0xD24C, //HANGUL SYLLABLE THIEUTH WEO NIEUN - 0xB961: 0xD24D, //HANGUL SYLLABLE THIEUTH WEO NIEUNCIEUC - 0xB962: 0xD24E, //HANGUL SYLLABLE THIEUTH WEO NIEUNHIEUH - 0xB963: 0xD24F, //HANGUL SYLLABLE THIEUTH WEO TIKEUT - 0xB964: 0xD250, //HANGUL SYLLABLE THIEUTH WEO RIEUL - 0xB965: 0xD251, //HANGUL SYLLABLE THIEUTH WEO RIEULKIYEOK - 0xB966: 0xD252, //HANGUL SYLLABLE THIEUTH WEO RIEULMIEUM - 0xB967: 0xD253, //HANGUL SYLLABLE THIEUTH WEO RIEULPIEUP - 0xB968: 0xD254, //HANGUL SYLLABLE THIEUTH WEO RIEULSIOS - 0xB969: 0xD255, //HANGUL SYLLABLE THIEUTH WEO RIEULTHIEUTH - 0xB96A: 0xD256, //HANGUL SYLLABLE THIEUTH WEO RIEULPHIEUPH - 0xB96B: 0xD257, //HANGUL SYLLABLE THIEUTH WEO RIEULHIEUH - 0xB96C: 0xD258, //HANGUL SYLLABLE THIEUTH WEO MIEUM - 0xB96D: 0xD259, //HANGUL SYLLABLE THIEUTH WEO PIEUP - 0xB96E: 0xD25A, //HANGUL SYLLABLE THIEUTH WEO PIEUPSIOS - 0xB96F: 0xD25B, //HANGUL SYLLABLE THIEUTH WEO SIOS - 0xB970: 0xD25D, //HANGUL SYLLABLE THIEUTH WEO IEUNG - 0xB971: 0xD25E, //HANGUL SYLLABLE THIEUTH WEO CIEUC - 0xB972: 0xD25F, //HANGUL SYLLABLE THIEUTH WEO CHIEUCH - 0xB973: 0xD260, //HANGUL SYLLABLE THIEUTH WEO KHIEUKH - 0xB974: 0xD261, //HANGUL SYLLABLE THIEUTH WEO THIEUTH - 0xB975: 0xD262, //HANGUL SYLLABLE THIEUTH WEO PHIEUPH - 0xB976: 0xD263, //HANGUL SYLLABLE THIEUTH WEO HIEUH - 0xB977: 0xD265, //HANGUL SYLLABLE THIEUTH WE KIYEOK - 0xB978: 0xD266, //HANGUL SYLLABLE THIEUTH WE SSANGKIYEOK - 0xB979: 0xD267, //HANGUL SYLLABLE THIEUTH WE KIYEOKSIOS - 0xB97A: 0xD268, //HANGUL SYLLABLE THIEUTH WE NIEUN - 0xB981: 0xD269, //HANGUL SYLLABLE THIEUTH WE NIEUNCIEUC - 0xB982: 0xD26A, //HANGUL SYLLABLE THIEUTH WE NIEUNHIEUH - 0xB983: 0xD26B, //HANGUL SYLLABLE THIEUTH WE TIKEUT - 0xB984: 0xD26C, //HANGUL SYLLABLE THIEUTH WE RIEUL - 0xB985: 0xD26D, //HANGUL SYLLABLE THIEUTH WE RIEULKIYEOK - 0xB986: 0xD26E, //HANGUL SYLLABLE THIEUTH WE RIEULMIEUM - 0xB987: 0xD26F, //HANGUL SYLLABLE THIEUTH WE RIEULPIEUP - 0xB988: 0xD270, //HANGUL SYLLABLE THIEUTH WE RIEULSIOS - 0xB989: 0xD271, //HANGUL SYLLABLE THIEUTH WE RIEULTHIEUTH - 0xB98A: 0xD272, //HANGUL SYLLABLE THIEUTH WE RIEULPHIEUPH - 0xB98B: 0xD273, //HANGUL SYLLABLE THIEUTH WE RIEULHIEUH - 0xB98C: 0xD274, //HANGUL SYLLABLE THIEUTH WE MIEUM - 0xB98D: 0xD275, //HANGUL SYLLABLE THIEUTH WE PIEUP - 0xB98E: 0xD276, //HANGUL SYLLABLE THIEUTH WE PIEUPSIOS - 0xB98F: 0xD277, //HANGUL SYLLABLE THIEUTH WE SIOS - 0xB990: 0xD278, //HANGUL SYLLABLE THIEUTH WE SSANGSIOS - 0xB991: 0xD279, //HANGUL SYLLABLE THIEUTH WE IEUNG - 0xB992: 0xD27A, //HANGUL SYLLABLE THIEUTH WE CIEUC - 0xB993: 0xD27B, //HANGUL SYLLABLE THIEUTH WE CHIEUCH - 0xB994: 0xD27C, //HANGUL SYLLABLE THIEUTH WE KHIEUKH - 0xB995: 0xD27D, //HANGUL SYLLABLE THIEUTH WE THIEUTH - 0xB996: 0xD27E, //HANGUL SYLLABLE THIEUTH WE PHIEUPH - 0xB997: 0xD27F, //HANGUL SYLLABLE THIEUTH WE HIEUH - 0xB998: 0xD282, //HANGUL SYLLABLE THIEUTH WI SSANGKIYEOK - 0xB999: 0xD283, //HANGUL SYLLABLE THIEUTH WI KIYEOKSIOS - 0xB99A: 0xD285, //HANGUL SYLLABLE THIEUTH WI NIEUNCIEUC - 0xB99B: 0xD286, //HANGUL SYLLABLE THIEUTH WI NIEUNHIEUH - 0xB99C: 0xD287, //HANGUL SYLLABLE THIEUTH WI TIKEUT - 0xB99D: 0xD289, //HANGUL SYLLABLE THIEUTH WI RIEULKIYEOK - 0xB99E: 0xD28A, //HANGUL SYLLABLE THIEUTH WI RIEULMIEUM - 0xB99F: 0xD28B, //HANGUL SYLLABLE THIEUTH WI RIEULPIEUP - 0xB9A0: 0xD28C, //HANGUL SYLLABLE THIEUTH WI RIEULSIOS - 0xB9A1: 0xBB00, //HANGUL SYLLABLE MIEUM OE NIEUN - 0xB9A2: 0xBB04, //HANGUL SYLLABLE MIEUM OE RIEUL - 0xB9A3: 0xBB0D, //HANGUL SYLLABLE MIEUM OE PIEUP - 0xB9A4: 0xBB0F, //HANGUL SYLLABLE MIEUM OE SIOS - 0xB9A5: 0xBB11, //HANGUL SYLLABLE MIEUM OE IEUNG - 0xB9A6: 0xBB18, //HANGUL SYLLABLE MIEUM YO - 0xB9A7: 0xBB1C, //HANGUL SYLLABLE MIEUM YO NIEUN - 0xB9A8: 0xBB20, //HANGUL SYLLABLE MIEUM YO RIEUL - 0xB9A9: 0xBB29, //HANGUL SYLLABLE MIEUM YO PIEUP - 0xB9AA: 0xBB2B, //HANGUL SYLLABLE MIEUM YO SIOS - 0xB9AB: 0xBB34, //HANGUL SYLLABLE MIEUM U - 0xB9AC: 0xBB35, //HANGUL SYLLABLE MIEUM U KIYEOK - 0xB9AD: 0xBB36, //HANGUL SYLLABLE MIEUM U SSANGKIYEOK - 0xB9AE: 0xBB38, //HANGUL SYLLABLE MIEUM U NIEUN - 0xB9AF: 0xBB3B, //HANGUL SYLLABLE MIEUM U TIKEUT - 0xB9B0: 0xBB3C, //HANGUL SYLLABLE MIEUM U RIEUL - 0xB9B1: 0xBB3D, //HANGUL SYLLABLE MIEUM U RIEULKIYEOK - 0xB9B2: 0xBB3E, //HANGUL SYLLABLE MIEUM U RIEULMIEUM - 0xB9B3: 0xBB44, //HANGUL SYLLABLE MIEUM U MIEUM - 0xB9B4: 0xBB45, //HANGUL SYLLABLE MIEUM U PIEUP - 0xB9B5: 0xBB47, //HANGUL SYLLABLE MIEUM U SIOS - 0xB9B6: 0xBB49, //HANGUL SYLLABLE MIEUM U IEUNG - 0xB9B7: 0xBB4D, //HANGUL SYLLABLE MIEUM U THIEUTH - 0xB9B8: 0xBB4F, //HANGUL SYLLABLE MIEUM U HIEUH - 0xB9B9: 0xBB50, //HANGUL SYLLABLE MIEUM WEO - 0xB9BA: 0xBB54, //HANGUL SYLLABLE MIEUM WEO NIEUN - 0xB9BB: 0xBB58, //HANGUL SYLLABLE MIEUM WEO RIEUL - 0xB9BC: 0xBB61, //HANGUL SYLLABLE MIEUM WEO PIEUP - 0xB9BD: 0xBB63, //HANGUL SYLLABLE MIEUM WEO SIOS - 0xB9BE: 0xBB6C, //HANGUL SYLLABLE MIEUM WE - 0xB9BF: 0xBB88, //HANGUL SYLLABLE MIEUM WI - 0xB9C0: 0xBB8C, //HANGUL SYLLABLE MIEUM WI NIEUN - 0xB9C1: 0xBB90, //HANGUL SYLLABLE MIEUM WI RIEUL - 0xB9C2: 0xBBA4, //HANGUL SYLLABLE MIEUM YU - 0xB9C3: 0xBBA8, //HANGUL SYLLABLE MIEUM YU NIEUN - 0xB9C4: 0xBBAC, //HANGUL SYLLABLE MIEUM YU RIEUL - 0xB9C5: 0xBBB4, //HANGUL SYLLABLE MIEUM YU MIEUM - 0xB9C6: 0xBBB7, //HANGUL SYLLABLE MIEUM YU SIOS - 0xB9C7: 0xBBC0, //HANGUL SYLLABLE MIEUM EU - 0xB9C8: 0xBBC4, //HANGUL SYLLABLE MIEUM EU NIEUN - 0xB9C9: 0xBBC8, //HANGUL SYLLABLE MIEUM EU RIEUL - 0xB9CA: 0xBBD0, //HANGUL SYLLABLE MIEUM EU MIEUM - 0xB9CB: 0xBBD3, //HANGUL SYLLABLE MIEUM EU SIOS - 0xB9CC: 0xBBF8, //HANGUL SYLLABLE MIEUM I - 0xB9CD: 0xBBF9, //HANGUL SYLLABLE MIEUM I KIYEOK - 0xB9CE: 0xBBFC, //HANGUL SYLLABLE MIEUM I NIEUN - 0xB9CF: 0xBBFF, //HANGUL SYLLABLE MIEUM I TIKEUT - 0xB9D0: 0xBC00, //HANGUL SYLLABLE MIEUM I RIEUL - 0xB9D1: 0xBC02, //HANGUL SYLLABLE MIEUM I RIEULMIEUM - 0xB9D2: 0xBC08, //HANGUL SYLLABLE MIEUM I MIEUM - 0xB9D3: 0xBC09, //HANGUL SYLLABLE MIEUM I PIEUP - 0xB9D4: 0xBC0B, //HANGUL SYLLABLE MIEUM I SIOS - 0xB9D5: 0xBC0C, //HANGUL SYLLABLE MIEUM I SSANGSIOS - 0xB9D6: 0xBC0D, //HANGUL SYLLABLE MIEUM I IEUNG - 0xB9D7: 0xBC0F, //HANGUL SYLLABLE MIEUM I CHIEUCH - 0xB9D8: 0xBC11, //HANGUL SYLLABLE MIEUM I THIEUTH - 0xB9D9: 0xBC14, //HANGUL SYLLABLE PIEUP A - 0xB9DA: 0xBC15, //HANGUL SYLLABLE PIEUP A KIYEOK - 0xB9DB: 0xBC16, //HANGUL SYLLABLE PIEUP A SSANGKIYEOK - 0xB9DC: 0xBC17, //HANGUL SYLLABLE PIEUP A KIYEOKSIOS - 0xB9DD: 0xBC18, //HANGUL SYLLABLE PIEUP A NIEUN - 0xB9DE: 0xBC1B, //HANGUL SYLLABLE PIEUP A TIKEUT - 0xB9DF: 0xBC1C, //HANGUL SYLLABLE PIEUP A RIEUL - 0xB9E0: 0xBC1D, //HANGUL SYLLABLE PIEUP A RIEULKIYEOK - 0xB9E1: 0xBC1E, //HANGUL SYLLABLE PIEUP A RIEULMIEUM - 0xB9E2: 0xBC1F, //HANGUL SYLLABLE PIEUP A RIEULPIEUP - 0xB9E3: 0xBC24, //HANGUL SYLLABLE PIEUP A MIEUM - 0xB9E4: 0xBC25, //HANGUL SYLLABLE PIEUP A PIEUP - 0xB9E5: 0xBC27, //HANGUL SYLLABLE PIEUP A SIOS - 0xB9E6: 0xBC29, //HANGUL SYLLABLE PIEUP A IEUNG - 0xB9E7: 0xBC2D, //HANGUL SYLLABLE PIEUP A THIEUTH - 0xB9E8: 0xBC30, //HANGUL SYLLABLE PIEUP AE - 0xB9E9: 0xBC31, //HANGUL SYLLABLE PIEUP AE KIYEOK - 0xB9EA: 0xBC34, //HANGUL SYLLABLE PIEUP AE NIEUN - 0xB9EB: 0xBC38, //HANGUL SYLLABLE PIEUP AE RIEUL - 0xB9EC: 0xBC40, //HANGUL SYLLABLE PIEUP AE MIEUM - 0xB9ED: 0xBC41, //HANGUL SYLLABLE PIEUP AE PIEUP - 0xB9EE: 0xBC43, //HANGUL SYLLABLE PIEUP AE SIOS - 0xB9EF: 0xBC44, //HANGUL SYLLABLE PIEUP AE SSANGSIOS - 0xB9F0: 0xBC45, //HANGUL SYLLABLE PIEUP AE IEUNG - 0xB9F1: 0xBC49, //HANGUL SYLLABLE PIEUP AE THIEUTH - 0xB9F2: 0xBC4C, //HANGUL SYLLABLE PIEUP YA - 0xB9F3: 0xBC4D, //HANGUL SYLLABLE PIEUP YA KIYEOK - 0xB9F4: 0xBC50, //HANGUL SYLLABLE PIEUP YA NIEUN - 0xB9F5: 0xBC5D, //HANGUL SYLLABLE PIEUP YA PIEUP - 0xB9F6: 0xBC84, //HANGUL SYLLABLE PIEUP EO - 0xB9F7: 0xBC85, //HANGUL SYLLABLE PIEUP EO KIYEOK - 0xB9F8: 0xBC88, //HANGUL SYLLABLE PIEUP EO NIEUN - 0xB9F9: 0xBC8B, //HANGUL SYLLABLE PIEUP EO TIKEUT - 0xB9FA: 0xBC8C, //HANGUL SYLLABLE PIEUP EO RIEUL - 0xB9FB: 0xBC8E, //HANGUL SYLLABLE PIEUP EO RIEULMIEUM - 0xB9FC: 0xBC94, //HANGUL SYLLABLE PIEUP EO MIEUM - 0xB9FD: 0xBC95, //HANGUL SYLLABLE PIEUP EO PIEUP - 0xB9FE: 0xBC97, //HANGUL SYLLABLE PIEUP EO SIOS - 0xBA41: 0xD28D, //HANGUL SYLLABLE THIEUTH WI RIEULTHIEUTH - 0xBA42: 0xD28E, //HANGUL SYLLABLE THIEUTH WI RIEULPHIEUPH - 0xBA43: 0xD28F, //HANGUL SYLLABLE THIEUTH WI RIEULHIEUH - 0xBA44: 0xD292, //HANGUL SYLLABLE THIEUTH WI PIEUPSIOS - 0xBA45: 0xD293, //HANGUL SYLLABLE THIEUTH WI SIOS - 0xBA46: 0xD294, //HANGUL SYLLABLE THIEUTH WI SSANGSIOS - 0xBA47: 0xD296, //HANGUL SYLLABLE THIEUTH WI CIEUC - 0xBA48: 0xD297, //HANGUL SYLLABLE THIEUTH WI CHIEUCH - 0xBA49: 0xD298, //HANGUL SYLLABLE THIEUTH WI KHIEUKH - 0xBA4A: 0xD299, //HANGUL SYLLABLE THIEUTH WI THIEUTH - 0xBA4B: 0xD29A, //HANGUL SYLLABLE THIEUTH WI PHIEUPH - 0xBA4C: 0xD29B, //HANGUL SYLLABLE THIEUTH WI HIEUH - 0xBA4D: 0xD29D, //HANGUL SYLLABLE THIEUTH YU KIYEOK - 0xBA4E: 0xD29E, //HANGUL SYLLABLE THIEUTH YU SSANGKIYEOK - 0xBA4F: 0xD29F, //HANGUL SYLLABLE THIEUTH YU KIYEOKSIOS - 0xBA50: 0xD2A1, //HANGUL SYLLABLE THIEUTH YU NIEUNCIEUC - 0xBA51: 0xD2A2, //HANGUL SYLLABLE THIEUTH YU NIEUNHIEUH - 0xBA52: 0xD2A3, //HANGUL SYLLABLE THIEUTH YU TIKEUT - 0xBA53: 0xD2A5, //HANGUL SYLLABLE THIEUTH YU RIEULKIYEOK - 0xBA54: 0xD2A6, //HANGUL SYLLABLE THIEUTH YU RIEULMIEUM - 0xBA55: 0xD2A7, //HANGUL SYLLABLE THIEUTH YU RIEULPIEUP - 0xBA56: 0xD2A8, //HANGUL SYLLABLE THIEUTH YU RIEULSIOS - 0xBA57: 0xD2A9, //HANGUL SYLLABLE THIEUTH YU RIEULTHIEUTH - 0xBA58: 0xD2AA, //HANGUL SYLLABLE THIEUTH YU RIEULPHIEUPH - 0xBA59: 0xD2AB, //HANGUL SYLLABLE THIEUTH YU RIEULHIEUH - 0xBA5A: 0xD2AD, //HANGUL SYLLABLE THIEUTH YU PIEUP - 0xBA61: 0xD2AE, //HANGUL SYLLABLE THIEUTH YU PIEUPSIOS - 0xBA62: 0xD2AF, //HANGUL SYLLABLE THIEUTH YU SIOS - 0xBA63: 0xD2B0, //HANGUL SYLLABLE THIEUTH YU SSANGSIOS - 0xBA64: 0xD2B2, //HANGUL SYLLABLE THIEUTH YU CIEUC - 0xBA65: 0xD2B3, //HANGUL SYLLABLE THIEUTH YU CHIEUCH - 0xBA66: 0xD2B4, //HANGUL SYLLABLE THIEUTH YU KHIEUKH - 0xBA67: 0xD2B5, //HANGUL SYLLABLE THIEUTH YU THIEUTH - 0xBA68: 0xD2B6, //HANGUL SYLLABLE THIEUTH YU PHIEUPH - 0xBA69: 0xD2B7, //HANGUL SYLLABLE THIEUTH YU HIEUH - 0xBA6A: 0xD2BA, //HANGUL SYLLABLE THIEUTH EU SSANGKIYEOK - 0xBA6B: 0xD2BB, //HANGUL SYLLABLE THIEUTH EU KIYEOKSIOS - 0xBA6C: 0xD2BD, //HANGUL SYLLABLE THIEUTH EU NIEUNCIEUC - 0xBA6D: 0xD2BE, //HANGUL SYLLABLE THIEUTH EU NIEUNHIEUH - 0xBA6E: 0xD2C1, //HANGUL SYLLABLE THIEUTH EU RIEULKIYEOK - 0xBA6F: 0xD2C3, //HANGUL SYLLABLE THIEUTH EU RIEULPIEUP - 0xBA70: 0xD2C4, //HANGUL SYLLABLE THIEUTH EU RIEULSIOS - 0xBA71: 0xD2C5, //HANGUL SYLLABLE THIEUTH EU RIEULTHIEUTH - 0xBA72: 0xD2C6, //HANGUL SYLLABLE THIEUTH EU RIEULPHIEUPH - 0xBA73: 0xD2C7, //HANGUL SYLLABLE THIEUTH EU RIEULHIEUH - 0xBA74: 0xD2CA, //HANGUL SYLLABLE THIEUTH EU PIEUPSIOS - 0xBA75: 0xD2CC, //HANGUL SYLLABLE THIEUTH EU SSANGSIOS - 0xBA76: 0xD2CD, //HANGUL SYLLABLE THIEUTH EU IEUNG - 0xBA77: 0xD2CE, //HANGUL SYLLABLE THIEUTH EU CIEUC - 0xBA78: 0xD2CF, //HANGUL SYLLABLE THIEUTH EU CHIEUCH - 0xBA79: 0xD2D0, //HANGUL SYLLABLE THIEUTH EU KHIEUKH - 0xBA7A: 0xD2D1, //HANGUL SYLLABLE THIEUTH EU THIEUTH - 0xBA81: 0xD2D2, //HANGUL SYLLABLE THIEUTH EU PHIEUPH - 0xBA82: 0xD2D3, //HANGUL SYLLABLE THIEUTH EU HIEUH - 0xBA83: 0xD2D5, //HANGUL SYLLABLE THIEUTH YI KIYEOK - 0xBA84: 0xD2D6, //HANGUL SYLLABLE THIEUTH YI SSANGKIYEOK - 0xBA85: 0xD2D7, //HANGUL SYLLABLE THIEUTH YI KIYEOKSIOS - 0xBA86: 0xD2D9, //HANGUL SYLLABLE THIEUTH YI NIEUNCIEUC - 0xBA87: 0xD2DA, //HANGUL SYLLABLE THIEUTH YI NIEUNHIEUH - 0xBA88: 0xD2DB, //HANGUL SYLLABLE THIEUTH YI TIKEUT - 0xBA89: 0xD2DD, //HANGUL SYLLABLE THIEUTH YI RIEULKIYEOK - 0xBA8A: 0xD2DE, //HANGUL SYLLABLE THIEUTH YI RIEULMIEUM - 0xBA8B: 0xD2DF, //HANGUL SYLLABLE THIEUTH YI RIEULPIEUP - 0xBA8C: 0xD2E0, //HANGUL SYLLABLE THIEUTH YI RIEULSIOS - 0xBA8D: 0xD2E1, //HANGUL SYLLABLE THIEUTH YI RIEULTHIEUTH - 0xBA8E: 0xD2E2, //HANGUL SYLLABLE THIEUTH YI RIEULPHIEUPH - 0xBA8F: 0xD2E3, //HANGUL SYLLABLE THIEUTH YI RIEULHIEUH - 0xBA90: 0xD2E6, //HANGUL SYLLABLE THIEUTH YI PIEUPSIOS - 0xBA91: 0xD2E7, //HANGUL SYLLABLE THIEUTH YI SIOS - 0xBA92: 0xD2E8, //HANGUL SYLLABLE THIEUTH YI SSANGSIOS - 0xBA93: 0xD2E9, //HANGUL SYLLABLE THIEUTH YI IEUNG - 0xBA94: 0xD2EA, //HANGUL SYLLABLE THIEUTH YI CIEUC - 0xBA95: 0xD2EB, //HANGUL SYLLABLE THIEUTH YI CHIEUCH - 0xBA96: 0xD2EC, //HANGUL SYLLABLE THIEUTH YI KHIEUKH - 0xBA97: 0xD2ED, //HANGUL SYLLABLE THIEUTH YI THIEUTH - 0xBA98: 0xD2EE, //HANGUL SYLLABLE THIEUTH YI PHIEUPH - 0xBA99: 0xD2EF, //HANGUL SYLLABLE THIEUTH YI HIEUH - 0xBA9A: 0xD2F2, //HANGUL SYLLABLE THIEUTH I SSANGKIYEOK - 0xBA9B: 0xD2F3, //HANGUL SYLLABLE THIEUTH I KIYEOKSIOS - 0xBA9C: 0xD2F5, //HANGUL SYLLABLE THIEUTH I NIEUNCIEUC - 0xBA9D: 0xD2F6, //HANGUL SYLLABLE THIEUTH I NIEUNHIEUH - 0xBA9E: 0xD2F7, //HANGUL SYLLABLE THIEUTH I TIKEUT - 0xBA9F: 0xD2F9, //HANGUL SYLLABLE THIEUTH I RIEULKIYEOK - 0xBAA0: 0xD2FA, //HANGUL SYLLABLE THIEUTH I RIEULMIEUM - 0xBAA1: 0xBC99, //HANGUL SYLLABLE PIEUP EO IEUNG - 0xBAA2: 0xBC9A, //HANGUL SYLLABLE PIEUP EO CIEUC - 0xBAA3: 0xBCA0, //HANGUL SYLLABLE PIEUP E - 0xBAA4: 0xBCA1, //HANGUL SYLLABLE PIEUP E KIYEOK - 0xBAA5: 0xBCA4, //HANGUL SYLLABLE PIEUP E NIEUN - 0xBAA6: 0xBCA7, //HANGUL SYLLABLE PIEUP E TIKEUT - 0xBAA7: 0xBCA8, //HANGUL SYLLABLE PIEUP E RIEUL - 0xBAA8: 0xBCB0, //HANGUL SYLLABLE PIEUP E MIEUM - 0xBAA9: 0xBCB1, //HANGUL SYLLABLE PIEUP E PIEUP - 0xBAAA: 0xBCB3, //HANGUL SYLLABLE PIEUP E SIOS - 0xBAAB: 0xBCB4, //HANGUL SYLLABLE PIEUP E SSANGSIOS - 0xBAAC: 0xBCB5, //HANGUL SYLLABLE PIEUP E IEUNG - 0xBAAD: 0xBCBC, //HANGUL SYLLABLE PIEUP YEO - 0xBAAE: 0xBCBD, //HANGUL SYLLABLE PIEUP YEO KIYEOK - 0xBAAF: 0xBCC0, //HANGUL SYLLABLE PIEUP YEO NIEUN - 0xBAB0: 0xBCC4, //HANGUL SYLLABLE PIEUP YEO RIEUL - 0xBAB1: 0xBCCD, //HANGUL SYLLABLE PIEUP YEO PIEUP - 0xBAB2: 0xBCCF, //HANGUL SYLLABLE PIEUP YEO SIOS - 0xBAB3: 0xBCD0, //HANGUL SYLLABLE PIEUP YEO SSANGSIOS - 0xBAB4: 0xBCD1, //HANGUL SYLLABLE PIEUP YEO IEUNG - 0xBAB5: 0xBCD5, //HANGUL SYLLABLE PIEUP YEO THIEUTH - 0xBAB6: 0xBCD8, //HANGUL SYLLABLE PIEUP YE - 0xBAB7: 0xBCDC, //HANGUL SYLLABLE PIEUP YE NIEUN - 0xBAB8: 0xBCF4, //HANGUL SYLLABLE PIEUP O - 0xBAB9: 0xBCF5, //HANGUL SYLLABLE PIEUP O KIYEOK - 0xBABA: 0xBCF6, //HANGUL SYLLABLE PIEUP O SSANGKIYEOK - 0xBABB: 0xBCF8, //HANGUL SYLLABLE PIEUP O NIEUN - 0xBABC: 0xBCFC, //HANGUL SYLLABLE PIEUP O RIEUL - 0xBABD: 0xBD04, //HANGUL SYLLABLE PIEUP O MIEUM - 0xBABE: 0xBD05, //HANGUL SYLLABLE PIEUP O PIEUP - 0xBABF: 0xBD07, //HANGUL SYLLABLE PIEUP O SIOS - 0xBAC0: 0xBD09, //HANGUL SYLLABLE PIEUP O IEUNG - 0xBAC1: 0xBD10, //HANGUL SYLLABLE PIEUP WA - 0xBAC2: 0xBD14, //HANGUL SYLLABLE PIEUP WA NIEUN - 0xBAC3: 0xBD24, //HANGUL SYLLABLE PIEUP WA SSANGSIOS - 0xBAC4: 0xBD2C, //HANGUL SYLLABLE PIEUP WAE - 0xBAC5: 0xBD40, //HANGUL SYLLABLE PIEUP WAE SSANGSIOS - 0xBAC6: 0xBD48, //HANGUL SYLLABLE PIEUP OE - 0xBAC7: 0xBD49, //HANGUL SYLLABLE PIEUP OE KIYEOK - 0xBAC8: 0xBD4C, //HANGUL SYLLABLE PIEUP OE NIEUN - 0xBAC9: 0xBD50, //HANGUL SYLLABLE PIEUP OE RIEUL - 0xBACA: 0xBD58, //HANGUL SYLLABLE PIEUP OE MIEUM - 0xBACB: 0xBD59, //HANGUL SYLLABLE PIEUP OE PIEUP - 0xBACC: 0xBD64, //HANGUL SYLLABLE PIEUP YO - 0xBACD: 0xBD68, //HANGUL SYLLABLE PIEUP YO NIEUN - 0xBACE: 0xBD80, //HANGUL SYLLABLE PIEUP U - 0xBACF: 0xBD81, //HANGUL SYLLABLE PIEUP U KIYEOK - 0xBAD0: 0xBD84, //HANGUL SYLLABLE PIEUP U NIEUN - 0xBAD1: 0xBD87, //HANGUL SYLLABLE PIEUP U TIKEUT - 0xBAD2: 0xBD88, //HANGUL SYLLABLE PIEUP U RIEUL - 0xBAD3: 0xBD89, //HANGUL SYLLABLE PIEUP U RIEULKIYEOK - 0xBAD4: 0xBD8A, //HANGUL SYLLABLE PIEUP U RIEULMIEUM - 0xBAD5: 0xBD90, //HANGUL SYLLABLE PIEUP U MIEUM - 0xBAD6: 0xBD91, //HANGUL SYLLABLE PIEUP U PIEUP - 0xBAD7: 0xBD93, //HANGUL SYLLABLE PIEUP U SIOS - 0xBAD8: 0xBD95, //HANGUL SYLLABLE PIEUP U IEUNG - 0xBAD9: 0xBD99, //HANGUL SYLLABLE PIEUP U THIEUTH - 0xBADA: 0xBD9A, //HANGUL SYLLABLE PIEUP U PHIEUPH - 0xBADB: 0xBD9C, //HANGUL SYLLABLE PIEUP WEO - 0xBADC: 0xBDA4, //HANGUL SYLLABLE PIEUP WEO RIEUL - 0xBADD: 0xBDB0, //HANGUL SYLLABLE PIEUP WEO SSANGSIOS - 0xBADE: 0xBDB8, //HANGUL SYLLABLE PIEUP WE - 0xBADF: 0xBDD4, //HANGUL SYLLABLE PIEUP WI - 0xBAE0: 0xBDD5, //HANGUL SYLLABLE PIEUP WI KIYEOK - 0xBAE1: 0xBDD8, //HANGUL SYLLABLE PIEUP WI NIEUN - 0xBAE2: 0xBDDC, //HANGUL SYLLABLE PIEUP WI RIEUL - 0xBAE3: 0xBDE9, //HANGUL SYLLABLE PIEUP WI IEUNG - 0xBAE4: 0xBDF0, //HANGUL SYLLABLE PIEUP YU - 0xBAE5: 0xBDF4, //HANGUL SYLLABLE PIEUP YU NIEUN - 0xBAE6: 0xBDF8, //HANGUL SYLLABLE PIEUP YU RIEUL - 0xBAE7: 0xBE00, //HANGUL SYLLABLE PIEUP YU MIEUM - 0xBAE8: 0xBE03, //HANGUL SYLLABLE PIEUP YU SIOS - 0xBAE9: 0xBE05, //HANGUL SYLLABLE PIEUP YU IEUNG - 0xBAEA: 0xBE0C, //HANGUL SYLLABLE PIEUP EU - 0xBAEB: 0xBE0D, //HANGUL SYLLABLE PIEUP EU KIYEOK - 0xBAEC: 0xBE10, //HANGUL SYLLABLE PIEUP EU NIEUN - 0xBAED: 0xBE14, //HANGUL SYLLABLE PIEUP EU RIEUL - 0xBAEE: 0xBE1C, //HANGUL SYLLABLE PIEUP EU MIEUM - 0xBAEF: 0xBE1D, //HANGUL SYLLABLE PIEUP EU PIEUP - 0xBAF0: 0xBE1F, //HANGUL SYLLABLE PIEUP EU SIOS - 0xBAF1: 0xBE44, //HANGUL SYLLABLE PIEUP I - 0xBAF2: 0xBE45, //HANGUL SYLLABLE PIEUP I KIYEOK - 0xBAF3: 0xBE48, //HANGUL SYLLABLE PIEUP I NIEUN - 0xBAF4: 0xBE4C, //HANGUL SYLLABLE PIEUP I RIEUL - 0xBAF5: 0xBE4E, //HANGUL SYLLABLE PIEUP I RIEULMIEUM - 0xBAF6: 0xBE54, //HANGUL SYLLABLE PIEUP I MIEUM - 0xBAF7: 0xBE55, //HANGUL SYLLABLE PIEUP I PIEUP - 0xBAF8: 0xBE57, //HANGUL SYLLABLE PIEUP I SIOS - 0xBAF9: 0xBE59, //HANGUL SYLLABLE PIEUP I IEUNG - 0xBAFA: 0xBE5A, //HANGUL SYLLABLE PIEUP I CIEUC - 0xBAFB: 0xBE5B, //HANGUL SYLLABLE PIEUP I CHIEUCH - 0xBAFC: 0xBE60, //HANGUL SYLLABLE SSANGPIEUP A - 0xBAFD: 0xBE61, //HANGUL SYLLABLE SSANGPIEUP A KIYEOK - 0xBAFE: 0xBE64, //HANGUL SYLLABLE SSANGPIEUP A NIEUN - 0xBB41: 0xD2FB, //HANGUL SYLLABLE THIEUTH I RIEULPIEUP - 0xBB42: 0xD2FC, //HANGUL SYLLABLE THIEUTH I RIEULSIOS - 0xBB43: 0xD2FD, //HANGUL SYLLABLE THIEUTH I RIEULTHIEUTH - 0xBB44: 0xD2FE, //HANGUL SYLLABLE THIEUTH I RIEULPHIEUPH - 0xBB45: 0xD2FF, //HANGUL SYLLABLE THIEUTH I RIEULHIEUH - 0xBB46: 0xD302, //HANGUL SYLLABLE THIEUTH I PIEUPSIOS - 0xBB47: 0xD304, //HANGUL SYLLABLE THIEUTH I SSANGSIOS - 0xBB48: 0xD306, //HANGUL SYLLABLE THIEUTH I CIEUC - 0xBB49: 0xD307, //HANGUL SYLLABLE THIEUTH I CHIEUCH - 0xBB4A: 0xD308, //HANGUL SYLLABLE THIEUTH I KHIEUKH - 0xBB4B: 0xD309, //HANGUL SYLLABLE THIEUTH I THIEUTH - 0xBB4C: 0xD30A, //HANGUL SYLLABLE THIEUTH I PHIEUPH - 0xBB4D: 0xD30B, //HANGUL SYLLABLE THIEUTH I HIEUH - 0xBB4E: 0xD30F, //HANGUL SYLLABLE PHIEUPH A KIYEOKSIOS - 0xBB4F: 0xD311, //HANGUL SYLLABLE PHIEUPH A NIEUNCIEUC - 0xBB50: 0xD312, //HANGUL SYLLABLE PHIEUPH A NIEUNHIEUH - 0xBB51: 0xD313, //HANGUL SYLLABLE PHIEUPH A TIKEUT - 0xBB52: 0xD315, //HANGUL SYLLABLE PHIEUPH A RIEULKIYEOK - 0xBB53: 0xD317, //HANGUL SYLLABLE PHIEUPH A RIEULPIEUP - 0xBB54: 0xD318, //HANGUL SYLLABLE PHIEUPH A RIEULSIOS - 0xBB55: 0xD319, //HANGUL SYLLABLE PHIEUPH A RIEULTHIEUTH - 0xBB56: 0xD31A, //HANGUL SYLLABLE PHIEUPH A RIEULPHIEUPH - 0xBB57: 0xD31B, //HANGUL SYLLABLE PHIEUPH A RIEULHIEUH - 0xBB58: 0xD31E, //HANGUL SYLLABLE PHIEUPH A PIEUPSIOS - 0xBB59: 0xD322, //HANGUL SYLLABLE PHIEUPH A CIEUC - 0xBB5A: 0xD323, //HANGUL SYLLABLE PHIEUPH A CHIEUCH - 0xBB61: 0xD324, //HANGUL SYLLABLE PHIEUPH A KHIEUKH - 0xBB62: 0xD326, //HANGUL SYLLABLE PHIEUPH A PHIEUPH - 0xBB63: 0xD327, //HANGUL SYLLABLE PHIEUPH A HIEUH - 0xBB64: 0xD32A, //HANGUL SYLLABLE PHIEUPH AE SSANGKIYEOK - 0xBB65: 0xD32B, //HANGUL SYLLABLE PHIEUPH AE KIYEOKSIOS - 0xBB66: 0xD32D, //HANGUL SYLLABLE PHIEUPH AE NIEUNCIEUC - 0xBB67: 0xD32E, //HANGUL SYLLABLE PHIEUPH AE NIEUNHIEUH - 0xBB68: 0xD32F, //HANGUL SYLLABLE PHIEUPH AE TIKEUT - 0xBB69: 0xD331, //HANGUL SYLLABLE PHIEUPH AE RIEULKIYEOK - 0xBB6A: 0xD332, //HANGUL SYLLABLE PHIEUPH AE RIEULMIEUM - 0xBB6B: 0xD333, //HANGUL SYLLABLE PHIEUPH AE RIEULPIEUP - 0xBB6C: 0xD334, //HANGUL SYLLABLE PHIEUPH AE RIEULSIOS - 0xBB6D: 0xD335, //HANGUL SYLLABLE PHIEUPH AE RIEULTHIEUTH - 0xBB6E: 0xD336, //HANGUL SYLLABLE PHIEUPH AE RIEULPHIEUPH - 0xBB6F: 0xD337, //HANGUL SYLLABLE PHIEUPH AE RIEULHIEUH - 0xBB70: 0xD33A, //HANGUL SYLLABLE PHIEUPH AE PIEUPSIOS - 0xBB71: 0xD33E, //HANGUL SYLLABLE PHIEUPH AE CIEUC - 0xBB72: 0xD33F, //HANGUL SYLLABLE PHIEUPH AE CHIEUCH - 0xBB73: 0xD340, //HANGUL SYLLABLE PHIEUPH AE KHIEUKH - 0xBB74: 0xD341, //HANGUL SYLLABLE PHIEUPH AE THIEUTH - 0xBB75: 0xD342, //HANGUL SYLLABLE PHIEUPH AE PHIEUPH - 0xBB76: 0xD343, //HANGUL SYLLABLE PHIEUPH AE HIEUH - 0xBB77: 0xD346, //HANGUL SYLLABLE PHIEUPH YA SSANGKIYEOK - 0xBB78: 0xD347, //HANGUL SYLLABLE PHIEUPH YA KIYEOKSIOS - 0xBB79: 0xD348, //HANGUL SYLLABLE PHIEUPH YA NIEUN - 0xBB7A: 0xD349, //HANGUL SYLLABLE PHIEUPH YA NIEUNCIEUC - 0xBB81: 0xD34A, //HANGUL SYLLABLE PHIEUPH YA NIEUNHIEUH - 0xBB82: 0xD34B, //HANGUL SYLLABLE PHIEUPH YA TIKEUT - 0xBB83: 0xD34C, //HANGUL SYLLABLE PHIEUPH YA RIEUL - 0xBB84: 0xD34D, //HANGUL SYLLABLE PHIEUPH YA RIEULKIYEOK - 0xBB85: 0xD34E, //HANGUL SYLLABLE PHIEUPH YA RIEULMIEUM - 0xBB86: 0xD34F, //HANGUL SYLLABLE PHIEUPH YA RIEULPIEUP - 0xBB87: 0xD350, //HANGUL SYLLABLE PHIEUPH YA RIEULSIOS - 0xBB88: 0xD351, //HANGUL SYLLABLE PHIEUPH YA RIEULTHIEUTH - 0xBB89: 0xD352, //HANGUL SYLLABLE PHIEUPH YA RIEULPHIEUPH - 0xBB8A: 0xD353, //HANGUL SYLLABLE PHIEUPH YA RIEULHIEUH - 0xBB8B: 0xD354, //HANGUL SYLLABLE PHIEUPH YA MIEUM - 0xBB8C: 0xD355, //HANGUL SYLLABLE PHIEUPH YA PIEUP - 0xBB8D: 0xD356, //HANGUL SYLLABLE PHIEUPH YA PIEUPSIOS - 0xBB8E: 0xD357, //HANGUL SYLLABLE PHIEUPH YA SIOS - 0xBB8F: 0xD358, //HANGUL SYLLABLE PHIEUPH YA SSANGSIOS - 0xBB90: 0xD359, //HANGUL SYLLABLE PHIEUPH YA IEUNG - 0xBB91: 0xD35A, //HANGUL SYLLABLE PHIEUPH YA CIEUC - 0xBB92: 0xD35B, //HANGUL SYLLABLE PHIEUPH YA CHIEUCH - 0xBB93: 0xD35C, //HANGUL SYLLABLE PHIEUPH YA KHIEUKH - 0xBB94: 0xD35D, //HANGUL SYLLABLE PHIEUPH YA THIEUTH - 0xBB95: 0xD35E, //HANGUL SYLLABLE PHIEUPH YA PHIEUPH - 0xBB96: 0xD35F, //HANGUL SYLLABLE PHIEUPH YA HIEUH - 0xBB97: 0xD360, //HANGUL SYLLABLE PHIEUPH YAE - 0xBB98: 0xD361, //HANGUL SYLLABLE PHIEUPH YAE KIYEOK - 0xBB99: 0xD362, //HANGUL SYLLABLE PHIEUPH YAE SSANGKIYEOK - 0xBB9A: 0xD363, //HANGUL SYLLABLE PHIEUPH YAE KIYEOKSIOS - 0xBB9B: 0xD364, //HANGUL SYLLABLE PHIEUPH YAE NIEUN - 0xBB9C: 0xD365, //HANGUL SYLLABLE PHIEUPH YAE NIEUNCIEUC - 0xBB9D: 0xD366, //HANGUL SYLLABLE PHIEUPH YAE NIEUNHIEUH - 0xBB9E: 0xD367, //HANGUL SYLLABLE PHIEUPH YAE TIKEUT - 0xBB9F: 0xD368, //HANGUL SYLLABLE PHIEUPH YAE RIEUL - 0xBBA0: 0xD369, //HANGUL SYLLABLE PHIEUPH YAE RIEULKIYEOK - 0xBBA1: 0xBE68, //HANGUL SYLLABLE SSANGPIEUP A RIEUL - 0xBBA2: 0xBE6A, //HANGUL SYLLABLE SSANGPIEUP A RIEULMIEUM - 0xBBA3: 0xBE70, //HANGUL SYLLABLE SSANGPIEUP A MIEUM - 0xBBA4: 0xBE71, //HANGUL SYLLABLE SSANGPIEUP A PIEUP - 0xBBA5: 0xBE73, //HANGUL SYLLABLE SSANGPIEUP A SIOS - 0xBBA6: 0xBE74, //HANGUL SYLLABLE SSANGPIEUP A SSANGSIOS - 0xBBA7: 0xBE75, //HANGUL SYLLABLE SSANGPIEUP A IEUNG - 0xBBA8: 0xBE7B, //HANGUL SYLLABLE SSANGPIEUP A HIEUH - 0xBBA9: 0xBE7C, //HANGUL SYLLABLE SSANGPIEUP AE - 0xBBAA: 0xBE7D, //HANGUL SYLLABLE SSANGPIEUP AE KIYEOK - 0xBBAB: 0xBE80, //HANGUL SYLLABLE SSANGPIEUP AE NIEUN - 0xBBAC: 0xBE84, //HANGUL SYLLABLE SSANGPIEUP AE RIEUL - 0xBBAD: 0xBE8C, //HANGUL SYLLABLE SSANGPIEUP AE MIEUM - 0xBBAE: 0xBE8D, //HANGUL SYLLABLE SSANGPIEUP AE PIEUP - 0xBBAF: 0xBE8F, //HANGUL SYLLABLE SSANGPIEUP AE SIOS - 0xBBB0: 0xBE90, //HANGUL SYLLABLE SSANGPIEUP AE SSANGSIOS - 0xBBB1: 0xBE91, //HANGUL SYLLABLE SSANGPIEUP AE IEUNG - 0xBBB2: 0xBE98, //HANGUL SYLLABLE SSANGPIEUP YA - 0xBBB3: 0xBE99, //HANGUL SYLLABLE SSANGPIEUP YA KIYEOK - 0xBBB4: 0xBEA8, //HANGUL SYLLABLE SSANGPIEUP YA MIEUM - 0xBBB5: 0xBED0, //HANGUL SYLLABLE SSANGPIEUP EO - 0xBBB6: 0xBED1, //HANGUL SYLLABLE SSANGPIEUP EO KIYEOK - 0xBBB7: 0xBED4, //HANGUL SYLLABLE SSANGPIEUP EO NIEUN - 0xBBB8: 0xBED7, //HANGUL SYLLABLE SSANGPIEUP EO TIKEUT - 0xBBB9: 0xBED8, //HANGUL SYLLABLE SSANGPIEUP EO RIEUL - 0xBBBA: 0xBEE0, //HANGUL SYLLABLE SSANGPIEUP EO MIEUM - 0xBBBB: 0xBEE3, //HANGUL SYLLABLE SSANGPIEUP EO SIOS - 0xBBBC: 0xBEE4, //HANGUL SYLLABLE SSANGPIEUP EO SSANGSIOS - 0xBBBD: 0xBEE5, //HANGUL SYLLABLE SSANGPIEUP EO IEUNG - 0xBBBE: 0xBEEC, //HANGUL SYLLABLE SSANGPIEUP E - 0xBBBF: 0xBF01, //HANGUL SYLLABLE SSANGPIEUP E IEUNG - 0xBBC0: 0xBF08, //HANGUL SYLLABLE SSANGPIEUP YEO - 0xBBC1: 0xBF09, //HANGUL SYLLABLE SSANGPIEUP YEO KIYEOK - 0xBBC2: 0xBF18, //HANGUL SYLLABLE SSANGPIEUP YEO MIEUM - 0xBBC3: 0xBF19, //HANGUL SYLLABLE SSANGPIEUP YEO PIEUP - 0xBBC4: 0xBF1B, //HANGUL SYLLABLE SSANGPIEUP YEO SIOS - 0xBBC5: 0xBF1C, //HANGUL SYLLABLE SSANGPIEUP YEO SSANGSIOS - 0xBBC6: 0xBF1D, //HANGUL SYLLABLE SSANGPIEUP YEO IEUNG - 0xBBC7: 0xBF40, //HANGUL SYLLABLE SSANGPIEUP O - 0xBBC8: 0xBF41, //HANGUL SYLLABLE SSANGPIEUP O KIYEOK - 0xBBC9: 0xBF44, //HANGUL SYLLABLE SSANGPIEUP O NIEUN - 0xBBCA: 0xBF48, //HANGUL SYLLABLE SSANGPIEUP O RIEUL - 0xBBCB: 0xBF50, //HANGUL SYLLABLE SSANGPIEUP O MIEUM - 0xBBCC: 0xBF51, //HANGUL SYLLABLE SSANGPIEUP O PIEUP - 0xBBCD: 0xBF55, //HANGUL SYLLABLE SSANGPIEUP O IEUNG - 0xBBCE: 0xBF94, //HANGUL SYLLABLE SSANGPIEUP OE - 0xBBCF: 0xBFB0, //HANGUL SYLLABLE SSANGPIEUP YO - 0xBBD0: 0xBFC5, //HANGUL SYLLABLE SSANGPIEUP YO IEUNG - 0xBBD1: 0xBFCC, //HANGUL SYLLABLE SSANGPIEUP U - 0xBBD2: 0xBFCD, //HANGUL SYLLABLE SSANGPIEUP U KIYEOK - 0xBBD3: 0xBFD0, //HANGUL SYLLABLE SSANGPIEUP U NIEUN - 0xBBD4: 0xBFD4, //HANGUL SYLLABLE SSANGPIEUP U RIEUL - 0xBBD5: 0xBFDC, //HANGUL SYLLABLE SSANGPIEUP U MIEUM - 0xBBD6: 0xBFDF, //HANGUL SYLLABLE SSANGPIEUP U SIOS - 0xBBD7: 0xBFE1, //HANGUL SYLLABLE SSANGPIEUP U IEUNG - 0xBBD8: 0xC03C, //HANGUL SYLLABLE SSANGPIEUP YU - 0xBBD9: 0xC051, //HANGUL SYLLABLE SSANGPIEUP YU IEUNG - 0xBBDA: 0xC058, //HANGUL SYLLABLE SSANGPIEUP EU - 0xBBDB: 0xC05C, //HANGUL SYLLABLE SSANGPIEUP EU NIEUN - 0xBBDC: 0xC060, //HANGUL SYLLABLE SSANGPIEUP EU RIEUL - 0xBBDD: 0xC068, //HANGUL SYLLABLE SSANGPIEUP EU MIEUM - 0xBBDE: 0xC069, //HANGUL SYLLABLE SSANGPIEUP EU PIEUP - 0xBBDF: 0xC090, //HANGUL SYLLABLE SSANGPIEUP I - 0xBBE0: 0xC091, //HANGUL SYLLABLE SSANGPIEUP I KIYEOK - 0xBBE1: 0xC094, //HANGUL SYLLABLE SSANGPIEUP I NIEUN - 0xBBE2: 0xC098, //HANGUL SYLLABLE SSANGPIEUP I RIEUL - 0xBBE3: 0xC0A0, //HANGUL SYLLABLE SSANGPIEUP I MIEUM - 0xBBE4: 0xC0A1, //HANGUL SYLLABLE SSANGPIEUP I PIEUP - 0xBBE5: 0xC0A3, //HANGUL SYLLABLE SSANGPIEUP I SIOS - 0xBBE6: 0xC0A5, //HANGUL SYLLABLE SSANGPIEUP I IEUNG - 0xBBE7: 0xC0AC, //HANGUL SYLLABLE SIOS A - 0xBBE8: 0xC0AD, //HANGUL SYLLABLE SIOS A KIYEOK - 0xBBE9: 0xC0AF, //HANGUL SYLLABLE SIOS A KIYEOKSIOS - 0xBBEA: 0xC0B0, //HANGUL SYLLABLE SIOS A NIEUN - 0xBBEB: 0xC0B3, //HANGUL SYLLABLE SIOS A TIKEUT - 0xBBEC: 0xC0B4, //HANGUL SYLLABLE SIOS A RIEUL - 0xBBED: 0xC0B5, //HANGUL SYLLABLE SIOS A RIEULKIYEOK - 0xBBEE: 0xC0B6, //HANGUL SYLLABLE SIOS A RIEULMIEUM - 0xBBEF: 0xC0BC, //HANGUL SYLLABLE SIOS A MIEUM - 0xBBF0: 0xC0BD, //HANGUL SYLLABLE SIOS A PIEUP - 0xBBF1: 0xC0BF, //HANGUL SYLLABLE SIOS A SIOS - 0xBBF2: 0xC0C0, //HANGUL SYLLABLE SIOS A SSANGSIOS - 0xBBF3: 0xC0C1, //HANGUL SYLLABLE SIOS A IEUNG - 0xBBF4: 0xC0C5, //HANGUL SYLLABLE SIOS A THIEUTH - 0xBBF5: 0xC0C8, //HANGUL SYLLABLE SIOS AE - 0xBBF6: 0xC0C9, //HANGUL SYLLABLE SIOS AE KIYEOK - 0xBBF7: 0xC0CC, //HANGUL SYLLABLE SIOS AE NIEUN - 0xBBF8: 0xC0D0, //HANGUL SYLLABLE SIOS AE RIEUL - 0xBBF9: 0xC0D8, //HANGUL SYLLABLE SIOS AE MIEUM - 0xBBFA: 0xC0D9, //HANGUL SYLLABLE SIOS AE PIEUP - 0xBBFB: 0xC0DB, //HANGUL SYLLABLE SIOS AE SIOS - 0xBBFC: 0xC0DC, //HANGUL SYLLABLE SIOS AE SSANGSIOS - 0xBBFD: 0xC0DD, //HANGUL SYLLABLE SIOS AE IEUNG - 0xBBFE: 0xC0E4, //HANGUL SYLLABLE SIOS YA - 0xBC41: 0xD36A, //HANGUL SYLLABLE PHIEUPH YAE RIEULMIEUM - 0xBC42: 0xD36B, //HANGUL SYLLABLE PHIEUPH YAE RIEULPIEUP - 0xBC43: 0xD36C, //HANGUL SYLLABLE PHIEUPH YAE RIEULSIOS - 0xBC44: 0xD36D, //HANGUL SYLLABLE PHIEUPH YAE RIEULTHIEUTH - 0xBC45: 0xD36E, //HANGUL SYLLABLE PHIEUPH YAE RIEULPHIEUPH - 0xBC46: 0xD36F, //HANGUL SYLLABLE PHIEUPH YAE RIEULHIEUH - 0xBC47: 0xD370, //HANGUL SYLLABLE PHIEUPH YAE MIEUM - 0xBC48: 0xD371, //HANGUL SYLLABLE PHIEUPH YAE PIEUP - 0xBC49: 0xD372, //HANGUL SYLLABLE PHIEUPH YAE PIEUPSIOS - 0xBC4A: 0xD373, //HANGUL SYLLABLE PHIEUPH YAE SIOS - 0xBC4B: 0xD374, //HANGUL SYLLABLE PHIEUPH YAE SSANGSIOS - 0xBC4C: 0xD375, //HANGUL SYLLABLE PHIEUPH YAE IEUNG - 0xBC4D: 0xD376, //HANGUL SYLLABLE PHIEUPH YAE CIEUC - 0xBC4E: 0xD377, //HANGUL SYLLABLE PHIEUPH YAE CHIEUCH - 0xBC4F: 0xD378, //HANGUL SYLLABLE PHIEUPH YAE KHIEUKH - 0xBC50: 0xD379, //HANGUL SYLLABLE PHIEUPH YAE THIEUTH - 0xBC51: 0xD37A, //HANGUL SYLLABLE PHIEUPH YAE PHIEUPH - 0xBC52: 0xD37B, //HANGUL SYLLABLE PHIEUPH YAE HIEUH - 0xBC53: 0xD37E, //HANGUL SYLLABLE PHIEUPH EO SSANGKIYEOK - 0xBC54: 0xD37F, //HANGUL SYLLABLE PHIEUPH EO KIYEOKSIOS - 0xBC55: 0xD381, //HANGUL SYLLABLE PHIEUPH EO NIEUNCIEUC - 0xBC56: 0xD382, //HANGUL SYLLABLE PHIEUPH EO NIEUNHIEUH - 0xBC57: 0xD383, //HANGUL SYLLABLE PHIEUPH EO TIKEUT - 0xBC58: 0xD385, //HANGUL SYLLABLE PHIEUPH EO RIEULKIYEOK - 0xBC59: 0xD386, //HANGUL SYLLABLE PHIEUPH EO RIEULMIEUM - 0xBC5A: 0xD387, //HANGUL SYLLABLE PHIEUPH EO RIEULPIEUP - 0xBC61: 0xD388, //HANGUL SYLLABLE PHIEUPH EO RIEULSIOS - 0xBC62: 0xD389, //HANGUL SYLLABLE PHIEUPH EO RIEULTHIEUTH - 0xBC63: 0xD38A, //HANGUL SYLLABLE PHIEUPH EO RIEULPHIEUPH - 0xBC64: 0xD38B, //HANGUL SYLLABLE PHIEUPH EO RIEULHIEUH - 0xBC65: 0xD38E, //HANGUL SYLLABLE PHIEUPH EO PIEUPSIOS - 0xBC66: 0xD392, //HANGUL SYLLABLE PHIEUPH EO CIEUC - 0xBC67: 0xD393, //HANGUL SYLLABLE PHIEUPH EO CHIEUCH - 0xBC68: 0xD394, //HANGUL SYLLABLE PHIEUPH EO KHIEUKH - 0xBC69: 0xD395, //HANGUL SYLLABLE PHIEUPH EO THIEUTH - 0xBC6A: 0xD396, //HANGUL SYLLABLE PHIEUPH EO PHIEUPH - 0xBC6B: 0xD397, //HANGUL SYLLABLE PHIEUPH EO HIEUH - 0xBC6C: 0xD39A, //HANGUL SYLLABLE PHIEUPH E SSANGKIYEOK - 0xBC6D: 0xD39B, //HANGUL SYLLABLE PHIEUPH E KIYEOKSIOS - 0xBC6E: 0xD39D, //HANGUL SYLLABLE PHIEUPH E NIEUNCIEUC - 0xBC6F: 0xD39E, //HANGUL SYLLABLE PHIEUPH E NIEUNHIEUH - 0xBC70: 0xD39F, //HANGUL SYLLABLE PHIEUPH E TIKEUT - 0xBC71: 0xD3A1, //HANGUL SYLLABLE PHIEUPH E RIEULKIYEOK - 0xBC72: 0xD3A2, //HANGUL SYLLABLE PHIEUPH E RIEULMIEUM - 0xBC73: 0xD3A3, //HANGUL SYLLABLE PHIEUPH E RIEULPIEUP - 0xBC74: 0xD3A4, //HANGUL SYLLABLE PHIEUPH E RIEULSIOS - 0xBC75: 0xD3A5, //HANGUL SYLLABLE PHIEUPH E RIEULTHIEUTH - 0xBC76: 0xD3A6, //HANGUL SYLLABLE PHIEUPH E RIEULPHIEUPH - 0xBC77: 0xD3A7, //HANGUL SYLLABLE PHIEUPH E RIEULHIEUH - 0xBC78: 0xD3AA, //HANGUL SYLLABLE PHIEUPH E PIEUPSIOS - 0xBC79: 0xD3AC, //HANGUL SYLLABLE PHIEUPH E SSANGSIOS - 0xBC7A: 0xD3AE, //HANGUL SYLLABLE PHIEUPH E CIEUC - 0xBC81: 0xD3AF, //HANGUL SYLLABLE PHIEUPH E CHIEUCH - 0xBC82: 0xD3B0, //HANGUL SYLLABLE PHIEUPH E KHIEUKH - 0xBC83: 0xD3B1, //HANGUL SYLLABLE PHIEUPH E THIEUTH - 0xBC84: 0xD3B2, //HANGUL SYLLABLE PHIEUPH E PHIEUPH - 0xBC85: 0xD3B3, //HANGUL SYLLABLE PHIEUPH E HIEUH - 0xBC86: 0xD3B5, //HANGUL SYLLABLE PHIEUPH YEO KIYEOK - 0xBC87: 0xD3B6, //HANGUL SYLLABLE PHIEUPH YEO SSANGKIYEOK - 0xBC88: 0xD3B7, //HANGUL SYLLABLE PHIEUPH YEO KIYEOKSIOS - 0xBC89: 0xD3B9, //HANGUL SYLLABLE PHIEUPH YEO NIEUNCIEUC - 0xBC8A: 0xD3BA, //HANGUL SYLLABLE PHIEUPH YEO NIEUNHIEUH - 0xBC8B: 0xD3BB, //HANGUL SYLLABLE PHIEUPH YEO TIKEUT - 0xBC8C: 0xD3BD, //HANGUL SYLLABLE PHIEUPH YEO RIEULKIYEOK - 0xBC8D: 0xD3BE, //HANGUL SYLLABLE PHIEUPH YEO RIEULMIEUM - 0xBC8E: 0xD3BF, //HANGUL SYLLABLE PHIEUPH YEO RIEULPIEUP - 0xBC8F: 0xD3C0, //HANGUL SYLLABLE PHIEUPH YEO RIEULSIOS - 0xBC90: 0xD3C1, //HANGUL SYLLABLE PHIEUPH YEO RIEULTHIEUTH - 0xBC91: 0xD3C2, //HANGUL SYLLABLE PHIEUPH YEO RIEULPHIEUPH - 0xBC92: 0xD3C3, //HANGUL SYLLABLE PHIEUPH YEO RIEULHIEUH - 0xBC93: 0xD3C6, //HANGUL SYLLABLE PHIEUPH YEO PIEUPSIOS - 0xBC94: 0xD3C7, //HANGUL SYLLABLE PHIEUPH YEO SIOS - 0xBC95: 0xD3CA, //HANGUL SYLLABLE PHIEUPH YEO CIEUC - 0xBC96: 0xD3CB, //HANGUL SYLLABLE PHIEUPH YEO CHIEUCH - 0xBC97: 0xD3CC, //HANGUL SYLLABLE PHIEUPH YEO KHIEUKH - 0xBC98: 0xD3CD, //HANGUL SYLLABLE PHIEUPH YEO THIEUTH - 0xBC99: 0xD3CE, //HANGUL SYLLABLE PHIEUPH YEO PHIEUPH - 0xBC9A: 0xD3CF, //HANGUL SYLLABLE PHIEUPH YEO HIEUH - 0xBC9B: 0xD3D1, //HANGUL SYLLABLE PHIEUPH YE KIYEOK - 0xBC9C: 0xD3D2, //HANGUL SYLLABLE PHIEUPH YE SSANGKIYEOK - 0xBC9D: 0xD3D3, //HANGUL SYLLABLE PHIEUPH YE KIYEOKSIOS - 0xBC9E: 0xD3D4, //HANGUL SYLLABLE PHIEUPH YE NIEUN - 0xBC9F: 0xD3D5, //HANGUL SYLLABLE PHIEUPH YE NIEUNCIEUC - 0xBCA0: 0xD3D6, //HANGUL SYLLABLE PHIEUPH YE NIEUNHIEUH - 0xBCA1: 0xC0E5, //HANGUL SYLLABLE SIOS YA KIYEOK - 0xBCA2: 0xC0E8, //HANGUL SYLLABLE SIOS YA NIEUN - 0xBCA3: 0xC0EC, //HANGUL SYLLABLE SIOS YA RIEUL - 0xBCA4: 0xC0F4, //HANGUL SYLLABLE SIOS YA MIEUM - 0xBCA5: 0xC0F5, //HANGUL SYLLABLE SIOS YA PIEUP - 0xBCA6: 0xC0F7, //HANGUL SYLLABLE SIOS YA SIOS - 0xBCA7: 0xC0F9, //HANGUL SYLLABLE SIOS YA IEUNG - 0xBCA8: 0xC100, //HANGUL SYLLABLE SIOS YAE - 0xBCA9: 0xC104, //HANGUL SYLLABLE SIOS YAE NIEUN - 0xBCAA: 0xC108, //HANGUL SYLLABLE SIOS YAE RIEUL - 0xBCAB: 0xC110, //HANGUL SYLLABLE SIOS YAE MIEUM - 0xBCAC: 0xC115, //HANGUL SYLLABLE SIOS YAE IEUNG - 0xBCAD: 0xC11C, //HANGUL SYLLABLE SIOS EO - 0xBCAE: 0xC11D, //HANGUL SYLLABLE SIOS EO KIYEOK - 0xBCAF: 0xC11E, //HANGUL SYLLABLE SIOS EO SSANGKIYEOK - 0xBCB0: 0xC11F, //HANGUL SYLLABLE SIOS EO KIYEOKSIOS - 0xBCB1: 0xC120, //HANGUL SYLLABLE SIOS EO NIEUN - 0xBCB2: 0xC123, //HANGUL SYLLABLE SIOS EO TIKEUT - 0xBCB3: 0xC124, //HANGUL SYLLABLE SIOS EO RIEUL - 0xBCB4: 0xC126, //HANGUL SYLLABLE SIOS EO RIEULMIEUM - 0xBCB5: 0xC127, //HANGUL SYLLABLE SIOS EO RIEULPIEUP - 0xBCB6: 0xC12C, //HANGUL SYLLABLE SIOS EO MIEUM - 0xBCB7: 0xC12D, //HANGUL SYLLABLE SIOS EO PIEUP - 0xBCB8: 0xC12F, //HANGUL SYLLABLE SIOS EO SIOS - 0xBCB9: 0xC130, //HANGUL SYLLABLE SIOS EO SSANGSIOS - 0xBCBA: 0xC131, //HANGUL SYLLABLE SIOS EO IEUNG - 0xBCBB: 0xC136, //HANGUL SYLLABLE SIOS EO PHIEUPH - 0xBCBC: 0xC138, //HANGUL SYLLABLE SIOS E - 0xBCBD: 0xC139, //HANGUL SYLLABLE SIOS E KIYEOK - 0xBCBE: 0xC13C, //HANGUL SYLLABLE SIOS E NIEUN - 0xBCBF: 0xC140, //HANGUL SYLLABLE SIOS E RIEUL - 0xBCC0: 0xC148, //HANGUL SYLLABLE SIOS E MIEUM - 0xBCC1: 0xC149, //HANGUL SYLLABLE SIOS E PIEUP - 0xBCC2: 0xC14B, //HANGUL SYLLABLE SIOS E SIOS - 0xBCC3: 0xC14C, //HANGUL SYLLABLE SIOS E SSANGSIOS - 0xBCC4: 0xC14D, //HANGUL SYLLABLE SIOS E IEUNG - 0xBCC5: 0xC154, //HANGUL SYLLABLE SIOS YEO - 0xBCC6: 0xC155, //HANGUL SYLLABLE SIOS YEO KIYEOK - 0xBCC7: 0xC158, //HANGUL SYLLABLE SIOS YEO NIEUN - 0xBCC8: 0xC15C, //HANGUL SYLLABLE SIOS YEO RIEUL - 0xBCC9: 0xC164, //HANGUL SYLLABLE SIOS YEO MIEUM - 0xBCCA: 0xC165, //HANGUL SYLLABLE SIOS YEO PIEUP - 0xBCCB: 0xC167, //HANGUL SYLLABLE SIOS YEO SIOS - 0xBCCC: 0xC168, //HANGUL SYLLABLE SIOS YEO SSANGSIOS - 0xBCCD: 0xC169, //HANGUL SYLLABLE SIOS YEO IEUNG - 0xBCCE: 0xC170, //HANGUL SYLLABLE SIOS YE - 0xBCCF: 0xC174, //HANGUL SYLLABLE SIOS YE NIEUN - 0xBCD0: 0xC178, //HANGUL SYLLABLE SIOS YE RIEUL - 0xBCD1: 0xC185, //HANGUL SYLLABLE SIOS YE IEUNG - 0xBCD2: 0xC18C, //HANGUL SYLLABLE SIOS O - 0xBCD3: 0xC18D, //HANGUL SYLLABLE SIOS O KIYEOK - 0xBCD4: 0xC18E, //HANGUL SYLLABLE SIOS O SSANGKIYEOK - 0xBCD5: 0xC190, //HANGUL SYLLABLE SIOS O NIEUN - 0xBCD6: 0xC194, //HANGUL SYLLABLE SIOS O RIEUL - 0xBCD7: 0xC196, //HANGUL SYLLABLE SIOS O RIEULMIEUM - 0xBCD8: 0xC19C, //HANGUL SYLLABLE SIOS O MIEUM - 0xBCD9: 0xC19D, //HANGUL SYLLABLE SIOS O PIEUP - 0xBCDA: 0xC19F, //HANGUL SYLLABLE SIOS O SIOS - 0xBCDB: 0xC1A1, //HANGUL SYLLABLE SIOS O IEUNG - 0xBCDC: 0xC1A5, //HANGUL SYLLABLE SIOS O THIEUTH - 0xBCDD: 0xC1A8, //HANGUL SYLLABLE SIOS WA - 0xBCDE: 0xC1A9, //HANGUL SYLLABLE SIOS WA KIYEOK - 0xBCDF: 0xC1AC, //HANGUL SYLLABLE SIOS WA NIEUN - 0xBCE0: 0xC1B0, //HANGUL SYLLABLE SIOS WA RIEUL - 0xBCE1: 0xC1BD, //HANGUL SYLLABLE SIOS WA IEUNG - 0xBCE2: 0xC1C4, //HANGUL SYLLABLE SIOS WAE - 0xBCE3: 0xC1C8, //HANGUL SYLLABLE SIOS WAE NIEUN - 0xBCE4: 0xC1CC, //HANGUL SYLLABLE SIOS WAE RIEUL - 0xBCE5: 0xC1D4, //HANGUL SYLLABLE SIOS WAE MIEUM - 0xBCE6: 0xC1D7, //HANGUL SYLLABLE SIOS WAE SIOS - 0xBCE7: 0xC1D8, //HANGUL SYLLABLE SIOS WAE SSANGSIOS - 0xBCE8: 0xC1E0, //HANGUL SYLLABLE SIOS OE - 0xBCE9: 0xC1E4, //HANGUL SYLLABLE SIOS OE NIEUN - 0xBCEA: 0xC1E8, //HANGUL SYLLABLE SIOS OE RIEUL - 0xBCEB: 0xC1F0, //HANGUL SYLLABLE SIOS OE MIEUM - 0xBCEC: 0xC1F1, //HANGUL SYLLABLE SIOS OE PIEUP - 0xBCED: 0xC1F3, //HANGUL SYLLABLE SIOS OE SIOS - 0xBCEE: 0xC1FC, //HANGUL SYLLABLE SIOS YO - 0xBCEF: 0xC1FD, //HANGUL SYLLABLE SIOS YO KIYEOK - 0xBCF0: 0xC200, //HANGUL SYLLABLE SIOS YO NIEUN - 0xBCF1: 0xC204, //HANGUL SYLLABLE SIOS YO RIEUL - 0xBCF2: 0xC20C, //HANGUL SYLLABLE SIOS YO MIEUM - 0xBCF3: 0xC20D, //HANGUL SYLLABLE SIOS YO PIEUP - 0xBCF4: 0xC20F, //HANGUL SYLLABLE SIOS YO SIOS - 0xBCF5: 0xC211, //HANGUL SYLLABLE SIOS YO IEUNG - 0xBCF6: 0xC218, //HANGUL SYLLABLE SIOS U - 0xBCF7: 0xC219, //HANGUL SYLLABLE SIOS U KIYEOK - 0xBCF8: 0xC21C, //HANGUL SYLLABLE SIOS U NIEUN - 0xBCF9: 0xC21F, //HANGUL SYLLABLE SIOS U TIKEUT - 0xBCFA: 0xC220, //HANGUL SYLLABLE SIOS U RIEUL - 0xBCFB: 0xC228, //HANGUL SYLLABLE SIOS U MIEUM - 0xBCFC: 0xC229, //HANGUL SYLLABLE SIOS U PIEUP - 0xBCFD: 0xC22B, //HANGUL SYLLABLE SIOS U SIOS - 0xBCFE: 0xC22D, //HANGUL SYLLABLE SIOS U IEUNG - 0xBD41: 0xD3D7, //HANGUL SYLLABLE PHIEUPH YE TIKEUT - 0xBD42: 0xD3D9, //HANGUL SYLLABLE PHIEUPH YE RIEULKIYEOK - 0xBD43: 0xD3DA, //HANGUL SYLLABLE PHIEUPH YE RIEULMIEUM - 0xBD44: 0xD3DB, //HANGUL SYLLABLE PHIEUPH YE RIEULPIEUP - 0xBD45: 0xD3DC, //HANGUL SYLLABLE PHIEUPH YE RIEULSIOS - 0xBD46: 0xD3DD, //HANGUL SYLLABLE PHIEUPH YE RIEULTHIEUTH - 0xBD47: 0xD3DE, //HANGUL SYLLABLE PHIEUPH YE RIEULPHIEUPH - 0xBD48: 0xD3DF, //HANGUL SYLLABLE PHIEUPH YE RIEULHIEUH - 0xBD49: 0xD3E0, //HANGUL SYLLABLE PHIEUPH YE MIEUM - 0xBD4A: 0xD3E2, //HANGUL SYLLABLE PHIEUPH YE PIEUPSIOS - 0xBD4B: 0xD3E4, //HANGUL SYLLABLE PHIEUPH YE SSANGSIOS - 0xBD4C: 0xD3E5, //HANGUL SYLLABLE PHIEUPH YE IEUNG - 0xBD4D: 0xD3E6, //HANGUL SYLLABLE PHIEUPH YE CIEUC - 0xBD4E: 0xD3E7, //HANGUL SYLLABLE PHIEUPH YE CHIEUCH - 0xBD4F: 0xD3E8, //HANGUL SYLLABLE PHIEUPH YE KHIEUKH - 0xBD50: 0xD3E9, //HANGUL SYLLABLE PHIEUPH YE THIEUTH - 0xBD51: 0xD3EA, //HANGUL SYLLABLE PHIEUPH YE PHIEUPH - 0xBD52: 0xD3EB, //HANGUL SYLLABLE PHIEUPH YE HIEUH - 0xBD53: 0xD3EE, //HANGUL SYLLABLE PHIEUPH O SSANGKIYEOK - 0xBD54: 0xD3EF, //HANGUL SYLLABLE PHIEUPH O KIYEOKSIOS - 0xBD55: 0xD3F1, //HANGUL SYLLABLE PHIEUPH O NIEUNCIEUC - 0xBD56: 0xD3F2, //HANGUL SYLLABLE PHIEUPH O NIEUNHIEUH - 0xBD57: 0xD3F3, //HANGUL SYLLABLE PHIEUPH O TIKEUT - 0xBD58: 0xD3F5, //HANGUL SYLLABLE PHIEUPH O RIEULKIYEOK - 0xBD59: 0xD3F6, //HANGUL SYLLABLE PHIEUPH O RIEULMIEUM - 0xBD5A: 0xD3F7, //HANGUL SYLLABLE PHIEUPH O RIEULPIEUP - 0xBD61: 0xD3F8, //HANGUL SYLLABLE PHIEUPH O RIEULSIOS - 0xBD62: 0xD3F9, //HANGUL SYLLABLE PHIEUPH O RIEULTHIEUTH - 0xBD63: 0xD3FA, //HANGUL SYLLABLE PHIEUPH O RIEULPHIEUPH - 0xBD64: 0xD3FB, //HANGUL SYLLABLE PHIEUPH O RIEULHIEUH - 0xBD65: 0xD3FE, //HANGUL SYLLABLE PHIEUPH O PIEUPSIOS - 0xBD66: 0xD400, //HANGUL SYLLABLE PHIEUPH O SSANGSIOS - 0xBD67: 0xD402, //HANGUL SYLLABLE PHIEUPH O CIEUC - 0xBD68: 0xD403, //HANGUL SYLLABLE PHIEUPH O CHIEUCH - 0xBD69: 0xD404, //HANGUL SYLLABLE PHIEUPH O KHIEUKH - 0xBD6A: 0xD405, //HANGUL SYLLABLE PHIEUPH O THIEUTH - 0xBD6B: 0xD406, //HANGUL SYLLABLE PHIEUPH O PHIEUPH - 0xBD6C: 0xD407, //HANGUL SYLLABLE PHIEUPH O HIEUH - 0xBD6D: 0xD409, //HANGUL SYLLABLE PHIEUPH WA KIYEOK - 0xBD6E: 0xD40A, //HANGUL SYLLABLE PHIEUPH WA SSANGKIYEOK - 0xBD6F: 0xD40B, //HANGUL SYLLABLE PHIEUPH WA KIYEOKSIOS - 0xBD70: 0xD40C, //HANGUL SYLLABLE PHIEUPH WA NIEUN - 0xBD71: 0xD40D, //HANGUL SYLLABLE PHIEUPH WA NIEUNCIEUC - 0xBD72: 0xD40E, //HANGUL SYLLABLE PHIEUPH WA NIEUNHIEUH - 0xBD73: 0xD40F, //HANGUL SYLLABLE PHIEUPH WA TIKEUT - 0xBD74: 0xD410, //HANGUL SYLLABLE PHIEUPH WA RIEUL - 0xBD75: 0xD411, //HANGUL SYLLABLE PHIEUPH WA RIEULKIYEOK - 0xBD76: 0xD412, //HANGUL SYLLABLE PHIEUPH WA RIEULMIEUM - 0xBD77: 0xD413, //HANGUL SYLLABLE PHIEUPH WA RIEULPIEUP - 0xBD78: 0xD414, //HANGUL SYLLABLE PHIEUPH WA RIEULSIOS - 0xBD79: 0xD415, //HANGUL SYLLABLE PHIEUPH WA RIEULTHIEUTH - 0xBD7A: 0xD416, //HANGUL SYLLABLE PHIEUPH WA RIEULPHIEUPH - 0xBD81: 0xD417, //HANGUL SYLLABLE PHIEUPH WA RIEULHIEUH - 0xBD82: 0xD418, //HANGUL SYLLABLE PHIEUPH WA MIEUM - 0xBD83: 0xD419, //HANGUL SYLLABLE PHIEUPH WA PIEUP - 0xBD84: 0xD41A, //HANGUL SYLLABLE PHIEUPH WA PIEUPSIOS - 0xBD85: 0xD41B, //HANGUL SYLLABLE PHIEUPH WA SIOS - 0xBD86: 0xD41C, //HANGUL SYLLABLE PHIEUPH WA SSANGSIOS - 0xBD87: 0xD41E, //HANGUL SYLLABLE PHIEUPH WA CIEUC - 0xBD88: 0xD41F, //HANGUL SYLLABLE PHIEUPH WA CHIEUCH - 0xBD89: 0xD420, //HANGUL SYLLABLE PHIEUPH WA KHIEUKH - 0xBD8A: 0xD421, //HANGUL SYLLABLE PHIEUPH WA THIEUTH - 0xBD8B: 0xD422, //HANGUL SYLLABLE PHIEUPH WA PHIEUPH - 0xBD8C: 0xD423, //HANGUL SYLLABLE PHIEUPH WA HIEUH - 0xBD8D: 0xD424, //HANGUL SYLLABLE PHIEUPH WAE - 0xBD8E: 0xD425, //HANGUL SYLLABLE PHIEUPH WAE KIYEOK - 0xBD8F: 0xD426, //HANGUL SYLLABLE PHIEUPH WAE SSANGKIYEOK - 0xBD90: 0xD427, //HANGUL SYLLABLE PHIEUPH WAE KIYEOKSIOS - 0xBD91: 0xD428, //HANGUL SYLLABLE PHIEUPH WAE NIEUN - 0xBD92: 0xD429, //HANGUL SYLLABLE PHIEUPH WAE NIEUNCIEUC - 0xBD93: 0xD42A, //HANGUL SYLLABLE PHIEUPH WAE NIEUNHIEUH - 0xBD94: 0xD42B, //HANGUL SYLLABLE PHIEUPH WAE TIKEUT - 0xBD95: 0xD42C, //HANGUL SYLLABLE PHIEUPH WAE RIEUL - 0xBD96: 0xD42D, //HANGUL SYLLABLE PHIEUPH WAE RIEULKIYEOK - 0xBD97: 0xD42E, //HANGUL SYLLABLE PHIEUPH WAE RIEULMIEUM - 0xBD98: 0xD42F, //HANGUL SYLLABLE PHIEUPH WAE RIEULPIEUP - 0xBD99: 0xD430, //HANGUL SYLLABLE PHIEUPH WAE RIEULSIOS - 0xBD9A: 0xD431, //HANGUL SYLLABLE PHIEUPH WAE RIEULTHIEUTH - 0xBD9B: 0xD432, //HANGUL SYLLABLE PHIEUPH WAE RIEULPHIEUPH - 0xBD9C: 0xD433, //HANGUL SYLLABLE PHIEUPH WAE RIEULHIEUH - 0xBD9D: 0xD434, //HANGUL SYLLABLE PHIEUPH WAE MIEUM - 0xBD9E: 0xD435, //HANGUL SYLLABLE PHIEUPH WAE PIEUP - 0xBD9F: 0xD436, //HANGUL SYLLABLE PHIEUPH WAE PIEUPSIOS - 0xBDA0: 0xD437, //HANGUL SYLLABLE PHIEUPH WAE SIOS - 0xBDA1: 0xC22F, //HANGUL SYLLABLE SIOS U CHIEUCH - 0xBDA2: 0xC231, //HANGUL SYLLABLE SIOS U THIEUTH - 0xBDA3: 0xC232, //HANGUL SYLLABLE SIOS U PHIEUPH - 0xBDA4: 0xC234, //HANGUL SYLLABLE SIOS WEO - 0xBDA5: 0xC248, //HANGUL SYLLABLE SIOS WEO SSANGSIOS - 0xBDA6: 0xC250, //HANGUL SYLLABLE SIOS WE - 0xBDA7: 0xC251, //HANGUL SYLLABLE SIOS WE KIYEOK - 0xBDA8: 0xC254, //HANGUL SYLLABLE SIOS WE NIEUN - 0xBDA9: 0xC258, //HANGUL SYLLABLE SIOS WE RIEUL - 0xBDAA: 0xC260, //HANGUL SYLLABLE SIOS WE MIEUM - 0xBDAB: 0xC265, //HANGUL SYLLABLE SIOS WE IEUNG - 0xBDAC: 0xC26C, //HANGUL SYLLABLE SIOS WI - 0xBDAD: 0xC26D, //HANGUL SYLLABLE SIOS WI KIYEOK - 0xBDAE: 0xC270, //HANGUL SYLLABLE SIOS WI NIEUN - 0xBDAF: 0xC274, //HANGUL SYLLABLE SIOS WI RIEUL - 0xBDB0: 0xC27C, //HANGUL SYLLABLE SIOS WI MIEUM - 0xBDB1: 0xC27D, //HANGUL SYLLABLE SIOS WI PIEUP - 0xBDB2: 0xC27F, //HANGUL SYLLABLE SIOS WI SIOS - 0xBDB3: 0xC281, //HANGUL SYLLABLE SIOS WI IEUNG - 0xBDB4: 0xC288, //HANGUL SYLLABLE SIOS YU - 0xBDB5: 0xC289, //HANGUL SYLLABLE SIOS YU KIYEOK - 0xBDB6: 0xC290, //HANGUL SYLLABLE SIOS YU RIEUL - 0xBDB7: 0xC298, //HANGUL SYLLABLE SIOS YU MIEUM - 0xBDB8: 0xC29B, //HANGUL SYLLABLE SIOS YU SIOS - 0xBDB9: 0xC29D, //HANGUL SYLLABLE SIOS YU IEUNG - 0xBDBA: 0xC2A4, //HANGUL SYLLABLE SIOS EU - 0xBDBB: 0xC2A5, //HANGUL SYLLABLE SIOS EU KIYEOK - 0xBDBC: 0xC2A8, //HANGUL SYLLABLE SIOS EU NIEUN - 0xBDBD: 0xC2AC, //HANGUL SYLLABLE SIOS EU RIEUL - 0xBDBE: 0xC2AD, //HANGUL SYLLABLE SIOS EU RIEULKIYEOK - 0xBDBF: 0xC2B4, //HANGUL SYLLABLE SIOS EU MIEUM - 0xBDC0: 0xC2B5, //HANGUL SYLLABLE SIOS EU PIEUP - 0xBDC1: 0xC2B7, //HANGUL SYLLABLE SIOS EU SIOS - 0xBDC2: 0xC2B9, //HANGUL SYLLABLE SIOS EU IEUNG - 0xBDC3: 0xC2DC, //HANGUL SYLLABLE SIOS I - 0xBDC4: 0xC2DD, //HANGUL SYLLABLE SIOS I KIYEOK - 0xBDC5: 0xC2E0, //HANGUL SYLLABLE SIOS I NIEUN - 0xBDC6: 0xC2E3, //HANGUL SYLLABLE SIOS I TIKEUT - 0xBDC7: 0xC2E4, //HANGUL SYLLABLE SIOS I RIEUL - 0xBDC8: 0xC2EB, //HANGUL SYLLABLE SIOS I RIEULHIEUH - 0xBDC9: 0xC2EC, //HANGUL SYLLABLE SIOS I MIEUM - 0xBDCA: 0xC2ED, //HANGUL SYLLABLE SIOS I PIEUP - 0xBDCB: 0xC2EF, //HANGUL SYLLABLE SIOS I SIOS - 0xBDCC: 0xC2F1, //HANGUL SYLLABLE SIOS I IEUNG - 0xBDCD: 0xC2F6, //HANGUL SYLLABLE SIOS I PHIEUPH - 0xBDCE: 0xC2F8, //HANGUL SYLLABLE SSANGSIOS A - 0xBDCF: 0xC2F9, //HANGUL SYLLABLE SSANGSIOS A KIYEOK - 0xBDD0: 0xC2FB, //HANGUL SYLLABLE SSANGSIOS A KIYEOKSIOS - 0xBDD1: 0xC2FC, //HANGUL SYLLABLE SSANGSIOS A NIEUN - 0xBDD2: 0xC300, //HANGUL SYLLABLE SSANGSIOS A RIEUL - 0xBDD3: 0xC308, //HANGUL SYLLABLE SSANGSIOS A MIEUM - 0xBDD4: 0xC309, //HANGUL SYLLABLE SSANGSIOS A PIEUP - 0xBDD5: 0xC30C, //HANGUL SYLLABLE SSANGSIOS A SSANGSIOS - 0xBDD6: 0xC30D, //HANGUL SYLLABLE SSANGSIOS A IEUNG - 0xBDD7: 0xC313, //HANGUL SYLLABLE SSANGSIOS A HIEUH - 0xBDD8: 0xC314, //HANGUL SYLLABLE SSANGSIOS AE - 0xBDD9: 0xC315, //HANGUL SYLLABLE SSANGSIOS AE KIYEOK - 0xBDDA: 0xC318, //HANGUL SYLLABLE SSANGSIOS AE NIEUN - 0xBDDB: 0xC31C, //HANGUL SYLLABLE SSANGSIOS AE RIEUL - 0xBDDC: 0xC324, //HANGUL SYLLABLE SSANGSIOS AE MIEUM - 0xBDDD: 0xC325, //HANGUL SYLLABLE SSANGSIOS AE PIEUP - 0xBDDE: 0xC328, //HANGUL SYLLABLE SSANGSIOS AE SSANGSIOS - 0xBDDF: 0xC329, //HANGUL SYLLABLE SSANGSIOS AE IEUNG - 0xBDE0: 0xC345, //HANGUL SYLLABLE SSANGSIOS YA IEUNG - 0xBDE1: 0xC368, //HANGUL SYLLABLE SSANGSIOS EO - 0xBDE2: 0xC369, //HANGUL SYLLABLE SSANGSIOS EO KIYEOK - 0xBDE3: 0xC36C, //HANGUL SYLLABLE SSANGSIOS EO NIEUN - 0xBDE4: 0xC370, //HANGUL SYLLABLE SSANGSIOS EO RIEUL - 0xBDE5: 0xC372, //HANGUL SYLLABLE SSANGSIOS EO RIEULMIEUM - 0xBDE6: 0xC378, //HANGUL SYLLABLE SSANGSIOS EO MIEUM - 0xBDE7: 0xC379, //HANGUL SYLLABLE SSANGSIOS EO PIEUP - 0xBDE8: 0xC37C, //HANGUL SYLLABLE SSANGSIOS EO SSANGSIOS - 0xBDE9: 0xC37D, //HANGUL SYLLABLE SSANGSIOS EO IEUNG - 0xBDEA: 0xC384, //HANGUL SYLLABLE SSANGSIOS E - 0xBDEB: 0xC388, //HANGUL SYLLABLE SSANGSIOS E NIEUN - 0xBDEC: 0xC38C, //HANGUL SYLLABLE SSANGSIOS E RIEUL - 0xBDED: 0xC3C0, //HANGUL SYLLABLE SSANGSIOS YE NIEUN - 0xBDEE: 0xC3D8, //HANGUL SYLLABLE SSANGSIOS O - 0xBDEF: 0xC3D9, //HANGUL SYLLABLE SSANGSIOS O KIYEOK - 0xBDF0: 0xC3DC, //HANGUL SYLLABLE SSANGSIOS O NIEUN - 0xBDF1: 0xC3DF, //HANGUL SYLLABLE SSANGSIOS O TIKEUT - 0xBDF2: 0xC3E0, //HANGUL SYLLABLE SSANGSIOS O RIEUL - 0xBDF3: 0xC3E2, //HANGUL SYLLABLE SSANGSIOS O RIEULMIEUM - 0xBDF4: 0xC3E8, //HANGUL SYLLABLE SSANGSIOS O MIEUM - 0xBDF5: 0xC3E9, //HANGUL SYLLABLE SSANGSIOS O PIEUP - 0xBDF6: 0xC3ED, //HANGUL SYLLABLE SSANGSIOS O IEUNG - 0xBDF7: 0xC3F4, //HANGUL SYLLABLE SSANGSIOS WA - 0xBDF8: 0xC3F5, //HANGUL SYLLABLE SSANGSIOS WA KIYEOK - 0xBDF9: 0xC3F8, //HANGUL SYLLABLE SSANGSIOS WA NIEUN - 0xBDFA: 0xC408, //HANGUL SYLLABLE SSANGSIOS WA SSANGSIOS - 0xBDFB: 0xC410, //HANGUL SYLLABLE SSANGSIOS WAE - 0xBDFC: 0xC424, //HANGUL SYLLABLE SSANGSIOS WAE SSANGSIOS - 0xBDFD: 0xC42C, //HANGUL SYLLABLE SSANGSIOS OE - 0xBDFE: 0xC430, //HANGUL SYLLABLE SSANGSIOS OE NIEUN - 0xBE41: 0xD438, //HANGUL SYLLABLE PHIEUPH WAE SSANGSIOS - 0xBE42: 0xD439, //HANGUL SYLLABLE PHIEUPH WAE IEUNG - 0xBE43: 0xD43A, //HANGUL SYLLABLE PHIEUPH WAE CIEUC - 0xBE44: 0xD43B, //HANGUL SYLLABLE PHIEUPH WAE CHIEUCH - 0xBE45: 0xD43C, //HANGUL SYLLABLE PHIEUPH WAE KHIEUKH - 0xBE46: 0xD43D, //HANGUL SYLLABLE PHIEUPH WAE THIEUTH - 0xBE47: 0xD43E, //HANGUL SYLLABLE PHIEUPH WAE PHIEUPH - 0xBE48: 0xD43F, //HANGUL SYLLABLE PHIEUPH WAE HIEUH - 0xBE49: 0xD441, //HANGUL SYLLABLE PHIEUPH OE KIYEOK - 0xBE4A: 0xD442, //HANGUL SYLLABLE PHIEUPH OE SSANGKIYEOK - 0xBE4B: 0xD443, //HANGUL SYLLABLE PHIEUPH OE KIYEOKSIOS - 0xBE4C: 0xD445, //HANGUL SYLLABLE PHIEUPH OE NIEUNCIEUC - 0xBE4D: 0xD446, //HANGUL SYLLABLE PHIEUPH OE NIEUNHIEUH - 0xBE4E: 0xD447, //HANGUL SYLLABLE PHIEUPH OE TIKEUT - 0xBE4F: 0xD448, //HANGUL SYLLABLE PHIEUPH OE RIEUL - 0xBE50: 0xD449, //HANGUL SYLLABLE PHIEUPH OE RIEULKIYEOK - 0xBE51: 0xD44A, //HANGUL SYLLABLE PHIEUPH OE RIEULMIEUM - 0xBE52: 0xD44B, //HANGUL SYLLABLE PHIEUPH OE RIEULPIEUP - 0xBE53: 0xD44C, //HANGUL SYLLABLE PHIEUPH OE RIEULSIOS - 0xBE54: 0xD44D, //HANGUL SYLLABLE PHIEUPH OE RIEULTHIEUTH - 0xBE55: 0xD44E, //HANGUL SYLLABLE PHIEUPH OE RIEULPHIEUPH - 0xBE56: 0xD44F, //HANGUL SYLLABLE PHIEUPH OE RIEULHIEUH - 0xBE57: 0xD450, //HANGUL SYLLABLE PHIEUPH OE MIEUM - 0xBE58: 0xD451, //HANGUL SYLLABLE PHIEUPH OE PIEUP - 0xBE59: 0xD452, //HANGUL SYLLABLE PHIEUPH OE PIEUPSIOS - 0xBE5A: 0xD453, //HANGUL SYLLABLE PHIEUPH OE SIOS - 0xBE61: 0xD454, //HANGUL SYLLABLE PHIEUPH OE SSANGSIOS - 0xBE62: 0xD455, //HANGUL SYLLABLE PHIEUPH OE IEUNG - 0xBE63: 0xD456, //HANGUL SYLLABLE PHIEUPH OE CIEUC - 0xBE64: 0xD457, //HANGUL SYLLABLE PHIEUPH OE CHIEUCH - 0xBE65: 0xD458, //HANGUL SYLLABLE PHIEUPH OE KHIEUKH - 0xBE66: 0xD459, //HANGUL SYLLABLE PHIEUPH OE THIEUTH - 0xBE67: 0xD45A, //HANGUL SYLLABLE PHIEUPH OE PHIEUPH - 0xBE68: 0xD45B, //HANGUL SYLLABLE PHIEUPH OE HIEUH - 0xBE69: 0xD45D, //HANGUL SYLLABLE PHIEUPH YO KIYEOK - 0xBE6A: 0xD45E, //HANGUL SYLLABLE PHIEUPH YO SSANGKIYEOK - 0xBE6B: 0xD45F, //HANGUL SYLLABLE PHIEUPH YO KIYEOKSIOS - 0xBE6C: 0xD461, //HANGUL SYLLABLE PHIEUPH YO NIEUNCIEUC - 0xBE6D: 0xD462, //HANGUL SYLLABLE PHIEUPH YO NIEUNHIEUH - 0xBE6E: 0xD463, //HANGUL SYLLABLE PHIEUPH YO TIKEUT - 0xBE6F: 0xD465, //HANGUL SYLLABLE PHIEUPH YO RIEULKIYEOK - 0xBE70: 0xD466, //HANGUL SYLLABLE PHIEUPH YO RIEULMIEUM - 0xBE71: 0xD467, //HANGUL SYLLABLE PHIEUPH YO RIEULPIEUP - 0xBE72: 0xD468, //HANGUL SYLLABLE PHIEUPH YO RIEULSIOS - 0xBE73: 0xD469, //HANGUL SYLLABLE PHIEUPH YO RIEULTHIEUTH - 0xBE74: 0xD46A, //HANGUL SYLLABLE PHIEUPH YO RIEULPHIEUPH - 0xBE75: 0xD46B, //HANGUL SYLLABLE PHIEUPH YO RIEULHIEUH - 0xBE76: 0xD46C, //HANGUL SYLLABLE PHIEUPH YO MIEUM - 0xBE77: 0xD46E, //HANGUL SYLLABLE PHIEUPH YO PIEUPSIOS - 0xBE78: 0xD470, //HANGUL SYLLABLE PHIEUPH YO SSANGSIOS - 0xBE79: 0xD471, //HANGUL SYLLABLE PHIEUPH YO IEUNG - 0xBE7A: 0xD472, //HANGUL SYLLABLE PHIEUPH YO CIEUC - 0xBE81: 0xD473, //HANGUL SYLLABLE PHIEUPH YO CHIEUCH - 0xBE82: 0xD474, //HANGUL SYLLABLE PHIEUPH YO KHIEUKH - 0xBE83: 0xD475, //HANGUL SYLLABLE PHIEUPH YO THIEUTH - 0xBE84: 0xD476, //HANGUL SYLLABLE PHIEUPH YO PHIEUPH - 0xBE85: 0xD477, //HANGUL SYLLABLE PHIEUPH YO HIEUH - 0xBE86: 0xD47A, //HANGUL SYLLABLE PHIEUPH U SSANGKIYEOK - 0xBE87: 0xD47B, //HANGUL SYLLABLE PHIEUPH U KIYEOKSIOS - 0xBE88: 0xD47D, //HANGUL SYLLABLE PHIEUPH U NIEUNCIEUC - 0xBE89: 0xD47E, //HANGUL SYLLABLE PHIEUPH U NIEUNHIEUH - 0xBE8A: 0xD481, //HANGUL SYLLABLE PHIEUPH U RIEULKIYEOK - 0xBE8B: 0xD483, //HANGUL SYLLABLE PHIEUPH U RIEULPIEUP - 0xBE8C: 0xD484, //HANGUL SYLLABLE PHIEUPH U RIEULSIOS - 0xBE8D: 0xD485, //HANGUL SYLLABLE PHIEUPH U RIEULTHIEUTH - 0xBE8E: 0xD486, //HANGUL SYLLABLE PHIEUPH U RIEULPHIEUPH - 0xBE8F: 0xD487, //HANGUL SYLLABLE PHIEUPH U RIEULHIEUH - 0xBE90: 0xD48A, //HANGUL SYLLABLE PHIEUPH U PIEUPSIOS - 0xBE91: 0xD48C, //HANGUL SYLLABLE PHIEUPH U SSANGSIOS - 0xBE92: 0xD48E, //HANGUL SYLLABLE PHIEUPH U CIEUC - 0xBE93: 0xD48F, //HANGUL SYLLABLE PHIEUPH U CHIEUCH - 0xBE94: 0xD490, //HANGUL SYLLABLE PHIEUPH U KHIEUKH - 0xBE95: 0xD491, //HANGUL SYLLABLE PHIEUPH U THIEUTH - 0xBE96: 0xD492, //HANGUL SYLLABLE PHIEUPH U PHIEUPH - 0xBE97: 0xD493, //HANGUL SYLLABLE PHIEUPH U HIEUH - 0xBE98: 0xD495, //HANGUL SYLLABLE PHIEUPH WEO KIYEOK - 0xBE99: 0xD496, //HANGUL SYLLABLE PHIEUPH WEO SSANGKIYEOK - 0xBE9A: 0xD497, //HANGUL SYLLABLE PHIEUPH WEO KIYEOKSIOS - 0xBE9B: 0xD498, //HANGUL SYLLABLE PHIEUPH WEO NIEUN - 0xBE9C: 0xD499, //HANGUL SYLLABLE PHIEUPH WEO NIEUNCIEUC - 0xBE9D: 0xD49A, //HANGUL SYLLABLE PHIEUPH WEO NIEUNHIEUH - 0xBE9E: 0xD49B, //HANGUL SYLLABLE PHIEUPH WEO TIKEUT - 0xBE9F: 0xD49C, //HANGUL SYLLABLE PHIEUPH WEO RIEUL - 0xBEA0: 0xD49D, //HANGUL SYLLABLE PHIEUPH WEO RIEULKIYEOK - 0xBEA1: 0xC434, //HANGUL SYLLABLE SSANGSIOS OE RIEUL - 0xBEA2: 0xC43C, //HANGUL SYLLABLE SSANGSIOS OE MIEUM - 0xBEA3: 0xC43D, //HANGUL SYLLABLE SSANGSIOS OE PIEUP - 0xBEA4: 0xC448, //HANGUL SYLLABLE SSANGSIOS YO - 0xBEA5: 0xC464, //HANGUL SYLLABLE SSANGSIOS U - 0xBEA6: 0xC465, //HANGUL SYLLABLE SSANGSIOS U KIYEOK - 0xBEA7: 0xC468, //HANGUL SYLLABLE SSANGSIOS U NIEUN - 0xBEA8: 0xC46C, //HANGUL SYLLABLE SSANGSIOS U RIEUL - 0xBEA9: 0xC474, //HANGUL SYLLABLE SSANGSIOS U MIEUM - 0xBEAA: 0xC475, //HANGUL SYLLABLE SSANGSIOS U PIEUP - 0xBEAB: 0xC479, //HANGUL SYLLABLE SSANGSIOS U IEUNG - 0xBEAC: 0xC480, //HANGUL SYLLABLE SSANGSIOS WEO - 0xBEAD: 0xC494, //HANGUL SYLLABLE SSANGSIOS WEO SSANGSIOS - 0xBEAE: 0xC49C, //HANGUL SYLLABLE SSANGSIOS WE - 0xBEAF: 0xC4B8, //HANGUL SYLLABLE SSANGSIOS WI - 0xBEB0: 0xC4BC, //HANGUL SYLLABLE SSANGSIOS WI NIEUN - 0xBEB1: 0xC4E9, //HANGUL SYLLABLE SSANGSIOS YU IEUNG - 0xBEB2: 0xC4F0, //HANGUL SYLLABLE SSANGSIOS EU - 0xBEB3: 0xC4F1, //HANGUL SYLLABLE SSANGSIOS EU KIYEOK - 0xBEB4: 0xC4F4, //HANGUL SYLLABLE SSANGSIOS EU NIEUN - 0xBEB5: 0xC4F8, //HANGUL SYLLABLE SSANGSIOS EU RIEUL - 0xBEB6: 0xC4FA, //HANGUL SYLLABLE SSANGSIOS EU RIEULMIEUM - 0xBEB7: 0xC4FF, //HANGUL SYLLABLE SSANGSIOS EU RIEULHIEUH - 0xBEB8: 0xC500, //HANGUL SYLLABLE SSANGSIOS EU MIEUM - 0xBEB9: 0xC501, //HANGUL SYLLABLE SSANGSIOS EU PIEUP - 0xBEBA: 0xC50C, //HANGUL SYLLABLE SSANGSIOS YI - 0xBEBB: 0xC510, //HANGUL SYLLABLE SSANGSIOS YI NIEUN - 0xBEBC: 0xC514, //HANGUL SYLLABLE SSANGSIOS YI RIEUL - 0xBEBD: 0xC51C, //HANGUL SYLLABLE SSANGSIOS YI MIEUM - 0xBEBE: 0xC528, //HANGUL SYLLABLE SSANGSIOS I - 0xBEBF: 0xC529, //HANGUL SYLLABLE SSANGSIOS I KIYEOK - 0xBEC0: 0xC52C, //HANGUL SYLLABLE SSANGSIOS I NIEUN - 0xBEC1: 0xC530, //HANGUL SYLLABLE SSANGSIOS I RIEUL - 0xBEC2: 0xC538, //HANGUL SYLLABLE SSANGSIOS I MIEUM - 0xBEC3: 0xC539, //HANGUL SYLLABLE SSANGSIOS I PIEUP - 0xBEC4: 0xC53B, //HANGUL SYLLABLE SSANGSIOS I SIOS - 0xBEC5: 0xC53D, //HANGUL SYLLABLE SSANGSIOS I IEUNG - 0xBEC6: 0xC544, //HANGUL SYLLABLE IEUNG A - 0xBEC7: 0xC545, //HANGUL SYLLABLE IEUNG A KIYEOK - 0xBEC8: 0xC548, //HANGUL SYLLABLE IEUNG A NIEUN - 0xBEC9: 0xC549, //HANGUL SYLLABLE IEUNG A NIEUNCIEUC - 0xBECA: 0xC54A, //HANGUL SYLLABLE IEUNG A NIEUNHIEUH - 0xBECB: 0xC54C, //HANGUL SYLLABLE IEUNG A RIEUL - 0xBECC: 0xC54D, //HANGUL SYLLABLE IEUNG A RIEULKIYEOK - 0xBECD: 0xC54E, //HANGUL SYLLABLE IEUNG A RIEULMIEUM - 0xBECE: 0xC553, //HANGUL SYLLABLE IEUNG A RIEULHIEUH - 0xBECF: 0xC554, //HANGUL SYLLABLE IEUNG A MIEUM - 0xBED0: 0xC555, //HANGUL SYLLABLE IEUNG A PIEUP - 0xBED1: 0xC557, //HANGUL SYLLABLE IEUNG A SIOS - 0xBED2: 0xC558, //HANGUL SYLLABLE IEUNG A SSANGSIOS - 0xBED3: 0xC559, //HANGUL SYLLABLE IEUNG A IEUNG - 0xBED4: 0xC55D, //HANGUL SYLLABLE IEUNG A THIEUTH - 0xBED5: 0xC55E, //HANGUL SYLLABLE IEUNG A PHIEUPH - 0xBED6: 0xC560, //HANGUL SYLLABLE IEUNG AE - 0xBED7: 0xC561, //HANGUL SYLLABLE IEUNG AE KIYEOK - 0xBED8: 0xC564, //HANGUL SYLLABLE IEUNG AE NIEUN - 0xBED9: 0xC568, //HANGUL SYLLABLE IEUNG AE RIEUL - 0xBEDA: 0xC570, //HANGUL SYLLABLE IEUNG AE MIEUM - 0xBEDB: 0xC571, //HANGUL SYLLABLE IEUNG AE PIEUP - 0xBEDC: 0xC573, //HANGUL SYLLABLE IEUNG AE SIOS - 0xBEDD: 0xC574, //HANGUL SYLLABLE IEUNG AE SSANGSIOS - 0xBEDE: 0xC575, //HANGUL SYLLABLE IEUNG AE IEUNG - 0xBEDF: 0xC57C, //HANGUL SYLLABLE IEUNG YA - 0xBEE0: 0xC57D, //HANGUL SYLLABLE IEUNG YA KIYEOK - 0xBEE1: 0xC580, //HANGUL SYLLABLE IEUNG YA NIEUN - 0xBEE2: 0xC584, //HANGUL SYLLABLE IEUNG YA RIEUL - 0xBEE3: 0xC587, //HANGUL SYLLABLE IEUNG YA RIEULPIEUP - 0xBEE4: 0xC58C, //HANGUL SYLLABLE IEUNG YA MIEUM - 0xBEE5: 0xC58D, //HANGUL SYLLABLE IEUNG YA PIEUP - 0xBEE6: 0xC58F, //HANGUL SYLLABLE IEUNG YA SIOS - 0xBEE7: 0xC591, //HANGUL SYLLABLE IEUNG YA IEUNG - 0xBEE8: 0xC595, //HANGUL SYLLABLE IEUNG YA THIEUTH - 0xBEE9: 0xC597, //HANGUL SYLLABLE IEUNG YA HIEUH - 0xBEEA: 0xC598, //HANGUL SYLLABLE IEUNG YAE - 0xBEEB: 0xC59C, //HANGUL SYLLABLE IEUNG YAE NIEUN - 0xBEEC: 0xC5A0, //HANGUL SYLLABLE IEUNG YAE RIEUL - 0xBEED: 0xC5A9, //HANGUL SYLLABLE IEUNG YAE PIEUP - 0xBEEE: 0xC5B4, //HANGUL SYLLABLE IEUNG EO - 0xBEEF: 0xC5B5, //HANGUL SYLLABLE IEUNG EO KIYEOK - 0xBEF0: 0xC5B8, //HANGUL SYLLABLE IEUNG EO NIEUN - 0xBEF1: 0xC5B9, //HANGUL SYLLABLE IEUNG EO NIEUNCIEUC - 0xBEF2: 0xC5BB, //HANGUL SYLLABLE IEUNG EO TIKEUT - 0xBEF3: 0xC5BC, //HANGUL SYLLABLE IEUNG EO RIEUL - 0xBEF4: 0xC5BD, //HANGUL SYLLABLE IEUNG EO RIEULKIYEOK - 0xBEF5: 0xC5BE, //HANGUL SYLLABLE IEUNG EO RIEULMIEUM - 0xBEF6: 0xC5C4, //HANGUL SYLLABLE IEUNG EO MIEUM - 0xBEF7: 0xC5C5, //HANGUL SYLLABLE IEUNG EO PIEUP - 0xBEF8: 0xC5C6, //HANGUL SYLLABLE IEUNG EO PIEUPSIOS - 0xBEF9: 0xC5C7, //HANGUL SYLLABLE IEUNG EO SIOS - 0xBEFA: 0xC5C8, //HANGUL SYLLABLE IEUNG EO SSANGSIOS - 0xBEFB: 0xC5C9, //HANGUL SYLLABLE IEUNG EO IEUNG - 0xBEFC: 0xC5CA, //HANGUL SYLLABLE IEUNG EO CIEUC - 0xBEFD: 0xC5CC, //HANGUL SYLLABLE IEUNG EO KHIEUKH - 0xBEFE: 0xC5CE, //HANGUL SYLLABLE IEUNG EO PHIEUPH - 0xBF41: 0xD49E, //HANGUL SYLLABLE PHIEUPH WEO RIEULMIEUM - 0xBF42: 0xD49F, //HANGUL SYLLABLE PHIEUPH WEO RIEULPIEUP - 0xBF43: 0xD4A0, //HANGUL SYLLABLE PHIEUPH WEO RIEULSIOS - 0xBF44: 0xD4A1, //HANGUL SYLLABLE PHIEUPH WEO RIEULTHIEUTH - 0xBF45: 0xD4A2, //HANGUL SYLLABLE PHIEUPH WEO RIEULPHIEUPH - 0xBF46: 0xD4A3, //HANGUL SYLLABLE PHIEUPH WEO RIEULHIEUH - 0xBF47: 0xD4A4, //HANGUL SYLLABLE PHIEUPH WEO MIEUM - 0xBF48: 0xD4A5, //HANGUL SYLLABLE PHIEUPH WEO PIEUP - 0xBF49: 0xD4A6, //HANGUL SYLLABLE PHIEUPH WEO PIEUPSIOS - 0xBF4A: 0xD4A7, //HANGUL SYLLABLE PHIEUPH WEO SIOS - 0xBF4B: 0xD4A8, //HANGUL SYLLABLE PHIEUPH WEO SSANGSIOS - 0xBF4C: 0xD4AA, //HANGUL SYLLABLE PHIEUPH WEO CIEUC - 0xBF4D: 0xD4AB, //HANGUL SYLLABLE PHIEUPH WEO CHIEUCH - 0xBF4E: 0xD4AC, //HANGUL SYLLABLE PHIEUPH WEO KHIEUKH - 0xBF4F: 0xD4AD, //HANGUL SYLLABLE PHIEUPH WEO THIEUTH - 0xBF50: 0xD4AE, //HANGUL SYLLABLE PHIEUPH WEO PHIEUPH - 0xBF51: 0xD4AF, //HANGUL SYLLABLE PHIEUPH WEO HIEUH - 0xBF52: 0xD4B0, //HANGUL SYLLABLE PHIEUPH WE - 0xBF53: 0xD4B1, //HANGUL SYLLABLE PHIEUPH WE KIYEOK - 0xBF54: 0xD4B2, //HANGUL SYLLABLE PHIEUPH WE SSANGKIYEOK - 0xBF55: 0xD4B3, //HANGUL SYLLABLE PHIEUPH WE KIYEOKSIOS - 0xBF56: 0xD4B4, //HANGUL SYLLABLE PHIEUPH WE NIEUN - 0xBF57: 0xD4B5, //HANGUL SYLLABLE PHIEUPH WE NIEUNCIEUC - 0xBF58: 0xD4B6, //HANGUL SYLLABLE PHIEUPH WE NIEUNHIEUH - 0xBF59: 0xD4B7, //HANGUL SYLLABLE PHIEUPH WE TIKEUT - 0xBF5A: 0xD4B8, //HANGUL SYLLABLE PHIEUPH WE RIEUL - 0xBF61: 0xD4B9, //HANGUL SYLLABLE PHIEUPH WE RIEULKIYEOK - 0xBF62: 0xD4BA, //HANGUL SYLLABLE PHIEUPH WE RIEULMIEUM - 0xBF63: 0xD4BB, //HANGUL SYLLABLE PHIEUPH WE RIEULPIEUP - 0xBF64: 0xD4BC, //HANGUL SYLLABLE PHIEUPH WE RIEULSIOS - 0xBF65: 0xD4BD, //HANGUL SYLLABLE PHIEUPH WE RIEULTHIEUTH - 0xBF66: 0xD4BE, //HANGUL SYLLABLE PHIEUPH WE RIEULPHIEUPH - 0xBF67: 0xD4BF, //HANGUL SYLLABLE PHIEUPH WE RIEULHIEUH - 0xBF68: 0xD4C0, //HANGUL SYLLABLE PHIEUPH WE MIEUM - 0xBF69: 0xD4C1, //HANGUL SYLLABLE PHIEUPH WE PIEUP - 0xBF6A: 0xD4C2, //HANGUL SYLLABLE PHIEUPH WE PIEUPSIOS - 0xBF6B: 0xD4C3, //HANGUL SYLLABLE PHIEUPH WE SIOS - 0xBF6C: 0xD4C4, //HANGUL SYLLABLE PHIEUPH WE SSANGSIOS - 0xBF6D: 0xD4C5, //HANGUL SYLLABLE PHIEUPH WE IEUNG - 0xBF6E: 0xD4C6, //HANGUL SYLLABLE PHIEUPH WE CIEUC - 0xBF6F: 0xD4C7, //HANGUL SYLLABLE PHIEUPH WE CHIEUCH - 0xBF70: 0xD4C8, //HANGUL SYLLABLE PHIEUPH WE KHIEUKH - 0xBF71: 0xD4C9, //HANGUL SYLLABLE PHIEUPH WE THIEUTH - 0xBF72: 0xD4CA, //HANGUL SYLLABLE PHIEUPH WE PHIEUPH - 0xBF73: 0xD4CB, //HANGUL SYLLABLE PHIEUPH WE HIEUH - 0xBF74: 0xD4CD, //HANGUL SYLLABLE PHIEUPH WI KIYEOK - 0xBF75: 0xD4CE, //HANGUL SYLLABLE PHIEUPH WI SSANGKIYEOK - 0xBF76: 0xD4CF, //HANGUL SYLLABLE PHIEUPH WI KIYEOKSIOS - 0xBF77: 0xD4D1, //HANGUL SYLLABLE PHIEUPH WI NIEUNCIEUC - 0xBF78: 0xD4D2, //HANGUL SYLLABLE PHIEUPH WI NIEUNHIEUH - 0xBF79: 0xD4D3, //HANGUL SYLLABLE PHIEUPH WI TIKEUT - 0xBF7A: 0xD4D5, //HANGUL SYLLABLE PHIEUPH WI RIEULKIYEOK - 0xBF81: 0xD4D6, //HANGUL SYLLABLE PHIEUPH WI RIEULMIEUM - 0xBF82: 0xD4D7, //HANGUL SYLLABLE PHIEUPH WI RIEULPIEUP - 0xBF83: 0xD4D8, //HANGUL SYLLABLE PHIEUPH WI RIEULSIOS - 0xBF84: 0xD4D9, //HANGUL SYLLABLE PHIEUPH WI RIEULTHIEUTH - 0xBF85: 0xD4DA, //HANGUL SYLLABLE PHIEUPH WI RIEULPHIEUPH - 0xBF86: 0xD4DB, //HANGUL SYLLABLE PHIEUPH WI RIEULHIEUH - 0xBF87: 0xD4DD, //HANGUL SYLLABLE PHIEUPH WI PIEUP - 0xBF88: 0xD4DE, //HANGUL SYLLABLE PHIEUPH WI PIEUPSIOS - 0xBF89: 0xD4E0, //HANGUL SYLLABLE PHIEUPH WI SSANGSIOS - 0xBF8A: 0xD4E1, //HANGUL SYLLABLE PHIEUPH WI IEUNG - 0xBF8B: 0xD4E2, //HANGUL SYLLABLE PHIEUPH WI CIEUC - 0xBF8C: 0xD4E3, //HANGUL SYLLABLE PHIEUPH WI CHIEUCH - 0xBF8D: 0xD4E4, //HANGUL SYLLABLE PHIEUPH WI KHIEUKH - 0xBF8E: 0xD4E5, //HANGUL SYLLABLE PHIEUPH WI THIEUTH - 0xBF8F: 0xD4E6, //HANGUL SYLLABLE PHIEUPH WI PHIEUPH - 0xBF90: 0xD4E7, //HANGUL SYLLABLE PHIEUPH WI HIEUH - 0xBF91: 0xD4E9, //HANGUL SYLLABLE PHIEUPH YU KIYEOK - 0xBF92: 0xD4EA, //HANGUL SYLLABLE PHIEUPH YU SSANGKIYEOK - 0xBF93: 0xD4EB, //HANGUL SYLLABLE PHIEUPH YU KIYEOKSIOS - 0xBF94: 0xD4ED, //HANGUL SYLLABLE PHIEUPH YU NIEUNCIEUC - 0xBF95: 0xD4EE, //HANGUL SYLLABLE PHIEUPH YU NIEUNHIEUH - 0xBF96: 0xD4EF, //HANGUL SYLLABLE PHIEUPH YU TIKEUT - 0xBF97: 0xD4F1, //HANGUL SYLLABLE PHIEUPH YU RIEULKIYEOK - 0xBF98: 0xD4F2, //HANGUL SYLLABLE PHIEUPH YU RIEULMIEUM - 0xBF99: 0xD4F3, //HANGUL SYLLABLE PHIEUPH YU RIEULPIEUP - 0xBF9A: 0xD4F4, //HANGUL SYLLABLE PHIEUPH YU RIEULSIOS - 0xBF9B: 0xD4F5, //HANGUL SYLLABLE PHIEUPH YU RIEULTHIEUTH - 0xBF9C: 0xD4F6, //HANGUL SYLLABLE PHIEUPH YU RIEULPHIEUPH - 0xBF9D: 0xD4F7, //HANGUL SYLLABLE PHIEUPH YU RIEULHIEUH - 0xBF9E: 0xD4F9, //HANGUL SYLLABLE PHIEUPH YU PIEUP - 0xBF9F: 0xD4FA, //HANGUL SYLLABLE PHIEUPH YU PIEUPSIOS - 0xBFA0: 0xD4FC, //HANGUL SYLLABLE PHIEUPH YU SSANGSIOS - 0xBFA1: 0xC5D0, //HANGUL SYLLABLE IEUNG E - 0xBFA2: 0xC5D1, //HANGUL SYLLABLE IEUNG E KIYEOK - 0xBFA3: 0xC5D4, //HANGUL SYLLABLE IEUNG E NIEUN - 0xBFA4: 0xC5D8, //HANGUL SYLLABLE IEUNG E RIEUL - 0xBFA5: 0xC5E0, //HANGUL SYLLABLE IEUNG E MIEUM - 0xBFA6: 0xC5E1, //HANGUL SYLLABLE IEUNG E PIEUP - 0xBFA7: 0xC5E3, //HANGUL SYLLABLE IEUNG E SIOS - 0xBFA8: 0xC5E5, //HANGUL SYLLABLE IEUNG E IEUNG - 0xBFA9: 0xC5EC, //HANGUL SYLLABLE IEUNG YEO - 0xBFAA: 0xC5ED, //HANGUL SYLLABLE IEUNG YEO KIYEOK - 0xBFAB: 0xC5EE, //HANGUL SYLLABLE IEUNG YEO SSANGKIYEOK - 0xBFAC: 0xC5F0, //HANGUL SYLLABLE IEUNG YEO NIEUN - 0xBFAD: 0xC5F4, //HANGUL SYLLABLE IEUNG YEO RIEUL - 0xBFAE: 0xC5F6, //HANGUL SYLLABLE IEUNG YEO RIEULMIEUM - 0xBFAF: 0xC5F7, //HANGUL SYLLABLE IEUNG YEO RIEULPIEUP - 0xBFB0: 0xC5FC, //HANGUL SYLLABLE IEUNG YEO MIEUM - 0xBFB1: 0xC5FD, //HANGUL SYLLABLE IEUNG YEO PIEUP - 0xBFB2: 0xC5FE, //HANGUL SYLLABLE IEUNG YEO PIEUPSIOS - 0xBFB3: 0xC5FF, //HANGUL SYLLABLE IEUNG YEO SIOS - 0xBFB4: 0xC600, //HANGUL SYLLABLE IEUNG YEO SSANGSIOS - 0xBFB5: 0xC601, //HANGUL SYLLABLE IEUNG YEO IEUNG - 0xBFB6: 0xC605, //HANGUL SYLLABLE IEUNG YEO THIEUTH - 0xBFB7: 0xC606, //HANGUL SYLLABLE IEUNG YEO PHIEUPH - 0xBFB8: 0xC607, //HANGUL SYLLABLE IEUNG YEO HIEUH - 0xBFB9: 0xC608, //HANGUL SYLLABLE IEUNG YE - 0xBFBA: 0xC60C, //HANGUL SYLLABLE IEUNG YE NIEUN - 0xBFBB: 0xC610, //HANGUL SYLLABLE IEUNG YE RIEUL - 0xBFBC: 0xC618, //HANGUL SYLLABLE IEUNG YE MIEUM - 0xBFBD: 0xC619, //HANGUL SYLLABLE IEUNG YE PIEUP - 0xBFBE: 0xC61B, //HANGUL SYLLABLE IEUNG YE SIOS - 0xBFBF: 0xC61C, //HANGUL SYLLABLE IEUNG YE SSANGSIOS - 0xBFC0: 0xC624, //HANGUL SYLLABLE IEUNG O - 0xBFC1: 0xC625, //HANGUL SYLLABLE IEUNG O KIYEOK - 0xBFC2: 0xC628, //HANGUL SYLLABLE IEUNG O NIEUN - 0xBFC3: 0xC62C, //HANGUL SYLLABLE IEUNG O RIEUL - 0xBFC4: 0xC62D, //HANGUL SYLLABLE IEUNG O RIEULKIYEOK - 0xBFC5: 0xC62E, //HANGUL SYLLABLE IEUNG O RIEULMIEUM - 0xBFC6: 0xC630, //HANGUL SYLLABLE IEUNG O RIEULSIOS - 0xBFC7: 0xC633, //HANGUL SYLLABLE IEUNG O RIEULHIEUH - 0xBFC8: 0xC634, //HANGUL SYLLABLE IEUNG O MIEUM - 0xBFC9: 0xC635, //HANGUL SYLLABLE IEUNG O PIEUP - 0xBFCA: 0xC637, //HANGUL SYLLABLE IEUNG O SIOS - 0xBFCB: 0xC639, //HANGUL SYLLABLE IEUNG O IEUNG - 0xBFCC: 0xC63B, //HANGUL SYLLABLE IEUNG O CHIEUCH - 0xBFCD: 0xC640, //HANGUL SYLLABLE IEUNG WA - 0xBFCE: 0xC641, //HANGUL SYLLABLE IEUNG WA KIYEOK - 0xBFCF: 0xC644, //HANGUL SYLLABLE IEUNG WA NIEUN - 0xBFD0: 0xC648, //HANGUL SYLLABLE IEUNG WA RIEUL - 0xBFD1: 0xC650, //HANGUL SYLLABLE IEUNG WA MIEUM - 0xBFD2: 0xC651, //HANGUL SYLLABLE IEUNG WA PIEUP - 0xBFD3: 0xC653, //HANGUL SYLLABLE IEUNG WA SIOS - 0xBFD4: 0xC654, //HANGUL SYLLABLE IEUNG WA SSANGSIOS - 0xBFD5: 0xC655, //HANGUL SYLLABLE IEUNG WA IEUNG - 0xBFD6: 0xC65C, //HANGUL SYLLABLE IEUNG WAE - 0xBFD7: 0xC65D, //HANGUL SYLLABLE IEUNG WAE KIYEOK - 0xBFD8: 0xC660, //HANGUL SYLLABLE IEUNG WAE NIEUN - 0xBFD9: 0xC66C, //HANGUL SYLLABLE IEUNG WAE MIEUM - 0xBFDA: 0xC66F, //HANGUL SYLLABLE IEUNG WAE SIOS - 0xBFDB: 0xC671, //HANGUL SYLLABLE IEUNG WAE IEUNG - 0xBFDC: 0xC678, //HANGUL SYLLABLE IEUNG OE - 0xBFDD: 0xC679, //HANGUL SYLLABLE IEUNG OE KIYEOK - 0xBFDE: 0xC67C, //HANGUL SYLLABLE IEUNG OE NIEUN - 0xBFDF: 0xC680, //HANGUL SYLLABLE IEUNG OE RIEUL - 0xBFE0: 0xC688, //HANGUL SYLLABLE IEUNG OE MIEUM - 0xBFE1: 0xC689, //HANGUL SYLLABLE IEUNG OE PIEUP - 0xBFE2: 0xC68B, //HANGUL SYLLABLE IEUNG OE SIOS - 0xBFE3: 0xC68D, //HANGUL SYLLABLE IEUNG OE IEUNG - 0xBFE4: 0xC694, //HANGUL SYLLABLE IEUNG YO - 0xBFE5: 0xC695, //HANGUL SYLLABLE IEUNG YO KIYEOK - 0xBFE6: 0xC698, //HANGUL SYLLABLE IEUNG YO NIEUN - 0xBFE7: 0xC69C, //HANGUL SYLLABLE IEUNG YO RIEUL - 0xBFE8: 0xC6A4, //HANGUL SYLLABLE IEUNG YO MIEUM - 0xBFE9: 0xC6A5, //HANGUL SYLLABLE IEUNG YO PIEUP - 0xBFEA: 0xC6A7, //HANGUL SYLLABLE IEUNG YO SIOS - 0xBFEB: 0xC6A9, //HANGUL SYLLABLE IEUNG YO IEUNG - 0xBFEC: 0xC6B0, //HANGUL SYLLABLE IEUNG U - 0xBFED: 0xC6B1, //HANGUL SYLLABLE IEUNG U KIYEOK - 0xBFEE: 0xC6B4, //HANGUL SYLLABLE IEUNG U NIEUN - 0xBFEF: 0xC6B8, //HANGUL SYLLABLE IEUNG U RIEUL - 0xBFF0: 0xC6B9, //HANGUL SYLLABLE IEUNG U RIEULKIYEOK - 0xBFF1: 0xC6BA, //HANGUL SYLLABLE IEUNG U RIEULMIEUM - 0xBFF2: 0xC6C0, //HANGUL SYLLABLE IEUNG U MIEUM - 0xBFF3: 0xC6C1, //HANGUL SYLLABLE IEUNG U PIEUP - 0xBFF4: 0xC6C3, //HANGUL SYLLABLE IEUNG U SIOS - 0xBFF5: 0xC6C5, //HANGUL SYLLABLE IEUNG U IEUNG - 0xBFF6: 0xC6CC, //HANGUL SYLLABLE IEUNG WEO - 0xBFF7: 0xC6CD, //HANGUL SYLLABLE IEUNG WEO KIYEOK - 0xBFF8: 0xC6D0, //HANGUL SYLLABLE IEUNG WEO NIEUN - 0xBFF9: 0xC6D4, //HANGUL SYLLABLE IEUNG WEO RIEUL - 0xBFFA: 0xC6DC, //HANGUL SYLLABLE IEUNG WEO MIEUM - 0xBFFB: 0xC6DD, //HANGUL SYLLABLE IEUNG WEO PIEUP - 0xBFFC: 0xC6E0, //HANGUL SYLLABLE IEUNG WEO SSANGSIOS - 0xBFFD: 0xC6E1, //HANGUL SYLLABLE IEUNG WEO IEUNG - 0xBFFE: 0xC6E8, //HANGUL SYLLABLE IEUNG WE - 0xC041: 0xD4FE, //HANGUL SYLLABLE PHIEUPH YU CIEUC - 0xC042: 0xD4FF, //HANGUL SYLLABLE PHIEUPH YU CHIEUCH - 0xC043: 0xD500, //HANGUL SYLLABLE PHIEUPH YU KHIEUKH - 0xC044: 0xD501, //HANGUL SYLLABLE PHIEUPH YU THIEUTH - 0xC045: 0xD502, //HANGUL SYLLABLE PHIEUPH YU PHIEUPH - 0xC046: 0xD503, //HANGUL SYLLABLE PHIEUPH YU HIEUH - 0xC047: 0xD505, //HANGUL SYLLABLE PHIEUPH EU KIYEOK - 0xC048: 0xD506, //HANGUL SYLLABLE PHIEUPH EU SSANGKIYEOK - 0xC049: 0xD507, //HANGUL SYLLABLE PHIEUPH EU KIYEOKSIOS - 0xC04A: 0xD509, //HANGUL SYLLABLE PHIEUPH EU NIEUNCIEUC - 0xC04B: 0xD50A, //HANGUL SYLLABLE PHIEUPH EU NIEUNHIEUH - 0xC04C: 0xD50B, //HANGUL SYLLABLE PHIEUPH EU TIKEUT - 0xC04D: 0xD50D, //HANGUL SYLLABLE PHIEUPH EU RIEULKIYEOK - 0xC04E: 0xD50E, //HANGUL SYLLABLE PHIEUPH EU RIEULMIEUM - 0xC04F: 0xD50F, //HANGUL SYLLABLE PHIEUPH EU RIEULPIEUP - 0xC050: 0xD510, //HANGUL SYLLABLE PHIEUPH EU RIEULSIOS - 0xC051: 0xD511, //HANGUL SYLLABLE PHIEUPH EU RIEULTHIEUTH - 0xC052: 0xD512, //HANGUL SYLLABLE PHIEUPH EU RIEULPHIEUPH - 0xC053: 0xD513, //HANGUL SYLLABLE PHIEUPH EU RIEULHIEUH - 0xC054: 0xD516, //HANGUL SYLLABLE PHIEUPH EU PIEUPSIOS - 0xC055: 0xD518, //HANGUL SYLLABLE PHIEUPH EU SSANGSIOS - 0xC056: 0xD519, //HANGUL SYLLABLE PHIEUPH EU IEUNG - 0xC057: 0xD51A, //HANGUL SYLLABLE PHIEUPH EU CIEUC - 0xC058: 0xD51B, //HANGUL SYLLABLE PHIEUPH EU CHIEUCH - 0xC059: 0xD51C, //HANGUL SYLLABLE PHIEUPH EU KHIEUKH - 0xC05A: 0xD51D, //HANGUL SYLLABLE PHIEUPH EU THIEUTH - 0xC061: 0xD51E, //HANGUL SYLLABLE PHIEUPH EU PHIEUPH - 0xC062: 0xD51F, //HANGUL SYLLABLE PHIEUPH EU HIEUH - 0xC063: 0xD520, //HANGUL SYLLABLE PHIEUPH YI - 0xC064: 0xD521, //HANGUL SYLLABLE PHIEUPH YI KIYEOK - 0xC065: 0xD522, //HANGUL SYLLABLE PHIEUPH YI SSANGKIYEOK - 0xC066: 0xD523, //HANGUL SYLLABLE PHIEUPH YI KIYEOKSIOS - 0xC067: 0xD524, //HANGUL SYLLABLE PHIEUPH YI NIEUN - 0xC068: 0xD525, //HANGUL SYLLABLE PHIEUPH YI NIEUNCIEUC - 0xC069: 0xD526, //HANGUL SYLLABLE PHIEUPH YI NIEUNHIEUH - 0xC06A: 0xD527, //HANGUL SYLLABLE PHIEUPH YI TIKEUT - 0xC06B: 0xD528, //HANGUL SYLLABLE PHIEUPH YI RIEUL - 0xC06C: 0xD529, //HANGUL SYLLABLE PHIEUPH YI RIEULKIYEOK - 0xC06D: 0xD52A, //HANGUL SYLLABLE PHIEUPH YI RIEULMIEUM - 0xC06E: 0xD52B, //HANGUL SYLLABLE PHIEUPH YI RIEULPIEUP - 0xC06F: 0xD52C, //HANGUL SYLLABLE PHIEUPH YI RIEULSIOS - 0xC070: 0xD52D, //HANGUL SYLLABLE PHIEUPH YI RIEULTHIEUTH - 0xC071: 0xD52E, //HANGUL SYLLABLE PHIEUPH YI RIEULPHIEUPH - 0xC072: 0xD52F, //HANGUL SYLLABLE PHIEUPH YI RIEULHIEUH - 0xC073: 0xD530, //HANGUL SYLLABLE PHIEUPH YI MIEUM - 0xC074: 0xD531, //HANGUL SYLLABLE PHIEUPH YI PIEUP - 0xC075: 0xD532, //HANGUL SYLLABLE PHIEUPH YI PIEUPSIOS - 0xC076: 0xD533, //HANGUL SYLLABLE PHIEUPH YI SIOS - 0xC077: 0xD534, //HANGUL SYLLABLE PHIEUPH YI SSANGSIOS - 0xC078: 0xD535, //HANGUL SYLLABLE PHIEUPH YI IEUNG - 0xC079: 0xD536, //HANGUL SYLLABLE PHIEUPH YI CIEUC - 0xC07A: 0xD537, //HANGUL SYLLABLE PHIEUPH YI CHIEUCH - 0xC081: 0xD538, //HANGUL SYLLABLE PHIEUPH YI KHIEUKH - 0xC082: 0xD539, //HANGUL SYLLABLE PHIEUPH YI THIEUTH - 0xC083: 0xD53A, //HANGUL SYLLABLE PHIEUPH YI PHIEUPH - 0xC084: 0xD53B, //HANGUL SYLLABLE PHIEUPH YI HIEUH - 0xC085: 0xD53E, //HANGUL SYLLABLE PHIEUPH I SSANGKIYEOK - 0xC086: 0xD53F, //HANGUL SYLLABLE PHIEUPH I KIYEOKSIOS - 0xC087: 0xD541, //HANGUL SYLLABLE PHIEUPH I NIEUNCIEUC - 0xC088: 0xD542, //HANGUL SYLLABLE PHIEUPH I NIEUNHIEUH - 0xC089: 0xD543, //HANGUL SYLLABLE PHIEUPH I TIKEUT - 0xC08A: 0xD545, //HANGUL SYLLABLE PHIEUPH I RIEULKIYEOK - 0xC08B: 0xD546, //HANGUL SYLLABLE PHIEUPH I RIEULMIEUM - 0xC08C: 0xD547, //HANGUL SYLLABLE PHIEUPH I RIEULPIEUP - 0xC08D: 0xD548, //HANGUL SYLLABLE PHIEUPH I RIEULSIOS - 0xC08E: 0xD549, //HANGUL SYLLABLE PHIEUPH I RIEULTHIEUTH - 0xC08F: 0xD54A, //HANGUL SYLLABLE PHIEUPH I RIEULPHIEUPH - 0xC090: 0xD54B, //HANGUL SYLLABLE PHIEUPH I RIEULHIEUH - 0xC091: 0xD54E, //HANGUL SYLLABLE PHIEUPH I PIEUPSIOS - 0xC092: 0xD550, //HANGUL SYLLABLE PHIEUPH I SSANGSIOS - 0xC093: 0xD552, //HANGUL SYLLABLE PHIEUPH I CIEUC - 0xC094: 0xD553, //HANGUL SYLLABLE PHIEUPH I CHIEUCH - 0xC095: 0xD554, //HANGUL SYLLABLE PHIEUPH I KHIEUKH - 0xC096: 0xD555, //HANGUL SYLLABLE PHIEUPH I THIEUTH - 0xC097: 0xD556, //HANGUL SYLLABLE PHIEUPH I PHIEUPH - 0xC098: 0xD557, //HANGUL SYLLABLE PHIEUPH I HIEUH - 0xC099: 0xD55A, //HANGUL SYLLABLE HIEUH A SSANGKIYEOK - 0xC09A: 0xD55B, //HANGUL SYLLABLE HIEUH A KIYEOKSIOS - 0xC09B: 0xD55D, //HANGUL SYLLABLE HIEUH A NIEUNCIEUC - 0xC09C: 0xD55E, //HANGUL SYLLABLE HIEUH A NIEUNHIEUH - 0xC09D: 0xD55F, //HANGUL SYLLABLE HIEUH A TIKEUT - 0xC09E: 0xD561, //HANGUL SYLLABLE HIEUH A RIEULKIYEOK - 0xC09F: 0xD562, //HANGUL SYLLABLE HIEUH A RIEULMIEUM - 0xC0A0: 0xD563, //HANGUL SYLLABLE HIEUH A RIEULPIEUP - 0xC0A1: 0xC6E9, //HANGUL SYLLABLE IEUNG WE KIYEOK - 0xC0A2: 0xC6EC, //HANGUL SYLLABLE IEUNG WE NIEUN - 0xC0A3: 0xC6F0, //HANGUL SYLLABLE IEUNG WE RIEUL - 0xC0A4: 0xC6F8, //HANGUL SYLLABLE IEUNG WE MIEUM - 0xC0A5: 0xC6F9, //HANGUL SYLLABLE IEUNG WE PIEUP - 0xC0A6: 0xC6FD, //HANGUL SYLLABLE IEUNG WE IEUNG - 0xC0A7: 0xC704, //HANGUL SYLLABLE IEUNG WI - 0xC0A8: 0xC705, //HANGUL SYLLABLE IEUNG WI KIYEOK - 0xC0A9: 0xC708, //HANGUL SYLLABLE IEUNG WI NIEUN - 0xC0AA: 0xC70C, //HANGUL SYLLABLE IEUNG WI RIEUL - 0xC0AB: 0xC714, //HANGUL SYLLABLE IEUNG WI MIEUM - 0xC0AC: 0xC715, //HANGUL SYLLABLE IEUNG WI PIEUP - 0xC0AD: 0xC717, //HANGUL SYLLABLE IEUNG WI SIOS - 0xC0AE: 0xC719, //HANGUL SYLLABLE IEUNG WI IEUNG - 0xC0AF: 0xC720, //HANGUL SYLLABLE IEUNG YU - 0xC0B0: 0xC721, //HANGUL SYLLABLE IEUNG YU KIYEOK - 0xC0B1: 0xC724, //HANGUL SYLLABLE IEUNG YU NIEUN - 0xC0B2: 0xC728, //HANGUL SYLLABLE IEUNG YU RIEUL - 0xC0B3: 0xC730, //HANGUL SYLLABLE IEUNG YU MIEUM - 0xC0B4: 0xC731, //HANGUL SYLLABLE IEUNG YU PIEUP - 0xC0B5: 0xC733, //HANGUL SYLLABLE IEUNG YU SIOS - 0xC0B6: 0xC735, //HANGUL SYLLABLE IEUNG YU IEUNG - 0xC0B7: 0xC737, //HANGUL SYLLABLE IEUNG YU CHIEUCH - 0xC0B8: 0xC73C, //HANGUL SYLLABLE IEUNG EU - 0xC0B9: 0xC73D, //HANGUL SYLLABLE IEUNG EU KIYEOK - 0xC0BA: 0xC740, //HANGUL SYLLABLE IEUNG EU NIEUN - 0xC0BB: 0xC744, //HANGUL SYLLABLE IEUNG EU RIEUL - 0xC0BC: 0xC74A, //HANGUL SYLLABLE IEUNG EU RIEULPHIEUPH - 0xC0BD: 0xC74C, //HANGUL SYLLABLE IEUNG EU MIEUM - 0xC0BE: 0xC74D, //HANGUL SYLLABLE IEUNG EU PIEUP - 0xC0BF: 0xC74F, //HANGUL SYLLABLE IEUNG EU SIOS - 0xC0C0: 0xC751, //HANGUL SYLLABLE IEUNG EU IEUNG - 0xC0C1: 0xC752, //HANGUL SYLLABLE IEUNG EU CIEUC - 0xC0C2: 0xC753, //HANGUL SYLLABLE IEUNG EU CHIEUCH - 0xC0C3: 0xC754, //HANGUL SYLLABLE IEUNG EU KHIEUKH - 0xC0C4: 0xC755, //HANGUL SYLLABLE IEUNG EU THIEUTH - 0xC0C5: 0xC756, //HANGUL SYLLABLE IEUNG EU PHIEUPH - 0xC0C6: 0xC757, //HANGUL SYLLABLE IEUNG EU HIEUH - 0xC0C7: 0xC758, //HANGUL SYLLABLE IEUNG YI - 0xC0C8: 0xC75C, //HANGUL SYLLABLE IEUNG YI NIEUN - 0xC0C9: 0xC760, //HANGUL SYLLABLE IEUNG YI RIEUL - 0xC0CA: 0xC768, //HANGUL SYLLABLE IEUNG YI MIEUM - 0xC0CB: 0xC76B, //HANGUL SYLLABLE IEUNG YI SIOS - 0xC0CC: 0xC774, //HANGUL SYLLABLE IEUNG I - 0xC0CD: 0xC775, //HANGUL SYLLABLE IEUNG I KIYEOK - 0xC0CE: 0xC778, //HANGUL SYLLABLE IEUNG I NIEUN - 0xC0CF: 0xC77C, //HANGUL SYLLABLE IEUNG I RIEUL - 0xC0D0: 0xC77D, //HANGUL SYLLABLE IEUNG I RIEULKIYEOK - 0xC0D1: 0xC77E, //HANGUL SYLLABLE IEUNG I RIEULMIEUM - 0xC0D2: 0xC783, //HANGUL SYLLABLE IEUNG I RIEULHIEUH - 0xC0D3: 0xC784, //HANGUL SYLLABLE IEUNG I MIEUM - 0xC0D4: 0xC785, //HANGUL SYLLABLE IEUNG I PIEUP - 0xC0D5: 0xC787, //HANGUL SYLLABLE IEUNG I SIOS - 0xC0D6: 0xC788, //HANGUL SYLLABLE IEUNG I SSANGSIOS - 0xC0D7: 0xC789, //HANGUL SYLLABLE IEUNG I IEUNG - 0xC0D8: 0xC78A, //HANGUL SYLLABLE IEUNG I CIEUC - 0xC0D9: 0xC78E, //HANGUL SYLLABLE IEUNG I PHIEUPH - 0xC0DA: 0xC790, //HANGUL SYLLABLE CIEUC A - 0xC0DB: 0xC791, //HANGUL SYLLABLE CIEUC A KIYEOK - 0xC0DC: 0xC794, //HANGUL SYLLABLE CIEUC A NIEUN - 0xC0DD: 0xC796, //HANGUL SYLLABLE CIEUC A NIEUNHIEUH - 0xC0DE: 0xC797, //HANGUL SYLLABLE CIEUC A TIKEUT - 0xC0DF: 0xC798, //HANGUL SYLLABLE CIEUC A RIEUL - 0xC0E0: 0xC79A, //HANGUL SYLLABLE CIEUC A RIEULMIEUM - 0xC0E1: 0xC7A0, //HANGUL SYLLABLE CIEUC A MIEUM - 0xC0E2: 0xC7A1, //HANGUL SYLLABLE CIEUC A PIEUP - 0xC0E3: 0xC7A3, //HANGUL SYLLABLE CIEUC A SIOS - 0xC0E4: 0xC7A4, //HANGUL SYLLABLE CIEUC A SSANGSIOS - 0xC0E5: 0xC7A5, //HANGUL SYLLABLE CIEUC A IEUNG - 0xC0E6: 0xC7A6, //HANGUL SYLLABLE CIEUC A CIEUC - 0xC0E7: 0xC7AC, //HANGUL SYLLABLE CIEUC AE - 0xC0E8: 0xC7AD, //HANGUL SYLLABLE CIEUC AE KIYEOK - 0xC0E9: 0xC7B0, //HANGUL SYLLABLE CIEUC AE NIEUN - 0xC0EA: 0xC7B4, //HANGUL SYLLABLE CIEUC AE RIEUL - 0xC0EB: 0xC7BC, //HANGUL SYLLABLE CIEUC AE MIEUM - 0xC0EC: 0xC7BD, //HANGUL SYLLABLE CIEUC AE PIEUP - 0xC0ED: 0xC7BF, //HANGUL SYLLABLE CIEUC AE SIOS - 0xC0EE: 0xC7C0, //HANGUL SYLLABLE CIEUC AE SSANGSIOS - 0xC0EF: 0xC7C1, //HANGUL SYLLABLE CIEUC AE IEUNG - 0xC0F0: 0xC7C8, //HANGUL SYLLABLE CIEUC YA - 0xC0F1: 0xC7C9, //HANGUL SYLLABLE CIEUC YA KIYEOK - 0xC0F2: 0xC7CC, //HANGUL SYLLABLE CIEUC YA NIEUN - 0xC0F3: 0xC7CE, //HANGUL SYLLABLE CIEUC YA NIEUNHIEUH - 0xC0F4: 0xC7D0, //HANGUL SYLLABLE CIEUC YA RIEUL - 0xC0F5: 0xC7D8, //HANGUL SYLLABLE CIEUC YA MIEUM - 0xC0F6: 0xC7DD, //HANGUL SYLLABLE CIEUC YA IEUNG - 0xC0F7: 0xC7E4, //HANGUL SYLLABLE CIEUC YAE - 0xC0F8: 0xC7E8, //HANGUL SYLLABLE CIEUC YAE NIEUN - 0xC0F9: 0xC7EC, //HANGUL SYLLABLE CIEUC YAE RIEUL - 0xC0FA: 0xC800, //HANGUL SYLLABLE CIEUC EO - 0xC0FB: 0xC801, //HANGUL SYLLABLE CIEUC EO KIYEOK - 0xC0FC: 0xC804, //HANGUL SYLLABLE CIEUC EO NIEUN - 0xC0FD: 0xC808, //HANGUL SYLLABLE CIEUC EO RIEUL - 0xC0FE: 0xC80A, //HANGUL SYLLABLE CIEUC EO RIEULMIEUM - 0xC141: 0xD564, //HANGUL SYLLABLE HIEUH A RIEULSIOS - 0xC142: 0xD566, //HANGUL SYLLABLE HIEUH A RIEULPHIEUPH - 0xC143: 0xD567, //HANGUL SYLLABLE HIEUH A RIEULHIEUH - 0xC144: 0xD56A, //HANGUL SYLLABLE HIEUH A PIEUPSIOS - 0xC145: 0xD56C, //HANGUL SYLLABLE HIEUH A SSANGSIOS - 0xC146: 0xD56E, //HANGUL SYLLABLE HIEUH A CIEUC - 0xC147: 0xD56F, //HANGUL SYLLABLE HIEUH A CHIEUCH - 0xC148: 0xD570, //HANGUL SYLLABLE HIEUH A KHIEUKH - 0xC149: 0xD571, //HANGUL SYLLABLE HIEUH A THIEUTH - 0xC14A: 0xD572, //HANGUL SYLLABLE HIEUH A PHIEUPH - 0xC14B: 0xD573, //HANGUL SYLLABLE HIEUH A HIEUH - 0xC14C: 0xD576, //HANGUL SYLLABLE HIEUH AE SSANGKIYEOK - 0xC14D: 0xD577, //HANGUL SYLLABLE HIEUH AE KIYEOKSIOS - 0xC14E: 0xD579, //HANGUL SYLLABLE HIEUH AE NIEUNCIEUC - 0xC14F: 0xD57A, //HANGUL SYLLABLE HIEUH AE NIEUNHIEUH - 0xC150: 0xD57B, //HANGUL SYLLABLE HIEUH AE TIKEUT - 0xC151: 0xD57D, //HANGUL SYLLABLE HIEUH AE RIEULKIYEOK - 0xC152: 0xD57E, //HANGUL SYLLABLE HIEUH AE RIEULMIEUM - 0xC153: 0xD57F, //HANGUL SYLLABLE HIEUH AE RIEULPIEUP - 0xC154: 0xD580, //HANGUL SYLLABLE HIEUH AE RIEULSIOS - 0xC155: 0xD581, //HANGUL SYLLABLE HIEUH AE RIEULTHIEUTH - 0xC156: 0xD582, //HANGUL SYLLABLE HIEUH AE RIEULPHIEUPH - 0xC157: 0xD583, //HANGUL SYLLABLE HIEUH AE RIEULHIEUH - 0xC158: 0xD586, //HANGUL SYLLABLE HIEUH AE PIEUPSIOS - 0xC159: 0xD58A, //HANGUL SYLLABLE HIEUH AE CIEUC - 0xC15A: 0xD58B, //HANGUL SYLLABLE HIEUH AE CHIEUCH - 0xC161: 0xD58C, //HANGUL SYLLABLE HIEUH AE KHIEUKH - 0xC162: 0xD58D, //HANGUL SYLLABLE HIEUH AE THIEUTH - 0xC163: 0xD58E, //HANGUL SYLLABLE HIEUH AE PHIEUPH - 0xC164: 0xD58F, //HANGUL SYLLABLE HIEUH AE HIEUH - 0xC165: 0xD591, //HANGUL SYLLABLE HIEUH YA KIYEOK - 0xC166: 0xD592, //HANGUL SYLLABLE HIEUH YA SSANGKIYEOK - 0xC167: 0xD593, //HANGUL SYLLABLE HIEUH YA KIYEOKSIOS - 0xC168: 0xD594, //HANGUL SYLLABLE HIEUH YA NIEUN - 0xC169: 0xD595, //HANGUL SYLLABLE HIEUH YA NIEUNCIEUC - 0xC16A: 0xD596, //HANGUL SYLLABLE HIEUH YA NIEUNHIEUH - 0xC16B: 0xD597, //HANGUL SYLLABLE HIEUH YA TIKEUT - 0xC16C: 0xD598, //HANGUL SYLLABLE HIEUH YA RIEUL - 0xC16D: 0xD599, //HANGUL SYLLABLE HIEUH YA RIEULKIYEOK - 0xC16E: 0xD59A, //HANGUL SYLLABLE HIEUH YA RIEULMIEUM - 0xC16F: 0xD59B, //HANGUL SYLLABLE HIEUH YA RIEULPIEUP - 0xC170: 0xD59C, //HANGUL SYLLABLE HIEUH YA RIEULSIOS - 0xC171: 0xD59D, //HANGUL SYLLABLE HIEUH YA RIEULTHIEUTH - 0xC172: 0xD59E, //HANGUL SYLLABLE HIEUH YA RIEULPHIEUPH - 0xC173: 0xD59F, //HANGUL SYLLABLE HIEUH YA RIEULHIEUH - 0xC174: 0xD5A0, //HANGUL SYLLABLE HIEUH YA MIEUM - 0xC175: 0xD5A1, //HANGUL SYLLABLE HIEUH YA PIEUP - 0xC176: 0xD5A2, //HANGUL SYLLABLE HIEUH YA PIEUPSIOS - 0xC177: 0xD5A3, //HANGUL SYLLABLE HIEUH YA SIOS - 0xC178: 0xD5A4, //HANGUL SYLLABLE HIEUH YA SSANGSIOS - 0xC179: 0xD5A6, //HANGUL SYLLABLE HIEUH YA CIEUC - 0xC17A: 0xD5A7, //HANGUL SYLLABLE HIEUH YA CHIEUCH - 0xC181: 0xD5A8, //HANGUL SYLLABLE HIEUH YA KHIEUKH - 0xC182: 0xD5A9, //HANGUL SYLLABLE HIEUH YA THIEUTH - 0xC183: 0xD5AA, //HANGUL SYLLABLE HIEUH YA PHIEUPH - 0xC184: 0xD5AB, //HANGUL SYLLABLE HIEUH YA HIEUH - 0xC185: 0xD5AC, //HANGUL SYLLABLE HIEUH YAE - 0xC186: 0xD5AD, //HANGUL SYLLABLE HIEUH YAE KIYEOK - 0xC187: 0xD5AE, //HANGUL SYLLABLE HIEUH YAE SSANGKIYEOK - 0xC188: 0xD5AF, //HANGUL SYLLABLE HIEUH YAE KIYEOKSIOS - 0xC189: 0xD5B0, //HANGUL SYLLABLE HIEUH YAE NIEUN - 0xC18A: 0xD5B1, //HANGUL SYLLABLE HIEUH YAE NIEUNCIEUC - 0xC18B: 0xD5B2, //HANGUL SYLLABLE HIEUH YAE NIEUNHIEUH - 0xC18C: 0xD5B3, //HANGUL SYLLABLE HIEUH YAE TIKEUT - 0xC18D: 0xD5B4, //HANGUL SYLLABLE HIEUH YAE RIEUL - 0xC18E: 0xD5B5, //HANGUL SYLLABLE HIEUH YAE RIEULKIYEOK - 0xC18F: 0xD5B6, //HANGUL SYLLABLE HIEUH YAE RIEULMIEUM - 0xC190: 0xD5B7, //HANGUL SYLLABLE HIEUH YAE RIEULPIEUP - 0xC191: 0xD5B8, //HANGUL SYLLABLE HIEUH YAE RIEULSIOS - 0xC192: 0xD5B9, //HANGUL SYLLABLE HIEUH YAE RIEULTHIEUTH - 0xC193: 0xD5BA, //HANGUL SYLLABLE HIEUH YAE RIEULPHIEUPH - 0xC194: 0xD5BB, //HANGUL SYLLABLE HIEUH YAE RIEULHIEUH - 0xC195: 0xD5BC, //HANGUL SYLLABLE HIEUH YAE MIEUM - 0xC196: 0xD5BD, //HANGUL SYLLABLE HIEUH YAE PIEUP - 0xC197: 0xD5BE, //HANGUL SYLLABLE HIEUH YAE PIEUPSIOS - 0xC198: 0xD5BF, //HANGUL SYLLABLE HIEUH YAE SIOS - 0xC199: 0xD5C0, //HANGUL SYLLABLE HIEUH YAE SSANGSIOS - 0xC19A: 0xD5C1, //HANGUL SYLLABLE HIEUH YAE IEUNG - 0xC19B: 0xD5C2, //HANGUL SYLLABLE HIEUH YAE CIEUC - 0xC19C: 0xD5C3, //HANGUL SYLLABLE HIEUH YAE CHIEUCH - 0xC19D: 0xD5C4, //HANGUL SYLLABLE HIEUH YAE KHIEUKH - 0xC19E: 0xD5C5, //HANGUL SYLLABLE HIEUH YAE THIEUTH - 0xC19F: 0xD5C6, //HANGUL SYLLABLE HIEUH YAE PHIEUPH - 0xC1A0: 0xD5C7, //HANGUL SYLLABLE HIEUH YAE HIEUH - 0xC1A1: 0xC810, //HANGUL SYLLABLE CIEUC EO MIEUM - 0xC1A2: 0xC811, //HANGUL SYLLABLE CIEUC EO PIEUP - 0xC1A3: 0xC813, //HANGUL SYLLABLE CIEUC EO SIOS - 0xC1A4: 0xC815, //HANGUL SYLLABLE CIEUC EO IEUNG - 0xC1A5: 0xC816, //HANGUL SYLLABLE CIEUC EO CIEUC - 0xC1A6: 0xC81C, //HANGUL SYLLABLE CIEUC E - 0xC1A7: 0xC81D, //HANGUL SYLLABLE CIEUC E KIYEOK - 0xC1A8: 0xC820, //HANGUL SYLLABLE CIEUC E NIEUN - 0xC1A9: 0xC824, //HANGUL SYLLABLE CIEUC E RIEUL - 0xC1AA: 0xC82C, //HANGUL SYLLABLE CIEUC E MIEUM - 0xC1AB: 0xC82D, //HANGUL SYLLABLE CIEUC E PIEUP - 0xC1AC: 0xC82F, //HANGUL SYLLABLE CIEUC E SIOS - 0xC1AD: 0xC831, //HANGUL SYLLABLE CIEUC E IEUNG - 0xC1AE: 0xC838, //HANGUL SYLLABLE CIEUC YEO - 0xC1AF: 0xC83C, //HANGUL SYLLABLE CIEUC YEO NIEUN - 0xC1B0: 0xC840, //HANGUL SYLLABLE CIEUC YEO RIEUL - 0xC1B1: 0xC848, //HANGUL SYLLABLE CIEUC YEO MIEUM - 0xC1B2: 0xC849, //HANGUL SYLLABLE CIEUC YEO PIEUP - 0xC1B3: 0xC84C, //HANGUL SYLLABLE CIEUC YEO SSANGSIOS - 0xC1B4: 0xC84D, //HANGUL SYLLABLE CIEUC YEO IEUNG - 0xC1B5: 0xC854, //HANGUL SYLLABLE CIEUC YE - 0xC1B6: 0xC870, //HANGUL SYLLABLE CIEUC O - 0xC1B7: 0xC871, //HANGUL SYLLABLE CIEUC O KIYEOK - 0xC1B8: 0xC874, //HANGUL SYLLABLE CIEUC O NIEUN - 0xC1B9: 0xC878, //HANGUL SYLLABLE CIEUC O RIEUL - 0xC1BA: 0xC87A, //HANGUL SYLLABLE CIEUC O RIEULMIEUM - 0xC1BB: 0xC880, //HANGUL SYLLABLE CIEUC O MIEUM - 0xC1BC: 0xC881, //HANGUL SYLLABLE CIEUC O PIEUP - 0xC1BD: 0xC883, //HANGUL SYLLABLE CIEUC O SIOS - 0xC1BE: 0xC885, //HANGUL SYLLABLE CIEUC O IEUNG - 0xC1BF: 0xC886, //HANGUL SYLLABLE CIEUC O CIEUC - 0xC1C0: 0xC887, //HANGUL SYLLABLE CIEUC O CHIEUCH - 0xC1C1: 0xC88B, //HANGUL SYLLABLE CIEUC O HIEUH - 0xC1C2: 0xC88C, //HANGUL SYLLABLE CIEUC WA - 0xC1C3: 0xC88D, //HANGUL SYLLABLE CIEUC WA KIYEOK - 0xC1C4: 0xC894, //HANGUL SYLLABLE CIEUC WA RIEUL - 0xC1C5: 0xC89D, //HANGUL SYLLABLE CIEUC WA PIEUP - 0xC1C6: 0xC89F, //HANGUL SYLLABLE CIEUC WA SIOS - 0xC1C7: 0xC8A1, //HANGUL SYLLABLE CIEUC WA IEUNG - 0xC1C8: 0xC8A8, //HANGUL SYLLABLE CIEUC WAE - 0xC1C9: 0xC8BC, //HANGUL SYLLABLE CIEUC WAE SSANGSIOS - 0xC1CA: 0xC8BD, //HANGUL SYLLABLE CIEUC WAE IEUNG - 0xC1CB: 0xC8C4, //HANGUL SYLLABLE CIEUC OE - 0xC1CC: 0xC8C8, //HANGUL SYLLABLE CIEUC OE NIEUN - 0xC1CD: 0xC8CC, //HANGUL SYLLABLE CIEUC OE RIEUL - 0xC1CE: 0xC8D4, //HANGUL SYLLABLE CIEUC OE MIEUM - 0xC1CF: 0xC8D5, //HANGUL SYLLABLE CIEUC OE PIEUP - 0xC1D0: 0xC8D7, //HANGUL SYLLABLE CIEUC OE SIOS - 0xC1D1: 0xC8D9, //HANGUL SYLLABLE CIEUC OE IEUNG - 0xC1D2: 0xC8E0, //HANGUL SYLLABLE CIEUC YO - 0xC1D3: 0xC8E1, //HANGUL SYLLABLE CIEUC YO KIYEOK - 0xC1D4: 0xC8E4, //HANGUL SYLLABLE CIEUC YO NIEUN - 0xC1D5: 0xC8F5, //HANGUL SYLLABLE CIEUC YO IEUNG - 0xC1D6: 0xC8FC, //HANGUL SYLLABLE CIEUC U - 0xC1D7: 0xC8FD, //HANGUL SYLLABLE CIEUC U KIYEOK - 0xC1D8: 0xC900, //HANGUL SYLLABLE CIEUC U NIEUN - 0xC1D9: 0xC904, //HANGUL SYLLABLE CIEUC U RIEUL - 0xC1DA: 0xC905, //HANGUL SYLLABLE CIEUC U RIEULKIYEOK - 0xC1DB: 0xC906, //HANGUL SYLLABLE CIEUC U RIEULMIEUM - 0xC1DC: 0xC90C, //HANGUL SYLLABLE CIEUC U MIEUM - 0xC1DD: 0xC90D, //HANGUL SYLLABLE CIEUC U PIEUP - 0xC1DE: 0xC90F, //HANGUL SYLLABLE CIEUC U SIOS - 0xC1DF: 0xC911, //HANGUL SYLLABLE CIEUC U IEUNG - 0xC1E0: 0xC918, //HANGUL SYLLABLE CIEUC WEO - 0xC1E1: 0xC92C, //HANGUL SYLLABLE CIEUC WEO SSANGSIOS - 0xC1E2: 0xC934, //HANGUL SYLLABLE CIEUC WE - 0xC1E3: 0xC950, //HANGUL SYLLABLE CIEUC WI - 0xC1E4: 0xC951, //HANGUL SYLLABLE CIEUC WI KIYEOK - 0xC1E5: 0xC954, //HANGUL SYLLABLE CIEUC WI NIEUN - 0xC1E6: 0xC958, //HANGUL SYLLABLE CIEUC WI RIEUL - 0xC1E7: 0xC960, //HANGUL SYLLABLE CIEUC WI MIEUM - 0xC1E8: 0xC961, //HANGUL SYLLABLE CIEUC WI PIEUP - 0xC1E9: 0xC963, //HANGUL SYLLABLE CIEUC WI SIOS - 0xC1EA: 0xC96C, //HANGUL SYLLABLE CIEUC YU - 0xC1EB: 0xC970, //HANGUL SYLLABLE CIEUC YU NIEUN - 0xC1EC: 0xC974, //HANGUL SYLLABLE CIEUC YU RIEUL - 0xC1ED: 0xC97C, //HANGUL SYLLABLE CIEUC YU MIEUM - 0xC1EE: 0xC988, //HANGUL SYLLABLE CIEUC EU - 0xC1EF: 0xC989, //HANGUL SYLLABLE CIEUC EU KIYEOK - 0xC1F0: 0xC98C, //HANGUL SYLLABLE CIEUC EU NIEUN - 0xC1F1: 0xC990, //HANGUL SYLLABLE CIEUC EU RIEUL - 0xC1F2: 0xC998, //HANGUL SYLLABLE CIEUC EU MIEUM - 0xC1F3: 0xC999, //HANGUL SYLLABLE CIEUC EU PIEUP - 0xC1F4: 0xC99B, //HANGUL SYLLABLE CIEUC EU SIOS - 0xC1F5: 0xC99D, //HANGUL SYLLABLE CIEUC EU IEUNG - 0xC1F6: 0xC9C0, //HANGUL SYLLABLE CIEUC I - 0xC1F7: 0xC9C1, //HANGUL SYLLABLE CIEUC I KIYEOK - 0xC1F8: 0xC9C4, //HANGUL SYLLABLE CIEUC I NIEUN - 0xC1F9: 0xC9C7, //HANGUL SYLLABLE CIEUC I TIKEUT - 0xC1FA: 0xC9C8, //HANGUL SYLLABLE CIEUC I RIEUL - 0xC1FB: 0xC9CA, //HANGUL SYLLABLE CIEUC I RIEULMIEUM - 0xC1FC: 0xC9D0, //HANGUL SYLLABLE CIEUC I MIEUM - 0xC1FD: 0xC9D1, //HANGUL SYLLABLE CIEUC I PIEUP - 0xC1FE: 0xC9D3, //HANGUL SYLLABLE CIEUC I SIOS - 0xC241: 0xD5CA, //HANGUL SYLLABLE HIEUH EO SSANGKIYEOK - 0xC242: 0xD5CB, //HANGUL SYLLABLE HIEUH EO KIYEOKSIOS - 0xC243: 0xD5CD, //HANGUL SYLLABLE HIEUH EO NIEUNCIEUC - 0xC244: 0xD5CE, //HANGUL SYLLABLE HIEUH EO NIEUNHIEUH - 0xC245: 0xD5CF, //HANGUL SYLLABLE HIEUH EO TIKEUT - 0xC246: 0xD5D1, //HANGUL SYLLABLE HIEUH EO RIEULKIYEOK - 0xC247: 0xD5D3, //HANGUL SYLLABLE HIEUH EO RIEULPIEUP - 0xC248: 0xD5D4, //HANGUL SYLLABLE HIEUH EO RIEULSIOS - 0xC249: 0xD5D5, //HANGUL SYLLABLE HIEUH EO RIEULTHIEUTH - 0xC24A: 0xD5D6, //HANGUL SYLLABLE HIEUH EO RIEULPHIEUPH - 0xC24B: 0xD5D7, //HANGUL SYLLABLE HIEUH EO RIEULHIEUH - 0xC24C: 0xD5DA, //HANGUL SYLLABLE HIEUH EO PIEUPSIOS - 0xC24D: 0xD5DC, //HANGUL SYLLABLE HIEUH EO SSANGSIOS - 0xC24E: 0xD5DE, //HANGUL SYLLABLE HIEUH EO CIEUC - 0xC24F: 0xD5DF, //HANGUL SYLLABLE HIEUH EO CHIEUCH - 0xC250: 0xD5E0, //HANGUL SYLLABLE HIEUH EO KHIEUKH - 0xC251: 0xD5E1, //HANGUL SYLLABLE HIEUH EO THIEUTH - 0xC252: 0xD5E2, //HANGUL SYLLABLE HIEUH EO PHIEUPH - 0xC253: 0xD5E3, //HANGUL SYLLABLE HIEUH EO HIEUH - 0xC254: 0xD5E6, //HANGUL SYLLABLE HIEUH E SSANGKIYEOK - 0xC255: 0xD5E7, //HANGUL SYLLABLE HIEUH E KIYEOKSIOS - 0xC256: 0xD5E9, //HANGUL SYLLABLE HIEUH E NIEUNCIEUC - 0xC257: 0xD5EA, //HANGUL SYLLABLE HIEUH E NIEUNHIEUH - 0xC258: 0xD5EB, //HANGUL SYLLABLE HIEUH E TIKEUT - 0xC259: 0xD5ED, //HANGUL SYLLABLE HIEUH E RIEULKIYEOK - 0xC25A: 0xD5EE, //HANGUL SYLLABLE HIEUH E RIEULMIEUM - 0xC261: 0xD5EF, //HANGUL SYLLABLE HIEUH E RIEULPIEUP - 0xC262: 0xD5F0, //HANGUL SYLLABLE HIEUH E RIEULSIOS - 0xC263: 0xD5F1, //HANGUL SYLLABLE HIEUH E RIEULTHIEUTH - 0xC264: 0xD5F2, //HANGUL SYLLABLE HIEUH E RIEULPHIEUPH - 0xC265: 0xD5F3, //HANGUL SYLLABLE HIEUH E RIEULHIEUH - 0xC266: 0xD5F6, //HANGUL SYLLABLE HIEUH E PIEUPSIOS - 0xC267: 0xD5F8, //HANGUL SYLLABLE HIEUH E SSANGSIOS - 0xC268: 0xD5FA, //HANGUL SYLLABLE HIEUH E CIEUC - 0xC269: 0xD5FB, //HANGUL SYLLABLE HIEUH E CHIEUCH - 0xC26A: 0xD5FC, //HANGUL SYLLABLE HIEUH E KHIEUKH - 0xC26B: 0xD5FD, //HANGUL SYLLABLE HIEUH E THIEUTH - 0xC26C: 0xD5FE, //HANGUL SYLLABLE HIEUH E PHIEUPH - 0xC26D: 0xD5FF, //HANGUL SYLLABLE HIEUH E HIEUH - 0xC26E: 0xD602, //HANGUL SYLLABLE HIEUH YEO SSANGKIYEOK - 0xC26F: 0xD603, //HANGUL SYLLABLE HIEUH YEO KIYEOKSIOS - 0xC270: 0xD605, //HANGUL SYLLABLE HIEUH YEO NIEUNCIEUC - 0xC271: 0xD606, //HANGUL SYLLABLE HIEUH YEO NIEUNHIEUH - 0xC272: 0xD607, //HANGUL SYLLABLE HIEUH YEO TIKEUT - 0xC273: 0xD609, //HANGUL SYLLABLE HIEUH YEO RIEULKIYEOK - 0xC274: 0xD60A, //HANGUL SYLLABLE HIEUH YEO RIEULMIEUM - 0xC275: 0xD60B, //HANGUL SYLLABLE HIEUH YEO RIEULPIEUP - 0xC276: 0xD60C, //HANGUL SYLLABLE HIEUH YEO RIEULSIOS - 0xC277: 0xD60D, //HANGUL SYLLABLE HIEUH YEO RIEULTHIEUTH - 0xC278: 0xD60E, //HANGUL SYLLABLE HIEUH YEO RIEULPHIEUPH - 0xC279: 0xD60F, //HANGUL SYLLABLE HIEUH YEO RIEULHIEUH - 0xC27A: 0xD612, //HANGUL SYLLABLE HIEUH YEO PIEUPSIOS - 0xC281: 0xD616, //HANGUL SYLLABLE HIEUH YEO CIEUC - 0xC282: 0xD617, //HANGUL SYLLABLE HIEUH YEO CHIEUCH - 0xC283: 0xD618, //HANGUL SYLLABLE HIEUH YEO KHIEUKH - 0xC284: 0xD619, //HANGUL SYLLABLE HIEUH YEO THIEUTH - 0xC285: 0xD61A, //HANGUL SYLLABLE HIEUH YEO PHIEUPH - 0xC286: 0xD61B, //HANGUL SYLLABLE HIEUH YEO HIEUH - 0xC287: 0xD61D, //HANGUL SYLLABLE HIEUH YE KIYEOK - 0xC288: 0xD61E, //HANGUL SYLLABLE HIEUH YE SSANGKIYEOK - 0xC289: 0xD61F, //HANGUL SYLLABLE HIEUH YE KIYEOKSIOS - 0xC28A: 0xD621, //HANGUL SYLLABLE HIEUH YE NIEUNCIEUC - 0xC28B: 0xD622, //HANGUL SYLLABLE HIEUH YE NIEUNHIEUH - 0xC28C: 0xD623, //HANGUL SYLLABLE HIEUH YE TIKEUT - 0xC28D: 0xD625, //HANGUL SYLLABLE HIEUH YE RIEULKIYEOK - 0xC28E: 0xD626, //HANGUL SYLLABLE HIEUH YE RIEULMIEUM - 0xC28F: 0xD627, //HANGUL SYLLABLE HIEUH YE RIEULPIEUP - 0xC290: 0xD628, //HANGUL SYLLABLE HIEUH YE RIEULSIOS - 0xC291: 0xD629, //HANGUL SYLLABLE HIEUH YE RIEULTHIEUTH - 0xC292: 0xD62A, //HANGUL SYLLABLE HIEUH YE RIEULPHIEUPH - 0xC293: 0xD62B, //HANGUL SYLLABLE HIEUH YE RIEULHIEUH - 0xC294: 0xD62C, //HANGUL SYLLABLE HIEUH YE MIEUM - 0xC295: 0xD62E, //HANGUL SYLLABLE HIEUH YE PIEUPSIOS - 0xC296: 0xD62F, //HANGUL SYLLABLE HIEUH YE SIOS - 0xC297: 0xD630, //HANGUL SYLLABLE HIEUH YE SSANGSIOS - 0xC298: 0xD631, //HANGUL SYLLABLE HIEUH YE IEUNG - 0xC299: 0xD632, //HANGUL SYLLABLE HIEUH YE CIEUC - 0xC29A: 0xD633, //HANGUL SYLLABLE HIEUH YE CHIEUCH - 0xC29B: 0xD634, //HANGUL SYLLABLE HIEUH YE KHIEUKH - 0xC29C: 0xD635, //HANGUL SYLLABLE HIEUH YE THIEUTH - 0xC29D: 0xD636, //HANGUL SYLLABLE HIEUH YE PHIEUPH - 0xC29E: 0xD637, //HANGUL SYLLABLE HIEUH YE HIEUH - 0xC29F: 0xD63A, //HANGUL SYLLABLE HIEUH O SSANGKIYEOK - 0xC2A0: 0xD63B, //HANGUL SYLLABLE HIEUH O KIYEOKSIOS - 0xC2A1: 0xC9D5, //HANGUL SYLLABLE CIEUC I IEUNG - 0xC2A2: 0xC9D6, //HANGUL SYLLABLE CIEUC I CIEUC - 0xC2A3: 0xC9D9, //HANGUL SYLLABLE CIEUC I THIEUTH - 0xC2A4: 0xC9DA, //HANGUL SYLLABLE CIEUC I PHIEUPH - 0xC2A5: 0xC9DC, //HANGUL SYLLABLE SSANGCIEUC A - 0xC2A6: 0xC9DD, //HANGUL SYLLABLE SSANGCIEUC A KIYEOK - 0xC2A7: 0xC9E0, //HANGUL SYLLABLE SSANGCIEUC A NIEUN - 0xC2A8: 0xC9E2, //HANGUL SYLLABLE SSANGCIEUC A NIEUNHIEUH - 0xC2A9: 0xC9E4, //HANGUL SYLLABLE SSANGCIEUC A RIEUL - 0xC2AA: 0xC9E7, //HANGUL SYLLABLE SSANGCIEUC A RIEULPIEUP - 0xC2AB: 0xC9EC, //HANGUL SYLLABLE SSANGCIEUC A MIEUM - 0xC2AC: 0xC9ED, //HANGUL SYLLABLE SSANGCIEUC A PIEUP - 0xC2AD: 0xC9EF, //HANGUL SYLLABLE SSANGCIEUC A SIOS - 0xC2AE: 0xC9F0, //HANGUL SYLLABLE SSANGCIEUC A SSANGSIOS - 0xC2AF: 0xC9F1, //HANGUL SYLLABLE SSANGCIEUC A IEUNG - 0xC2B0: 0xC9F8, //HANGUL SYLLABLE SSANGCIEUC AE - 0xC2B1: 0xC9F9, //HANGUL SYLLABLE SSANGCIEUC AE KIYEOK - 0xC2B2: 0xC9FC, //HANGUL SYLLABLE SSANGCIEUC AE NIEUN - 0xC2B3: 0xCA00, //HANGUL SYLLABLE SSANGCIEUC AE RIEUL - 0xC2B4: 0xCA08, //HANGUL SYLLABLE SSANGCIEUC AE MIEUM - 0xC2B5: 0xCA09, //HANGUL SYLLABLE SSANGCIEUC AE PIEUP - 0xC2B6: 0xCA0B, //HANGUL SYLLABLE SSANGCIEUC AE SIOS - 0xC2B7: 0xCA0C, //HANGUL SYLLABLE SSANGCIEUC AE SSANGSIOS - 0xC2B8: 0xCA0D, //HANGUL SYLLABLE SSANGCIEUC AE IEUNG - 0xC2B9: 0xCA14, //HANGUL SYLLABLE SSANGCIEUC YA - 0xC2BA: 0xCA18, //HANGUL SYLLABLE SSANGCIEUC YA NIEUN - 0xC2BB: 0xCA29, //HANGUL SYLLABLE SSANGCIEUC YA IEUNG - 0xC2BC: 0xCA4C, //HANGUL SYLLABLE SSANGCIEUC EO - 0xC2BD: 0xCA4D, //HANGUL SYLLABLE SSANGCIEUC EO KIYEOK - 0xC2BE: 0xCA50, //HANGUL SYLLABLE SSANGCIEUC EO NIEUN - 0xC2BF: 0xCA54, //HANGUL SYLLABLE SSANGCIEUC EO RIEUL - 0xC2C0: 0xCA5C, //HANGUL SYLLABLE SSANGCIEUC EO MIEUM - 0xC2C1: 0xCA5D, //HANGUL SYLLABLE SSANGCIEUC EO PIEUP - 0xC2C2: 0xCA5F, //HANGUL SYLLABLE SSANGCIEUC EO SIOS - 0xC2C3: 0xCA60, //HANGUL SYLLABLE SSANGCIEUC EO SSANGSIOS - 0xC2C4: 0xCA61, //HANGUL SYLLABLE SSANGCIEUC EO IEUNG - 0xC2C5: 0xCA68, //HANGUL SYLLABLE SSANGCIEUC E - 0xC2C6: 0xCA7D, //HANGUL SYLLABLE SSANGCIEUC E IEUNG - 0xC2C7: 0xCA84, //HANGUL SYLLABLE SSANGCIEUC YEO - 0xC2C8: 0xCA98, //HANGUL SYLLABLE SSANGCIEUC YEO SSANGSIOS - 0xC2C9: 0xCABC, //HANGUL SYLLABLE SSANGCIEUC O - 0xC2CA: 0xCABD, //HANGUL SYLLABLE SSANGCIEUC O KIYEOK - 0xC2CB: 0xCAC0, //HANGUL SYLLABLE SSANGCIEUC O NIEUN - 0xC2CC: 0xCAC4, //HANGUL SYLLABLE SSANGCIEUC O RIEUL - 0xC2CD: 0xCACC, //HANGUL SYLLABLE SSANGCIEUC O MIEUM - 0xC2CE: 0xCACD, //HANGUL SYLLABLE SSANGCIEUC O PIEUP - 0xC2CF: 0xCACF, //HANGUL SYLLABLE SSANGCIEUC O SIOS - 0xC2D0: 0xCAD1, //HANGUL SYLLABLE SSANGCIEUC O IEUNG - 0xC2D1: 0xCAD3, //HANGUL SYLLABLE SSANGCIEUC O CHIEUCH - 0xC2D2: 0xCAD8, //HANGUL SYLLABLE SSANGCIEUC WA - 0xC2D3: 0xCAD9, //HANGUL SYLLABLE SSANGCIEUC WA KIYEOK - 0xC2D4: 0xCAE0, //HANGUL SYLLABLE SSANGCIEUC WA RIEUL - 0xC2D5: 0xCAEC, //HANGUL SYLLABLE SSANGCIEUC WA SSANGSIOS - 0xC2D6: 0xCAF4, //HANGUL SYLLABLE SSANGCIEUC WAE - 0xC2D7: 0xCB08, //HANGUL SYLLABLE SSANGCIEUC WAE SSANGSIOS - 0xC2D8: 0xCB10, //HANGUL SYLLABLE SSANGCIEUC OE - 0xC2D9: 0xCB14, //HANGUL SYLLABLE SSANGCIEUC OE NIEUN - 0xC2DA: 0xCB18, //HANGUL SYLLABLE SSANGCIEUC OE RIEUL - 0xC2DB: 0xCB20, //HANGUL SYLLABLE SSANGCIEUC OE MIEUM - 0xC2DC: 0xCB21, //HANGUL SYLLABLE SSANGCIEUC OE PIEUP - 0xC2DD: 0xCB41, //HANGUL SYLLABLE SSANGCIEUC YO IEUNG - 0xC2DE: 0xCB48, //HANGUL SYLLABLE SSANGCIEUC U - 0xC2DF: 0xCB49, //HANGUL SYLLABLE SSANGCIEUC U KIYEOK - 0xC2E0: 0xCB4C, //HANGUL SYLLABLE SSANGCIEUC U NIEUN - 0xC2E1: 0xCB50, //HANGUL SYLLABLE SSANGCIEUC U RIEUL - 0xC2E2: 0xCB58, //HANGUL SYLLABLE SSANGCIEUC U MIEUM - 0xC2E3: 0xCB59, //HANGUL SYLLABLE SSANGCIEUC U PIEUP - 0xC2E4: 0xCB5D, //HANGUL SYLLABLE SSANGCIEUC U IEUNG - 0xC2E5: 0xCB64, //HANGUL SYLLABLE SSANGCIEUC WEO - 0xC2E6: 0xCB78, //HANGUL SYLLABLE SSANGCIEUC WEO SSANGSIOS - 0xC2E7: 0xCB79, //HANGUL SYLLABLE SSANGCIEUC WEO IEUNG - 0xC2E8: 0xCB9C, //HANGUL SYLLABLE SSANGCIEUC WI - 0xC2E9: 0xCBB8, //HANGUL SYLLABLE SSANGCIEUC YU - 0xC2EA: 0xCBD4, //HANGUL SYLLABLE SSANGCIEUC EU - 0xC2EB: 0xCBE4, //HANGUL SYLLABLE SSANGCIEUC EU MIEUM - 0xC2EC: 0xCBE7, //HANGUL SYLLABLE SSANGCIEUC EU SIOS - 0xC2ED: 0xCBE9, //HANGUL SYLLABLE SSANGCIEUC EU IEUNG - 0xC2EE: 0xCC0C, //HANGUL SYLLABLE SSANGCIEUC I - 0xC2EF: 0xCC0D, //HANGUL SYLLABLE SSANGCIEUC I KIYEOK - 0xC2F0: 0xCC10, //HANGUL SYLLABLE SSANGCIEUC I NIEUN - 0xC2F1: 0xCC14, //HANGUL SYLLABLE SSANGCIEUC I RIEUL - 0xC2F2: 0xCC1C, //HANGUL SYLLABLE SSANGCIEUC I MIEUM - 0xC2F3: 0xCC1D, //HANGUL SYLLABLE SSANGCIEUC I PIEUP - 0xC2F4: 0xCC21, //HANGUL SYLLABLE SSANGCIEUC I IEUNG - 0xC2F5: 0xCC22, //HANGUL SYLLABLE SSANGCIEUC I CIEUC - 0xC2F6: 0xCC27, //HANGUL SYLLABLE SSANGCIEUC I HIEUH - 0xC2F7: 0xCC28, //HANGUL SYLLABLE CHIEUCH A - 0xC2F8: 0xCC29, //HANGUL SYLLABLE CHIEUCH A KIYEOK - 0xC2F9: 0xCC2C, //HANGUL SYLLABLE CHIEUCH A NIEUN - 0xC2FA: 0xCC2E, //HANGUL SYLLABLE CHIEUCH A NIEUNHIEUH - 0xC2FB: 0xCC30, //HANGUL SYLLABLE CHIEUCH A RIEUL - 0xC2FC: 0xCC38, //HANGUL SYLLABLE CHIEUCH A MIEUM - 0xC2FD: 0xCC39, //HANGUL SYLLABLE CHIEUCH A PIEUP - 0xC2FE: 0xCC3B, //HANGUL SYLLABLE CHIEUCH A SIOS - 0xC341: 0xD63D, //HANGUL SYLLABLE HIEUH O NIEUNCIEUC - 0xC342: 0xD63E, //HANGUL SYLLABLE HIEUH O NIEUNHIEUH - 0xC343: 0xD63F, //HANGUL SYLLABLE HIEUH O TIKEUT - 0xC344: 0xD641, //HANGUL SYLLABLE HIEUH O RIEULKIYEOK - 0xC345: 0xD642, //HANGUL SYLLABLE HIEUH O RIEULMIEUM - 0xC346: 0xD643, //HANGUL SYLLABLE HIEUH O RIEULPIEUP - 0xC347: 0xD644, //HANGUL SYLLABLE HIEUH O RIEULSIOS - 0xC348: 0xD646, //HANGUL SYLLABLE HIEUH O RIEULPHIEUPH - 0xC349: 0xD647, //HANGUL SYLLABLE HIEUH O RIEULHIEUH - 0xC34A: 0xD64A, //HANGUL SYLLABLE HIEUH O PIEUPSIOS - 0xC34B: 0xD64C, //HANGUL SYLLABLE HIEUH O SSANGSIOS - 0xC34C: 0xD64E, //HANGUL SYLLABLE HIEUH O CIEUC - 0xC34D: 0xD64F, //HANGUL SYLLABLE HIEUH O CHIEUCH - 0xC34E: 0xD650, //HANGUL SYLLABLE HIEUH O KHIEUKH - 0xC34F: 0xD652, //HANGUL SYLLABLE HIEUH O PHIEUPH - 0xC350: 0xD653, //HANGUL SYLLABLE HIEUH O HIEUH - 0xC351: 0xD656, //HANGUL SYLLABLE HIEUH WA SSANGKIYEOK - 0xC352: 0xD657, //HANGUL SYLLABLE HIEUH WA KIYEOKSIOS - 0xC353: 0xD659, //HANGUL SYLLABLE HIEUH WA NIEUNCIEUC - 0xC354: 0xD65A, //HANGUL SYLLABLE HIEUH WA NIEUNHIEUH - 0xC355: 0xD65B, //HANGUL SYLLABLE HIEUH WA TIKEUT - 0xC356: 0xD65D, //HANGUL SYLLABLE HIEUH WA RIEULKIYEOK - 0xC357: 0xD65E, //HANGUL SYLLABLE HIEUH WA RIEULMIEUM - 0xC358: 0xD65F, //HANGUL SYLLABLE HIEUH WA RIEULPIEUP - 0xC359: 0xD660, //HANGUL SYLLABLE HIEUH WA RIEULSIOS - 0xC35A: 0xD661, //HANGUL SYLLABLE HIEUH WA RIEULTHIEUTH - 0xC361: 0xD662, //HANGUL SYLLABLE HIEUH WA RIEULPHIEUPH - 0xC362: 0xD663, //HANGUL SYLLABLE HIEUH WA RIEULHIEUH - 0xC363: 0xD664, //HANGUL SYLLABLE HIEUH WA MIEUM - 0xC364: 0xD665, //HANGUL SYLLABLE HIEUH WA PIEUP - 0xC365: 0xD666, //HANGUL SYLLABLE HIEUH WA PIEUPSIOS - 0xC366: 0xD668, //HANGUL SYLLABLE HIEUH WA SSANGSIOS - 0xC367: 0xD66A, //HANGUL SYLLABLE HIEUH WA CIEUC - 0xC368: 0xD66B, //HANGUL SYLLABLE HIEUH WA CHIEUCH - 0xC369: 0xD66C, //HANGUL SYLLABLE HIEUH WA KHIEUKH - 0xC36A: 0xD66D, //HANGUL SYLLABLE HIEUH WA THIEUTH - 0xC36B: 0xD66E, //HANGUL SYLLABLE HIEUH WA PHIEUPH - 0xC36C: 0xD66F, //HANGUL SYLLABLE HIEUH WA HIEUH - 0xC36D: 0xD672, //HANGUL SYLLABLE HIEUH WAE SSANGKIYEOK - 0xC36E: 0xD673, //HANGUL SYLLABLE HIEUH WAE KIYEOKSIOS - 0xC36F: 0xD675, //HANGUL SYLLABLE HIEUH WAE NIEUNCIEUC - 0xC370: 0xD676, //HANGUL SYLLABLE HIEUH WAE NIEUNHIEUH - 0xC371: 0xD677, //HANGUL SYLLABLE HIEUH WAE TIKEUT - 0xC372: 0xD678, //HANGUL SYLLABLE HIEUH WAE RIEUL - 0xC373: 0xD679, //HANGUL SYLLABLE HIEUH WAE RIEULKIYEOK - 0xC374: 0xD67A, //HANGUL SYLLABLE HIEUH WAE RIEULMIEUM - 0xC375: 0xD67B, //HANGUL SYLLABLE HIEUH WAE RIEULPIEUP - 0xC376: 0xD67C, //HANGUL SYLLABLE HIEUH WAE RIEULSIOS - 0xC377: 0xD67D, //HANGUL SYLLABLE HIEUH WAE RIEULTHIEUTH - 0xC378: 0xD67E, //HANGUL SYLLABLE HIEUH WAE RIEULPHIEUPH - 0xC379: 0xD67F, //HANGUL SYLLABLE HIEUH WAE RIEULHIEUH - 0xC37A: 0xD680, //HANGUL SYLLABLE HIEUH WAE MIEUM - 0xC381: 0xD681, //HANGUL SYLLABLE HIEUH WAE PIEUP - 0xC382: 0xD682, //HANGUL SYLLABLE HIEUH WAE PIEUPSIOS - 0xC383: 0xD684, //HANGUL SYLLABLE HIEUH WAE SSANGSIOS - 0xC384: 0xD686, //HANGUL SYLLABLE HIEUH WAE CIEUC - 0xC385: 0xD687, //HANGUL SYLLABLE HIEUH WAE CHIEUCH - 0xC386: 0xD688, //HANGUL SYLLABLE HIEUH WAE KHIEUKH - 0xC387: 0xD689, //HANGUL SYLLABLE HIEUH WAE THIEUTH - 0xC388: 0xD68A, //HANGUL SYLLABLE HIEUH WAE PHIEUPH - 0xC389: 0xD68B, //HANGUL SYLLABLE HIEUH WAE HIEUH - 0xC38A: 0xD68E, //HANGUL SYLLABLE HIEUH OE SSANGKIYEOK - 0xC38B: 0xD68F, //HANGUL SYLLABLE HIEUH OE KIYEOKSIOS - 0xC38C: 0xD691, //HANGUL SYLLABLE HIEUH OE NIEUNCIEUC - 0xC38D: 0xD692, //HANGUL SYLLABLE HIEUH OE NIEUNHIEUH - 0xC38E: 0xD693, //HANGUL SYLLABLE HIEUH OE TIKEUT - 0xC38F: 0xD695, //HANGUL SYLLABLE HIEUH OE RIEULKIYEOK - 0xC390: 0xD696, //HANGUL SYLLABLE HIEUH OE RIEULMIEUM - 0xC391: 0xD697, //HANGUL SYLLABLE HIEUH OE RIEULPIEUP - 0xC392: 0xD698, //HANGUL SYLLABLE HIEUH OE RIEULSIOS - 0xC393: 0xD699, //HANGUL SYLLABLE HIEUH OE RIEULTHIEUTH - 0xC394: 0xD69A, //HANGUL SYLLABLE HIEUH OE RIEULPHIEUPH - 0xC395: 0xD69B, //HANGUL SYLLABLE HIEUH OE RIEULHIEUH - 0xC396: 0xD69C, //HANGUL SYLLABLE HIEUH OE MIEUM - 0xC397: 0xD69E, //HANGUL SYLLABLE HIEUH OE PIEUPSIOS - 0xC398: 0xD6A0, //HANGUL SYLLABLE HIEUH OE SSANGSIOS - 0xC399: 0xD6A2, //HANGUL SYLLABLE HIEUH OE CIEUC - 0xC39A: 0xD6A3, //HANGUL SYLLABLE HIEUH OE CHIEUCH - 0xC39B: 0xD6A4, //HANGUL SYLLABLE HIEUH OE KHIEUKH - 0xC39C: 0xD6A5, //HANGUL SYLLABLE HIEUH OE THIEUTH - 0xC39D: 0xD6A6, //HANGUL SYLLABLE HIEUH OE PHIEUPH - 0xC39E: 0xD6A7, //HANGUL SYLLABLE HIEUH OE HIEUH - 0xC39F: 0xD6A9, //HANGUL SYLLABLE HIEUH YO KIYEOK - 0xC3A0: 0xD6AA, //HANGUL SYLLABLE HIEUH YO SSANGKIYEOK - 0xC3A1: 0xCC3C, //HANGUL SYLLABLE CHIEUCH A SSANGSIOS - 0xC3A2: 0xCC3D, //HANGUL SYLLABLE CHIEUCH A IEUNG - 0xC3A3: 0xCC3E, //HANGUL SYLLABLE CHIEUCH A CIEUC - 0xC3A4: 0xCC44, //HANGUL SYLLABLE CHIEUCH AE - 0xC3A5: 0xCC45, //HANGUL SYLLABLE CHIEUCH AE KIYEOK - 0xC3A6: 0xCC48, //HANGUL SYLLABLE CHIEUCH AE NIEUN - 0xC3A7: 0xCC4C, //HANGUL SYLLABLE CHIEUCH AE RIEUL - 0xC3A8: 0xCC54, //HANGUL SYLLABLE CHIEUCH AE MIEUM - 0xC3A9: 0xCC55, //HANGUL SYLLABLE CHIEUCH AE PIEUP - 0xC3AA: 0xCC57, //HANGUL SYLLABLE CHIEUCH AE SIOS - 0xC3AB: 0xCC58, //HANGUL SYLLABLE CHIEUCH AE SSANGSIOS - 0xC3AC: 0xCC59, //HANGUL SYLLABLE CHIEUCH AE IEUNG - 0xC3AD: 0xCC60, //HANGUL SYLLABLE CHIEUCH YA - 0xC3AE: 0xCC64, //HANGUL SYLLABLE CHIEUCH YA NIEUN - 0xC3AF: 0xCC66, //HANGUL SYLLABLE CHIEUCH YA NIEUNHIEUH - 0xC3B0: 0xCC68, //HANGUL SYLLABLE CHIEUCH YA RIEUL - 0xC3B1: 0xCC70, //HANGUL SYLLABLE CHIEUCH YA MIEUM - 0xC3B2: 0xCC75, //HANGUL SYLLABLE CHIEUCH YA IEUNG - 0xC3B3: 0xCC98, //HANGUL SYLLABLE CHIEUCH EO - 0xC3B4: 0xCC99, //HANGUL SYLLABLE CHIEUCH EO KIYEOK - 0xC3B5: 0xCC9C, //HANGUL SYLLABLE CHIEUCH EO NIEUN - 0xC3B6: 0xCCA0, //HANGUL SYLLABLE CHIEUCH EO RIEUL - 0xC3B7: 0xCCA8, //HANGUL SYLLABLE CHIEUCH EO MIEUM - 0xC3B8: 0xCCA9, //HANGUL SYLLABLE CHIEUCH EO PIEUP - 0xC3B9: 0xCCAB, //HANGUL SYLLABLE CHIEUCH EO SIOS - 0xC3BA: 0xCCAC, //HANGUL SYLLABLE CHIEUCH EO SSANGSIOS - 0xC3BB: 0xCCAD, //HANGUL SYLLABLE CHIEUCH EO IEUNG - 0xC3BC: 0xCCB4, //HANGUL SYLLABLE CHIEUCH E - 0xC3BD: 0xCCB5, //HANGUL SYLLABLE CHIEUCH E KIYEOK - 0xC3BE: 0xCCB8, //HANGUL SYLLABLE CHIEUCH E NIEUN - 0xC3BF: 0xCCBC, //HANGUL SYLLABLE CHIEUCH E RIEUL - 0xC3C0: 0xCCC4, //HANGUL SYLLABLE CHIEUCH E MIEUM - 0xC3C1: 0xCCC5, //HANGUL SYLLABLE CHIEUCH E PIEUP - 0xC3C2: 0xCCC7, //HANGUL SYLLABLE CHIEUCH E SIOS - 0xC3C3: 0xCCC9, //HANGUL SYLLABLE CHIEUCH E IEUNG - 0xC3C4: 0xCCD0, //HANGUL SYLLABLE CHIEUCH YEO - 0xC3C5: 0xCCD4, //HANGUL SYLLABLE CHIEUCH YEO NIEUN - 0xC3C6: 0xCCE4, //HANGUL SYLLABLE CHIEUCH YEO SSANGSIOS - 0xC3C7: 0xCCEC, //HANGUL SYLLABLE CHIEUCH YE - 0xC3C8: 0xCCF0, //HANGUL SYLLABLE CHIEUCH YE NIEUN - 0xC3C9: 0xCD01, //HANGUL SYLLABLE CHIEUCH YE IEUNG - 0xC3CA: 0xCD08, //HANGUL SYLLABLE CHIEUCH O - 0xC3CB: 0xCD09, //HANGUL SYLLABLE CHIEUCH O KIYEOK - 0xC3CC: 0xCD0C, //HANGUL SYLLABLE CHIEUCH O NIEUN - 0xC3CD: 0xCD10, //HANGUL SYLLABLE CHIEUCH O RIEUL - 0xC3CE: 0xCD18, //HANGUL SYLLABLE CHIEUCH O MIEUM - 0xC3CF: 0xCD19, //HANGUL SYLLABLE CHIEUCH O PIEUP - 0xC3D0: 0xCD1B, //HANGUL SYLLABLE CHIEUCH O SIOS - 0xC3D1: 0xCD1D, //HANGUL SYLLABLE CHIEUCH O IEUNG - 0xC3D2: 0xCD24, //HANGUL SYLLABLE CHIEUCH WA - 0xC3D3: 0xCD28, //HANGUL SYLLABLE CHIEUCH WA NIEUN - 0xC3D4: 0xCD2C, //HANGUL SYLLABLE CHIEUCH WA RIEUL - 0xC3D5: 0xCD39, //HANGUL SYLLABLE CHIEUCH WA IEUNG - 0xC3D6: 0xCD5C, //HANGUL SYLLABLE CHIEUCH OE - 0xC3D7: 0xCD60, //HANGUL SYLLABLE CHIEUCH OE NIEUN - 0xC3D8: 0xCD64, //HANGUL SYLLABLE CHIEUCH OE RIEUL - 0xC3D9: 0xCD6C, //HANGUL SYLLABLE CHIEUCH OE MIEUM - 0xC3DA: 0xCD6D, //HANGUL SYLLABLE CHIEUCH OE PIEUP - 0xC3DB: 0xCD6F, //HANGUL SYLLABLE CHIEUCH OE SIOS - 0xC3DC: 0xCD71, //HANGUL SYLLABLE CHIEUCH OE IEUNG - 0xC3DD: 0xCD78, //HANGUL SYLLABLE CHIEUCH YO - 0xC3DE: 0xCD88, //HANGUL SYLLABLE CHIEUCH YO MIEUM - 0xC3DF: 0xCD94, //HANGUL SYLLABLE CHIEUCH U - 0xC3E0: 0xCD95, //HANGUL SYLLABLE CHIEUCH U KIYEOK - 0xC3E1: 0xCD98, //HANGUL SYLLABLE CHIEUCH U NIEUN - 0xC3E2: 0xCD9C, //HANGUL SYLLABLE CHIEUCH U RIEUL - 0xC3E3: 0xCDA4, //HANGUL SYLLABLE CHIEUCH U MIEUM - 0xC3E4: 0xCDA5, //HANGUL SYLLABLE CHIEUCH U PIEUP - 0xC3E5: 0xCDA7, //HANGUL SYLLABLE CHIEUCH U SIOS - 0xC3E6: 0xCDA9, //HANGUL SYLLABLE CHIEUCH U IEUNG - 0xC3E7: 0xCDB0, //HANGUL SYLLABLE CHIEUCH WEO - 0xC3E8: 0xCDC4, //HANGUL SYLLABLE CHIEUCH WEO SSANGSIOS - 0xC3E9: 0xCDCC, //HANGUL SYLLABLE CHIEUCH WE - 0xC3EA: 0xCDD0, //HANGUL SYLLABLE CHIEUCH WE NIEUN - 0xC3EB: 0xCDE8, //HANGUL SYLLABLE CHIEUCH WI - 0xC3EC: 0xCDEC, //HANGUL SYLLABLE CHIEUCH WI NIEUN - 0xC3ED: 0xCDF0, //HANGUL SYLLABLE CHIEUCH WI RIEUL - 0xC3EE: 0xCDF8, //HANGUL SYLLABLE CHIEUCH WI MIEUM - 0xC3EF: 0xCDF9, //HANGUL SYLLABLE CHIEUCH WI PIEUP - 0xC3F0: 0xCDFB, //HANGUL SYLLABLE CHIEUCH WI SIOS - 0xC3F1: 0xCDFD, //HANGUL SYLLABLE CHIEUCH WI IEUNG - 0xC3F2: 0xCE04, //HANGUL SYLLABLE CHIEUCH YU - 0xC3F3: 0xCE08, //HANGUL SYLLABLE CHIEUCH YU NIEUN - 0xC3F4: 0xCE0C, //HANGUL SYLLABLE CHIEUCH YU RIEUL - 0xC3F5: 0xCE14, //HANGUL SYLLABLE CHIEUCH YU MIEUM - 0xC3F6: 0xCE19, //HANGUL SYLLABLE CHIEUCH YU IEUNG - 0xC3F7: 0xCE20, //HANGUL SYLLABLE CHIEUCH EU - 0xC3F8: 0xCE21, //HANGUL SYLLABLE CHIEUCH EU KIYEOK - 0xC3F9: 0xCE24, //HANGUL SYLLABLE CHIEUCH EU NIEUN - 0xC3FA: 0xCE28, //HANGUL SYLLABLE CHIEUCH EU RIEUL - 0xC3FB: 0xCE30, //HANGUL SYLLABLE CHIEUCH EU MIEUM - 0xC3FC: 0xCE31, //HANGUL SYLLABLE CHIEUCH EU PIEUP - 0xC3FD: 0xCE33, //HANGUL SYLLABLE CHIEUCH EU SIOS - 0xC3FE: 0xCE35, //HANGUL SYLLABLE CHIEUCH EU IEUNG - 0xC441: 0xD6AB, //HANGUL SYLLABLE HIEUH YO KIYEOKSIOS - 0xC442: 0xD6AD, //HANGUL SYLLABLE HIEUH YO NIEUNCIEUC - 0xC443: 0xD6AE, //HANGUL SYLLABLE HIEUH YO NIEUNHIEUH - 0xC444: 0xD6AF, //HANGUL SYLLABLE HIEUH YO TIKEUT - 0xC445: 0xD6B1, //HANGUL SYLLABLE HIEUH YO RIEULKIYEOK - 0xC446: 0xD6B2, //HANGUL SYLLABLE HIEUH YO RIEULMIEUM - 0xC447: 0xD6B3, //HANGUL SYLLABLE HIEUH YO RIEULPIEUP - 0xC448: 0xD6B4, //HANGUL SYLLABLE HIEUH YO RIEULSIOS - 0xC449: 0xD6B5, //HANGUL SYLLABLE HIEUH YO RIEULTHIEUTH - 0xC44A: 0xD6B6, //HANGUL SYLLABLE HIEUH YO RIEULPHIEUPH - 0xC44B: 0xD6B7, //HANGUL SYLLABLE HIEUH YO RIEULHIEUH - 0xC44C: 0xD6B8, //HANGUL SYLLABLE HIEUH YO MIEUM - 0xC44D: 0xD6BA, //HANGUL SYLLABLE HIEUH YO PIEUPSIOS - 0xC44E: 0xD6BC, //HANGUL SYLLABLE HIEUH YO SSANGSIOS - 0xC44F: 0xD6BD, //HANGUL SYLLABLE HIEUH YO IEUNG - 0xC450: 0xD6BE, //HANGUL SYLLABLE HIEUH YO CIEUC - 0xC451: 0xD6BF, //HANGUL SYLLABLE HIEUH YO CHIEUCH - 0xC452: 0xD6C0, //HANGUL SYLLABLE HIEUH YO KHIEUKH - 0xC453: 0xD6C1, //HANGUL SYLLABLE HIEUH YO THIEUTH - 0xC454: 0xD6C2, //HANGUL SYLLABLE HIEUH YO PHIEUPH - 0xC455: 0xD6C3, //HANGUL SYLLABLE HIEUH YO HIEUH - 0xC456: 0xD6C6, //HANGUL SYLLABLE HIEUH U SSANGKIYEOK - 0xC457: 0xD6C7, //HANGUL SYLLABLE HIEUH U KIYEOKSIOS - 0xC458: 0xD6C9, //HANGUL SYLLABLE HIEUH U NIEUNCIEUC - 0xC459: 0xD6CA, //HANGUL SYLLABLE HIEUH U NIEUNHIEUH - 0xC45A: 0xD6CB, //HANGUL SYLLABLE HIEUH U TIKEUT - 0xC461: 0xD6CD, //HANGUL SYLLABLE HIEUH U RIEULKIYEOK - 0xC462: 0xD6CE, //HANGUL SYLLABLE HIEUH U RIEULMIEUM - 0xC463: 0xD6CF, //HANGUL SYLLABLE HIEUH U RIEULPIEUP - 0xC464: 0xD6D0, //HANGUL SYLLABLE HIEUH U RIEULSIOS - 0xC465: 0xD6D2, //HANGUL SYLLABLE HIEUH U RIEULPHIEUPH - 0xC466: 0xD6D3, //HANGUL SYLLABLE HIEUH U RIEULHIEUH - 0xC467: 0xD6D5, //HANGUL SYLLABLE HIEUH U PIEUP - 0xC468: 0xD6D6, //HANGUL SYLLABLE HIEUH U PIEUPSIOS - 0xC469: 0xD6D8, //HANGUL SYLLABLE HIEUH U SSANGSIOS - 0xC46A: 0xD6DA, //HANGUL SYLLABLE HIEUH U CIEUC - 0xC46B: 0xD6DB, //HANGUL SYLLABLE HIEUH U CHIEUCH - 0xC46C: 0xD6DC, //HANGUL SYLLABLE HIEUH U KHIEUKH - 0xC46D: 0xD6DD, //HANGUL SYLLABLE HIEUH U THIEUTH - 0xC46E: 0xD6DE, //HANGUL SYLLABLE HIEUH U PHIEUPH - 0xC46F: 0xD6DF, //HANGUL SYLLABLE HIEUH U HIEUH - 0xC470: 0xD6E1, //HANGUL SYLLABLE HIEUH WEO KIYEOK - 0xC471: 0xD6E2, //HANGUL SYLLABLE HIEUH WEO SSANGKIYEOK - 0xC472: 0xD6E3, //HANGUL SYLLABLE HIEUH WEO KIYEOKSIOS - 0xC473: 0xD6E5, //HANGUL SYLLABLE HIEUH WEO NIEUNCIEUC - 0xC474: 0xD6E6, //HANGUL SYLLABLE HIEUH WEO NIEUNHIEUH - 0xC475: 0xD6E7, //HANGUL SYLLABLE HIEUH WEO TIKEUT - 0xC476: 0xD6E9, //HANGUL SYLLABLE HIEUH WEO RIEULKIYEOK - 0xC477: 0xD6EA, //HANGUL SYLLABLE HIEUH WEO RIEULMIEUM - 0xC478: 0xD6EB, //HANGUL SYLLABLE HIEUH WEO RIEULPIEUP - 0xC479: 0xD6EC, //HANGUL SYLLABLE HIEUH WEO RIEULSIOS - 0xC47A: 0xD6ED, //HANGUL SYLLABLE HIEUH WEO RIEULTHIEUTH - 0xC481: 0xD6EE, //HANGUL SYLLABLE HIEUH WEO RIEULPHIEUPH - 0xC482: 0xD6EF, //HANGUL SYLLABLE HIEUH WEO RIEULHIEUH - 0xC483: 0xD6F1, //HANGUL SYLLABLE HIEUH WEO PIEUP - 0xC484: 0xD6F2, //HANGUL SYLLABLE HIEUH WEO PIEUPSIOS - 0xC485: 0xD6F3, //HANGUL SYLLABLE HIEUH WEO SIOS - 0xC486: 0xD6F4, //HANGUL SYLLABLE HIEUH WEO SSANGSIOS - 0xC487: 0xD6F6, //HANGUL SYLLABLE HIEUH WEO CIEUC - 0xC488: 0xD6F7, //HANGUL SYLLABLE HIEUH WEO CHIEUCH - 0xC489: 0xD6F8, //HANGUL SYLLABLE HIEUH WEO KHIEUKH - 0xC48A: 0xD6F9, //HANGUL SYLLABLE HIEUH WEO THIEUTH - 0xC48B: 0xD6FA, //HANGUL SYLLABLE HIEUH WEO PHIEUPH - 0xC48C: 0xD6FB, //HANGUL SYLLABLE HIEUH WEO HIEUH - 0xC48D: 0xD6FE, //HANGUL SYLLABLE HIEUH WE SSANGKIYEOK - 0xC48E: 0xD6FF, //HANGUL SYLLABLE HIEUH WE KIYEOKSIOS - 0xC48F: 0xD701, //HANGUL SYLLABLE HIEUH WE NIEUNCIEUC - 0xC490: 0xD702, //HANGUL SYLLABLE HIEUH WE NIEUNHIEUH - 0xC491: 0xD703, //HANGUL SYLLABLE HIEUH WE TIKEUT - 0xC492: 0xD705, //HANGUL SYLLABLE HIEUH WE RIEULKIYEOK - 0xC493: 0xD706, //HANGUL SYLLABLE HIEUH WE RIEULMIEUM - 0xC494: 0xD707, //HANGUL SYLLABLE HIEUH WE RIEULPIEUP - 0xC495: 0xD708, //HANGUL SYLLABLE HIEUH WE RIEULSIOS - 0xC496: 0xD709, //HANGUL SYLLABLE HIEUH WE RIEULTHIEUTH - 0xC497: 0xD70A, //HANGUL SYLLABLE HIEUH WE RIEULPHIEUPH - 0xC498: 0xD70B, //HANGUL SYLLABLE HIEUH WE RIEULHIEUH - 0xC499: 0xD70C, //HANGUL SYLLABLE HIEUH WE MIEUM - 0xC49A: 0xD70D, //HANGUL SYLLABLE HIEUH WE PIEUP - 0xC49B: 0xD70E, //HANGUL SYLLABLE HIEUH WE PIEUPSIOS - 0xC49C: 0xD70F, //HANGUL SYLLABLE HIEUH WE SIOS - 0xC49D: 0xD710, //HANGUL SYLLABLE HIEUH WE SSANGSIOS - 0xC49E: 0xD712, //HANGUL SYLLABLE HIEUH WE CIEUC - 0xC49F: 0xD713, //HANGUL SYLLABLE HIEUH WE CHIEUCH - 0xC4A0: 0xD714, //HANGUL SYLLABLE HIEUH WE KHIEUKH - 0xC4A1: 0xCE58, //HANGUL SYLLABLE CHIEUCH I - 0xC4A2: 0xCE59, //HANGUL SYLLABLE CHIEUCH I KIYEOK - 0xC4A3: 0xCE5C, //HANGUL SYLLABLE CHIEUCH I NIEUN - 0xC4A4: 0xCE5F, //HANGUL SYLLABLE CHIEUCH I TIKEUT - 0xC4A5: 0xCE60, //HANGUL SYLLABLE CHIEUCH I RIEUL - 0xC4A6: 0xCE61, //HANGUL SYLLABLE CHIEUCH I RIEULKIYEOK - 0xC4A7: 0xCE68, //HANGUL SYLLABLE CHIEUCH I MIEUM - 0xC4A8: 0xCE69, //HANGUL SYLLABLE CHIEUCH I PIEUP - 0xC4A9: 0xCE6B, //HANGUL SYLLABLE CHIEUCH I SIOS - 0xC4AA: 0xCE6D, //HANGUL SYLLABLE CHIEUCH I IEUNG - 0xC4AB: 0xCE74, //HANGUL SYLLABLE KHIEUKH A - 0xC4AC: 0xCE75, //HANGUL SYLLABLE KHIEUKH A KIYEOK - 0xC4AD: 0xCE78, //HANGUL SYLLABLE KHIEUKH A NIEUN - 0xC4AE: 0xCE7C, //HANGUL SYLLABLE KHIEUKH A RIEUL - 0xC4AF: 0xCE84, //HANGUL SYLLABLE KHIEUKH A MIEUM - 0xC4B0: 0xCE85, //HANGUL SYLLABLE KHIEUKH A PIEUP - 0xC4B1: 0xCE87, //HANGUL SYLLABLE KHIEUKH A SIOS - 0xC4B2: 0xCE89, //HANGUL SYLLABLE KHIEUKH A IEUNG - 0xC4B3: 0xCE90, //HANGUL SYLLABLE KHIEUKH AE - 0xC4B4: 0xCE91, //HANGUL SYLLABLE KHIEUKH AE KIYEOK - 0xC4B5: 0xCE94, //HANGUL SYLLABLE KHIEUKH AE NIEUN - 0xC4B6: 0xCE98, //HANGUL SYLLABLE KHIEUKH AE RIEUL - 0xC4B7: 0xCEA0, //HANGUL SYLLABLE KHIEUKH AE MIEUM - 0xC4B8: 0xCEA1, //HANGUL SYLLABLE KHIEUKH AE PIEUP - 0xC4B9: 0xCEA3, //HANGUL SYLLABLE KHIEUKH AE SIOS - 0xC4BA: 0xCEA4, //HANGUL SYLLABLE KHIEUKH AE SSANGSIOS - 0xC4BB: 0xCEA5, //HANGUL SYLLABLE KHIEUKH AE IEUNG - 0xC4BC: 0xCEAC, //HANGUL SYLLABLE KHIEUKH YA - 0xC4BD: 0xCEAD, //HANGUL SYLLABLE KHIEUKH YA KIYEOK - 0xC4BE: 0xCEC1, //HANGUL SYLLABLE KHIEUKH YA IEUNG - 0xC4BF: 0xCEE4, //HANGUL SYLLABLE KHIEUKH EO - 0xC4C0: 0xCEE5, //HANGUL SYLLABLE KHIEUKH EO KIYEOK - 0xC4C1: 0xCEE8, //HANGUL SYLLABLE KHIEUKH EO NIEUN - 0xC4C2: 0xCEEB, //HANGUL SYLLABLE KHIEUKH EO TIKEUT - 0xC4C3: 0xCEEC, //HANGUL SYLLABLE KHIEUKH EO RIEUL - 0xC4C4: 0xCEF4, //HANGUL SYLLABLE KHIEUKH EO MIEUM - 0xC4C5: 0xCEF5, //HANGUL SYLLABLE KHIEUKH EO PIEUP - 0xC4C6: 0xCEF7, //HANGUL SYLLABLE KHIEUKH EO SIOS - 0xC4C7: 0xCEF8, //HANGUL SYLLABLE KHIEUKH EO SSANGSIOS - 0xC4C8: 0xCEF9, //HANGUL SYLLABLE KHIEUKH EO IEUNG - 0xC4C9: 0xCF00, //HANGUL SYLLABLE KHIEUKH E - 0xC4CA: 0xCF01, //HANGUL SYLLABLE KHIEUKH E KIYEOK - 0xC4CB: 0xCF04, //HANGUL SYLLABLE KHIEUKH E NIEUN - 0xC4CC: 0xCF08, //HANGUL SYLLABLE KHIEUKH E RIEUL - 0xC4CD: 0xCF10, //HANGUL SYLLABLE KHIEUKH E MIEUM - 0xC4CE: 0xCF11, //HANGUL SYLLABLE KHIEUKH E PIEUP - 0xC4CF: 0xCF13, //HANGUL SYLLABLE KHIEUKH E SIOS - 0xC4D0: 0xCF15, //HANGUL SYLLABLE KHIEUKH E IEUNG - 0xC4D1: 0xCF1C, //HANGUL SYLLABLE KHIEUKH YEO - 0xC4D2: 0xCF20, //HANGUL SYLLABLE KHIEUKH YEO NIEUN - 0xC4D3: 0xCF24, //HANGUL SYLLABLE KHIEUKH YEO RIEUL - 0xC4D4: 0xCF2C, //HANGUL SYLLABLE KHIEUKH YEO MIEUM - 0xC4D5: 0xCF2D, //HANGUL SYLLABLE KHIEUKH YEO PIEUP - 0xC4D6: 0xCF2F, //HANGUL SYLLABLE KHIEUKH YEO SIOS - 0xC4D7: 0xCF30, //HANGUL SYLLABLE KHIEUKH YEO SSANGSIOS - 0xC4D8: 0xCF31, //HANGUL SYLLABLE KHIEUKH YEO IEUNG - 0xC4D9: 0xCF38, //HANGUL SYLLABLE KHIEUKH YE - 0xC4DA: 0xCF54, //HANGUL SYLLABLE KHIEUKH O - 0xC4DB: 0xCF55, //HANGUL SYLLABLE KHIEUKH O KIYEOK - 0xC4DC: 0xCF58, //HANGUL SYLLABLE KHIEUKH O NIEUN - 0xC4DD: 0xCF5C, //HANGUL SYLLABLE KHIEUKH O RIEUL - 0xC4DE: 0xCF64, //HANGUL SYLLABLE KHIEUKH O MIEUM - 0xC4DF: 0xCF65, //HANGUL SYLLABLE KHIEUKH O PIEUP - 0xC4E0: 0xCF67, //HANGUL SYLLABLE KHIEUKH O SIOS - 0xC4E1: 0xCF69, //HANGUL SYLLABLE KHIEUKH O IEUNG - 0xC4E2: 0xCF70, //HANGUL SYLLABLE KHIEUKH WA - 0xC4E3: 0xCF71, //HANGUL SYLLABLE KHIEUKH WA KIYEOK - 0xC4E4: 0xCF74, //HANGUL SYLLABLE KHIEUKH WA NIEUN - 0xC4E5: 0xCF78, //HANGUL SYLLABLE KHIEUKH WA RIEUL - 0xC4E6: 0xCF80, //HANGUL SYLLABLE KHIEUKH WA MIEUM - 0xC4E7: 0xCF85, //HANGUL SYLLABLE KHIEUKH WA IEUNG - 0xC4E8: 0xCF8C, //HANGUL SYLLABLE KHIEUKH WAE - 0xC4E9: 0xCFA1, //HANGUL SYLLABLE KHIEUKH WAE IEUNG - 0xC4EA: 0xCFA8, //HANGUL SYLLABLE KHIEUKH OE - 0xC4EB: 0xCFB0, //HANGUL SYLLABLE KHIEUKH OE RIEUL - 0xC4EC: 0xCFC4, //HANGUL SYLLABLE KHIEUKH YO - 0xC4ED: 0xCFE0, //HANGUL SYLLABLE KHIEUKH U - 0xC4EE: 0xCFE1, //HANGUL SYLLABLE KHIEUKH U KIYEOK - 0xC4EF: 0xCFE4, //HANGUL SYLLABLE KHIEUKH U NIEUN - 0xC4F0: 0xCFE8, //HANGUL SYLLABLE KHIEUKH U RIEUL - 0xC4F1: 0xCFF0, //HANGUL SYLLABLE KHIEUKH U MIEUM - 0xC4F2: 0xCFF1, //HANGUL SYLLABLE KHIEUKH U PIEUP - 0xC4F3: 0xCFF3, //HANGUL SYLLABLE KHIEUKH U SIOS - 0xC4F4: 0xCFF5, //HANGUL SYLLABLE KHIEUKH U IEUNG - 0xC4F5: 0xCFFC, //HANGUL SYLLABLE KHIEUKH WEO - 0xC4F6: 0xD000, //HANGUL SYLLABLE KHIEUKH WEO NIEUN - 0xC4F7: 0xD004, //HANGUL SYLLABLE KHIEUKH WEO RIEUL - 0xC4F8: 0xD011, //HANGUL SYLLABLE KHIEUKH WEO IEUNG - 0xC4F9: 0xD018, //HANGUL SYLLABLE KHIEUKH WE - 0xC4FA: 0xD02D, //HANGUL SYLLABLE KHIEUKH WE IEUNG - 0xC4FB: 0xD034, //HANGUL SYLLABLE KHIEUKH WI - 0xC4FC: 0xD035, //HANGUL SYLLABLE KHIEUKH WI KIYEOK - 0xC4FD: 0xD038, //HANGUL SYLLABLE KHIEUKH WI NIEUN - 0xC4FE: 0xD03C, //HANGUL SYLLABLE KHIEUKH WI RIEUL - 0xC541: 0xD715, //HANGUL SYLLABLE HIEUH WE THIEUTH - 0xC542: 0xD716, //HANGUL SYLLABLE HIEUH WE PHIEUPH - 0xC543: 0xD717, //HANGUL SYLLABLE HIEUH WE HIEUH - 0xC544: 0xD71A, //HANGUL SYLLABLE HIEUH WI SSANGKIYEOK - 0xC545: 0xD71B, //HANGUL SYLLABLE HIEUH WI KIYEOKSIOS - 0xC546: 0xD71D, //HANGUL SYLLABLE HIEUH WI NIEUNCIEUC - 0xC547: 0xD71E, //HANGUL SYLLABLE HIEUH WI NIEUNHIEUH - 0xC548: 0xD71F, //HANGUL SYLLABLE HIEUH WI TIKEUT - 0xC549: 0xD721, //HANGUL SYLLABLE HIEUH WI RIEULKIYEOK - 0xC54A: 0xD722, //HANGUL SYLLABLE HIEUH WI RIEULMIEUM - 0xC54B: 0xD723, //HANGUL SYLLABLE HIEUH WI RIEULPIEUP - 0xC54C: 0xD724, //HANGUL SYLLABLE HIEUH WI RIEULSIOS - 0xC54D: 0xD725, //HANGUL SYLLABLE HIEUH WI RIEULTHIEUTH - 0xC54E: 0xD726, //HANGUL SYLLABLE HIEUH WI RIEULPHIEUPH - 0xC54F: 0xD727, //HANGUL SYLLABLE HIEUH WI RIEULHIEUH - 0xC550: 0xD72A, //HANGUL SYLLABLE HIEUH WI PIEUPSIOS - 0xC551: 0xD72C, //HANGUL SYLLABLE HIEUH WI SSANGSIOS - 0xC552: 0xD72E, //HANGUL SYLLABLE HIEUH WI CIEUC - 0xC553: 0xD72F, //HANGUL SYLLABLE HIEUH WI CHIEUCH - 0xC554: 0xD730, //HANGUL SYLLABLE HIEUH WI KHIEUKH - 0xC555: 0xD731, //HANGUL SYLLABLE HIEUH WI THIEUTH - 0xC556: 0xD732, //HANGUL SYLLABLE HIEUH WI PHIEUPH - 0xC557: 0xD733, //HANGUL SYLLABLE HIEUH WI HIEUH - 0xC558: 0xD736, //HANGUL SYLLABLE HIEUH YU SSANGKIYEOK - 0xC559: 0xD737, //HANGUL SYLLABLE HIEUH YU KIYEOKSIOS - 0xC55A: 0xD739, //HANGUL SYLLABLE HIEUH YU NIEUNCIEUC - 0xC561: 0xD73A, //HANGUL SYLLABLE HIEUH YU NIEUNHIEUH - 0xC562: 0xD73B, //HANGUL SYLLABLE HIEUH YU TIKEUT - 0xC563: 0xD73D, //HANGUL SYLLABLE HIEUH YU RIEULKIYEOK - 0xC564: 0xD73E, //HANGUL SYLLABLE HIEUH YU RIEULMIEUM - 0xC565: 0xD73F, //HANGUL SYLLABLE HIEUH YU RIEULPIEUP - 0xC566: 0xD740, //HANGUL SYLLABLE HIEUH YU RIEULSIOS - 0xC567: 0xD741, //HANGUL SYLLABLE HIEUH YU RIEULTHIEUTH - 0xC568: 0xD742, //HANGUL SYLLABLE HIEUH YU RIEULPHIEUPH - 0xC569: 0xD743, //HANGUL SYLLABLE HIEUH YU RIEULHIEUH - 0xC56A: 0xD745, //HANGUL SYLLABLE HIEUH YU PIEUP - 0xC56B: 0xD746, //HANGUL SYLLABLE HIEUH YU PIEUPSIOS - 0xC56C: 0xD748, //HANGUL SYLLABLE HIEUH YU SSANGSIOS - 0xC56D: 0xD74A, //HANGUL SYLLABLE HIEUH YU CIEUC - 0xC56E: 0xD74B, //HANGUL SYLLABLE HIEUH YU CHIEUCH - 0xC56F: 0xD74C, //HANGUL SYLLABLE HIEUH YU KHIEUKH - 0xC570: 0xD74D, //HANGUL SYLLABLE HIEUH YU THIEUTH - 0xC571: 0xD74E, //HANGUL SYLLABLE HIEUH YU PHIEUPH - 0xC572: 0xD74F, //HANGUL SYLLABLE HIEUH YU HIEUH - 0xC573: 0xD752, //HANGUL SYLLABLE HIEUH EU SSANGKIYEOK - 0xC574: 0xD753, //HANGUL SYLLABLE HIEUH EU KIYEOKSIOS - 0xC575: 0xD755, //HANGUL SYLLABLE HIEUH EU NIEUNCIEUC - 0xC576: 0xD75A, //HANGUL SYLLABLE HIEUH EU RIEULMIEUM - 0xC577: 0xD75B, //HANGUL SYLLABLE HIEUH EU RIEULPIEUP - 0xC578: 0xD75C, //HANGUL SYLLABLE HIEUH EU RIEULSIOS - 0xC579: 0xD75D, //HANGUL SYLLABLE HIEUH EU RIEULTHIEUTH - 0xC57A: 0xD75E, //HANGUL SYLLABLE HIEUH EU RIEULPHIEUPH - 0xC581: 0xD75F, //HANGUL SYLLABLE HIEUH EU RIEULHIEUH - 0xC582: 0xD762, //HANGUL SYLLABLE HIEUH EU PIEUPSIOS - 0xC583: 0xD764, //HANGUL SYLLABLE HIEUH EU SSANGSIOS - 0xC584: 0xD766, //HANGUL SYLLABLE HIEUH EU CIEUC - 0xC585: 0xD767, //HANGUL SYLLABLE HIEUH EU CHIEUCH - 0xC586: 0xD768, //HANGUL SYLLABLE HIEUH EU KHIEUKH - 0xC587: 0xD76A, //HANGUL SYLLABLE HIEUH EU PHIEUPH - 0xC588: 0xD76B, //HANGUL SYLLABLE HIEUH EU HIEUH - 0xC589: 0xD76D, //HANGUL SYLLABLE HIEUH YI KIYEOK - 0xC58A: 0xD76E, //HANGUL SYLLABLE HIEUH YI SSANGKIYEOK - 0xC58B: 0xD76F, //HANGUL SYLLABLE HIEUH YI KIYEOKSIOS - 0xC58C: 0xD771, //HANGUL SYLLABLE HIEUH YI NIEUNCIEUC - 0xC58D: 0xD772, //HANGUL SYLLABLE HIEUH YI NIEUNHIEUH - 0xC58E: 0xD773, //HANGUL SYLLABLE HIEUH YI TIKEUT - 0xC58F: 0xD775, //HANGUL SYLLABLE HIEUH YI RIEULKIYEOK - 0xC590: 0xD776, //HANGUL SYLLABLE HIEUH YI RIEULMIEUM - 0xC591: 0xD777, //HANGUL SYLLABLE HIEUH YI RIEULPIEUP - 0xC592: 0xD778, //HANGUL SYLLABLE HIEUH YI RIEULSIOS - 0xC593: 0xD779, //HANGUL SYLLABLE HIEUH YI RIEULTHIEUTH - 0xC594: 0xD77A, //HANGUL SYLLABLE HIEUH YI RIEULPHIEUPH - 0xC595: 0xD77B, //HANGUL SYLLABLE HIEUH YI RIEULHIEUH - 0xC596: 0xD77E, //HANGUL SYLLABLE HIEUH YI PIEUPSIOS - 0xC597: 0xD77F, //HANGUL SYLLABLE HIEUH YI SIOS - 0xC598: 0xD780, //HANGUL SYLLABLE HIEUH YI SSANGSIOS - 0xC599: 0xD782, //HANGUL SYLLABLE HIEUH YI CIEUC - 0xC59A: 0xD783, //HANGUL SYLLABLE HIEUH YI CHIEUCH - 0xC59B: 0xD784, //HANGUL SYLLABLE HIEUH YI KHIEUKH - 0xC59C: 0xD785, //HANGUL SYLLABLE HIEUH YI THIEUTH - 0xC59D: 0xD786, //HANGUL SYLLABLE HIEUH YI PHIEUPH - 0xC59E: 0xD787, //HANGUL SYLLABLE HIEUH YI HIEUH - 0xC59F: 0xD78A, //HANGUL SYLLABLE HIEUH I SSANGKIYEOK - 0xC5A0: 0xD78B, //HANGUL SYLLABLE HIEUH I KIYEOKSIOS - 0xC5A1: 0xD044, //HANGUL SYLLABLE KHIEUKH WI MIEUM - 0xC5A2: 0xD045, //HANGUL SYLLABLE KHIEUKH WI PIEUP - 0xC5A3: 0xD047, //HANGUL SYLLABLE KHIEUKH WI SIOS - 0xC5A4: 0xD049, //HANGUL SYLLABLE KHIEUKH WI IEUNG - 0xC5A5: 0xD050, //HANGUL SYLLABLE KHIEUKH YU - 0xC5A6: 0xD054, //HANGUL SYLLABLE KHIEUKH YU NIEUN - 0xC5A7: 0xD058, //HANGUL SYLLABLE KHIEUKH YU RIEUL - 0xC5A8: 0xD060, //HANGUL SYLLABLE KHIEUKH YU MIEUM - 0xC5A9: 0xD06C, //HANGUL SYLLABLE KHIEUKH EU - 0xC5AA: 0xD06D, //HANGUL SYLLABLE KHIEUKH EU KIYEOK - 0xC5AB: 0xD070, //HANGUL SYLLABLE KHIEUKH EU NIEUN - 0xC5AC: 0xD074, //HANGUL SYLLABLE KHIEUKH EU RIEUL - 0xC5AD: 0xD07C, //HANGUL SYLLABLE KHIEUKH EU MIEUM - 0xC5AE: 0xD07D, //HANGUL SYLLABLE KHIEUKH EU PIEUP - 0xC5AF: 0xD081, //HANGUL SYLLABLE KHIEUKH EU IEUNG - 0xC5B0: 0xD0A4, //HANGUL SYLLABLE KHIEUKH I - 0xC5B1: 0xD0A5, //HANGUL SYLLABLE KHIEUKH I KIYEOK - 0xC5B2: 0xD0A8, //HANGUL SYLLABLE KHIEUKH I NIEUN - 0xC5B3: 0xD0AC, //HANGUL SYLLABLE KHIEUKH I RIEUL - 0xC5B4: 0xD0B4, //HANGUL SYLLABLE KHIEUKH I MIEUM - 0xC5B5: 0xD0B5, //HANGUL SYLLABLE KHIEUKH I PIEUP - 0xC5B6: 0xD0B7, //HANGUL SYLLABLE KHIEUKH I SIOS - 0xC5B7: 0xD0B9, //HANGUL SYLLABLE KHIEUKH I IEUNG - 0xC5B8: 0xD0C0, //HANGUL SYLLABLE THIEUTH A - 0xC5B9: 0xD0C1, //HANGUL SYLLABLE THIEUTH A KIYEOK - 0xC5BA: 0xD0C4, //HANGUL SYLLABLE THIEUTH A NIEUN - 0xC5BB: 0xD0C8, //HANGUL SYLLABLE THIEUTH A RIEUL - 0xC5BC: 0xD0C9, //HANGUL SYLLABLE THIEUTH A RIEULKIYEOK - 0xC5BD: 0xD0D0, //HANGUL SYLLABLE THIEUTH A MIEUM - 0xC5BE: 0xD0D1, //HANGUL SYLLABLE THIEUTH A PIEUP - 0xC5BF: 0xD0D3, //HANGUL SYLLABLE THIEUTH A SIOS - 0xC5C0: 0xD0D4, //HANGUL SYLLABLE THIEUTH A SSANGSIOS - 0xC5C1: 0xD0D5, //HANGUL SYLLABLE THIEUTH A IEUNG - 0xC5C2: 0xD0DC, //HANGUL SYLLABLE THIEUTH AE - 0xC5C3: 0xD0DD, //HANGUL SYLLABLE THIEUTH AE KIYEOK - 0xC5C4: 0xD0E0, //HANGUL SYLLABLE THIEUTH AE NIEUN - 0xC5C5: 0xD0E4, //HANGUL SYLLABLE THIEUTH AE RIEUL - 0xC5C6: 0xD0EC, //HANGUL SYLLABLE THIEUTH AE MIEUM - 0xC5C7: 0xD0ED, //HANGUL SYLLABLE THIEUTH AE PIEUP - 0xC5C8: 0xD0EF, //HANGUL SYLLABLE THIEUTH AE SIOS - 0xC5C9: 0xD0F0, //HANGUL SYLLABLE THIEUTH AE SSANGSIOS - 0xC5CA: 0xD0F1, //HANGUL SYLLABLE THIEUTH AE IEUNG - 0xC5CB: 0xD0F8, //HANGUL SYLLABLE THIEUTH YA - 0xC5CC: 0xD10D, //HANGUL SYLLABLE THIEUTH YA IEUNG - 0xC5CD: 0xD130, //HANGUL SYLLABLE THIEUTH EO - 0xC5CE: 0xD131, //HANGUL SYLLABLE THIEUTH EO KIYEOK - 0xC5CF: 0xD134, //HANGUL SYLLABLE THIEUTH EO NIEUN - 0xC5D0: 0xD138, //HANGUL SYLLABLE THIEUTH EO RIEUL - 0xC5D1: 0xD13A, //HANGUL SYLLABLE THIEUTH EO RIEULMIEUM - 0xC5D2: 0xD140, //HANGUL SYLLABLE THIEUTH EO MIEUM - 0xC5D3: 0xD141, //HANGUL SYLLABLE THIEUTH EO PIEUP - 0xC5D4: 0xD143, //HANGUL SYLLABLE THIEUTH EO SIOS - 0xC5D5: 0xD144, //HANGUL SYLLABLE THIEUTH EO SSANGSIOS - 0xC5D6: 0xD145, //HANGUL SYLLABLE THIEUTH EO IEUNG - 0xC5D7: 0xD14C, //HANGUL SYLLABLE THIEUTH E - 0xC5D8: 0xD14D, //HANGUL SYLLABLE THIEUTH E KIYEOK - 0xC5D9: 0xD150, //HANGUL SYLLABLE THIEUTH E NIEUN - 0xC5DA: 0xD154, //HANGUL SYLLABLE THIEUTH E RIEUL - 0xC5DB: 0xD15C, //HANGUL SYLLABLE THIEUTH E MIEUM - 0xC5DC: 0xD15D, //HANGUL SYLLABLE THIEUTH E PIEUP - 0xC5DD: 0xD15F, //HANGUL SYLLABLE THIEUTH E SIOS - 0xC5DE: 0xD161, //HANGUL SYLLABLE THIEUTH E IEUNG - 0xC5DF: 0xD168, //HANGUL SYLLABLE THIEUTH YEO - 0xC5E0: 0xD16C, //HANGUL SYLLABLE THIEUTH YEO NIEUN - 0xC5E1: 0xD17C, //HANGUL SYLLABLE THIEUTH YEO SSANGSIOS - 0xC5E2: 0xD184, //HANGUL SYLLABLE THIEUTH YE - 0xC5E3: 0xD188, //HANGUL SYLLABLE THIEUTH YE NIEUN - 0xC5E4: 0xD1A0, //HANGUL SYLLABLE THIEUTH O - 0xC5E5: 0xD1A1, //HANGUL SYLLABLE THIEUTH O KIYEOK - 0xC5E6: 0xD1A4, //HANGUL SYLLABLE THIEUTH O NIEUN - 0xC5E7: 0xD1A8, //HANGUL SYLLABLE THIEUTH O RIEUL - 0xC5E8: 0xD1B0, //HANGUL SYLLABLE THIEUTH O MIEUM - 0xC5E9: 0xD1B1, //HANGUL SYLLABLE THIEUTH O PIEUP - 0xC5EA: 0xD1B3, //HANGUL SYLLABLE THIEUTH O SIOS - 0xC5EB: 0xD1B5, //HANGUL SYLLABLE THIEUTH O IEUNG - 0xC5EC: 0xD1BA, //HANGUL SYLLABLE THIEUTH O PHIEUPH - 0xC5ED: 0xD1BC, //HANGUL SYLLABLE THIEUTH WA - 0xC5EE: 0xD1C0, //HANGUL SYLLABLE THIEUTH WA NIEUN - 0xC5EF: 0xD1D8, //HANGUL SYLLABLE THIEUTH WAE - 0xC5F0: 0xD1F4, //HANGUL SYLLABLE THIEUTH OE - 0xC5F1: 0xD1F8, //HANGUL SYLLABLE THIEUTH OE NIEUN - 0xC5F2: 0xD207, //HANGUL SYLLABLE THIEUTH OE SIOS - 0xC5F3: 0xD209, //HANGUL SYLLABLE THIEUTH OE IEUNG - 0xC5F4: 0xD210, //HANGUL SYLLABLE THIEUTH YO - 0xC5F5: 0xD22C, //HANGUL SYLLABLE THIEUTH U - 0xC5F6: 0xD22D, //HANGUL SYLLABLE THIEUTH U KIYEOK - 0xC5F7: 0xD230, //HANGUL SYLLABLE THIEUTH U NIEUN - 0xC5F8: 0xD234, //HANGUL SYLLABLE THIEUTH U RIEUL - 0xC5F9: 0xD23C, //HANGUL SYLLABLE THIEUTH U MIEUM - 0xC5FA: 0xD23D, //HANGUL SYLLABLE THIEUTH U PIEUP - 0xC5FB: 0xD23F, //HANGUL SYLLABLE THIEUTH U SIOS - 0xC5FC: 0xD241, //HANGUL SYLLABLE THIEUTH U IEUNG - 0xC5FD: 0xD248, //HANGUL SYLLABLE THIEUTH WEO - 0xC5FE: 0xD25C, //HANGUL SYLLABLE THIEUTH WEO SSANGSIOS - 0xC641: 0xD78D, //HANGUL SYLLABLE HIEUH I NIEUNCIEUC - 0xC642: 0xD78E, //HANGUL SYLLABLE HIEUH I NIEUNHIEUH - 0xC643: 0xD78F, //HANGUL SYLLABLE HIEUH I TIKEUT - 0xC644: 0xD791, //HANGUL SYLLABLE HIEUH I RIEULKIYEOK - 0xC645: 0xD792, //HANGUL SYLLABLE HIEUH I RIEULMIEUM - 0xC646: 0xD793, //HANGUL SYLLABLE HIEUH I RIEULPIEUP - 0xC647: 0xD794, //HANGUL SYLLABLE HIEUH I RIEULSIOS - 0xC648: 0xD795, //HANGUL SYLLABLE HIEUH I RIEULTHIEUTH - 0xC649: 0xD796, //HANGUL SYLLABLE HIEUH I RIEULPHIEUPH - 0xC64A: 0xD797, //HANGUL SYLLABLE HIEUH I RIEULHIEUH - 0xC64B: 0xD79A, //HANGUL SYLLABLE HIEUH I PIEUPSIOS - 0xC64C: 0xD79C, //HANGUL SYLLABLE HIEUH I SSANGSIOS - 0xC64D: 0xD79E, //HANGUL SYLLABLE HIEUH I CIEUC - 0xC64E: 0xD79F, //HANGUL SYLLABLE HIEUH I CHIEUCH - 0xC64F: 0xD7A0, //HANGUL SYLLABLE HIEUH I KHIEUKH - 0xC650: 0xD7A1, //HANGUL SYLLABLE HIEUH I THIEUTH - 0xC651: 0xD7A2, //HANGUL SYLLABLE HIEUH I PHIEUPH - 0xC652: 0xD7A3, //HANGUL SYLLABLE HIEUH I HIEUH - 0xC6A1: 0xD264, //HANGUL SYLLABLE THIEUTH WE - 0xC6A2: 0xD280, //HANGUL SYLLABLE THIEUTH WI - 0xC6A3: 0xD281, //HANGUL SYLLABLE THIEUTH WI KIYEOK - 0xC6A4: 0xD284, //HANGUL SYLLABLE THIEUTH WI NIEUN - 0xC6A5: 0xD288, //HANGUL SYLLABLE THIEUTH WI RIEUL - 0xC6A6: 0xD290, //HANGUL SYLLABLE THIEUTH WI MIEUM - 0xC6A7: 0xD291, //HANGUL SYLLABLE THIEUTH WI PIEUP - 0xC6A8: 0xD295, //HANGUL SYLLABLE THIEUTH WI IEUNG - 0xC6A9: 0xD29C, //HANGUL SYLLABLE THIEUTH YU - 0xC6AA: 0xD2A0, //HANGUL SYLLABLE THIEUTH YU NIEUN - 0xC6AB: 0xD2A4, //HANGUL SYLLABLE THIEUTH YU RIEUL - 0xC6AC: 0xD2AC, //HANGUL SYLLABLE THIEUTH YU MIEUM - 0xC6AD: 0xD2B1, //HANGUL SYLLABLE THIEUTH YU IEUNG - 0xC6AE: 0xD2B8, //HANGUL SYLLABLE THIEUTH EU - 0xC6AF: 0xD2B9, //HANGUL SYLLABLE THIEUTH EU KIYEOK - 0xC6B0: 0xD2BC, //HANGUL SYLLABLE THIEUTH EU NIEUN - 0xC6B1: 0xD2BF, //HANGUL SYLLABLE THIEUTH EU TIKEUT - 0xC6B2: 0xD2C0, //HANGUL SYLLABLE THIEUTH EU RIEUL - 0xC6B3: 0xD2C2, //HANGUL SYLLABLE THIEUTH EU RIEULMIEUM - 0xC6B4: 0xD2C8, //HANGUL SYLLABLE THIEUTH EU MIEUM - 0xC6B5: 0xD2C9, //HANGUL SYLLABLE THIEUTH EU PIEUP - 0xC6B6: 0xD2CB, //HANGUL SYLLABLE THIEUTH EU SIOS - 0xC6B7: 0xD2D4, //HANGUL SYLLABLE THIEUTH YI - 0xC6B8: 0xD2D8, //HANGUL SYLLABLE THIEUTH YI NIEUN - 0xC6B9: 0xD2DC, //HANGUL SYLLABLE THIEUTH YI RIEUL - 0xC6BA: 0xD2E4, //HANGUL SYLLABLE THIEUTH YI MIEUM - 0xC6BB: 0xD2E5, //HANGUL SYLLABLE THIEUTH YI PIEUP - 0xC6BC: 0xD2F0, //HANGUL SYLLABLE THIEUTH I - 0xC6BD: 0xD2F1, //HANGUL SYLLABLE THIEUTH I KIYEOK - 0xC6BE: 0xD2F4, //HANGUL SYLLABLE THIEUTH I NIEUN - 0xC6BF: 0xD2F8, //HANGUL SYLLABLE THIEUTH I RIEUL - 0xC6C0: 0xD300, //HANGUL SYLLABLE THIEUTH I MIEUM - 0xC6C1: 0xD301, //HANGUL SYLLABLE THIEUTH I PIEUP - 0xC6C2: 0xD303, //HANGUL SYLLABLE THIEUTH I SIOS - 0xC6C3: 0xD305, //HANGUL SYLLABLE THIEUTH I IEUNG - 0xC6C4: 0xD30C, //HANGUL SYLLABLE PHIEUPH A - 0xC6C5: 0xD30D, //HANGUL SYLLABLE PHIEUPH A KIYEOK - 0xC6C6: 0xD30E, //HANGUL SYLLABLE PHIEUPH A SSANGKIYEOK - 0xC6C7: 0xD310, //HANGUL SYLLABLE PHIEUPH A NIEUN - 0xC6C8: 0xD314, //HANGUL SYLLABLE PHIEUPH A RIEUL - 0xC6C9: 0xD316, //HANGUL SYLLABLE PHIEUPH A RIEULMIEUM - 0xC6CA: 0xD31C, //HANGUL SYLLABLE PHIEUPH A MIEUM - 0xC6CB: 0xD31D, //HANGUL SYLLABLE PHIEUPH A PIEUP - 0xC6CC: 0xD31F, //HANGUL SYLLABLE PHIEUPH A SIOS - 0xC6CD: 0xD320, //HANGUL SYLLABLE PHIEUPH A SSANGSIOS - 0xC6CE: 0xD321, //HANGUL SYLLABLE PHIEUPH A IEUNG - 0xC6CF: 0xD325, //HANGUL SYLLABLE PHIEUPH A THIEUTH - 0xC6D0: 0xD328, //HANGUL SYLLABLE PHIEUPH AE - 0xC6D1: 0xD329, //HANGUL SYLLABLE PHIEUPH AE KIYEOK - 0xC6D2: 0xD32C, //HANGUL SYLLABLE PHIEUPH AE NIEUN - 0xC6D3: 0xD330, //HANGUL SYLLABLE PHIEUPH AE RIEUL - 0xC6D4: 0xD338, //HANGUL SYLLABLE PHIEUPH AE MIEUM - 0xC6D5: 0xD339, //HANGUL SYLLABLE PHIEUPH AE PIEUP - 0xC6D6: 0xD33B, //HANGUL SYLLABLE PHIEUPH AE SIOS - 0xC6D7: 0xD33C, //HANGUL SYLLABLE PHIEUPH AE SSANGSIOS - 0xC6D8: 0xD33D, //HANGUL SYLLABLE PHIEUPH AE IEUNG - 0xC6D9: 0xD344, //HANGUL SYLLABLE PHIEUPH YA - 0xC6DA: 0xD345, //HANGUL SYLLABLE PHIEUPH YA KIYEOK - 0xC6DB: 0xD37C, //HANGUL SYLLABLE PHIEUPH EO - 0xC6DC: 0xD37D, //HANGUL SYLLABLE PHIEUPH EO KIYEOK - 0xC6DD: 0xD380, //HANGUL SYLLABLE PHIEUPH EO NIEUN - 0xC6DE: 0xD384, //HANGUL SYLLABLE PHIEUPH EO RIEUL - 0xC6DF: 0xD38C, //HANGUL SYLLABLE PHIEUPH EO MIEUM - 0xC6E0: 0xD38D, //HANGUL SYLLABLE PHIEUPH EO PIEUP - 0xC6E1: 0xD38F, //HANGUL SYLLABLE PHIEUPH EO SIOS - 0xC6E2: 0xD390, //HANGUL SYLLABLE PHIEUPH EO SSANGSIOS - 0xC6E3: 0xD391, //HANGUL SYLLABLE PHIEUPH EO IEUNG - 0xC6E4: 0xD398, //HANGUL SYLLABLE PHIEUPH E - 0xC6E5: 0xD399, //HANGUL SYLLABLE PHIEUPH E KIYEOK - 0xC6E6: 0xD39C, //HANGUL SYLLABLE PHIEUPH E NIEUN - 0xC6E7: 0xD3A0, //HANGUL SYLLABLE PHIEUPH E RIEUL - 0xC6E8: 0xD3A8, //HANGUL SYLLABLE PHIEUPH E MIEUM - 0xC6E9: 0xD3A9, //HANGUL SYLLABLE PHIEUPH E PIEUP - 0xC6EA: 0xD3AB, //HANGUL SYLLABLE PHIEUPH E SIOS - 0xC6EB: 0xD3AD, //HANGUL SYLLABLE PHIEUPH E IEUNG - 0xC6EC: 0xD3B4, //HANGUL SYLLABLE PHIEUPH YEO - 0xC6ED: 0xD3B8, //HANGUL SYLLABLE PHIEUPH YEO NIEUN - 0xC6EE: 0xD3BC, //HANGUL SYLLABLE PHIEUPH YEO RIEUL - 0xC6EF: 0xD3C4, //HANGUL SYLLABLE PHIEUPH YEO MIEUM - 0xC6F0: 0xD3C5, //HANGUL SYLLABLE PHIEUPH YEO PIEUP - 0xC6F1: 0xD3C8, //HANGUL SYLLABLE PHIEUPH YEO SSANGSIOS - 0xC6F2: 0xD3C9, //HANGUL SYLLABLE PHIEUPH YEO IEUNG - 0xC6F3: 0xD3D0, //HANGUL SYLLABLE PHIEUPH YE - 0xC6F4: 0xD3D8, //HANGUL SYLLABLE PHIEUPH YE RIEUL - 0xC6F5: 0xD3E1, //HANGUL SYLLABLE PHIEUPH YE PIEUP - 0xC6F6: 0xD3E3, //HANGUL SYLLABLE PHIEUPH YE SIOS - 0xC6F7: 0xD3EC, //HANGUL SYLLABLE PHIEUPH O - 0xC6F8: 0xD3ED, //HANGUL SYLLABLE PHIEUPH O KIYEOK - 0xC6F9: 0xD3F0, //HANGUL SYLLABLE PHIEUPH O NIEUN - 0xC6FA: 0xD3F4, //HANGUL SYLLABLE PHIEUPH O RIEUL - 0xC6FB: 0xD3FC, //HANGUL SYLLABLE PHIEUPH O MIEUM - 0xC6FC: 0xD3FD, //HANGUL SYLLABLE PHIEUPH O PIEUP - 0xC6FD: 0xD3FF, //HANGUL SYLLABLE PHIEUPH O SIOS - 0xC6FE: 0xD401, //HANGUL SYLLABLE PHIEUPH O IEUNG - 0xC7A1: 0xD408, //HANGUL SYLLABLE PHIEUPH WA - 0xC7A2: 0xD41D, //HANGUL SYLLABLE PHIEUPH WA IEUNG - 0xC7A3: 0xD440, //HANGUL SYLLABLE PHIEUPH OE - 0xC7A4: 0xD444, //HANGUL SYLLABLE PHIEUPH OE NIEUN - 0xC7A5: 0xD45C, //HANGUL SYLLABLE PHIEUPH YO - 0xC7A6: 0xD460, //HANGUL SYLLABLE PHIEUPH YO NIEUN - 0xC7A7: 0xD464, //HANGUL SYLLABLE PHIEUPH YO RIEUL - 0xC7A8: 0xD46D, //HANGUL SYLLABLE PHIEUPH YO PIEUP - 0xC7A9: 0xD46F, //HANGUL SYLLABLE PHIEUPH YO SIOS - 0xC7AA: 0xD478, //HANGUL SYLLABLE PHIEUPH U - 0xC7AB: 0xD479, //HANGUL SYLLABLE PHIEUPH U KIYEOK - 0xC7AC: 0xD47C, //HANGUL SYLLABLE PHIEUPH U NIEUN - 0xC7AD: 0xD47F, //HANGUL SYLLABLE PHIEUPH U TIKEUT - 0xC7AE: 0xD480, //HANGUL SYLLABLE PHIEUPH U RIEUL - 0xC7AF: 0xD482, //HANGUL SYLLABLE PHIEUPH U RIEULMIEUM - 0xC7B0: 0xD488, //HANGUL SYLLABLE PHIEUPH U MIEUM - 0xC7B1: 0xD489, //HANGUL SYLLABLE PHIEUPH U PIEUP - 0xC7B2: 0xD48B, //HANGUL SYLLABLE PHIEUPH U SIOS - 0xC7B3: 0xD48D, //HANGUL SYLLABLE PHIEUPH U IEUNG - 0xC7B4: 0xD494, //HANGUL SYLLABLE PHIEUPH WEO - 0xC7B5: 0xD4A9, //HANGUL SYLLABLE PHIEUPH WEO IEUNG - 0xC7B6: 0xD4CC, //HANGUL SYLLABLE PHIEUPH WI - 0xC7B7: 0xD4D0, //HANGUL SYLLABLE PHIEUPH WI NIEUN - 0xC7B8: 0xD4D4, //HANGUL SYLLABLE PHIEUPH WI RIEUL - 0xC7B9: 0xD4DC, //HANGUL SYLLABLE PHIEUPH WI MIEUM - 0xC7BA: 0xD4DF, //HANGUL SYLLABLE PHIEUPH WI SIOS - 0xC7BB: 0xD4E8, //HANGUL SYLLABLE PHIEUPH YU - 0xC7BC: 0xD4EC, //HANGUL SYLLABLE PHIEUPH YU NIEUN - 0xC7BD: 0xD4F0, //HANGUL SYLLABLE PHIEUPH YU RIEUL - 0xC7BE: 0xD4F8, //HANGUL SYLLABLE PHIEUPH YU MIEUM - 0xC7BF: 0xD4FB, //HANGUL SYLLABLE PHIEUPH YU SIOS - 0xC7C0: 0xD4FD, //HANGUL SYLLABLE PHIEUPH YU IEUNG - 0xC7C1: 0xD504, //HANGUL SYLLABLE PHIEUPH EU - 0xC7C2: 0xD508, //HANGUL SYLLABLE PHIEUPH EU NIEUN - 0xC7C3: 0xD50C, //HANGUL SYLLABLE PHIEUPH EU RIEUL - 0xC7C4: 0xD514, //HANGUL SYLLABLE PHIEUPH EU MIEUM - 0xC7C5: 0xD515, //HANGUL SYLLABLE PHIEUPH EU PIEUP - 0xC7C6: 0xD517, //HANGUL SYLLABLE PHIEUPH EU SIOS - 0xC7C7: 0xD53C, //HANGUL SYLLABLE PHIEUPH I - 0xC7C8: 0xD53D, //HANGUL SYLLABLE PHIEUPH I KIYEOK - 0xC7C9: 0xD540, //HANGUL SYLLABLE PHIEUPH I NIEUN - 0xC7CA: 0xD544, //HANGUL SYLLABLE PHIEUPH I RIEUL - 0xC7CB: 0xD54C, //HANGUL SYLLABLE PHIEUPH I MIEUM - 0xC7CC: 0xD54D, //HANGUL SYLLABLE PHIEUPH I PIEUP - 0xC7CD: 0xD54F, //HANGUL SYLLABLE PHIEUPH I SIOS - 0xC7CE: 0xD551, //HANGUL SYLLABLE PHIEUPH I IEUNG - 0xC7CF: 0xD558, //HANGUL SYLLABLE HIEUH A - 0xC7D0: 0xD559, //HANGUL SYLLABLE HIEUH A KIYEOK - 0xC7D1: 0xD55C, //HANGUL SYLLABLE HIEUH A NIEUN - 0xC7D2: 0xD560, //HANGUL SYLLABLE HIEUH A RIEUL - 0xC7D3: 0xD565, //HANGUL SYLLABLE HIEUH A RIEULTHIEUTH - 0xC7D4: 0xD568, //HANGUL SYLLABLE HIEUH A MIEUM - 0xC7D5: 0xD569, //HANGUL SYLLABLE HIEUH A PIEUP - 0xC7D6: 0xD56B, //HANGUL SYLLABLE HIEUH A SIOS - 0xC7D7: 0xD56D, //HANGUL SYLLABLE HIEUH A IEUNG - 0xC7D8: 0xD574, //HANGUL SYLLABLE HIEUH AE - 0xC7D9: 0xD575, //HANGUL SYLLABLE HIEUH AE KIYEOK - 0xC7DA: 0xD578, //HANGUL SYLLABLE HIEUH AE NIEUN - 0xC7DB: 0xD57C, //HANGUL SYLLABLE HIEUH AE RIEUL - 0xC7DC: 0xD584, //HANGUL SYLLABLE HIEUH AE MIEUM - 0xC7DD: 0xD585, //HANGUL SYLLABLE HIEUH AE PIEUP - 0xC7DE: 0xD587, //HANGUL SYLLABLE HIEUH AE SIOS - 0xC7DF: 0xD588, //HANGUL SYLLABLE HIEUH AE SSANGSIOS - 0xC7E0: 0xD589, //HANGUL SYLLABLE HIEUH AE IEUNG - 0xC7E1: 0xD590, //HANGUL SYLLABLE HIEUH YA - 0xC7E2: 0xD5A5, //HANGUL SYLLABLE HIEUH YA IEUNG - 0xC7E3: 0xD5C8, //HANGUL SYLLABLE HIEUH EO - 0xC7E4: 0xD5C9, //HANGUL SYLLABLE HIEUH EO KIYEOK - 0xC7E5: 0xD5CC, //HANGUL SYLLABLE HIEUH EO NIEUN - 0xC7E6: 0xD5D0, //HANGUL SYLLABLE HIEUH EO RIEUL - 0xC7E7: 0xD5D2, //HANGUL SYLLABLE HIEUH EO RIEULMIEUM - 0xC7E8: 0xD5D8, //HANGUL SYLLABLE HIEUH EO MIEUM - 0xC7E9: 0xD5D9, //HANGUL SYLLABLE HIEUH EO PIEUP - 0xC7EA: 0xD5DB, //HANGUL SYLLABLE HIEUH EO SIOS - 0xC7EB: 0xD5DD, //HANGUL SYLLABLE HIEUH EO IEUNG - 0xC7EC: 0xD5E4, //HANGUL SYLLABLE HIEUH E - 0xC7ED: 0xD5E5, //HANGUL SYLLABLE HIEUH E KIYEOK - 0xC7EE: 0xD5E8, //HANGUL SYLLABLE HIEUH E NIEUN - 0xC7EF: 0xD5EC, //HANGUL SYLLABLE HIEUH E RIEUL - 0xC7F0: 0xD5F4, //HANGUL SYLLABLE HIEUH E MIEUM - 0xC7F1: 0xD5F5, //HANGUL SYLLABLE HIEUH E PIEUP - 0xC7F2: 0xD5F7, //HANGUL SYLLABLE HIEUH E SIOS - 0xC7F3: 0xD5F9, //HANGUL SYLLABLE HIEUH E IEUNG - 0xC7F4: 0xD600, //HANGUL SYLLABLE HIEUH YEO - 0xC7F5: 0xD601, //HANGUL SYLLABLE HIEUH YEO KIYEOK - 0xC7F6: 0xD604, //HANGUL SYLLABLE HIEUH YEO NIEUN - 0xC7F7: 0xD608, //HANGUL SYLLABLE HIEUH YEO RIEUL - 0xC7F8: 0xD610, //HANGUL SYLLABLE HIEUH YEO MIEUM - 0xC7F9: 0xD611, //HANGUL SYLLABLE HIEUH YEO PIEUP - 0xC7FA: 0xD613, //HANGUL SYLLABLE HIEUH YEO SIOS - 0xC7FB: 0xD614, //HANGUL SYLLABLE HIEUH YEO SSANGSIOS - 0xC7FC: 0xD615, //HANGUL SYLLABLE HIEUH YEO IEUNG - 0xC7FD: 0xD61C, //HANGUL SYLLABLE HIEUH YE - 0xC7FE: 0xD620, //HANGUL SYLLABLE HIEUH YE NIEUN - 0xC8A1: 0xD624, //HANGUL SYLLABLE HIEUH YE RIEUL - 0xC8A2: 0xD62D, //HANGUL SYLLABLE HIEUH YE PIEUP - 0xC8A3: 0xD638, //HANGUL SYLLABLE HIEUH O - 0xC8A4: 0xD639, //HANGUL SYLLABLE HIEUH O KIYEOK - 0xC8A5: 0xD63C, //HANGUL SYLLABLE HIEUH O NIEUN - 0xC8A6: 0xD640, //HANGUL SYLLABLE HIEUH O RIEUL - 0xC8A7: 0xD645, //HANGUL SYLLABLE HIEUH O RIEULTHIEUTH - 0xC8A8: 0xD648, //HANGUL SYLLABLE HIEUH O MIEUM - 0xC8A9: 0xD649, //HANGUL SYLLABLE HIEUH O PIEUP - 0xC8AA: 0xD64B, //HANGUL SYLLABLE HIEUH O SIOS - 0xC8AB: 0xD64D, //HANGUL SYLLABLE HIEUH O IEUNG - 0xC8AC: 0xD651, //HANGUL SYLLABLE HIEUH O THIEUTH - 0xC8AD: 0xD654, //HANGUL SYLLABLE HIEUH WA - 0xC8AE: 0xD655, //HANGUL SYLLABLE HIEUH WA KIYEOK - 0xC8AF: 0xD658, //HANGUL SYLLABLE HIEUH WA NIEUN - 0xC8B0: 0xD65C, //HANGUL SYLLABLE HIEUH WA RIEUL - 0xC8B1: 0xD667, //HANGUL SYLLABLE HIEUH WA SIOS - 0xC8B2: 0xD669, //HANGUL SYLLABLE HIEUH WA IEUNG - 0xC8B3: 0xD670, //HANGUL SYLLABLE HIEUH WAE - 0xC8B4: 0xD671, //HANGUL SYLLABLE HIEUH WAE KIYEOK - 0xC8B5: 0xD674, //HANGUL SYLLABLE HIEUH WAE NIEUN - 0xC8B6: 0xD683, //HANGUL SYLLABLE HIEUH WAE SIOS - 0xC8B7: 0xD685, //HANGUL SYLLABLE HIEUH WAE IEUNG - 0xC8B8: 0xD68C, //HANGUL SYLLABLE HIEUH OE - 0xC8B9: 0xD68D, //HANGUL SYLLABLE HIEUH OE KIYEOK - 0xC8BA: 0xD690, //HANGUL SYLLABLE HIEUH OE NIEUN - 0xC8BB: 0xD694, //HANGUL SYLLABLE HIEUH OE RIEUL - 0xC8BC: 0xD69D, //HANGUL SYLLABLE HIEUH OE PIEUP - 0xC8BD: 0xD69F, //HANGUL SYLLABLE HIEUH OE SIOS - 0xC8BE: 0xD6A1, //HANGUL SYLLABLE HIEUH OE IEUNG - 0xC8BF: 0xD6A8, //HANGUL SYLLABLE HIEUH YO - 0xC8C0: 0xD6AC, //HANGUL SYLLABLE HIEUH YO NIEUN - 0xC8C1: 0xD6B0, //HANGUL SYLLABLE HIEUH YO RIEUL - 0xC8C2: 0xD6B9, //HANGUL SYLLABLE HIEUH YO PIEUP - 0xC8C3: 0xD6BB, //HANGUL SYLLABLE HIEUH YO SIOS - 0xC8C4: 0xD6C4, //HANGUL SYLLABLE HIEUH U - 0xC8C5: 0xD6C5, //HANGUL SYLLABLE HIEUH U KIYEOK - 0xC8C6: 0xD6C8, //HANGUL SYLLABLE HIEUH U NIEUN - 0xC8C7: 0xD6CC, //HANGUL SYLLABLE HIEUH U RIEUL - 0xC8C8: 0xD6D1, //HANGUL SYLLABLE HIEUH U RIEULTHIEUTH - 0xC8C9: 0xD6D4, //HANGUL SYLLABLE HIEUH U MIEUM - 0xC8CA: 0xD6D7, //HANGUL SYLLABLE HIEUH U SIOS - 0xC8CB: 0xD6D9, //HANGUL SYLLABLE HIEUH U IEUNG - 0xC8CC: 0xD6E0, //HANGUL SYLLABLE HIEUH WEO - 0xC8CD: 0xD6E4, //HANGUL SYLLABLE HIEUH WEO NIEUN - 0xC8CE: 0xD6E8, //HANGUL SYLLABLE HIEUH WEO RIEUL - 0xC8CF: 0xD6F0, //HANGUL SYLLABLE HIEUH WEO MIEUM - 0xC8D0: 0xD6F5, //HANGUL SYLLABLE HIEUH WEO IEUNG - 0xC8D1: 0xD6FC, //HANGUL SYLLABLE HIEUH WE - 0xC8D2: 0xD6FD, //HANGUL SYLLABLE HIEUH WE KIYEOK - 0xC8D3: 0xD700, //HANGUL SYLLABLE HIEUH WE NIEUN - 0xC8D4: 0xD704, //HANGUL SYLLABLE HIEUH WE RIEUL - 0xC8D5: 0xD711, //HANGUL SYLLABLE HIEUH WE IEUNG - 0xC8D6: 0xD718, //HANGUL SYLLABLE HIEUH WI - 0xC8D7: 0xD719, //HANGUL SYLLABLE HIEUH WI KIYEOK - 0xC8D8: 0xD71C, //HANGUL SYLLABLE HIEUH WI NIEUN - 0xC8D9: 0xD720, //HANGUL SYLLABLE HIEUH WI RIEUL - 0xC8DA: 0xD728, //HANGUL SYLLABLE HIEUH WI MIEUM - 0xC8DB: 0xD729, //HANGUL SYLLABLE HIEUH WI PIEUP - 0xC8DC: 0xD72B, //HANGUL SYLLABLE HIEUH WI SIOS - 0xC8DD: 0xD72D, //HANGUL SYLLABLE HIEUH WI IEUNG - 0xC8DE: 0xD734, //HANGUL SYLLABLE HIEUH YU - 0xC8DF: 0xD735, //HANGUL SYLLABLE HIEUH YU KIYEOK - 0xC8E0: 0xD738, //HANGUL SYLLABLE HIEUH YU NIEUN - 0xC8E1: 0xD73C, //HANGUL SYLLABLE HIEUH YU RIEUL - 0xC8E2: 0xD744, //HANGUL SYLLABLE HIEUH YU MIEUM - 0xC8E3: 0xD747, //HANGUL SYLLABLE HIEUH YU SIOS - 0xC8E4: 0xD749, //HANGUL SYLLABLE HIEUH YU IEUNG - 0xC8E5: 0xD750, //HANGUL SYLLABLE HIEUH EU - 0xC8E6: 0xD751, //HANGUL SYLLABLE HIEUH EU KIYEOK - 0xC8E7: 0xD754, //HANGUL SYLLABLE HIEUH EU NIEUN - 0xC8E8: 0xD756, //HANGUL SYLLABLE HIEUH EU NIEUNHIEUH - 0xC8E9: 0xD757, //HANGUL SYLLABLE HIEUH EU TIKEUT - 0xC8EA: 0xD758, //HANGUL SYLLABLE HIEUH EU RIEUL - 0xC8EB: 0xD759, //HANGUL SYLLABLE HIEUH EU RIEULKIYEOK - 0xC8EC: 0xD760, //HANGUL SYLLABLE HIEUH EU MIEUM - 0xC8ED: 0xD761, //HANGUL SYLLABLE HIEUH EU PIEUP - 0xC8EE: 0xD763, //HANGUL SYLLABLE HIEUH EU SIOS - 0xC8EF: 0xD765, //HANGUL SYLLABLE HIEUH EU IEUNG - 0xC8F0: 0xD769, //HANGUL SYLLABLE HIEUH EU THIEUTH - 0xC8F1: 0xD76C, //HANGUL SYLLABLE HIEUH YI - 0xC8F2: 0xD770, //HANGUL SYLLABLE HIEUH YI NIEUN - 0xC8F3: 0xD774, //HANGUL SYLLABLE HIEUH YI RIEUL - 0xC8F4: 0xD77C, //HANGUL SYLLABLE HIEUH YI MIEUM - 0xC8F5: 0xD77D, //HANGUL SYLLABLE HIEUH YI PIEUP - 0xC8F6: 0xD781, //HANGUL SYLLABLE HIEUH YI IEUNG - 0xC8F7: 0xD788, //HANGUL SYLLABLE HIEUH I - 0xC8F8: 0xD789, //HANGUL SYLLABLE HIEUH I KIYEOK - 0xC8F9: 0xD78C, //HANGUL SYLLABLE HIEUH I NIEUN - 0xC8FA: 0xD790, //HANGUL SYLLABLE HIEUH I RIEUL - 0xC8FB: 0xD798, //HANGUL SYLLABLE HIEUH I MIEUM - 0xC8FC: 0xD799, //HANGUL SYLLABLE HIEUH I PIEUP - 0xC8FD: 0xD79B, //HANGUL SYLLABLE HIEUH I SIOS - 0xC8FE: 0xD79D, //HANGUL SYLLABLE HIEUH I IEUNG - 0xCAA1: 0x4F3D, //CJK UNIFIED IDEOGRAPH - 0xCAA2: 0x4F73, //CJK UNIFIED IDEOGRAPH - 0xCAA3: 0x5047, //CJK UNIFIED IDEOGRAPH - 0xCAA4: 0x50F9, //CJK UNIFIED IDEOGRAPH - 0xCAA5: 0x52A0, //CJK UNIFIED IDEOGRAPH - 0xCAA6: 0x53EF, //CJK UNIFIED IDEOGRAPH - 0xCAA7: 0x5475, //CJK UNIFIED IDEOGRAPH - 0xCAA8: 0x54E5, //CJK UNIFIED IDEOGRAPH - 0xCAA9: 0x5609, //CJK UNIFIED IDEOGRAPH - 0xCAAA: 0x5AC1, //CJK UNIFIED IDEOGRAPH - 0xCAAB: 0x5BB6, //CJK UNIFIED IDEOGRAPH - 0xCAAC: 0x6687, //CJK UNIFIED IDEOGRAPH - 0xCAAD: 0x67B6, //CJK UNIFIED IDEOGRAPH - 0xCAAE: 0x67B7, //CJK UNIFIED IDEOGRAPH - 0xCAAF: 0x67EF, //CJK UNIFIED IDEOGRAPH - 0xCAB0: 0x6B4C, //CJK UNIFIED IDEOGRAPH - 0xCAB1: 0x73C2, //CJK UNIFIED IDEOGRAPH - 0xCAB2: 0x75C2, //CJK UNIFIED IDEOGRAPH - 0xCAB3: 0x7A3C, //CJK UNIFIED IDEOGRAPH - 0xCAB4: 0x82DB, //CJK UNIFIED IDEOGRAPH - 0xCAB5: 0x8304, //CJK UNIFIED IDEOGRAPH - 0xCAB6: 0x8857, //CJK UNIFIED IDEOGRAPH - 0xCAB7: 0x8888, //CJK UNIFIED IDEOGRAPH - 0xCAB8: 0x8A36, //CJK UNIFIED IDEOGRAPH - 0xCAB9: 0x8CC8, //CJK UNIFIED IDEOGRAPH - 0xCABA: 0x8DCF, //CJK UNIFIED IDEOGRAPH - 0xCABB: 0x8EFB, //CJK UNIFIED IDEOGRAPH - 0xCABC: 0x8FE6, //CJK UNIFIED IDEOGRAPH - 0xCABD: 0x99D5, //CJK UNIFIED IDEOGRAPH - 0xCABE: 0x523B, //CJK UNIFIED IDEOGRAPH - 0xCABF: 0x5374, //CJK UNIFIED IDEOGRAPH - 0xCAC0: 0x5404, //CJK UNIFIED IDEOGRAPH - 0xCAC1: 0x606A, //CJK UNIFIED IDEOGRAPH - 0xCAC2: 0x6164, //CJK UNIFIED IDEOGRAPH - 0xCAC3: 0x6BBC, //CJK UNIFIED IDEOGRAPH - 0xCAC4: 0x73CF, //CJK UNIFIED IDEOGRAPH - 0xCAC5: 0x811A, //CJK UNIFIED IDEOGRAPH - 0xCAC6: 0x89BA, //CJK UNIFIED IDEOGRAPH - 0xCAC7: 0x89D2, //CJK UNIFIED IDEOGRAPH - 0xCAC8: 0x95A3, //CJK UNIFIED IDEOGRAPH - 0xCAC9: 0x4F83, //CJK UNIFIED IDEOGRAPH - 0xCACA: 0x520A, //CJK UNIFIED IDEOGRAPH - 0xCACB: 0x58BE, //CJK UNIFIED IDEOGRAPH - 0xCACC: 0x5978, //CJK UNIFIED IDEOGRAPH - 0xCACD: 0x59E6, //CJK UNIFIED IDEOGRAPH - 0xCACE: 0x5E72, //CJK UNIFIED IDEOGRAPH - 0xCACF: 0x5E79, //CJK UNIFIED IDEOGRAPH - 0xCAD0: 0x61C7, //CJK UNIFIED IDEOGRAPH - 0xCAD1: 0x63C0, //CJK UNIFIED IDEOGRAPH - 0xCAD2: 0x6746, //CJK UNIFIED IDEOGRAPH - 0xCAD3: 0x67EC, //CJK UNIFIED IDEOGRAPH - 0xCAD4: 0x687F, //CJK UNIFIED IDEOGRAPH - 0xCAD5: 0x6F97, //CJK UNIFIED IDEOGRAPH - 0xCAD6: 0x764E, //CJK UNIFIED IDEOGRAPH - 0xCAD7: 0x770B, //CJK UNIFIED IDEOGRAPH - 0xCAD8: 0x78F5, //CJK UNIFIED IDEOGRAPH - 0xCAD9: 0x7A08, //CJK UNIFIED IDEOGRAPH - 0xCADA: 0x7AFF, //CJK UNIFIED IDEOGRAPH - 0xCADB: 0x7C21, //CJK UNIFIED IDEOGRAPH - 0xCADC: 0x809D, //CJK UNIFIED IDEOGRAPH - 0xCADD: 0x826E, //CJK UNIFIED IDEOGRAPH - 0xCADE: 0x8271, //CJK UNIFIED IDEOGRAPH - 0xCADF: 0x8AEB, //CJK UNIFIED IDEOGRAPH - 0xCAE0: 0x9593, //CJK UNIFIED IDEOGRAPH - 0xCAE1: 0x4E6B, //CJK UNIFIED IDEOGRAPH - 0xCAE2: 0x559D, //CJK UNIFIED IDEOGRAPH - 0xCAE3: 0x66F7, //CJK UNIFIED IDEOGRAPH - 0xCAE4: 0x6E34, //CJK UNIFIED IDEOGRAPH - 0xCAE5: 0x78A3, //CJK UNIFIED IDEOGRAPH - 0xCAE6: 0x7AED, //CJK UNIFIED IDEOGRAPH - 0xCAE7: 0x845B, //CJK UNIFIED IDEOGRAPH - 0xCAE8: 0x8910, //CJK UNIFIED IDEOGRAPH - 0xCAE9: 0x874E, //CJK UNIFIED IDEOGRAPH - 0xCAEA: 0x97A8, //CJK UNIFIED IDEOGRAPH - 0xCAEB: 0x52D8, //CJK UNIFIED IDEOGRAPH - 0xCAEC: 0x574E, //CJK UNIFIED IDEOGRAPH - 0xCAED: 0x582A, //CJK UNIFIED IDEOGRAPH - 0xCAEE: 0x5D4C, //CJK UNIFIED IDEOGRAPH - 0xCAEF: 0x611F, //CJK UNIFIED IDEOGRAPH - 0xCAF0: 0x61BE, //CJK UNIFIED IDEOGRAPH - 0xCAF1: 0x6221, //CJK UNIFIED IDEOGRAPH - 0xCAF2: 0x6562, //CJK UNIFIED IDEOGRAPH - 0xCAF3: 0x67D1, //CJK UNIFIED IDEOGRAPH - 0xCAF4: 0x6A44, //CJK UNIFIED IDEOGRAPH - 0xCAF5: 0x6E1B, //CJK UNIFIED IDEOGRAPH - 0xCAF6: 0x7518, //CJK UNIFIED IDEOGRAPH - 0xCAF7: 0x75B3, //CJK UNIFIED IDEOGRAPH - 0xCAF8: 0x76E3, //CJK UNIFIED IDEOGRAPH - 0xCAF9: 0x77B0, //CJK UNIFIED IDEOGRAPH - 0xCAFA: 0x7D3A, //CJK UNIFIED IDEOGRAPH - 0xCAFB: 0x90AF, //CJK UNIFIED IDEOGRAPH - 0xCAFC: 0x9451, //CJK UNIFIED IDEOGRAPH - 0xCAFD: 0x9452, //CJK UNIFIED IDEOGRAPH - 0xCAFE: 0x9F95, //CJK UNIFIED IDEOGRAPH - 0xCBA1: 0x5323, //CJK UNIFIED IDEOGRAPH - 0xCBA2: 0x5CAC, //CJK UNIFIED IDEOGRAPH - 0xCBA3: 0x7532, //CJK UNIFIED IDEOGRAPH - 0xCBA4: 0x80DB, //CJK UNIFIED IDEOGRAPH - 0xCBA5: 0x9240, //CJK UNIFIED IDEOGRAPH - 0xCBA6: 0x9598, //CJK UNIFIED IDEOGRAPH - 0xCBA7: 0x525B, //CJK UNIFIED IDEOGRAPH - 0xCBA8: 0x5808, //CJK UNIFIED IDEOGRAPH - 0xCBA9: 0x59DC, //CJK UNIFIED IDEOGRAPH - 0xCBAA: 0x5CA1, //CJK UNIFIED IDEOGRAPH - 0xCBAB: 0x5D17, //CJK UNIFIED IDEOGRAPH - 0xCBAC: 0x5EB7, //CJK UNIFIED IDEOGRAPH - 0xCBAD: 0x5F3A, //CJK UNIFIED IDEOGRAPH - 0xCBAE: 0x5F4A, //CJK UNIFIED IDEOGRAPH - 0xCBAF: 0x6177, //CJK UNIFIED IDEOGRAPH - 0xCBB0: 0x6C5F, //CJK UNIFIED IDEOGRAPH - 0xCBB1: 0x757A, //CJK UNIFIED IDEOGRAPH - 0xCBB2: 0x7586, //CJK UNIFIED IDEOGRAPH - 0xCBB3: 0x7CE0, //CJK UNIFIED IDEOGRAPH - 0xCBB4: 0x7D73, //CJK UNIFIED IDEOGRAPH - 0xCBB5: 0x7DB1, //CJK UNIFIED IDEOGRAPH - 0xCBB6: 0x7F8C, //CJK UNIFIED IDEOGRAPH - 0xCBB7: 0x8154, //CJK UNIFIED IDEOGRAPH - 0xCBB8: 0x8221, //CJK UNIFIED IDEOGRAPH - 0xCBB9: 0x8591, //CJK UNIFIED IDEOGRAPH - 0xCBBA: 0x8941, //CJK UNIFIED IDEOGRAPH - 0xCBBB: 0x8B1B, //CJK UNIFIED IDEOGRAPH - 0xCBBC: 0x92FC, //CJK UNIFIED IDEOGRAPH - 0xCBBD: 0x964D, //CJK UNIFIED IDEOGRAPH - 0xCBBE: 0x9C47, //CJK UNIFIED IDEOGRAPH - 0xCBBF: 0x4ECB, //CJK UNIFIED IDEOGRAPH - 0xCBC0: 0x4EF7, //CJK UNIFIED IDEOGRAPH - 0xCBC1: 0x500B, //CJK UNIFIED IDEOGRAPH - 0xCBC2: 0x51F1, //CJK UNIFIED IDEOGRAPH - 0xCBC3: 0x584F, //CJK UNIFIED IDEOGRAPH - 0xCBC4: 0x6137, //CJK UNIFIED IDEOGRAPH - 0xCBC5: 0x613E, //CJK UNIFIED IDEOGRAPH - 0xCBC6: 0x6168, //CJK UNIFIED IDEOGRAPH - 0xCBC7: 0x6539, //CJK UNIFIED IDEOGRAPH - 0xCBC8: 0x69EA, //CJK UNIFIED IDEOGRAPH - 0xCBC9: 0x6F11, //CJK UNIFIED IDEOGRAPH - 0xCBCA: 0x75A5, //CJK UNIFIED IDEOGRAPH - 0xCBCB: 0x7686, //CJK UNIFIED IDEOGRAPH - 0xCBCC: 0x76D6, //CJK UNIFIED IDEOGRAPH - 0xCBCD: 0x7B87, //CJK UNIFIED IDEOGRAPH - 0xCBCE: 0x82A5, //CJK UNIFIED IDEOGRAPH - 0xCBCF: 0x84CB, //CJK UNIFIED IDEOGRAPH - 0xCBD0: 0xF900, //CJK COMPATIBILITY IDEOGRAPH - 0xCBD1: 0x93A7, //CJK UNIFIED IDEOGRAPH - 0xCBD2: 0x958B, //CJK UNIFIED IDEOGRAPH - 0xCBD3: 0x5580, //CJK UNIFIED IDEOGRAPH - 0xCBD4: 0x5BA2, //CJK UNIFIED IDEOGRAPH - 0xCBD5: 0x5751, //CJK UNIFIED IDEOGRAPH - 0xCBD6: 0xF901, //CJK COMPATIBILITY IDEOGRAPH - 0xCBD7: 0x7CB3, //CJK UNIFIED IDEOGRAPH - 0xCBD8: 0x7FB9, //CJK UNIFIED IDEOGRAPH - 0xCBD9: 0x91B5, //CJK UNIFIED IDEOGRAPH - 0xCBDA: 0x5028, //CJK UNIFIED IDEOGRAPH - 0xCBDB: 0x53BB, //CJK UNIFIED IDEOGRAPH - 0xCBDC: 0x5C45, //CJK UNIFIED IDEOGRAPH - 0xCBDD: 0x5DE8, //CJK UNIFIED IDEOGRAPH - 0xCBDE: 0x62D2, //CJK UNIFIED IDEOGRAPH - 0xCBDF: 0x636E, //CJK UNIFIED IDEOGRAPH - 0xCBE0: 0x64DA, //CJK UNIFIED IDEOGRAPH - 0xCBE1: 0x64E7, //CJK UNIFIED IDEOGRAPH - 0xCBE2: 0x6E20, //CJK UNIFIED IDEOGRAPH - 0xCBE3: 0x70AC, //CJK UNIFIED IDEOGRAPH - 0xCBE4: 0x795B, //CJK UNIFIED IDEOGRAPH - 0xCBE5: 0x8DDD, //CJK UNIFIED IDEOGRAPH - 0xCBE6: 0x8E1E, //CJK UNIFIED IDEOGRAPH - 0xCBE7: 0xF902, //CJK COMPATIBILITY IDEOGRAPH - 0xCBE8: 0x907D, //CJK UNIFIED IDEOGRAPH - 0xCBE9: 0x9245, //CJK UNIFIED IDEOGRAPH - 0xCBEA: 0x92F8, //CJK UNIFIED IDEOGRAPH - 0xCBEB: 0x4E7E, //CJK UNIFIED IDEOGRAPH - 0xCBEC: 0x4EF6, //CJK UNIFIED IDEOGRAPH - 0xCBED: 0x5065, //CJK UNIFIED IDEOGRAPH - 0xCBEE: 0x5DFE, //CJK UNIFIED IDEOGRAPH - 0xCBEF: 0x5EFA, //CJK UNIFIED IDEOGRAPH - 0xCBF0: 0x6106, //CJK UNIFIED IDEOGRAPH - 0xCBF1: 0x6957, //CJK UNIFIED IDEOGRAPH - 0xCBF2: 0x8171, //CJK UNIFIED IDEOGRAPH - 0xCBF3: 0x8654, //CJK UNIFIED IDEOGRAPH - 0xCBF4: 0x8E47, //CJK UNIFIED IDEOGRAPH - 0xCBF5: 0x9375, //CJK UNIFIED IDEOGRAPH - 0xCBF6: 0x9A2B, //CJK UNIFIED IDEOGRAPH - 0xCBF7: 0x4E5E, //CJK UNIFIED IDEOGRAPH - 0xCBF8: 0x5091, //CJK UNIFIED IDEOGRAPH - 0xCBF9: 0x6770, //CJK UNIFIED IDEOGRAPH - 0xCBFA: 0x6840, //CJK UNIFIED IDEOGRAPH - 0xCBFB: 0x5109, //CJK UNIFIED IDEOGRAPH - 0xCBFC: 0x528D, //CJK UNIFIED IDEOGRAPH - 0xCBFD: 0x5292, //CJK UNIFIED IDEOGRAPH - 0xCBFE: 0x6AA2, //CJK UNIFIED IDEOGRAPH - 0xCCA1: 0x77BC, //CJK UNIFIED IDEOGRAPH - 0xCCA2: 0x9210, //CJK UNIFIED IDEOGRAPH - 0xCCA3: 0x9ED4, //CJK UNIFIED IDEOGRAPH - 0xCCA4: 0x52AB, //CJK UNIFIED IDEOGRAPH - 0xCCA5: 0x602F, //CJK UNIFIED IDEOGRAPH - 0xCCA6: 0x8FF2, //CJK UNIFIED IDEOGRAPH - 0xCCA7: 0x5048, //CJK UNIFIED IDEOGRAPH - 0xCCA8: 0x61A9, //CJK UNIFIED IDEOGRAPH - 0xCCA9: 0x63ED, //CJK UNIFIED IDEOGRAPH - 0xCCAA: 0x64CA, //CJK UNIFIED IDEOGRAPH - 0xCCAB: 0x683C, //CJK UNIFIED IDEOGRAPH - 0xCCAC: 0x6A84, //CJK UNIFIED IDEOGRAPH - 0xCCAD: 0x6FC0, //CJK UNIFIED IDEOGRAPH - 0xCCAE: 0x8188, //CJK UNIFIED IDEOGRAPH - 0xCCAF: 0x89A1, //CJK UNIFIED IDEOGRAPH - 0xCCB0: 0x9694, //CJK UNIFIED IDEOGRAPH - 0xCCB1: 0x5805, //CJK UNIFIED IDEOGRAPH - 0xCCB2: 0x727D, //CJK UNIFIED IDEOGRAPH - 0xCCB3: 0x72AC, //CJK UNIFIED IDEOGRAPH - 0xCCB4: 0x7504, //CJK UNIFIED IDEOGRAPH - 0xCCB5: 0x7D79, //CJK UNIFIED IDEOGRAPH - 0xCCB6: 0x7E6D, //CJK UNIFIED IDEOGRAPH - 0xCCB7: 0x80A9, //CJK UNIFIED IDEOGRAPH - 0xCCB8: 0x898B, //CJK UNIFIED IDEOGRAPH - 0xCCB9: 0x8B74, //CJK UNIFIED IDEOGRAPH - 0xCCBA: 0x9063, //CJK UNIFIED IDEOGRAPH - 0xCCBB: 0x9D51, //CJK UNIFIED IDEOGRAPH - 0xCCBC: 0x6289, //CJK UNIFIED IDEOGRAPH - 0xCCBD: 0x6C7A, //CJK UNIFIED IDEOGRAPH - 0xCCBE: 0x6F54, //CJK UNIFIED IDEOGRAPH - 0xCCBF: 0x7D50, //CJK UNIFIED IDEOGRAPH - 0xCCC0: 0x7F3A, //CJK UNIFIED IDEOGRAPH - 0xCCC1: 0x8A23, //CJK UNIFIED IDEOGRAPH - 0xCCC2: 0x517C, //CJK UNIFIED IDEOGRAPH - 0xCCC3: 0x614A, //CJK UNIFIED IDEOGRAPH - 0xCCC4: 0x7B9D, //CJK UNIFIED IDEOGRAPH - 0xCCC5: 0x8B19, //CJK UNIFIED IDEOGRAPH - 0xCCC6: 0x9257, //CJK UNIFIED IDEOGRAPH - 0xCCC7: 0x938C, //CJK UNIFIED IDEOGRAPH - 0xCCC8: 0x4EAC, //CJK UNIFIED IDEOGRAPH - 0xCCC9: 0x4FD3, //CJK UNIFIED IDEOGRAPH - 0xCCCA: 0x501E, //CJK UNIFIED IDEOGRAPH - 0xCCCB: 0x50BE, //CJK UNIFIED IDEOGRAPH - 0xCCCC: 0x5106, //CJK UNIFIED IDEOGRAPH - 0xCCCD: 0x52C1, //CJK UNIFIED IDEOGRAPH - 0xCCCE: 0x52CD, //CJK UNIFIED IDEOGRAPH - 0xCCCF: 0x537F, //CJK UNIFIED IDEOGRAPH - 0xCCD0: 0x5770, //CJK UNIFIED IDEOGRAPH - 0xCCD1: 0x5883, //CJK UNIFIED IDEOGRAPH - 0xCCD2: 0x5E9A, //CJK UNIFIED IDEOGRAPH - 0xCCD3: 0x5F91, //CJK UNIFIED IDEOGRAPH - 0xCCD4: 0x6176, //CJK UNIFIED IDEOGRAPH - 0xCCD5: 0x61AC, //CJK UNIFIED IDEOGRAPH - 0xCCD6: 0x64CE, //CJK UNIFIED IDEOGRAPH - 0xCCD7: 0x656C, //CJK UNIFIED IDEOGRAPH - 0xCCD8: 0x666F, //CJK UNIFIED IDEOGRAPH - 0xCCD9: 0x66BB, //CJK UNIFIED IDEOGRAPH - 0xCCDA: 0x66F4, //CJK UNIFIED IDEOGRAPH - 0xCCDB: 0x6897, //CJK UNIFIED IDEOGRAPH - 0xCCDC: 0x6D87, //CJK UNIFIED IDEOGRAPH - 0xCCDD: 0x7085, //CJK UNIFIED IDEOGRAPH - 0xCCDE: 0x70F1, //CJK UNIFIED IDEOGRAPH - 0xCCDF: 0x749F, //CJK UNIFIED IDEOGRAPH - 0xCCE0: 0x74A5, //CJK UNIFIED IDEOGRAPH - 0xCCE1: 0x74CA, //CJK UNIFIED IDEOGRAPH - 0xCCE2: 0x75D9, //CJK UNIFIED IDEOGRAPH - 0xCCE3: 0x786C, //CJK UNIFIED IDEOGRAPH - 0xCCE4: 0x78EC, //CJK UNIFIED IDEOGRAPH - 0xCCE5: 0x7ADF, //CJK UNIFIED IDEOGRAPH - 0xCCE6: 0x7AF6, //CJK UNIFIED IDEOGRAPH - 0xCCE7: 0x7D45, //CJK UNIFIED IDEOGRAPH - 0xCCE8: 0x7D93, //CJK UNIFIED IDEOGRAPH - 0xCCE9: 0x8015, //CJK UNIFIED IDEOGRAPH - 0xCCEA: 0x803F, //CJK UNIFIED IDEOGRAPH - 0xCCEB: 0x811B, //CJK UNIFIED IDEOGRAPH - 0xCCEC: 0x8396, //CJK UNIFIED IDEOGRAPH - 0xCCED: 0x8B66, //CJK UNIFIED IDEOGRAPH - 0xCCEE: 0x8F15, //CJK UNIFIED IDEOGRAPH - 0xCCEF: 0x9015, //CJK UNIFIED IDEOGRAPH - 0xCCF0: 0x93E1, //CJK UNIFIED IDEOGRAPH - 0xCCF1: 0x9803, //CJK UNIFIED IDEOGRAPH - 0xCCF2: 0x9838, //CJK UNIFIED IDEOGRAPH - 0xCCF3: 0x9A5A, //CJK UNIFIED IDEOGRAPH - 0xCCF4: 0x9BE8, //CJK UNIFIED IDEOGRAPH - 0xCCF5: 0x4FC2, //CJK UNIFIED IDEOGRAPH - 0xCCF6: 0x5553, //CJK UNIFIED IDEOGRAPH - 0xCCF7: 0x583A, //CJK UNIFIED IDEOGRAPH - 0xCCF8: 0x5951, //CJK UNIFIED IDEOGRAPH - 0xCCF9: 0x5B63, //CJK UNIFIED IDEOGRAPH - 0xCCFA: 0x5C46, //CJK UNIFIED IDEOGRAPH - 0xCCFB: 0x60B8, //CJK UNIFIED IDEOGRAPH - 0xCCFC: 0x6212, //CJK UNIFIED IDEOGRAPH - 0xCCFD: 0x6842, //CJK UNIFIED IDEOGRAPH - 0xCCFE: 0x68B0, //CJK UNIFIED IDEOGRAPH - 0xCDA1: 0x68E8, //CJK UNIFIED IDEOGRAPH - 0xCDA2: 0x6EAA, //CJK UNIFIED IDEOGRAPH - 0xCDA3: 0x754C, //CJK UNIFIED IDEOGRAPH - 0xCDA4: 0x7678, //CJK UNIFIED IDEOGRAPH - 0xCDA5: 0x78CE, //CJK UNIFIED IDEOGRAPH - 0xCDA6: 0x7A3D, //CJK UNIFIED IDEOGRAPH - 0xCDA7: 0x7CFB, //CJK UNIFIED IDEOGRAPH - 0xCDA8: 0x7E6B, //CJK UNIFIED IDEOGRAPH - 0xCDA9: 0x7E7C, //CJK UNIFIED IDEOGRAPH - 0xCDAA: 0x8A08, //CJK UNIFIED IDEOGRAPH - 0xCDAB: 0x8AA1, //CJK UNIFIED IDEOGRAPH - 0xCDAC: 0x8C3F, //CJK UNIFIED IDEOGRAPH - 0xCDAD: 0x968E, //CJK UNIFIED IDEOGRAPH - 0xCDAE: 0x9DC4, //CJK UNIFIED IDEOGRAPH - 0xCDAF: 0x53E4, //CJK UNIFIED IDEOGRAPH - 0xCDB0: 0x53E9, //CJK UNIFIED IDEOGRAPH - 0xCDB1: 0x544A, //CJK UNIFIED IDEOGRAPH - 0xCDB2: 0x5471, //CJK UNIFIED IDEOGRAPH - 0xCDB3: 0x56FA, //CJK UNIFIED IDEOGRAPH - 0xCDB4: 0x59D1, //CJK UNIFIED IDEOGRAPH - 0xCDB5: 0x5B64, //CJK UNIFIED IDEOGRAPH - 0xCDB6: 0x5C3B, //CJK UNIFIED IDEOGRAPH - 0xCDB7: 0x5EAB, //CJK UNIFIED IDEOGRAPH - 0xCDB8: 0x62F7, //CJK UNIFIED IDEOGRAPH - 0xCDB9: 0x6537, //CJK UNIFIED IDEOGRAPH - 0xCDBA: 0x6545, //CJK UNIFIED IDEOGRAPH - 0xCDBB: 0x6572, //CJK UNIFIED IDEOGRAPH - 0xCDBC: 0x66A0, //CJK UNIFIED IDEOGRAPH - 0xCDBD: 0x67AF, //CJK UNIFIED IDEOGRAPH - 0xCDBE: 0x69C1, //CJK UNIFIED IDEOGRAPH - 0xCDBF: 0x6CBD, //CJK UNIFIED IDEOGRAPH - 0xCDC0: 0x75FC, //CJK UNIFIED IDEOGRAPH - 0xCDC1: 0x7690, //CJK UNIFIED IDEOGRAPH - 0xCDC2: 0x777E, //CJK UNIFIED IDEOGRAPH - 0xCDC3: 0x7A3F, //CJK UNIFIED IDEOGRAPH - 0xCDC4: 0x7F94, //CJK UNIFIED IDEOGRAPH - 0xCDC5: 0x8003, //CJK UNIFIED IDEOGRAPH - 0xCDC6: 0x80A1, //CJK UNIFIED IDEOGRAPH - 0xCDC7: 0x818F, //CJK UNIFIED IDEOGRAPH - 0xCDC8: 0x82E6, //CJK UNIFIED IDEOGRAPH - 0xCDC9: 0x82FD, //CJK UNIFIED IDEOGRAPH - 0xCDCA: 0x83F0, //CJK UNIFIED IDEOGRAPH - 0xCDCB: 0x85C1, //CJK UNIFIED IDEOGRAPH - 0xCDCC: 0x8831, //CJK UNIFIED IDEOGRAPH - 0xCDCD: 0x88B4, //CJK UNIFIED IDEOGRAPH - 0xCDCE: 0x8AA5, //CJK UNIFIED IDEOGRAPH - 0xCDCF: 0xF903, //CJK COMPATIBILITY IDEOGRAPH - 0xCDD0: 0x8F9C, //CJK UNIFIED IDEOGRAPH - 0xCDD1: 0x932E, //CJK UNIFIED IDEOGRAPH - 0xCDD2: 0x96C7, //CJK UNIFIED IDEOGRAPH - 0xCDD3: 0x9867, //CJK UNIFIED IDEOGRAPH - 0xCDD4: 0x9AD8, //CJK UNIFIED IDEOGRAPH - 0xCDD5: 0x9F13, //CJK UNIFIED IDEOGRAPH - 0xCDD6: 0x54ED, //CJK UNIFIED IDEOGRAPH - 0xCDD7: 0x659B, //CJK UNIFIED IDEOGRAPH - 0xCDD8: 0x66F2, //CJK UNIFIED IDEOGRAPH - 0xCDD9: 0x688F, //CJK UNIFIED IDEOGRAPH - 0xCDDA: 0x7A40, //CJK UNIFIED IDEOGRAPH - 0xCDDB: 0x8C37, //CJK UNIFIED IDEOGRAPH - 0xCDDC: 0x9D60, //CJK UNIFIED IDEOGRAPH - 0xCDDD: 0x56F0, //CJK UNIFIED IDEOGRAPH - 0xCDDE: 0x5764, //CJK UNIFIED IDEOGRAPH - 0xCDDF: 0x5D11, //CJK UNIFIED IDEOGRAPH - 0xCDE0: 0x6606, //CJK UNIFIED IDEOGRAPH - 0xCDE1: 0x68B1, //CJK UNIFIED IDEOGRAPH - 0xCDE2: 0x68CD, //CJK UNIFIED IDEOGRAPH - 0xCDE3: 0x6EFE, //CJK UNIFIED IDEOGRAPH - 0xCDE4: 0x7428, //CJK UNIFIED IDEOGRAPH - 0xCDE5: 0x889E, //CJK UNIFIED IDEOGRAPH - 0xCDE6: 0x9BE4, //CJK UNIFIED IDEOGRAPH - 0xCDE7: 0x6C68, //CJK UNIFIED IDEOGRAPH - 0xCDE8: 0xF904, //CJK COMPATIBILITY IDEOGRAPH - 0xCDE9: 0x9AA8, //CJK UNIFIED IDEOGRAPH - 0xCDEA: 0x4F9B, //CJK UNIFIED IDEOGRAPH - 0xCDEB: 0x516C, //CJK UNIFIED IDEOGRAPH - 0xCDEC: 0x5171, //CJK UNIFIED IDEOGRAPH - 0xCDED: 0x529F, //CJK UNIFIED IDEOGRAPH - 0xCDEE: 0x5B54, //CJK UNIFIED IDEOGRAPH - 0xCDEF: 0x5DE5, //CJK UNIFIED IDEOGRAPH - 0xCDF0: 0x6050, //CJK UNIFIED IDEOGRAPH - 0xCDF1: 0x606D, //CJK UNIFIED IDEOGRAPH - 0xCDF2: 0x62F1, //CJK UNIFIED IDEOGRAPH - 0xCDF3: 0x63A7, //CJK UNIFIED IDEOGRAPH - 0xCDF4: 0x653B, //CJK UNIFIED IDEOGRAPH - 0xCDF5: 0x73D9, //CJK UNIFIED IDEOGRAPH - 0xCDF6: 0x7A7A, //CJK UNIFIED IDEOGRAPH - 0xCDF7: 0x86A3, //CJK UNIFIED IDEOGRAPH - 0xCDF8: 0x8CA2, //CJK UNIFIED IDEOGRAPH - 0xCDF9: 0x978F, //CJK UNIFIED IDEOGRAPH - 0xCDFA: 0x4E32, //CJK UNIFIED IDEOGRAPH - 0xCDFB: 0x5BE1, //CJK UNIFIED IDEOGRAPH - 0xCDFC: 0x6208, //CJK UNIFIED IDEOGRAPH - 0xCDFD: 0x679C, //CJK UNIFIED IDEOGRAPH - 0xCDFE: 0x74DC, //CJK UNIFIED IDEOGRAPH - 0xCEA1: 0x79D1, //CJK UNIFIED IDEOGRAPH - 0xCEA2: 0x83D3, //CJK UNIFIED IDEOGRAPH - 0xCEA3: 0x8A87, //CJK UNIFIED IDEOGRAPH - 0xCEA4: 0x8AB2, //CJK UNIFIED IDEOGRAPH - 0xCEA5: 0x8DE8, //CJK UNIFIED IDEOGRAPH - 0xCEA6: 0x904E, //CJK UNIFIED IDEOGRAPH - 0xCEA7: 0x934B, //CJK UNIFIED IDEOGRAPH - 0xCEA8: 0x9846, //CJK UNIFIED IDEOGRAPH - 0xCEA9: 0x5ED3, //CJK UNIFIED IDEOGRAPH - 0xCEAA: 0x69E8, //CJK UNIFIED IDEOGRAPH - 0xCEAB: 0x85FF, //CJK UNIFIED IDEOGRAPH - 0xCEAC: 0x90ED, //CJK UNIFIED IDEOGRAPH - 0xCEAD: 0xF905, //CJK COMPATIBILITY IDEOGRAPH - 0xCEAE: 0x51A0, //CJK UNIFIED IDEOGRAPH - 0xCEAF: 0x5B98, //CJK UNIFIED IDEOGRAPH - 0xCEB0: 0x5BEC, //CJK UNIFIED IDEOGRAPH - 0xCEB1: 0x6163, //CJK UNIFIED IDEOGRAPH - 0xCEB2: 0x68FA, //CJK UNIFIED IDEOGRAPH - 0xCEB3: 0x6B3E, //CJK UNIFIED IDEOGRAPH - 0xCEB4: 0x704C, //CJK UNIFIED IDEOGRAPH - 0xCEB5: 0x742F, //CJK UNIFIED IDEOGRAPH - 0xCEB6: 0x74D8, //CJK UNIFIED IDEOGRAPH - 0xCEB7: 0x7BA1, //CJK UNIFIED IDEOGRAPH - 0xCEB8: 0x7F50, //CJK UNIFIED IDEOGRAPH - 0xCEB9: 0x83C5, //CJK UNIFIED IDEOGRAPH - 0xCEBA: 0x89C0, //CJK UNIFIED IDEOGRAPH - 0xCEBB: 0x8CAB, //CJK UNIFIED IDEOGRAPH - 0xCEBC: 0x95DC, //CJK UNIFIED IDEOGRAPH - 0xCEBD: 0x9928, //CJK UNIFIED IDEOGRAPH - 0xCEBE: 0x522E, //CJK UNIFIED IDEOGRAPH - 0xCEBF: 0x605D, //CJK UNIFIED IDEOGRAPH - 0xCEC0: 0x62EC, //CJK UNIFIED IDEOGRAPH - 0xCEC1: 0x9002, //CJK UNIFIED IDEOGRAPH - 0xCEC2: 0x4F8A, //CJK UNIFIED IDEOGRAPH - 0xCEC3: 0x5149, //CJK UNIFIED IDEOGRAPH - 0xCEC4: 0x5321, //CJK UNIFIED IDEOGRAPH - 0xCEC5: 0x58D9, //CJK UNIFIED IDEOGRAPH - 0xCEC6: 0x5EE3, //CJK UNIFIED IDEOGRAPH - 0xCEC7: 0x66E0, //CJK UNIFIED IDEOGRAPH - 0xCEC8: 0x6D38, //CJK UNIFIED IDEOGRAPH - 0xCEC9: 0x709A, //CJK UNIFIED IDEOGRAPH - 0xCECA: 0x72C2, //CJK UNIFIED IDEOGRAPH - 0xCECB: 0x73D6, //CJK UNIFIED IDEOGRAPH - 0xCECC: 0x7B50, //CJK UNIFIED IDEOGRAPH - 0xCECD: 0x80F1, //CJK UNIFIED IDEOGRAPH - 0xCECE: 0x945B, //CJK UNIFIED IDEOGRAPH - 0xCECF: 0x5366, //CJK UNIFIED IDEOGRAPH - 0xCED0: 0x639B, //CJK UNIFIED IDEOGRAPH - 0xCED1: 0x7F6B, //CJK UNIFIED IDEOGRAPH - 0xCED2: 0x4E56, //CJK UNIFIED IDEOGRAPH - 0xCED3: 0x5080, //CJK UNIFIED IDEOGRAPH - 0xCED4: 0x584A, //CJK UNIFIED IDEOGRAPH - 0xCED5: 0x58DE, //CJK UNIFIED IDEOGRAPH - 0xCED6: 0x602A, //CJK UNIFIED IDEOGRAPH - 0xCED7: 0x6127, //CJK UNIFIED IDEOGRAPH - 0xCED8: 0x62D0, //CJK UNIFIED IDEOGRAPH - 0xCED9: 0x69D0, //CJK UNIFIED IDEOGRAPH - 0xCEDA: 0x9B41, //CJK UNIFIED IDEOGRAPH - 0xCEDB: 0x5B8F, //CJK UNIFIED IDEOGRAPH - 0xCEDC: 0x7D18, //CJK UNIFIED IDEOGRAPH - 0xCEDD: 0x80B1, //CJK UNIFIED IDEOGRAPH - 0xCEDE: 0x8F5F, //CJK UNIFIED IDEOGRAPH - 0xCEDF: 0x4EA4, //CJK UNIFIED IDEOGRAPH - 0xCEE0: 0x50D1, //CJK UNIFIED IDEOGRAPH - 0xCEE1: 0x54AC, //CJK UNIFIED IDEOGRAPH - 0xCEE2: 0x55AC, //CJK UNIFIED IDEOGRAPH - 0xCEE3: 0x5B0C, //CJK UNIFIED IDEOGRAPH - 0xCEE4: 0x5DA0, //CJK UNIFIED IDEOGRAPH - 0xCEE5: 0x5DE7, //CJK UNIFIED IDEOGRAPH - 0xCEE6: 0x652A, //CJK UNIFIED IDEOGRAPH - 0xCEE7: 0x654E, //CJK UNIFIED IDEOGRAPH - 0xCEE8: 0x6821, //CJK UNIFIED IDEOGRAPH - 0xCEE9: 0x6A4B, //CJK UNIFIED IDEOGRAPH - 0xCEEA: 0x72E1, //CJK UNIFIED IDEOGRAPH - 0xCEEB: 0x768E, //CJK UNIFIED IDEOGRAPH - 0xCEEC: 0x77EF, //CJK UNIFIED IDEOGRAPH - 0xCEED: 0x7D5E, //CJK UNIFIED IDEOGRAPH - 0xCEEE: 0x7FF9, //CJK UNIFIED IDEOGRAPH - 0xCEEF: 0x81A0, //CJK UNIFIED IDEOGRAPH - 0xCEF0: 0x854E, //CJK UNIFIED IDEOGRAPH - 0xCEF1: 0x86DF, //CJK UNIFIED IDEOGRAPH - 0xCEF2: 0x8F03, //CJK UNIFIED IDEOGRAPH - 0xCEF3: 0x8F4E, //CJK UNIFIED IDEOGRAPH - 0xCEF4: 0x90CA, //CJK UNIFIED IDEOGRAPH - 0xCEF5: 0x9903, //CJK UNIFIED IDEOGRAPH - 0xCEF6: 0x9A55, //CJK UNIFIED IDEOGRAPH - 0xCEF7: 0x9BAB, //CJK UNIFIED IDEOGRAPH - 0xCEF8: 0x4E18, //CJK UNIFIED IDEOGRAPH - 0xCEF9: 0x4E45, //CJK UNIFIED IDEOGRAPH - 0xCEFA: 0x4E5D, //CJK UNIFIED IDEOGRAPH - 0xCEFB: 0x4EC7, //CJK UNIFIED IDEOGRAPH - 0xCEFC: 0x4FF1, //CJK UNIFIED IDEOGRAPH - 0xCEFD: 0x5177, //CJK UNIFIED IDEOGRAPH - 0xCEFE: 0x52FE, //CJK UNIFIED IDEOGRAPH - 0xCFA1: 0x5340, //CJK UNIFIED IDEOGRAPH - 0xCFA2: 0x53E3, //CJK UNIFIED IDEOGRAPH - 0xCFA3: 0x53E5, //CJK UNIFIED IDEOGRAPH - 0xCFA4: 0x548E, //CJK UNIFIED IDEOGRAPH - 0xCFA5: 0x5614, //CJK UNIFIED IDEOGRAPH - 0xCFA6: 0x5775, //CJK UNIFIED IDEOGRAPH - 0xCFA7: 0x57A2, //CJK UNIFIED IDEOGRAPH - 0xCFA8: 0x5BC7, //CJK UNIFIED IDEOGRAPH - 0xCFA9: 0x5D87, //CJK UNIFIED IDEOGRAPH - 0xCFAA: 0x5ED0, //CJK UNIFIED IDEOGRAPH - 0xCFAB: 0x61FC, //CJK UNIFIED IDEOGRAPH - 0xCFAC: 0x62D8, //CJK UNIFIED IDEOGRAPH - 0xCFAD: 0x6551, //CJK UNIFIED IDEOGRAPH - 0xCFAE: 0x67B8, //CJK UNIFIED IDEOGRAPH - 0xCFAF: 0x67E9, //CJK UNIFIED IDEOGRAPH - 0xCFB0: 0x69CB, //CJK UNIFIED IDEOGRAPH - 0xCFB1: 0x6B50, //CJK UNIFIED IDEOGRAPH - 0xCFB2: 0x6BC6, //CJK UNIFIED IDEOGRAPH - 0xCFB3: 0x6BEC, //CJK UNIFIED IDEOGRAPH - 0xCFB4: 0x6C42, //CJK UNIFIED IDEOGRAPH - 0xCFB5: 0x6E9D, //CJK UNIFIED IDEOGRAPH - 0xCFB6: 0x7078, //CJK UNIFIED IDEOGRAPH - 0xCFB7: 0x72D7, //CJK UNIFIED IDEOGRAPH - 0xCFB8: 0x7396, //CJK UNIFIED IDEOGRAPH - 0xCFB9: 0x7403, //CJK UNIFIED IDEOGRAPH - 0xCFBA: 0x77BF, //CJK UNIFIED IDEOGRAPH - 0xCFBB: 0x77E9, //CJK UNIFIED IDEOGRAPH - 0xCFBC: 0x7A76, //CJK UNIFIED IDEOGRAPH - 0xCFBD: 0x7D7F, //CJK UNIFIED IDEOGRAPH - 0xCFBE: 0x8009, //CJK UNIFIED IDEOGRAPH - 0xCFBF: 0x81FC, //CJK UNIFIED IDEOGRAPH - 0xCFC0: 0x8205, //CJK UNIFIED IDEOGRAPH - 0xCFC1: 0x820A, //CJK UNIFIED IDEOGRAPH - 0xCFC2: 0x82DF, //CJK UNIFIED IDEOGRAPH - 0xCFC3: 0x8862, //CJK UNIFIED IDEOGRAPH - 0xCFC4: 0x8B33, //CJK UNIFIED IDEOGRAPH - 0xCFC5: 0x8CFC, //CJK UNIFIED IDEOGRAPH - 0xCFC6: 0x8EC0, //CJK UNIFIED IDEOGRAPH - 0xCFC7: 0x9011, //CJK UNIFIED IDEOGRAPH - 0xCFC8: 0x90B1, //CJK UNIFIED IDEOGRAPH - 0xCFC9: 0x9264, //CJK UNIFIED IDEOGRAPH - 0xCFCA: 0x92B6, //CJK UNIFIED IDEOGRAPH - 0xCFCB: 0x99D2, //CJK UNIFIED IDEOGRAPH - 0xCFCC: 0x9A45, //CJK UNIFIED IDEOGRAPH - 0xCFCD: 0x9CE9, //CJK UNIFIED IDEOGRAPH - 0xCFCE: 0x9DD7, //CJK UNIFIED IDEOGRAPH - 0xCFCF: 0x9F9C, //CJK UNIFIED IDEOGRAPH - 0xCFD0: 0x570B, //CJK UNIFIED IDEOGRAPH - 0xCFD1: 0x5C40, //CJK UNIFIED IDEOGRAPH - 0xCFD2: 0x83CA, //CJK UNIFIED IDEOGRAPH - 0xCFD3: 0x97A0, //CJK UNIFIED IDEOGRAPH - 0xCFD4: 0x97AB, //CJK UNIFIED IDEOGRAPH - 0xCFD5: 0x9EB4, //CJK UNIFIED IDEOGRAPH - 0xCFD6: 0x541B, //CJK UNIFIED IDEOGRAPH - 0xCFD7: 0x7A98, //CJK UNIFIED IDEOGRAPH - 0xCFD8: 0x7FA4, //CJK UNIFIED IDEOGRAPH - 0xCFD9: 0x88D9, //CJK UNIFIED IDEOGRAPH - 0xCFDA: 0x8ECD, //CJK UNIFIED IDEOGRAPH - 0xCFDB: 0x90E1, //CJK UNIFIED IDEOGRAPH - 0xCFDC: 0x5800, //CJK UNIFIED IDEOGRAPH - 0xCFDD: 0x5C48, //CJK UNIFIED IDEOGRAPH - 0xCFDE: 0x6398, //CJK UNIFIED IDEOGRAPH - 0xCFDF: 0x7A9F, //CJK UNIFIED IDEOGRAPH - 0xCFE0: 0x5BAE, //CJK UNIFIED IDEOGRAPH - 0xCFE1: 0x5F13, //CJK UNIFIED IDEOGRAPH - 0xCFE2: 0x7A79, //CJK UNIFIED IDEOGRAPH - 0xCFE3: 0x7AAE, //CJK UNIFIED IDEOGRAPH - 0xCFE4: 0x828E, //CJK UNIFIED IDEOGRAPH - 0xCFE5: 0x8EAC, //CJK UNIFIED IDEOGRAPH - 0xCFE6: 0x5026, //CJK UNIFIED IDEOGRAPH - 0xCFE7: 0x5238, //CJK UNIFIED IDEOGRAPH - 0xCFE8: 0x52F8, //CJK UNIFIED IDEOGRAPH - 0xCFE9: 0x5377, //CJK UNIFIED IDEOGRAPH - 0xCFEA: 0x5708, //CJK UNIFIED IDEOGRAPH - 0xCFEB: 0x62F3, //CJK UNIFIED IDEOGRAPH - 0xCFEC: 0x6372, //CJK UNIFIED IDEOGRAPH - 0xCFED: 0x6B0A, //CJK UNIFIED IDEOGRAPH - 0xCFEE: 0x6DC3, //CJK UNIFIED IDEOGRAPH - 0xCFEF: 0x7737, //CJK UNIFIED IDEOGRAPH - 0xCFF0: 0x53A5, //CJK UNIFIED IDEOGRAPH - 0xCFF1: 0x7357, //CJK UNIFIED IDEOGRAPH - 0xCFF2: 0x8568, //CJK UNIFIED IDEOGRAPH - 0xCFF3: 0x8E76, //CJK UNIFIED IDEOGRAPH - 0xCFF4: 0x95D5, //CJK UNIFIED IDEOGRAPH - 0xCFF5: 0x673A, //CJK UNIFIED IDEOGRAPH - 0xCFF6: 0x6AC3, //CJK UNIFIED IDEOGRAPH - 0xCFF7: 0x6F70, //CJK UNIFIED IDEOGRAPH - 0xCFF8: 0x8A6D, //CJK UNIFIED IDEOGRAPH - 0xCFF9: 0x8ECC, //CJK UNIFIED IDEOGRAPH - 0xCFFA: 0x994B, //CJK UNIFIED IDEOGRAPH - 0xCFFB: 0xF906, //CJK COMPATIBILITY IDEOGRAPH - 0xCFFC: 0x6677, //CJK UNIFIED IDEOGRAPH - 0xCFFD: 0x6B78, //CJK UNIFIED IDEOGRAPH - 0xCFFE: 0x8CB4, //CJK UNIFIED IDEOGRAPH - 0xD0A1: 0x9B3C, //CJK UNIFIED IDEOGRAPH - 0xD0A2: 0xF907, //CJK COMPATIBILITY IDEOGRAPH - 0xD0A3: 0x53EB, //CJK UNIFIED IDEOGRAPH - 0xD0A4: 0x572D, //CJK UNIFIED IDEOGRAPH - 0xD0A5: 0x594E, //CJK UNIFIED IDEOGRAPH - 0xD0A6: 0x63C6, //CJK UNIFIED IDEOGRAPH - 0xD0A7: 0x69FB, //CJK UNIFIED IDEOGRAPH - 0xD0A8: 0x73EA, //CJK UNIFIED IDEOGRAPH - 0xD0A9: 0x7845, //CJK UNIFIED IDEOGRAPH - 0xD0AA: 0x7ABA, //CJK UNIFIED IDEOGRAPH - 0xD0AB: 0x7AC5, //CJK UNIFIED IDEOGRAPH - 0xD0AC: 0x7CFE, //CJK UNIFIED IDEOGRAPH - 0xD0AD: 0x8475, //CJK UNIFIED IDEOGRAPH - 0xD0AE: 0x898F, //CJK UNIFIED IDEOGRAPH - 0xD0AF: 0x8D73, //CJK UNIFIED IDEOGRAPH - 0xD0B0: 0x9035, //CJK UNIFIED IDEOGRAPH - 0xD0B1: 0x95A8, //CJK UNIFIED IDEOGRAPH - 0xD0B2: 0x52FB, //CJK UNIFIED IDEOGRAPH - 0xD0B3: 0x5747, //CJK UNIFIED IDEOGRAPH - 0xD0B4: 0x7547, //CJK UNIFIED IDEOGRAPH - 0xD0B5: 0x7B60, //CJK UNIFIED IDEOGRAPH - 0xD0B6: 0x83CC, //CJK UNIFIED IDEOGRAPH - 0xD0B7: 0x921E, //CJK UNIFIED IDEOGRAPH - 0xD0B8: 0xF908, //CJK COMPATIBILITY IDEOGRAPH - 0xD0B9: 0x6A58, //CJK UNIFIED IDEOGRAPH - 0xD0BA: 0x514B, //CJK UNIFIED IDEOGRAPH - 0xD0BB: 0x524B, //CJK UNIFIED IDEOGRAPH - 0xD0BC: 0x5287, //CJK UNIFIED IDEOGRAPH - 0xD0BD: 0x621F, //CJK UNIFIED IDEOGRAPH - 0xD0BE: 0x68D8, //CJK UNIFIED IDEOGRAPH - 0xD0BF: 0x6975, //CJK UNIFIED IDEOGRAPH - 0xD0C0: 0x9699, //CJK UNIFIED IDEOGRAPH - 0xD0C1: 0x50C5, //CJK UNIFIED IDEOGRAPH - 0xD0C2: 0x52A4, //CJK UNIFIED IDEOGRAPH - 0xD0C3: 0x52E4, //CJK UNIFIED IDEOGRAPH - 0xD0C4: 0x61C3, //CJK UNIFIED IDEOGRAPH - 0xD0C5: 0x65A4, //CJK UNIFIED IDEOGRAPH - 0xD0C6: 0x6839, //CJK UNIFIED IDEOGRAPH - 0xD0C7: 0x69FF, //CJK UNIFIED IDEOGRAPH - 0xD0C8: 0x747E, //CJK UNIFIED IDEOGRAPH - 0xD0C9: 0x7B4B, //CJK UNIFIED IDEOGRAPH - 0xD0CA: 0x82B9, //CJK UNIFIED IDEOGRAPH - 0xD0CB: 0x83EB, //CJK UNIFIED IDEOGRAPH - 0xD0CC: 0x89B2, //CJK UNIFIED IDEOGRAPH - 0xD0CD: 0x8B39, //CJK UNIFIED IDEOGRAPH - 0xD0CE: 0x8FD1, //CJK UNIFIED IDEOGRAPH - 0xD0CF: 0x9949, //CJK UNIFIED IDEOGRAPH - 0xD0D0: 0xF909, //CJK COMPATIBILITY IDEOGRAPH - 0xD0D1: 0x4ECA, //CJK UNIFIED IDEOGRAPH - 0xD0D2: 0x5997, //CJK UNIFIED IDEOGRAPH - 0xD0D3: 0x64D2, //CJK UNIFIED IDEOGRAPH - 0xD0D4: 0x6611, //CJK UNIFIED IDEOGRAPH - 0xD0D5: 0x6A8E, //CJK UNIFIED IDEOGRAPH - 0xD0D6: 0x7434, //CJK UNIFIED IDEOGRAPH - 0xD0D7: 0x7981, //CJK UNIFIED IDEOGRAPH - 0xD0D8: 0x79BD, //CJK UNIFIED IDEOGRAPH - 0xD0D9: 0x82A9, //CJK UNIFIED IDEOGRAPH - 0xD0DA: 0x887E, //CJK UNIFIED IDEOGRAPH - 0xD0DB: 0x887F, //CJK UNIFIED IDEOGRAPH - 0xD0DC: 0x895F, //CJK UNIFIED IDEOGRAPH - 0xD0DD: 0xF90A, //CJK COMPATIBILITY IDEOGRAPH - 0xD0DE: 0x9326, //CJK UNIFIED IDEOGRAPH - 0xD0DF: 0x4F0B, //CJK UNIFIED IDEOGRAPH - 0xD0E0: 0x53CA, //CJK UNIFIED IDEOGRAPH - 0xD0E1: 0x6025, //CJK UNIFIED IDEOGRAPH - 0xD0E2: 0x6271, //CJK UNIFIED IDEOGRAPH - 0xD0E3: 0x6C72, //CJK UNIFIED IDEOGRAPH - 0xD0E4: 0x7D1A, //CJK UNIFIED IDEOGRAPH - 0xD0E5: 0x7D66, //CJK UNIFIED IDEOGRAPH - 0xD0E6: 0x4E98, //CJK UNIFIED IDEOGRAPH - 0xD0E7: 0x5162, //CJK UNIFIED IDEOGRAPH - 0xD0E8: 0x77DC, //CJK UNIFIED IDEOGRAPH - 0xD0E9: 0x80AF, //CJK UNIFIED IDEOGRAPH - 0xD0EA: 0x4F01, //CJK UNIFIED IDEOGRAPH - 0xD0EB: 0x4F0E, //CJK UNIFIED IDEOGRAPH - 0xD0EC: 0x5176, //CJK UNIFIED IDEOGRAPH - 0xD0ED: 0x5180, //CJK UNIFIED IDEOGRAPH - 0xD0EE: 0x55DC, //CJK UNIFIED IDEOGRAPH - 0xD0EF: 0x5668, //CJK UNIFIED IDEOGRAPH - 0xD0F0: 0x573B, //CJK UNIFIED IDEOGRAPH - 0xD0F1: 0x57FA, //CJK UNIFIED IDEOGRAPH - 0xD0F2: 0x57FC, //CJK UNIFIED IDEOGRAPH - 0xD0F3: 0x5914, //CJK UNIFIED IDEOGRAPH - 0xD0F4: 0x5947, //CJK UNIFIED IDEOGRAPH - 0xD0F5: 0x5993, //CJK UNIFIED IDEOGRAPH - 0xD0F6: 0x5BC4, //CJK UNIFIED IDEOGRAPH - 0xD0F7: 0x5C90, //CJK UNIFIED IDEOGRAPH - 0xD0F8: 0x5D0E, //CJK UNIFIED IDEOGRAPH - 0xD0F9: 0x5DF1, //CJK UNIFIED IDEOGRAPH - 0xD0FA: 0x5E7E, //CJK UNIFIED IDEOGRAPH - 0xD0FB: 0x5FCC, //CJK UNIFIED IDEOGRAPH - 0xD0FC: 0x6280, //CJK UNIFIED IDEOGRAPH - 0xD0FD: 0x65D7, //CJK UNIFIED IDEOGRAPH - 0xD0FE: 0x65E3, //CJK UNIFIED IDEOGRAPH - 0xD1A1: 0x671E, //CJK UNIFIED IDEOGRAPH - 0xD1A2: 0x671F, //CJK UNIFIED IDEOGRAPH - 0xD1A3: 0x675E, //CJK UNIFIED IDEOGRAPH - 0xD1A4: 0x68CB, //CJK UNIFIED IDEOGRAPH - 0xD1A5: 0x68C4, //CJK UNIFIED IDEOGRAPH - 0xD1A6: 0x6A5F, //CJK UNIFIED IDEOGRAPH - 0xD1A7: 0x6B3A, //CJK UNIFIED IDEOGRAPH - 0xD1A8: 0x6C23, //CJK UNIFIED IDEOGRAPH - 0xD1A9: 0x6C7D, //CJK UNIFIED IDEOGRAPH - 0xD1AA: 0x6C82, //CJK UNIFIED IDEOGRAPH - 0xD1AB: 0x6DC7, //CJK UNIFIED IDEOGRAPH - 0xD1AC: 0x7398, //CJK UNIFIED IDEOGRAPH - 0xD1AD: 0x7426, //CJK UNIFIED IDEOGRAPH - 0xD1AE: 0x742A, //CJK UNIFIED IDEOGRAPH - 0xD1AF: 0x7482, //CJK UNIFIED IDEOGRAPH - 0xD1B0: 0x74A3, //CJK UNIFIED IDEOGRAPH - 0xD1B1: 0x7578, //CJK UNIFIED IDEOGRAPH - 0xD1B2: 0x757F, //CJK UNIFIED IDEOGRAPH - 0xD1B3: 0x7881, //CJK UNIFIED IDEOGRAPH - 0xD1B4: 0x78EF, //CJK UNIFIED IDEOGRAPH - 0xD1B5: 0x7941, //CJK UNIFIED IDEOGRAPH - 0xD1B6: 0x7947, //CJK UNIFIED IDEOGRAPH - 0xD1B7: 0x7948, //CJK UNIFIED IDEOGRAPH - 0xD1B8: 0x797A, //CJK UNIFIED IDEOGRAPH - 0xD1B9: 0x7B95, //CJK UNIFIED IDEOGRAPH - 0xD1BA: 0x7D00, //CJK UNIFIED IDEOGRAPH - 0xD1BB: 0x7DBA, //CJK UNIFIED IDEOGRAPH - 0xD1BC: 0x7F88, //CJK UNIFIED IDEOGRAPH - 0xD1BD: 0x8006, //CJK UNIFIED IDEOGRAPH - 0xD1BE: 0x802D, //CJK UNIFIED IDEOGRAPH - 0xD1BF: 0x808C, //CJK UNIFIED IDEOGRAPH - 0xD1C0: 0x8A18, //CJK UNIFIED IDEOGRAPH - 0xD1C1: 0x8B4F, //CJK UNIFIED IDEOGRAPH - 0xD1C2: 0x8C48, //CJK UNIFIED IDEOGRAPH - 0xD1C3: 0x8D77, //CJK UNIFIED IDEOGRAPH - 0xD1C4: 0x9321, //CJK UNIFIED IDEOGRAPH - 0xD1C5: 0x9324, //CJK UNIFIED IDEOGRAPH - 0xD1C6: 0x98E2, //CJK UNIFIED IDEOGRAPH - 0xD1C7: 0x9951, //CJK UNIFIED IDEOGRAPH - 0xD1C8: 0x9A0E, //CJK UNIFIED IDEOGRAPH - 0xD1C9: 0x9A0F, //CJK UNIFIED IDEOGRAPH - 0xD1CA: 0x9A65, //CJK UNIFIED IDEOGRAPH - 0xD1CB: 0x9E92, //CJK UNIFIED IDEOGRAPH - 0xD1CC: 0x7DCA, //CJK UNIFIED IDEOGRAPH - 0xD1CD: 0x4F76, //CJK UNIFIED IDEOGRAPH - 0xD1CE: 0x5409, //CJK UNIFIED IDEOGRAPH - 0xD1CF: 0x62EE, //CJK UNIFIED IDEOGRAPH - 0xD1D0: 0x6854, //CJK UNIFIED IDEOGRAPH - 0xD1D1: 0x91D1, //CJK UNIFIED IDEOGRAPH - 0xD1D2: 0x55AB, //CJK UNIFIED IDEOGRAPH - 0xD1D3: 0x513A, //CJK UNIFIED IDEOGRAPH - 0xD1D4: 0xF90B, //CJK COMPATIBILITY IDEOGRAPH - 0xD1D5: 0xF90C, //CJK COMPATIBILITY IDEOGRAPH - 0xD1D6: 0x5A1C, //CJK UNIFIED IDEOGRAPH - 0xD1D7: 0x61E6, //CJK UNIFIED IDEOGRAPH - 0xD1D8: 0xF90D, //CJK COMPATIBILITY IDEOGRAPH - 0xD1D9: 0x62CF, //CJK UNIFIED IDEOGRAPH - 0xD1DA: 0x62FF, //CJK UNIFIED IDEOGRAPH - 0xD1DB: 0xF90E, //CJK COMPATIBILITY IDEOGRAPH - 0xD1DC: 0xF90F, //CJK COMPATIBILITY IDEOGRAPH - 0xD1DD: 0xF910, //CJK COMPATIBILITY IDEOGRAPH - 0xD1DE: 0xF911, //CJK COMPATIBILITY IDEOGRAPH - 0xD1DF: 0xF912, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E0: 0xF913, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E1: 0x90A3, //CJK UNIFIED IDEOGRAPH - 0xD1E2: 0xF914, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E3: 0xF915, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E4: 0xF916, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E5: 0xF917, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E6: 0xF918, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E7: 0x8AFE, //CJK UNIFIED IDEOGRAPH - 0xD1E8: 0xF919, //CJK COMPATIBILITY IDEOGRAPH - 0xD1E9: 0xF91A, //CJK COMPATIBILITY IDEOGRAPH - 0xD1EA: 0xF91B, //CJK COMPATIBILITY IDEOGRAPH - 0xD1EB: 0xF91C, //CJK COMPATIBILITY IDEOGRAPH - 0xD1EC: 0x6696, //CJK UNIFIED IDEOGRAPH - 0xD1ED: 0xF91D, //CJK COMPATIBILITY IDEOGRAPH - 0xD1EE: 0x7156, //CJK UNIFIED IDEOGRAPH - 0xD1EF: 0xF91E, //CJK COMPATIBILITY IDEOGRAPH - 0xD1F0: 0xF91F, //CJK COMPATIBILITY IDEOGRAPH - 0xD1F1: 0x96E3, //CJK UNIFIED IDEOGRAPH - 0xD1F2: 0xF920, //CJK COMPATIBILITY IDEOGRAPH - 0xD1F3: 0x634F, //CJK UNIFIED IDEOGRAPH - 0xD1F4: 0x637A, //CJK UNIFIED IDEOGRAPH - 0xD1F5: 0x5357, //CJK UNIFIED IDEOGRAPH - 0xD1F6: 0xF921, //CJK COMPATIBILITY IDEOGRAPH - 0xD1F7: 0x678F, //CJK UNIFIED IDEOGRAPH - 0xD1F8: 0x6960, //CJK UNIFIED IDEOGRAPH - 0xD1F9: 0x6E73, //CJK UNIFIED IDEOGRAPH - 0xD1FA: 0xF922, //CJK COMPATIBILITY IDEOGRAPH - 0xD1FB: 0x7537, //CJK UNIFIED IDEOGRAPH - 0xD1FC: 0xF923, //CJK COMPATIBILITY IDEOGRAPH - 0xD1FD: 0xF924, //CJK COMPATIBILITY IDEOGRAPH - 0xD1FE: 0xF925, //CJK COMPATIBILITY IDEOGRAPH - 0xD2A1: 0x7D0D, //CJK UNIFIED IDEOGRAPH - 0xD2A2: 0xF926, //CJK COMPATIBILITY IDEOGRAPH - 0xD2A3: 0xF927, //CJK COMPATIBILITY IDEOGRAPH - 0xD2A4: 0x8872, //CJK UNIFIED IDEOGRAPH - 0xD2A5: 0x56CA, //CJK UNIFIED IDEOGRAPH - 0xD2A6: 0x5A18, //CJK UNIFIED IDEOGRAPH - 0xD2A7: 0xF928, //CJK COMPATIBILITY IDEOGRAPH - 0xD2A8: 0xF929, //CJK COMPATIBILITY IDEOGRAPH - 0xD2A9: 0xF92A, //CJK COMPATIBILITY IDEOGRAPH - 0xD2AA: 0xF92B, //CJK COMPATIBILITY IDEOGRAPH - 0xD2AB: 0xF92C, //CJK COMPATIBILITY IDEOGRAPH - 0xD2AC: 0x4E43, //CJK UNIFIED IDEOGRAPH - 0xD2AD: 0xF92D, //CJK COMPATIBILITY IDEOGRAPH - 0xD2AE: 0x5167, //CJK UNIFIED IDEOGRAPH - 0xD2AF: 0x5948, //CJK UNIFIED IDEOGRAPH - 0xD2B0: 0x67F0, //CJK UNIFIED IDEOGRAPH - 0xD2B1: 0x8010, //CJK UNIFIED IDEOGRAPH - 0xD2B2: 0xF92E, //CJK COMPATIBILITY IDEOGRAPH - 0xD2B3: 0x5973, //CJK UNIFIED IDEOGRAPH - 0xD2B4: 0x5E74, //CJK UNIFIED IDEOGRAPH - 0xD2B5: 0x649A, //CJK UNIFIED IDEOGRAPH - 0xD2B6: 0x79CA, //CJK UNIFIED IDEOGRAPH - 0xD2B7: 0x5FF5, //CJK UNIFIED IDEOGRAPH - 0xD2B8: 0x606C, //CJK UNIFIED IDEOGRAPH - 0xD2B9: 0x62C8, //CJK UNIFIED IDEOGRAPH - 0xD2BA: 0x637B, //CJK UNIFIED IDEOGRAPH - 0xD2BB: 0x5BE7, //CJK UNIFIED IDEOGRAPH - 0xD2BC: 0x5BD7, //CJK UNIFIED IDEOGRAPH - 0xD2BD: 0x52AA, //CJK UNIFIED IDEOGRAPH - 0xD2BE: 0xF92F, //CJK COMPATIBILITY IDEOGRAPH - 0xD2BF: 0x5974, //CJK UNIFIED IDEOGRAPH - 0xD2C0: 0x5F29, //CJK UNIFIED IDEOGRAPH - 0xD2C1: 0x6012, //CJK UNIFIED IDEOGRAPH - 0xD2C2: 0xF930, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C3: 0xF931, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C4: 0xF932, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C5: 0x7459, //CJK UNIFIED IDEOGRAPH - 0xD2C6: 0xF933, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C7: 0xF934, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C8: 0xF935, //CJK COMPATIBILITY IDEOGRAPH - 0xD2C9: 0xF936, //CJK COMPATIBILITY IDEOGRAPH - 0xD2CA: 0xF937, //CJK COMPATIBILITY IDEOGRAPH - 0xD2CB: 0xF938, //CJK COMPATIBILITY IDEOGRAPH - 0xD2CC: 0x99D1, //CJK UNIFIED IDEOGRAPH - 0xD2CD: 0xF939, //CJK COMPATIBILITY IDEOGRAPH - 0xD2CE: 0xF93A, //CJK COMPATIBILITY IDEOGRAPH - 0xD2CF: 0xF93B, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D0: 0xF93C, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D1: 0xF93D, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D2: 0xF93E, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D3: 0xF93F, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D4: 0xF940, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D5: 0xF941, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D6: 0xF942, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D7: 0xF943, //CJK COMPATIBILITY IDEOGRAPH - 0xD2D8: 0x6FC3, //CJK UNIFIED IDEOGRAPH - 0xD2D9: 0xF944, //CJK COMPATIBILITY IDEOGRAPH - 0xD2DA: 0xF945, //CJK COMPATIBILITY IDEOGRAPH - 0xD2DB: 0x81BF, //CJK UNIFIED IDEOGRAPH - 0xD2DC: 0x8FB2, //CJK UNIFIED IDEOGRAPH - 0xD2DD: 0x60F1, //CJK UNIFIED IDEOGRAPH - 0xD2DE: 0xF946, //CJK COMPATIBILITY IDEOGRAPH - 0xD2DF: 0xF947, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E0: 0x8166, //CJK UNIFIED IDEOGRAPH - 0xD2E1: 0xF948, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E2: 0xF949, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E3: 0x5C3F, //CJK UNIFIED IDEOGRAPH - 0xD2E4: 0xF94A, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E5: 0xF94B, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E6: 0xF94C, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E7: 0xF94D, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E8: 0xF94E, //CJK COMPATIBILITY IDEOGRAPH - 0xD2E9: 0xF94F, //CJK COMPATIBILITY IDEOGRAPH - 0xD2EA: 0xF950, //CJK COMPATIBILITY IDEOGRAPH - 0xD2EB: 0xF951, //CJK COMPATIBILITY IDEOGRAPH - 0xD2EC: 0x5AE9, //CJK UNIFIED IDEOGRAPH - 0xD2ED: 0x8A25, //CJK UNIFIED IDEOGRAPH - 0xD2EE: 0x677B, //CJK UNIFIED IDEOGRAPH - 0xD2EF: 0x7D10, //CJK UNIFIED IDEOGRAPH - 0xD2F0: 0xF952, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F1: 0xF953, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F2: 0xF954, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F3: 0xF955, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F4: 0xF956, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F5: 0xF957, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F6: 0x80FD, //CJK UNIFIED IDEOGRAPH - 0xD2F7: 0xF958, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F8: 0xF959, //CJK COMPATIBILITY IDEOGRAPH - 0xD2F9: 0x5C3C, //CJK UNIFIED IDEOGRAPH - 0xD2FA: 0x6CE5, //CJK UNIFIED IDEOGRAPH - 0xD2FB: 0x533F, //CJK UNIFIED IDEOGRAPH - 0xD2FC: 0x6EBA, //CJK UNIFIED IDEOGRAPH - 0xD2FD: 0x591A, //CJK UNIFIED IDEOGRAPH - 0xD2FE: 0x8336, //CJK UNIFIED IDEOGRAPH - 0xD3A1: 0x4E39, //CJK UNIFIED IDEOGRAPH - 0xD3A2: 0x4EB6, //CJK UNIFIED IDEOGRAPH - 0xD3A3: 0x4F46, //CJK UNIFIED IDEOGRAPH - 0xD3A4: 0x55AE, //CJK UNIFIED IDEOGRAPH - 0xD3A5: 0x5718, //CJK UNIFIED IDEOGRAPH - 0xD3A6: 0x58C7, //CJK UNIFIED IDEOGRAPH - 0xD3A7: 0x5F56, //CJK UNIFIED IDEOGRAPH - 0xD3A8: 0x65B7, //CJK UNIFIED IDEOGRAPH - 0xD3A9: 0x65E6, //CJK UNIFIED IDEOGRAPH - 0xD3AA: 0x6A80, //CJK UNIFIED IDEOGRAPH - 0xD3AB: 0x6BB5, //CJK UNIFIED IDEOGRAPH - 0xD3AC: 0x6E4D, //CJK UNIFIED IDEOGRAPH - 0xD3AD: 0x77ED, //CJK UNIFIED IDEOGRAPH - 0xD3AE: 0x7AEF, //CJK UNIFIED IDEOGRAPH - 0xD3AF: 0x7C1E, //CJK UNIFIED IDEOGRAPH - 0xD3B0: 0x7DDE, //CJK UNIFIED IDEOGRAPH - 0xD3B1: 0x86CB, //CJK UNIFIED IDEOGRAPH - 0xD3B2: 0x8892, //CJK UNIFIED IDEOGRAPH - 0xD3B3: 0x9132, //CJK UNIFIED IDEOGRAPH - 0xD3B4: 0x935B, //CJK UNIFIED IDEOGRAPH - 0xD3B5: 0x64BB, //CJK UNIFIED IDEOGRAPH - 0xD3B6: 0x6FBE, //CJK UNIFIED IDEOGRAPH - 0xD3B7: 0x737A, //CJK UNIFIED IDEOGRAPH - 0xD3B8: 0x75B8, //CJK UNIFIED IDEOGRAPH - 0xD3B9: 0x9054, //CJK UNIFIED IDEOGRAPH - 0xD3BA: 0x5556, //CJK UNIFIED IDEOGRAPH - 0xD3BB: 0x574D, //CJK UNIFIED IDEOGRAPH - 0xD3BC: 0x61BA, //CJK UNIFIED IDEOGRAPH - 0xD3BD: 0x64D4, //CJK UNIFIED IDEOGRAPH - 0xD3BE: 0x66C7, //CJK UNIFIED IDEOGRAPH - 0xD3BF: 0x6DE1, //CJK UNIFIED IDEOGRAPH - 0xD3C0: 0x6E5B, //CJK UNIFIED IDEOGRAPH - 0xD3C1: 0x6F6D, //CJK UNIFIED IDEOGRAPH - 0xD3C2: 0x6FB9, //CJK UNIFIED IDEOGRAPH - 0xD3C3: 0x75F0, //CJK UNIFIED IDEOGRAPH - 0xD3C4: 0x8043, //CJK UNIFIED IDEOGRAPH - 0xD3C5: 0x81BD, //CJK UNIFIED IDEOGRAPH - 0xD3C6: 0x8541, //CJK UNIFIED IDEOGRAPH - 0xD3C7: 0x8983, //CJK UNIFIED IDEOGRAPH - 0xD3C8: 0x8AC7, //CJK UNIFIED IDEOGRAPH - 0xD3C9: 0x8B5A, //CJK UNIFIED IDEOGRAPH - 0xD3CA: 0x931F, //CJK UNIFIED IDEOGRAPH - 0xD3CB: 0x6C93, //CJK UNIFIED IDEOGRAPH - 0xD3CC: 0x7553, //CJK UNIFIED IDEOGRAPH - 0xD3CD: 0x7B54, //CJK UNIFIED IDEOGRAPH - 0xD3CE: 0x8E0F, //CJK UNIFIED IDEOGRAPH - 0xD3CF: 0x905D, //CJK UNIFIED IDEOGRAPH - 0xD3D0: 0x5510, //CJK UNIFIED IDEOGRAPH - 0xD3D1: 0x5802, //CJK UNIFIED IDEOGRAPH - 0xD3D2: 0x5858, //CJK UNIFIED IDEOGRAPH - 0xD3D3: 0x5E62, //CJK UNIFIED IDEOGRAPH - 0xD3D4: 0x6207, //CJK UNIFIED IDEOGRAPH - 0xD3D5: 0x649E, //CJK UNIFIED IDEOGRAPH - 0xD3D6: 0x68E0, //CJK UNIFIED IDEOGRAPH - 0xD3D7: 0x7576, //CJK UNIFIED IDEOGRAPH - 0xD3D8: 0x7CD6, //CJK UNIFIED IDEOGRAPH - 0xD3D9: 0x87B3, //CJK UNIFIED IDEOGRAPH - 0xD3DA: 0x9EE8, //CJK UNIFIED IDEOGRAPH - 0xD3DB: 0x4EE3, //CJK UNIFIED IDEOGRAPH - 0xD3DC: 0x5788, //CJK UNIFIED IDEOGRAPH - 0xD3DD: 0x576E, //CJK UNIFIED IDEOGRAPH - 0xD3DE: 0x5927, //CJK UNIFIED IDEOGRAPH - 0xD3DF: 0x5C0D, //CJK UNIFIED IDEOGRAPH - 0xD3E0: 0x5CB1, //CJK UNIFIED IDEOGRAPH - 0xD3E1: 0x5E36, //CJK UNIFIED IDEOGRAPH - 0xD3E2: 0x5F85, //CJK UNIFIED IDEOGRAPH - 0xD3E3: 0x6234, //CJK UNIFIED IDEOGRAPH - 0xD3E4: 0x64E1, //CJK UNIFIED IDEOGRAPH - 0xD3E5: 0x73B3, //CJK UNIFIED IDEOGRAPH - 0xD3E6: 0x81FA, //CJK UNIFIED IDEOGRAPH - 0xD3E7: 0x888B, //CJK UNIFIED IDEOGRAPH - 0xD3E8: 0x8CB8, //CJK UNIFIED IDEOGRAPH - 0xD3E9: 0x968A, //CJK UNIFIED IDEOGRAPH - 0xD3EA: 0x9EDB, //CJK UNIFIED IDEOGRAPH - 0xD3EB: 0x5B85, //CJK UNIFIED IDEOGRAPH - 0xD3EC: 0x5FB7, //CJK UNIFIED IDEOGRAPH - 0xD3ED: 0x60B3, //CJK UNIFIED IDEOGRAPH - 0xD3EE: 0x5012, //CJK UNIFIED IDEOGRAPH - 0xD3EF: 0x5200, //CJK UNIFIED IDEOGRAPH - 0xD3F0: 0x5230, //CJK UNIFIED IDEOGRAPH - 0xD3F1: 0x5716, //CJK UNIFIED IDEOGRAPH - 0xD3F2: 0x5835, //CJK UNIFIED IDEOGRAPH - 0xD3F3: 0x5857, //CJK UNIFIED IDEOGRAPH - 0xD3F4: 0x5C0E, //CJK UNIFIED IDEOGRAPH - 0xD3F5: 0x5C60, //CJK UNIFIED IDEOGRAPH - 0xD3F6: 0x5CF6, //CJK UNIFIED IDEOGRAPH - 0xD3F7: 0x5D8B, //CJK UNIFIED IDEOGRAPH - 0xD3F8: 0x5EA6, //CJK UNIFIED IDEOGRAPH - 0xD3F9: 0x5F92, //CJK UNIFIED IDEOGRAPH - 0xD3FA: 0x60BC, //CJK UNIFIED IDEOGRAPH - 0xD3FB: 0x6311, //CJK UNIFIED IDEOGRAPH - 0xD3FC: 0x6389, //CJK UNIFIED IDEOGRAPH - 0xD3FD: 0x6417, //CJK UNIFIED IDEOGRAPH - 0xD3FE: 0x6843, //CJK UNIFIED IDEOGRAPH - 0xD4A1: 0x68F9, //CJK UNIFIED IDEOGRAPH - 0xD4A2: 0x6AC2, //CJK UNIFIED IDEOGRAPH - 0xD4A3: 0x6DD8, //CJK UNIFIED IDEOGRAPH - 0xD4A4: 0x6E21, //CJK UNIFIED IDEOGRAPH - 0xD4A5: 0x6ED4, //CJK UNIFIED IDEOGRAPH - 0xD4A6: 0x6FE4, //CJK UNIFIED IDEOGRAPH - 0xD4A7: 0x71FE, //CJK UNIFIED IDEOGRAPH - 0xD4A8: 0x76DC, //CJK UNIFIED IDEOGRAPH - 0xD4A9: 0x7779, //CJK UNIFIED IDEOGRAPH - 0xD4AA: 0x79B1, //CJK UNIFIED IDEOGRAPH - 0xD4AB: 0x7A3B, //CJK UNIFIED IDEOGRAPH - 0xD4AC: 0x8404, //CJK UNIFIED IDEOGRAPH - 0xD4AD: 0x89A9, //CJK UNIFIED IDEOGRAPH - 0xD4AE: 0x8CED, //CJK UNIFIED IDEOGRAPH - 0xD4AF: 0x8DF3, //CJK UNIFIED IDEOGRAPH - 0xD4B0: 0x8E48, //CJK UNIFIED IDEOGRAPH - 0xD4B1: 0x9003, //CJK UNIFIED IDEOGRAPH - 0xD4B2: 0x9014, //CJK UNIFIED IDEOGRAPH - 0xD4B3: 0x9053, //CJK UNIFIED IDEOGRAPH - 0xD4B4: 0x90FD, //CJK UNIFIED IDEOGRAPH - 0xD4B5: 0x934D, //CJK UNIFIED IDEOGRAPH - 0xD4B6: 0x9676, //CJK UNIFIED IDEOGRAPH - 0xD4B7: 0x97DC, //CJK UNIFIED IDEOGRAPH - 0xD4B8: 0x6BD2, //CJK UNIFIED IDEOGRAPH - 0xD4B9: 0x7006, //CJK UNIFIED IDEOGRAPH - 0xD4BA: 0x7258, //CJK UNIFIED IDEOGRAPH - 0xD4BB: 0x72A2, //CJK UNIFIED IDEOGRAPH - 0xD4BC: 0x7368, //CJK UNIFIED IDEOGRAPH - 0xD4BD: 0x7763, //CJK UNIFIED IDEOGRAPH - 0xD4BE: 0x79BF, //CJK UNIFIED IDEOGRAPH - 0xD4BF: 0x7BE4, //CJK UNIFIED IDEOGRAPH - 0xD4C0: 0x7E9B, //CJK UNIFIED IDEOGRAPH - 0xD4C1: 0x8B80, //CJK UNIFIED IDEOGRAPH - 0xD4C2: 0x58A9, //CJK UNIFIED IDEOGRAPH - 0xD4C3: 0x60C7, //CJK UNIFIED IDEOGRAPH - 0xD4C4: 0x6566, //CJK UNIFIED IDEOGRAPH - 0xD4C5: 0x65FD, //CJK UNIFIED IDEOGRAPH - 0xD4C6: 0x66BE, //CJK UNIFIED IDEOGRAPH - 0xD4C7: 0x6C8C, //CJK UNIFIED IDEOGRAPH - 0xD4C8: 0x711E, //CJK UNIFIED IDEOGRAPH - 0xD4C9: 0x71C9, //CJK UNIFIED IDEOGRAPH - 0xD4CA: 0x8C5A, //CJK UNIFIED IDEOGRAPH - 0xD4CB: 0x9813, //CJK UNIFIED IDEOGRAPH - 0xD4CC: 0x4E6D, //CJK UNIFIED IDEOGRAPH - 0xD4CD: 0x7A81, //CJK UNIFIED IDEOGRAPH - 0xD4CE: 0x4EDD, //CJK UNIFIED IDEOGRAPH - 0xD4CF: 0x51AC, //CJK UNIFIED IDEOGRAPH - 0xD4D0: 0x51CD, //CJK UNIFIED IDEOGRAPH - 0xD4D1: 0x52D5, //CJK UNIFIED IDEOGRAPH - 0xD4D2: 0x540C, //CJK UNIFIED IDEOGRAPH - 0xD4D3: 0x61A7, //CJK UNIFIED IDEOGRAPH - 0xD4D4: 0x6771, //CJK UNIFIED IDEOGRAPH - 0xD4D5: 0x6850, //CJK UNIFIED IDEOGRAPH - 0xD4D6: 0x68DF, //CJK UNIFIED IDEOGRAPH - 0xD4D7: 0x6D1E, //CJK UNIFIED IDEOGRAPH - 0xD4D8: 0x6F7C, //CJK UNIFIED IDEOGRAPH - 0xD4D9: 0x75BC, //CJK UNIFIED IDEOGRAPH - 0xD4DA: 0x77B3, //CJK UNIFIED IDEOGRAPH - 0xD4DB: 0x7AE5, //CJK UNIFIED IDEOGRAPH - 0xD4DC: 0x80F4, //CJK UNIFIED IDEOGRAPH - 0xD4DD: 0x8463, //CJK UNIFIED IDEOGRAPH - 0xD4DE: 0x9285, //CJK UNIFIED IDEOGRAPH - 0xD4DF: 0x515C, //CJK UNIFIED IDEOGRAPH - 0xD4E0: 0x6597, //CJK UNIFIED IDEOGRAPH - 0xD4E1: 0x675C, //CJK UNIFIED IDEOGRAPH - 0xD4E2: 0x6793, //CJK UNIFIED IDEOGRAPH - 0xD4E3: 0x75D8, //CJK UNIFIED IDEOGRAPH - 0xD4E4: 0x7AC7, //CJK UNIFIED IDEOGRAPH - 0xD4E5: 0x8373, //CJK UNIFIED IDEOGRAPH - 0xD4E6: 0xF95A, //CJK COMPATIBILITY IDEOGRAPH - 0xD4E7: 0x8C46, //CJK UNIFIED IDEOGRAPH - 0xD4E8: 0x9017, //CJK UNIFIED IDEOGRAPH - 0xD4E9: 0x982D, //CJK UNIFIED IDEOGRAPH - 0xD4EA: 0x5C6F, //CJK UNIFIED IDEOGRAPH - 0xD4EB: 0x81C0, //CJK UNIFIED IDEOGRAPH - 0xD4EC: 0x829A, //CJK UNIFIED IDEOGRAPH - 0xD4ED: 0x9041, //CJK UNIFIED IDEOGRAPH - 0xD4EE: 0x906F, //CJK UNIFIED IDEOGRAPH - 0xD4EF: 0x920D, //CJK UNIFIED IDEOGRAPH - 0xD4F0: 0x5F97, //CJK UNIFIED IDEOGRAPH - 0xD4F1: 0x5D9D, //CJK UNIFIED IDEOGRAPH - 0xD4F2: 0x6A59, //CJK UNIFIED IDEOGRAPH - 0xD4F3: 0x71C8, //CJK UNIFIED IDEOGRAPH - 0xD4F4: 0x767B, //CJK UNIFIED IDEOGRAPH - 0xD4F5: 0x7B49, //CJK UNIFIED IDEOGRAPH - 0xD4F6: 0x85E4, //CJK UNIFIED IDEOGRAPH - 0xD4F7: 0x8B04, //CJK UNIFIED IDEOGRAPH - 0xD4F8: 0x9127, //CJK UNIFIED IDEOGRAPH - 0xD4F9: 0x9A30, //CJK UNIFIED IDEOGRAPH - 0xD4FA: 0x5587, //CJK UNIFIED IDEOGRAPH - 0xD4FB: 0x61F6, //CJK UNIFIED IDEOGRAPH - 0xD4FC: 0xF95B, //CJK COMPATIBILITY IDEOGRAPH - 0xD4FD: 0x7669, //CJK UNIFIED IDEOGRAPH - 0xD4FE: 0x7F85, //CJK UNIFIED IDEOGRAPH - 0xD5A1: 0x863F, //CJK UNIFIED IDEOGRAPH - 0xD5A2: 0x87BA, //CJK UNIFIED IDEOGRAPH - 0xD5A3: 0x88F8, //CJK UNIFIED IDEOGRAPH - 0xD5A4: 0x908F, //CJK UNIFIED IDEOGRAPH - 0xD5A5: 0xF95C, //CJK COMPATIBILITY IDEOGRAPH - 0xD5A6: 0x6D1B, //CJK UNIFIED IDEOGRAPH - 0xD5A7: 0x70D9, //CJK UNIFIED IDEOGRAPH - 0xD5A8: 0x73DE, //CJK UNIFIED IDEOGRAPH - 0xD5A9: 0x7D61, //CJK UNIFIED IDEOGRAPH - 0xD5AA: 0x843D, //CJK UNIFIED IDEOGRAPH - 0xD5AB: 0xF95D, //CJK COMPATIBILITY IDEOGRAPH - 0xD5AC: 0x916A, //CJK UNIFIED IDEOGRAPH - 0xD5AD: 0x99F1, //CJK UNIFIED IDEOGRAPH - 0xD5AE: 0xF95E, //CJK COMPATIBILITY IDEOGRAPH - 0xD5AF: 0x4E82, //CJK UNIFIED IDEOGRAPH - 0xD5B0: 0x5375, //CJK UNIFIED IDEOGRAPH - 0xD5B1: 0x6B04, //CJK UNIFIED IDEOGRAPH - 0xD5B2: 0x6B12, //CJK UNIFIED IDEOGRAPH - 0xD5B3: 0x703E, //CJK UNIFIED IDEOGRAPH - 0xD5B4: 0x721B, //CJK UNIFIED IDEOGRAPH - 0xD5B5: 0x862D, //CJK UNIFIED IDEOGRAPH - 0xD5B6: 0x9E1E, //CJK UNIFIED IDEOGRAPH - 0xD5B7: 0x524C, //CJK UNIFIED IDEOGRAPH - 0xD5B8: 0x8FA3, //CJK UNIFIED IDEOGRAPH - 0xD5B9: 0x5D50, //CJK UNIFIED IDEOGRAPH - 0xD5BA: 0x64E5, //CJK UNIFIED IDEOGRAPH - 0xD5BB: 0x652C, //CJK UNIFIED IDEOGRAPH - 0xD5BC: 0x6B16, //CJK UNIFIED IDEOGRAPH - 0xD5BD: 0x6FEB, //CJK UNIFIED IDEOGRAPH - 0xD5BE: 0x7C43, //CJK UNIFIED IDEOGRAPH - 0xD5BF: 0x7E9C, //CJK UNIFIED IDEOGRAPH - 0xD5C0: 0x85CD, //CJK UNIFIED IDEOGRAPH - 0xD5C1: 0x8964, //CJK UNIFIED IDEOGRAPH - 0xD5C2: 0x89BD, //CJK UNIFIED IDEOGRAPH - 0xD5C3: 0x62C9, //CJK UNIFIED IDEOGRAPH - 0xD5C4: 0x81D8, //CJK UNIFIED IDEOGRAPH - 0xD5C5: 0x881F, //CJK UNIFIED IDEOGRAPH - 0xD5C6: 0x5ECA, //CJK UNIFIED IDEOGRAPH - 0xD5C7: 0x6717, //CJK UNIFIED IDEOGRAPH - 0xD5C8: 0x6D6A, //CJK UNIFIED IDEOGRAPH - 0xD5C9: 0x72FC, //CJK UNIFIED IDEOGRAPH - 0xD5CA: 0x7405, //CJK UNIFIED IDEOGRAPH - 0xD5CB: 0x746F, //CJK UNIFIED IDEOGRAPH - 0xD5CC: 0x8782, //CJK UNIFIED IDEOGRAPH - 0xD5CD: 0x90DE, //CJK UNIFIED IDEOGRAPH - 0xD5CE: 0x4F86, //CJK UNIFIED IDEOGRAPH - 0xD5CF: 0x5D0D, //CJK UNIFIED IDEOGRAPH - 0xD5D0: 0x5FA0, //CJK UNIFIED IDEOGRAPH - 0xD5D1: 0x840A, //CJK UNIFIED IDEOGRAPH - 0xD5D2: 0x51B7, //CJK UNIFIED IDEOGRAPH - 0xD5D3: 0x63A0, //CJK UNIFIED IDEOGRAPH - 0xD5D4: 0x7565, //CJK UNIFIED IDEOGRAPH - 0xD5D5: 0x4EAE, //CJK UNIFIED IDEOGRAPH - 0xD5D6: 0x5006, //CJK UNIFIED IDEOGRAPH - 0xD5D7: 0x5169, //CJK UNIFIED IDEOGRAPH - 0xD5D8: 0x51C9, //CJK UNIFIED IDEOGRAPH - 0xD5D9: 0x6881, //CJK UNIFIED IDEOGRAPH - 0xD5DA: 0x6A11, //CJK UNIFIED IDEOGRAPH - 0xD5DB: 0x7CAE, //CJK UNIFIED IDEOGRAPH - 0xD5DC: 0x7CB1, //CJK UNIFIED IDEOGRAPH - 0xD5DD: 0x7CE7, //CJK UNIFIED IDEOGRAPH - 0xD5DE: 0x826F, //CJK UNIFIED IDEOGRAPH - 0xD5DF: 0x8AD2, //CJK UNIFIED IDEOGRAPH - 0xD5E0: 0x8F1B, //CJK UNIFIED IDEOGRAPH - 0xD5E1: 0x91CF, //CJK UNIFIED IDEOGRAPH - 0xD5E2: 0x4FB6, //CJK UNIFIED IDEOGRAPH - 0xD5E3: 0x5137, //CJK UNIFIED IDEOGRAPH - 0xD5E4: 0x52F5, //CJK UNIFIED IDEOGRAPH - 0xD5E5: 0x5442, //CJK UNIFIED IDEOGRAPH - 0xD5E6: 0x5EEC, //CJK UNIFIED IDEOGRAPH - 0xD5E7: 0x616E, //CJK UNIFIED IDEOGRAPH - 0xD5E8: 0x623E, //CJK UNIFIED IDEOGRAPH - 0xD5E9: 0x65C5, //CJK UNIFIED IDEOGRAPH - 0xD5EA: 0x6ADA, //CJK UNIFIED IDEOGRAPH - 0xD5EB: 0x6FFE, //CJK UNIFIED IDEOGRAPH - 0xD5EC: 0x792A, //CJK UNIFIED IDEOGRAPH - 0xD5ED: 0x85DC, //CJK UNIFIED IDEOGRAPH - 0xD5EE: 0x8823, //CJK UNIFIED IDEOGRAPH - 0xD5EF: 0x95AD, //CJK UNIFIED IDEOGRAPH - 0xD5F0: 0x9A62, //CJK UNIFIED IDEOGRAPH - 0xD5F1: 0x9A6A, //CJK UNIFIED IDEOGRAPH - 0xD5F2: 0x9E97, //CJK UNIFIED IDEOGRAPH - 0xD5F3: 0x9ECE, //CJK UNIFIED IDEOGRAPH - 0xD5F4: 0x529B, //CJK UNIFIED IDEOGRAPH - 0xD5F5: 0x66C6, //CJK UNIFIED IDEOGRAPH - 0xD5F6: 0x6B77, //CJK UNIFIED IDEOGRAPH - 0xD5F7: 0x701D, //CJK UNIFIED IDEOGRAPH - 0xD5F8: 0x792B, //CJK UNIFIED IDEOGRAPH - 0xD5F9: 0x8F62, //CJK UNIFIED IDEOGRAPH - 0xD5FA: 0x9742, //CJK UNIFIED IDEOGRAPH - 0xD5FB: 0x6190, //CJK UNIFIED IDEOGRAPH - 0xD5FC: 0x6200, //CJK UNIFIED IDEOGRAPH - 0xD5FD: 0x6523, //CJK UNIFIED IDEOGRAPH - 0xD5FE: 0x6F23, //CJK UNIFIED IDEOGRAPH - 0xD6A1: 0x7149, //CJK UNIFIED IDEOGRAPH - 0xD6A2: 0x7489, //CJK UNIFIED IDEOGRAPH - 0xD6A3: 0x7DF4, //CJK UNIFIED IDEOGRAPH - 0xD6A4: 0x806F, //CJK UNIFIED IDEOGRAPH - 0xD6A5: 0x84EE, //CJK UNIFIED IDEOGRAPH - 0xD6A6: 0x8F26, //CJK UNIFIED IDEOGRAPH - 0xD6A7: 0x9023, //CJK UNIFIED IDEOGRAPH - 0xD6A8: 0x934A, //CJK UNIFIED IDEOGRAPH - 0xD6A9: 0x51BD, //CJK UNIFIED IDEOGRAPH - 0xD6AA: 0x5217, //CJK UNIFIED IDEOGRAPH - 0xD6AB: 0x52A3, //CJK UNIFIED IDEOGRAPH - 0xD6AC: 0x6D0C, //CJK UNIFIED IDEOGRAPH - 0xD6AD: 0x70C8, //CJK UNIFIED IDEOGRAPH - 0xD6AE: 0x88C2, //CJK UNIFIED IDEOGRAPH - 0xD6AF: 0x5EC9, //CJK UNIFIED IDEOGRAPH - 0xD6B0: 0x6582, //CJK UNIFIED IDEOGRAPH - 0xD6B1: 0x6BAE, //CJK UNIFIED IDEOGRAPH - 0xD6B2: 0x6FC2, //CJK UNIFIED IDEOGRAPH - 0xD6B3: 0x7C3E, //CJK UNIFIED IDEOGRAPH - 0xD6B4: 0x7375, //CJK UNIFIED IDEOGRAPH - 0xD6B5: 0x4EE4, //CJK UNIFIED IDEOGRAPH - 0xD6B6: 0x4F36, //CJK UNIFIED IDEOGRAPH - 0xD6B7: 0x56F9, //CJK UNIFIED IDEOGRAPH - 0xD6B8: 0xF95F, //CJK COMPATIBILITY IDEOGRAPH - 0xD6B9: 0x5CBA, //CJK UNIFIED IDEOGRAPH - 0xD6BA: 0x5DBA, //CJK UNIFIED IDEOGRAPH - 0xD6BB: 0x601C, //CJK UNIFIED IDEOGRAPH - 0xD6BC: 0x73B2, //CJK UNIFIED IDEOGRAPH - 0xD6BD: 0x7B2D, //CJK UNIFIED IDEOGRAPH - 0xD6BE: 0x7F9A, //CJK UNIFIED IDEOGRAPH - 0xD6BF: 0x7FCE, //CJK UNIFIED IDEOGRAPH - 0xD6C0: 0x8046, //CJK UNIFIED IDEOGRAPH - 0xD6C1: 0x901E, //CJK UNIFIED IDEOGRAPH - 0xD6C2: 0x9234, //CJK UNIFIED IDEOGRAPH - 0xD6C3: 0x96F6, //CJK UNIFIED IDEOGRAPH - 0xD6C4: 0x9748, //CJK UNIFIED IDEOGRAPH - 0xD6C5: 0x9818, //CJK UNIFIED IDEOGRAPH - 0xD6C6: 0x9F61, //CJK UNIFIED IDEOGRAPH - 0xD6C7: 0x4F8B, //CJK UNIFIED IDEOGRAPH - 0xD6C8: 0x6FA7, //CJK UNIFIED IDEOGRAPH - 0xD6C9: 0x79AE, //CJK UNIFIED IDEOGRAPH - 0xD6CA: 0x91B4, //CJK UNIFIED IDEOGRAPH - 0xD6CB: 0x96B7, //CJK UNIFIED IDEOGRAPH - 0xD6CC: 0x52DE, //CJK UNIFIED IDEOGRAPH - 0xD6CD: 0xF960, //CJK COMPATIBILITY IDEOGRAPH - 0xD6CE: 0x6488, //CJK UNIFIED IDEOGRAPH - 0xD6CF: 0x64C4, //CJK UNIFIED IDEOGRAPH - 0xD6D0: 0x6AD3, //CJK UNIFIED IDEOGRAPH - 0xD6D1: 0x6F5E, //CJK UNIFIED IDEOGRAPH - 0xD6D2: 0x7018, //CJK UNIFIED IDEOGRAPH - 0xD6D3: 0x7210, //CJK UNIFIED IDEOGRAPH - 0xD6D4: 0x76E7, //CJK UNIFIED IDEOGRAPH - 0xD6D5: 0x8001, //CJK UNIFIED IDEOGRAPH - 0xD6D6: 0x8606, //CJK UNIFIED IDEOGRAPH - 0xD6D7: 0x865C, //CJK UNIFIED IDEOGRAPH - 0xD6D8: 0x8DEF, //CJK UNIFIED IDEOGRAPH - 0xD6D9: 0x8F05, //CJK UNIFIED IDEOGRAPH - 0xD6DA: 0x9732, //CJK UNIFIED IDEOGRAPH - 0xD6DB: 0x9B6F, //CJK UNIFIED IDEOGRAPH - 0xD6DC: 0x9DFA, //CJK UNIFIED IDEOGRAPH - 0xD6DD: 0x9E75, //CJK UNIFIED IDEOGRAPH - 0xD6DE: 0x788C, //CJK UNIFIED IDEOGRAPH - 0xD6DF: 0x797F, //CJK UNIFIED IDEOGRAPH - 0xD6E0: 0x7DA0, //CJK UNIFIED IDEOGRAPH - 0xD6E1: 0x83C9, //CJK UNIFIED IDEOGRAPH - 0xD6E2: 0x9304, //CJK UNIFIED IDEOGRAPH - 0xD6E3: 0x9E7F, //CJK UNIFIED IDEOGRAPH - 0xD6E4: 0x9E93, //CJK UNIFIED IDEOGRAPH - 0xD6E5: 0x8AD6, //CJK UNIFIED IDEOGRAPH - 0xD6E6: 0x58DF, //CJK UNIFIED IDEOGRAPH - 0xD6E7: 0x5F04, //CJK UNIFIED IDEOGRAPH - 0xD6E8: 0x6727, //CJK UNIFIED IDEOGRAPH - 0xD6E9: 0x7027, //CJK UNIFIED IDEOGRAPH - 0xD6EA: 0x74CF, //CJK UNIFIED IDEOGRAPH - 0xD6EB: 0x7C60, //CJK UNIFIED IDEOGRAPH - 0xD6EC: 0x807E, //CJK UNIFIED IDEOGRAPH - 0xD6ED: 0x5121, //CJK UNIFIED IDEOGRAPH - 0xD6EE: 0x7028, //CJK UNIFIED IDEOGRAPH - 0xD6EF: 0x7262, //CJK UNIFIED IDEOGRAPH - 0xD6F0: 0x78CA, //CJK UNIFIED IDEOGRAPH - 0xD6F1: 0x8CC2, //CJK UNIFIED IDEOGRAPH - 0xD6F2: 0x8CDA, //CJK UNIFIED IDEOGRAPH - 0xD6F3: 0x8CF4, //CJK UNIFIED IDEOGRAPH - 0xD6F4: 0x96F7, //CJK UNIFIED IDEOGRAPH - 0xD6F5: 0x4E86, //CJK UNIFIED IDEOGRAPH - 0xD6F6: 0x50DA, //CJK UNIFIED IDEOGRAPH - 0xD6F7: 0x5BEE, //CJK UNIFIED IDEOGRAPH - 0xD6F8: 0x5ED6, //CJK UNIFIED IDEOGRAPH - 0xD6F9: 0x6599, //CJK UNIFIED IDEOGRAPH - 0xD6FA: 0x71CE, //CJK UNIFIED IDEOGRAPH - 0xD6FB: 0x7642, //CJK UNIFIED IDEOGRAPH - 0xD6FC: 0x77AD, //CJK UNIFIED IDEOGRAPH - 0xD6FD: 0x804A, //CJK UNIFIED IDEOGRAPH - 0xD6FE: 0x84FC, //CJK UNIFIED IDEOGRAPH - 0xD7A1: 0x907C, //CJK UNIFIED IDEOGRAPH - 0xD7A2: 0x9B27, //CJK UNIFIED IDEOGRAPH - 0xD7A3: 0x9F8D, //CJK UNIFIED IDEOGRAPH - 0xD7A4: 0x58D8, //CJK UNIFIED IDEOGRAPH - 0xD7A5: 0x5A41, //CJK UNIFIED IDEOGRAPH - 0xD7A6: 0x5C62, //CJK UNIFIED IDEOGRAPH - 0xD7A7: 0x6A13, //CJK UNIFIED IDEOGRAPH - 0xD7A8: 0x6DDA, //CJK UNIFIED IDEOGRAPH - 0xD7A9: 0x6F0F, //CJK UNIFIED IDEOGRAPH - 0xD7AA: 0x763B, //CJK UNIFIED IDEOGRAPH - 0xD7AB: 0x7D2F, //CJK UNIFIED IDEOGRAPH - 0xD7AC: 0x7E37, //CJK UNIFIED IDEOGRAPH - 0xD7AD: 0x851E, //CJK UNIFIED IDEOGRAPH - 0xD7AE: 0x8938, //CJK UNIFIED IDEOGRAPH - 0xD7AF: 0x93E4, //CJK UNIFIED IDEOGRAPH - 0xD7B0: 0x964B, //CJK UNIFIED IDEOGRAPH - 0xD7B1: 0x5289, //CJK UNIFIED IDEOGRAPH - 0xD7B2: 0x65D2, //CJK UNIFIED IDEOGRAPH - 0xD7B3: 0x67F3, //CJK UNIFIED IDEOGRAPH - 0xD7B4: 0x69B4, //CJK UNIFIED IDEOGRAPH - 0xD7B5: 0x6D41, //CJK UNIFIED IDEOGRAPH - 0xD7B6: 0x6E9C, //CJK UNIFIED IDEOGRAPH - 0xD7B7: 0x700F, //CJK UNIFIED IDEOGRAPH - 0xD7B8: 0x7409, //CJK UNIFIED IDEOGRAPH - 0xD7B9: 0x7460, //CJK UNIFIED IDEOGRAPH - 0xD7BA: 0x7559, //CJK UNIFIED IDEOGRAPH - 0xD7BB: 0x7624, //CJK UNIFIED IDEOGRAPH - 0xD7BC: 0x786B, //CJK UNIFIED IDEOGRAPH - 0xD7BD: 0x8B2C, //CJK UNIFIED IDEOGRAPH - 0xD7BE: 0x985E, //CJK UNIFIED IDEOGRAPH - 0xD7BF: 0x516D, //CJK UNIFIED IDEOGRAPH - 0xD7C0: 0x622E, //CJK UNIFIED IDEOGRAPH - 0xD7C1: 0x9678, //CJK UNIFIED IDEOGRAPH - 0xD7C2: 0x4F96, //CJK UNIFIED IDEOGRAPH - 0xD7C3: 0x502B, //CJK UNIFIED IDEOGRAPH - 0xD7C4: 0x5D19, //CJK UNIFIED IDEOGRAPH - 0xD7C5: 0x6DEA, //CJK UNIFIED IDEOGRAPH - 0xD7C6: 0x7DB8, //CJK UNIFIED IDEOGRAPH - 0xD7C7: 0x8F2A, //CJK UNIFIED IDEOGRAPH - 0xD7C8: 0x5F8B, //CJK UNIFIED IDEOGRAPH - 0xD7C9: 0x6144, //CJK UNIFIED IDEOGRAPH - 0xD7CA: 0x6817, //CJK UNIFIED IDEOGRAPH - 0xD7CB: 0xF961, //CJK COMPATIBILITY IDEOGRAPH - 0xD7CC: 0x9686, //CJK UNIFIED IDEOGRAPH - 0xD7CD: 0x52D2, //CJK UNIFIED IDEOGRAPH - 0xD7CE: 0x808B, //CJK UNIFIED IDEOGRAPH - 0xD7CF: 0x51DC, //CJK UNIFIED IDEOGRAPH - 0xD7D0: 0x51CC, //CJK UNIFIED IDEOGRAPH - 0xD7D1: 0x695E, //CJK UNIFIED IDEOGRAPH - 0xD7D2: 0x7A1C, //CJK UNIFIED IDEOGRAPH - 0xD7D3: 0x7DBE, //CJK UNIFIED IDEOGRAPH - 0xD7D4: 0x83F1, //CJK UNIFIED IDEOGRAPH - 0xD7D5: 0x9675, //CJK UNIFIED IDEOGRAPH - 0xD7D6: 0x4FDA, //CJK UNIFIED IDEOGRAPH - 0xD7D7: 0x5229, //CJK UNIFIED IDEOGRAPH - 0xD7D8: 0x5398, //CJK UNIFIED IDEOGRAPH - 0xD7D9: 0x540F, //CJK UNIFIED IDEOGRAPH - 0xD7DA: 0x550E, //CJK UNIFIED IDEOGRAPH - 0xD7DB: 0x5C65, //CJK UNIFIED IDEOGRAPH - 0xD7DC: 0x60A7, //CJK UNIFIED IDEOGRAPH - 0xD7DD: 0x674E, //CJK UNIFIED IDEOGRAPH - 0xD7DE: 0x68A8, //CJK UNIFIED IDEOGRAPH - 0xD7DF: 0x6D6C, //CJK UNIFIED IDEOGRAPH - 0xD7E0: 0x7281, //CJK UNIFIED IDEOGRAPH - 0xD7E1: 0x72F8, //CJK UNIFIED IDEOGRAPH - 0xD7E2: 0x7406, //CJK UNIFIED IDEOGRAPH - 0xD7E3: 0x7483, //CJK UNIFIED IDEOGRAPH - 0xD7E4: 0xF962, //CJK COMPATIBILITY IDEOGRAPH - 0xD7E5: 0x75E2, //CJK UNIFIED IDEOGRAPH - 0xD7E6: 0x7C6C, //CJK UNIFIED IDEOGRAPH - 0xD7E7: 0x7F79, //CJK UNIFIED IDEOGRAPH - 0xD7E8: 0x7FB8, //CJK UNIFIED IDEOGRAPH - 0xD7E9: 0x8389, //CJK UNIFIED IDEOGRAPH - 0xD7EA: 0x88CF, //CJK UNIFIED IDEOGRAPH - 0xD7EB: 0x88E1, //CJK UNIFIED IDEOGRAPH - 0xD7EC: 0x91CC, //CJK UNIFIED IDEOGRAPH - 0xD7ED: 0x91D0, //CJK UNIFIED IDEOGRAPH - 0xD7EE: 0x96E2, //CJK UNIFIED IDEOGRAPH - 0xD7EF: 0x9BC9, //CJK UNIFIED IDEOGRAPH - 0xD7F0: 0x541D, //CJK UNIFIED IDEOGRAPH - 0xD7F1: 0x6F7E, //CJK UNIFIED IDEOGRAPH - 0xD7F2: 0x71D0, //CJK UNIFIED IDEOGRAPH - 0xD7F3: 0x7498, //CJK UNIFIED IDEOGRAPH - 0xD7F4: 0x85FA, //CJK UNIFIED IDEOGRAPH - 0xD7F5: 0x8EAA, //CJK UNIFIED IDEOGRAPH - 0xD7F6: 0x96A3, //CJK UNIFIED IDEOGRAPH - 0xD7F7: 0x9C57, //CJK UNIFIED IDEOGRAPH - 0xD7F8: 0x9E9F, //CJK UNIFIED IDEOGRAPH - 0xD7F9: 0x6797, //CJK UNIFIED IDEOGRAPH - 0xD7FA: 0x6DCB, //CJK UNIFIED IDEOGRAPH - 0xD7FB: 0x7433, //CJK UNIFIED IDEOGRAPH - 0xD7FC: 0x81E8, //CJK UNIFIED IDEOGRAPH - 0xD7FD: 0x9716, //CJK UNIFIED IDEOGRAPH - 0xD7FE: 0x782C, //CJK UNIFIED IDEOGRAPH - 0xD8A1: 0x7ACB, //CJK UNIFIED IDEOGRAPH - 0xD8A2: 0x7B20, //CJK UNIFIED IDEOGRAPH - 0xD8A3: 0x7C92, //CJK UNIFIED IDEOGRAPH - 0xD8A4: 0x6469, //CJK UNIFIED IDEOGRAPH - 0xD8A5: 0x746A, //CJK UNIFIED IDEOGRAPH - 0xD8A6: 0x75F2, //CJK UNIFIED IDEOGRAPH - 0xD8A7: 0x78BC, //CJK UNIFIED IDEOGRAPH - 0xD8A8: 0x78E8, //CJK UNIFIED IDEOGRAPH - 0xD8A9: 0x99AC, //CJK UNIFIED IDEOGRAPH - 0xD8AA: 0x9B54, //CJK UNIFIED IDEOGRAPH - 0xD8AB: 0x9EBB, //CJK UNIFIED IDEOGRAPH - 0xD8AC: 0x5BDE, //CJK UNIFIED IDEOGRAPH - 0xD8AD: 0x5E55, //CJK UNIFIED IDEOGRAPH - 0xD8AE: 0x6F20, //CJK UNIFIED IDEOGRAPH - 0xD8AF: 0x819C, //CJK UNIFIED IDEOGRAPH - 0xD8B0: 0x83AB, //CJK UNIFIED IDEOGRAPH - 0xD8B1: 0x9088, //CJK UNIFIED IDEOGRAPH - 0xD8B2: 0x4E07, //CJK UNIFIED IDEOGRAPH - 0xD8B3: 0x534D, //CJK UNIFIED IDEOGRAPH - 0xD8B4: 0x5A29, //CJK UNIFIED IDEOGRAPH - 0xD8B5: 0x5DD2, //CJK UNIFIED IDEOGRAPH - 0xD8B6: 0x5F4E, //CJK UNIFIED IDEOGRAPH - 0xD8B7: 0x6162, //CJK UNIFIED IDEOGRAPH - 0xD8B8: 0x633D, //CJK UNIFIED IDEOGRAPH - 0xD8B9: 0x6669, //CJK UNIFIED IDEOGRAPH - 0xD8BA: 0x66FC, //CJK UNIFIED IDEOGRAPH - 0xD8BB: 0x6EFF, //CJK UNIFIED IDEOGRAPH - 0xD8BC: 0x6F2B, //CJK UNIFIED IDEOGRAPH - 0xD8BD: 0x7063, //CJK UNIFIED IDEOGRAPH - 0xD8BE: 0x779E, //CJK UNIFIED IDEOGRAPH - 0xD8BF: 0x842C, //CJK UNIFIED IDEOGRAPH - 0xD8C0: 0x8513, //CJK UNIFIED IDEOGRAPH - 0xD8C1: 0x883B, //CJK UNIFIED IDEOGRAPH - 0xD8C2: 0x8F13, //CJK UNIFIED IDEOGRAPH - 0xD8C3: 0x9945, //CJK UNIFIED IDEOGRAPH - 0xD8C4: 0x9C3B, //CJK UNIFIED IDEOGRAPH - 0xD8C5: 0x551C, //CJK UNIFIED IDEOGRAPH - 0xD8C6: 0x62B9, //CJK UNIFIED IDEOGRAPH - 0xD8C7: 0x672B, //CJK UNIFIED IDEOGRAPH - 0xD8C8: 0x6CAB, //CJK UNIFIED IDEOGRAPH - 0xD8C9: 0x8309, //CJK UNIFIED IDEOGRAPH - 0xD8CA: 0x896A, //CJK UNIFIED IDEOGRAPH - 0xD8CB: 0x977A, //CJK UNIFIED IDEOGRAPH - 0xD8CC: 0x4EA1, //CJK UNIFIED IDEOGRAPH - 0xD8CD: 0x5984, //CJK UNIFIED IDEOGRAPH - 0xD8CE: 0x5FD8, //CJK UNIFIED IDEOGRAPH - 0xD8CF: 0x5FD9, //CJK UNIFIED IDEOGRAPH - 0xD8D0: 0x671B, //CJK UNIFIED IDEOGRAPH - 0xD8D1: 0x7DB2, //CJK UNIFIED IDEOGRAPH - 0xD8D2: 0x7F54, //CJK UNIFIED IDEOGRAPH - 0xD8D3: 0x8292, //CJK UNIFIED IDEOGRAPH - 0xD8D4: 0x832B, //CJK UNIFIED IDEOGRAPH - 0xD8D5: 0x83BD, //CJK UNIFIED IDEOGRAPH - 0xD8D6: 0x8F1E, //CJK UNIFIED IDEOGRAPH - 0xD8D7: 0x9099, //CJK UNIFIED IDEOGRAPH - 0xD8D8: 0x57CB, //CJK UNIFIED IDEOGRAPH - 0xD8D9: 0x59B9, //CJK UNIFIED IDEOGRAPH - 0xD8DA: 0x5A92, //CJK UNIFIED IDEOGRAPH - 0xD8DB: 0x5BD0, //CJK UNIFIED IDEOGRAPH - 0xD8DC: 0x6627, //CJK UNIFIED IDEOGRAPH - 0xD8DD: 0x679A, //CJK UNIFIED IDEOGRAPH - 0xD8DE: 0x6885, //CJK UNIFIED IDEOGRAPH - 0xD8DF: 0x6BCF, //CJK UNIFIED IDEOGRAPH - 0xD8E0: 0x7164, //CJK UNIFIED IDEOGRAPH - 0xD8E1: 0x7F75, //CJK UNIFIED IDEOGRAPH - 0xD8E2: 0x8CB7, //CJK UNIFIED IDEOGRAPH - 0xD8E3: 0x8CE3, //CJK UNIFIED IDEOGRAPH - 0xD8E4: 0x9081, //CJK UNIFIED IDEOGRAPH - 0xD8E5: 0x9B45, //CJK UNIFIED IDEOGRAPH - 0xD8E6: 0x8108, //CJK UNIFIED IDEOGRAPH - 0xD8E7: 0x8C8A, //CJK UNIFIED IDEOGRAPH - 0xD8E8: 0x964C, //CJK UNIFIED IDEOGRAPH - 0xD8E9: 0x9A40, //CJK UNIFIED IDEOGRAPH - 0xD8EA: 0x9EA5, //CJK UNIFIED IDEOGRAPH - 0xD8EB: 0x5B5F, //CJK UNIFIED IDEOGRAPH - 0xD8EC: 0x6C13, //CJK UNIFIED IDEOGRAPH - 0xD8ED: 0x731B, //CJK UNIFIED IDEOGRAPH - 0xD8EE: 0x76F2, //CJK UNIFIED IDEOGRAPH - 0xD8EF: 0x76DF, //CJK UNIFIED IDEOGRAPH - 0xD8F0: 0x840C, //CJK UNIFIED IDEOGRAPH - 0xD8F1: 0x51AA, //CJK UNIFIED IDEOGRAPH - 0xD8F2: 0x8993, //CJK UNIFIED IDEOGRAPH - 0xD8F3: 0x514D, //CJK UNIFIED IDEOGRAPH - 0xD8F4: 0x5195, //CJK UNIFIED IDEOGRAPH - 0xD8F5: 0x52C9, //CJK UNIFIED IDEOGRAPH - 0xD8F6: 0x68C9, //CJK UNIFIED IDEOGRAPH - 0xD8F7: 0x6C94, //CJK UNIFIED IDEOGRAPH - 0xD8F8: 0x7704, //CJK UNIFIED IDEOGRAPH - 0xD8F9: 0x7720, //CJK UNIFIED IDEOGRAPH - 0xD8FA: 0x7DBF, //CJK UNIFIED IDEOGRAPH - 0xD8FB: 0x7DEC, //CJK UNIFIED IDEOGRAPH - 0xD8FC: 0x9762, //CJK UNIFIED IDEOGRAPH - 0xD8FD: 0x9EB5, //CJK UNIFIED IDEOGRAPH - 0xD8FE: 0x6EC5, //CJK UNIFIED IDEOGRAPH - 0xD9A1: 0x8511, //CJK UNIFIED IDEOGRAPH - 0xD9A2: 0x51A5, //CJK UNIFIED IDEOGRAPH - 0xD9A3: 0x540D, //CJK UNIFIED IDEOGRAPH - 0xD9A4: 0x547D, //CJK UNIFIED IDEOGRAPH - 0xD9A5: 0x660E, //CJK UNIFIED IDEOGRAPH - 0xD9A6: 0x669D, //CJK UNIFIED IDEOGRAPH - 0xD9A7: 0x6927, //CJK UNIFIED IDEOGRAPH - 0xD9A8: 0x6E9F, //CJK UNIFIED IDEOGRAPH - 0xD9A9: 0x76BF, //CJK UNIFIED IDEOGRAPH - 0xD9AA: 0x7791, //CJK UNIFIED IDEOGRAPH - 0xD9AB: 0x8317, //CJK UNIFIED IDEOGRAPH - 0xD9AC: 0x84C2, //CJK UNIFIED IDEOGRAPH - 0xD9AD: 0x879F, //CJK UNIFIED IDEOGRAPH - 0xD9AE: 0x9169, //CJK UNIFIED IDEOGRAPH - 0xD9AF: 0x9298, //CJK UNIFIED IDEOGRAPH - 0xD9B0: 0x9CF4, //CJK UNIFIED IDEOGRAPH - 0xD9B1: 0x8882, //CJK UNIFIED IDEOGRAPH - 0xD9B2: 0x4FAE, //CJK UNIFIED IDEOGRAPH - 0xD9B3: 0x5192, //CJK UNIFIED IDEOGRAPH - 0xD9B4: 0x52DF, //CJK UNIFIED IDEOGRAPH - 0xD9B5: 0x59C6, //CJK UNIFIED IDEOGRAPH - 0xD9B6: 0x5E3D, //CJK UNIFIED IDEOGRAPH - 0xD9B7: 0x6155, //CJK UNIFIED IDEOGRAPH - 0xD9B8: 0x6478, //CJK UNIFIED IDEOGRAPH - 0xD9B9: 0x6479, //CJK UNIFIED IDEOGRAPH - 0xD9BA: 0x66AE, //CJK UNIFIED IDEOGRAPH - 0xD9BB: 0x67D0, //CJK UNIFIED IDEOGRAPH - 0xD9BC: 0x6A21, //CJK UNIFIED IDEOGRAPH - 0xD9BD: 0x6BCD, //CJK UNIFIED IDEOGRAPH - 0xD9BE: 0x6BDB, //CJK UNIFIED IDEOGRAPH - 0xD9BF: 0x725F, //CJK UNIFIED IDEOGRAPH - 0xD9C0: 0x7261, //CJK UNIFIED IDEOGRAPH - 0xD9C1: 0x7441, //CJK UNIFIED IDEOGRAPH - 0xD9C2: 0x7738, //CJK UNIFIED IDEOGRAPH - 0xD9C3: 0x77DB, //CJK UNIFIED IDEOGRAPH - 0xD9C4: 0x8017, //CJK UNIFIED IDEOGRAPH - 0xD9C5: 0x82BC, //CJK UNIFIED IDEOGRAPH - 0xD9C6: 0x8305, //CJK UNIFIED IDEOGRAPH - 0xD9C7: 0x8B00, //CJK UNIFIED IDEOGRAPH - 0xD9C8: 0x8B28, //CJK UNIFIED IDEOGRAPH - 0xD9C9: 0x8C8C, //CJK UNIFIED IDEOGRAPH - 0xD9CA: 0x6728, //CJK UNIFIED IDEOGRAPH - 0xD9CB: 0x6C90, //CJK UNIFIED IDEOGRAPH - 0xD9CC: 0x7267, //CJK UNIFIED IDEOGRAPH - 0xD9CD: 0x76EE, //CJK UNIFIED IDEOGRAPH - 0xD9CE: 0x7766, //CJK UNIFIED IDEOGRAPH - 0xD9CF: 0x7A46, //CJK UNIFIED IDEOGRAPH - 0xD9D0: 0x9DA9, //CJK UNIFIED IDEOGRAPH - 0xD9D1: 0x6B7F, //CJK UNIFIED IDEOGRAPH - 0xD9D2: 0x6C92, //CJK UNIFIED IDEOGRAPH - 0xD9D3: 0x5922, //CJK UNIFIED IDEOGRAPH - 0xD9D4: 0x6726, //CJK UNIFIED IDEOGRAPH - 0xD9D5: 0x8499, //CJK UNIFIED IDEOGRAPH - 0xD9D6: 0x536F, //CJK UNIFIED IDEOGRAPH - 0xD9D7: 0x5893, //CJK UNIFIED IDEOGRAPH - 0xD9D8: 0x5999, //CJK UNIFIED IDEOGRAPH - 0xD9D9: 0x5EDF, //CJK UNIFIED IDEOGRAPH - 0xD9DA: 0x63CF, //CJK UNIFIED IDEOGRAPH - 0xD9DB: 0x6634, //CJK UNIFIED IDEOGRAPH - 0xD9DC: 0x6773, //CJK UNIFIED IDEOGRAPH - 0xD9DD: 0x6E3A, //CJK UNIFIED IDEOGRAPH - 0xD9DE: 0x732B, //CJK UNIFIED IDEOGRAPH - 0xD9DF: 0x7AD7, //CJK UNIFIED IDEOGRAPH - 0xD9E0: 0x82D7, //CJK UNIFIED IDEOGRAPH - 0xD9E1: 0x9328, //CJK UNIFIED IDEOGRAPH - 0xD9E2: 0x52D9, //CJK UNIFIED IDEOGRAPH - 0xD9E3: 0x5DEB, //CJK UNIFIED IDEOGRAPH - 0xD9E4: 0x61AE, //CJK UNIFIED IDEOGRAPH - 0xD9E5: 0x61CB, //CJK UNIFIED IDEOGRAPH - 0xD9E6: 0x620A, //CJK UNIFIED IDEOGRAPH - 0xD9E7: 0x62C7, //CJK UNIFIED IDEOGRAPH - 0xD9E8: 0x64AB, //CJK UNIFIED IDEOGRAPH - 0xD9E9: 0x65E0, //CJK UNIFIED IDEOGRAPH - 0xD9EA: 0x6959, //CJK UNIFIED IDEOGRAPH - 0xD9EB: 0x6B66, //CJK UNIFIED IDEOGRAPH - 0xD9EC: 0x6BCB, //CJK UNIFIED IDEOGRAPH - 0xD9ED: 0x7121, //CJK UNIFIED IDEOGRAPH - 0xD9EE: 0x73F7, //CJK UNIFIED IDEOGRAPH - 0xD9EF: 0x755D, //CJK UNIFIED IDEOGRAPH - 0xD9F0: 0x7E46, //CJK UNIFIED IDEOGRAPH - 0xD9F1: 0x821E, //CJK UNIFIED IDEOGRAPH - 0xD9F2: 0x8302, //CJK UNIFIED IDEOGRAPH - 0xD9F3: 0x856A, //CJK UNIFIED IDEOGRAPH - 0xD9F4: 0x8AA3, //CJK UNIFIED IDEOGRAPH - 0xD9F5: 0x8CBF, //CJK UNIFIED IDEOGRAPH - 0xD9F6: 0x9727, //CJK UNIFIED IDEOGRAPH - 0xD9F7: 0x9D61, //CJK UNIFIED IDEOGRAPH - 0xD9F8: 0x58A8, //CJK UNIFIED IDEOGRAPH - 0xD9F9: 0x9ED8, //CJK UNIFIED IDEOGRAPH - 0xD9FA: 0x5011, //CJK UNIFIED IDEOGRAPH - 0xD9FB: 0x520E, //CJK UNIFIED IDEOGRAPH - 0xD9FC: 0x543B, //CJK UNIFIED IDEOGRAPH - 0xD9FD: 0x554F, //CJK UNIFIED IDEOGRAPH - 0xD9FE: 0x6587, //CJK UNIFIED IDEOGRAPH - 0xDAA1: 0x6C76, //CJK UNIFIED IDEOGRAPH - 0xDAA2: 0x7D0A, //CJK UNIFIED IDEOGRAPH - 0xDAA3: 0x7D0B, //CJK UNIFIED IDEOGRAPH - 0xDAA4: 0x805E, //CJK UNIFIED IDEOGRAPH - 0xDAA5: 0x868A, //CJK UNIFIED IDEOGRAPH - 0xDAA6: 0x9580, //CJK UNIFIED IDEOGRAPH - 0xDAA7: 0x96EF, //CJK UNIFIED IDEOGRAPH - 0xDAA8: 0x52FF, //CJK UNIFIED IDEOGRAPH - 0xDAA9: 0x6C95, //CJK UNIFIED IDEOGRAPH - 0xDAAA: 0x7269, //CJK UNIFIED IDEOGRAPH - 0xDAAB: 0x5473, //CJK UNIFIED IDEOGRAPH - 0xDAAC: 0x5A9A, //CJK UNIFIED IDEOGRAPH - 0xDAAD: 0x5C3E, //CJK UNIFIED IDEOGRAPH - 0xDAAE: 0x5D4B, //CJK UNIFIED IDEOGRAPH - 0xDAAF: 0x5F4C, //CJK UNIFIED IDEOGRAPH - 0xDAB0: 0x5FAE, //CJK UNIFIED IDEOGRAPH - 0xDAB1: 0x672A, //CJK UNIFIED IDEOGRAPH - 0xDAB2: 0x68B6, //CJK UNIFIED IDEOGRAPH - 0xDAB3: 0x6963, //CJK UNIFIED IDEOGRAPH - 0xDAB4: 0x6E3C, //CJK UNIFIED IDEOGRAPH - 0xDAB5: 0x6E44, //CJK UNIFIED IDEOGRAPH - 0xDAB6: 0x7709, //CJK UNIFIED IDEOGRAPH - 0xDAB7: 0x7C73, //CJK UNIFIED IDEOGRAPH - 0xDAB8: 0x7F8E, //CJK UNIFIED IDEOGRAPH - 0xDAB9: 0x8587, //CJK UNIFIED IDEOGRAPH - 0xDABA: 0x8B0E, //CJK UNIFIED IDEOGRAPH - 0xDABB: 0x8FF7, //CJK UNIFIED IDEOGRAPH - 0xDABC: 0x9761, //CJK UNIFIED IDEOGRAPH - 0xDABD: 0x9EF4, //CJK UNIFIED IDEOGRAPH - 0xDABE: 0x5CB7, //CJK UNIFIED IDEOGRAPH - 0xDABF: 0x60B6, //CJK UNIFIED IDEOGRAPH - 0xDAC0: 0x610D, //CJK UNIFIED IDEOGRAPH - 0xDAC1: 0x61AB, //CJK UNIFIED IDEOGRAPH - 0xDAC2: 0x654F, //CJK UNIFIED IDEOGRAPH - 0xDAC3: 0x65FB, //CJK UNIFIED IDEOGRAPH - 0xDAC4: 0x65FC, //CJK UNIFIED IDEOGRAPH - 0xDAC5: 0x6C11, //CJK UNIFIED IDEOGRAPH - 0xDAC6: 0x6CEF, //CJK UNIFIED IDEOGRAPH - 0xDAC7: 0x739F, //CJK UNIFIED IDEOGRAPH - 0xDAC8: 0x73C9, //CJK UNIFIED IDEOGRAPH - 0xDAC9: 0x7DE1, //CJK UNIFIED IDEOGRAPH - 0xDACA: 0x9594, //CJK UNIFIED IDEOGRAPH - 0xDACB: 0x5BC6, //CJK UNIFIED IDEOGRAPH - 0xDACC: 0x871C, //CJK UNIFIED IDEOGRAPH - 0xDACD: 0x8B10, //CJK UNIFIED IDEOGRAPH - 0xDACE: 0x525D, //CJK UNIFIED IDEOGRAPH - 0xDACF: 0x535A, //CJK UNIFIED IDEOGRAPH - 0xDAD0: 0x62CD, //CJK UNIFIED IDEOGRAPH - 0xDAD1: 0x640F, //CJK UNIFIED IDEOGRAPH - 0xDAD2: 0x64B2, //CJK UNIFIED IDEOGRAPH - 0xDAD3: 0x6734, //CJK UNIFIED IDEOGRAPH - 0xDAD4: 0x6A38, //CJK UNIFIED IDEOGRAPH - 0xDAD5: 0x6CCA, //CJK UNIFIED IDEOGRAPH - 0xDAD6: 0x73C0, //CJK UNIFIED IDEOGRAPH - 0xDAD7: 0x749E, //CJK UNIFIED IDEOGRAPH - 0xDAD8: 0x7B94, //CJK UNIFIED IDEOGRAPH - 0xDAD9: 0x7C95, //CJK UNIFIED IDEOGRAPH - 0xDADA: 0x7E1B, //CJK UNIFIED IDEOGRAPH - 0xDADB: 0x818A, //CJK UNIFIED IDEOGRAPH - 0xDADC: 0x8236, //CJK UNIFIED IDEOGRAPH - 0xDADD: 0x8584, //CJK UNIFIED IDEOGRAPH - 0xDADE: 0x8FEB, //CJK UNIFIED IDEOGRAPH - 0xDADF: 0x96F9, //CJK UNIFIED IDEOGRAPH - 0xDAE0: 0x99C1, //CJK UNIFIED IDEOGRAPH - 0xDAE1: 0x4F34, //CJK UNIFIED IDEOGRAPH - 0xDAE2: 0x534A, //CJK UNIFIED IDEOGRAPH - 0xDAE3: 0x53CD, //CJK UNIFIED IDEOGRAPH - 0xDAE4: 0x53DB, //CJK UNIFIED IDEOGRAPH - 0xDAE5: 0x62CC, //CJK UNIFIED IDEOGRAPH - 0xDAE6: 0x642C, //CJK UNIFIED IDEOGRAPH - 0xDAE7: 0x6500, //CJK UNIFIED IDEOGRAPH - 0xDAE8: 0x6591, //CJK UNIFIED IDEOGRAPH - 0xDAE9: 0x69C3, //CJK UNIFIED IDEOGRAPH - 0xDAEA: 0x6CEE, //CJK UNIFIED IDEOGRAPH - 0xDAEB: 0x6F58, //CJK UNIFIED IDEOGRAPH - 0xDAEC: 0x73ED, //CJK UNIFIED IDEOGRAPH - 0xDAED: 0x7554, //CJK UNIFIED IDEOGRAPH - 0xDAEE: 0x7622, //CJK UNIFIED IDEOGRAPH - 0xDAEF: 0x76E4, //CJK UNIFIED IDEOGRAPH - 0xDAF0: 0x76FC, //CJK UNIFIED IDEOGRAPH - 0xDAF1: 0x78D0, //CJK UNIFIED IDEOGRAPH - 0xDAF2: 0x78FB, //CJK UNIFIED IDEOGRAPH - 0xDAF3: 0x792C, //CJK UNIFIED IDEOGRAPH - 0xDAF4: 0x7D46, //CJK UNIFIED IDEOGRAPH - 0xDAF5: 0x822C, //CJK UNIFIED IDEOGRAPH - 0xDAF6: 0x87E0, //CJK UNIFIED IDEOGRAPH - 0xDAF7: 0x8FD4, //CJK UNIFIED IDEOGRAPH - 0xDAF8: 0x9812, //CJK UNIFIED IDEOGRAPH - 0xDAF9: 0x98EF, //CJK UNIFIED IDEOGRAPH - 0xDAFA: 0x52C3, //CJK UNIFIED IDEOGRAPH - 0xDAFB: 0x62D4, //CJK UNIFIED IDEOGRAPH - 0xDAFC: 0x64A5, //CJK UNIFIED IDEOGRAPH - 0xDAFD: 0x6E24, //CJK UNIFIED IDEOGRAPH - 0xDAFE: 0x6F51, //CJK UNIFIED IDEOGRAPH - 0xDBA1: 0x767C, //CJK UNIFIED IDEOGRAPH - 0xDBA2: 0x8DCB, //CJK UNIFIED IDEOGRAPH - 0xDBA3: 0x91B1, //CJK UNIFIED IDEOGRAPH - 0xDBA4: 0x9262, //CJK UNIFIED IDEOGRAPH - 0xDBA5: 0x9AEE, //CJK UNIFIED IDEOGRAPH - 0xDBA6: 0x9B43, //CJK UNIFIED IDEOGRAPH - 0xDBA7: 0x5023, //CJK UNIFIED IDEOGRAPH - 0xDBA8: 0x508D, //CJK UNIFIED IDEOGRAPH - 0xDBA9: 0x574A, //CJK UNIFIED IDEOGRAPH - 0xDBAA: 0x59A8, //CJK UNIFIED IDEOGRAPH - 0xDBAB: 0x5C28, //CJK UNIFIED IDEOGRAPH - 0xDBAC: 0x5E47, //CJK UNIFIED IDEOGRAPH - 0xDBAD: 0x5F77, //CJK UNIFIED IDEOGRAPH - 0xDBAE: 0x623F, //CJK UNIFIED IDEOGRAPH - 0xDBAF: 0x653E, //CJK UNIFIED IDEOGRAPH - 0xDBB0: 0x65B9, //CJK UNIFIED IDEOGRAPH - 0xDBB1: 0x65C1, //CJK UNIFIED IDEOGRAPH - 0xDBB2: 0x6609, //CJK UNIFIED IDEOGRAPH - 0xDBB3: 0x678B, //CJK UNIFIED IDEOGRAPH - 0xDBB4: 0x699C, //CJK UNIFIED IDEOGRAPH - 0xDBB5: 0x6EC2, //CJK UNIFIED IDEOGRAPH - 0xDBB6: 0x78C5, //CJK UNIFIED IDEOGRAPH - 0xDBB7: 0x7D21, //CJK UNIFIED IDEOGRAPH - 0xDBB8: 0x80AA, //CJK UNIFIED IDEOGRAPH - 0xDBB9: 0x8180, //CJK UNIFIED IDEOGRAPH - 0xDBBA: 0x822B, //CJK UNIFIED IDEOGRAPH - 0xDBBB: 0x82B3, //CJK UNIFIED IDEOGRAPH - 0xDBBC: 0x84A1, //CJK UNIFIED IDEOGRAPH - 0xDBBD: 0x868C, //CJK UNIFIED IDEOGRAPH - 0xDBBE: 0x8A2A, //CJK UNIFIED IDEOGRAPH - 0xDBBF: 0x8B17, //CJK UNIFIED IDEOGRAPH - 0xDBC0: 0x90A6, //CJK UNIFIED IDEOGRAPH - 0xDBC1: 0x9632, //CJK UNIFIED IDEOGRAPH - 0xDBC2: 0x9F90, //CJK UNIFIED IDEOGRAPH - 0xDBC3: 0x500D, //CJK UNIFIED IDEOGRAPH - 0xDBC4: 0x4FF3, //CJK UNIFIED IDEOGRAPH - 0xDBC5: 0xF963, //CJK COMPATIBILITY IDEOGRAPH - 0xDBC6: 0x57F9, //CJK UNIFIED IDEOGRAPH - 0xDBC7: 0x5F98, //CJK UNIFIED IDEOGRAPH - 0xDBC8: 0x62DC, //CJK UNIFIED IDEOGRAPH - 0xDBC9: 0x6392, //CJK UNIFIED IDEOGRAPH - 0xDBCA: 0x676F, //CJK UNIFIED IDEOGRAPH - 0xDBCB: 0x6E43, //CJK UNIFIED IDEOGRAPH - 0xDBCC: 0x7119, //CJK UNIFIED IDEOGRAPH - 0xDBCD: 0x76C3, //CJK UNIFIED IDEOGRAPH - 0xDBCE: 0x80CC, //CJK UNIFIED IDEOGRAPH - 0xDBCF: 0x80DA, //CJK UNIFIED IDEOGRAPH - 0xDBD0: 0x88F4, //CJK UNIFIED IDEOGRAPH - 0xDBD1: 0x88F5, //CJK UNIFIED IDEOGRAPH - 0xDBD2: 0x8919, //CJK UNIFIED IDEOGRAPH - 0xDBD3: 0x8CE0, //CJK UNIFIED IDEOGRAPH - 0xDBD4: 0x8F29, //CJK UNIFIED IDEOGRAPH - 0xDBD5: 0x914D, //CJK UNIFIED IDEOGRAPH - 0xDBD6: 0x966A, //CJK UNIFIED IDEOGRAPH - 0xDBD7: 0x4F2F, //CJK UNIFIED IDEOGRAPH - 0xDBD8: 0x4F70, //CJK UNIFIED IDEOGRAPH - 0xDBD9: 0x5E1B, //CJK UNIFIED IDEOGRAPH - 0xDBDA: 0x67CF, //CJK UNIFIED IDEOGRAPH - 0xDBDB: 0x6822, //CJK UNIFIED IDEOGRAPH - 0xDBDC: 0x767D, //CJK UNIFIED IDEOGRAPH - 0xDBDD: 0x767E, //CJK UNIFIED IDEOGRAPH - 0xDBDE: 0x9B44, //CJK UNIFIED IDEOGRAPH - 0xDBDF: 0x5E61, //CJK UNIFIED IDEOGRAPH - 0xDBE0: 0x6A0A, //CJK UNIFIED IDEOGRAPH - 0xDBE1: 0x7169, //CJK UNIFIED IDEOGRAPH - 0xDBE2: 0x71D4, //CJK UNIFIED IDEOGRAPH - 0xDBE3: 0x756A, //CJK UNIFIED IDEOGRAPH - 0xDBE4: 0xF964, //CJK COMPATIBILITY IDEOGRAPH - 0xDBE5: 0x7E41, //CJK UNIFIED IDEOGRAPH - 0xDBE6: 0x8543, //CJK UNIFIED IDEOGRAPH - 0xDBE7: 0x85E9, //CJK UNIFIED IDEOGRAPH - 0xDBE8: 0x98DC, //CJK UNIFIED IDEOGRAPH - 0xDBE9: 0x4F10, //CJK UNIFIED IDEOGRAPH - 0xDBEA: 0x7B4F, //CJK UNIFIED IDEOGRAPH - 0xDBEB: 0x7F70, //CJK UNIFIED IDEOGRAPH - 0xDBEC: 0x95A5, //CJK UNIFIED IDEOGRAPH - 0xDBED: 0x51E1, //CJK UNIFIED IDEOGRAPH - 0xDBEE: 0x5E06, //CJK UNIFIED IDEOGRAPH - 0xDBEF: 0x68B5, //CJK UNIFIED IDEOGRAPH - 0xDBF0: 0x6C3E, //CJK UNIFIED IDEOGRAPH - 0xDBF1: 0x6C4E, //CJK UNIFIED IDEOGRAPH - 0xDBF2: 0x6CDB, //CJK UNIFIED IDEOGRAPH - 0xDBF3: 0x72AF, //CJK UNIFIED IDEOGRAPH - 0xDBF4: 0x7BC4, //CJK UNIFIED IDEOGRAPH - 0xDBF5: 0x8303, //CJK UNIFIED IDEOGRAPH - 0xDBF6: 0x6CD5, //CJK UNIFIED IDEOGRAPH - 0xDBF7: 0x743A, //CJK UNIFIED IDEOGRAPH - 0xDBF8: 0x50FB, //CJK UNIFIED IDEOGRAPH - 0xDBF9: 0x5288, //CJK UNIFIED IDEOGRAPH - 0xDBFA: 0x58C1, //CJK UNIFIED IDEOGRAPH - 0xDBFB: 0x64D8, //CJK UNIFIED IDEOGRAPH - 0xDBFC: 0x6A97, //CJK UNIFIED IDEOGRAPH - 0xDBFD: 0x74A7, //CJK UNIFIED IDEOGRAPH - 0xDBFE: 0x7656, //CJK UNIFIED IDEOGRAPH - 0xDCA1: 0x78A7, //CJK UNIFIED IDEOGRAPH - 0xDCA2: 0x8617, //CJK UNIFIED IDEOGRAPH - 0xDCA3: 0x95E2, //CJK UNIFIED IDEOGRAPH - 0xDCA4: 0x9739, //CJK UNIFIED IDEOGRAPH - 0xDCA5: 0xF965, //CJK COMPATIBILITY IDEOGRAPH - 0xDCA6: 0x535E, //CJK UNIFIED IDEOGRAPH - 0xDCA7: 0x5F01, //CJK UNIFIED IDEOGRAPH - 0xDCA8: 0x8B8A, //CJK UNIFIED IDEOGRAPH - 0xDCA9: 0x8FA8, //CJK UNIFIED IDEOGRAPH - 0xDCAA: 0x8FAF, //CJK UNIFIED IDEOGRAPH - 0xDCAB: 0x908A, //CJK UNIFIED IDEOGRAPH - 0xDCAC: 0x5225, //CJK UNIFIED IDEOGRAPH - 0xDCAD: 0x77A5, //CJK UNIFIED IDEOGRAPH - 0xDCAE: 0x9C49, //CJK UNIFIED IDEOGRAPH - 0xDCAF: 0x9F08, //CJK UNIFIED IDEOGRAPH - 0xDCB0: 0x4E19, //CJK UNIFIED IDEOGRAPH - 0xDCB1: 0x5002, //CJK UNIFIED IDEOGRAPH - 0xDCB2: 0x5175, //CJK UNIFIED IDEOGRAPH - 0xDCB3: 0x5C5B, //CJK UNIFIED IDEOGRAPH - 0xDCB4: 0x5E77, //CJK UNIFIED IDEOGRAPH - 0xDCB5: 0x661E, //CJK UNIFIED IDEOGRAPH - 0xDCB6: 0x663A, //CJK UNIFIED IDEOGRAPH - 0xDCB7: 0x67C4, //CJK UNIFIED IDEOGRAPH - 0xDCB8: 0x68C5, //CJK UNIFIED IDEOGRAPH - 0xDCB9: 0x70B3, //CJK UNIFIED IDEOGRAPH - 0xDCBA: 0x7501, //CJK UNIFIED IDEOGRAPH - 0xDCBB: 0x75C5, //CJK UNIFIED IDEOGRAPH - 0xDCBC: 0x79C9, //CJK UNIFIED IDEOGRAPH - 0xDCBD: 0x7ADD, //CJK UNIFIED IDEOGRAPH - 0xDCBE: 0x8F27, //CJK UNIFIED IDEOGRAPH - 0xDCBF: 0x9920, //CJK UNIFIED IDEOGRAPH - 0xDCC0: 0x9A08, //CJK UNIFIED IDEOGRAPH - 0xDCC1: 0x4FDD, //CJK UNIFIED IDEOGRAPH - 0xDCC2: 0x5821, //CJK UNIFIED IDEOGRAPH - 0xDCC3: 0x5831, //CJK UNIFIED IDEOGRAPH - 0xDCC4: 0x5BF6, //CJK UNIFIED IDEOGRAPH - 0xDCC5: 0x666E, //CJK UNIFIED IDEOGRAPH - 0xDCC6: 0x6B65, //CJK UNIFIED IDEOGRAPH - 0xDCC7: 0x6D11, //CJK UNIFIED IDEOGRAPH - 0xDCC8: 0x6E7A, //CJK UNIFIED IDEOGRAPH - 0xDCC9: 0x6F7D, //CJK UNIFIED IDEOGRAPH - 0xDCCA: 0x73E4, //CJK UNIFIED IDEOGRAPH - 0xDCCB: 0x752B, //CJK UNIFIED IDEOGRAPH - 0xDCCC: 0x83E9, //CJK UNIFIED IDEOGRAPH - 0xDCCD: 0x88DC, //CJK UNIFIED IDEOGRAPH - 0xDCCE: 0x8913, //CJK UNIFIED IDEOGRAPH - 0xDCCF: 0x8B5C, //CJK UNIFIED IDEOGRAPH - 0xDCD0: 0x8F14, //CJK UNIFIED IDEOGRAPH - 0xDCD1: 0x4F0F, //CJK UNIFIED IDEOGRAPH - 0xDCD2: 0x50D5, //CJK UNIFIED IDEOGRAPH - 0xDCD3: 0x5310, //CJK UNIFIED IDEOGRAPH - 0xDCD4: 0x535C, //CJK UNIFIED IDEOGRAPH - 0xDCD5: 0x5B93, //CJK UNIFIED IDEOGRAPH - 0xDCD6: 0x5FA9, //CJK UNIFIED IDEOGRAPH - 0xDCD7: 0x670D, //CJK UNIFIED IDEOGRAPH - 0xDCD8: 0x798F, //CJK UNIFIED IDEOGRAPH - 0xDCD9: 0x8179, //CJK UNIFIED IDEOGRAPH - 0xDCDA: 0x832F, //CJK UNIFIED IDEOGRAPH - 0xDCDB: 0x8514, //CJK UNIFIED IDEOGRAPH - 0xDCDC: 0x8907, //CJK UNIFIED IDEOGRAPH - 0xDCDD: 0x8986, //CJK UNIFIED IDEOGRAPH - 0xDCDE: 0x8F39, //CJK UNIFIED IDEOGRAPH - 0xDCDF: 0x8F3B, //CJK UNIFIED IDEOGRAPH - 0xDCE0: 0x99A5, //CJK UNIFIED IDEOGRAPH - 0xDCE1: 0x9C12, //CJK UNIFIED IDEOGRAPH - 0xDCE2: 0x672C, //CJK UNIFIED IDEOGRAPH - 0xDCE3: 0x4E76, //CJK UNIFIED IDEOGRAPH - 0xDCE4: 0x4FF8, //CJK UNIFIED IDEOGRAPH - 0xDCE5: 0x5949, //CJK UNIFIED IDEOGRAPH - 0xDCE6: 0x5C01, //CJK UNIFIED IDEOGRAPH - 0xDCE7: 0x5CEF, //CJK UNIFIED IDEOGRAPH - 0xDCE8: 0x5CF0, //CJK UNIFIED IDEOGRAPH - 0xDCE9: 0x6367, //CJK UNIFIED IDEOGRAPH - 0xDCEA: 0x68D2, //CJK UNIFIED IDEOGRAPH - 0xDCEB: 0x70FD, //CJK UNIFIED IDEOGRAPH - 0xDCEC: 0x71A2, //CJK UNIFIED IDEOGRAPH - 0xDCED: 0x742B, //CJK UNIFIED IDEOGRAPH - 0xDCEE: 0x7E2B, //CJK UNIFIED IDEOGRAPH - 0xDCEF: 0x84EC, //CJK UNIFIED IDEOGRAPH - 0xDCF0: 0x8702, //CJK UNIFIED IDEOGRAPH - 0xDCF1: 0x9022, //CJK UNIFIED IDEOGRAPH - 0xDCF2: 0x92D2, //CJK UNIFIED IDEOGRAPH - 0xDCF3: 0x9CF3, //CJK UNIFIED IDEOGRAPH - 0xDCF4: 0x4E0D, //CJK UNIFIED IDEOGRAPH - 0xDCF5: 0x4ED8, //CJK UNIFIED IDEOGRAPH - 0xDCF6: 0x4FEF, //CJK UNIFIED IDEOGRAPH - 0xDCF7: 0x5085, //CJK UNIFIED IDEOGRAPH - 0xDCF8: 0x5256, //CJK UNIFIED IDEOGRAPH - 0xDCF9: 0x526F, //CJK UNIFIED IDEOGRAPH - 0xDCFA: 0x5426, //CJK UNIFIED IDEOGRAPH - 0xDCFB: 0x5490, //CJK UNIFIED IDEOGRAPH - 0xDCFC: 0x57E0, //CJK UNIFIED IDEOGRAPH - 0xDCFD: 0x592B, //CJK UNIFIED IDEOGRAPH - 0xDCFE: 0x5A66, //CJK UNIFIED IDEOGRAPH - 0xDDA1: 0x5B5A, //CJK UNIFIED IDEOGRAPH - 0xDDA2: 0x5B75, //CJK UNIFIED IDEOGRAPH - 0xDDA3: 0x5BCC, //CJK UNIFIED IDEOGRAPH - 0xDDA4: 0x5E9C, //CJK UNIFIED IDEOGRAPH - 0xDDA5: 0xF966, //CJK COMPATIBILITY IDEOGRAPH - 0xDDA6: 0x6276, //CJK UNIFIED IDEOGRAPH - 0xDDA7: 0x6577, //CJK UNIFIED IDEOGRAPH - 0xDDA8: 0x65A7, //CJK UNIFIED IDEOGRAPH - 0xDDA9: 0x6D6E, //CJK UNIFIED IDEOGRAPH - 0xDDAA: 0x6EA5, //CJK UNIFIED IDEOGRAPH - 0xDDAB: 0x7236, //CJK UNIFIED IDEOGRAPH - 0xDDAC: 0x7B26, //CJK UNIFIED IDEOGRAPH - 0xDDAD: 0x7C3F, //CJK UNIFIED IDEOGRAPH - 0xDDAE: 0x7F36, //CJK UNIFIED IDEOGRAPH - 0xDDAF: 0x8150, //CJK UNIFIED IDEOGRAPH - 0xDDB0: 0x8151, //CJK UNIFIED IDEOGRAPH - 0xDDB1: 0x819A, //CJK UNIFIED IDEOGRAPH - 0xDDB2: 0x8240, //CJK UNIFIED IDEOGRAPH - 0xDDB3: 0x8299, //CJK UNIFIED IDEOGRAPH - 0xDDB4: 0x83A9, //CJK UNIFIED IDEOGRAPH - 0xDDB5: 0x8A03, //CJK UNIFIED IDEOGRAPH - 0xDDB6: 0x8CA0, //CJK UNIFIED IDEOGRAPH - 0xDDB7: 0x8CE6, //CJK UNIFIED IDEOGRAPH - 0xDDB8: 0x8CFB, //CJK UNIFIED IDEOGRAPH - 0xDDB9: 0x8D74, //CJK UNIFIED IDEOGRAPH - 0xDDBA: 0x8DBA, //CJK UNIFIED IDEOGRAPH - 0xDDBB: 0x90E8, //CJK UNIFIED IDEOGRAPH - 0xDDBC: 0x91DC, //CJK UNIFIED IDEOGRAPH - 0xDDBD: 0x961C, //CJK UNIFIED IDEOGRAPH - 0xDDBE: 0x9644, //CJK UNIFIED IDEOGRAPH - 0xDDBF: 0x99D9, //CJK UNIFIED IDEOGRAPH - 0xDDC0: 0x9CE7, //CJK UNIFIED IDEOGRAPH - 0xDDC1: 0x5317, //CJK UNIFIED IDEOGRAPH - 0xDDC2: 0x5206, //CJK UNIFIED IDEOGRAPH - 0xDDC3: 0x5429, //CJK UNIFIED IDEOGRAPH - 0xDDC4: 0x5674, //CJK UNIFIED IDEOGRAPH - 0xDDC5: 0x58B3, //CJK UNIFIED IDEOGRAPH - 0xDDC6: 0x5954, //CJK UNIFIED IDEOGRAPH - 0xDDC7: 0x596E, //CJK UNIFIED IDEOGRAPH - 0xDDC8: 0x5FFF, //CJK UNIFIED IDEOGRAPH - 0xDDC9: 0x61A4, //CJK UNIFIED IDEOGRAPH - 0xDDCA: 0x626E, //CJK UNIFIED IDEOGRAPH - 0xDDCB: 0x6610, //CJK UNIFIED IDEOGRAPH - 0xDDCC: 0x6C7E, //CJK UNIFIED IDEOGRAPH - 0xDDCD: 0x711A, //CJK UNIFIED IDEOGRAPH - 0xDDCE: 0x76C6, //CJK UNIFIED IDEOGRAPH - 0xDDCF: 0x7C89, //CJK UNIFIED IDEOGRAPH - 0xDDD0: 0x7CDE, //CJK UNIFIED IDEOGRAPH - 0xDDD1: 0x7D1B, //CJK UNIFIED IDEOGRAPH - 0xDDD2: 0x82AC, //CJK UNIFIED IDEOGRAPH - 0xDDD3: 0x8CC1, //CJK UNIFIED IDEOGRAPH - 0xDDD4: 0x96F0, //CJK UNIFIED IDEOGRAPH - 0xDDD5: 0xF967, //CJK COMPATIBILITY IDEOGRAPH - 0xDDD6: 0x4F5B, //CJK UNIFIED IDEOGRAPH - 0xDDD7: 0x5F17, //CJK UNIFIED IDEOGRAPH - 0xDDD8: 0x5F7F, //CJK UNIFIED IDEOGRAPH - 0xDDD9: 0x62C2, //CJK UNIFIED IDEOGRAPH - 0xDDDA: 0x5D29, //CJK UNIFIED IDEOGRAPH - 0xDDDB: 0x670B, //CJK UNIFIED IDEOGRAPH - 0xDDDC: 0x68DA, //CJK UNIFIED IDEOGRAPH - 0xDDDD: 0x787C, //CJK UNIFIED IDEOGRAPH - 0xDDDE: 0x7E43, //CJK UNIFIED IDEOGRAPH - 0xDDDF: 0x9D6C, //CJK UNIFIED IDEOGRAPH - 0xDDE0: 0x4E15, //CJK UNIFIED IDEOGRAPH - 0xDDE1: 0x5099, //CJK UNIFIED IDEOGRAPH - 0xDDE2: 0x5315, //CJK UNIFIED IDEOGRAPH - 0xDDE3: 0x532A, //CJK UNIFIED IDEOGRAPH - 0xDDE4: 0x5351, //CJK UNIFIED IDEOGRAPH - 0xDDE5: 0x5983, //CJK UNIFIED IDEOGRAPH - 0xDDE6: 0x5A62, //CJK UNIFIED IDEOGRAPH - 0xDDE7: 0x5E87, //CJK UNIFIED IDEOGRAPH - 0xDDE8: 0x60B2, //CJK UNIFIED IDEOGRAPH - 0xDDE9: 0x618A, //CJK UNIFIED IDEOGRAPH - 0xDDEA: 0x6249, //CJK UNIFIED IDEOGRAPH - 0xDDEB: 0x6279, //CJK UNIFIED IDEOGRAPH - 0xDDEC: 0x6590, //CJK UNIFIED IDEOGRAPH - 0xDDED: 0x6787, //CJK UNIFIED IDEOGRAPH - 0xDDEE: 0x69A7, //CJK UNIFIED IDEOGRAPH - 0xDDEF: 0x6BD4, //CJK UNIFIED IDEOGRAPH - 0xDDF0: 0x6BD6, //CJK UNIFIED IDEOGRAPH - 0xDDF1: 0x6BD7, //CJK UNIFIED IDEOGRAPH - 0xDDF2: 0x6BD8, //CJK UNIFIED IDEOGRAPH - 0xDDF3: 0x6CB8, //CJK UNIFIED IDEOGRAPH - 0xDDF4: 0xF968, //CJK COMPATIBILITY IDEOGRAPH - 0xDDF5: 0x7435, //CJK UNIFIED IDEOGRAPH - 0xDDF6: 0x75FA, //CJK UNIFIED IDEOGRAPH - 0xDDF7: 0x7812, //CJK UNIFIED IDEOGRAPH - 0xDDF8: 0x7891, //CJK UNIFIED IDEOGRAPH - 0xDDF9: 0x79D5, //CJK UNIFIED IDEOGRAPH - 0xDDFA: 0x79D8, //CJK UNIFIED IDEOGRAPH - 0xDDFB: 0x7C83, //CJK UNIFIED IDEOGRAPH - 0xDDFC: 0x7DCB, //CJK UNIFIED IDEOGRAPH - 0xDDFD: 0x7FE1, //CJK UNIFIED IDEOGRAPH - 0xDDFE: 0x80A5, //CJK UNIFIED IDEOGRAPH - 0xDEA1: 0x813E, //CJK UNIFIED IDEOGRAPH - 0xDEA2: 0x81C2, //CJK UNIFIED IDEOGRAPH - 0xDEA3: 0x83F2, //CJK UNIFIED IDEOGRAPH - 0xDEA4: 0x871A, //CJK UNIFIED IDEOGRAPH - 0xDEA5: 0x88E8, //CJK UNIFIED IDEOGRAPH - 0xDEA6: 0x8AB9, //CJK UNIFIED IDEOGRAPH - 0xDEA7: 0x8B6C, //CJK UNIFIED IDEOGRAPH - 0xDEA8: 0x8CBB, //CJK UNIFIED IDEOGRAPH - 0xDEA9: 0x9119, //CJK UNIFIED IDEOGRAPH - 0xDEAA: 0x975E, //CJK UNIFIED IDEOGRAPH - 0xDEAB: 0x98DB, //CJK UNIFIED IDEOGRAPH - 0xDEAC: 0x9F3B, //CJK UNIFIED IDEOGRAPH - 0xDEAD: 0x56AC, //CJK UNIFIED IDEOGRAPH - 0xDEAE: 0x5B2A, //CJK UNIFIED IDEOGRAPH - 0xDEAF: 0x5F6C, //CJK UNIFIED IDEOGRAPH - 0xDEB0: 0x658C, //CJK UNIFIED IDEOGRAPH - 0xDEB1: 0x6AB3, //CJK UNIFIED IDEOGRAPH - 0xDEB2: 0x6BAF, //CJK UNIFIED IDEOGRAPH - 0xDEB3: 0x6D5C, //CJK UNIFIED IDEOGRAPH - 0xDEB4: 0x6FF1, //CJK UNIFIED IDEOGRAPH - 0xDEB5: 0x7015, //CJK UNIFIED IDEOGRAPH - 0xDEB6: 0x725D, //CJK UNIFIED IDEOGRAPH - 0xDEB7: 0x73AD, //CJK UNIFIED IDEOGRAPH - 0xDEB8: 0x8CA7, //CJK UNIFIED IDEOGRAPH - 0xDEB9: 0x8CD3, //CJK UNIFIED IDEOGRAPH - 0xDEBA: 0x983B, //CJK UNIFIED IDEOGRAPH - 0xDEBB: 0x6191, //CJK UNIFIED IDEOGRAPH - 0xDEBC: 0x6C37, //CJK UNIFIED IDEOGRAPH - 0xDEBD: 0x8058, //CJK UNIFIED IDEOGRAPH - 0xDEBE: 0x9A01, //CJK UNIFIED IDEOGRAPH - 0xDEBF: 0x4E4D, //CJK UNIFIED IDEOGRAPH - 0xDEC0: 0x4E8B, //CJK UNIFIED IDEOGRAPH - 0xDEC1: 0x4E9B, //CJK UNIFIED IDEOGRAPH - 0xDEC2: 0x4ED5, //CJK UNIFIED IDEOGRAPH - 0xDEC3: 0x4F3A, //CJK UNIFIED IDEOGRAPH - 0xDEC4: 0x4F3C, //CJK UNIFIED IDEOGRAPH - 0xDEC5: 0x4F7F, //CJK UNIFIED IDEOGRAPH - 0xDEC6: 0x4FDF, //CJK UNIFIED IDEOGRAPH - 0xDEC7: 0x50FF, //CJK UNIFIED IDEOGRAPH - 0xDEC8: 0x53F2, //CJK UNIFIED IDEOGRAPH - 0xDEC9: 0x53F8, //CJK UNIFIED IDEOGRAPH - 0xDECA: 0x5506, //CJK UNIFIED IDEOGRAPH - 0xDECB: 0x55E3, //CJK UNIFIED IDEOGRAPH - 0xDECC: 0x56DB, //CJK UNIFIED IDEOGRAPH - 0xDECD: 0x58EB, //CJK UNIFIED IDEOGRAPH - 0xDECE: 0x5962, //CJK UNIFIED IDEOGRAPH - 0xDECF: 0x5A11, //CJK UNIFIED IDEOGRAPH - 0xDED0: 0x5BEB, //CJK UNIFIED IDEOGRAPH - 0xDED1: 0x5BFA, //CJK UNIFIED IDEOGRAPH - 0xDED2: 0x5C04, //CJK UNIFIED IDEOGRAPH - 0xDED3: 0x5DF3, //CJK UNIFIED IDEOGRAPH - 0xDED4: 0x5E2B, //CJK UNIFIED IDEOGRAPH - 0xDED5: 0x5F99, //CJK UNIFIED IDEOGRAPH - 0xDED6: 0x601D, //CJK UNIFIED IDEOGRAPH - 0xDED7: 0x6368, //CJK UNIFIED IDEOGRAPH - 0xDED8: 0x659C, //CJK UNIFIED IDEOGRAPH - 0xDED9: 0x65AF, //CJK UNIFIED IDEOGRAPH - 0xDEDA: 0x67F6, //CJK UNIFIED IDEOGRAPH - 0xDEDB: 0x67FB, //CJK UNIFIED IDEOGRAPH - 0xDEDC: 0x68AD, //CJK UNIFIED IDEOGRAPH - 0xDEDD: 0x6B7B, //CJK UNIFIED IDEOGRAPH - 0xDEDE: 0x6C99, //CJK UNIFIED IDEOGRAPH - 0xDEDF: 0x6CD7, //CJK UNIFIED IDEOGRAPH - 0xDEE0: 0x6E23, //CJK UNIFIED IDEOGRAPH - 0xDEE1: 0x7009, //CJK UNIFIED IDEOGRAPH - 0xDEE2: 0x7345, //CJK UNIFIED IDEOGRAPH - 0xDEE3: 0x7802, //CJK UNIFIED IDEOGRAPH - 0xDEE4: 0x793E, //CJK UNIFIED IDEOGRAPH - 0xDEE5: 0x7940, //CJK UNIFIED IDEOGRAPH - 0xDEE6: 0x7960, //CJK UNIFIED IDEOGRAPH - 0xDEE7: 0x79C1, //CJK UNIFIED IDEOGRAPH - 0xDEE8: 0x7BE9, //CJK UNIFIED IDEOGRAPH - 0xDEE9: 0x7D17, //CJK UNIFIED IDEOGRAPH - 0xDEEA: 0x7D72, //CJK UNIFIED IDEOGRAPH - 0xDEEB: 0x8086, //CJK UNIFIED IDEOGRAPH - 0xDEEC: 0x820D, //CJK UNIFIED IDEOGRAPH - 0xDEED: 0x838E, //CJK UNIFIED IDEOGRAPH - 0xDEEE: 0x84D1, //CJK UNIFIED IDEOGRAPH - 0xDEEF: 0x86C7, //CJK UNIFIED IDEOGRAPH - 0xDEF0: 0x88DF, //CJK UNIFIED IDEOGRAPH - 0xDEF1: 0x8A50, //CJK UNIFIED IDEOGRAPH - 0xDEF2: 0x8A5E, //CJK UNIFIED IDEOGRAPH - 0xDEF3: 0x8B1D, //CJK UNIFIED IDEOGRAPH - 0xDEF4: 0x8CDC, //CJK UNIFIED IDEOGRAPH - 0xDEF5: 0x8D66, //CJK UNIFIED IDEOGRAPH - 0xDEF6: 0x8FAD, //CJK UNIFIED IDEOGRAPH - 0xDEF7: 0x90AA, //CJK UNIFIED IDEOGRAPH - 0xDEF8: 0x98FC, //CJK UNIFIED IDEOGRAPH - 0xDEF9: 0x99DF, //CJK UNIFIED IDEOGRAPH - 0xDEFA: 0x9E9D, //CJK UNIFIED IDEOGRAPH - 0xDEFB: 0x524A, //CJK UNIFIED IDEOGRAPH - 0xDEFC: 0xF969, //CJK COMPATIBILITY IDEOGRAPH - 0xDEFD: 0x6714, //CJK UNIFIED IDEOGRAPH - 0xDEFE: 0xF96A, //CJK COMPATIBILITY IDEOGRAPH - 0xDFA1: 0x5098, //CJK UNIFIED IDEOGRAPH - 0xDFA2: 0x522A, //CJK UNIFIED IDEOGRAPH - 0xDFA3: 0x5C71, //CJK UNIFIED IDEOGRAPH - 0xDFA4: 0x6563, //CJK UNIFIED IDEOGRAPH - 0xDFA5: 0x6C55, //CJK UNIFIED IDEOGRAPH - 0xDFA6: 0x73CA, //CJK UNIFIED IDEOGRAPH - 0xDFA7: 0x7523, //CJK UNIFIED IDEOGRAPH - 0xDFA8: 0x759D, //CJK UNIFIED IDEOGRAPH - 0xDFA9: 0x7B97, //CJK UNIFIED IDEOGRAPH - 0xDFAA: 0x849C, //CJK UNIFIED IDEOGRAPH - 0xDFAB: 0x9178, //CJK UNIFIED IDEOGRAPH - 0xDFAC: 0x9730, //CJK UNIFIED IDEOGRAPH - 0xDFAD: 0x4E77, //CJK UNIFIED IDEOGRAPH - 0xDFAE: 0x6492, //CJK UNIFIED IDEOGRAPH - 0xDFAF: 0x6BBA, //CJK UNIFIED IDEOGRAPH - 0xDFB0: 0x715E, //CJK UNIFIED IDEOGRAPH - 0xDFB1: 0x85A9, //CJK UNIFIED IDEOGRAPH - 0xDFB2: 0x4E09, //CJK UNIFIED IDEOGRAPH - 0xDFB3: 0xF96B, //CJK COMPATIBILITY IDEOGRAPH - 0xDFB4: 0x6749, //CJK UNIFIED IDEOGRAPH - 0xDFB5: 0x68EE, //CJK UNIFIED IDEOGRAPH - 0xDFB6: 0x6E17, //CJK UNIFIED IDEOGRAPH - 0xDFB7: 0x829F, //CJK UNIFIED IDEOGRAPH - 0xDFB8: 0x8518, //CJK UNIFIED IDEOGRAPH - 0xDFB9: 0x886B, //CJK UNIFIED IDEOGRAPH - 0xDFBA: 0x63F7, //CJK UNIFIED IDEOGRAPH - 0xDFBB: 0x6F81, //CJK UNIFIED IDEOGRAPH - 0xDFBC: 0x9212, //CJK UNIFIED IDEOGRAPH - 0xDFBD: 0x98AF, //CJK UNIFIED IDEOGRAPH - 0xDFBE: 0x4E0A, //CJK UNIFIED IDEOGRAPH - 0xDFBF: 0x50B7, //CJK UNIFIED IDEOGRAPH - 0xDFC0: 0x50CF, //CJK UNIFIED IDEOGRAPH - 0xDFC1: 0x511F, //CJK UNIFIED IDEOGRAPH - 0xDFC2: 0x5546, //CJK UNIFIED IDEOGRAPH - 0xDFC3: 0x55AA, //CJK UNIFIED IDEOGRAPH - 0xDFC4: 0x5617, //CJK UNIFIED IDEOGRAPH - 0xDFC5: 0x5B40, //CJK UNIFIED IDEOGRAPH - 0xDFC6: 0x5C19, //CJK UNIFIED IDEOGRAPH - 0xDFC7: 0x5CE0, //CJK UNIFIED IDEOGRAPH - 0xDFC8: 0x5E38, //CJK UNIFIED IDEOGRAPH - 0xDFC9: 0x5E8A, //CJK UNIFIED IDEOGRAPH - 0xDFCA: 0x5EA0, //CJK UNIFIED IDEOGRAPH - 0xDFCB: 0x5EC2, //CJK UNIFIED IDEOGRAPH - 0xDFCC: 0x60F3, //CJK UNIFIED IDEOGRAPH - 0xDFCD: 0x6851, //CJK UNIFIED IDEOGRAPH - 0xDFCE: 0x6A61, //CJK UNIFIED IDEOGRAPH - 0xDFCF: 0x6E58, //CJK UNIFIED IDEOGRAPH - 0xDFD0: 0x723D, //CJK UNIFIED IDEOGRAPH - 0xDFD1: 0x7240, //CJK UNIFIED IDEOGRAPH - 0xDFD2: 0x72C0, //CJK UNIFIED IDEOGRAPH - 0xDFD3: 0x76F8, //CJK UNIFIED IDEOGRAPH - 0xDFD4: 0x7965, //CJK UNIFIED IDEOGRAPH - 0xDFD5: 0x7BB1, //CJK UNIFIED IDEOGRAPH - 0xDFD6: 0x7FD4, //CJK UNIFIED IDEOGRAPH - 0xDFD7: 0x88F3, //CJK UNIFIED IDEOGRAPH - 0xDFD8: 0x89F4, //CJK UNIFIED IDEOGRAPH - 0xDFD9: 0x8A73, //CJK UNIFIED IDEOGRAPH - 0xDFDA: 0x8C61, //CJK UNIFIED IDEOGRAPH - 0xDFDB: 0x8CDE, //CJK UNIFIED IDEOGRAPH - 0xDFDC: 0x971C, //CJK UNIFIED IDEOGRAPH - 0xDFDD: 0x585E, //CJK UNIFIED IDEOGRAPH - 0xDFDE: 0x74BD, //CJK UNIFIED IDEOGRAPH - 0xDFDF: 0x8CFD, //CJK UNIFIED IDEOGRAPH - 0xDFE0: 0x55C7, //CJK UNIFIED IDEOGRAPH - 0xDFE1: 0xF96C, //CJK COMPATIBILITY IDEOGRAPH - 0xDFE2: 0x7A61, //CJK UNIFIED IDEOGRAPH - 0xDFE3: 0x7D22, //CJK UNIFIED IDEOGRAPH - 0xDFE4: 0x8272, //CJK UNIFIED IDEOGRAPH - 0xDFE5: 0x7272, //CJK UNIFIED IDEOGRAPH - 0xDFE6: 0x751F, //CJK UNIFIED IDEOGRAPH - 0xDFE7: 0x7525, //CJK UNIFIED IDEOGRAPH - 0xDFE8: 0xF96D, //CJK COMPATIBILITY IDEOGRAPH - 0xDFE9: 0x7B19, //CJK UNIFIED IDEOGRAPH - 0xDFEA: 0x5885, //CJK UNIFIED IDEOGRAPH - 0xDFEB: 0x58FB, //CJK UNIFIED IDEOGRAPH - 0xDFEC: 0x5DBC, //CJK UNIFIED IDEOGRAPH - 0xDFED: 0x5E8F, //CJK UNIFIED IDEOGRAPH - 0xDFEE: 0x5EB6, //CJK UNIFIED IDEOGRAPH - 0xDFEF: 0x5F90, //CJK UNIFIED IDEOGRAPH - 0xDFF0: 0x6055, //CJK UNIFIED IDEOGRAPH - 0xDFF1: 0x6292, //CJK UNIFIED IDEOGRAPH - 0xDFF2: 0x637F, //CJK UNIFIED IDEOGRAPH - 0xDFF3: 0x654D, //CJK UNIFIED IDEOGRAPH - 0xDFF4: 0x6691, //CJK UNIFIED IDEOGRAPH - 0xDFF5: 0x66D9, //CJK UNIFIED IDEOGRAPH - 0xDFF6: 0x66F8, //CJK UNIFIED IDEOGRAPH - 0xDFF7: 0x6816, //CJK UNIFIED IDEOGRAPH - 0xDFF8: 0x68F2, //CJK UNIFIED IDEOGRAPH - 0xDFF9: 0x7280, //CJK UNIFIED IDEOGRAPH - 0xDFFA: 0x745E, //CJK UNIFIED IDEOGRAPH - 0xDFFB: 0x7B6E, //CJK UNIFIED IDEOGRAPH - 0xDFFC: 0x7D6E, //CJK UNIFIED IDEOGRAPH - 0xDFFD: 0x7DD6, //CJK UNIFIED IDEOGRAPH - 0xDFFE: 0x7F72, //CJK UNIFIED IDEOGRAPH - 0xE0A1: 0x80E5, //CJK UNIFIED IDEOGRAPH - 0xE0A2: 0x8212, //CJK UNIFIED IDEOGRAPH - 0xE0A3: 0x85AF, //CJK UNIFIED IDEOGRAPH - 0xE0A4: 0x897F, //CJK UNIFIED IDEOGRAPH - 0xE0A5: 0x8A93, //CJK UNIFIED IDEOGRAPH - 0xE0A6: 0x901D, //CJK UNIFIED IDEOGRAPH - 0xE0A7: 0x92E4, //CJK UNIFIED IDEOGRAPH - 0xE0A8: 0x9ECD, //CJK UNIFIED IDEOGRAPH - 0xE0A9: 0x9F20, //CJK UNIFIED IDEOGRAPH - 0xE0AA: 0x5915, //CJK UNIFIED IDEOGRAPH - 0xE0AB: 0x596D, //CJK UNIFIED IDEOGRAPH - 0xE0AC: 0x5E2D, //CJK UNIFIED IDEOGRAPH - 0xE0AD: 0x60DC, //CJK UNIFIED IDEOGRAPH - 0xE0AE: 0x6614, //CJK UNIFIED IDEOGRAPH - 0xE0AF: 0x6673, //CJK UNIFIED IDEOGRAPH - 0xE0B0: 0x6790, //CJK UNIFIED IDEOGRAPH - 0xE0B1: 0x6C50, //CJK UNIFIED IDEOGRAPH - 0xE0B2: 0x6DC5, //CJK UNIFIED IDEOGRAPH - 0xE0B3: 0x6F5F, //CJK UNIFIED IDEOGRAPH - 0xE0B4: 0x77F3, //CJK UNIFIED IDEOGRAPH - 0xE0B5: 0x78A9, //CJK UNIFIED IDEOGRAPH - 0xE0B6: 0x84C6, //CJK UNIFIED IDEOGRAPH - 0xE0B7: 0x91CB, //CJK UNIFIED IDEOGRAPH - 0xE0B8: 0x932B, //CJK UNIFIED IDEOGRAPH - 0xE0B9: 0x4ED9, //CJK UNIFIED IDEOGRAPH - 0xE0BA: 0x50CA, //CJK UNIFIED IDEOGRAPH - 0xE0BB: 0x5148, //CJK UNIFIED IDEOGRAPH - 0xE0BC: 0x5584, //CJK UNIFIED IDEOGRAPH - 0xE0BD: 0x5B0B, //CJK UNIFIED IDEOGRAPH - 0xE0BE: 0x5BA3, //CJK UNIFIED IDEOGRAPH - 0xE0BF: 0x6247, //CJK UNIFIED IDEOGRAPH - 0xE0C0: 0x657E, //CJK UNIFIED IDEOGRAPH - 0xE0C1: 0x65CB, //CJK UNIFIED IDEOGRAPH - 0xE0C2: 0x6E32, //CJK UNIFIED IDEOGRAPH - 0xE0C3: 0x717D, //CJK UNIFIED IDEOGRAPH - 0xE0C4: 0x7401, //CJK UNIFIED IDEOGRAPH - 0xE0C5: 0x7444, //CJK UNIFIED IDEOGRAPH - 0xE0C6: 0x7487, //CJK UNIFIED IDEOGRAPH - 0xE0C7: 0x74BF, //CJK UNIFIED IDEOGRAPH - 0xE0C8: 0x766C, //CJK UNIFIED IDEOGRAPH - 0xE0C9: 0x79AA, //CJK UNIFIED IDEOGRAPH - 0xE0CA: 0x7DDA, //CJK UNIFIED IDEOGRAPH - 0xE0CB: 0x7E55, //CJK UNIFIED IDEOGRAPH - 0xE0CC: 0x7FA8, //CJK UNIFIED IDEOGRAPH - 0xE0CD: 0x817A, //CJK UNIFIED IDEOGRAPH - 0xE0CE: 0x81B3, //CJK UNIFIED IDEOGRAPH - 0xE0CF: 0x8239, //CJK UNIFIED IDEOGRAPH - 0xE0D0: 0x861A, //CJK UNIFIED IDEOGRAPH - 0xE0D1: 0x87EC, //CJK UNIFIED IDEOGRAPH - 0xE0D2: 0x8A75, //CJK UNIFIED IDEOGRAPH - 0xE0D3: 0x8DE3, //CJK UNIFIED IDEOGRAPH - 0xE0D4: 0x9078, //CJK UNIFIED IDEOGRAPH - 0xE0D5: 0x9291, //CJK UNIFIED IDEOGRAPH - 0xE0D6: 0x9425, //CJK UNIFIED IDEOGRAPH - 0xE0D7: 0x994D, //CJK UNIFIED IDEOGRAPH - 0xE0D8: 0x9BAE, //CJK UNIFIED IDEOGRAPH - 0xE0D9: 0x5368, //CJK UNIFIED IDEOGRAPH - 0xE0DA: 0x5C51, //CJK UNIFIED IDEOGRAPH - 0xE0DB: 0x6954, //CJK UNIFIED IDEOGRAPH - 0xE0DC: 0x6CC4, //CJK UNIFIED IDEOGRAPH - 0xE0DD: 0x6D29, //CJK UNIFIED IDEOGRAPH - 0xE0DE: 0x6E2B, //CJK UNIFIED IDEOGRAPH - 0xE0DF: 0x820C, //CJK UNIFIED IDEOGRAPH - 0xE0E0: 0x859B, //CJK UNIFIED IDEOGRAPH - 0xE0E1: 0x893B, //CJK UNIFIED IDEOGRAPH - 0xE0E2: 0x8A2D, //CJK UNIFIED IDEOGRAPH - 0xE0E3: 0x8AAA, //CJK UNIFIED IDEOGRAPH - 0xE0E4: 0x96EA, //CJK UNIFIED IDEOGRAPH - 0xE0E5: 0x9F67, //CJK UNIFIED IDEOGRAPH - 0xE0E6: 0x5261, //CJK UNIFIED IDEOGRAPH - 0xE0E7: 0x66B9, //CJK UNIFIED IDEOGRAPH - 0xE0E8: 0x6BB2, //CJK UNIFIED IDEOGRAPH - 0xE0E9: 0x7E96, //CJK UNIFIED IDEOGRAPH - 0xE0EA: 0x87FE, //CJK UNIFIED IDEOGRAPH - 0xE0EB: 0x8D0D, //CJK UNIFIED IDEOGRAPH - 0xE0EC: 0x9583, //CJK UNIFIED IDEOGRAPH - 0xE0ED: 0x965D, //CJK UNIFIED IDEOGRAPH - 0xE0EE: 0x651D, //CJK UNIFIED IDEOGRAPH - 0xE0EF: 0x6D89, //CJK UNIFIED IDEOGRAPH - 0xE0F0: 0x71EE, //CJK UNIFIED IDEOGRAPH - 0xE0F1: 0xF96E, //CJK COMPATIBILITY IDEOGRAPH - 0xE0F2: 0x57CE, //CJK UNIFIED IDEOGRAPH - 0xE0F3: 0x59D3, //CJK UNIFIED IDEOGRAPH - 0xE0F4: 0x5BAC, //CJK UNIFIED IDEOGRAPH - 0xE0F5: 0x6027, //CJK UNIFIED IDEOGRAPH - 0xE0F6: 0x60FA, //CJK UNIFIED IDEOGRAPH - 0xE0F7: 0x6210, //CJK UNIFIED IDEOGRAPH - 0xE0F8: 0x661F, //CJK UNIFIED IDEOGRAPH - 0xE0F9: 0x665F, //CJK UNIFIED IDEOGRAPH - 0xE0FA: 0x7329, //CJK UNIFIED IDEOGRAPH - 0xE0FB: 0x73F9, //CJK UNIFIED IDEOGRAPH - 0xE0FC: 0x76DB, //CJK UNIFIED IDEOGRAPH - 0xE0FD: 0x7701, //CJK UNIFIED IDEOGRAPH - 0xE0FE: 0x7B6C, //CJK UNIFIED IDEOGRAPH - 0xE1A1: 0x8056, //CJK UNIFIED IDEOGRAPH - 0xE1A2: 0x8072, //CJK UNIFIED IDEOGRAPH - 0xE1A3: 0x8165, //CJK UNIFIED IDEOGRAPH - 0xE1A4: 0x8AA0, //CJK UNIFIED IDEOGRAPH - 0xE1A5: 0x9192, //CJK UNIFIED IDEOGRAPH - 0xE1A6: 0x4E16, //CJK UNIFIED IDEOGRAPH - 0xE1A7: 0x52E2, //CJK UNIFIED IDEOGRAPH - 0xE1A8: 0x6B72, //CJK UNIFIED IDEOGRAPH - 0xE1A9: 0x6D17, //CJK UNIFIED IDEOGRAPH - 0xE1AA: 0x7A05, //CJK UNIFIED IDEOGRAPH - 0xE1AB: 0x7B39, //CJK UNIFIED IDEOGRAPH - 0xE1AC: 0x7D30, //CJK UNIFIED IDEOGRAPH - 0xE1AD: 0xF96F, //CJK COMPATIBILITY IDEOGRAPH - 0xE1AE: 0x8CB0, //CJK UNIFIED IDEOGRAPH - 0xE1AF: 0x53EC, //CJK UNIFIED IDEOGRAPH - 0xE1B0: 0x562F, //CJK UNIFIED IDEOGRAPH - 0xE1B1: 0x5851, //CJK UNIFIED IDEOGRAPH - 0xE1B2: 0x5BB5, //CJK UNIFIED IDEOGRAPH - 0xE1B3: 0x5C0F, //CJK UNIFIED IDEOGRAPH - 0xE1B4: 0x5C11, //CJK UNIFIED IDEOGRAPH - 0xE1B5: 0x5DE2, //CJK UNIFIED IDEOGRAPH - 0xE1B6: 0x6240, //CJK UNIFIED IDEOGRAPH - 0xE1B7: 0x6383, //CJK UNIFIED IDEOGRAPH - 0xE1B8: 0x6414, //CJK UNIFIED IDEOGRAPH - 0xE1B9: 0x662D, //CJK UNIFIED IDEOGRAPH - 0xE1BA: 0x68B3, //CJK UNIFIED IDEOGRAPH - 0xE1BB: 0x6CBC, //CJK UNIFIED IDEOGRAPH - 0xE1BC: 0x6D88, //CJK UNIFIED IDEOGRAPH - 0xE1BD: 0x6EAF, //CJK UNIFIED IDEOGRAPH - 0xE1BE: 0x701F, //CJK UNIFIED IDEOGRAPH - 0xE1BF: 0x70A4, //CJK UNIFIED IDEOGRAPH - 0xE1C0: 0x71D2, //CJK UNIFIED IDEOGRAPH - 0xE1C1: 0x7526, //CJK UNIFIED IDEOGRAPH - 0xE1C2: 0x758F, //CJK UNIFIED IDEOGRAPH - 0xE1C3: 0x758E, //CJK UNIFIED IDEOGRAPH - 0xE1C4: 0x7619, //CJK UNIFIED IDEOGRAPH - 0xE1C5: 0x7B11, //CJK UNIFIED IDEOGRAPH - 0xE1C6: 0x7BE0, //CJK UNIFIED IDEOGRAPH - 0xE1C7: 0x7C2B, //CJK UNIFIED IDEOGRAPH - 0xE1C8: 0x7D20, //CJK UNIFIED IDEOGRAPH - 0xE1C9: 0x7D39, //CJK UNIFIED IDEOGRAPH - 0xE1CA: 0x852C, //CJK UNIFIED IDEOGRAPH - 0xE1CB: 0x856D, //CJK UNIFIED IDEOGRAPH - 0xE1CC: 0x8607, //CJK UNIFIED IDEOGRAPH - 0xE1CD: 0x8A34, //CJK UNIFIED IDEOGRAPH - 0xE1CE: 0x900D, //CJK UNIFIED IDEOGRAPH - 0xE1CF: 0x9061, //CJK UNIFIED IDEOGRAPH - 0xE1D0: 0x90B5, //CJK UNIFIED IDEOGRAPH - 0xE1D1: 0x92B7, //CJK UNIFIED IDEOGRAPH - 0xE1D2: 0x97F6, //CJK UNIFIED IDEOGRAPH - 0xE1D3: 0x9A37, //CJK UNIFIED IDEOGRAPH - 0xE1D4: 0x4FD7, //CJK UNIFIED IDEOGRAPH - 0xE1D5: 0x5C6C, //CJK UNIFIED IDEOGRAPH - 0xE1D6: 0x675F, //CJK UNIFIED IDEOGRAPH - 0xE1D7: 0x6D91, //CJK UNIFIED IDEOGRAPH - 0xE1D8: 0x7C9F, //CJK UNIFIED IDEOGRAPH - 0xE1D9: 0x7E8C, //CJK UNIFIED IDEOGRAPH - 0xE1DA: 0x8B16, //CJK UNIFIED IDEOGRAPH - 0xE1DB: 0x8D16, //CJK UNIFIED IDEOGRAPH - 0xE1DC: 0x901F, //CJK UNIFIED IDEOGRAPH - 0xE1DD: 0x5B6B, //CJK UNIFIED IDEOGRAPH - 0xE1DE: 0x5DFD, //CJK UNIFIED IDEOGRAPH - 0xE1DF: 0x640D, //CJK UNIFIED IDEOGRAPH - 0xE1E0: 0x84C0, //CJK UNIFIED IDEOGRAPH - 0xE1E1: 0x905C, //CJK UNIFIED IDEOGRAPH - 0xE1E2: 0x98E1, //CJK UNIFIED IDEOGRAPH - 0xE1E3: 0x7387, //CJK UNIFIED IDEOGRAPH - 0xE1E4: 0x5B8B, //CJK UNIFIED IDEOGRAPH - 0xE1E5: 0x609A, //CJK UNIFIED IDEOGRAPH - 0xE1E6: 0x677E, //CJK UNIFIED IDEOGRAPH - 0xE1E7: 0x6DDE, //CJK UNIFIED IDEOGRAPH - 0xE1E8: 0x8A1F, //CJK UNIFIED IDEOGRAPH - 0xE1E9: 0x8AA6, //CJK UNIFIED IDEOGRAPH - 0xE1EA: 0x9001, //CJK UNIFIED IDEOGRAPH - 0xE1EB: 0x980C, //CJK UNIFIED IDEOGRAPH - 0xE1EC: 0x5237, //CJK UNIFIED IDEOGRAPH - 0xE1ED: 0xF970, //CJK COMPATIBILITY IDEOGRAPH - 0xE1EE: 0x7051, //CJK UNIFIED IDEOGRAPH - 0xE1EF: 0x788E, //CJK UNIFIED IDEOGRAPH - 0xE1F0: 0x9396, //CJK UNIFIED IDEOGRAPH - 0xE1F1: 0x8870, //CJK UNIFIED IDEOGRAPH - 0xE1F2: 0x91D7, //CJK UNIFIED IDEOGRAPH - 0xE1F3: 0x4FEE, //CJK UNIFIED IDEOGRAPH - 0xE1F4: 0x53D7, //CJK UNIFIED IDEOGRAPH - 0xE1F5: 0x55FD, //CJK UNIFIED IDEOGRAPH - 0xE1F6: 0x56DA, //CJK UNIFIED IDEOGRAPH - 0xE1F7: 0x5782, //CJK UNIFIED IDEOGRAPH - 0xE1F8: 0x58FD, //CJK UNIFIED IDEOGRAPH - 0xE1F9: 0x5AC2, //CJK UNIFIED IDEOGRAPH - 0xE1FA: 0x5B88, //CJK UNIFIED IDEOGRAPH - 0xE1FB: 0x5CAB, //CJK UNIFIED IDEOGRAPH - 0xE1FC: 0x5CC0, //CJK UNIFIED IDEOGRAPH - 0xE1FD: 0x5E25, //CJK UNIFIED IDEOGRAPH - 0xE1FE: 0x6101, //CJK UNIFIED IDEOGRAPH - 0xE2A1: 0x620D, //CJK UNIFIED IDEOGRAPH - 0xE2A2: 0x624B, //CJK UNIFIED IDEOGRAPH - 0xE2A3: 0x6388, //CJK UNIFIED IDEOGRAPH - 0xE2A4: 0x641C, //CJK UNIFIED IDEOGRAPH - 0xE2A5: 0x6536, //CJK UNIFIED IDEOGRAPH - 0xE2A6: 0x6578, //CJK UNIFIED IDEOGRAPH - 0xE2A7: 0x6A39, //CJK UNIFIED IDEOGRAPH - 0xE2A8: 0x6B8A, //CJK UNIFIED IDEOGRAPH - 0xE2A9: 0x6C34, //CJK UNIFIED IDEOGRAPH - 0xE2AA: 0x6D19, //CJK UNIFIED IDEOGRAPH - 0xE2AB: 0x6F31, //CJK UNIFIED IDEOGRAPH - 0xE2AC: 0x71E7, //CJK UNIFIED IDEOGRAPH - 0xE2AD: 0x72E9, //CJK UNIFIED IDEOGRAPH - 0xE2AE: 0x7378, //CJK UNIFIED IDEOGRAPH - 0xE2AF: 0x7407, //CJK UNIFIED IDEOGRAPH - 0xE2B0: 0x74B2, //CJK UNIFIED IDEOGRAPH - 0xE2B1: 0x7626, //CJK UNIFIED IDEOGRAPH - 0xE2B2: 0x7761, //CJK UNIFIED IDEOGRAPH - 0xE2B3: 0x79C0, //CJK UNIFIED IDEOGRAPH - 0xE2B4: 0x7A57, //CJK UNIFIED IDEOGRAPH - 0xE2B5: 0x7AEA, //CJK UNIFIED IDEOGRAPH - 0xE2B6: 0x7CB9, //CJK UNIFIED IDEOGRAPH - 0xE2B7: 0x7D8F, //CJK UNIFIED IDEOGRAPH - 0xE2B8: 0x7DAC, //CJK UNIFIED IDEOGRAPH - 0xE2B9: 0x7E61, //CJK UNIFIED IDEOGRAPH - 0xE2BA: 0x7F9E, //CJK UNIFIED IDEOGRAPH - 0xE2BB: 0x8129, //CJK UNIFIED IDEOGRAPH - 0xE2BC: 0x8331, //CJK UNIFIED IDEOGRAPH - 0xE2BD: 0x8490, //CJK UNIFIED IDEOGRAPH - 0xE2BE: 0x84DA, //CJK UNIFIED IDEOGRAPH - 0xE2BF: 0x85EA, //CJK UNIFIED IDEOGRAPH - 0xE2C0: 0x8896, //CJK UNIFIED IDEOGRAPH - 0xE2C1: 0x8AB0, //CJK UNIFIED IDEOGRAPH - 0xE2C2: 0x8B90, //CJK UNIFIED IDEOGRAPH - 0xE2C3: 0x8F38, //CJK UNIFIED IDEOGRAPH - 0xE2C4: 0x9042, //CJK UNIFIED IDEOGRAPH - 0xE2C5: 0x9083, //CJK UNIFIED IDEOGRAPH - 0xE2C6: 0x916C, //CJK UNIFIED IDEOGRAPH - 0xE2C7: 0x9296, //CJK UNIFIED IDEOGRAPH - 0xE2C8: 0x92B9, //CJK UNIFIED IDEOGRAPH - 0xE2C9: 0x968B, //CJK UNIFIED IDEOGRAPH - 0xE2CA: 0x96A7, //CJK UNIFIED IDEOGRAPH - 0xE2CB: 0x96A8, //CJK UNIFIED IDEOGRAPH - 0xE2CC: 0x96D6, //CJK UNIFIED IDEOGRAPH - 0xE2CD: 0x9700, //CJK UNIFIED IDEOGRAPH - 0xE2CE: 0x9808, //CJK UNIFIED IDEOGRAPH - 0xE2CF: 0x9996, //CJK UNIFIED IDEOGRAPH - 0xE2D0: 0x9AD3, //CJK UNIFIED IDEOGRAPH - 0xE2D1: 0x9B1A, //CJK UNIFIED IDEOGRAPH - 0xE2D2: 0x53D4, //CJK UNIFIED IDEOGRAPH - 0xE2D3: 0x587E, //CJK UNIFIED IDEOGRAPH - 0xE2D4: 0x5919, //CJK UNIFIED IDEOGRAPH - 0xE2D5: 0x5B70, //CJK UNIFIED IDEOGRAPH - 0xE2D6: 0x5BBF, //CJK UNIFIED IDEOGRAPH - 0xE2D7: 0x6DD1, //CJK UNIFIED IDEOGRAPH - 0xE2D8: 0x6F5A, //CJK UNIFIED IDEOGRAPH - 0xE2D9: 0x719F, //CJK UNIFIED IDEOGRAPH - 0xE2DA: 0x7421, //CJK UNIFIED IDEOGRAPH - 0xE2DB: 0x74B9, //CJK UNIFIED IDEOGRAPH - 0xE2DC: 0x8085, //CJK UNIFIED IDEOGRAPH - 0xE2DD: 0x83FD, //CJK UNIFIED IDEOGRAPH - 0xE2DE: 0x5DE1, //CJK UNIFIED IDEOGRAPH - 0xE2DF: 0x5F87, //CJK UNIFIED IDEOGRAPH - 0xE2E0: 0x5FAA, //CJK UNIFIED IDEOGRAPH - 0xE2E1: 0x6042, //CJK UNIFIED IDEOGRAPH - 0xE2E2: 0x65EC, //CJK UNIFIED IDEOGRAPH - 0xE2E3: 0x6812, //CJK UNIFIED IDEOGRAPH - 0xE2E4: 0x696F, //CJK UNIFIED IDEOGRAPH - 0xE2E5: 0x6A53, //CJK UNIFIED IDEOGRAPH - 0xE2E6: 0x6B89, //CJK UNIFIED IDEOGRAPH - 0xE2E7: 0x6D35, //CJK UNIFIED IDEOGRAPH - 0xE2E8: 0x6DF3, //CJK UNIFIED IDEOGRAPH - 0xE2E9: 0x73E3, //CJK UNIFIED IDEOGRAPH - 0xE2EA: 0x76FE, //CJK UNIFIED IDEOGRAPH - 0xE2EB: 0x77AC, //CJK UNIFIED IDEOGRAPH - 0xE2EC: 0x7B4D, //CJK UNIFIED IDEOGRAPH - 0xE2ED: 0x7D14, //CJK UNIFIED IDEOGRAPH - 0xE2EE: 0x8123, //CJK UNIFIED IDEOGRAPH - 0xE2EF: 0x821C, //CJK UNIFIED IDEOGRAPH - 0xE2F0: 0x8340, //CJK UNIFIED IDEOGRAPH - 0xE2F1: 0x84F4, //CJK UNIFIED IDEOGRAPH - 0xE2F2: 0x8563, //CJK UNIFIED IDEOGRAPH - 0xE2F3: 0x8A62, //CJK UNIFIED IDEOGRAPH - 0xE2F4: 0x8AC4, //CJK UNIFIED IDEOGRAPH - 0xE2F5: 0x9187, //CJK UNIFIED IDEOGRAPH - 0xE2F6: 0x931E, //CJK UNIFIED IDEOGRAPH - 0xE2F7: 0x9806, //CJK UNIFIED IDEOGRAPH - 0xE2F8: 0x99B4, //CJK UNIFIED IDEOGRAPH - 0xE2F9: 0x620C, //CJK UNIFIED IDEOGRAPH - 0xE2FA: 0x8853, //CJK UNIFIED IDEOGRAPH - 0xE2FB: 0x8FF0, //CJK UNIFIED IDEOGRAPH - 0xE2FC: 0x9265, //CJK UNIFIED IDEOGRAPH - 0xE2FD: 0x5D07, //CJK UNIFIED IDEOGRAPH - 0xE2FE: 0x5D27, //CJK UNIFIED IDEOGRAPH - 0xE3A1: 0x5D69, //CJK UNIFIED IDEOGRAPH - 0xE3A2: 0x745F, //CJK UNIFIED IDEOGRAPH - 0xE3A3: 0x819D, //CJK UNIFIED IDEOGRAPH - 0xE3A4: 0x8768, //CJK UNIFIED IDEOGRAPH - 0xE3A5: 0x6FD5, //CJK UNIFIED IDEOGRAPH - 0xE3A6: 0x62FE, //CJK UNIFIED IDEOGRAPH - 0xE3A7: 0x7FD2, //CJK UNIFIED IDEOGRAPH - 0xE3A8: 0x8936, //CJK UNIFIED IDEOGRAPH - 0xE3A9: 0x8972, //CJK UNIFIED IDEOGRAPH - 0xE3AA: 0x4E1E, //CJK UNIFIED IDEOGRAPH - 0xE3AB: 0x4E58, //CJK UNIFIED IDEOGRAPH - 0xE3AC: 0x50E7, //CJK UNIFIED IDEOGRAPH - 0xE3AD: 0x52DD, //CJK UNIFIED IDEOGRAPH - 0xE3AE: 0x5347, //CJK UNIFIED IDEOGRAPH - 0xE3AF: 0x627F, //CJK UNIFIED IDEOGRAPH - 0xE3B0: 0x6607, //CJK UNIFIED IDEOGRAPH - 0xE3B1: 0x7E69, //CJK UNIFIED IDEOGRAPH - 0xE3B2: 0x8805, //CJK UNIFIED IDEOGRAPH - 0xE3B3: 0x965E, //CJK UNIFIED IDEOGRAPH - 0xE3B4: 0x4F8D, //CJK UNIFIED IDEOGRAPH - 0xE3B5: 0x5319, //CJK UNIFIED IDEOGRAPH - 0xE3B6: 0x5636, //CJK UNIFIED IDEOGRAPH - 0xE3B7: 0x59CB, //CJK UNIFIED IDEOGRAPH - 0xE3B8: 0x5AA4, //CJK UNIFIED IDEOGRAPH - 0xE3B9: 0x5C38, //CJK UNIFIED IDEOGRAPH - 0xE3BA: 0x5C4E, //CJK UNIFIED IDEOGRAPH - 0xE3BB: 0x5C4D, //CJK UNIFIED IDEOGRAPH - 0xE3BC: 0x5E02, //CJK UNIFIED IDEOGRAPH - 0xE3BD: 0x5F11, //CJK UNIFIED IDEOGRAPH - 0xE3BE: 0x6043, //CJK UNIFIED IDEOGRAPH - 0xE3BF: 0x65BD, //CJK UNIFIED IDEOGRAPH - 0xE3C0: 0x662F, //CJK UNIFIED IDEOGRAPH - 0xE3C1: 0x6642, //CJK UNIFIED IDEOGRAPH - 0xE3C2: 0x67BE, //CJK UNIFIED IDEOGRAPH - 0xE3C3: 0x67F4, //CJK UNIFIED IDEOGRAPH - 0xE3C4: 0x731C, //CJK UNIFIED IDEOGRAPH - 0xE3C5: 0x77E2, //CJK UNIFIED IDEOGRAPH - 0xE3C6: 0x793A, //CJK UNIFIED IDEOGRAPH - 0xE3C7: 0x7FC5, //CJK UNIFIED IDEOGRAPH - 0xE3C8: 0x8494, //CJK UNIFIED IDEOGRAPH - 0xE3C9: 0x84CD, //CJK UNIFIED IDEOGRAPH - 0xE3CA: 0x8996, //CJK UNIFIED IDEOGRAPH - 0xE3CB: 0x8A66, //CJK UNIFIED IDEOGRAPH - 0xE3CC: 0x8A69, //CJK UNIFIED IDEOGRAPH - 0xE3CD: 0x8AE1, //CJK UNIFIED IDEOGRAPH - 0xE3CE: 0x8C55, //CJK UNIFIED IDEOGRAPH - 0xE3CF: 0x8C7A, //CJK UNIFIED IDEOGRAPH - 0xE3D0: 0x57F4, //CJK UNIFIED IDEOGRAPH - 0xE3D1: 0x5BD4, //CJK UNIFIED IDEOGRAPH - 0xE3D2: 0x5F0F, //CJK UNIFIED IDEOGRAPH - 0xE3D3: 0x606F, //CJK UNIFIED IDEOGRAPH - 0xE3D4: 0x62ED, //CJK UNIFIED IDEOGRAPH - 0xE3D5: 0x690D, //CJK UNIFIED IDEOGRAPH - 0xE3D6: 0x6B96, //CJK UNIFIED IDEOGRAPH - 0xE3D7: 0x6E5C, //CJK UNIFIED IDEOGRAPH - 0xE3D8: 0x7184, //CJK UNIFIED IDEOGRAPH - 0xE3D9: 0x7BD2, //CJK UNIFIED IDEOGRAPH - 0xE3DA: 0x8755, //CJK UNIFIED IDEOGRAPH - 0xE3DB: 0x8B58, //CJK UNIFIED IDEOGRAPH - 0xE3DC: 0x8EFE, //CJK UNIFIED IDEOGRAPH - 0xE3DD: 0x98DF, //CJK UNIFIED IDEOGRAPH - 0xE3DE: 0x98FE, //CJK UNIFIED IDEOGRAPH - 0xE3DF: 0x4F38, //CJK UNIFIED IDEOGRAPH - 0xE3E0: 0x4F81, //CJK UNIFIED IDEOGRAPH - 0xE3E1: 0x4FE1, //CJK UNIFIED IDEOGRAPH - 0xE3E2: 0x547B, //CJK UNIFIED IDEOGRAPH - 0xE3E3: 0x5A20, //CJK UNIFIED IDEOGRAPH - 0xE3E4: 0x5BB8, //CJK UNIFIED IDEOGRAPH - 0xE3E5: 0x613C, //CJK UNIFIED IDEOGRAPH - 0xE3E6: 0x65B0, //CJK UNIFIED IDEOGRAPH - 0xE3E7: 0x6668, //CJK UNIFIED IDEOGRAPH - 0xE3E8: 0x71FC, //CJK UNIFIED IDEOGRAPH - 0xE3E9: 0x7533, //CJK UNIFIED IDEOGRAPH - 0xE3EA: 0x795E, //CJK UNIFIED IDEOGRAPH - 0xE3EB: 0x7D33, //CJK UNIFIED IDEOGRAPH - 0xE3EC: 0x814E, //CJK UNIFIED IDEOGRAPH - 0xE3ED: 0x81E3, //CJK UNIFIED IDEOGRAPH - 0xE3EE: 0x8398, //CJK UNIFIED IDEOGRAPH - 0xE3EF: 0x85AA, //CJK UNIFIED IDEOGRAPH - 0xE3F0: 0x85CE, //CJK UNIFIED IDEOGRAPH - 0xE3F1: 0x8703, //CJK UNIFIED IDEOGRAPH - 0xE3F2: 0x8A0A, //CJK UNIFIED IDEOGRAPH - 0xE3F3: 0x8EAB, //CJK UNIFIED IDEOGRAPH - 0xE3F4: 0x8F9B, //CJK UNIFIED IDEOGRAPH - 0xE3F5: 0xF971, //CJK COMPATIBILITY IDEOGRAPH - 0xE3F6: 0x8FC5, //CJK UNIFIED IDEOGRAPH - 0xE3F7: 0x5931, //CJK UNIFIED IDEOGRAPH - 0xE3F8: 0x5BA4, //CJK UNIFIED IDEOGRAPH - 0xE3F9: 0x5BE6, //CJK UNIFIED IDEOGRAPH - 0xE3FA: 0x6089, //CJK UNIFIED IDEOGRAPH - 0xE3FB: 0x5BE9, //CJK UNIFIED IDEOGRAPH - 0xE3FC: 0x5C0B, //CJK UNIFIED IDEOGRAPH - 0xE3FD: 0x5FC3, //CJK UNIFIED IDEOGRAPH - 0xE3FE: 0x6C81, //CJK UNIFIED IDEOGRAPH - 0xE4A1: 0xF972, //CJK COMPATIBILITY IDEOGRAPH - 0xE4A2: 0x6DF1, //CJK UNIFIED IDEOGRAPH - 0xE4A3: 0x700B, //CJK UNIFIED IDEOGRAPH - 0xE4A4: 0x751A, //CJK UNIFIED IDEOGRAPH - 0xE4A5: 0x82AF, //CJK UNIFIED IDEOGRAPH - 0xE4A6: 0x8AF6, //CJK UNIFIED IDEOGRAPH - 0xE4A7: 0x4EC0, //CJK UNIFIED IDEOGRAPH - 0xE4A8: 0x5341, //CJK UNIFIED IDEOGRAPH - 0xE4A9: 0xF973, //CJK COMPATIBILITY IDEOGRAPH - 0xE4AA: 0x96D9, //CJK UNIFIED IDEOGRAPH - 0xE4AB: 0x6C0F, //CJK UNIFIED IDEOGRAPH - 0xE4AC: 0x4E9E, //CJK UNIFIED IDEOGRAPH - 0xE4AD: 0x4FC4, //CJK UNIFIED IDEOGRAPH - 0xE4AE: 0x5152, //CJK UNIFIED IDEOGRAPH - 0xE4AF: 0x555E, //CJK UNIFIED IDEOGRAPH - 0xE4B0: 0x5A25, //CJK UNIFIED IDEOGRAPH - 0xE4B1: 0x5CE8, //CJK UNIFIED IDEOGRAPH - 0xE4B2: 0x6211, //CJK UNIFIED IDEOGRAPH - 0xE4B3: 0x7259, //CJK UNIFIED IDEOGRAPH - 0xE4B4: 0x82BD, //CJK UNIFIED IDEOGRAPH - 0xE4B5: 0x83AA, //CJK UNIFIED IDEOGRAPH - 0xE4B6: 0x86FE, //CJK UNIFIED IDEOGRAPH - 0xE4B7: 0x8859, //CJK UNIFIED IDEOGRAPH - 0xE4B8: 0x8A1D, //CJK UNIFIED IDEOGRAPH - 0xE4B9: 0x963F, //CJK UNIFIED IDEOGRAPH - 0xE4BA: 0x96C5, //CJK UNIFIED IDEOGRAPH - 0xE4BB: 0x9913, //CJK UNIFIED IDEOGRAPH - 0xE4BC: 0x9D09, //CJK UNIFIED IDEOGRAPH - 0xE4BD: 0x9D5D, //CJK UNIFIED IDEOGRAPH - 0xE4BE: 0x580A, //CJK UNIFIED IDEOGRAPH - 0xE4BF: 0x5CB3, //CJK UNIFIED IDEOGRAPH - 0xE4C0: 0x5DBD, //CJK UNIFIED IDEOGRAPH - 0xE4C1: 0x5E44, //CJK UNIFIED IDEOGRAPH - 0xE4C2: 0x60E1, //CJK UNIFIED IDEOGRAPH - 0xE4C3: 0x6115, //CJK UNIFIED IDEOGRAPH - 0xE4C4: 0x63E1, //CJK UNIFIED IDEOGRAPH - 0xE4C5: 0x6A02, //CJK UNIFIED IDEOGRAPH - 0xE4C6: 0x6E25, //CJK UNIFIED IDEOGRAPH - 0xE4C7: 0x9102, //CJK UNIFIED IDEOGRAPH - 0xE4C8: 0x9354, //CJK UNIFIED IDEOGRAPH - 0xE4C9: 0x984E, //CJK UNIFIED IDEOGRAPH - 0xE4CA: 0x9C10, //CJK UNIFIED IDEOGRAPH - 0xE4CB: 0x9F77, //CJK UNIFIED IDEOGRAPH - 0xE4CC: 0x5B89, //CJK UNIFIED IDEOGRAPH - 0xE4CD: 0x5CB8, //CJK UNIFIED IDEOGRAPH - 0xE4CE: 0x6309, //CJK UNIFIED IDEOGRAPH - 0xE4CF: 0x664F, //CJK UNIFIED IDEOGRAPH - 0xE4D0: 0x6848, //CJK UNIFIED IDEOGRAPH - 0xE4D1: 0x773C, //CJK UNIFIED IDEOGRAPH - 0xE4D2: 0x96C1, //CJK UNIFIED IDEOGRAPH - 0xE4D3: 0x978D, //CJK UNIFIED IDEOGRAPH - 0xE4D4: 0x9854, //CJK UNIFIED IDEOGRAPH - 0xE4D5: 0x9B9F, //CJK UNIFIED IDEOGRAPH - 0xE4D6: 0x65A1, //CJK UNIFIED IDEOGRAPH - 0xE4D7: 0x8B01, //CJK UNIFIED IDEOGRAPH - 0xE4D8: 0x8ECB, //CJK UNIFIED IDEOGRAPH - 0xE4D9: 0x95BC, //CJK UNIFIED IDEOGRAPH - 0xE4DA: 0x5535, //CJK UNIFIED IDEOGRAPH - 0xE4DB: 0x5CA9, //CJK UNIFIED IDEOGRAPH - 0xE4DC: 0x5DD6, //CJK UNIFIED IDEOGRAPH - 0xE4DD: 0x5EB5, //CJK UNIFIED IDEOGRAPH - 0xE4DE: 0x6697, //CJK UNIFIED IDEOGRAPH - 0xE4DF: 0x764C, //CJK UNIFIED IDEOGRAPH - 0xE4E0: 0x83F4, //CJK UNIFIED IDEOGRAPH - 0xE4E1: 0x95C7, //CJK UNIFIED IDEOGRAPH - 0xE4E2: 0x58D3, //CJK UNIFIED IDEOGRAPH - 0xE4E3: 0x62BC, //CJK UNIFIED IDEOGRAPH - 0xE4E4: 0x72CE, //CJK UNIFIED IDEOGRAPH - 0xE4E5: 0x9D28, //CJK UNIFIED IDEOGRAPH - 0xE4E6: 0x4EF0, //CJK UNIFIED IDEOGRAPH - 0xE4E7: 0x592E, //CJK UNIFIED IDEOGRAPH - 0xE4E8: 0x600F, //CJK UNIFIED IDEOGRAPH - 0xE4E9: 0x663B, //CJK UNIFIED IDEOGRAPH - 0xE4EA: 0x6B83, //CJK UNIFIED IDEOGRAPH - 0xE4EB: 0x79E7, //CJK UNIFIED IDEOGRAPH - 0xE4EC: 0x9D26, //CJK UNIFIED IDEOGRAPH - 0xE4ED: 0x5393, //CJK UNIFIED IDEOGRAPH - 0xE4EE: 0x54C0, //CJK UNIFIED IDEOGRAPH - 0xE4EF: 0x57C3, //CJK UNIFIED IDEOGRAPH - 0xE4F0: 0x5D16, //CJK UNIFIED IDEOGRAPH - 0xE4F1: 0x611B, //CJK UNIFIED IDEOGRAPH - 0xE4F2: 0x66D6, //CJK UNIFIED IDEOGRAPH - 0xE4F3: 0x6DAF, //CJK UNIFIED IDEOGRAPH - 0xE4F4: 0x788D, //CJK UNIFIED IDEOGRAPH - 0xE4F5: 0x827E, //CJK UNIFIED IDEOGRAPH - 0xE4F6: 0x9698, //CJK UNIFIED IDEOGRAPH - 0xE4F7: 0x9744, //CJK UNIFIED IDEOGRAPH - 0xE4F8: 0x5384, //CJK UNIFIED IDEOGRAPH - 0xE4F9: 0x627C, //CJK UNIFIED IDEOGRAPH - 0xE4FA: 0x6396, //CJK UNIFIED IDEOGRAPH - 0xE4FB: 0x6DB2, //CJK UNIFIED IDEOGRAPH - 0xE4FC: 0x7E0A, //CJK UNIFIED IDEOGRAPH - 0xE4FD: 0x814B, //CJK UNIFIED IDEOGRAPH - 0xE4FE: 0x984D, //CJK UNIFIED IDEOGRAPH - 0xE5A1: 0x6AFB, //CJK UNIFIED IDEOGRAPH - 0xE5A2: 0x7F4C, //CJK UNIFIED IDEOGRAPH - 0xE5A3: 0x9DAF, //CJK UNIFIED IDEOGRAPH - 0xE5A4: 0x9E1A, //CJK UNIFIED IDEOGRAPH - 0xE5A5: 0x4E5F, //CJK UNIFIED IDEOGRAPH - 0xE5A6: 0x503B, //CJK UNIFIED IDEOGRAPH - 0xE5A7: 0x51B6, //CJK UNIFIED IDEOGRAPH - 0xE5A8: 0x591C, //CJK UNIFIED IDEOGRAPH - 0xE5A9: 0x60F9, //CJK UNIFIED IDEOGRAPH - 0xE5AA: 0x63F6, //CJK UNIFIED IDEOGRAPH - 0xE5AB: 0x6930, //CJK UNIFIED IDEOGRAPH - 0xE5AC: 0x723A, //CJK UNIFIED IDEOGRAPH - 0xE5AD: 0x8036, //CJK UNIFIED IDEOGRAPH - 0xE5AE: 0xF974, //CJK COMPATIBILITY IDEOGRAPH - 0xE5AF: 0x91CE, //CJK UNIFIED IDEOGRAPH - 0xE5B0: 0x5F31, //CJK UNIFIED IDEOGRAPH - 0xE5B1: 0xF975, //CJK COMPATIBILITY IDEOGRAPH - 0xE5B2: 0xF976, //CJK COMPATIBILITY IDEOGRAPH - 0xE5B3: 0x7D04, //CJK UNIFIED IDEOGRAPH - 0xE5B4: 0x82E5, //CJK UNIFIED IDEOGRAPH - 0xE5B5: 0x846F, //CJK UNIFIED IDEOGRAPH - 0xE5B6: 0x84BB, //CJK UNIFIED IDEOGRAPH - 0xE5B7: 0x85E5, //CJK UNIFIED IDEOGRAPH - 0xE5B8: 0x8E8D, //CJK UNIFIED IDEOGRAPH - 0xE5B9: 0xF977, //CJK COMPATIBILITY IDEOGRAPH - 0xE5BA: 0x4F6F, //CJK UNIFIED IDEOGRAPH - 0xE5BB: 0xF978, //CJK COMPATIBILITY IDEOGRAPH - 0xE5BC: 0xF979, //CJK COMPATIBILITY IDEOGRAPH - 0xE5BD: 0x58E4, //CJK UNIFIED IDEOGRAPH - 0xE5BE: 0x5B43, //CJK UNIFIED IDEOGRAPH - 0xE5BF: 0x6059, //CJK UNIFIED IDEOGRAPH - 0xE5C0: 0x63DA, //CJK UNIFIED IDEOGRAPH - 0xE5C1: 0x6518, //CJK UNIFIED IDEOGRAPH - 0xE5C2: 0x656D, //CJK UNIFIED IDEOGRAPH - 0xE5C3: 0x6698, //CJK UNIFIED IDEOGRAPH - 0xE5C4: 0xF97A, //CJK COMPATIBILITY IDEOGRAPH - 0xE5C5: 0x694A, //CJK UNIFIED IDEOGRAPH - 0xE5C6: 0x6A23, //CJK UNIFIED IDEOGRAPH - 0xE5C7: 0x6D0B, //CJK UNIFIED IDEOGRAPH - 0xE5C8: 0x7001, //CJK UNIFIED IDEOGRAPH - 0xE5C9: 0x716C, //CJK UNIFIED IDEOGRAPH - 0xE5CA: 0x75D2, //CJK UNIFIED IDEOGRAPH - 0xE5CB: 0x760D, //CJK UNIFIED IDEOGRAPH - 0xE5CC: 0x79B3, //CJK UNIFIED IDEOGRAPH - 0xE5CD: 0x7A70, //CJK UNIFIED IDEOGRAPH - 0xE5CE: 0xF97B, //CJK COMPATIBILITY IDEOGRAPH - 0xE5CF: 0x7F8A, //CJK UNIFIED IDEOGRAPH - 0xE5D0: 0xF97C, //CJK COMPATIBILITY IDEOGRAPH - 0xE5D1: 0x8944, //CJK UNIFIED IDEOGRAPH - 0xE5D2: 0xF97D, //CJK COMPATIBILITY IDEOGRAPH - 0xE5D3: 0x8B93, //CJK UNIFIED IDEOGRAPH - 0xE5D4: 0x91C0, //CJK UNIFIED IDEOGRAPH - 0xE5D5: 0x967D, //CJK UNIFIED IDEOGRAPH - 0xE5D6: 0xF97E, //CJK COMPATIBILITY IDEOGRAPH - 0xE5D7: 0x990A, //CJK UNIFIED IDEOGRAPH - 0xE5D8: 0x5704, //CJK UNIFIED IDEOGRAPH - 0xE5D9: 0x5FA1, //CJK UNIFIED IDEOGRAPH - 0xE5DA: 0x65BC, //CJK UNIFIED IDEOGRAPH - 0xE5DB: 0x6F01, //CJK UNIFIED IDEOGRAPH - 0xE5DC: 0x7600, //CJK UNIFIED IDEOGRAPH - 0xE5DD: 0x79A6, //CJK UNIFIED IDEOGRAPH - 0xE5DE: 0x8A9E, //CJK UNIFIED IDEOGRAPH - 0xE5DF: 0x99AD, //CJK UNIFIED IDEOGRAPH - 0xE5E0: 0x9B5A, //CJK UNIFIED IDEOGRAPH - 0xE5E1: 0x9F6C, //CJK UNIFIED IDEOGRAPH - 0xE5E2: 0x5104, //CJK UNIFIED IDEOGRAPH - 0xE5E3: 0x61B6, //CJK UNIFIED IDEOGRAPH - 0xE5E4: 0x6291, //CJK UNIFIED IDEOGRAPH - 0xE5E5: 0x6A8D, //CJK UNIFIED IDEOGRAPH - 0xE5E6: 0x81C6, //CJK UNIFIED IDEOGRAPH - 0xE5E7: 0x5043, //CJK UNIFIED IDEOGRAPH - 0xE5E8: 0x5830, //CJK UNIFIED IDEOGRAPH - 0xE5E9: 0x5F66, //CJK UNIFIED IDEOGRAPH - 0xE5EA: 0x7109, //CJK UNIFIED IDEOGRAPH - 0xE5EB: 0x8A00, //CJK UNIFIED IDEOGRAPH - 0xE5EC: 0x8AFA, //CJK UNIFIED IDEOGRAPH - 0xE5ED: 0x5B7C, //CJK UNIFIED IDEOGRAPH - 0xE5EE: 0x8616, //CJK UNIFIED IDEOGRAPH - 0xE5EF: 0x4FFA, //CJK UNIFIED IDEOGRAPH - 0xE5F0: 0x513C, //CJK UNIFIED IDEOGRAPH - 0xE5F1: 0x56B4, //CJK UNIFIED IDEOGRAPH - 0xE5F2: 0x5944, //CJK UNIFIED IDEOGRAPH - 0xE5F3: 0x63A9, //CJK UNIFIED IDEOGRAPH - 0xE5F4: 0x6DF9, //CJK UNIFIED IDEOGRAPH - 0xE5F5: 0x5DAA, //CJK UNIFIED IDEOGRAPH - 0xE5F6: 0x696D, //CJK UNIFIED IDEOGRAPH - 0xE5F7: 0x5186, //CJK UNIFIED IDEOGRAPH - 0xE5F8: 0x4E88, //CJK UNIFIED IDEOGRAPH - 0xE5F9: 0x4F59, //CJK UNIFIED IDEOGRAPH - 0xE5FA: 0xF97F, //CJK COMPATIBILITY IDEOGRAPH - 0xE5FB: 0xF980, //CJK COMPATIBILITY IDEOGRAPH - 0xE5FC: 0xF981, //CJK COMPATIBILITY IDEOGRAPH - 0xE5FD: 0x5982, //CJK UNIFIED IDEOGRAPH - 0xE5FE: 0xF982, //CJK COMPATIBILITY IDEOGRAPH - 0xE6A1: 0xF983, //CJK COMPATIBILITY IDEOGRAPH - 0xE6A2: 0x6B5F, //CJK UNIFIED IDEOGRAPH - 0xE6A3: 0x6C5D, //CJK UNIFIED IDEOGRAPH - 0xE6A4: 0xF984, //CJK COMPATIBILITY IDEOGRAPH - 0xE6A5: 0x74B5, //CJK UNIFIED IDEOGRAPH - 0xE6A6: 0x7916, //CJK UNIFIED IDEOGRAPH - 0xE6A7: 0xF985, //CJK COMPATIBILITY IDEOGRAPH - 0xE6A8: 0x8207, //CJK UNIFIED IDEOGRAPH - 0xE6A9: 0x8245, //CJK UNIFIED IDEOGRAPH - 0xE6AA: 0x8339, //CJK UNIFIED IDEOGRAPH - 0xE6AB: 0x8F3F, //CJK UNIFIED IDEOGRAPH - 0xE6AC: 0x8F5D, //CJK UNIFIED IDEOGRAPH - 0xE6AD: 0xF986, //CJK COMPATIBILITY IDEOGRAPH - 0xE6AE: 0x9918, //CJK UNIFIED IDEOGRAPH - 0xE6AF: 0xF987, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B0: 0xF988, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B1: 0xF989, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B2: 0x4EA6, //CJK UNIFIED IDEOGRAPH - 0xE6B3: 0xF98A, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B4: 0x57DF, //CJK UNIFIED IDEOGRAPH - 0xE6B5: 0x5F79, //CJK UNIFIED IDEOGRAPH - 0xE6B6: 0x6613, //CJK UNIFIED IDEOGRAPH - 0xE6B7: 0xF98B, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B8: 0xF98C, //CJK COMPATIBILITY IDEOGRAPH - 0xE6B9: 0x75AB, //CJK UNIFIED IDEOGRAPH - 0xE6BA: 0x7E79, //CJK UNIFIED IDEOGRAPH - 0xE6BB: 0x8B6F, //CJK UNIFIED IDEOGRAPH - 0xE6BC: 0xF98D, //CJK COMPATIBILITY IDEOGRAPH - 0xE6BD: 0x9006, //CJK UNIFIED IDEOGRAPH - 0xE6BE: 0x9A5B, //CJK UNIFIED IDEOGRAPH - 0xE6BF: 0x56A5, //CJK UNIFIED IDEOGRAPH - 0xE6C0: 0x5827, //CJK UNIFIED IDEOGRAPH - 0xE6C1: 0x59F8, //CJK UNIFIED IDEOGRAPH - 0xE6C2: 0x5A1F, //CJK UNIFIED IDEOGRAPH - 0xE6C3: 0x5BB4, //CJK UNIFIED IDEOGRAPH - 0xE6C4: 0xF98E, //CJK COMPATIBILITY IDEOGRAPH - 0xE6C5: 0x5EF6, //CJK UNIFIED IDEOGRAPH - 0xE6C6: 0xF98F, //CJK COMPATIBILITY IDEOGRAPH - 0xE6C7: 0xF990, //CJK COMPATIBILITY IDEOGRAPH - 0xE6C8: 0x6350, //CJK UNIFIED IDEOGRAPH - 0xE6C9: 0x633B, //CJK UNIFIED IDEOGRAPH - 0xE6CA: 0xF991, //CJK COMPATIBILITY IDEOGRAPH - 0xE6CB: 0x693D, //CJK UNIFIED IDEOGRAPH - 0xE6CC: 0x6C87, //CJK UNIFIED IDEOGRAPH - 0xE6CD: 0x6CBF, //CJK UNIFIED IDEOGRAPH - 0xE6CE: 0x6D8E, //CJK UNIFIED IDEOGRAPH - 0xE6CF: 0x6D93, //CJK UNIFIED IDEOGRAPH - 0xE6D0: 0x6DF5, //CJK UNIFIED IDEOGRAPH - 0xE6D1: 0x6F14, //CJK UNIFIED IDEOGRAPH - 0xE6D2: 0xF992, //CJK COMPATIBILITY IDEOGRAPH - 0xE6D3: 0x70DF, //CJK UNIFIED IDEOGRAPH - 0xE6D4: 0x7136, //CJK UNIFIED IDEOGRAPH - 0xE6D5: 0x7159, //CJK UNIFIED IDEOGRAPH - 0xE6D6: 0xF993, //CJK COMPATIBILITY IDEOGRAPH - 0xE6D7: 0x71C3, //CJK UNIFIED IDEOGRAPH - 0xE6D8: 0x71D5, //CJK UNIFIED IDEOGRAPH - 0xE6D9: 0xF994, //CJK COMPATIBILITY IDEOGRAPH - 0xE6DA: 0x784F, //CJK UNIFIED IDEOGRAPH - 0xE6DB: 0x786F, //CJK UNIFIED IDEOGRAPH - 0xE6DC: 0xF995, //CJK COMPATIBILITY IDEOGRAPH - 0xE6DD: 0x7B75, //CJK UNIFIED IDEOGRAPH - 0xE6DE: 0x7DE3, //CJK UNIFIED IDEOGRAPH - 0xE6DF: 0xF996, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E0: 0x7E2F, //CJK UNIFIED IDEOGRAPH - 0xE6E1: 0xF997, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E2: 0x884D, //CJK UNIFIED IDEOGRAPH - 0xE6E3: 0x8EDF, //CJK UNIFIED IDEOGRAPH - 0xE6E4: 0xF998, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E5: 0xF999, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E6: 0xF99A, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E7: 0x925B, //CJK UNIFIED IDEOGRAPH - 0xE6E8: 0xF99B, //CJK COMPATIBILITY IDEOGRAPH - 0xE6E9: 0x9CF6, //CJK UNIFIED IDEOGRAPH - 0xE6EA: 0xF99C, //CJK COMPATIBILITY IDEOGRAPH - 0xE6EB: 0xF99D, //CJK COMPATIBILITY IDEOGRAPH - 0xE6EC: 0xF99E, //CJK COMPATIBILITY IDEOGRAPH - 0xE6ED: 0x6085, //CJK UNIFIED IDEOGRAPH - 0xE6EE: 0x6D85, //CJK UNIFIED IDEOGRAPH - 0xE6EF: 0xF99F, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F0: 0x71B1, //CJK UNIFIED IDEOGRAPH - 0xE6F1: 0xF9A0, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F2: 0xF9A1, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F3: 0x95B1, //CJK UNIFIED IDEOGRAPH - 0xE6F4: 0x53AD, //CJK UNIFIED IDEOGRAPH - 0xE6F5: 0xF9A2, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F6: 0xF9A3, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F7: 0xF9A4, //CJK COMPATIBILITY IDEOGRAPH - 0xE6F8: 0x67D3, //CJK UNIFIED IDEOGRAPH - 0xE6F9: 0xF9A5, //CJK COMPATIBILITY IDEOGRAPH - 0xE6FA: 0x708E, //CJK UNIFIED IDEOGRAPH - 0xE6FB: 0x7130, //CJK UNIFIED IDEOGRAPH - 0xE6FC: 0x7430, //CJK UNIFIED IDEOGRAPH - 0xE6FD: 0x8276, //CJK UNIFIED IDEOGRAPH - 0xE6FE: 0x82D2, //CJK UNIFIED IDEOGRAPH - 0xE7A1: 0xF9A6, //CJK COMPATIBILITY IDEOGRAPH - 0xE7A2: 0x95BB, //CJK UNIFIED IDEOGRAPH - 0xE7A3: 0x9AE5, //CJK UNIFIED IDEOGRAPH - 0xE7A4: 0x9E7D, //CJK UNIFIED IDEOGRAPH - 0xE7A5: 0x66C4, //CJK UNIFIED IDEOGRAPH - 0xE7A6: 0xF9A7, //CJK COMPATIBILITY IDEOGRAPH - 0xE7A7: 0x71C1, //CJK UNIFIED IDEOGRAPH - 0xE7A8: 0x8449, //CJK UNIFIED IDEOGRAPH - 0xE7A9: 0xF9A8, //CJK COMPATIBILITY IDEOGRAPH - 0xE7AA: 0xF9A9, //CJK COMPATIBILITY IDEOGRAPH - 0xE7AB: 0x584B, //CJK UNIFIED IDEOGRAPH - 0xE7AC: 0xF9AA, //CJK COMPATIBILITY IDEOGRAPH - 0xE7AD: 0xF9AB, //CJK COMPATIBILITY IDEOGRAPH - 0xE7AE: 0x5DB8, //CJK UNIFIED IDEOGRAPH - 0xE7AF: 0x5F71, //CJK UNIFIED IDEOGRAPH - 0xE7B0: 0xF9AC, //CJK COMPATIBILITY IDEOGRAPH - 0xE7B1: 0x6620, //CJK UNIFIED IDEOGRAPH - 0xE7B2: 0x668E, //CJK UNIFIED IDEOGRAPH - 0xE7B3: 0x6979, //CJK UNIFIED IDEOGRAPH - 0xE7B4: 0x69AE, //CJK UNIFIED IDEOGRAPH - 0xE7B5: 0x6C38, //CJK UNIFIED IDEOGRAPH - 0xE7B6: 0x6CF3, //CJK UNIFIED IDEOGRAPH - 0xE7B7: 0x6E36, //CJK UNIFIED IDEOGRAPH - 0xE7B8: 0x6F41, //CJK UNIFIED IDEOGRAPH - 0xE7B9: 0x6FDA, //CJK UNIFIED IDEOGRAPH - 0xE7BA: 0x701B, //CJK UNIFIED IDEOGRAPH - 0xE7BB: 0x702F, //CJK UNIFIED IDEOGRAPH - 0xE7BC: 0x7150, //CJK UNIFIED IDEOGRAPH - 0xE7BD: 0x71DF, //CJK UNIFIED IDEOGRAPH - 0xE7BE: 0x7370, //CJK UNIFIED IDEOGRAPH - 0xE7BF: 0xF9AD, //CJK COMPATIBILITY IDEOGRAPH - 0xE7C0: 0x745B, //CJK UNIFIED IDEOGRAPH - 0xE7C1: 0xF9AE, //CJK COMPATIBILITY IDEOGRAPH - 0xE7C2: 0x74D4, //CJK UNIFIED IDEOGRAPH - 0xE7C3: 0x76C8, //CJK UNIFIED IDEOGRAPH - 0xE7C4: 0x7A4E, //CJK UNIFIED IDEOGRAPH - 0xE7C5: 0x7E93, //CJK UNIFIED IDEOGRAPH - 0xE7C6: 0xF9AF, //CJK COMPATIBILITY IDEOGRAPH - 0xE7C7: 0xF9B0, //CJK COMPATIBILITY IDEOGRAPH - 0xE7C8: 0x82F1, //CJK UNIFIED IDEOGRAPH - 0xE7C9: 0x8A60, //CJK UNIFIED IDEOGRAPH - 0xE7CA: 0x8FCE, //CJK UNIFIED IDEOGRAPH - 0xE7CB: 0xF9B1, //CJK COMPATIBILITY IDEOGRAPH - 0xE7CC: 0x9348, //CJK UNIFIED IDEOGRAPH - 0xE7CD: 0xF9B2, //CJK COMPATIBILITY IDEOGRAPH - 0xE7CE: 0x9719, //CJK UNIFIED IDEOGRAPH - 0xE7CF: 0xF9B3, //CJK COMPATIBILITY IDEOGRAPH - 0xE7D0: 0xF9B4, //CJK COMPATIBILITY IDEOGRAPH - 0xE7D1: 0x4E42, //CJK UNIFIED IDEOGRAPH - 0xE7D2: 0x502A, //CJK UNIFIED IDEOGRAPH - 0xE7D3: 0xF9B5, //CJK COMPATIBILITY IDEOGRAPH - 0xE7D4: 0x5208, //CJK UNIFIED IDEOGRAPH - 0xE7D5: 0x53E1, //CJK UNIFIED IDEOGRAPH - 0xE7D6: 0x66F3, //CJK UNIFIED IDEOGRAPH - 0xE7D7: 0x6C6D, //CJK UNIFIED IDEOGRAPH - 0xE7D8: 0x6FCA, //CJK UNIFIED IDEOGRAPH - 0xE7D9: 0x730A, //CJK UNIFIED IDEOGRAPH - 0xE7DA: 0x777F, //CJK UNIFIED IDEOGRAPH - 0xE7DB: 0x7A62, //CJK UNIFIED IDEOGRAPH - 0xE7DC: 0x82AE, //CJK UNIFIED IDEOGRAPH - 0xE7DD: 0x85DD, //CJK UNIFIED IDEOGRAPH - 0xE7DE: 0x8602, //CJK UNIFIED IDEOGRAPH - 0xE7DF: 0xF9B6, //CJK COMPATIBILITY IDEOGRAPH - 0xE7E0: 0x88D4, //CJK UNIFIED IDEOGRAPH - 0xE7E1: 0x8A63, //CJK UNIFIED IDEOGRAPH - 0xE7E2: 0x8B7D, //CJK UNIFIED IDEOGRAPH - 0xE7E3: 0x8C6B, //CJK UNIFIED IDEOGRAPH - 0xE7E4: 0xF9B7, //CJK COMPATIBILITY IDEOGRAPH - 0xE7E5: 0x92B3, //CJK UNIFIED IDEOGRAPH - 0xE7E6: 0xF9B8, //CJK COMPATIBILITY IDEOGRAPH - 0xE7E7: 0x9713, //CJK UNIFIED IDEOGRAPH - 0xE7E8: 0x9810, //CJK UNIFIED IDEOGRAPH - 0xE7E9: 0x4E94, //CJK UNIFIED IDEOGRAPH - 0xE7EA: 0x4F0D, //CJK UNIFIED IDEOGRAPH - 0xE7EB: 0x4FC9, //CJK UNIFIED IDEOGRAPH - 0xE7EC: 0x50B2, //CJK UNIFIED IDEOGRAPH - 0xE7ED: 0x5348, //CJK UNIFIED IDEOGRAPH - 0xE7EE: 0x543E, //CJK UNIFIED IDEOGRAPH - 0xE7EF: 0x5433, //CJK UNIFIED IDEOGRAPH - 0xE7F0: 0x55DA, //CJK UNIFIED IDEOGRAPH - 0xE7F1: 0x5862, //CJK UNIFIED IDEOGRAPH - 0xE7F2: 0x58BA, //CJK UNIFIED IDEOGRAPH - 0xE7F3: 0x5967, //CJK UNIFIED IDEOGRAPH - 0xE7F4: 0x5A1B, //CJK UNIFIED IDEOGRAPH - 0xE7F5: 0x5BE4, //CJK UNIFIED IDEOGRAPH - 0xE7F6: 0x609F, //CJK UNIFIED IDEOGRAPH - 0xE7F7: 0xF9B9, //CJK COMPATIBILITY IDEOGRAPH - 0xE7F8: 0x61CA, //CJK UNIFIED IDEOGRAPH - 0xE7F9: 0x6556, //CJK UNIFIED IDEOGRAPH - 0xE7FA: 0x65FF, //CJK UNIFIED IDEOGRAPH - 0xE7FB: 0x6664, //CJK UNIFIED IDEOGRAPH - 0xE7FC: 0x68A7, //CJK UNIFIED IDEOGRAPH - 0xE7FD: 0x6C5A, //CJK UNIFIED IDEOGRAPH - 0xE7FE: 0x6FB3, //CJK UNIFIED IDEOGRAPH - 0xE8A1: 0x70CF, //CJK UNIFIED IDEOGRAPH - 0xE8A2: 0x71AC, //CJK UNIFIED IDEOGRAPH - 0xE8A3: 0x7352, //CJK UNIFIED IDEOGRAPH - 0xE8A4: 0x7B7D, //CJK UNIFIED IDEOGRAPH - 0xE8A5: 0x8708, //CJK UNIFIED IDEOGRAPH - 0xE8A6: 0x8AA4, //CJK UNIFIED IDEOGRAPH - 0xE8A7: 0x9C32, //CJK UNIFIED IDEOGRAPH - 0xE8A8: 0x9F07, //CJK UNIFIED IDEOGRAPH - 0xE8A9: 0x5C4B, //CJK UNIFIED IDEOGRAPH - 0xE8AA: 0x6C83, //CJK UNIFIED IDEOGRAPH - 0xE8AB: 0x7344, //CJK UNIFIED IDEOGRAPH - 0xE8AC: 0x7389, //CJK UNIFIED IDEOGRAPH - 0xE8AD: 0x923A, //CJK UNIFIED IDEOGRAPH - 0xE8AE: 0x6EAB, //CJK UNIFIED IDEOGRAPH - 0xE8AF: 0x7465, //CJK UNIFIED IDEOGRAPH - 0xE8B0: 0x761F, //CJK UNIFIED IDEOGRAPH - 0xE8B1: 0x7A69, //CJK UNIFIED IDEOGRAPH - 0xE8B2: 0x7E15, //CJK UNIFIED IDEOGRAPH - 0xE8B3: 0x860A, //CJK UNIFIED IDEOGRAPH - 0xE8B4: 0x5140, //CJK UNIFIED IDEOGRAPH - 0xE8B5: 0x58C5, //CJK UNIFIED IDEOGRAPH - 0xE8B6: 0x64C1, //CJK UNIFIED IDEOGRAPH - 0xE8B7: 0x74EE, //CJK UNIFIED IDEOGRAPH - 0xE8B8: 0x7515, //CJK UNIFIED IDEOGRAPH - 0xE8B9: 0x7670, //CJK UNIFIED IDEOGRAPH - 0xE8BA: 0x7FC1, //CJK UNIFIED IDEOGRAPH - 0xE8BB: 0x9095, //CJK UNIFIED IDEOGRAPH - 0xE8BC: 0x96CD, //CJK UNIFIED IDEOGRAPH - 0xE8BD: 0x9954, //CJK UNIFIED IDEOGRAPH - 0xE8BE: 0x6E26, //CJK UNIFIED IDEOGRAPH - 0xE8BF: 0x74E6, //CJK UNIFIED IDEOGRAPH - 0xE8C0: 0x7AA9, //CJK UNIFIED IDEOGRAPH - 0xE8C1: 0x7AAA, //CJK UNIFIED IDEOGRAPH - 0xE8C2: 0x81E5, //CJK UNIFIED IDEOGRAPH - 0xE8C3: 0x86D9, //CJK UNIFIED IDEOGRAPH - 0xE8C4: 0x8778, //CJK UNIFIED IDEOGRAPH - 0xE8C5: 0x8A1B, //CJK UNIFIED IDEOGRAPH - 0xE8C6: 0x5A49, //CJK UNIFIED IDEOGRAPH - 0xE8C7: 0x5B8C, //CJK UNIFIED IDEOGRAPH - 0xE8C8: 0x5B9B, //CJK UNIFIED IDEOGRAPH - 0xE8C9: 0x68A1, //CJK UNIFIED IDEOGRAPH - 0xE8CA: 0x6900, //CJK UNIFIED IDEOGRAPH - 0xE8CB: 0x6D63, //CJK UNIFIED IDEOGRAPH - 0xE8CC: 0x73A9, //CJK UNIFIED IDEOGRAPH - 0xE8CD: 0x7413, //CJK UNIFIED IDEOGRAPH - 0xE8CE: 0x742C, //CJK UNIFIED IDEOGRAPH - 0xE8CF: 0x7897, //CJK UNIFIED IDEOGRAPH - 0xE8D0: 0x7DE9, //CJK UNIFIED IDEOGRAPH - 0xE8D1: 0x7FEB, //CJK UNIFIED IDEOGRAPH - 0xE8D2: 0x8118, //CJK UNIFIED IDEOGRAPH - 0xE8D3: 0x8155, //CJK UNIFIED IDEOGRAPH - 0xE8D4: 0x839E, //CJK UNIFIED IDEOGRAPH - 0xE8D5: 0x8C4C, //CJK UNIFIED IDEOGRAPH - 0xE8D6: 0x962E, //CJK UNIFIED IDEOGRAPH - 0xE8D7: 0x9811, //CJK UNIFIED IDEOGRAPH - 0xE8D8: 0x66F0, //CJK UNIFIED IDEOGRAPH - 0xE8D9: 0x5F80, //CJK UNIFIED IDEOGRAPH - 0xE8DA: 0x65FA, //CJK UNIFIED IDEOGRAPH - 0xE8DB: 0x6789, //CJK UNIFIED IDEOGRAPH - 0xE8DC: 0x6C6A, //CJK UNIFIED IDEOGRAPH - 0xE8DD: 0x738B, //CJK UNIFIED IDEOGRAPH - 0xE8DE: 0x502D, //CJK UNIFIED IDEOGRAPH - 0xE8DF: 0x5A03, //CJK UNIFIED IDEOGRAPH - 0xE8E0: 0x6B6A, //CJK UNIFIED IDEOGRAPH - 0xE8E1: 0x77EE, //CJK UNIFIED IDEOGRAPH - 0xE8E2: 0x5916, //CJK UNIFIED IDEOGRAPH - 0xE8E3: 0x5D6C, //CJK UNIFIED IDEOGRAPH - 0xE8E4: 0x5DCD, //CJK UNIFIED IDEOGRAPH - 0xE8E5: 0x7325, //CJK UNIFIED IDEOGRAPH - 0xE8E6: 0x754F, //CJK UNIFIED IDEOGRAPH - 0xE8E7: 0xF9BA, //CJK COMPATIBILITY IDEOGRAPH - 0xE8E8: 0xF9BB, //CJK COMPATIBILITY IDEOGRAPH - 0xE8E9: 0x50E5, //CJK UNIFIED IDEOGRAPH - 0xE8EA: 0x51F9, //CJK UNIFIED IDEOGRAPH - 0xE8EB: 0x582F, //CJK UNIFIED IDEOGRAPH - 0xE8EC: 0x592D, //CJK UNIFIED IDEOGRAPH - 0xE8ED: 0x5996, //CJK UNIFIED IDEOGRAPH - 0xE8EE: 0x59DA, //CJK UNIFIED IDEOGRAPH - 0xE8EF: 0x5BE5, //CJK UNIFIED IDEOGRAPH - 0xE8F0: 0xF9BC, //CJK COMPATIBILITY IDEOGRAPH - 0xE8F1: 0xF9BD, //CJK COMPATIBILITY IDEOGRAPH - 0xE8F2: 0x5DA2, //CJK UNIFIED IDEOGRAPH - 0xE8F3: 0x62D7, //CJK UNIFIED IDEOGRAPH - 0xE8F4: 0x6416, //CJK UNIFIED IDEOGRAPH - 0xE8F5: 0x6493, //CJK UNIFIED IDEOGRAPH - 0xE8F6: 0x64FE, //CJK UNIFIED IDEOGRAPH - 0xE8F7: 0xF9BE, //CJK COMPATIBILITY IDEOGRAPH - 0xE8F8: 0x66DC, //CJK UNIFIED IDEOGRAPH - 0xE8F9: 0xF9BF, //CJK COMPATIBILITY IDEOGRAPH - 0xE8FA: 0x6A48, //CJK UNIFIED IDEOGRAPH - 0xE8FB: 0xF9C0, //CJK COMPATIBILITY IDEOGRAPH - 0xE8FC: 0x71FF, //CJK UNIFIED IDEOGRAPH - 0xE8FD: 0x7464, //CJK UNIFIED IDEOGRAPH - 0xE8FE: 0xF9C1, //CJK COMPATIBILITY IDEOGRAPH - 0xE9A1: 0x7A88, //CJK UNIFIED IDEOGRAPH - 0xE9A2: 0x7AAF, //CJK UNIFIED IDEOGRAPH - 0xE9A3: 0x7E47, //CJK UNIFIED IDEOGRAPH - 0xE9A4: 0x7E5E, //CJK UNIFIED IDEOGRAPH - 0xE9A5: 0x8000, //CJK UNIFIED IDEOGRAPH - 0xE9A6: 0x8170, //CJK UNIFIED IDEOGRAPH - 0xE9A7: 0xF9C2, //CJK COMPATIBILITY IDEOGRAPH - 0xE9A8: 0x87EF, //CJK UNIFIED IDEOGRAPH - 0xE9A9: 0x8981, //CJK UNIFIED IDEOGRAPH - 0xE9AA: 0x8B20, //CJK UNIFIED IDEOGRAPH - 0xE9AB: 0x9059, //CJK UNIFIED IDEOGRAPH - 0xE9AC: 0xF9C3, //CJK COMPATIBILITY IDEOGRAPH - 0xE9AD: 0x9080, //CJK UNIFIED IDEOGRAPH - 0xE9AE: 0x9952, //CJK UNIFIED IDEOGRAPH - 0xE9AF: 0x617E, //CJK UNIFIED IDEOGRAPH - 0xE9B0: 0x6B32, //CJK UNIFIED IDEOGRAPH - 0xE9B1: 0x6D74, //CJK UNIFIED IDEOGRAPH - 0xE9B2: 0x7E1F, //CJK UNIFIED IDEOGRAPH - 0xE9B3: 0x8925, //CJK UNIFIED IDEOGRAPH - 0xE9B4: 0x8FB1, //CJK UNIFIED IDEOGRAPH - 0xE9B5: 0x4FD1, //CJK UNIFIED IDEOGRAPH - 0xE9B6: 0x50AD, //CJK UNIFIED IDEOGRAPH - 0xE9B7: 0x5197, //CJK UNIFIED IDEOGRAPH - 0xE9B8: 0x52C7, //CJK UNIFIED IDEOGRAPH - 0xE9B9: 0x57C7, //CJK UNIFIED IDEOGRAPH - 0xE9BA: 0x5889, //CJK UNIFIED IDEOGRAPH - 0xE9BB: 0x5BB9, //CJK UNIFIED IDEOGRAPH - 0xE9BC: 0x5EB8, //CJK UNIFIED IDEOGRAPH - 0xE9BD: 0x6142, //CJK UNIFIED IDEOGRAPH - 0xE9BE: 0x6995, //CJK UNIFIED IDEOGRAPH - 0xE9BF: 0x6D8C, //CJK UNIFIED IDEOGRAPH - 0xE9C0: 0x6E67, //CJK UNIFIED IDEOGRAPH - 0xE9C1: 0x6EB6, //CJK UNIFIED IDEOGRAPH - 0xE9C2: 0x7194, //CJK UNIFIED IDEOGRAPH - 0xE9C3: 0x7462, //CJK UNIFIED IDEOGRAPH - 0xE9C4: 0x7528, //CJK UNIFIED IDEOGRAPH - 0xE9C5: 0x752C, //CJK UNIFIED IDEOGRAPH - 0xE9C6: 0x8073, //CJK UNIFIED IDEOGRAPH - 0xE9C7: 0x8338, //CJK UNIFIED IDEOGRAPH - 0xE9C8: 0x84C9, //CJK UNIFIED IDEOGRAPH - 0xE9C9: 0x8E0A, //CJK UNIFIED IDEOGRAPH - 0xE9CA: 0x9394, //CJK UNIFIED IDEOGRAPH - 0xE9CB: 0x93DE, //CJK UNIFIED IDEOGRAPH - 0xE9CC: 0xF9C4, //CJK COMPATIBILITY IDEOGRAPH - 0xE9CD: 0x4E8E, //CJK UNIFIED IDEOGRAPH - 0xE9CE: 0x4F51, //CJK UNIFIED IDEOGRAPH - 0xE9CF: 0x5076, //CJK UNIFIED IDEOGRAPH - 0xE9D0: 0x512A, //CJK UNIFIED IDEOGRAPH - 0xE9D1: 0x53C8, //CJK UNIFIED IDEOGRAPH - 0xE9D2: 0x53CB, //CJK UNIFIED IDEOGRAPH - 0xE9D3: 0x53F3, //CJK UNIFIED IDEOGRAPH - 0xE9D4: 0x5B87, //CJK UNIFIED IDEOGRAPH - 0xE9D5: 0x5BD3, //CJK UNIFIED IDEOGRAPH - 0xE9D6: 0x5C24, //CJK UNIFIED IDEOGRAPH - 0xE9D7: 0x611A, //CJK UNIFIED IDEOGRAPH - 0xE9D8: 0x6182, //CJK UNIFIED IDEOGRAPH - 0xE9D9: 0x65F4, //CJK UNIFIED IDEOGRAPH - 0xE9DA: 0x725B, //CJK UNIFIED IDEOGRAPH - 0xE9DB: 0x7397, //CJK UNIFIED IDEOGRAPH - 0xE9DC: 0x7440, //CJK UNIFIED IDEOGRAPH - 0xE9DD: 0x76C2, //CJK UNIFIED IDEOGRAPH - 0xE9DE: 0x7950, //CJK UNIFIED IDEOGRAPH - 0xE9DF: 0x7991, //CJK UNIFIED IDEOGRAPH - 0xE9E0: 0x79B9, //CJK UNIFIED IDEOGRAPH - 0xE9E1: 0x7D06, //CJK UNIFIED IDEOGRAPH - 0xE9E2: 0x7FBD, //CJK UNIFIED IDEOGRAPH - 0xE9E3: 0x828B, //CJK UNIFIED IDEOGRAPH - 0xE9E4: 0x85D5, //CJK UNIFIED IDEOGRAPH - 0xE9E5: 0x865E, //CJK UNIFIED IDEOGRAPH - 0xE9E6: 0x8FC2, //CJK UNIFIED IDEOGRAPH - 0xE9E7: 0x9047, //CJK UNIFIED IDEOGRAPH - 0xE9E8: 0x90F5, //CJK UNIFIED IDEOGRAPH - 0xE9E9: 0x91EA, //CJK UNIFIED IDEOGRAPH - 0xE9EA: 0x9685, //CJK UNIFIED IDEOGRAPH - 0xE9EB: 0x96E8, //CJK UNIFIED IDEOGRAPH - 0xE9EC: 0x96E9, //CJK UNIFIED IDEOGRAPH - 0xE9ED: 0x52D6, //CJK UNIFIED IDEOGRAPH - 0xE9EE: 0x5F67, //CJK UNIFIED IDEOGRAPH - 0xE9EF: 0x65ED, //CJK UNIFIED IDEOGRAPH - 0xE9F0: 0x6631, //CJK UNIFIED IDEOGRAPH - 0xE9F1: 0x682F, //CJK UNIFIED IDEOGRAPH - 0xE9F2: 0x715C, //CJK UNIFIED IDEOGRAPH - 0xE9F3: 0x7A36, //CJK UNIFIED IDEOGRAPH - 0xE9F4: 0x90C1, //CJK UNIFIED IDEOGRAPH - 0xE9F5: 0x980A, //CJK UNIFIED IDEOGRAPH - 0xE9F6: 0x4E91, //CJK UNIFIED IDEOGRAPH - 0xE9F7: 0xF9C5, //CJK COMPATIBILITY IDEOGRAPH - 0xE9F8: 0x6A52, //CJK UNIFIED IDEOGRAPH - 0xE9F9: 0x6B9E, //CJK UNIFIED IDEOGRAPH - 0xE9FA: 0x6F90, //CJK UNIFIED IDEOGRAPH - 0xE9FB: 0x7189, //CJK UNIFIED IDEOGRAPH - 0xE9FC: 0x8018, //CJK UNIFIED IDEOGRAPH - 0xE9FD: 0x82B8, //CJK UNIFIED IDEOGRAPH - 0xE9FE: 0x8553, //CJK UNIFIED IDEOGRAPH - 0xEAA1: 0x904B, //CJK UNIFIED IDEOGRAPH - 0xEAA2: 0x9695, //CJK UNIFIED IDEOGRAPH - 0xEAA3: 0x96F2, //CJK UNIFIED IDEOGRAPH - 0xEAA4: 0x97FB, //CJK UNIFIED IDEOGRAPH - 0xEAA5: 0x851A, //CJK UNIFIED IDEOGRAPH - 0xEAA6: 0x9B31, //CJK UNIFIED IDEOGRAPH - 0xEAA7: 0x4E90, //CJK UNIFIED IDEOGRAPH - 0xEAA8: 0x718A, //CJK UNIFIED IDEOGRAPH - 0xEAA9: 0x96C4, //CJK UNIFIED IDEOGRAPH - 0xEAAA: 0x5143, //CJK UNIFIED IDEOGRAPH - 0xEAAB: 0x539F, //CJK UNIFIED IDEOGRAPH - 0xEAAC: 0x54E1, //CJK UNIFIED IDEOGRAPH - 0xEAAD: 0x5713, //CJK UNIFIED IDEOGRAPH - 0xEAAE: 0x5712, //CJK UNIFIED IDEOGRAPH - 0xEAAF: 0x57A3, //CJK UNIFIED IDEOGRAPH - 0xEAB0: 0x5A9B, //CJK UNIFIED IDEOGRAPH - 0xEAB1: 0x5AC4, //CJK UNIFIED IDEOGRAPH - 0xEAB2: 0x5BC3, //CJK UNIFIED IDEOGRAPH - 0xEAB3: 0x6028, //CJK UNIFIED IDEOGRAPH - 0xEAB4: 0x613F, //CJK UNIFIED IDEOGRAPH - 0xEAB5: 0x63F4, //CJK UNIFIED IDEOGRAPH - 0xEAB6: 0x6C85, //CJK UNIFIED IDEOGRAPH - 0xEAB7: 0x6D39, //CJK UNIFIED IDEOGRAPH - 0xEAB8: 0x6E72, //CJK UNIFIED IDEOGRAPH - 0xEAB9: 0x6E90, //CJK UNIFIED IDEOGRAPH - 0xEABA: 0x7230, //CJK UNIFIED IDEOGRAPH - 0xEABB: 0x733F, //CJK UNIFIED IDEOGRAPH - 0xEABC: 0x7457, //CJK UNIFIED IDEOGRAPH - 0xEABD: 0x82D1, //CJK UNIFIED IDEOGRAPH - 0xEABE: 0x8881, //CJK UNIFIED IDEOGRAPH - 0xEABF: 0x8F45, //CJK UNIFIED IDEOGRAPH - 0xEAC0: 0x9060, //CJK UNIFIED IDEOGRAPH - 0xEAC1: 0xF9C6, //CJK COMPATIBILITY IDEOGRAPH - 0xEAC2: 0x9662, //CJK UNIFIED IDEOGRAPH - 0xEAC3: 0x9858, //CJK UNIFIED IDEOGRAPH - 0xEAC4: 0x9D1B, //CJK UNIFIED IDEOGRAPH - 0xEAC5: 0x6708, //CJK UNIFIED IDEOGRAPH - 0xEAC6: 0x8D8A, //CJK UNIFIED IDEOGRAPH - 0xEAC7: 0x925E, //CJK UNIFIED IDEOGRAPH - 0xEAC8: 0x4F4D, //CJK UNIFIED IDEOGRAPH - 0xEAC9: 0x5049, //CJK UNIFIED IDEOGRAPH - 0xEACA: 0x50DE, //CJK UNIFIED IDEOGRAPH - 0xEACB: 0x5371, //CJK UNIFIED IDEOGRAPH - 0xEACC: 0x570D, //CJK UNIFIED IDEOGRAPH - 0xEACD: 0x59D4, //CJK UNIFIED IDEOGRAPH - 0xEACE: 0x5A01, //CJK UNIFIED IDEOGRAPH - 0xEACF: 0x5C09, //CJK UNIFIED IDEOGRAPH - 0xEAD0: 0x6170, //CJK UNIFIED IDEOGRAPH - 0xEAD1: 0x6690, //CJK UNIFIED IDEOGRAPH - 0xEAD2: 0x6E2D, //CJK UNIFIED IDEOGRAPH - 0xEAD3: 0x7232, //CJK UNIFIED IDEOGRAPH - 0xEAD4: 0x744B, //CJK UNIFIED IDEOGRAPH - 0xEAD5: 0x7DEF, //CJK UNIFIED IDEOGRAPH - 0xEAD6: 0x80C3, //CJK UNIFIED IDEOGRAPH - 0xEAD7: 0x840E, //CJK UNIFIED IDEOGRAPH - 0xEAD8: 0x8466, //CJK UNIFIED IDEOGRAPH - 0xEAD9: 0x853F, //CJK UNIFIED IDEOGRAPH - 0xEADA: 0x875F, //CJK UNIFIED IDEOGRAPH - 0xEADB: 0x885B, //CJK UNIFIED IDEOGRAPH - 0xEADC: 0x8918, //CJK UNIFIED IDEOGRAPH - 0xEADD: 0x8B02, //CJK UNIFIED IDEOGRAPH - 0xEADE: 0x9055, //CJK UNIFIED IDEOGRAPH - 0xEADF: 0x97CB, //CJK UNIFIED IDEOGRAPH - 0xEAE0: 0x9B4F, //CJK UNIFIED IDEOGRAPH - 0xEAE1: 0x4E73, //CJK UNIFIED IDEOGRAPH - 0xEAE2: 0x4F91, //CJK UNIFIED IDEOGRAPH - 0xEAE3: 0x5112, //CJK UNIFIED IDEOGRAPH - 0xEAE4: 0x516A, //CJK UNIFIED IDEOGRAPH - 0xEAE5: 0xF9C7, //CJK COMPATIBILITY IDEOGRAPH - 0xEAE6: 0x552F, //CJK UNIFIED IDEOGRAPH - 0xEAE7: 0x55A9, //CJK UNIFIED IDEOGRAPH - 0xEAE8: 0x5B7A, //CJK UNIFIED IDEOGRAPH - 0xEAE9: 0x5BA5, //CJK UNIFIED IDEOGRAPH - 0xEAEA: 0x5E7C, //CJK UNIFIED IDEOGRAPH - 0xEAEB: 0x5E7D, //CJK UNIFIED IDEOGRAPH - 0xEAEC: 0x5EBE, //CJK UNIFIED IDEOGRAPH - 0xEAED: 0x60A0, //CJK UNIFIED IDEOGRAPH - 0xEAEE: 0x60DF, //CJK UNIFIED IDEOGRAPH - 0xEAEF: 0x6108, //CJK UNIFIED IDEOGRAPH - 0xEAF0: 0x6109, //CJK UNIFIED IDEOGRAPH - 0xEAF1: 0x63C4, //CJK UNIFIED IDEOGRAPH - 0xEAF2: 0x6538, //CJK UNIFIED IDEOGRAPH - 0xEAF3: 0x6709, //CJK UNIFIED IDEOGRAPH - 0xEAF4: 0xF9C8, //CJK COMPATIBILITY IDEOGRAPH - 0xEAF5: 0x67D4, //CJK UNIFIED IDEOGRAPH - 0xEAF6: 0x67DA, //CJK UNIFIED IDEOGRAPH - 0xEAF7: 0xF9C9, //CJK COMPATIBILITY IDEOGRAPH - 0xEAF8: 0x6961, //CJK UNIFIED IDEOGRAPH - 0xEAF9: 0x6962, //CJK UNIFIED IDEOGRAPH - 0xEAFA: 0x6CB9, //CJK UNIFIED IDEOGRAPH - 0xEAFB: 0x6D27, //CJK UNIFIED IDEOGRAPH - 0xEAFC: 0xF9CA, //CJK COMPATIBILITY IDEOGRAPH - 0xEAFD: 0x6E38, //CJK UNIFIED IDEOGRAPH - 0xEAFE: 0xF9CB, //CJK COMPATIBILITY IDEOGRAPH - 0xEBA1: 0x6FE1, //CJK UNIFIED IDEOGRAPH - 0xEBA2: 0x7336, //CJK UNIFIED IDEOGRAPH - 0xEBA3: 0x7337, //CJK UNIFIED IDEOGRAPH - 0xEBA4: 0xF9CC, //CJK COMPATIBILITY IDEOGRAPH - 0xEBA5: 0x745C, //CJK UNIFIED IDEOGRAPH - 0xEBA6: 0x7531, //CJK UNIFIED IDEOGRAPH - 0xEBA7: 0xF9CD, //CJK COMPATIBILITY IDEOGRAPH - 0xEBA8: 0x7652, //CJK UNIFIED IDEOGRAPH - 0xEBA9: 0xF9CE, //CJK COMPATIBILITY IDEOGRAPH - 0xEBAA: 0xF9CF, //CJK COMPATIBILITY IDEOGRAPH - 0xEBAB: 0x7DAD, //CJK UNIFIED IDEOGRAPH - 0xEBAC: 0x81FE, //CJK UNIFIED IDEOGRAPH - 0xEBAD: 0x8438, //CJK UNIFIED IDEOGRAPH - 0xEBAE: 0x88D5, //CJK UNIFIED IDEOGRAPH - 0xEBAF: 0x8A98, //CJK UNIFIED IDEOGRAPH - 0xEBB0: 0x8ADB, //CJK UNIFIED IDEOGRAPH - 0xEBB1: 0x8AED, //CJK UNIFIED IDEOGRAPH - 0xEBB2: 0x8E30, //CJK UNIFIED IDEOGRAPH - 0xEBB3: 0x8E42, //CJK UNIFIED IDEOGRAPH - 0xEBB4: 0x904A, //CJK UNIFIED IDEOGRAPH - 0xEBB5: 0x903E, //CJK UNIFIED IDEOGRAPH - 0xEBB6: 0x907A, //CJK UNIFIED IDEOGRAPH - 0xEBB7: 0x9149, //CJK UNIFIED IDEOGRAPH - 0xEBB8: 0x91C9, //CJK UNIFIED IDEOGRAPH - 0xEBB9: 0x936E, //CJK UNIFIED IDEOGRAPH - 0xEBBA: 0xF9D0, //CJK COMPATIBILITY IDEOGRAPH - 0xEBBB: 0xF9D1, //CJK COMPATIBILITY IDEOGRAPH - 0xEBBC: 0x5809, //CJK UNIFIED IDEOGRAPH - 0xEBBD: 0xF9D2, //CJK COMPATIBILITY IDEOGRAPH - 0xEBBE: 0x6BD3, //CJK UNIFIED IDEOGRAPH - 0xEBBF: 0x8089, //CJK UNIFIED IDEOGRAPH - 0xEBC0: 0x80B2, //CJK UNIFIED IDEOGRAPH - 0xEBC1: 0xF9D3, //CJK COMPATIBILITY IDEOGRAPH - 0xEBC2: 0xF9D4, //CJK COMPATIBILITY IDEOGRAPH - 0xEBC3: 0x5141, //CJK UNIFIED IDEOGRAPH - 0xEBC4: 0x596B, //CJK UNIFIED IDEOGRAPH - 0xEBC5: 0x5C39, //CJK UNIFIED IDEOGRAPH - 0xEBC6: 0xF9D5, //CJK COMPATIBILITY IDEOGRAPH - 0xEBC7: 0xF9D6, //CJK COMPATIBILITY IDEOGRAPH - 0xEBC8: 0x6F64, //CJK UNIFIED IDEOGRAPH - 0xEBC9: 0x73A7, //CJK UNIFIED IDEOGRAPH - 0xEBCA: 0x80E4, //CJK UNIFIED IDEOGRAPH - 0xEBCB: 0x8D07, //CJK UNIFIED IDEOGRAPH - 0xEBCC: 0xF9D7, //CJK COMPATIBILITY IDEOGRAPH - 0xEBCD: 0x9217, //CJK UNIFIED IDEOGRAPH - 0xEBCE: 0x958F, //CJK UNIFIED IDEOGRAPH - 0xEBCF: 0xF9D8, //CJK COMPATIBILITY IDEOGRAPH - 0xEBD0: 0xF9D9, //CJK COMPATIBILITY IDEOGRAPH - 0xEBD1: 0xF9DA, //CJK COMPATIBILITY IDEOGRAPH - 0xEBD2: 0xF9DB, //CJK COMPATIBILITY IDEOGRAPH - 0xEBD3: 0x807F, //CJK UNIFIED IDEOGRAPH - 0xEBD4: 0x620E, //CJK UNIFIED IDEOGRAPH - 0xEBD5: 0x701C, //CJK UNIFIED IDEOGRAPH - 0xEBD6: 0x7D68, //CJK UNIFIED IDEOGRAPH - 0xEBD7: 0x878D, //CJK UNIFIED IDEOGRAPH - 0xEBD8: 0xF9DC, //CJK COMPATIBILITY IDEOGRAPH - 0xEBD9: 0x57A0, //CJK UNIFIED IDEOGRAPH - 0xEBDA: 0x6069, //CJK UNIFIED IDEOGRAPH - 0xEBDB: 0x6147, //CJK UNIFIED IDEOGRAPH - 0xEBDC: 0x6BB7, //CJK UNIFIED IDEOGRAPH - 0xEBDD: 0x8ABE, //CJK UNIFIED IDEOGRAPH - 0xEBDE: 0x9280, //CJK UNIFIED IDEOGRAPH - 0xEBDF: 0x96B1, //CJK UNIFIED IDEOGRAPH - 0xEBE0: 0x4E59, //CJK UNIFIED IDEOGRAPH - 0xEBE1: 0x541F, //CJK UNIFIED IDEOGRAPH - 0xEBE2: 0x6DEB, //CJK UNIFIED IDEOGRAPH - 0xEBE3: 0x852D, //CJK UNIFIED IDEOGRAPH - 0xEBE4: 0x9670, //CJK UNIFIED IDEOGRAPH - 0xEBE5: 0x97F3, //CJK UNIFIED IDEOGRAPH - 0xEBE6: 0x98EE, //CJK UNIFIED IDEOGRAPH - 0xEBE7: 0x63D6, //CJK UNIFIED IDEOGRAPH - 0xEBE8: 0x6CE3, //CJK UNIFIED IDEOGRAPH - 0xEBE9: 0x9091, //CJK UNIFIED IDEOGRAPH - 0xEBEA: 0x51DD, //CJK UNIFIED IDEOGRAPH - 0xEBEB: 0x61C9, //CJK UNIFIED IDEOGRAPH - 0xEBEC: 0x81BA, //CJK UNIFIED IDEOGRAPH - 0xEBED: 0x9DF9, //CJK UNIFIED IDEOGRAPH - 0xEBEE: 0x4F9D, //CJK UNIFIED IDEOGRAPH - 0xEBEF: 0x501A, //CJK UNIFIED IDEOGRAPH - 0xEBF0: 0x5100, //CJK UNIFIED IDEOGRAPH - 0xEBF1: 0x5B9C, //CJK UNIFIED IDEOGRAPH - 0xEBF2: 0x610F, //CJK UNIFIED IDEOGRAPH - 0xEBF3: 0x61FF, //CJK UNIFIED IDEOGRAPH - 0xEBF4: 0x64EC, //CJK UNIFIED IDEOGRAPH - 0xEBF5: 0x6905, //CJK UNIFIED IDEOGRAPH - 0xEBF6: 0x6BC5, //CJK UNIFIED IDEOGRAPH - 0xEBF7: 0x7591, //CJK UNIFIED IDEOGRAPH - 0xEBF8: 0x77E3, //CJK UNIFIED IDEOGRAPH - 0xEBF9: 0x7FA9, //CJK UNIFIED IDEOGRAPH - 0xEBFA: 0x8264, //CJK UNIFIED IDEOGRAPH - 0xEBFB: 0x858F, //CJK UNIFIED IDEOGRAPH - 0xEBFC: 0x87FB, //CJK UNIFIED IDEOGRAPH - 0xEBFD: 0x8863, //CJK UNIFIED IDEOGRAPH - 0xEBFE: 0x8ABC, //CJK UNIFIED IDEOGRAPH - 0xECA1: 0x8B70, //CJK UNIFIED IDEOGRAPH - 0xECA2: 0x91AB, //CJK UNIFIED IDEOGRAPH - 0xECA3: 0x4E8C, //CJK UNIFIED IDEOGRAPH - 0xECA4: 0x4EE5, //CJK UNIFIED IDEOGRAPH - 0xECA5: 0x4F0A, //CJK UNIFIED IDEOGRAPH - 0xECA6: 0xF9DD, //CJK COMPATIBILITY IDEOGRAPH - 0xECA7: 0xF9DE, //CJK COMPATIBILITY IDEOGRAPH - 0xECA8: 0x5937, //CJK UNIFIED IDEOGRAPH - 0xECA9: 0x59E8, //CJK UNIFIED IDEOGRAPH - 0xECAA: 0xF9DF, //CJK COMPATIBILITY IDEOGRAPH - 0xECAB: 0x5DF2, //CJK UNIFIED IDEOGRAPH - 0xECAC: 0x5F1B, //CJK UNIFIED IDEOGRAPH - 0xECAD: 0x5F5B, //CJK UNIFIED IDEOGRAPH - 0xECAE: 0x6021, //CJK UNIFIED IDEOGRAPH - 0xECAF: 0xF9E0, //CJK COMPATIBILITY IDEOGRAPH - 0xECB0: 0xF9E1, //CJK COMPATIBILITY IDEOGRAPH - 0xECB1: 0xF9E2, //CJK COMPATIBILITY IDEOGRAPH - 0xECB2: 0xF9E3, //CJK COMPATIBILITY IDEOGRAPH - 0xECB3: 0x723E, //CJK UNIFIED IDEOGRAPH - 0xECB4: 0x73E5, //CJK UNIFIED IDEOGRAPH - 0xECB5: 0xF9E4, //CJK COMPATIBILITY IDEOGRAPH - 0xECB6: 0x7570, //CJK UNIFIED IDEOGRAPH - 0xECB7: 0x75CD, //CJK UNIFIED IDEOGRAPH - 0xECB8: 0xF9E5, //CJK COMPATIBILITY IDEOGRAPH - 0xECB9: 0x79FB, //CJK UNIFIED IDEOGRAPH - 0xECBA: 0xF9E6, //CJK COMPATIBILITY IDEOGRAPH - 0xECBB: 0x800C, //CJK UNIFIED IDEOGRAPH - 0xECBC: 0x8033, //CJK UNIFIED IDEOGRAPH - 0xECBD: 0x8084, //CJK UNIFIED IDEOGRAPH - 0xECBE: 0x82E1, //CJK UNIFIED IDEOGRAPH - 0xECBF: 0x8351, //CJK UNIFIED IDEOGRAPH - 0xECC0: 0xF9E7, //CJK COMPATIBILITY IDEOGRAPH - 0xECC1: 0xF9E8, //CJK COMPATIBILITY IDEOGRAPH - 0xECC2: 0x8CBD, //CJK UNIFIED IDEOGRAPH - 0xECC3: 0x8CB3, //CJK UNIFIED IDEOGRAPH - 0xECC4: 0x9087, //CJK UNIFIED IDEOGRAPH - 0xECC5: 0xF9E9, //CJK COMPATIBILITY IDEOGRAPH - 0xECC6: 0xF9EA, //CJK COMPATIBILITY IDEOGRAPH - 0xECC7: 0x98F4, //CJK UNIFIED IDEOGRAPH - 0xECC8: 0x990C, //CJK UNIFIED IDEOGRAPH - 0xECC9: 0xF9EB, //CJK COMPATIBILITY IDEOGRAPH - 0xECCA: 0xF9EC, //CJK COMPATIBILITY IDEOGRAPH - 0xECCB: 0x7037, //CJK UNIFIED IDEOGRAPH - 0xECCC: 0x76CA, //CJK UNIFIED IDEOGRAPH - 0xECCD: 0x7FCA, //CJK UNIFIED IDEOGRAPH - 0xECCE: 0x7FCC, //CJK UNIFIED IDEOGRAPH - 0xECCF: 0x7FFC, //CJK UNIFIED IDEOGRAPH - 0xECD0: 0x8B1A, //CJK UNIFIED IDEOGRAPH - 0xECD1: 0x4EBA, //CJK UNIFIED IDEOGRAPH - 0xECD2: 0x4EC1, //CJK UNIFIED IDEOGRAPH - 0xECD3: 0x5203, //CJK UNIFIED IDEOGRAPH - 0xECD4: 0x5370, //CJK UNIFIED IDEOGRAPH - 0xECD5: 0xF9ED, //CJK COMPATIBILITY IDEOGRAPH - 0xECD6: 0x54BD, //CJK UNIFIED IDEOGRAPH - 0xECD7: 0x56E0, //CJK UNIFIED IDEOGRAPH - 0xECD8: 0x59FB, //CJK UNIFIED IDEOGRAPH - 0xECD9: 0x5BC5, //CJK UNIFIED IDEOGRAPH - 0xECDA: 0x5F15, //CJK UNIFIED IDEOGRAPH - 0xECDB: 0x5FCD, //CJK UNIFIED IDEOGRAPH - 0xECDC: 0x6E6E, //CJK UNIFIED IDEOGRAPH - 0xECDD: 0xF9EE, //CJK COMPATIBILITY IDEOGRAPH - 0xECDE: 0xF9EF, //CJK COMPATIBILITY IDEOGRAPH - 0xECDF: 0x7D6A, //CJK UNIFIED IDEOGRAPH - 0xECE0: 0x8335, //CJK UNIFIED IDEOGRAPH - 0xECE1: 0xF9F0, //CJK COMPATIBILITY IDEOGRAPH - 0xECE2: 0x8693, //CJK UNIFIED IDEOGRAPH - 0xECE3: 0x8A8D, //CJK UNIFIED IDEOGRAPH - 0xECE4: 0xF9F1, //CJK COMPATIBILITY IDEOGRAPH - 0xECE5: 0x976D, //CJK UNIFIED IDEOGRAPH - 0xECE6: 0x9777, //CJK UNIFIED IDEOGRAPH - 0xECE7: 0xF9F2, //CJK COMPATIBILITY IDEOGRAPH - 0xECE8: 0xF9F3, //CJK COMPATIBILITY IDEOGRAPH - 0xECE9: 0x4E00, //CJK UNIFIED IDEOGRAPH - 0xECEA: 0x4F5A, //CJK UNIFIED IDEOGRAPH - 0xECEB: 0x4F7E, //CJK UNIFIED IDEOGRAPH - 0xECEC: 0x58F9, //CJK UNIFIED IDEOGRAPH - 0xECED: 0x65E5, //CJK UNIFIED IDEOGRAPH - 0xECEE: 0x6EA2, //CJK UNIFIED IDEOGRAPH - 0xECEF: 0x9038, //CJK UNIFIED IDEOGRAPH - 0xECF0: 0x93B0, //CJK UNIFIED IDEOGRAPH - 0xECF1: 0x99B9, //CJK UNIFIED IDEOGRAPH - 0xECF2: 0x4EFB, //CJK UNIFIED IDEOGRAPH - 0xECF3: 0x58EC, //CJK UNIFIED IDEOGRAPH - 0xECF4: 0x598A, //CJK UNIFIED IDEOGRAPH - 0xECF5: 0x59D9, //CJK UNIFIED IDEOGRAPH - 0xECF6: 0x6041, //CJK UNIFIED IDEOGRAPH - 0xECF7: 0xF9F4, //CJK COMPATIBILITY IDEOGRAPH - 0xECF8: 0xF9F5, //CJK COMPATIBILITY IDEOGRAPH - 0xECF9: 0x7A14, //CJK UNIFIED IDEOGRAPH - 0xECFA: 0xF9F6, //CJK COMPATIBILITY IDEOGRAPH - 0xECFB: 0x834F, //CJK UNIFIED IDEOGRAPH - 0xECFC: 0x8CC3, //CJK UNIFIED IDEOGRAPH - 0xECFD: 0x5165, //CJK UNIFIED IDEOGRAPH - 0xECFE: 0x5344, //CJK UNIFIED IDEOGRAPH - 0xEDA1: 0xF9F7, //CJK COMPATIBILITY IDEOGRAPH - 0xEDA2: 0xF9F8, //CJK COMPATIBILITY IDEOGRAPH - 0xEDA3: 0xF9F9, //CJK COMPATIBILITY IDEOGRAPH - 0xEDA4: 0x4ECD, //CJK UNIFIED IDEOGRAPH - 0xEDA5: 0x5269, //CJK UNIFIED IDEOGRAPH - 0xEDA6: 0x5B55, //CJK UNIFIED IDEOGRAPH - 0xEDA7: 0x82BF, //CJK UNIFIED IDEOGRAPH - 0xEDA8: 0x4ED4, //CJK UNIFIED IDEOGRAPH - 0xEDA9: 0x523A, //CJK UNIFIED IDEOGRAPH - 0xEDAA: 0x54A8, //CJK UNIFIED IDEOGRAPH - 0xEDAB: 0x59C9, //CJK UNIFIED IDEOGRAPH - 0xEDAC: 0x59FF, //CJK UNIFIED IDEOGRAPH - 0xEDAD: 0x5B50, //CJK UNIFIED IDEOGRAPH - 0xEDAE: 0x5B57, //CJK UNIFIED IDEOGRAPH - 0xEDAF: 0x5B5C, //CJK UNIFIED IDEOGRAPH - 0xEDB0: 0x6063, //CJK UNIFIED IDEOGRAPH - 0xEDB1: 0x6148, //CJK UNIFIED IDEOGRAPH - 0xEDB2: 0x6ECB, //CJK UNIFIED IDEOGRAPH - 0xEDB3: 0x7099, //CJK UNIFIED IDEOGRAPH - 0xEDB4: 0x716E, //CJK UNIFIED IDEOGRAPH - 0xEDB5: 0x7386, //CJK UNIFIED IDEOGRAPH - 0xEDB6: 0x74F7, //CJK UNIFIED IDEOGRAPH - 0xEDB7: 0x75B5, //CJK UNIFIED IDEOGRAPH - 0xEDB8: 0x78C1, //CJK UNIFIED IDEOGRAPH - 0xEDB9: 0x7D2B, //CJK UNIFIED IDEOGRAPH - 0xEDBA: 0x8005, //CJK UNIFIED IDEOGRAPH - 0xEDBB: 0x81EA, //CJK UNIFIED IDEOGRAPH - 0xEDBC: 0x8328, //CJK UNIFIED IDEOGRAPH - 0xEDBD: 0x8517, //CJK UNIFIED IDEOGRAPH - 0xEDBE: 0x85C9, //CJK UNIFIED IDEOGRAPH - 0xEDBF: 0x8AEE, //CJK UNIFIED IDEOGRAPH - 0xEDC0: 0x8CC7, //CJK UNIFIED IDEOGRAPH - 0xEDC1: 0x96CC, //CJK UNIFIED IDEOGRAPH - 0xEDC2: 0x4F5C, //CJK UNIFIED IDEOGRAPH - 0xEDC3: 0x52FA, //CJK UNIFIED IDEOGRAPH - 0xEDC4: 0x56BC, //CJK UNIFIED IDEOGRAPH - 0xEDC5: 0x65AB, //CJK UNIFIED IDEOGRAPH - 0xEDC6: 0x6628, //CJK UNIFIED IDEOGRAPH - 0xEDC7: 0x707C, //CJK UNIFIED IDEOGRAPH - 0xEDC8: 0x70B8, //CJK UNIFIED IDEOGRAPH - 0xEDC9: 0x7235, //CJK UNIFIED IDEOGRAPH - 0xEDCA: 0x7DBD, //CJK UNIFIED IDEOGRAPH - 0xEDCB: 0x828D, //CJK UNIFIED IDEOGRAPH - 0xEDCC: 0x914C, //CJK UNIFIED IDEOGRAPH - 0xEDCD: 0x96C0, //CJK UNIFIED IDEOGRAPH - 0xEDCE: 0x9D72, //CJK UNIFIED IDEOGRAPH - 0xEDCF: 0x5B71, //CJK UNIFIED IDEOGRAPH - 0xEDD0: 0x68E7, //CJK UNIFIED IDEOGRAPH - 0xEDD1: 0x6B98, //CJK UNIFIED IDEOGRAPH - 0xEDD2: 0x6F7A, //CJK UNIFIED IDEOGRAPH - 0xEDD3: 0x76DE, //CJK UNIFIED IDEOGRAPH - 0xEDD4: 0x5C91, //CJK UNIFIED IDEOGRAPH - 0xEDD5: 0x66AB, //CJK UNIFIED IDEOGRAPH - 0xEDD6: 0x6F5B, //CJK UNIFIED IDEOGRAPH - 0xEDD7: 0x7BB4, //CJK UNIFIED IDEOGRAPH - 0xEDD8: 0x7C2A, //CJK UNIFIED IDEOGRAPH - 0xEDD9: 0x8836, //CJK UNIFIED IDEOGRAPH - 0xEDDA: 0x96DC, //CJK UNIFIED IDEOGRAPH - 0xEDDB: 0x4E08, //CJK UNIFIED IDEOGRAPH - 0xEDDC: 0x4ED7, //CJK UNIFIED IDEOGRAPH - 0xEDDD: 0x5320, //CJK UNIFIED IDEOGRAPH - 0xEDDE: 0x5834, //CJK UNIFIED IDEOGRAPH - 0xEDDF: 0x58BB, //CJK UNIFIED IDEOGRAPH - 0xEDE0: 0x58EF, //CJK UNIFIED IDEOGRAPH - 0xEDE1: 0x596C, //CJK UNIFIED IDEOGRAPH - 0xEDE2: 0x5C07, //CJK UNIFIED IDEOGRAPH - 0xEDE3: 0x5E33, //CJK UNIFIED IDEOGRAPH - 0xEDE4: 0x5E84, //CJK UNIFIED IDEOGRAPH - 0xEDE5: 0x5F35, //CJK UNIFIED IDEOGRAPH - 0xEDE6: 0x638C, //CJK UNIFIED IDEOGRAPH - 0xEDE7: 0x66B2, //CJK UNIFIED IDEOGRAPH - 0xEDE8: 0x6756, //CJK UNIFIED IDEOGRAPH - 0xEDE9: 0x6A1F, //CJK UNIFIED IDEOGRAPH - 0xEDEA: 0x6AA3, //CJK UNIFIED IDEOGRAPH - 0xEDEB: 0x6B0C, //CJK UNIFIED IDEOGRAPH - 0xEDEC: 0x6F3F, //CJK UNIFIED IDEOGRAPH - 0xEDED: 0x7246, //CJK UNIFIED IDEOGRAPH - 0xEDEE: 0xF9FA, //CJK COMPATIBILITY IDEOGRAPH - 0xEDEF: 0x7350, //CJK UNIFIED IDEOGRAPH - 0xEDF0: 0x748B, //CJK UNIFIED IDEOGRAPH - 0xEDF1: 0x7AE0, //CJK UNIFIED IDEOGRAPH - 0xEDF2: 0x7CA7, //CJK UNIFIED IDEOGRAPH - 0xEDF3: 0x8178, //CJK UNIFIED IDEOGRAPH - 0xEDF4: 0x81DF, //CJK UNIFIED IDEOGRAPH - 0xEDF5: 0x81E7, //CJK UNIFIED IDEOGRAPH - 0xEDF6: 0x838A, //CJK UNIFIED IDEOGRAPH - 0xEDF7: 0x846C, //CJK UNIFIED IDEOGRAPH - 0xEDF8: 0x8523, //CJK UNIFIED IDEOGRAPH - 0xEDF9: 0x8594, //CJK UNIFIED IDEOGRAPH - 0xEDFA: 0x85CF, //CJK UNIFIED IDEOGRAPH - 0xEDFB: 0x88DD, //CJK UNIFIED IDEOGRAPH - 0xEDFC: 0x8D13, //CJK UNIFIED IDEOGRAPH - 0xEDFD: 0x91AC, //CJK UNIFIED IDEOGRAPH - 0xEDFE: 0x9577, //CJK UNIFIED IDEOGRAPH - 0xEEA1: 0x969C, //CJK UNIFIED IDEOGRAPH - 0xEEA2: 0x518D, //CJK UNIFIED IDEOGRAPH - 0xEEA3: 0x54C9, //CJK UNIFIED IDEOGRAPH - 0xEEA4: 0x5728, //CJK UNIFIED IDEOGRAPH - 0xEEA5: 0x5BB0, //CJK UNIFIED IDEOGRAPH - 0xEEA6: 0x624D, //CJK UNIFIED IDEOGRAPH - 0xEEA7: 0x6750, //CJK UNIFIED IDEOGRAPH - 0xEEA8: 0x683D, //CJK UNIFIED IDEOGRAPH - 0xEEA9: 0x6893, //CJK UNIFIED IDEOGRAPH - 0xEEAA: 0x6E3D, //CJK UNIFIED IDEOGRAPH - 0xEEAB: 0x6ED3, //CJK UNIFIED IDEOGRAPH - 0xEEAC: 0x707D, //CJK UNIFIED IDEOGRAPH - 0xEEAD: 0x7E21, //CJK UNIFIED IDEOGRAPH - 0xEEAE: 0x88C1, //CJK UNIFIED IDEOGRAPH - 0xEEAF: 0x8CA1, //CJK UNIFIED IDEOGRAPH - 0xEEB0: 0x8F09, //CJK UNIFIED IDEOGRAPH - 0xEEB1: 0x9F4B, //CJK UNIFIED IDEOGRAPH - 0xEEB2: 0x9F4E, //CJK UNIFIED IDEOGRAPH - 0xEEB3: 0x722D, //CJK UNIFIED IDEOGRAPH - 0xEEB4: 0x7B8F, //CJK UNIFIED IDEOGRAPH - 0xEEB5: 0x8ACD, //CJK UNIFIED IDEOGRAPH - 0xEEB6: 0x931A, //CJK UNIFIED IDEOGRAPH - 0xEEB7: 0x4F47, //CJK UNIFIED IDEOGRAPH - 0xEEB8: 0x4F4E, //CJK UNIFIED IDEOGRAPH - 0xEEB9: 0x5132, //CJK UNIFIED IDEOGRAPH - 0xEEBA: 0x5480, //CJK UNIFIED IDEOGRAPH - 0xEEBB: 0x59D0, //CJK UNIFIED IDEOGRAPH - 0xEEBC: 0x5E95, //CJK UNIFIED IDEOGRAPH - 0xEEBD: 0x62B5, //CJK UNIFIED IDEOGRAPH - 0xEEBE: 0x6775, //CJK UNIFIED IDEOGRAPH - 0xEEBF: 0x696E, //CJK UNIFIED IDEOGRAPH - 0xEEC0: 0x6A17, //CJK UNIFIED IDEOGRAPH - 0xEEC1: 0x6CAE, //CJK UNIFIED IDEOGRAPH - 0xEEC2: 0x6E1A, //CJK UNIFIED IDEOGRAPH - 0xEEC3: 0x72D9, //CJK UNIFIED IDEOGRAPH - 0xEEC4: 0x732A, //CJK UNIFIED IDEOGRAPH - 0xEEC5: 0x75BD, //CJK UNIFIED IDEOGRAPH - 0xEEC6: 0x7BB8, //CJK UNIFIED IDEOGRAPH - 0xEEC7: 0x7D35, //CJK UNIFIED IDEOGRAPH - 0xEEC8: 0x82E7, //CJK UNIFIED IDEOGRAPH - 0xEEC9: 0x83F9, //CJK UNIFIED IDEOGRAPH - 0xEECA: 0x8457, //CJK UNIFIED IDEOGRAPH - 0xEECB: 0x85F7, //CJK UNIFIED IDEOGRAPH - 0xEECC: 0x8A5B, //CJK UNIFIED IDEOGRAPH - 0xEECD: 0x8CAF, //CJK UNIFIED IDEOGRAPH - 0xEECE: 0x8E87, //CJK UNIFIED IDEOGRAPH - 0xEECF: 0x9019, //CJK UNIFIED IDEOGRAPH - 0xEED0: 0x90B8, //CJK UNIFIED IDEOGRAPH - 0xEED1: 0x96CE, //CJK UNIFIED IDEOGRAPH - 0xEED2: 0x9F5F, //CJK UNIFIED IDEOGRAPH - 0xEED3: 0x52E3, //CJK UNIFIED IDEOGRAPH - 0xEED4: 0x540A, //CJK UNIFIED IDEOGRAPH - 0xEED5: 0x5AE1, //CJK UNIFIED IDEOGRAPH - 0xEED6: 0x5BC2, //CJK UNIFIED IDEOGRAPH - 0xEED7: 0x6458, //CJK UNIFIED IDEOGRAPH - 0xEED8: 0x6575, //CJK UNIFIED IDEOGRAPH - 0xEED9: 0x6EF4, //CJK UNIFIED IDEOGRAPH - 0xEEDA: 0x72C4, //CJK UNIFIED IDEOGRAPH - 0xEEDB: 0xF9FB, //CJK COMPATIBILITY IDEOGRAPH - 0xEEDC: 0x7684, //CJK UNIFIED IDEOGRAPH - 0xEEDD: 0x7A4D, //CJK UNIFIED IDEOGRAPH - 0xEEDE: 0x7B1B, //CJK UNIFIED IDEOGRAPH - 0xEEDF: 0x7C4D, //CJK UNIFIED IDEOGRAPH - 0xEEE0: 0x7E3E, //CJK UNIFIED IDEOGRAPH - 0xEEE1: 0x7FDF, //CJK UNIFIED IDEOGRAPH - 0xEEE2: 0x837B, //CJK UNIFIED IDEOGRAPH - 0xEEE3: 0x8B2B, //CJK UNIFIED IDEOGRAPH - 0xEEE4: 0x8CCA, //CJK UNIFIED IDEOGRAPH - 0xEEE5: 0x8D64, //CJK UNIFIED IDEOGRAPH - 0xEEE6: 0x8DE1, //CJK UNIFIED IDEOGRAPH - 0xEEE7: 0x8E5F, //CJK UNIFIED IDEOGRAPH - 0xEEE8: 0x8FEA, //CJK UNIFIED IDEOGRAPH - 0xEEE9: 0x8FF9, //CJK UNIFIED IDEOGRAPH - 0xEEEA: 0x9069, //CJK UNIFIED IDEOGRAPH - 0xEEEB: 0x93D1, //CJK UNIFIED IDEOGRAPH - 0xEEEC: 0x4F43, //CJK UNIFIED IDEOGRAPH - 0xEEED: 0x4F7A, //CJK UNIFIED IDEOGRAPH - 0xEEEE: 0x50B3, //CJK UNIFIED IDEOGRAPH - 0xEEEF: 0x5168, //CJK UNIFIED IDEOGRAPH - 0xEEF0: 0x5178, //CJK UNIFIED IDEOGRAPH - 0xEEF1: 0x524D, //CJK UNIFIED IDEOGRAPH - 0xEEF2: 0x526A, //CJK UNIFIED IDEOGRAPH - 0xEEF3: 0x5861, //CJK UNIFIED IDEOGRAPH - 0xEEF4: 0x587C, //CJK UNIFIED IDEOGRAPH - 0xEEF5: 0x5960, //CJK UNIFIED IDEOGRAPH - 0xEEF6: 0x5C08, //CJK UNIFIED IDEOGRAPH - 0xEEF7: 0x5C55, //CJK UNIFIED IDEOGRAPH - 0xEEF8: 0x5EDB, //CJK UNIFIED IDEOGRAPH - 0xEEF9: 0x609B, //CJK UNIFIED IDEOGRAPH - 0xEEFA: 0x6230, //CJK UNIFIED IDEOGRAPH - 0xEEFB: 0x6813, //CJK UNIFIED IDEOGRAPH - 0xEEFC: 0x6BBF, //CJK UNIFIED IDEOGRAPH - 0xEEFD: 0x6C08, //CJK UNIFIED IDEOGRAPH - 0xEEFE: 0x6FB1, //CJK UNIFIED IDEOGRAPH - 0xEFA1: 0x714E, //CJK UNIFIED IDEOGRAPH - 0xEFA2: 0x7420, //CJK UNIFIED IDEOGRAPH - 0xEFA3: 0x7530, //CJK UNIFIED IDEOGRAPH - 0xEFA4: 0x7538, //CJK UNIFIED IDEOGRAPH - 0xEFA5: 0x7551, //CJK UNIFIED IDEOGRAPH - 0xEFA6: 0x7672, //CJK UNIFIED IDEOGRAPH - 0xEFA7: 0x7B4C, //CJK UNIFIED IDEOGRAPH - 0xEFA8: 0x7B8B, //CJK UNIFIED IDEOGRAPH - 0xEFA9: 0x7BAD, //CJK UNIFIED IDEOGRAPH - 0xEFAA: 0x7BC6, //CJK UNIFIED IDEOGRAPH - 0xEFAB: 0x7E8F, //CJK UNIFIED IDEOGRAPH - 0xEFAC: 0x8A6E, //CJK UNIFIED IDEOGRAPH - 0xEFAD: 0x8F3E, //CJK UNIFIED IDEOGRAPH - 0xEFAE: 0x8F49, //CJK UNIFIED IDEOGRAPH - 0xEFAF: 0x923F, //CJK UNIFIED IDEOGRAPH - 0xEFB0: 0x9293, //CJK UNIFIED IDEOGRAPH - 0xEFB1: 0x9322, //CJK UNIFIED IDEOGRAPH - 0xEFB2: 0x942B, //CJK UNIFIED IDEOGRAPH - 0xEFB3: 0x96FB, //CJK UNIFIED IDEOGRAPH - 0xEFB4: 0x985A, //CJK UNIFIED IDEOGRAPH - 0xEFB5: 0x986B, //CJK UNIFIED IDEOGRAPH - 0xEFB6: 0x991E, //CJK UNIFIED IDEOGRAPH - 0xEFB7: 0x5207, //CJK UNIFIED IDEOGRAPH - 0xEFB8: 0x622A, //CJK UNIFIED IDEOGRAPH - 0xEFB9: 0x6298, //CJK UNIFIED IDEOGRAPH - 0xEFBA: 0x6D59, //CJK UNIFIED IDEOGRAPH - 0xEFBB: 0x7664, //CJK UNIFIED IDEOGRAPH - 0xEFBC: 0x7ACA, //CJK UNIFIED IDEOGRAPH - 0xEFBD: 0x7BC0, //CJK UNIFIED IDEOGRAPH - 0xEFBE: 0x7D76, //CJK UNIFIED IDEOGRAPH - 0xEFBF: 0x5360, //CJK UNIFIED IDEOGRAPH - 0xEFC0: 0x5CBE, //CJK UNIFIED IDEOGRAPH - 0xEFC1: 0x5E97, //CJK UNIFIED IDEOGRAPH - 0xEFC2: 0x6F38, //CJK UNIFIED IDEOGRAPH - 0xEFC3: 0x70B9, //CJK UNIFIED IDEOGRAPH - 0xEFC4: 0x7C98, //CJK UNIFIED IDEOGRAPH - 0xEFC5: 0x9711, //CJK UNIFIED IDEOGRAPH - 0xEFC6: 0x9B8E, //CJK UNIFIED IDEOGRAPH - 0xEFC7: 0x9EDE, //CJK UNIFIED IDEOGRAPH - 0xEFC8: 0x63A5, //CJK UNIFIED IDEOGRAPH - 0xEFC9: 0x647A, //CJK UNIFIED IDEOGRAPH - 0xEFCA: 0x8776, //CJK UNIFIED IDEOGRAPH - 0xEFCB: 0x4E01, //CJK UNIFIED IDEOGRAPH - 0xEFCC: 0x4E95, //CJK UNIFIED IDEOGRAPH - 0xEFCD: 0x4EAD, //CJK UNIFIED IDEOGRAPH - 0xEFCE: 0x505C, //CJK UNIFIED IDEOGRAPH - 0xEFCF: 0x5075, //CJK UNIFIED IDEOGRAPH - 0xEFD0: 0x5448, //CJK UNIFIED IDEOGRAPH - 0xEFD1: 0x59C3, //CJK UNIFIED IDEOGRAPH - 0xEFD2: 0x5B9A, //CJK UNIFIED IDEOGRAPH - 0xEFD3: 0x5E40, //CJK UNIFIED IDEOGRAPH - 0xEFD4: 0x5EAD, //CJK UNIFIED IDEOGRAPH - 0xEFD5: 0x5EF7, //CJK UNIFIED IDEOGRAPH - 0xEFD6: 0x5F81, //CJK UNIFIED IDEOGRAPH - 0xEFD7: 0x60C5, //CJK UNIFIED IDEOGRAPH - 0xEFD8: 0x633A, //CJK UNIFIED IDEOGRAPH - 0xEFD9: 0x653F, //CJK UNIFIED IDEOGRAPH - 0xEFDA: 0x6574, //CJK UNIFIED IDEOGRAPH - 0xEFDB: 0x65CC, //CJK UNIFIED IDEOGRAPH - 0xEFDC: 0x6676, //CJK UNIFIED IDEOGRAPH - 0xEFDD: 0x6678, //CJK UNIFIED IDEOGRAPH - 0xEFDE: 0x67FE, //CJK UNIFIED IDEOGRAPH - 0xEFDF: 0x6968, //CJK UNIFIED IDEOGRAPH - 0xEFE0: 0x6A89, //CJK UNIFIED IDEOGRAPH - 0xEFE1: 0x6B63, //CJK UNIFIED IDEOGRAPH - 0xEFE2: 0x6C40, //CJK UNIFIED IDEOGRAPH - 0xEFE3: 0x6DC0, //CJK UNIFIED IDEOGRAPH - 0xEFE4: 0x6DE8, //CJK UNIFIED IDEOGRAPH - 0xEFE5: 0x6E1F, //CJK UNIFIED IDEOGRAPH - 0xEFE6: 0x6E5E, //CJK UNIFIED IDEOGRAPH - 0xEFE7: 0x701E, //CJK UNIFIED IDEOGRAPH - 0xEFE8: 0x70A1, //CJK UNIFIED IDEOGRAPH - 0xEFE9: 0x738E, //CJK UNIFIED IDEOGRAPH - 0xEFEA: 0x73FD, //CJK UNIFIED IDEOGRAPH - 0xEFEB: 0x753A, //CJK UNIFIED IDEOGRAPH - 0xEFEC: 0x775B, //CJK UNIFIED IDEOGRAPH - 0xEFED: 0x7887, //CJK UNIFIED IDEOGRAPH - 0xEFEE: 0x798E, //CJK UNIFIED IDEOGRAPH - 0xEFEF: 0x7A0B, //CJK UNIFIED IDEOGRAPH - 0xEFF0: 0x7A7D, //CJK UNIFIED IDEOGRAPH - 0xEFF1: 0x7CBE, //CJK UNIFIED IDEOGRAPH - 0xEFF2: 0x7D8E, //CJK UNIFIED IDEOGRAPH - 0xEFF3: 0x8247, //CJK UNIFIED IDEOGRAPH - 0xEFF4: 0x8A02, //CJK UNIFIED IDEOGRAPH - 0xEFF5: 0x8AEA, //CJK UNIFIED IDEOGRAPH - 0xEFF6: 0x8C9E, //CJK UNIFIED IDEOGRAPH - 0xEFF7: 0x912D, //CJK UNIFIED IDEOGRAPH - 0xEFF8: 0x914A, //CJK UNIFIED IDEOGRAPH - 0xEFF9: 0x91D8, //CJK UNIFIED IDEOGRAPH - 0xEFFA: 0x9266, //CJK UNIFIED IDEOGRAPH - 0xEFFB: 0x92CC, //CJK UNIFIED IDEOGRAPH - 0xEFFC: 0x9320, //CJK UNIFIED IDEOGRAPH - 0xEFFD: 0x9706, //CJK UNIFIED IDEOGRAPH - 0xEFFE: 0x9756, //CJK UNIFIED IDEOGRAPH - 0xF0A1: 0x975C, //CJK UNIFIED IDEOGRAPH - 0xF0A2: 0x9802, //CJK UNIFIED IDEOGRAPH - 0xF0A3: 0x9F0E, //CJK UNIFIED IDEOGRAPH - 0xF0A4: 0x5236, //CJK UNIFIED IDEOGRAPH - 0xF0A5: 0x5291, //CJK UNIFIED IDEOGRAPH - 0xF0A6: 0x557C, //CJK UNIFIED IDEOGRAPH - 0xF0A7: 0x5824, //CJK UNIFIED IDEOGRAPH - 0xF0A8: 0x5E1D, //CJK UNIFIED IDEOGRAPH - 0xF0A9: 0x5F1F, //CJK UNIFIED IDEOGRAPH - 0xF0AA: 0x608C, //CJK UNIFIED IDEOGRAPH - 0xF0AB: 0x63D0, //CJK UNIFIED IDEOGRAPH - 0xF0AC: 0x68AF, //CJK UNIFIED IDEOGRAPH - 0xF0AD: 0x6FDF, //CJK UNIFIED IDEOGRAPH - 0xF0AE: 0x796D, //CJK UNIFIED IDEOGRAPH - 0xF0AF: 0x7B2C, //CJK UNIFIED IDEOGRAPH - 0xF0B0: 0x81CD, //CJK UNIFIED IDEOGRAPH - 0xF0B1: 0x85BA, //CJK UNIFIED IDEOGRAPH - 0xF0B2: 0x88FD, //CJK UNIFIED IDEOGRAPH - 0xF0B3: 0x8AF8, //CJK UNIFIED IDEOGRAPH - 0xF0B4: 0x8E44, //CJK UNIFIED IDEOGRAPH - 0xF0B5: 0x918D, //CJK UNIFIED IDEOGRAPH - 0xF0B6: 0x9664, //CJK UNIFIED IDEOGRAPH - 0xF0B7: 0x969B, //CJK UNIFIED IDEOGRAPH - 0xF0B8: 0x973D, //CJK UNIFIED IDEOGRAPH - 0xF0B9: 0x984C, //CJK UNIFIED IDEOGRAPH - 0xF0BA: 0x9F4A, //CJK UNIFIED IDEOGRAPH - 0xF0BB: 0x4FCE, //CJK UNIFIED IDEOGRAPH - 0xF0BC: 0x5146, //CJK UNIFIED IDEOGRAPH - 0xF0BD: 0x51CB, //CJK UNIFIED IDEOGRAPH - 0xF0BE: 0x52A9, //CJK UNIFIED IDEOGRAPH - 0xF0BF: 0x5632, //CJK UNIFIED IDEOGRAPH - 0xF0C0: 0x5F14, //CJK UNIFIED IDEOGRAPH - 0xF0C1: 0x5F6B, //CJK UNIFIED IDEOGRAPH - 0xF0C2: 0x63AA, //CJK UNIFIED IDEOGRAPH - 0xF0C3: 0x64CD, //CJK UNIFIED IDEOGRAPH - 0xF0C4: 0x65E9, //CJK UNIFIED IDEOGRAPH - 0xF0C5: 0x6641, //CJK UNIFIED IDEOGRAPH - 0xF0C6: 0x66FA, //CJK UNIFIED IDEOGRAPH - 0xF0C7: 0x66F9, //CJK UNIFIED IDEOGRAPH - 0xF0C8: 0x671D, //CJK UNIFIED IDEOGRAPH - 0xF0C9: 0x689D, //CJK UNIFIED IDEOGRAPH - 0xF0CA: 0x68D7, //CJK UNIFIED IDEOGRAPH - 0xF0CB: 0x69FD, //CJK UNIFIED IDEOGRAPH - 0xF0CC: 0x6F15, //CJK UNIFIED IDEOGRAPH - 0xF0CD: 0x6F6E, //CJK UNIFIED IDEOGRAPH - 0xF0CE: 0x7167, //CJK UNIFIED IDEOGRAPH - 0xF0CF: 0x71E5, //CJK UNIFIED IDEOGRAPH - 0xF0D0: 0x722A, //CJK UNIFIED IDEOGRAPH - 0xF0D1: 0x74AA, //CJK UNIFIED IDEOGRAPH - 0xF0D2: 0x773A, //CJK UNIFIED IDEOGRAPH - 0xF0D3: 0x7956, //CJK UNIFIED IDEOGRAPH - 0xF0D4: 0x795A, //CJK UNIFIED IDEOGRAPH - 0xF0D5: 0x79DF, //CJK UNIFIED IDEOGRAPH - 0xF0D6: 0x7A20, //CJK UNIFIED IDEOGRAPH - 0xF0D7: 0x7A95, //CJK UNIFIED IDEOGRAPH - 0xF0D8: 0x7C97, //CJK UNIFIED IDEOGRAPH - 0xF0D9: 0x7CDF, //CJK UNIFIED IDEOGRAPH - 0xF0DA: 0x7D44, //CJK UNIFIED IDEOGRAPH - 0xF0DB: 0x7E70, //CJK UNIFIED IDEOGRAPH - 0xF0DC: 0x8087, //CJK UNIFIED IDEOGRAPH - 0xF0DD: 0x85FB, //CJK UNIFIED IDEOGRAPH - 0xF0DE: 0x86A4, //CJK UNIFIED IDEOGRAPH - 0xF0DF: 0x8A54, //CJK UNIFIED IDEOGRAPH - 0xF0E0: 0x8ABF, //CJK UNIFIED IDEOGRAPH - 0xF0E1: 0x8D99, //CJK UNIFIED IDEOGRAPH - 0xF0E2: 0x8E81, //CJK UNIFIED IDEOGRAPH - 0xF0E3: 0x9020, //CJK UNIFIED IDEOGRAPH - 0xF0E4: 0x906D, //CJK UNIFIED IDEOGRAPH - 0xF0E5: 0x91E3, //CJK UNIFIED IDEOGRAPH - 0xF0E6: 0x963B, //CJK UNIFIED IDEOGRAPH - 0xF0E7: 0x96D5, //CJK UNIFIED IDEOGRAPH - 0xF0E8: 0x9CE5, //CJK UNIFIED IDEOGRAPH - 0xF0E9: 0x65CF, //CJK UNIFIED IDEOGRAPH - 0xF0EA: 0x7C07, //CJK UNIFIED IDEOGRAPH - 0xF0EB: 0x8DB3, //CJK UNIFIED IDEOGRAPH - 0xF0EC: 0x93C3, //CJK UNIFIED IDEOGRAPH - 0xF0ED: 0x5B58, //CJK UNIFIED IDEOGRAPH - 0xF0EE: 0x5C0A, //CJK UNIFIED IDEOGRAPH - 0xF0EF: 0x5352, //CJK UNIFIED IDEOGRAPH - 0xF0F0: 0x62D9, //CJK UNIFIED IDEOGRAPH - 0xF0F1: 0x731D, //CJK UNIFIED IDEOGRAPH - 0xF0F2: 0x5027, //CJK UNIFIED IDEOGRAPH - 0xF0F3: 0x5B97, //CJK UNIFIED IDEOGRAPH - 0xF0F4: 0x5F9E, //CJK UNIFIED IDEOGRAPH - 0xF0F5: 0x60B0, //CJK UNIFIED IDEOGRAPH - 0xF0F6: 0x616B, //CJK UNIFIED IDEOGRAPH - 0xF0F7: 0x68D5, //CJK UNIFIED IDEOGRAPH - 0xF0F8: 0x6DD9, //CJK UNIFIED IDEOGRAPH - 0xF0F9: 0x742E, //CJK UNIFIED IDEOGRAPH - 0xF0FA: 0x7A2E, //CJK UNIFIED IDEOGRAPH - 0xF0FB: 0x7D42, //CJK UNIFIED IDEOGRAPH - 0xF0FC: 0x7D9C, //CJK UNIFIED IDEOGRAPH - 0xF0FD: 0x7E31, //CJK UNIFIED IDEOGRAPH - 0xF0FE: 0x816B, //CJK UNIFIED IDEOGRAPH - 0xF1A1: 0x8E2A, //CJK UNIFIED IDEOGRAPH - 0xF1A2: 0x8E35, //CJK UNIFIED IDEOGRAPH - 0xF1A3: 0x937E, //CJK UNIFIED IDEOGRAPH - 0xF1A4: 0x9418, //CJK UNIFIED IDEOGRAPH - 0xF1A5: 0x4F50, //CJK UNIFIED IDEOGRAPH - 0xF1A6: 0x5750, //CJK UNIFIED IDEOGRAPH - 0xF1A7: 0x5DE6, //CJK UNIFIED IDEOGRAPH - 0xF1A8: 0x5EA7, //CJK UNIFIED IDEOGRAPH - 0xF1A9: 0x632B, //CJK UNIFIED IDEOGRAPH - 0xF1AA: 0x7F6A, //CJK UNIFIED IDEOGRAPH - 0xF1AB: 0x4E3B, //CJK UNIFIED IDEOGRAPH - 0xF1AC: 0x4F4F, //CJK UNIFIED IDEOGRAPH - 0xF1AD: 0x4F8F, //CJK UNIFIED IDEOGRAPH - 0xF1AE: 0x505A, //CJK UNIFIED IDEOGRAPH - 0xF1AF: 0x59DD, //CJK UNIFIED IDEOGRAPH - 0xF1B0: 0x80C4, //CJK UNIFIED IDEOGRAPH - 0xF1B1: 0x546A, //CJK UNIFIED IDEOGRAPH - 0xF1B2: 0x5468, //CJK UNIFIED IDEOGRAPH - 0xF1B3: 0x55FE, //CJK UNIFIED IDEOGRAPH - 0xF1B4: 0x594F, //CJK UNIFIED IDEOGRAPH - 0xF1B5: 0x5B99, //CJK UNIFIED IDEOGRAPH - 0xF1B6: 0x5DDE, //CJK UNIFIED IDEOGRAPH - 0xF1B7: 0x5EDA, //CJK UNIFIED IDEOGRAPH - 0xF1B8: 0x665D, //CJK UNIFIED IDEOGRAPH - 0xF1B9: 0x6731, //CJK UNIFIED IDEOGRAPH - 0xF1BA: 0x67F1, //CJK UNIFIED IDEOGRAPH - 0xF1BB: 0x682A, //CJK UNIFIED IDEOGRAPH - 0xF1BC: 0x6CE8, //CJK UNIFIED IDEOGRAPH - 0xF1BD: 0x6D32, //CJK UNIFIED IDEOGRAPH - 0xF1BE: 0x6E4A, //CJK UNIFIED IDEOGRAPH - 0xF1BF: 0x6F8D, //CJK UNIFIED IDEOGRAPH - 0xF1C0: 0x70B7, //CJK UNIFIED IDEOGRAPH - 0xF1C1: 0x73E0, //CJK UNIFIED IDEOGRAPH - 0xF1C2: 0x7587, //CJK UNIFIED IDEOGRAPH - 0xF1C3: 0x7C4C, //CJK UNIFIED IDEOGRAPH - 0xF1C4: 0x7D02, //CJK UNIFIED IDEOGRAPH - 0xF1C5: 0x7D2C, //CJK UNIFIED IDEOGRAPH - 0xF1C6: 0x7DA2, //CJK UNIFIED IDEOGRAPH - 0xF1C7: 0x821F, //CJK UNIFIED IDEOGRAPH - 0xF1C8: 0x86DB, //CJK UNIFIED IDEOGRAPH - 0xF1C9: 0x8A3B, //CJK UNIFIED IDEOGRAPH - 0xF1CA: 0x8A85, //CJK UNIFIED IDEOGRAPH - 0xF1CB: 0x8D70, //CJK UNIFIED IDEOGRAPH - 0xF1CC: 0x8E8A, //CJK UNIFIED IDEOGRAPH - 0xF1CD: 0x8F33, //CJK UNIFIED IDEOGRAPH - 0xF1CE: 0x9031, //CJK UNIFIED IDEOGRAPH - 0xF1CF: 0x914E, //CJK UNIFIED IDEOGRAPH - 0xF1D0: 0x9152, //CJK UNIFIED IDEOGRAPH - 0xF1D1: 0x9444, //CJK UNIFIED IDEOGRAPH - 0xF1D2: 0x99D0, //CJK UNIFIED IDEOGRAPH - 0xF1D3: 0x7AF9, //CJK UNIFIED IDEOGRAPH - 0xF1D4: 0x7CA5, //CJK UNIFIED IDEOGRAPH - 0xF1D5: 0x4FCA, //CJK UNIFIED IDEOGRAPH - 0xF1D6: 0x5101, //CJK UNIFIED IDEOGRAPH - 0xF1D7: 0x51C6, //CJK UNIFIED IDEOGRAPH - 0xF1D8: 0x57C8, //CJK UNIFIED IDEOGRAPH - 0xF1D9: 0x5BEF, //CJK UNIFIED IDEOGRAPH - 0xF1DA: 0x5CFB, //CJK UNIFIED IDEOGRAPH - 0xF1DB: 0x6659, //CJK UNIFIED IDEOGRAPH - 0xF1DC: 0x6A3D, //CJK UNIFIED IDEOGRAPH - 0xF1DD: 0x6D5A, //CJK UNIFIED IDEOGRAPH - 0xF1DE: 0x6E96, //CJK UNIFIED IDEOGRAPH - 0xF1DF: 0x6FEC, //CJK UNIFIED IDEOGRAPH - 0xF1E0: 0x710C, //CJK UNIFIED IDEOGRAPH - 0xF1E1: 0x756F, //CJK UNIFIED IDEOGRAPH - 0xF1E2: 0x7AE3, //CJK UNIFIED IDEOGRAPH - 0xF1E3: 0x8822, //CJK UNIFIED IDEOGRAPH - 0xF1E4: 0x9021, //CJK UNIFIED IDEOGRAPH - 0xF1E5: 0x9075, //CJK UNIFIED IDEOGRAPH - 0xF1E6: 0x96CB, //CJK UNIFIED IDEOGRAPH - 0xF1E7: 0x99FF, //CJK UNIFIED IDEOGRAPH - 0xF1E8: 0x8301, //CJK UNIFIED IDEOGRAPH - 0xF1E9: 0x4E2D, //CJK UNIFIED IDEOGRAPH - 0xF1EA: 0x4EF2, //CJK UNIFIED IDEOGRAPH - 0xF1EB: 0x8846, //CJK UNIFIED IDEOGRAPH - 0xF1EC: 0x91CD, //CJK UNIFIED IDEOGRAPH - 0xF1ED: 0x537D, //CJK UNIFIED IDEOGRAPH - 0xF1EE: 0x6ADB, //CJK UNIFIED IDEOGRAPH - 0xF1EF: 0x696B, //CJK UNIFIED IDEOGRAPH - 0xF1F0: 0x6C41, //CJK UNIFIED IDEOGRAPH - 0xF1F1: 0x847A, //CJK UNIFIED IDEOGRAPH - 0xF1F2: 0x589E, //CJK UNIFIED IDEOGRAPH - 0xF1F3: 0x618E, //CJK UNIFIED IDEOGRAPH - 0xF1F4: 0x66FE, //CJK UNIFIED IDEOGRAPH - 0xF1F5: 0x62EF, //CJK UNIFIED IDEOGRAPH - 0xF1F6: 0x70DD, //CJK UNIFIED IDEOGRAPH - 0xF1F7: 0x7511, //CJK UNIFIED IDEOGRAPH - 0xF1F8: 0x75C7, //CJK UNIFIED IDEOGRAPH - 0xF1F9: 0x7E52, //CJK UNIFIED IDEOGRAPH - 0xF1FA: 0x84B8, //CJK UNIFIED IDEOGRAPH - 0xF1FB: 0x8B49, //CJK UNIFIED IDEOGRAPH - 0xF1FC: 0x8D08, //CJK UNIFIED IDEOGRAPH - 0xF1FD: 0x4E4B, //CJK UNIFIED IDEOGRAPH - 0xF1FE: 0x53EA, //CJK UNIFIED IDEOGRAPH - 0xF2A1: 0x54AB, //CJK UNIFIED IDEOGRAPH - 0xF2A2: 0x5730, //CJK UNIFIED IDEOGRAPH - 0xF2A3: 0x5740, //CJK UNIFIED IDEOGRAPH - 0xF2A4: 0x5FD7, //CJK UNIFIED IDEOGRAPH - 0xF2A5: 0x6301, //CJK UNIFIED IDEOGRAPH - 0xF2A6: 0x6307, //CJK UNIFIED IDEOGRAPH - 0xF2A7: 0x646F, //CJK UNIFIED IDEOGRAPH - 0xF2A8: 0x652F, //CJK UNIFIED IDEOGRAPH - 0xF2A9: 0x65E8, //CJK UNIFIED IDEOGRAPH - 0xF2AA: 0x667A, //CJK UNIFIED IDEOGRAPH - 0xF2AB: 0x679D, //CJK UNIFIED IDEOGRAPH - 0xF2AC: 0x67B3, //CJK UNIFIED IDEOGRAPH - 0xF2AD: 0x6B62, //CJK UNIFIED IDEOGRAPH - 0xF2AE: 0x6C60, //CJK UNIFIED IDEOGRAPH - 0xF2AF: 0x6C9A, //CJK UNIFIED IDEOGRAPH - 0xF2B0: 0x6F2C, //CJK UNIFIED IDEOGRAPH - 0xF2B1: 0x77E5, //CJK UNIFIED IDEOGRAPH - 0xF2B2: 0x7825, //CJK UNIFIED IDEOGRAPH - 0xF2B3: 0x7949, //CJK UNIFIED IDEOGRAPH - 0xF2B4: 0x7957, //CJK UNIFIED IDEOGRAPH - 0xF2B5: 0x7D19, //CJK UNIFIED IDEOGRAPH - 0xF2B6: 0x80A2, //CJK UNIFIED IDEOGRAPH - 0xF2B7: 0x8102, //CJK UNIFIED IDEOGRAPH - 0xF2B8: 0x81F3, //CJK UNIFIED IDEOGRAPH - 0xF2B9: 0x829D, //CJK UNIFIED IDEOGRAPH - 0xF2BA: 0x82B7, //CJK UNIFIED IDEOGRAPH - 0xF2BB: 0x8718, //CJK UNIFIED IDEOGRAPH - 0xF2BC: 0x8A8C, //CJK UNIFIED IDEOGRAPH - 0xF2BD: 0xF9FC, //CJK COMPATIBILITY IDEOGRAPH - 0xF2BE: 0x8D04, //CJK UNIFIED IDEOGRAPH - 0xF2BF: 0x8DBE, //CJK UNIFIED IDEOGRAPH - 0xF2C0: 0x9072, //CJK UNIFIED IDEOGRAPH - 0xF2C1: 0x76F4, //CJK UNIFIED IDEOGRAPH - 0xF2C2: 0x7A19, //CJK UNIFIED IDEOGRAPH - 0xF2C3: 0x7A37, //CJK UNIFIED IDEOGRAPH - 0xF2C4: 0x7E54, //CJK UNIFIED IDEOGRAPH - 0xF2C5: 0x8077, //CJK UNIFIED IDEOGRAPH - 0xF2C6: 0x5507, //CJK UNIFIED IDEOGRAPH - 0xF2C7: 0x55D4, //CJK UNIFIED IDEOGRAPH - 0xF2C8: 0x5875, //CJK UNIFIED IDEOGRAPH - 0xF2C9: 0x632F, //CJK UNIFIED IDEOGRAPH - 0xF2CA: 0x6422, //CJK UNIFIED IDEOGRAPH - 0xF2CB: 0x6649, //CJK UNIFIED IDEOGRAPH - 0xF2CC: 0x664B, //CJK UNIFIED IDEOGRAPH - 0xF2CD: 0x686D, //CJK UNIFIED IDEOGRAPH - 0xF2CE: 0x699B, //CJK UNIFIED IDEOGRAPH - 0xF2CF: 0x6B84, //CJK UNIFIED IDEOGRAPH - 0xF2D0: 0x6D25, //CJK UNIFIED IDEOGRAPH - 0xF2D1: 0x6EB1, //CJK UNIFIED IDEOGRAPH - 0xF2D2: 0x73CD, //CJK UNIFIED IDEOGRAPH - 0xF2D3: 0x7468, //CJK UNIFIED IDEOGRAPH - 0xF2D4: 0x74A1, //CJK UNIFIED IDEOGRAPH - 0xF2D5: 0x755B, //CJK UNIFIED IDEOGRAPH - 0xF2D6: 0x75B9, //CJK UNIFIED IDEOGRAPH - 0xF2D7: 0x76E1, //CJK UNIFIED IDEOGRAPH - 0xF2D8: 0x771E, //CJK UNIFIED IDEOGRAPH - 0xF2D9: 0x778B, //CJK UNIFIED IDEOGRAPH - 0xF2DA: 0x79E6, //CJK UNIFIED IDEOGRAPH - 0xF2DB: 0x7E09, //CJK UNIFIED IDEOGRAPH - 0xF2DC: 0x7E1D, //CJK UNIFIED IDEOGRAPH - 0xF2DD: 0x81FB, //CJK UNIFIED IDEOGRAPH - 0xF2DE: 0x852F, //CJK UNIFIED IDEOGRAPH - 0xF2DF: 0x8897, //CJK UNIFIED IDEOGRAPH - 0xF2E0: 0x8A3A, //CJK UNIFIED IDEOGRAPH - 0xF2E1: 0x8CD1, //CJK UNIFIED IDEOGRAPH - 0xF2E2: 0x8EEB, //CJK UNIFIED IDEOGRAPH - 0xF2E3: 0x8FB0, //CJK UNIFIED IDEOGRAPH - 0xF2E4: 0x9032, //CJK UNIFIED IDEOGRAPH - 0xF2E5: 0x93AD, //CJK UNIFIED IDEOGRAPH - 0xF2E6: 0x9663, //CJK UNIFIED IDEOGRAPH - 0xF2E7: 0x9673, //CJK UNIFIED IDEOGRAPH - 0xF2E8: 0x9707, //CJK UNIFIED IDEOGRAPH - 0xF2E9: 0x4F84, //CJK UNIFIED IDEOGRAPH - 0xF2EA: 0x53F1, //CJK UNIFIED IDEOGRAPH - 0xF2EB: 0x59EA, //CJK UNIFIED IDEOGRAPH - 0xF2EC: 0x5AC9, //CJK UNIFIED IDEOGRAPH - 0xF2ED: 0x5E19, //CJK UNIFIED IDEOGRAPH - 0xF2EE: 0x684E, //CJK UNIFIED IDEOGRAPH - 0xF2EF: 0x74C6, //CJK UNIFIED IDEOGRAPH - 0xF2F0: 0x75BE, //CJK UNIFIED IDEOGRAPH - 0xF2F1: 0x79E9, //CJK UNIFIED IDEOGRAPH - 0xF2F2: 0x7A92, //CJK UNIFIED IDEOGRAPH - 0xF2F3: 0x81A3, //CJK UNIFIED IDEOGRAPH - 0xF2F4: 0x86ED, //CJK UNIFIED IDEOGRAPH - 0xF2F5: 0x8CEA, //CJK UNIFIED IDEOGRAPH - 0xF2F6: 0x8DCC, //CJK UNIFIED IDEOGRAPH - 0xF2F7: 0x8FED, //CJK UNIFIED IDEOGRAPH - 0xF2F8: 0x659F, //CJK UNIFIED IDEOGRAPH - 0xF2F9: 0x6715, //CJK UNIFIED IDEOGRAPH - 0xF2FA: 0xF9FD, //CJK COMPATIBILITY IDEOGRAPH - 0xF2FB: 0x57F7, //CJK UNIFIED IDEOGRAPH - 0xF2FC: 0x6F57, //CJK UNIFIED IDEOGRAPH - 0xF2FD: 0x7DDD, //CJK UNIFIED IDEOGRAPH - 0xF2FE: 0x8F2F, //CJK UNIFIED IDEOGRAPH - 0xF3A1: 0x93F6, //CJK UNIFIED IDEOGRAPH - 0xF3A2: 0x96C6, //CJK UNIFIED IDEOGRAPH - 0xF3A3: 0x5FB5, //CJK UNIFIED IDEOGRAPH - 0xF3A4: 0x61F2, //CJK UNIFIED IDEOGRAPH - 0xF3A5: 0x6F84, //CJK UNIFIED IDEOGRAPH - 0xF3A6: 0x4E14, //CJK UNIFIED IDEOGRAPH - 0xF3A7: 0x4F98, //CJK UNIFIED IDEOGRAPH - 0xF3A8: 0x501F, //CJK UNIFIED IDEOGRAPH - 0xF3A9: 0x53C9, //CJK UNIFIED IDEOGRAPH - 0xF3AA: 0x55DF, //CJK UNIFIED IDEOGRAPH - 0xF3AB: 0x5D6F, //CJK UNIFIED IDEOGRAPH - 0xF3AC: 0x5DEE, //CJK UNIFIED IDEOGRAPH - 0xF3AD: 0x6B21, //CJK UNIFIED IDEOGRAPH - 0xF3AE: 0x6B64, //CJK UNIFIED IDEOGRAPH - 0xF3AF: 0x78CB, //CJK UNIFIED IDEOGRAPH - 0xF3B0: 0x7B9A, //CJK UNIFIED IDEOGRAPH - 0xF3B1: 0xF9FE, //CJK COMPATIBILITY IDEOGRAPH - 0xF3B2: 0x8E49, //CJK UNIFIED IDEOGRAPH - 0xF3B3: 0x8ECA, //CJK UNIFIED IDEOGRAPH - 0xF3B4: 0x906E, //CJK UNIFIED IDEOGRAPH - 0xF3B5: 0x6349, //CJK UNIFIED IDEOGRAPH - 0xF3B6: 0x643E, //CJK UNIFIED IDEOGRAPH - 0xF3B7: 0x7740, //CJK UNIFIED IDEOGRAPH - 0xF3B8: 0x7A84, //CJK UNIFIED IDEOGRAPH - 0xF3B9: 0x932F, //CJK UNIFIED IDEOGRAPH - 0xF3BA: 0x947F, //CJK UNIFIED IDEOGRAPH - 0xF3BB: 0x9F6A, //CJK UNIFIED IDEOGRAPH - 0xF3BC: 0x64B0, //CJK UNIFIED IDEOGRAPH - 0xF3BD: 0x6FAF, //CJK UNIFIED IDEOGRAPH - 0xF3BE: 0x71E6, //CJK UNIFIED IDEOGRAPH - 0xF3BF: 0x74A8, //CJK UNIFIED IDEOGRAPH - 0xF3C0: 0x74DA, //CJK UNIFIED IDEOGRAPH - 0xF3C1: 0x7AC4, //CJK UNIFIED IDEOGRAPH - 0xF3C2: 0x7C12, //CJK UNIFIED IDEOGRAPH - 0xF3C3: 0x7E82, //CJK UNIFIED IDEOGRAPH - 0xF3C4: 0x7CB2, //CJK UNIFIED IDEOGRAPH - 0xF3C5: 0x7E98, //CJK UNIFIED IDEOGRAPH - 0xF3C6: 0x8B9A, //CJK UNIFIED IDEOGRAPH - 0xF3C7: 0x8D0A, //CJK UNIFIED IDEOGRAPH - 0xF3C8: 0x947D, //CJK UNIFIED IDEOGRAPH - 0xF3C9: 0x9910, //CJK UNIFIED IDEOGRAPH - 0xF3CA: 0x994C, //CJK UNIFIED IDEOGRAPH - 0xF3CB: 0x5239, //CJK UNIFIED IDEOGRAPH - 0xF3CC: 0x5BDF, //CJK UNIFIED IDEOGRAPH - 0xF3CD: 0x64E6, //CJK UNIFIED IDEOGRAPH - 0xF3CE: 0x672D, //CJK UNIFIED IDEOGRAPH - 0xF3CF: 0x7D2E, //CJK UNIFIED IDEOGRAPH - 0xF3D0: 0x50ED, //CJK UNIFIED IDEOGRAPH - 0xF3D1: 0x53C3, //CJK UNIFIED IDEOGRAPH - 0xF3D2: 0x5879, //CJK UNIFIED IDEOGRAPH - 0xF3D3: 0x6158, //CJK UNIFIED IDEOGRAPH - 0xF3D4: 0x6159, //CJK UNIFIED IDEOGRAPH - 0xF3D5: 0x61FA, //CJK UNIFIED IDEOGRAPH - 0xF3D6: 0x65AC, //CJK UNIFIED IDEOGRAPH - 0xF3D7: 0x7AD9, //CJK UNIFIED IDEOGRAPH - 0xF3D8: 0x8B92, //CJK UNIFIED IDEOGRAPH - 0xF3D9: 0x8B96, //CJK UNIFIED IDEOGRAPH - 0xF3DA: 0x5009, //CJK UNIFIED IDEOGRAPH - 0xF3DB: 0x5021, //CJK UNIFIED IDEOGRAPH - 0xF3DC: 0x5275, //CJK UNIFIED IDEOGRAPH - 0xF3DD: 0x5531, //CJK UNIFIED IDEOGRAPH - 0xF3DE: 0x5A3C, //CJK UNIFIED IDEOGRAPH - 0xF3DF: 0x5EE0, //CJK UNIFIED IDEOGRAPH - 0xF3E0: 0x5F70, //CJK UNIFIED IDEOGRAPH - 0xF3E1: 0x6134, //CJK UNIFIED IDEOGRAPH - 0xF3E2: 0x655E, //CJK UNIFIED IDEOGRAPH - 0xF3E3: 0x660C, //CJK UNIFIED IDEOGRAPH - 0xF3E4: 0x6636, //CJK UNIFIED IDEOGRAPH - 0xF3E5: 0x66A2, //CJK UNIFIED IDEOGRAPH - 0xF3E6: 0x69CD, //CJK UNIFIED IDEOGRAPH - 0xF3E7: 0x6EC4, //CJK UNIFIED IDEOGRAPH - 0xF3E8: 0x6F32, //CJK UNIFIED IDEOGRAPH - 0xF3E9: 0x7316, //CJK UNIFIED IDEOGRAPH - 0xF3EA: 0x7621, //CJK UNIFIED IDEOGRAPH - 0xF3EB: 0x7A93, //CJK UNIFIED IDEOGRAPH - 0xF3EC: 0x8139, //CJK UNIFIED IDEOGRAPH - 0xF3ED: 0x8259, //CJK UNIFIED IDEOGRAPH - 0xF3EE: 0x83D6, //CJK UNIFIED IDEOGRAPH - 0xF3EF: 0x84BC, //CJK UNIFIED IDEOGRAPH - 0xF3F0: 0x50B5, //CJK UNIFIED IDEOGRAPH - 0xF3F1: 0x57F0, //CJK UNIFIED IDEOGRAPH - 0xF3F2: 0x5BC0, //CJK UNIFIED IDEOGRAPH - 0xF3F3: 0x5BE8, //CJK UNIFIED IDEOGRAPH - 0xF3F4: 0x5F69, //CJK UNIFIED IDEOGRAPH - 0xF3F5: 0x63A1, //CJK UNIFIED IDEOGRAPH - 0xF3F6: 0x7826, //CJK UNIFIED IDEOGRAPH - 0xF3F7: 0x7DB5, //CJK UNIFIED IDEOGRAPH - 0xF3F8: 0x83DC, //CJK UNIFIED IDEOGRAPH - 0xF3F9: 0x8521, //CJK UNIFIED IDEOGRAPH - 0xF3FA: 0x91C7, //CJK UNIFIED IDEOGRAPH - 0xF3FB: 0x91F5, //CJK UNIFIED IDEOGRAPH - 0xF3FC: 0x518A, //CJK UNIFIED IDEOGRAPH - 0xF3FD: 0x67F5, //CJK UNIFIED IDEOGRAPH - 0xF3FE: 0x7B56, //CJK UNIFIED IDEOGRAPH - 0xF4A1: 0x8CAC, //CJK UNIFIED IDEOGRAPH - 0xF4A2: 0x51C4, //CJK UNIFIED IDEOGRAPH - 0xF4A3: 0x59BB, //CJK UNIFIED IDEOGRAPH - 0xF4A4: 0x60BD, //CJK UNIFIED IDEOGRAPH - 0xF4A5: 0x8655, //CJK UNIFIED IDEOGRAPH - 0xF4A6: 0x501C, //CJK UNIFIED IDEOGRAPH - 0xF4A7: 0xF9FF, //CJK COMPATIBILITY IDEOGRAPH - 0xF4A8: 0x5254, //CJK UNIFIED IDEOGRAPH - 0xF4A9: 0x5C3A, //CJK UNIFIED IDEOGRAPH - 0xF4AA: 0x617D, //CJK UNIFIED IDEOGRAPH - 0xF4AB: 0x621A, //CJK UNIFIED IDEOGRAPH - 0xF4AC: 0x62D3, //CJK UNIFIED IDEOGRAPH - 0xF4AD: 0x64F2, //CJK UNIFIED IDEOGRAPH - 0xF4AE: 0x65A5, //CJK UNIFIED IDEOGRAPH - 0xF4AF: 0x6ECC, //CJK UNIFIED IDEOGRAPH - 0xF4B0: 0x7620, //CJK UNIFIED IDEOGRAPH - 0xF4B1: 0x810A, //CJK UNIFIED IDEOGRAPH - 0xF4B2: 0x8E60, //CJK UNIFIED IDEOGRAPH - 0xF4B3: 0x965F, //CJK UNIFIED IDEOGRAPH - 0xF4B4: 0x96BB, //CJK UNIFIED IDEOGRAPH - 0xF4B5: 0x4EDF, //CJK UNIFIED IDEOGRAPH - 0xF4B6: 0x5343, //CJK UNIFIED IDEOGRAPH - 0xF4B7: 0x5598, //CJK UNIFIED IDEOGRAPH - 0xF4B8: 0x5929, //CJK UNIFIED IDEOGRAPH - 0xF4B9: 0x5DDD, //CJK UNIFIED IDEOGRAPH - 0xF4BA: 0x64C5, //CJK UNIFIED IDEOGRAPH - 0xF4BB: 0x6CC9, //CJK UNIFIED IDEOGRAPH - 0xF4BC: 0x6DFA, //CJK UNIFIED IDEOGRAPH - 0xF4BD: 0x7394, //CJK UNIFIED IDEOGRAPH - 0xF4BE: 0x7A7F, //CJK UNIFIED IDEOGRAPH - 0xF4BF: 0x821B, //CJK UNIFIED IDEOGRAPH - 0xF4C0: 0x85A6, //CJK UNIFIED IDEOGRAPH - 0xF4C1: 0x8CE4, //CJK UNIFIED IDEOGRAPH - 0xF4C2: 0x8E10, //CJK UNIFIED IDEOGRAPH - 0xF4C3: 0x9077, //CJK UNIFIED IDEOGRAPH - 0xF4C4: 0x91E7, //CJK UNIFIED IDEOGRAPH - 0xF4C5: 0x95E1, //CJK UNIFIED IDEOGRAPH - 0xF4C6: 0x9621, //CJK UNIFIED IDEOGRAPH - 0xF4C7: 0x97C6, //CJK UNIFIED IDEOGRAPH - 0xF4C8: 0x51F8, //CJK UNIFIED IDEOGRAPH - 0xF4C9: 0x54F2, //CJK UNIFIED IDEOGRAPH - 0xF4CA: 0x5586, //CJK UNIFIED IDEOGRAPH - 0xF4CB: 0x5FB9, //CJK UNIFIED IDEOGRAPH - 0xF4CC: 0x64A4, //CJK UNIFIED IDEOGRAPH - 0xF4CD: 0x6F88, //CJK UNIFIED IDEOGRAPH - 0xF4CE: 0x7DB4, //CJK UNIFIED IDEOGRAPH - 0xF4CF: 0x8F1F, //CJK UNIFIED IDEOGRAPH - 0xF4D0: 0x8F4D, //CJK UNIFIED IDEOGRAPH - 0xF4D1: 0x9435, //CJK UNIFIED IDEOGRAPH - 0xF4D2: 0x50C9, //CJK UNIFIED IDEOGRAPH - 0xF4D3: 0x5C16, //CJK UNIFIED IDEOGRAPH - 0xF4D4: 0x6CBE, //CJK UNIFIED IDEOGRAPH - 0xF4D5: 0x6DFB, //CJK UNIFIED IDEOGRAPH - 0xF4D6: 0x751B, //CJK UNIFIED IDEOGRAPH - 0xF4D7: 0x77BB, //CJK UNIFIED IDEOGRAPH - 0xF4D8: 0x7C3D, //CJK UNIFIED IDEOGRAPH - 0xF4D9: 0x7C64, //CJK UNIFIED IDEOGRAPH - 0xF4DA: 0x8A79, //CJK UNIFIED IDEOGRAPH - 0xF4DB: 0x8AC2, //CJK UNIFIED IDEOGRAPH - 0xF4DC: 0x581E, //CJK UNIFIED IDEOGRAPH - 0xF4DD: 0x59BE, //CJK UNIFIED IDEOGRAPH - 0xF4DE: 0x5E16, //CJK UNIFIED IDEOGRAPH - 0xF4DF: 0x6377, //CJK UNIFIED IDEOGRAPH - 0xF4E0: 0x7252, //CJK UNIFIED IDEOGRAPH - 0xF4E1: 0x758A, //CJK UNIFIED IDEOGRAPH - 0xF4E2: 0x776B, //CJK UNIFIED IDEOGRAPH - 0xF4E3: 0x8ADC, //CJK UNIFIED IDEOGRAPH - 0xF4E4: 0x8CBC, //CJK UNIFIED IDEOGRAPH - 0xF4E5: 0x8F12, //CJK UNIFIED IDEOGRAPH - 0xF4E6: 0x5EF3, //CJK UNIFIED IDEOGRAPH - 0xF4E7: 0x6674, //CJK UNIFIED IDEOGRAPH - 0xF4E8: 0x6DF8, //CJK UNIFIED IDEOGRAPH - 0xF4E9: 0x807D, //CJK UNIFIED IDEOGRAPH - 0xF4EA: 0x83C1, //CJK UNIFIED IDEOGRAPH - 0xF4EB: 0x8ACB, //CJK UNIFIED IDEOGRAPH - 0xF4EC: 0x9751, //CJK UNIFIED IDEOGRAPH - 0xF4ED: 0x9BD6, //CJK UNIFIED IDEOGRAPH - 0xF4EE: 0xFA00, //CJK COMPATIBILITY IDEOGRAPH - 0xF4EF: 0x5243, //CJK UNIFIED IDEOGRAPH - 0xF4F0: 0x66FF, //CJK UNIFIED IDEOGRAPH - 0xF4F1: 0x6D95, //CJK UNIFIED IDEOGRAPH - 0xF4F2: 0x6EEF, //CJK UNIFIED IDEOGRAPH - 0xF4F3: 0x7DE0, //CJK UNIFIED IDEOGRAPH - 0xF4F4: 0x8AE6, //CJK UNIFIED IDEOGRAPH - 0xF4F5: 0x902E, //CJK UNIFIED IDEOGRAPH - 0xF4F6: 0x905E, //CJK UNIFIED IDEOGRAPH - 0xF4F7: 0x9AD4, //CJK UNIFIED IDEOGRAPH - 0xF4F8: 0x521D, //CJK UNIFIED IDEOGRAPH - 0xF4F9: 0x527F, //CJK UNIFIED IDEOGRAPH - 0xF4FA: 0x54E8, //CJK UNIFIED IDEOGRAPH - 0xF4FB: 0x6194, //CJK UNIFIED IDEOGRAPH - 0xF4FC: 0x6284, //CJK UNIFIED IDEOGRAPH - 0xF4FD: 0x62DB, //CJK UNIFIED IDEOGRAPH - 0xF4FE: 0x68A2, //CJK UNIFIED IDEOGRAPH - 0xF5A1: 0x6912, //CJK UNIFIED IDEOGRAPH - 0xF5A2: 0x695A, //CJK UNIFIED IDEOGRAPH - 0xF5A3: 0x6A35, //CJK UNIFIED IDEOGRAPH - 0xF5A4: 0x7092, //CJK UNIFIED IDEOGRAPH - 0xF5A5: 0x7126, //CJK UNIFIED IDEOGRAPH - 0xF5A6: 0x785D, //CJK UNIFIED IDEOGRAPH - 0xF5A7: 0x7901, //CJK UNIFIED IDEOGRAPH - 0xF5A8: 0x790E, //CJK UNIFIED IDEOGRAPH - 0xF5A9: 0x79D2, //CJK UNIFIED IDEOGRAPH - 0xF5AA: 0x7A0D, //CJK UNIFIED IDEOGRAPH - 0xF5AB: 0x8096, //CJK UNIFIED IDEOGRAPH - 0xF5AC: 0x8278, //CJK UNIFIED IDEOGRAPH - 0xF5AD: 0x82D5, //CJK UNIFIED IDEOGRAPH - 0xF5AE: 0x8349, //CJK UNIFIED IDEOGRAPH - 0xF5AF: 0x8549, //CJK UNIFIED IDEOGRAPH - 0xF5B0: 0x8C82, //CJK UNIFIED IDEOGRAPH - 0xF5B1: 0x8D85, //CJK UNIFIED IDEOGRAPH - 0xF5B2: 0x9162, //CJK UNIFIED IDEOGRAPH - 0xF5B3: 0x918B, //CJK UNIFIED IDEOGRAPH - 0xF5B4: 0x91AE, //CJK UNIFIED IDEOGRAPH - 0xF5B5: 0x4FC3, //CJK UNIFIED IDEOGRAPH - 0xF5B6: 0x56D1, //CJK UNIFIED IDEOGRAPH - 0xF5B7: 0x71ED, //CJK UNIFIED IDEOGRAPH - 0xF5B8: 0x77D7, //CJK UNIFIED IDEOGRAPH - 0xF5B9: 0x8700, //CJK UNIFIED IDEOGRAPH - 0xF5BA: 0x89F8, //CJK UNIFIED IDEOGRAPH - 0xF5BB: 0x5BF8, //CJK UNIFIED IDEOGRAPH - 0xF5BC: 0x5FD6, //CJK UNIFIED IDEOGRAPH - 0xF5BD: 0x6751, //CJK UNIFIED IDEOGRAPH - 0xF5BE: 0x90A8, //CJK UNIFIED IDEOGRAPH - 0xF5BF: 0x53E2, //CJK UNIFIED IDEOGRAPH - 0xF5C0: 0x585A, //CJK UNIFIED IDEOGRAPH - 0xF5C1: 0x5BF5, //CJK UNIFIED IDEOGRAPH - 0xF5C2: 0x60A4, //CJK UNIFIED IDEOGRAPH - 0xF5C3: 0x6181, //CJK UNIFIED IDEOGRAPH - 0xF5C4: 0x6460, //CJK UNIFIED IDEOGRAPH - 0xF5C5: 0x7E3D, //CJK UNIFIED IDEOGRAPH - 0xF5C6: 0x8070, //CJK UNIFIED IDEOGRAPH - 0xF5C7: 0x8525, //CJK UNIFIED IDEOGRAPH - 0xF5C8: 0x9283, //CJK UNIFIED IDEOGRAPH - 0xF5C9: 0x64AE, //CJK UNIFIED IDEOGRAPH - 0xF5CA: 0x50AC, //CJK UNIFIED IDEOGRAPH - 0xF5CB: 0x5D14, //CJK UNIFIED IDEOGRAPH - 0xF5CC: 0x6700, //CJK UNIFIED IDEOGRAPH - 0xF5CD: 0x589C, //CJK UNIFIED IDEOGRAPH - 0xF5CE: 0x62BD, //CJK UNIFIED IDEOGRAPH - 0xF5CF: 0x63A8, //CJK UNIFIED IDEOGRAPH - 0xF5D0: 0x690E, //CJK UNIFIED IDEOGRAPH - 0xF5D1: 0x6978, //CJK UNIFIED IDEOGRAPH - 0xF5D2: 0x6A1E, //CJK UNIFIED IDEOGRAPH - 0xF5D3: 0x6E6B, //CJK UNIFIED IDEOGRAPH - 0xF5D4: 0x76BA, //CJK UNIFIED IDEOGRAPH - 0xF5D5: 0x79CB, //CJK UNIFIED IDEOGRAPH - 0xF5D6: 0x82BB, //CJK UNIFIED IDEOGRAPH - 0xF5D7: 0x8429, //CJK UNIFIED IDEOGRAPH - 0xF5D8: 0x8ACF, //CJK UNIFIED IDEOGRAPH - 0xF5D9: 0x8DA8, //CJK UNIFIED IDEOGRAPH - 0xF5DA: 0x8FFD, //CJK UNIFIED IDEOGRAPH - 0xF5DB: 0x9112, //CJK UNIFIED IDEOGRAPH - 0xF5DC: 0x914B, //CJK UNIFIED IDEOGRAPH - 0xF5DD: 0x919C, //CJK UNIFIED IDEOGRAPH - 0xF5DE: 0x9310, //CJK UNIFIED IDEOGRAPH - 0xF5DF: 0x9318, //CJK UNIFIED IDEOGRAPH - 0xF5E0: 0x939A, //CJK UNIFIED IDEOGRAPH - 0xF5E1: 0x96DB, //CJK UNIFIED IDEOGRAPH - 0xF5E2: 0x9A36, //CJK UNIFIED IDEOGRAPH - 0xF5E3: 0x9C0D, //CJK UNIFIED IDEOGRAPH - 0xF5E4: 0x4E11, //CJK UNIFIED IDEOGRAPH - 0xF5E5: 0x755C, //CJK UNIFIED IDEOGRAPH - 0xF5E6: 0x795D, //CJK UNIFIED IDEOGRAPH - 0xF5E7: 0x7AFA, //CJK UNIFIED IDEOGRAPH - 0xF5E8: 0x7B51, //CJK UNIFIED IDEOGRAPH - 0xF5E9: 0x7BC9, //CJK UNIFIED IDEOGRAPH - 0xF5EA: 0x7E2E, //CJK UNIFIED IDEOGRAPH - 0xF5EB: 0x84C4, //CJK UNIFIED IDEOGRAPH - 0xF5EC: 0x8E59, //CJK UNIFIED IDEOGRAPH - 0xF5ED: 0x8E74, //CJK UNIFIED IDEOGRAPH - 0xF5EE: 0x8EF8, //CJK UNIFIED IDEOGRAPH - 0xF5EF: 0x9010, //CJK UNIFIED IDEOGRAPH - 0xF5F0: 0x6625, //CJK UNIFIED IDEOGRAPH - 0xF5F1: 0x693F, //CJK UNIFIED IDEOGRAPH - 0xF5F2: 0x7443, //CJK UNIFIED IDEOGRAPH - 0xF5F3: 0x51FA, //CJK UNIFIED IDEOGRAPH - 0xF5F4: 0x672E, //CJK UNIFIED IDEOGRAPH - 0xF5F5: 0x9EDC, //CJK UNIFIED IDEOGRAPH - 0xF5F6: 0x5145, //CJK UNIFIED IDEOGRAPH - 0xF5F7: 0x5FE0, //CJK UNIFIED IDEOGRAPH - 0xF5F8: 0x6C96, //CJK UNIFIED IDEOGRAPH - 0xF5F9: 0x87F2, //CJK UNIFIED IDEOGRAPH - 0xF5FA: 0x885D, //CJK UNIFIED IDEOGRAPH - 0xF5FB: 0x8877, //CJK UNIFIED IDEOGRAPH - 0xF5FC: 0x60B4, //CJK UNIFIED IDEOGRAPH - 0xF5FD: 0x81B5, //CJK UNIFIED IDEOGRAPH - 0xF5FE: 0x8403, //CJK UNIFIED IDEOGRAPH - 0xF6A1: 0x8D05, //CJK UNIFIED IDEOGRAPH - 0xF6A2: 0x53D6, //CJK UNIFIED IDEOGRAPH - 0xF6A3: 0x5439, //CJK UNIFIED IDEOGRAPH - 0xF6A4: 0x5634, //CJK UNIFIED IDEOGRAPH - 0xF6A5: 0x5A36, //CJK UNIFIED IDEOGRAPH - 0xF6A6: 0x5C31, //CJK UNIFIED IDEOGRAPH - 0xF6A7: 0x708A, //CJK UNIFIED IDEOGRAPH - 0xF6A8: 0x7FE0, //CJK UNIFIED IDEOGRAPH - 0xF6A9: 0x805A, //CJK UNIFIED IDEOGRAPH - 0xF6AA: 0x8106, //CJK UNIFIED IDEOGRAPH - 0xF6AB: 0x81ED, //CJK UNIFIED IDEOGRAPH - 0xF6AC: 0x8DA3, //CJK UNIFIED IDEOGRAPH - 0xF6AD: 0x9189, //CJK UNIFIED IDEOGRAPH - 0xF6AE: 0x9A5F, //CJK UNIFIED IDEOGRAPH - 0xF6AF: 0x9DF2, //CJK UNIFIED IDEOGRAPH - 0xF6B0: 0x5074, //CJK UNIFIED IDEOGRAPH - 0xF6B1: 0x4EC4, //CJK UNIFIED IDEOGRAPH - 0xF6B2: 0x53A0, //CJK UNIFIED IDEOGRAPH - 0xF6B3: 0x60FB, //CJK UNIFIED IDEOGRAPH - 0xF6B4: 0x6E2C, //CJK UNIFIED IDEOGRAPH - 0xF6B5: 0x5C64, //CJK UNIFIED IDEOGRAPH - 0xF6B6: 0x4F88, //CJK UNIFIED IDEOGRAPH - 0xF6B7: 0x5024, //CJK UNIFIED IDEOGRAPH - 0xF6B8: 0x55E4, //CJK UNIFIED IDEOGRAPH - 0xF6B9: 0x5CD9, //CJK UNIFIED IDEOGRAPH - 0xF6BA: 0x5E5F, //CJK UNIFIED IDEOGRAPH - 0xF6BB: 0x6065, //CJK UNIFIED IDEOGRAPH - 0xF6BC: 0x6894, //CJK UNIFIED IDEOGRAPH - 0xF6BD: 0x6CBB, //CJK UNIFIED IDEOGRAPH - 0xF6BE: 0x6DC4, //CJK UNIFIED IDEOGRAPH - 0xF6BF: 0x71BE, //CJK UNIFIED IDEOGRAPH - 0xF6C0: 0x75D4, //CJK UNIFIED IDEOGRAPH - 0xF6C1: 0x75F4, //CJK UNIFIED IDEOGRAPH - 0xF6C2: 0x7661, //CJK UNIFIED IDEOGRAPH - 0xF6C3: 0x7A1A, //CJK UNIFIED IDEOGRAPH - 0xF6C4: 0x7A49, //CJK UNIFIED IDEOGRAPH - 0xF6C5: 0x7DC7, //CJK UNIFIED IDEOGRAPH - 0xF6C6: 0x7DFB, //CJK UNIFIED IDEOGRAPH - 0xF6C7: 0x7F6E, //CJK UNIFIED IDEOGRAPH - 0xF6C8: 0x81F4, //CJK UNIFIED IDEOGRAPH - 0xF6C9: 0x86A9, //CJK UNIFIED IDEOGRAPH - 0xF6CA: 0x8F1C, //CJK UNIFIED IDEOGRAPH - 0xF6CB: 0x96C9, //CJK UNIFIED IDEOGRAPH - 0xF6CC: 0x99B3, //CJK UNIFIED IDEOGRAPH - 0xF6CD: 0x9F52, //CJK UNIFIED IDEOGRAPH - 0xF6CE: 0x5247, //CJK UNIFIED IDEOGRAPH - 0xF6CF: 0x52C5, //CJK UNIFIED IDEOGRAPH - 0xF6D0: 0x98ED, //CJK UNIFIED IDEOGRAPH - 0xF6D1: 0x89AA, //CJK UNIFIED IDEOGRAPH - 0xF6D2: 0x4E03, //CJK UNIFIED IDEOGRAPH - 0xF6D3: 0x67D2, //CJK UNIFIED IDEOGRAPH - 0xF6D4: 0x6F06, //CJK UNIFIED IDEOGRAPH - 0xF6D5: 0x4FB5, //CJK UNIFIED IDEOGRAPH - 0xF6D6: 0x5BE2, //CJK UNIFIED IDEOGRAPH - 0xF6D7: 0x6795, //CJK UNIFIED IDEOGRAPH - 0xF6D8: 0x6C88, //CJK UNIFIED IDEOGRAPH - 0xF6D9: 0x6D78, //CJK UNIFIED IDEOGRAPH - 0xF6DA: 0x741B, //CJK UNIFIED IDEOGRAPH - 0xF6DB: 0x7827, //CJK UNIFIED IDEOGRAPH - 0xF6DC: 0x91DD, //CJK UNIFIED IDEOGRAPH - 0xF6DD: 0x937C, //CJK UNIFIED IDEOGRAPH - 0xF6DE: 0x87C4, //CJK UNIFIED IDEOGRAPH - 0xF6DF: 0x79E4, //CJK UNIFIED IDEOGRAPH - 0xF6E0: 0x7A31, //CJK UNIFIED IDEOGRAPH - 0xF6E1: 0x5FEB, //CJK UNIFIED IDEOGRAPH - 0xF6E2: 0x4ED6, //CJK UNIFIED IDEOGRAPH - 0xF6E3: 0x54A4, //CJK UNIFIED IDEOGRAPH - 0xF6E4: 0x553E, //CJK UNIFIED IDEOGRAPH - 0xF6E5: 0x58AE, //CJK UNIFIED IDEOGRAPH - 0xF6E6: 0x59A5, //CJK UNIFIED IDEOGRAPH - 0xF6E7: 0x60F0, //CJK UNIFIED IDEOGRAPH - 0xF6E8: 0x6253, //CJK UNIFIED IDEOGRAPH - 0xF6E9: 0x62D6, //CJK UNIFIED IDEOGRAPH - 0xF6EA: 0x6736, //CJK UNIFIED IDEOGRAPH - 0xF6EB: 0x6955, //CJK UNIFIED IDEOGRAPH - 0xF6EC: 0x8235, //CJK UNIFIED IDEOGRAPH - 0xF6ED: 0x9640, //CJK UNIFIED IDEOGRAPH - 0xF6EE: 0x99B1, //CJK UNIFIED IDEOGRAPH - 0xF6EF: 0x99DD, //CJK UNIFIED IDEOGRAPH - 0xF6F0: 0x502C, //CJK UNIFIED IDEOGRAPH - 0xF6F1: 0x5353, //CJK UNIFIED IDEOGRAPH - 0xF6F2: 0x5544, //CJK UNIFIED IDEOGRAPH - 0xF6F3: 0x577C, //CJK UNIFIED IDEOGRAPH - 0xF6F4: 0xFA01, //CJK COMPATIBILITY IDEOGRAPH - 0xF6F5: 0x6258, //CJK UNIFIED IDEOGRAPH - 0xF6F6: 0xFA02, //CJK COMPATIBILITY IDEOGRAPH - 0xF6F7: 0x64E2, //CJK UNIFIED IDEOGRAPH - 0xF6F8: 0x666B, //CJK UNIFIED IDEOGRAPH - 0xF6F9: 0x67DD, //CJK UNIFIED IDEOGRAPH - 0xF6FA: 0x6FC1, //CJK UNIFIED IDEOGRAPH - 0xF6FB: 0x6FEF, //CJK UNIFIED IDEOGRAPH - 0xF6FC: 0x7422, //CJK UNIFIED IDEOGRAPH - 0xF6FD: 0x7438, //CJK UNIFIED IDEOGRAPH - 0xF6FE: 0x8A17, //CJK UNIFIED IDEOGRAPH - 0xF7A1: 0x9438, //CJK UNIFIED IDEOGRAPH - 0xF7A2: 0x5451, //CJK UNIFIED IDEOGRAPH - 0xF7A3: 0x5606, //CJK UNIFIED IDEOGRAPH - 0xF7A4: 0x5766, //CJK UNIFIED IDEOGRAPH - 0xF7A5: 0x5F48, //CJK UNIFIED IDEOGRAPH - 0xF7A6: 0x619A, //CJK UNIFIED IDEOGRAPH - 0xF7A7: 0x6B4E, //CJK UNIFIED IDEOGRAPH - 0xF7A8: 0x7058, //CJK UNIFIED IDEOGRAPH - 0xF7A9: 0x70AD, //CJK UNIFIED IDEOGRAPH - 0xF7AA: 0x7DBB, //CJK UNIFIED IDEOGRAPH - 0xF7AB: 0x8A95, //CJK UNIFIED IDEOGRAPH - 0xF7AC: 0x596A, //CJK UNIFIED IDEOGRAPH - 0xF7AD: 0x812B, //CJK UNIFIED IDEOGRAPH - 0xF7AE: 0x63A2, //CJK UNIFIED IDEOGRAPH - 0xF7AF: 0x7708, //CJK UNIFIED IDEOGRAPH - 0xF7B0: 0x803D, //CJK UNIFIED IDEOGRAPH - 0xF7B1: 0x8CAA, //CJK UNIFIED IDEOGRAPH - 0xF7B2: 0x5854, //CJK UNIFIED IDEOGRAPH - 0xF7B3: 0x642D, //CJK UNIFIED IDEOGRAPH - 0xF7B4: 0x69BB, //CJK UNIFIED IDEOGRAPH - 0xF7B5: 0x5B95, //CJK UNIFIED IDEOGRAPH - 0xF7B6: 0x5E11, //CJK UNIFIED IDEOGRAPH - 0xF7B7: 0x6E6F, //CJK UNIFIED IDEOGRAPH - 0xF7B8: 0xFA03, //CJK COMPATIBILITY IDEOGRAPH - 0xF7B9: 0x8569, //CJK UNIFIED IDEOGRAPH - 0xF7BA: 0x514C, //CJK UNIFIED IDEOGRAPH - 0xF7BB: 0x53F0, //CJK UNIFIED IDEOGRAPH - 0xF7BC: 0x592A, //CJK UNIFIED IDEOGRAPH - 0xF7BD: 0x6020, //CJK UNIFIED IDEOGRAPH - 0xF7BE: 0x614B, //CJK UNIFIED IDEOGRAPH - 0xF7BF: 0x6B86, //CJK UNIFIED IDEOGRAPH - 0xF7C0: 0x6C70, //CJK UNIFIED IDEOGRAPH - 0xF7C1: 0x6CF0, //CJK UNIFIED IDEOGRAPH - 0xF7C2: 0x7B1E, //CJK UNIFIED IDEOGRAPH - 0xF7C3: 0x80CE, //CJK UNIFIED IDEOGRAPH - 0xF7C4: 0x82D4, //CJK UNIFIED IDEOGRAPH - 0xF7C5: 0x8DC6, //CJK UNIFIED IDEOGRAPH - 0xF7C6: 0x90B0, //CJK UNIFIED IDEOGRAPH - 0xF7C7: 0x98B1, //CJK UNIFIED IDEOGRAPH - 0xF7C8: 0xFA04, //CJK COMPATIBILITY IDEOGRAPH - 0xF7C9: 0x64C7, //CJK UNIFIED IDEOGRAPH - 0xF7CA: 0x6FA4, //CJK UNIFIED IDEOGRAPH - 0xF7CB: 0x6491, //CJK UNIFIED IDEOGRAPH - 0xF7CC: 0x6504, //CJK UNIFIED IDEOGRAPH - 0xF7CD: 0x514E, //CJK UNIFIED IDEOGRAPH - 0xF7CE: 0x5410, //CJK UNIFIED IDEOGRAPH - 0xF7CF: 0x571F, //CJK UNIFIED IDEOGRAPH - 0xF7D0: 0x8A0E, //CJK UNIFIED IDEOGRAPH - 0xF7D1: 0x615F, //CJK UNIFIED IDEOGRAPH - 0xF7D2: 0x6876, //CJK UNIFIED IDEOGRAPH - 0xF7D3: 0xFA05, //CJK COMPATIBILITY IDEOGRAPH - 0xF7D4: 0x75DB, //CJK UNIFIED IDEOGRAPH - 0xF7D5: 0x7B52, //CJK UNIFIED IDEOGRAPH - 0xF7D6: 0x7D71, //CJK UNIFIED IDEOGRAPH - 0xF7D7: 0x901A, //CJK UNIFIED IDEOGRAPH - 0xF7D8: 0x5806, //CJK UNIFIED IDEOGRAPH - 0xF7D9: 0x69CC, //CJK UNIFIED IDEOGRAPH - 0xF7DA: 0x817F, //CJK UNIFIED IDEOGRAPH - 0xF7DB: 0x892A, //CJK UNIFIED IDEOGRAPH - 0xF7DC: 0x9000, //CJK UNIFIED IDEOGRAPH - 0xF7DD: 0x9839, //CJK UNIFIED IDEOGRAPH - 0xF7DE: 0x5078, //CJK UNIFIED IDEOGRAPH - 0xF7DF: 0x5957, //CJK UNIFIED IDEOGRAPH - 0xF7E0: 0x59AC, //CJK UNIFIED IDEOGRAPH - 0xF7E1: 0x6295, //CJK UNIFIED IDEOGRAPH - 0xF7E2: 0x900F, //CJK UNIFIED IDEOGRAPH - 0xF7E3: 0x9B2A, //CJK UNIFIED IDEOGRAPH - 0xF7E4: 0x615D, //CJK UNIFIED IDEOGRAPH - 0xF7E5: 0x7279, //CJK UNIFIED IDEOGRAPH - 0xF7E6: 0x95D6, //CJK UNIFIED IDEOGRAPH - 0xF7E7: 0x5761, //CJK UNIFIED IDEOGRAPH - 0xF7E8: 0x5A46, //CJK UNIFIED IDEOGRAPH - 0xF7E9: 0x5DF4, //CJK UNIFIED IDEOGRAPH - 0xF7EA: 0x628A, //CJK UNIFIED IDEOGRAPH - 0xF7EB: 0x64AD, //CJK UNIFIED IDEOGRAPH - 0xF7EC: 0x64FA, //CJK UNIFIED IDEOGRAPH - 0xF7ED: 0x6777, //CJK UNIFIED IDEOGRAPH - 0xF7EE: 0x6CE2, //CJK UNIFIED IDEOGRAPH - 0xF7EF: 0x6D3E, //CJK UNIFIED IDEOGRAPH - 0xF7F0: 0x722C, //CJK UNIFIED IDEOGRAPH - 0xF7F1: 0x7436, //CJK UNIFIED IDEOGRAPH - 0xF7F2: 0x7834, //CJK UNIFIED IDEOGRAPH - 0xF7F3: 0x7F77, //CJK UNIFIED IDEOGRAPH - 0xF7F4: 0x82AD, //CJK UNIFIED IDEOGRAPH - 0xF7F5: 0x8DDB, //CJK UNIFIED IDEOGRAPH - 0xF7F6: 0x9817, //CJK UNIFIED IDEOGRAPH - 0xF7F7: 0x5224, //CJK UNIFIED IDEOGRAPH - 0xF7F8: 0x5742, //CJK UNIFIED IDEOGRAPH - 0xF7F9: 0x677F, //CJK UNIFIED IDEOGRAPH - 0xF7FA: 0x7248, //CJK UNIFIED IDEOGRAPH - 0xF7FB: 0x74E3, //CJK UNIFIED IDEOGRAPH - 0xF7FC: 0x8CA9, //CJK UNIFIED IDEOGRAPH - 0xF7FD: 0x8FA6, //CJK UNIFIED IDEOGRAPH - 0xF7FE: 0x9211, //CJK UNIFIED IDEOGRAPH - 0xF8A1: 0x962A, //CJK UNIFIED IDEOGRAPH - 0xF8A2: 0x516B, //CJK UNIFIED IDEOGRAPH - 0xF8A3: 0x53ED, //CJK UNIFIED IDEOGRAPH - 0xF8A4: 0x634C, //CJK UNIFIED IDEOGRAPH - 0xF8A5: 0x4F69, //CJK UNIFIED IDEOGRAPH - 0xF8A6: 0x5504, //CJK UNIFIED IDEOGRAPH - 0xF8A7: 0x6096, //CJK UNIFIED IDEOGRAPH - 0xF8A8: 0x6557, //CJK UNIFIED IDEOGRAPH - 0xF8A9: 0x6C9B, //CJK UNIFIED IDEOGRAPH - 0xF8AA: 0x6D7F, //CJK UNIFIED IDEOGRAPH - 0xF8AB: 0x724C, //CJK UNIFIED IDEOGRAPH - 0xF8AC: 0x72FD, //CJK UNIFIED IDEOGRAPH - 0xF8AD: 0x7A17, //CJK UNIFIED IDEOGRAPH - 0xF8AE: 0x8987, //CJK UNIFIED IDEOGRAPH - 0xF8AF: 0x8C9D, //CJK UNIFIED IDEOGRAPH - 0xF8B0: 0x5F6D, //CJK UNIFIED IDEOGRAPH - 0xF8B1: 0x6F8E, //CJK UNIFIED IDEOGRAPH - 0xF8B2: 0x70F9, //CJK UNIFIED IDEOGRAPH - 0xF8B3: 0x81A8, //CJK UNIFIED IDEOGRAPH - 0xF8B4: 0x610E, //CJK UNIFIED IDEOGRAPH - 0xF8B5: 0x4FBF, //CJK UNIFIED IDEOGRAPH - 0xF8B6: 0x504F, //CJK UNIFIED IDEOGRAPH - 0xF8B7: 0x6241, //CJK UNIFIED IDEOGRAPH - 0xF8B8: 0x7247, //CJK UNIFIED IDEOGRAPH - 0xF8B9: 0x7BC7, //CJK UNIFIED IDEOGRAPH - 0xF8BA: 0x7DE8, //CJK UNIFIED IDEOGRAPH - 0xF8BB: 0x7FE9, //CJK UNIFIED IDEOGRAPH - 0xF8BC: 0x904D, //CJK UNIFIED IDEOGRAPH - 0xF8BD: 0x97AD, //CJK UNIFIED IDEOGRAPH - 0xF8BE: 0x9A19, //CJK UNIFIED IDEOGRAPH - 0xF8BF: 0x8CB6, //CJK UNIFIED IDEOGRAPH - 0xF8C0: 0x576A, //CJK UNIFIED IDEOGRAPH - 0xF8C1: 0x5E73, //CJK UNIFIED IDEOGRAPH - 0xF8C2: 0x67B0, //CJK UNIFIED IDEOGRAPH - 0xF8C3: 0x840D, //CJK UNIFIED IDEOGRAPH - 0xF8C4: 0x8A55, //CJK UNIFIED IDEOGRAPH - 0xF8C5: 0x5420, //CJK UNIFIED IDEOGRAPH - 0xF8C6: 0x5B16, //CJK UNIFIED IDEOGRAPH - 0xF8C7: 0x5E63, //CJK UNIFIED IDEOGRAPH - 0xF8C8: 0x5EE2, //CJK UNIFIED IDEOGRAPH - 0xF8C9: 0x5F0A, //CJK UNIFIED IDEOGRAPH - 0xF8CA: 0x6583, //CJK UNIFIED IDEOGRAPH - 0xF8CB: 0x80BA, //CJK UNIFIED IDEOGRAPH - 0xF8CC: 0x853D, //CJK UNIFIED IDEOGRAPH - 0xF8CD: 0x9589, //CJK UNIFIED IDEOGRAPH - 0xF8CE: 0x965B, //CJK UNIFIED IDEOGRAPH - 0xF8CF: 0x4F48, //CJK UNIFIED IDEOGRAPH - 0xF8D0: 0x5305, //CJK UNIFIED IDEOGRAPH - 0xF8D1: 0x530D, //CJK UNIFIED IDEOGRAPH - 0xF8D2: 0x530F, //CJK UNIFIED IDEOGRAPH - 0xF8D3: 0x5486, //CJK UNIFIED IDEOGRAPH - 0xF8D4: 0x54FA, //CJK UNIFIED IDEOGRAPH - 0xF8D5: 0x5703, //CJK UNIFIED IDEOGRAPH - 0xF8D6: 0x5E03, //CJK UNIFIED IDEOGRAPH - 0xF8D7: 0x6016, //CJK UNIFIED IDEOGRAPH - 0xF8D8: 0x629B, //CJK UNIFIED IDEOGRAPH - 0xF8D9: 0x62B1, //CJK UNIFIED IDEOGRAPH - 0xF8DA: 0x6355, //CJK UNIFIED IDEOGRAPH - 0xF8DB: 0xFA06, //CJK COMPATIBILITY IDEOGRAPH - 0xF8DC: 0x6CE1, //CJK UNIFIED IDEOGRAPH - 0xF8DD: 0x6D66, //CJK UNIFIED IDEOGRAPH - 0xF8DE: 0x75B1, //CJK UNIFIED IDEOGRAPH - 0xF8DF: 0x7832, //CJK UNIFIED IDEOGRAPH - 0xF8E0: 0x80DE, //CJK UNIFIED IDEOGRAPH - 0xF8E1: 0x812F, //CJK UNIFIED IDEOGRAPH - 0xF8E2: 0x82DE, //CJK UNIFIED IDEOGRAPH - 0xF8E3: 0x8461, //CJK UNIFIED IDEOGRAPH - 0xF8E4: 0x84B2, //CJK UNIFIED IDEOGRAPH - 0xF8E5: 0x888D, //CJK UNIFIED IDEOGRAPH - 0xF8E6: 0x8912, //CJK UNIFIED IDEOGRAPH - 0xF8E7: 0x900B, //CJK UNIFIED IDEOGRAPH - 0xF8E8: 0x92EA, //CJK UNIFIED IDEOGRAPH - 0xF8E9: 0x98FD, //CJK UNIFIED IDEOGRAPH - 0xF8EA: 0x9B91, //CJK UNIFIED IDEOGRAPH - 0xF8EB: 0x5E45, //CJK UNIFIED IDEOGRAPH - 0xF8EC: 0x66B4, //CJK UNIFIED IDEOGRAPH - 0xF8ED: 0x66DD, //CJK UNIFIED IDEOGRAPH - 0xF8EE: 0x7011, //CJK UNIFIED IDEOGRAPH - 0xF8EF: 0x7206, //CJK UNIFIED IDEOGRAPH - 0xF8F0: 0xFA07, //CJK COMPATIBILITY IDEOGRAPH - 0xF8F1: 0x4FF5, //CJK UNIFIED IDEOGRAPH - 0xF8F2: 0x527D, //CJK UNIFIED IDEOGRAPH - 0xF8F3: 0x5F6A, //CJK UNIFIED IDEOGRAPH - 0xF8F4: 0x6153, //CJK UNIFIED IDEOGRAPH - 0xF8F5: 0x6753, //CJK UNIFIED IDEOGRAPH - 0xF8F6: 0x6A19, //CJK UNIFIED IDEOGRAPH - 0xF8F7: 0x6F02, //CJK UNIFIED IDEOGRAPH - 0xF8F8: 0x74E2, //CJK UNIFIED IDEOGRAPH - 0xF8F9: 0x7968, //CJK UNIFIED IDEOGRAPH - 0xF8FA: 0x8868, //CJK UNIFIED IDEOGRAPH - 0xF8FB: 0x8C79, //CJK UNIFIED IDEOGRAPH - 0xF8FC: 0x98C7, //CJK UNIFIED IDEOGRAPH - 0xF8FD: 0x98C4, //CJK UNIFIED IDEOGRAPH - 0xF8FE: 0x9A43, //CJK UNIFIED IDEOGRAPH - 0xF9A1: 0x54C1, //CJK UNIFIED IDEOGRAPH - 0xF9A2: 0x7A1F, //CJK UNIFIED IDEOGRAPH - 0xF9A3: 0x6953, //CJK UNIFIED IDEOGRAPH - 0xF9A4: 0x8AF7, //CJK UNIFIED IDEOGRAPH - 0xF9A5: 0x8C4A, //CJK UNIFIED IDEOGRAPH - 0xF9A6: 0x98A8, //CJK UNIFIED IDEOGRAPH - 0xF9A7: 0x99AE, //CJK UNIFIED IDEOGRAPH - 0xF9A8: 0x5F7C, //CJK UNIFIED IDEOGRAPH - 0xF9A9: 0x62AB, //CJK UNIFIED IDEOGRAPH - 0xF9AA: 0x75B2, //CJK UNIFIED IDEOGRAPH - 0xF9AB: 0x76AE, //CJK UNIFIED IDEOGRAPH - 0xF9AC: 0x88AB, //CJK UNIFIED IDEOGRAPH - 0xF9AD: 0x907F, //CJK UNIFIED IDEOGRAPH - 0xF9AE: 0x9642, //CJK UNIFIED IDEOGRAPH - 0xF9AF: 0x5339, //CJK UNIFIED IDEOGRAPH - 0xF9B0: 0x5F3C, //CJK UNIFIED IDEOGRAPH - 0xF9B1: 0x5FC5, //CJK UNIFIED IDEOGRAPH - 0xF9B2: 0x6CCC, //CJK UNIFIED IDEOGRAPH - 0xF9B3: 0x73CC, //CJK UNIFIED IDEOGRAPH - 0xF9B4: 0x7562, //CJK UNIFIED IDEOGRAPH - 0xF9B5: 0x758B, //CJK UNIFIED IDEOGRAPH - 0xF9B6: 0x7B46, //CJK UNIFIED IDEOGRAPH - 0xF9B7: 0x82FE, //CJK UNIFIED IDEOGRAPH - 0xF9B8: 0x999D, //CJK UNIFIED IDEOGRAPH - 0xF9B9: 0x4E4F, //CJK UNIFIED IDEOGRAPH - 0xF9BA: 0x903C, //CJK UNIFIED IDEOGRAPH - 0xF9BB: 0x4E0B, //CJK UNIFIED IDEOGRAPH - 0xF9BC: 0x4F55, //CJK UNIFIED IDEOGRAPH - 0xF9BD: 0x53A6, //CJK UNIFIED IDEOGRAPH - 0xF9BE: 0x590F, //CJK UNIFIED IDEOGRAPH - 0xF9BF: 0x5EC8, //CJK UNIFIED IDEOGRAPH - 0xF9C0: 0x6630, //CJK UNIFIED IDEOGRAPH - 0xF9C1: 0x6CB3, //CJK UNIFIED IDEOGRAPH - 0xF9C2: 0x7455, //CJK UNIFIED IDEOGRAPH - 0xF9C3: 0x8377, //CJK UNIFIED IDEOGRAPH - 0xF9C4: 0x8766, //CJK UNIFIED IDEOGRAPH - 0xF9C5: 0x8CC0, //CJK UNIFIED IDEOGRAPH - 0xF9C6: 0x9050, //CJK UNIFIED IDEOGRAPH - 0xF9C7: 0x971E, //CJK UNIFIED IDEOGRAPH - 0xF9C8: 0x9C15, //CJK UNIFIED IDEOGRAPH - 0xF9C9: 0x58D1, //CJK UNIFIED IDEOGRAPH - 0xF9CA: 0x5B78, //CJK UNIFIED IDEOGRAPH - 0xF9CB: 0x8650, //CJK UNIFIED IDEOGRAPH - 0xF9CC: 0x8B14, //CJK UNIFIED IDEOGRAPH - 0xF9CD: 0x9DB4, //CJK UNIFIED IDEOGRAPH - 0xF9CE: 0x5BD2, //CJK UNIFIED IDEOGRAPH - 0xF9CF: 0x6068, //CJK UNIFIED IDEOGRAPH - 0xF9D0: 0x608D, //CJK UNIFIED IDEOGRAPH - 0xF9D1: 0x65F1, //CJK UNIFIED IDEOGRAPH - 0xF9D2: 0x6C57, //CJK UNIFIED IDEOGRAPH - 0xF9D3: 0x6F22, //CJK UNIFIED IDEOGRAPH - 0xF9D4: 0x6FA3, //CJK UNIFIED IDEOGRAPH - 0xF9D5: 0x701A, //CJK UNIFIED IDEOGRAPH - 0xF9D6: 0x7F55, //CJK UNIFIED IDEOGRAPH - 0xF9D7: 0x7FF0, //CJK UNIFIED IDEOGRAPH - 0xF9D8: 0x9591, //CJK UNIFIED IDEOGRAPH - 0xF9D9: 0x9592, //CJK UNIFIED IDEOGRAPH - 0xF9DA: 0x9650, //CJK UNIFIED IDEOGRAPH - 0xF9DB: 0x97D3, //CJK UNIFIED IDEOGRAPH - 0xF9DC: 0x5272, //CJK UNIFIED IDEOGRAPH - 0xF9DD: 0x8F44, //CJK UNIFIED IDEOGRAPH - 0xF9DE: 0x51FD, //CJK UNIFIED IDEOGRAPH - 0xF9DF: 0x542B, //CJK UNIFIED IDEOGRAPH - 0xF9E0: 0x54B8, //CJK UNIFIED IDEOGRAPH - 0xF9E1: 0x5563, //CJK UNIFIED IDEOGRAPH - 0xF9E2: 0x558A, //CJK UNIFIED IDEOGRAPH - 0xF9E3: 0x6ABB, //CJK UNIFIED IDEOGRAPH - 0xF9E4: 0x6DB5, //CJK UNIFIED IDEOGRAPH - 0xF9E5: 0x7DD8, //CJK UNIFIED IDEOGRAPH - 0xF9E6: 0x8266, //CJK UNIFIED IDEOGRAPH - 0xF9E7: 0x929C, //CJK UNIFIED IDEOGRAPH - 0xF9E8: 0x9677, //CJK UNIFIED IDEOGRAPH - 0xF9E9: 0x9E79, //CJK UNIFIED IDEOGRAPH - 0xF9EA: 0x5408, //CJK UNIFIED IDEOGRAPH - 0xF9EB: 0x54C8, //CJK UNIFIED IDEOGRAPH - 0xF9EC: 0x76D2, //CJK UNIFIED IDEOGRAPH - 0xF9ED: 0x86E4, //CJK UNIFIED IDEOGRAPH - 0xF9EE: 0x95A4, //CJK UNIFIED IDEOGRAPH - 0xF9EF: 0x95D4, //CJK UNIFIED IDEOGRAPH - 0xF9F0: 0x965C, //CJK UNIFIED IDEOGRAPH - 0xF9F1: 0x4EA2, //CJK UNIFIED IDEOGRAPH - 0xF9F2: 0x4F09, //CJK UNIFIED IDEOGRAPH - 0xF9F3: 0x59EE, //CJK UNIFIED IDEOGRAPH - 0xF9F4: 0x5AE6, //CJK UNIFIED IDEOGRAPH - 0xF9F5: 0x5DF7, //CJK UNIFIED IDEOGRAPH - 0xF9F6: 0x6052, //CJK UNIFIED IDEOGRAPH - 0xF9F7: 0x6297, //CJK UNIFIED IDEOGRAPH - 0xF9F8: 0x676D, //CJK UNIFIED IDEOGRAPH - 0xF9F9: 0x6841, //CJK UNIFIED IDEOGRAPH - 0xF9FA: 0x6C86, //CJK UNIFIED IDEOGRAPH - 0xF9FB: 0x6E2F, //CJK UNIFIED IDEOGRAPH - 0xF9FC: 0x7F38, //CJK UNIFIED IDEOGRAPH - 0xF9FD: 0x809B, //CJK UNIFIED IDEOGRAPH - 0xF9FE: 0x822A, //CJK UNIFIED IDEOGRAPH - 0xFAA1: 0xFA08, //CJK COMPATIBILITY IDEOGRAPH - 0xFAA2: 0xFA09, //CJK COMPATIBILITY IDEOGRAPH - 0xFAA3: 0x9805, //CJK UNIFIED IDEOGRAPH - 0xFAA4: 0x4EA5, //CJK UNIFIED IDEOGRAPH - 0xFAA5: 0x5055, //CJK UNIFIED IDEOGRAPH - 0xFAA6: 0x54B3, //CJK UNIFIED IDEOGRAPH - 0xFAA7: 0x5793, //CJK UNIFIED IDEOGRAPH - 0xFAA8: 0x595A, //CJK UNIFIED IDEOGRAPH - 0xFAA9: 0x5B69, //CJK UNIFIED IDEOGRAPH - 0xFAAA: 0x5BB3, //CJK UNIFIED IDEOGRAPH - 0xFAAB: 0x61C8, //CJK UNIFIED IDEOGRAPH - 0xFAAC: 0x6977, //CJK UNIFIED IDEOGRAPH - 0xFAAD: 0x6D77, //CJK UNIFIED IDEOGRAPH - 0xFAAE: 0x7023, //CJK UNIFIED IDEOGRAPH - 0xFAAF: 0x87F9, //CJK UNIFIED IDEOGRAPH - 0xFAB0: 0x89E3, //CJK UNIFIED IDEOGRAPH - 0xFAB1: 0x8A72, //CJK UNIFIED IDEOGRAPH - 0xFAB2: 0x8AE7, //CJK UNIFIED IDEOGRAPH - 0xFAB3: 0x9082, //CJK UNIFIED IDEOGRAPH - 0xFAB4: 0x99ED, //CJK UNIFIED IDEOGRAPH - 0xFAB5: 0x9AB8, //CJK UNIFIED IDEOGRAPH - 0xFAB6: 0x52BE, //CJK UNIFIED IDEOGRAPH - 0xFAB7: 0x6838, //CJK UNIFIED IDEOGRAPH - 0xFAB8: 0x5016, //CJK UNIFIED IDEOGRAPH - 0xFAB9: 0x5E78, //CJK UNIFIED IDEOGRAPH - 0xFABA: 0x674F, //CJK UNIFIED IDEOGRAPH - 0xFABB: 0x8347, //CJK UNIFIED IDEOGRAPH - 0xFABC: 0x884C, //CJK UNIFIED IDEOGRAPH - 0xFABD: 0x4EAB, //CJK UNIFIED IDEOGRAPH - 0xFABE: 0x5411, //CJK UNIFIED IDEOGRAPH - 0xFABF: 0x56AE, //CJK UNIFIED IDEOGRAPH - 0xFAC0: 0x73E6, //CJK UNIFIED IDEOGRAPH - 0xFAC1: 0x9115, //CJK UNIFIED IDEOGRAPH - 0xFAC2: 0x97FF, //CJK UNIFIED IDEOGRAPH - 0xFAC3: 0x9909, //CJK UNIFIED IDEOGRAPH - 0xFAC4: 0x9957, //CJK UNIFIED IDEOGRAPH - 0xFAC5: 0x9999, //CJK UNIFIED IDEOGRAPH - 0xFAC6: 0x5653, //CJK UNIFIED IDEOGRAPH - 0xFAC7: 0x589F, //CJK UNIFIED IDEOGRAPH - 0xFAC8: 0x865B, //CJK UNIFIED IDEOGRAPH - 0xFAC9: 0x8A31, //CJK UNIFIED IDEOGRAPH - 0xFACA: 0x61B2, //CJK UNIFIED IDEOGRAPH - 0xFACB: 0x6AF6, //CJK UNIFIED IDEOGRAPH - 0xFACC: 0x737B, //CJK UNIFIED IDEOGRAPH - 0xFACD: 0x8ED2, //CJK UNIFIED IDEOGRAPH - 0xFACE: 0x6B47, //CJK UNIFIED IDEOGRAPH - 0xFACF: 0x96AA, //CJK UNIFIED IDEOGRAPH - 0xFAD0: 0x9A57, //CJK UNIFIED IDEOGRAPH - 0xFAD1: 0x5955, //CJK UNIFIED IDEOGRAPH - 0xFAD2: 0x7200, //CJK UNIFIED IDEOGRAPH - 0xFAD3: 0x8D6B, //CJK UNIFIED IDEOGRAPH - 0xFAD4: 0x9769, //CJK UNIFIED IDEOGRAPH - 0xFAD5: 0x4FD4, //CJK UNIFIED IDEOGRAPH - 0xFAD6: 0x5CF4, //CJK UNIFIED IDEOGRAPH - 0xFAD7: 0x5F26, //CJK UNIFIED IDEOGRAPH - 0xFAD8: 0x61F8, //CJK UNIFIED IDEOGRAPH - 0xFAD9: 0x665B, //CJK UNIFIED IDEOGRAPH - 0xFADA: 0x6CEB, //CJK UNIFIED IDEOGRAPH - 0xFADB: 0x70AB, //CJK UNIFIED IDEOGRAPH - 0xFADC: 0x7384, //CJK UNIFIED IDEOGRAPH - 0xFADD: 0x73B9, //CJK UNIFIED IDEOGRAPH - 0xFADE: 0x73FE, //CJK UNIFIED IDEOGRAPH - 0xFADF: 0x7729, //CJK UNIFIED IDEOGRAPH - 0xFAE0: 0x774D, //CJK UNIFIED IDEOGRAPH - 0xFAE1: 0x7D43, //CJK UNIFIED IDEOGRAPH - 0xFAE2: 0x7D62, //CJK UNIFIED IDEOGRAPH - 0xFAE3: 0x7E23, //CJK UNIFIED IDEOGRAPH - 0xFAE4: 0x8237, //CJK UNIFIED IDEOGRAPH - 0xFAE5: 0x8852, //CJK UNIFIED IDEOGRAPH - 0xFAE6: 0xFA0A, //CJK COMPATIBILITY IDEOGRAPH - 0xFAE7: 0x8CE2, //CJK UNIFIED IDEOGRAPH - 0xFAE8: 0x9249, //CJK UNIFIED IDEOGRAPH - 0xFAE9: 0x986F, //CJK UNIFIED IDEOGRAPH - 0xFAEA: 0x5B51, //CJK UNIFIED IDEOGRAPH - 0xFAEB: 0x7A74, //CJK UNIFIED IDEOGRAPH - 0xFAEC: 0x8840, //CJK UNIFIED IDEOGRAPH - 0xFAED: 0x9801, //CJK UNIFIED IDEOGRAPH - 0xFAEE: 0x5ACC, //CJK UNIFIED IDEOGRAPH - 0xFAEF: 0x4FE0, //CJK UNIFIED IDEOGRAPH - 0xFAF0: 0x5354, //CJK UNIFIED IDEOGRAPH - 0xFAF1: 0x593E, //CJK UNIFIED IDEOGRAPH - 0xFAF2: 0x5CFD, //CJK UNIFIED IDEOGRAPH - 0xFAF3: 0x633E, //CJK UNIFIED IDEOGRAPH - 0xFAF4: 0x6D79, //CJK UNIFIED IDEOGRAPH - 0xFAF5: 0x72F9, //CJK UNIFIED IDEOGRAPH - 0xFAF6: 0x8105, //CJK UNIFIED IDEOGRAPH - 0xFAF7: 0x8107, //CJK UNIFIED IDEOGRAPH - 0xFAF8: 0x83A2, //CJK UNIFIED IDEOGRAPH - 0xFAF9: 0x92CF, //CJK UNIFIED IDEOGRAPH - 0xFAFA: 0x9830, //CJK UNIFIED IDEOGRAPH - 0xFAFB: 0x4EA8, //CJK UNIFIED IDEOGRAPH - 0xFAFC: 0x5144, //CJK UNIFIED IDEOGRAPH - 0xFAFD: 0x5211, //CJK UNIFIED IDEOGRAPH - 0xFAFE: 0x578B, //CJK UNIFIED IDEOGRAPH - 0xFBA1: 0x5F62, //CJK UNIFIED IDEOGRAPH - 0xFBA2: 0x6CC2, //CJK UNIFIED IDEOGRAPH - 0xFBA3: 0x6ECE, //CJK UNIFIED IDEOGRAPH - 0xFBA4: 0x7005, //CJK UNIFIED IDEOGRAPH - 0xFBA5: 0x7050, //CJK UNIFIED IDEOGRAPH - 0xFBA6: 0x70AF, //CJK UNIFIED IDEOGRAPH - 0xFBA7: 0x7192, //CJK UNIFIED IDEOGRAPH - 0xFBA8: 0x73E9, //CJK UNIFIED IDEOGRAPH - 0xFBA9: 0x7469, //CJK UNIFIED IDEOGRAPH - 0xFBAA: 0x834A, //CJK UNIFIED IDEOGRAPH - 0xFBAB: 0x87A2, //CJK UNIFIED IDEOGRAPH - 0xFBAC: 0x8861, //CJK UNIFIED IDEOGRAPH - 0xFBAD: 0x9008, //CJK UNIFIED IDEOGRAPH - 0xFBAE: 0x90A2, //CJK UNIFIED IDEOGRAPH - 0xFBAF: 0x93A3, //CJK UNIFIED IDEOGRAPH - 0xFBB0: 0x99A8, //CJK UNIFIED IDEOGRAPH - 0xFBB1: 0x516E, //CJK UNIFIED IDEOGRAPH - 0xFBB2: 0x5F57, //CJK UNIFIED IDEOGRAPH - 0xFBB3: 0x60E0, //CJK UNIFIED IDEOGRAPH - 0xFBB4: 0x6167, //CJK UNIFIED IDEOGRAPH - 0xFBB5: 0x66B3, //CJK UNIFIED IDEOGRAPH - 0xFBB6: 0x8559, //CJK UNIFIED IDEOGRAPH - 0xFBB7: 0x8E4A, //CJK UNIFIED IDEOGRAPH - 0xFBB8: 0x91AF, //CJK UNIFIED IDEOGRAPH - 0xFBB9: 0x978B, //CJK UNIFIED IDEOGRAPH - 0xFBBA: 0x4E4E, //CJK UNIFIED IDEOGRAPH - 0xFBBB: 0x4E92, //CJK UNIFIED IDEOGRAPH - 0xFBBC: 0x547C, //CJK UNIFIED IDEOGRAPH - 0xFBBD: 0x58D5, //CJK UNIFIED IDEOGRAPH - 0xFBBE: 0x58FA, //CJK UNIFIED IDEOGRAPH - 0xFBBF: 0x597D, //CJK UNIFIED IDEOGRAPH - 0xFBC0: 0x5CB5, //CJK UNIFIED IDEOGRAPH - 0xFBC1: 0x5F27, //CJK UNIFIED IDEOGRAPH - 0xFBC2: 0x6236, //CJK UNIFIED IDEOGRAPH - 0xFBC3: 0x6248, //CJK UNIFIED IDEOGRAPH - 0xFBC4: 0x660A, //CJK UNIFIED IDEOGRAPH - 0xFBC5: 0x6667, //CJK UNIFIED IDEOGRAPH - 0xFBC6: 0x6BEB, //CJK UNIFIED IDEOGRAPH - 0xFBC7: 0x6D69, //CJK UNIFIED IDEOGRAPH - 0xFBC8: 0x6DCF, //CJK UNIFIED IDEOGRAPH - 0xFBC9: 0x6E56, //CJK UNIFIED IDEOGRAPH - 0xFBCA: 0x6EF8, //CJK UNIFIED IDEOGRAPH - 0xFBCB: 0x6F94, //CJK UNIFIED IDEOGRAPH - 0xFBCC: 0x6FE0, //CJK UNIFIED IDEOGRAPH - 0xFBCD: 0x6FE9, //CJK UNIFIED IDEOGRAPH - 0xFBCE: 0x705D, //CJK UNIFIED IDEOGRAPH - 0xFBCF: 0x72D0, //CJK UNIFIED IDEOGRAPH - 0xFBD0: 0x7425, //CJK UNIFIED IDEOGRAPH - 0xFBD1: 0x745A, //CJK UNIFIED IDEOGRAPH - 0xFBD2: 0x74E0, //CJK UNIFIED IDEOGRAPH - 0xFBD3: 0x7693, //CJK UNIFIED IDEOGRAPH - 0xFBD4: 0x795C, //CJK UNIFIED IDEOGRAPH - 0xFBD5: 0x7CCA, //CJK UNIFIED IDEOGRAPH - 0xFBD6: 0x7E1E, //CJK UNIFIED IDEOGRAPH - 0xFBD7: 0x80E1, //CJK UNIFIED IDEOGRAPH - 0xFBD8: 0x82A6, //CJK UNIFIED IDEOGRAPH - 0xFBD9: 0x846B, //CJK UNIFIED IDEOGRAPH - 0xFBDA: 0x84BF, //CJK UNIFIED IDEOGRAPH - 0xFBDB: 0x864E, //CJK UNIFIED IDEOGRAPH - 0xFBDC: 0x865F, //CJK UNIFIED IDEOGRAPH - 0xFBDD: 0x8774, //CJK UNIFIED IDEOGRAPH - 0xFBDE: 0x8B77, //CJK UNIFIED IDEOGRAPH - 0xFBDF: 0x8C6A, //CJK UNIFIED IDEOGRAPH - 0xFBE0: 0x93AC, //CJK UNIFIED IDEOGRAPH - 0xFBE1: 0x9800, //CJK UNIFIED IDEOGRAPH - 0xFBE2: 0x9865, //CJK UNIFIED IDEOGRAPH - 0xFBE3: 0x60D1, //CJK UNIFIED IDEOGRAPH - 0xFBE4: 0x6216, //CJK UNIFIED IDEOGRAPH - 0xFBE5: 0x9177, //CJK UNIFIED IDEOGRAPH - 0xFBE6: 0x5A5A, //CJK UNIFIED IDEOGRAPH - 0xFBE7: 0x660F, //CJK UNIFIED IDEOGRAPH - 0xFBE8: 0x6DF7, //CJK UNIFIED IDEOGRAPH - 0xFBE9: 0x6E3E, //CJK UNIFIED IDEOGRAPH - 0xFBEA: 0x743F, //CJK UNIFIED IDEOGRAPH - 0xFBEB: 0x9B42, //CJK UNIFIED IDEOGRAPH - 0xFBEC: 0x5FFD, //CJK UNIFIED IDEOGRAPH - 0xFBED: 0x60DA, //CJK UNIFIED IDEOGRAPH - 0xFBEE: 0x7B0F, //CJK UNIFIED IDEOGRAPH - 0xFBEF: 0x54C4, //CJK UNIFIED IDEOGRAPH - 0xFBF0: 0x5F18, //CJK UNIFIED IDEOGRAPH - 0xFBF1: 0x6C5E, //CJK UNIFIED IDEOGRAPH - 0xFBF2: 0x6CD3, //CJK UNIFIED IDEOGRAPH - 0xFBF3: 0x6D2A, //CJK UNIFIED IDEOGRAPH - 0xFBF4: 0x70D8, //CJK UNIFIED IDEOGRAPH - 0xFBF5: 0x7D05, //CJK UNIFIED IDEOGRAPH - 0xFBF6: 0x8679, //CJK UNIFIED IDEOGRAPH - 0xFBF7: 0x8A0C, //CJK UNIFIED IDEOGRAPH - 0xFBF8: 0x9D3B, //CJK UNIFIED IDEOGRAPH - 0xFBF9: 0x5316, //CJK UNIFIED IDEOGRAPH - 0xFBFA: 0x548C, //CJK UNIFIED IDEOGRAPH - 0xFBFB: 0x5B05, //CJK UNIFIED IDEOGRAPH - 0xFBFC: 0x6A3A, //CJK UNIFIED IDEOGRAPH - 0xFBFD: 0x706B, //CJK UNIFIED IDEOGRAPH - 0xFBFE: 0x7575, //CJK UNIFIED IDEOGRAPH - 0xFCA1: 0x798D, //CJK UNIFIED IDEOGRAPH - 0xFCA2: 0x79BE, //CJK UNIFIED IDEOGRAPH - 0xFCA3: 0x82B1, //CJK UNIFIED IDEOGRAPH - 0xFCA4: 0x83EF, //CJK UNIFIED IDEOGRAPH - 0xFCA5: 0x8A71, //CJK UNIFIED IDEOGRAPH - 0xFCA6: 0x8B41, //CJK UNIFIED IDEOGRAPH - 0xFCA7: 0x8CA8, //CJK UNIFIED IDEOGRAPH - 0xFCA8: 0x9774, //CJK UNIFIED IDEOGRAPH - 0xFCA9: 0xFA0B, //CJK COMPATIBILITY IDEOGRAPH - 0xFCAA: 0x64F4, //CJK UNIFIED IDEOGRAPH - 0xFCAB: 0x652B, //CJK UNIFIED IDEOGRAPH - 0xFCAC: 0x78BA, //CJK UNIFIED IDEOGRAPH - 0xFCAD: 0x78BB, //CJK UNIFIED IDEOGRAPH - 0xFCAE: 0x7A6B, //CJK UNIFIED IDEOGRAPH - 0xFCAF: 0x4E38, //CJK UNIFIED IDEOGRAPH - 0xFCB0: 0x559A, //CJK UNIFIED IDEOGRAPH - 0xFCB1: 0x5950, //CJK UNIFIED IDEOGRAPH - 0xFCB2: 0x5BA6, //CJK UNIFIED IDEOGRAPH - 0xFCB3: 0x5E7B, //CJK UNIFIED IDEOGRAPH - 0xFCB4: 0x60A3, //CJK UNIFIED IDEOGRAPH - 0xFCB5: 0x63DB, //CJK UNIFIED IDEOGRAPH - 0xFCB6: 0x6B61, //CJK UNIFIED IDEOGRAPH - 0xFCB7: 0x6665, //CJK UNIFIED IDEOGRAPH - 0xFCB8: 0x6853, //CJK UNIFIED IDEOGRAPH - 0xFCB9: 0x6E19, //CJK UNIFIED IDEOGRAPH - 0xFCBA: 0x7165, //CJK UNIFIED IDEOGRAPH - 0xFCBB: 0x74B0, //CJK UNIFIED IDEOGRAPH - 0xFCBC: 0x7D08, //CJK UNIFIED IDEOGRAPH - 0xFCBD: 0x9084, //CJK UNIFIED IDEOGRAPH - 0xFCBE: 0x9A69, //CJK UNIFIED IDEOGRAPH - 0xFCBF: 0x9C25, //CJK UNIFIED IDEOGRAPH - 0xFCC0: 0x6D3B, //CJK UNIFIED IDEOGRAPH - 0xFCC1: 0x6ED1, //CJK UNIFIED IDEOGRAPH - 0xFCC2: 0x733E, //CJK UNIFIED IDEOGRAPH - 0xFCC3: 0x8C41, //CJK UNIFIED IDEOGRAPH - 0xFCC4: 0x95CA, //CJK UNIFIED IDEOGRAPH - 0xFCC5: 0x51F0, //CJK UNIFIED IDEOGRAPH - 0xFCC6: 0x5E4C, //CJK UNIFIED IDEOGRAPH - 0xFCC7: 0x5FA8, //CJK UNIFIED IDEOGRAPH - 0xFCC8: 0x604D, //CJK UNIFIED IDEOGRAPH - 0xFCC9: 0x60F6, //CJK UNIFIED IDEOGRAPH - 0xFCCA: 0x6130, //CJK UNIFIED IDEOGRAPH - 0xFCCB: 0x614C, //CJK UNIFIED IDEOGRAPH - 0xFCCC: 0x6643, //CJK UNIFIED IDEOGRAPH - 0xFCCD: 0x6644, //CJK UNIFIED IDEOGRAPH - 0xFCCE: 0x69A5, //CJK UNIFIED IDEOGRAPH - 0xFCCF: 0x6CC1, //CJK UNIFIED IDEOGRAPH - 0xFCD0: 0x6E5F, //CJK UNIFIED IDEOGRAPH - 0xFCD1: 0x6EC9, //CJK UNIFIED IDEOGRAPH - 0xFCD2: 0x6F62, //CJK UNIFIED IDEOGRAPH - 0xFCD3: 0x714C, //CJK UNIFIED IDEOGRAPH - 0xFCD4: 0x749C, //CJK UNIFIED IDEOGRAPH - 0xFCD5: 0x7687, //CJK UNIFIED IDEOGRAPH - 0xFCD6: 0x7BC1, //CJK UNIFIED IDEOGRAPH - 0xFCD7: 0x7C27, //CJK UNIFIED IDEOGRAPH - 0xFCD8: 0x8352, //CJK UNIFIED IDEOGRAPH - 0xFCD9: 0x8757, //CJK UNIFIED IDEOGRAPH - 0xFCDA: 0x9051, //CJK UNIFIED IDEOGRAPH - 0xFCDB: 0x968D, //CJK UNIFIED IDEOGRAPH - 0xFCDC: 0x9EC3, //CJK UNIFIED IDEOGRAPH - 0xFCDD: 0x532F, //CJK UNIFIED IDEOGRAPH - 0xFCDE: 0x56DE, //CJK UNIFIED IDEOGRAPH - 0xFCDF: 0x5EFB, //CJK UNIFIED IDEOGRAPH - 0xFCE0: 0x5F8A, //CJK UNIFIED IDEOGRAPH - 0xFCE1: 0x6062, //CJK UNIFIED IDEOGRAPH - 0xFCE2: 0x6094, //CJK UNIFIED IDEOGRAPH - 0xFCE3: 0x61F7, //CJK UNIFIED IDEOGRAPH - 0xFCE4: 0x6666, //CJK UNIFIED IDEOGRAPH - 0xFCE5: 0x6703, //CJK UNIFIED IDEOGRAPH - 0xFCE6: 0x6A9C, //CJK UNIFIED IDEOGRAPH - 0xFCE7: 0x6DEE, //CJK UNIFIED IDEOGRAPH - 0xFCE8: 0x6FAE, //CJK UNIFIED IDEOGRAPH - 0xFCE9: 0x7070, //CJK UNIFIED IDEOGRAPH - 0xFCEA: 0x736A, //CJK UNIFIED IDEOGRAPH - 0xFCEB: 0x7E6A, //CJK UNIFIED IDEOGRAPH - 0xFCEC: 0x81BE, //CJK UNIFIED IDEOGRAPH - 0xFCED: 0x8334, //CJK UNIFIED IDEOGRAPH - 0xFCEE: 0x86D4, //CJK UNIFIED IDEOGRAPH - 0xFCEF: 0x8AA8, //CJK UNIFIED IDEOGRAPH - 0xFCF0: 0x8CC4, //CJK UNIFIED IDEOGRAPH - 0xFCF1: 0x5283, //CJK UNIFIED IDEOGRAPH - 0xFCF2: 0x7372, //CJK UNIFIED IDEOGRAPH - 0xFCF3: 0x5B96, //CJK UNIFIED IDEOGRAPH - 0xFCF4: 0x6A6B, //CJK UNIFIED IDEOGRAPH - 0xFCF5: 0x9404, //CJK UNIFIED IDEOGRAPH - 0xFCF6: 0x54EE, //CJK UNIFIED IDEOGRAPH - 0xFCF7: 0x5686, //CJK UNIFIED IDEOGRAPH - 0xFCF8: 0x5B5D, //CJK UNIFIED IDEOGRAPH - 0xFCF9: 0x6548, //CJK UNIFIED IDEOGRAPH - 0xFCFA: 0x6585, //CJK UNIFIED IDEOGRAPH - 0xFCFB: 0x66C9, //CJK UNIFIED IDEOGRAPH - 0xFCFC: 0x689F, //CJK UNIFIED IDEOGRAPH - 0xFCFD: 0x6D8D, //CJK UNIFIED IDEOGRAPH - 0xFCFE: 0x6DC6, //CJK UNIFIED IDEOGRAPH - 0xFDA1: 0x723B, //CJK UNIFIED IDEOGRAPH - 0xFDA2: 0x80B4, //CJK UNIFIED IDEOGRAPH - 0xFDA3: 0x9175, //CJK UNIFIED IDEOGRAPH - 0xFDA4: 0x9A4D, //CJK UNIFIED IDEOGRAPH - 0xFDA5: 0x4FAF, //CJK UNIFIED IDEOGRAPH - 0xFDA6: 0x5019, //CJK UNIFIED IDEOGRAPH - 0xFDA7: 0x539A, //CJK UNIFIED IDEOGRAPH - 0xFDA8: 0x540E, //CJK UNIFIED IDEOGRAPH - 0xFDA9: 0x543C, //CJK UNIFIED IDEOGRAPH - 0xFDAA: 0x5589, //CJK UNIFIED IDEOGRAPH - 0xFDAB: 0x55C5, //CJK UNIFIED IDEOGRAPH - 0xFDAC: 0x5E3F, //CJK UNIFIED IDEOGRAPH - 0xFDAD: 0x5F8C, //CJK UNIFIED IDEOGRAPH - 0xFDAE: 0x673D, //CJK UNIFIED IDEOGRAPH - 0xFDAF: 0x7166, //CJK UNIFIED IDEOGRAPH - 0xFDB0: 0x73DD, //CJK UNIFIED IDEOGRAPH - 0xFDB1: 0x9005, //CJK UNIFIED IDEOGRAPH - 0xFDB2: 0x52DB, //CJK UNIFIED IDEOGRAPH - 0xFDB3: 0x52F3, //CJK UNIFIED IDEOGRAPH - 0xFDB4: 0x5864, //CJK UNIFIED IDEOGRAPH - 0xFDB5: 0x58CE, //CJK UNIFIED IDEOGRAPH - 0xFDB6: 0x7104, //CJK UNIFIED IDEOGRAPH - 0xFDB7: 0x718F, //CJK UNIFIED IDEOGRAPH - 0xFDB8: 0x71FB, //CJK UNIFIED IDEOGRAPH - 0xFDB9: 0x85B0, //CJK UNIFIED IDEOGRAPH - 0xFDBA: 0x8A13, //CJK UNIFIED IDEOGRAPH - 0xFDBB: 0x6688, //CJK UNIFIED IDEOGRAPH - 0xFDBC: 0x85A8, //CJK UNIFIED IDEOGRAPH - 0xFDBD: 0x55A7, //CJK UNIFIED IDEOGRAPH - 0xFDBE: 0x6684, //CJK UNIFIED IDEOGRAPH - 0xFDBF: 0x714A, //CJK UNIFIED IDEOGRAPH - 0xFDC0: 0x8431, //CJK UNIFIED IDEOGRAPH - 0xFDC1: 0x5349, //CJK UNIFIED IDEOGRAPH - 0xFDC2: 0x5599, //CJK UNIFIED IDEOGRAPH - 0xFDC3: 0x6BC1, //CJK UNIFIED IDEOGRAPH - 0xFDC4: 0x5F59, //CJK UNIFIED IDEOGRAPH - 0xFDC5: 0x5FBD, //CJK UNIFIED IDEOGRAPH - 0xFDC6: 0x63EE, //CJK UNIFIED IDEOGRAPH - 0xFDC7: 0x6689, //CJK UNIFIED IDEOGRAPH - 0xFDC8: 0x7147, //CJK UNIFIED IDEOGRAPH - 0xFDC9: 0x8AF1, //CJK UNIFIED IDEOGRAPH - 0xFDCA: 0x8F1D, //CJK UNIFIED IDEOGRAPH - 0xFDCB: 0x9EBE, //CJK UNIFIED IDEOGRAPH - 0xFDCC: 0x4F11, //CJK UNIFIED IDEOGRAPH - 0xFDCD: 0x643A, //CJK UNIFIED IDEOGRAPH - 0xFDCE: 0x70CB, //CJK UNIFIED IDEOGRAPH - 0xFDCF: 0x7566, //CJK UNIFIED IDEOGRAPH - 0xFDD0: 0x8667, //CJK UNIFIED IDEOGRAPH - 0xFDD1: 0x6064, //CJK UNIFIED IDEOGRAPH - 0xFDD2: 0x8B4E, //CJK UNIFIED IDEOGRAPH - 0xFDD3: 0x9DF8, //CJK UNIFIED IDEOGRAPH - 0xFDD4: 0x5147, //CJK UNIFIED IDEOGRAPH - 0xFDD5: 0x51F6, //CJK UNIFIED IDEOGRAPH - 0xFDD6: 0x5308, //CJK UNIFIED IDEOGRAPH - 0xFDD7: 0x6D36, //CJK UNIFIED IDEOGRAPH - 0xFDD8: 0x80F8, //CJK UNIFIED IDEOGRAPH - 0xFDD9: 0x9ED1, //CJK UNIFIED IDEOGRAPH - 0xFDDA: 0x6615, //CJK UNIFIED IDEOGRAPH - 0xFDDB: 0x6B23, //CJK UNIFIED IDEOGRAPH - 0xFDDC: 0x7098, //CJK UNIFIED IDEOGRAPH - 0xFDDD: 0x75D5, //CJK UNIFIED IDEOGRAPH - 0xFDDE: 0x5403, //CJK UNIFIED IDEOGRAPH - 0xFDDF: 0x5C79, //CJK UNIFIED IDEOGRAPH - 0xFDE0: 0x7D07, //CJK UNIFIED IDEOGRAPH - 0xFDE1: 0x8A16, //CJK UNIFIED IDEOGRAPH - 0xFDE2: 0x6B20, //CJK UNIFIED IDEOGRAPH - 0xFDE3: 0x6B3D, //CJK UNIFIED IDEOGRAPH - 0xFDE4: 0x6B46, //CJK UNIFIED IDEOGRAPH - 0xFDE5: 0x5438, //CJK UNIFIED IDEOGRAPH - 0xFDE6: 0x6070, //CJK UNIFIED IDEOGRAPH - 0xFDE7: 0x6D3D, //CJK UNIFIED IDEOGRAPH - 0xFDE8: 0x7FD5, //CJK UNIFIED IDEOGRAPH - 0xFDE9: 0x8208, //CJK UNIFIED IDEOGRAPH - 0xFDEA: 0x50D6, //CJK UNIFIED IDEOGRAPH - 0xFDEB: 0x51DE, //CJK UNIFIED IDEOGRAPH - 0xFDEC: 0x559C, //CJK UNIFIED IDEOGRAPH - 0xFDED: 0x566B, //CJK UNIFIED IDEOGRAPH - 0xFDEE: 0x56CD, //CJK UNIFIED IDEOGRAPH - 0xFDEF: 0x59EC, //CJK UNIFIED IDEOGRAPH - 0xFDF0: 0x5B09, //CJK UNIFIED IDEOGRAPH - 0xFDF1: 0x5E0C, //CJK UNIFIED IDEOGRAPH - 0xFDF2: 0x6199, //CJK UNIFIED IDEOGRAPH - 0xFDF3: 0x6198, //CJK UNIFIED IDEOGRAPH - 0xFDF4: 0x6231, //CJK UNIFIED IDEOGRAPH - 0xFDF5: 0x665E, //CJK UNIFIED IDEOGRAPH - 0xFDF6: 0x66E6, //CJK UNIFIED IDEOGRAPH - 0xFDF7: 0x7199, //CJK UNIFIED IDEOGRAPH - 0xFDF8: 0x71B9, //CJK UNIFIED IDEOGRAPH - 0xFDF9: 0x71BA, //CJK UNIFIED IDEOGRAPH - 0xFDFA: 0x72A7, //CJK UNIFIED IDEOGRAPH - 0xFDFB: 0x79A7, //CJK UNIFIED IDEOGRAPH - 0xFDFC: 0x7A00, //CJK UNIFIED IDEOGRAPH - 0xFDFD: 0x7FB2, //CJK UNIFIED IDEOGRAPH - 0xFDFE: 0x8A70, //CJK UNIFIED IDEOGRAPH - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp950.go b/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp950.go deleted file mode 100644 index 1301cd0f..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/cp/cp950.go +++ /dev/null @@ -1,13767 +0,0 @@ -package cp - -var cp950 *charsetMap = &charsetMap{ - sb: [256]rune{ - 0x0000, //NULL - 0x0001, //START OF HEADING - 0x0002, //START OF TEXT - 0x0003, //END OF TEXT - 0x0004, //END OF TRANSMISSION - 0x0005, //ENQUIRY - 0x0006, //ACKNOWLEDGE - 0x0007, //BELL - 0x0008, //BACKSPACE - 0x0009, //HORIZONTAL TABULATION - 0x000A, //LINE FEED - 0x000B, //VERTICAL TABULATION - 0x000C, //FORM FEED - 0x000D, //CARRIAGE RETURN - 0x000E, //SHIFT OUT - 0x000F, //SHIFT IN - 0x0010, //DATA LINK ESCAPE - 0x0011, //DEVICE CONTROL ONE - 0x0012, //DEVICE CONTROL TWO - 0x0013, //DEVICE CONTROL THREE - 0x0014, //DEVICE CONTROL FOUR - 0x0015, //NEGATIVE ACKNOWLEDGE - 0x0016, //SYNCHRONOUS IDLE - 0x0017, //END OF TRANSMISSION BLOCK - 0x0018, //CANCEL - 0x0019, //END OF MEDIUM - 0x001A, //SUBSTITUTE - 0x001B, //ESCAPE - 0x001C, //FILE SEPARATOR - 0x001D, //GROUP SEPARATOR - 0x001E, //RECORD SEPARATOR - 0x001F, //UNIT SEPARATOR - 0x0020, //SPACE - 0x0021, //EXCLAMATION MARK - 0x0022, //QUOTATION MARK - 0x0023, //NUMBER SIGN - 0x0024, //DOLLAR SIGN - 0x0025, //PERCENT SIGN - 0x0026, //AMPERSAND - 0x0027, //APOSTROPHE - 0x0028, //LEFT PARENTHESIS - 0x0029, //RIGHT PARENTHESIS - 0x002A, //ASTERISK - 0x002B, //PLUS SIGN - 0x002C, //COMMA - 0x002D, //HYPHEN-MINUS - 0x002E, //FULL STOP - 0x002F, //SOLIDUS - 0x0030, //DIGIT ZERO - 0x0031, //DIGIT ONE - 0x0032, //DIGIT TWO - 0x0033, //DIGIT THREE - 0x0034, //DIGIT FOUR - 0x0035, //DIGIT FIVE - 0x0036, //DIGIT SIX - 0x0037, //DIGIT SEVEN - 0x0038, //DIGIT EIGHT - 0x0039, //DIGIT NINE - 0x003A, //COLON - 0x003B, //SEMICOLON - 0x003C, //LESS-THAN SIGN - 0x003D, //EQUALS SIGN - 0x003E, //GREATER-THAN SIGN - 0x003F, //QUESTION MARK - 0x0040, //COMMERCIAL AT - 0x0041, //LATIN CAPITAL LETTER A - 0x0042, //LATIN CAPITAL LETTER B - 0x0043, //LATIN CAPITAL LETTER C - 0x0044, //LATIN CAPITAL LETTER D - 0x0045, //LATIN CAPITAL LETTER E - 0x0046, //LATIN CAPITAL LETTER F - 0x0047, //LATIN CAPITAL LETTER G - 0x0048, //LATIN CAPITAL LETTER H - 0x0049, //LATIN CAPITAL LETTER I - 0x004A, //LATIN CAPITAL LETTER J - 0x004B, //LATIN CAPITAL LETTER K - 0x004C, //LATIN CAPITAL LETTER L - 0x004D, //LATIN CAPITAL LETTER M - 0x004E, //LATIN CAPITAL LETTER N - 0x004F, //LATIN CAPITAL LETTER O - 0x0050, //LATIN CAPITAL LETTER P - 0x0051, //LATIN CAPITAL LETTER Q - 0x0052, //LATIN CAPITAL LETTER R - 0x0053, //LATIN CAPITAL LETTER S - 0x0054, //LATIN CAPITAL LETTER T - 0x0055, //LATIN CAPITAL LETTER U - 0x0056, //LATIN CAPITAL LETTER V - 0x0057, //LATIN CAPITAL LETTER W - 0x0058, //LATIN CAPITAL LETTER X - 0x0059, //LATIN CAPITAL LETTER Y - 0x005A, //LATIN CAPITAL LETTER Z - 0x005B, //LEFT SQUARE BRACKET - 0x005C, //REVERSE SOLIDUS - 0x005D, //RIGHT SQUARE BRACKET - 0x005E, //CIRCUMFLEX ACCENT - 0x005F, //LOW LINE - 0x0060, //GRAVE ACCENT - 0x0061, //LATIN SMALL LETTER A - 0x0062, //LATIN SMALL LETTER B - 0x0063, //LATIN SMALL LETTER C - 0x0064, //LATIN SMALL LETTER D - 0x0065, //LATIN SMALL LETTER E - 0x0066, //LATIN SMALL LETTER F - 0x0067, //LATIN SMALL LETTER G - 0x0068, //LATIN SMALL LETTER H - 0x0069, //LATIN SMALL LETTER I - 0x006A, //LATIN SMALL LETTER J - 0x006B, //LATIN SMALL LETTER K - 0x006C, //LATIN SMALL LETTER L - 0x006D, //LATIN SMALL LETTER M - 0x006E, //LATIN SMALL LETTER N - 0x006F, //LATIN SMALL LETTER O - 0x0070, //LATIN SMALL LETTER P - 0x0071, //LATIN SMALL LETTER Q - 0x0072, //LATIN SMALL LETTER R - 0x0073, //LATIN SMALL LETTER S - 0x0074, //LATIN SMALL LETTER T - 0x0075, //LATIN SMALL LETTER U - 0x0076, //LATIN SMALL LETTER V - 0x0077, //LATIN SMALL LETTER W - 0x0078, //LATIN SMALL LETTER X - 0x0079, //LATIN SMALL LETTER Y - 0x007A, //LATIN SMALL LETTER Z - 0x007B, //LEFT CURLY BRACKET - 0x007C, //VERTICAL LINE - 0x007D, //RIGHT CURLY BRACKET - 0x007E, //TILDE - 0x007F, //DELETE - 0xFFFD, //UNDEFINED - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - -1, //DBCS LEAD BYTE - 0xFFFD, //UNDEFINED - }, - db: map[int]rune{ - 0xA140: 0x3000, //IDEOGRAPHIC SPACE - 0xA141: 0xFF0C, //FULLWIDTH COMMA - 0xA142: 0x3001, //IDEOGRAPHIC COMMA - 0xA143: 0x3002, //IDEOGRAPHIC FULL STOP - 0xA144: 0xFF0E, //FULLWIDTH FULL STOP - 0xA145: 0x2027, //HYPHENATION POINT - 0xA146: 0xFF1B, //FULLWIDTH SEMICOLON - 0xA147: 0xFF1A, //FULLWIDTH COLON - 0xA148: 0xFF1F, //FULLWIDTH QUESTION MARK - 0xA149: 0xFF01, //FULLWIDTH EXCLAMATION MARK - 0xA14A: 0xFE30, //PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - 0xA14B: 0x2026, //HORIZONTAL ELLIPSIS - 0xA14C: 0x2025, //TWO DOT LEADER - 0xA14D: 0xFE50, //SMALL COMMA - 0xA14E: 0xFE51, //SMALL IDEOGRAPHIC COMMA - 0xA14F: 0xFE52, //SMALL FULL STOP - 0xA150: 0x00B7, //MIDDLE DOT - 0xA151: 0xFE54, //SMALL SEMICOLON - 0xA152: 0xFE55, //SMALL COLON - 0xA153: 0xFE56, //SMALL QUESTION MARK - 0xA154: 0xFE57, //SMALL EXCLAMATION MARK - 0xA155: 0xFF5C, //FULLWIDTH VERTICAL LINE - 0xA156: 0x2013, //EN DASH - 0xA157: 0xFE31, //PRESENTATION FORM FOR VERTICAL EM DASH - 0xA158: 0x2014, //EM DASH - 0xA159: 0xFE33, //PRESENTATION FORM FOR VERTICAL LOW LINE - 0xA15A: 0x2574, //BOX DRAWINGS LIGHT LEFT - 0xA15B: 0xFE34, //PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - 0xA15C: 0xFE4F, //WAVY LOW LINE - 0xA15D: 0xFF08, //FULLWIDTH LEFT PARENTHESIS - 0xA15E: 0xFF09, //FULLWIDTH RIGHT PARENTHESIS - 0xA15F: 0xFE35, //PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - 0xA160: 0xFE36, //PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - 0xA161: 0xFF5B, //FULLWIDTH LEFT CURLY BRACKET - 0xA162: 0xFF5D, //FULLWIDTH RIGHT CURLY BRACKET - 0xA163: 0xFE37, //PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - 0xA164: 0xFE38, //PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - 0xA165: 0x3014, //LEFT TORTOISE SHELL BRACKET - 0xA166: 0x3015, //RIGHT TORTOISE SHELL BRACKET - 0xA167: 0xFE39, //PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - 0xA168: 0xFE3A, //PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - 0xA169: 0x3010, //LEFT BLACK LENTICULAR BRACKET - 0xA16A: 0x3011, //RIGHT BLACK LENTICULAR BRACKET - 0xA16B: 0xFE3B, //PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - 0xA16C: 0xFE3C, //PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - 0xA16D: 0x300A, //LEFT DOUBLE ANGLE BRACKET - 0xA16E: 0x300B, //RIGHT DOUBLE ANGLE BRACKET - 0xA16F: 0xFE3D, //PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - 0xA170: 0xFE3E, //PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - 0xA171: 0x3008, //LEFT ANGLE BRACKET - 0xA172: 0x3009, //RIGHT ANGLE BRACKET - 0xA173: 0xFE3F, //PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - 0xA174: 0xFE40, //PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - 0xA175: 0x300C, //LEFT CORNER BRACKET - 0xA176: 0x300D, //RIGHT CORNER BRACKET - 0xA177: 0xFE41, //PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - 0xA178: 0xFE42, //PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - 0xA179: 0x300E, //LEFT WHITE CORNER BRACKET - 0xA17A: 0x300F, //RIGHT WHITE CORNER BRACKET - 0xA17B: 0xFE43, //PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - 0xA17C: 0xFE44, //PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - 0xA17D: 0xFE59, //SMALL LEFT PARENTHESIS - 0xA17E: 0xFE5A, //SMALL RIGHT PARENTHESIS - 0xA1A1: 0xFE5B, //SMALL LEFT CURLY BRACKET - 0xA1A2: 0xFE5C, //SMALL RIGHT CURLY BRACKET - 0xA1A3: 0xFE5D, //SMALL LEFT TORTOISE SHELL BRACKET - 0xA1A4: 0xFE5E, //SMALL RIGHT TORTOISE SHELL BRACKET - 0xA1A5: 0x2018, //LEFT SINGLE QUOTATION MARK - 0xA1A6: 0x2019, //RIGHT SINGLE QUOTATION MARK - 0xA1A7: 0x201C, //LEFT DOUBLE QUOTATION MARK - 0xA1A8: 0x201D, //RIGHT DOUBLE QUOTATION MARK - 0xA1A9: 0x301D, //REVERSED DOUBLE PRIME QUOTATION MARK - 0xA1AA: 0x301E, //DOUBLE PRIME QUOTATION MARK - 0xA1AB: 0x2035, //REVERSED PRIME - 0xA1AC: 0x2032, //PRIME - 0xA1AD: 0xFF03, //FULLWIDTH NUMBER SIGN - 0xA1AE: 0xFF06, //FULLWIDTH AMPERSAND - 0xA1AF: 0xFF0A, //FULLWIDTH ASTERISK - 0xA1B0: 0x203B, //REFERENCE MARK - 0xA1B1: 0x00A7, //SECTION SIGN - 0xA1B2: 0x3003, //DITTO MARK - 0xA1B3: 0x25CB, //WHITE CIRCLE - 0xA1B4: 0x25CF, //BLACK CIRCLE - 0xA1B5: 0x25B3, //WHITE UP-POINTING TRIANGLE - 0xA1B6: 0x25B2, //BLACK UP-POINTING TRIANGLE - 0xA1B7: 0x25CE, //BULLSEYE - 0xA1B8: 0x2606, //WHITE STAR - 0xA1B9: 0x2605, //BLACK STAR - 0xA1BA: 0x25C7, //WHITE DIAMOND - 0xA1BB: 0x25C6, //BLACK DIAMOND - 0xA1BC: 0x25A1, //WHITE SQUARE - 0xA1BD: 0x25A0, //BLACK SQUARE - 0xA1BE: 0x25BD, //WHITE DOWN-POINTING TRIANGLE - 0xA1BF: 0x25BC, //BLACK DOWN-POINTING TRIANGLE - 0xA1C0: 0x32A3, //CIRCLED IDEOGRAPH CORRECT - 0xA1C1: 0x2105, //CARE OF - 0xA1C2: 0x00AF, //MACRON - 0xA1C3: 0xFFE3, //FULLWIDTH MACRON - 0xA1C4: 0xFF3F, //FULLWIDTH LOW LINE - 0xA1C5: 0x02CD, //MODIFIER LETTER LOW MACRON - 0xA1C6: 0xFE49, //DASHED OVERLINE - 0xA1C7: 0xFE4A, //CENTRELINE OVERLINE - 0xA1C8: 0xFE4D, //DASHED LOW LINE - 0xA1C9: 0xFE4E, //CENTRELINE LOW LINE - 0xA1CA: 0xFE4B, //WAVY OVERLINE - 0xA1CB: 0xFE4C, //DOUBLE WAVY OVERLINE - 0xA1CC: 0xFE5F, //SMALL NUMBER SIGN - 0xA1CD: 0xFE60, //SMALL AMPERSAND - 0xA1CE: 0xFE61, //SMALL ASTERISK - 0xA1CF: 0xFF0B, //FULLWIDTH PLUS SIGN - 0xA1D0: 0xFF0D, //FULLWIDTH HYPHEN-MINUS - 0xA1D1: 0x00D7, //MULTIPLICATION SIGN - 0xA1D2: 0x00F7, //DIVISION SIGN - 0xA1D3: 0x00B1, //PLUS-MINUS SIGN - 0xA1D4: 0x221A, //SQUARE ROOT - 0xA1D5: 0xFF1C, //FULLWIDTH LESS-THAN SIGN - 0xA1D6: 0xFF1E, //FULLWIDTH GREATER-THAN SIGN - 0xA1D7: 0xFF1D, //FULLWIDTH EQUALS SIGN - 0xA1D8: 0x2266, //LESS-THAN OVER EQUAL TO - 0xA1D9: 0x2267, //GREATER-THAN OVER EQUAL TO - 0xA1DA: 0x2260, //NOT EQUAL TO - 0xA1DB: 0x221E, //INFINITY - 0xA1DC: 0x2252, //APPROXIMATELY EQUAL TO OR THE IMAGE OF - 0xA1DD: 0x2261, //IDENTICAL TO - 0xA1DE: 0xFE62, //SMALL PLUS SIGN - 0xA1DF: 0xFE63, //SMALL HYPHEN-MINUS - 0xA1E0: 0xFE64, //SMALL LESS-THAN SIGN - 0xA1E1: 0xFE65, //SMALL GREATER-THAN SIGN - 0xA1E2: 0xFE66, //SMALL EQUALS SIGN - 0xA1E3: 0xFF5E, //FULLWIDTH TILDE - 0xA1E4: 0x2229, //INTERSECTION - 0xA1E5: 0x222A, //UNION - 0xA1E6: 0x22A5, //UP TACK - 0xA1E7: 0x2220, //ANGLE - 0xA1E8: 0x221F, //RIGHT ANGLE - 0xA1E9: 0x22BF, //RIGHT TRIANGLE - 0xA1EA: 0x33D2, //SQUARE LOG - 0xA1EB: 0x33D1, //SQUARE LN - 0xA1EC: 0x222B, //INTEGRAL - 0xA1ED: 0x222E, //CONTOUR INTEGRAL - 0xA1EE: 0x2235, //BECAUSE - 0xA1EF: 0x2234, //THEREFORE - 0xA1F0: 0x2640, //FEMALE SIGN - 0xA1F1: 0x2642, //MALE SIGN - 0xA1F2: 0x2295, //CIRCLED PLUS - 0xA1F3: 0x2299, //CIRCLED DOT OPERATOR - 0xA1F4: 0x2191, //UPWARDS ARROW - 0xA1F5: 0x2193, //DOWNWARDS ARROW - 0xA1F6: 0x2190, //LEFTWARDS ARROW - 0xA1F7: 0x2192, //RIGHTWARDS ARROW - 0xA1F8: 0x2196, //NORTH WEST ARROW - 0xA1F9: 0x2197, //NORTH EAST ARROW - 0xA1FA: 0x2199, //SOUTH WEST ARROW - 0xA1FB: 0x2198, //SOUTH EAST ARROW - 0xA1FC: 0x2225, //PARALLEL TO - 0xA1FD: 0x2223, //DIVIDES - 0xA1FE: 0xFF0F, //FULLWIDTH SOLIDUS - 0xA240: 0xFF3C, //FULLWIDTH REVERSE SOLIDUS - 0xA241: 0x2215, //DIVISION SLASH - 0xA242: 0xFE68, //SMALL REVERSE SOLIDUS - 0xA243: 0xFF04, //FULLWIDTH DOLLAR SIGN - 0xA244: 0xFFE5, //FULLWIDTH YEN SIGN - 0xA245: 0x3012, //POSTAL MARK - 0xA246: 0xFFE0, //FULLWIDTH CENT SIGN - 0xA247: 0xFFE1, //FULLWIDTH POUND SIGN - 0xA248: 0xFF05, //FULLWIDTH PERCENT SIGN - 0xA249: 0xFF20, //FULLWIDTH COMMERCIAL AT - 0xA24A: 0x2103, //DEGREE CELSIUS - 0xA24B: 0x2109, //DEGREE FAHRENHEIT - 0xA24C: 0xFE69, //SMALL DOLLAR SIGN - 0xA24D: 0xFE6A, //SMALL PERCENT SIGN - 0xA24E: 0xFE6B, //SMALL COMMERCIAL AT - 0xA24F: 0x33D5, //SQUARE MIL - 0xA250: 0x339C, //SQUARE MM - 0xA251: 0x339D, //SQUARE CM - 0xA252: 0x339E, //SQUARE KM - 0xA253: 0x33CE, //SQUARE KM CAPITAL - 0xA254: 0x33A1, //SQUARE M SQUARED - 0xA255: 0x338E, //SQUARE MG - 0xA256: 0x338F, //SQUARE KG - 0xA257: 0x33C4, //SQUARE CC - 0xA258: 0x00B0, //DEGREE SIGN - 0xA259: 0x5159, //CJK UNIFIED IDEOGRAPH - 0xA25A: 0x515B, //CJK UNIFIED IDEOGRAPH - 0xA25B: 0x515E, //CJK UNIFIED IDEOGRAPH - 0xA25C: 0x515D, //CJK UNIFIED IDEOGRAPH - 0xA25D: 0x5161, //CJK UNIFIED IDEOGRAPH - 0xA25E: 0x5163, //CJK UNIFIED IDEOGRAPH - 0xA25F: 0x55E7, //CJK UNIFIED IDEOGRAPH - 0xA260: 0x74E9, //CJK UNIFIED IDEOGRAPH - 0xA261: 0x7CCE, //CJK UNIFIED IDEOGRAPH - 0xA262: 0x2581, //LOWER ONE EIGHTH BLOCK - 0xA263: 0x2582, //LOWER ONE QUARTER BLOCK - 0xA264: 0x2583, //LOWER THREE EIGHTHS BLOCK - 0xA265: 0x2584, //LOWER HALF BLOCK - 0xA266: 0x2585, //LOWER FIVE EIGHTHS BLOCK - 0xA267: 0x2586, //LOWER THREE QUARTERS BLOCK - 0xA268: 0x2587, //LOWER SEVEN EIGHTHS BLOCK - 0xA269: 0x2588, //FULL BLOCK - 0xA26A: 0x258F, //LEFT ONE EIGHTH BLOCK - 0xA26B: 0x258E, //LEFT ONE QUARTER BLOCK - 0xA26C: 0x258D, //LEFT THREE EIGHTHS BLOCK - 0xA26D: 0x258C, //LEFT HALF BLOCK - 0xA26E: 0x258B, //LEFT FIVE EIGHTHS BLOCK - 0xA26F: 0x258A, //LEFT THREE QUARTERS BLOCK - 0xA270: 0x2589, //LEFT SEVEN EIGHTHS BLOCK - 0xA271: 0x253C, //BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - 0xA272: 0x2534, //BOX DRAWINGS LIGHT UP AND HORIZONTAL - 0xA273: 0x252C, //BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - 0xA274: 0x2524, //BOX DRAWINGS LIGHT VERTICAL AND LEFT - 0xA275: 0x251C, //BOX DRAWINGS LIGHT VERTICAL AND RIGHT - 0xA276: 0x2594, //UPPER ONE EIGHTH BLOCK - 0xA277: 0x2500, //BOX DRAWINGS LIGHT HORIZONTAL - 0xA278: 0x2502, //BOX DRAWINGS LIGHT VERTICAL - 0xA279: 0x2595, //RIGHT ONE EIGHTH BLOCK - 0xA27A: 0x250C, //BOX DRAWINGS LIGHT DOWN AND RIGHT - 0xA27B: 0x2510, //BOX DRAWINGS LIGHT DOWN AND LEFT - 0xA27C: 0x2514, //BOX DRAWINGS LIGHT UP AND RIGHT - 0xA27D: 0x2518, //BOX DRAWINGS LIGHT UP AND LEFT - 0xA27E: 0x256D, //BOX DRAWINGS LIGHT ARC DOWN AND RIGHT - 0xA2A1: 0x256E, //BOX DRAWINGS LIGHT ARC DOWN AND LEFT - 0xA2A2: 0x2570, //BOX DRAWINGS LIGHT ARC UP AND RIGHT - 0xA2A3: 0x256F, //BOX DRAWINGS LIGHT ARC UP AND LEFT - 0xA2A4: 0x2550, //BOX DRAWINGS DOUBLE HORIZONTAL - 0xA2A5: 0x255E, //BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - 0xA2A6: 0x256A, //BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - 0xA2A7: 0x2561, //BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - 0xA2A8: 0x25E2, //BLACK LOWER RIGHT TRIANGLE - 0xA2A9: 0x25E3, //BLACK LOWER LEFT TRIANGLE - 0xA2AA: 0x25E5, //BLACK UPPER RIGHT TRIANGLE - 0xA2AB: 0x25E4, //BLACK UPPER LEFT TRIANGLE - 0xA2AC: 0x2571, //BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT - 0xA2AD: 0x2572, //BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT - 0xA2AE: 0x2573, //BOX DRAWINGS LIGHT DIAGONAL CROSS - 0xA2AF: 0xFF10, //FULLWIDTH DIGIT ZERO - 0xA2B0: 0xFF11, //FULLWIDTH DIGIT ONE - 0xA2B1: 0xFF12, //FULLWIDTH DIGIT TWO - 0xA2B2: 0xFF13, //FULLWIDTH DIGIT THREE - 0xA2B3: 0xFF14, //FULLWIDTH DIGIT FOUR - 0xA2B4: 0xFF15, //FULLWIDTH DIGIT FIVE - 0xA2B5: 0xFF16, //FULLWIDTH DIGIT SIX - 0xA2B6: 0xFF17, //FULLWIDTH DIGIT SEVEN - 0xA2B7: 0xFF18, //FULLWIDTH DIGIT EIGHT - 0xA2B8: 0xFF19, //FULLWIDTH DIGIT NINE - 0xA2B9: 0x2160, //ROMAN NUMERAL ONE - 0xA2BA: 0x2161, //ROMAN NUMERAL TWO - 0xA2BB: 0x2162, //ROMAN NUMERAL THREE - 0xA2BC: 0x2163, //ROMAN NUMERAL FOUR - 0xA2BD: 0x2164, //ROMAN NUMERAL FIVE - 0xA2BE: 0x2165, //ROMAN NUMERAL SIX - 0xA2BF: 0x2166, //ROMAN NUMERAL SEVEN - 0xA2C0: 0x2167, //ROMAN NUMERAL EIGHT - 0xA2C1: 0x2168, //ROMAN NUMERAL NINE - 0xA2C2: 0x2169, //ROMAN NUMERAL TEN - 0xA2C3: 0x3021, //HANGZHOU NUMERAL ONE - 0xA2C4: 0x3022, //HANGZHOU NUMERAL TWO - 0xA2C5: 0x3023, //HANGZHOU NUMERAL THREE - 0xA2C6: 0x3024, //HANGZHOU NUMERAL FOUR - 0xA2C7: 0x3025, //HANGZHOU NUMERAL FIVE - 0xA2C8: 0x3026, //HANGZHOU NUMERAL SIX - 0xA2C9: 0x3027, //HANGZHOU NUMERAL SEVEN - 0xA2CA: 0x3028, //HANGZHOU NUMERAL EIGHT - 0xA2CB: 0x3029, //HANGZHOU NUMERAL NINE - 0xA2CC: 0x5341, //CJK UNIFIED IDEOGRAPH - 0xA2CD: 0x5344, //CJK UNIFIED IDEOGRAPH - 0xA2CE: 0x5345, //CJK UNIFIED IDEOGRAPH - 0xA2CF: 0xFF21, //FULLWIDTH LATIN CAPITAL LETTER A - 0xA2D0: 0xFF22, //FULLWIDTH LATIN CAPITAL LETTER B - 0xA2D1: 0xFF23, //FULLWIDTH LATIN CAPITAL LETTER C - 0xA2D2: 0xFF24, //FULLWIDTH LATIN CAPITAL LETTER D - 0xA2D3: 0xFF25, //FULLWIDTH LATIN CAPITAL LETTER E - 0xA2D4: 0xFF26, //FULLWIDTH LATIN CAPITAL LETTER F - 0xA2D5: 0xFF27, //FULLWIDTH LATIN CAPITAL LETTER G - 0xA2D6: 0xFF28, //FULLWIDTH LATIN CAPITAL LETTER H - 0xA2D7: 0xFF29, //FULLWIDTH LATIN CAPITAL LETTER I - 0xA2D8: 0xFF2A, //FULLWIDTH LATIN CAPITAL LETTER J - 0xA2D9: 0xFF2B, //FULLWIDTH LATIN CAPITAL LETTER K - 0xA2DA: 0xFF2C, //FULLWIDTH LATIN CAPITAL LETTER L - 0xA2DB: 0xFF2D, //FULLWIDTH LATIN CAPITAL LETTER M - 0xA2DC: 0xFF2E, //FULLWIDTH LATIN CAPITAL LETTER N - 0xA2DD: 0xFF2F, //FULLWIDTH LATIN CAPITAL LETTER O - 0xA2DE: 0xFF30, //FULLWIDTH LATIN CAPITAL LETTER P - 0xA2DF: 0xFF31, //FULLWIDTH LATIN CAPITAL LETTER Q - 0xA2E0: 0xFF32, //FULLWIDTH LATIN CAPITAL LETTER R - 0xA2E1: 0xFF33, //FULLWIDTH LATIN CAPITAL LETTER S - 0xA2E2: 0xFF34, //FULLWIDTH LATIN CAPITAL LETTER T - 0xA2E3: 0xFF35, //FULLWIDTH LATIN CAPITAL LETTER U - 0xA2E4: 0xFF36, //FULLWIDTH LATIN CAPITAL LETTER V - 0xA2E5: 0xFF37, //FULLWIDTH LATIN CAPITAL LETTER W - 0xA2E6: 0xFF38, //FULLWIDTH LATIN CAPITAL LETTER X - 0xA2E7: 0xFF39, //FULLWIDTH LATIN CAPITAL LETTER Y - 0xA2E8: 0xFF3A, //FULLWIDTH LATIN CAPITAL LETTER Z - 0xA2E9: 0xFF41, //FULLWIDTH LATIN SMALL LETTER A - 0xA2EA: 0xFF42, //FULLWIDTH LATIN SMALL LETTER B - 0xA2EB: 0xFF43, //FULLWIDTH LATIN SMALL LETTER C - 0xA2EC: 0xFF44, //FULLWIDTH LATIN SMALL LETTER D - 0xA2ED: 0xFF45, //FULLWIDTH LATIN SMALL LETTER E - 0xA2EE: 0xFF46, //FULLWIDTH LATIN SMALL LETTER F - 0xA2EF: 0xFF47, //FULLWIDTH LATIN SMALL LETTER G - 0xA2F0: 0xFF48, //FULLWIDTH LATIN SMALL LETTER H - 0xA2F1: 0xFF49, //FULLWIDTH LATIN SMALL LETTER I - 0xA2F2: 0xFF4A, //FULLWIDTH LATIN SMALL LETTER J - 0xA2F3: 0xFF4B, //FULLWIDTH LATIN SMALL LETTER K - 0xA2F4: 0xFF4C, //FULLWIDTH LATIN SMALL LETTER L - 0xA2F5: 0xFF4D, //FULLWIDTH LATIN SMALL LETTER M - 0xA2F6: 0xFF4E, //FULLWIDTH LATIN SMALL LETTER N - 0xA2F7: 0xFF4F, //FULLWIDTH LATIN SMALL LETTER O - 0xA2F8: 0xFF50, //FULLWIDTH LATIN SMALL LETTER P - 0xA2F9: 0xFF51, //FULLWIDTH LATIN SMALL LETTER Q - 0xA2FA: 0xFF52, //FULLWIDTH LATIN SMALL LETTER R - 0xA2FB: 0xFF53, //FULLWIDTH LATIN SMALL LETTER S - 0xA2FC: 0xFF54, //FULLWIDTH LATIN SMALL LETTER T - 0xA2FD: 0xFF55, //FULLWIDTH LATIN SMALL LETTER U - 0xA2FE: 0xFF56, //FULLWIDTH LATIN SMALL LETTER V - 0xA340: 0xFF57, //FULLWIDTH LATIN SMALL LETTER W - 0xA341: 0xFF58, //FULLWIDTH LATIN SMALL LETTER X - 0xA342: 0xFF59, //FULLWIDTH LATIN SMALL LETTER Y - 0xA343: 0xFF5A, //FULLWIDTH LATIN SMALL LETTER Z - 0xA344: 0x0391, //GREEK CAPITAL LETTER ALPHA - 0xA345: 0x0392, //GREEK CAPITAL LETTER BETA - 0xA346: 0x0393, //GREEK CAPITAL LETTER GAMMA - 0xA347: 0x0394, //GREEK CAPITAL LETTER DELTA - 0xA348: 0x0395, //GREEK CAPITAL LETTER EPSILON - 0xA349: 0x0396, //GREEK CAPITAL LETTER ZETA - 0xA34A: 0x0397, //GREEK CAPITAL LETTER ETA - 0xA34B: 0x0398, //GREEK CAPITAL LETTER THETA - 0xA34C: 0x0399, //GREEK CAPITAL LETTER IOTA - 0xA34D: 0x039A, //GREEK CAPITAL LETTER KAPPA - 0xA34E: 0x039B, //GREEK CAPITAL LETTER LAMDA - 0xA34F: 0x039C, //GREEK CAPITAL LETTER MU - 0xA350: 0x039D, //GREEK CAPITAL LETTER NU - 0xA351: 0x039E, //GREEK CAPITAL LETTER XI - 0xA352: 0x039F, //GREEK CAPITAL LETTER OMICRON - 0xA353: 0x03A0, //GREEK CAPITAL LETTER PI - 0xA354: 0x03A1, //GREEK CAPITAL LETTER RHO - 0xA355: 0x03A3, //GREEK CAPITAL LETTER SIGMA - 0xA356: 0x03A4, //GREEK CAPITAL LETTER TAU - 0xA357: 0x03A5, //GREEK CAPITAL LETTER UPSILON - 0xA358: 0x03A6, //GREEK CAPITAL LETTER PHI - 0xA359: 0x03A7, //GREEK CAPITAL LETTER CHI - 0xA35A: 0x03A8, //GREEK CAPITAL LETTER PSI - 0xA35B: 0x03A9, //GREEK CAPITAL LETTER OMEGA - 0xA35C: 0x03B1, //GREEK SMALL LETTER ALPHA - 0xA35D: 0x03B2, //GREEK SMALL LETTER BETA - 0xA35E: 0x03B3, //GREEK SMALL LETTER GAMMA - 0xA35F: 0x03B4, //GREEK SMALL LETTER DELTA - 0xA360: 0x03B5, //GREEK SMALL LETTER EPSILON - 0xA361: 0x03B6, //GREEK SMALL LETTER ZETA - 0xA362: 0x03B7, //GREEK SMALL LETTER ETA - 0xA363: 0x03B8, //GREEK SMALL LETTER THETA - 0xA364: 0x03B9, //GREEK SMALL LETTER IOTA - 0xA365: 0x03BA, //GREEK SMALL LETTER KAPPA - 0xA366: 0x03BB, //GREEK SMALL LETTER LAMDA - 0xA367: 0x03BC, //GREEK SMALL LETTER MU - 0xA368: 0x03BD, //GREEK SMALL LETTER NU - 0xA369: 0x03BE, //GREEK SMALL LETTER XI - 0xA36A: 0x03BF, //GREEK SMALL LETTER OMICRON - 0xA36B: 0x03C0, //GREEK SMALL LETTER PI - 0xA36C: 0x03C1, //GREEK SMALL LETTER RHO - 0xA36D: 0x03C3, //GREEK SMALL LETTER SIGMA - 0xA36E: 0x03C4, //GREEK SMALL LETTER TAU - 0xA36F: 0x03C5, //GREEK SMALL LETTER UPSILON - 0xA370: 0x03C6, //GREEK SMALL LETTER PHI - 0xA371: 0x03C7, //GREEK SMALL LETTER CHI - 0xA372: 0x03C8, //GREEK SMALL LETTER PSI - 0xA373: 0x03C9, //GREEK SMALL LETTER OMEGA - 0xA374: 0x3105, //BOPOMOFO LETTER B - 0xA375: 0x3106, //BOPOMOFO LETTER P - 0xA376: 0x3107, //BOPOMOFO LETTER M - 0xA377: 0x3108, //BOPOMOFO LETTER F - 0xA378: 0x3109, //BOPOMOFO LETTER D - 0xA379: 0x310A, //BOPOMOFO LETTER T - 0xA37A: 0x310B, //BOPOMOFO LETTER N - 0xA37B: 0x310C, //BOPOMOFO LETTER L - 0xA37C: 0x310D, //BOPOMOFO LETTER G - 0xA37D: 0x310E, //BOPOMOFO LETTER K - 0xA37E: 0x310F, //BOPOMOFO LETTER H - 0xA3A1: 0x3110, //BOPOMOFO LETTER J - 0xA3A2: 0x3111, //BOPOMOFO LETTER Q - 0xA3A3: 0x3112, //BOPOMOFO LETTER X - 0xA3A4: 0x3113, //BOPOMOFO LETTER ZH - 0xA3A5: 0x3114, //BOPOMOFO LETTER CH - 0xA3A6: 0x3115, //BOPOMOFO LETTER SH - 0xA3A7: 0x3116, //BOPOMOFO LETTER R - 0xA3A8: 0x3117, //BOPOMOFO LETTER Z - 0xA3A9: 0x3118, //BOPOMOFO LETTER C - 0xA3AA: 0x3119, //BOPOMOFO LETTER S - 0xA3AB: 0x311A, //BOPOMOFO LETTER A - 0xA3AC: 0x311B, //BOPOMOFO LETTER O - 0xA3AD: 0x311C, //BOPOMOFO LETTER E - 0xA3AE: 0x311D, //BOPOMOFO LETTER EH - 0xA3AF: 0x311E, //BOPOMOFO LETTER AI - 0xA3B0: 0x311F, //BOPOMOFO LETTER EI - 0xA3B1: 0x3120, //BOPOMOFO LETTER AU - 0xA3B2: 0x3121, //BOPOMOFO LETTER OU - 0xA3B3: 0x3122, //BOPOMOFO LETTER AN - 0xA3B4: 0x3123, //BOPOMOFO LETTER EN - 0xA3B5: 0x3124, //BOPOMOFO LETTER ANG - 0xA3B6: 0x3125, //BOPOMOFO LETTER ENG - 0xA3B7: 0x3126, //BOPOMOFO LETTER ER - 0xA3B8: 0x3127, //BOPOMOFO LETTER I - 0xA3B9: 0x3128, //BOPOMOFO LETTER U - 0xA3BA: 0x3129, //BOPOMOFO LETTER IU - 0xA3BB: 0x02D9, //DOT ABOVE - 0xA3BC: 0x02C9, //MODIFIER LETTER MACRON - 0xA3BD: 0x02CA, //MODIFIER LETTER ACUTE ACCENT - 0xA3BE: 0x02C7, //CARON - 0xA3BF: 0x02CB, //MODIFIER LETTER GRAVE ACCENT - 0xA3E1: 0x20AC, //EURO SIGN - 0xA440: 0x4E00, //CJK UNIFIED IDEOGRAPH - 0xA441: 0x4E59, //CJK UNIFIED IDEOGRAPH - 0xA442: 0x4E01, //CJK UNIFIED IDEOGRAPH - 0xA443: 0x4E03, //CJK UNIFIED IDEOGRAPH - 0xA444: 0x4E43, //CJK UNIFIED IDEOGRAPH - 0xA445: 0x4E5D, //CJK UNIFIED IDEOGRAPH - 0xA446: 0x4E86, //CJK UNIFIED IDEOGRAPH - 0xA447: 0x4E8C, //CJK UNIFIED IDEOGRAPH - 0xA448: 0x4EBA, //CJK UNIFIED IDEOGRAPH - 0xA449: 0x513F, //CJK UNIFIED IDEOGRAPH - 0xA44A: 0x5165, //CJK UNIFIED IDEOGRAPH - 0xA44B: 0x516B, //CJK UNIFIED IDEOGRAPH - 0xA44C: 0x51E0, //CJK UNIFIED IDEOGRAPH - 0xA44D: 0x5200, //CJK UNIFIED IDEOGRAPH - 0xA44E: 0x5201, //CJK UNIFIED IDEOGRAPH - 0xA44F: 0x529B, //CJK UNIFIED IDEOGRAPH - 0xA450: 0x5315, //CJK UNIFIED IDEOGRAPH - 0xA451: 0x5341, //CJK UNIFIED IDEOGRAPH - 0xA452: 0x535C, //CJK UNIFIED IDEOGRAPH - 0xA453: 0x53C8, //CJK UNIFIED IDEOGRAPH - 0xA454: 0x4E09, //CJK UNIFIED IDEOGRAPH - 0xA455: 0x4E0B, //CJK UNIFIED IDEOGRAPH - 0xA456: 0x4E08, //CJK UNIFIED IDEOGRAPH - 0xA457: 0x4E0A, //CJK UNIFIED IDEOGRAPH - 0xA458: 0x4E2B, //CJK UNIFIED IDEOGRAPH - 0xA459: 0x4E38, //CJK UNIFIED IDEOGRAPH - 0xA45A: 0x51E1, //CJK UNIFIED IDEOGRAPH - 0xA45B: 0x4E45, //CJK UNIFIED IDEOGRAPH - 0xA45C: 0x4E48, //CJK UNIFIED IDEOGRAPH - 0xA45D: 0x4E5F, //CJK UNIFIED IDEOGRAPH - 0xA45E: 0x4E5E, //CJK UNIFIED IDEOGRAPH - 0xA45F: 0x4E8E, //CJK UNIFIED IDEOGRAPH - 0xA460: 0x4EA1, //CJK UNIFIED IDEOGRAPH - 0xA461: 0x5140, //CJK UNIFIED IDEOGRAPH - 0xA462: 0x5203, //CJK UNIFIED IDEOGRAPH - 0xA463: 0x52FA, //CJK UNIFIED IDEOGRAPH - 0xA464: 0x5343, //CJK UNIFIED IDEOGRAPH - 0xA465: 0x53C9, //CJK UNIFIED IDEOGRAPH - 0xA466: 0x53E3, //CJK UNIFIED IDEOGRAPH - 0xA467: 0x571F, //CJK UNIFIED IDEOGRAPH - 0xA468: 0x58EB, //CJK UNIFIED IDEOGRAPH - 0xA469: 0x5915, //CJK UNIFIED IDEOGRAPH - 0xA46A: 0x5927, //CJK UNIFIED IDEOGRAPH - 0xA46B: 0x5973, //CJK UNIFIED IDEOGRAPH - 0xA46C: 0x5B50, //CJK UNIFIED IDEOGRAPH - 0xA46D: 0x5B51, //CJK UNIFIED IDEOGRAPH - 0xA46E: 0x5B53, //CJK UNIFIED IDEOGRAPH - 0xA46F: 0x5BF8, //CJK UNIFIED IDEOGRAPH - 0xA470: 0x5C0F, //CJK UNIFIED IDEOGRAPH - 0xA471: 0x5C22, //CJK UNIFIED IDEOGRAPH - 0xA472: 0x5C38, //CJK UNIFIED IDEOGRAPH - 0xA473: 0x5C71, //CJK UNIFIED IDEOGRAPH - 0xA474: 0x5DDD, //CJK UNIFIED IDEOGRAPH - 0xA475: 0x5DE5, //CJK UNIFIED IDEOGRAPH - 0xA476: 0x5DF1, //CJK UNIFIED IDEOGRAPH - 0xA477: 0x5DF2, //CJK UNIFIED IDEOGRAPH - 0xA478: 0x5DF3, //CJK UNIFIED IDEOGRAPH - 0xA479: 0x5DFE, //CJK UNIFIED IDEOGRAPH - 0xA47A: 0x5E72, //CJK UNIFIED IDEOGRAPH - 0xA47B: 0x5EFE, //CJK UNIFIED IDEOGRAPH - 0xA47C: 0x5F0B, //CJK UNIFIED IDEOGRAPH - 0xA47D: 0x5F13, //CJK UNIFIED IDEOGRAPH - 0xA47E: 0x624D, //CJK UNIFIED IDEOGRAPH - 0xA4A1: 0x4E11, //CJK UNIFIED IDEOGRAPH - 0xA4A2: 0x4E10, //CJK UNIFIED IDEOGRAPH - 0xA4A3: 0x4E0D, //CJK UNIFIED IDEOGRAPH - 0xA4A4: 0x4E2D, //CJK UNIFIED IDEOGRAPH - 0xA4A5: 0x4E30, //CJK UNIFIED IDEOGRAPH - 0xA4A6: 0x4E39, //CJK UNIFIED IDEOGRAPH - 0xA4A7: 0x4E4B, //CJK UNIFIED IDEOGRAPH - 0xA4A8: 0x5C39, //CJK UNIFIED IDEOGRAPH - 0xA4A9: 0x4E88, //CJK UNIFIED IDEOGRAPH - 0xA4AA: 0x4E91, //CJK UNIFIED IDEOGRAPH - 0xA4AB: 0x4E95, //CJK UNIFIED IDEOGRAPH - 0xA4AC: 0x4E92, //CJK UNIFIED IDEOGRAPH - 0xA4AD: 0x4E94, //CJK UNIFIED IDEOGRAPH - 0xA4AE: 0x4EA2, //CJK UNIFIED IDEOGRAPH - 0xA4AF: 0x4EC1, //CJK UNIFIED IDEOGRAPH - 0xA4B0: 0x4EC0, //CJK UNIFIED IDEOGRAPH - 0xA4B1: 0x4EC3, //CJK UNIFIED IDEOGRAPH - 0xA4B2: 0x4EC6, //CJK UNIFIED IDEOGRAPH - 0xA4B3: 0x4EC7, //CJK UNIFIED IDEOGRAPH - 0xA4B4: 0x4ECD, //CJK UNIFIED IDEOGRAPH - 0xA4B5: 0x4ECA, //CJK UNIFIED IDEOGRAPH - 0xA4B6: 0x4ECB, //CJK UNIFIED IDEOGRAPH - 0xA4B7: 0x4EC4, //CJK UNIFIED IDEOGRAPH - 0xA4B8: 0x5143, //CJK UNIFIED IDEOGRAPH - 0xA4B9: 0x5141, //CJK UNIFIED IDEOGRAPH - 0xA4BA: 0x5167, //CJK UNIFIED IDEOGRAPH - 0xA4BB: 0x516D, //CJK UNIFIED IDEOGRAPH - 0xA4BC: 0x516E, //CJK UNIFIED IDEOGRAPH - 0xA4BD: 0x516C, //CJK UNIFIED IDEOGRAPH - 0xA4BE: 0x5197, //CJK UNIFIED IDEOGRAPH - 0xA4BF: 0x51F6, //CJK UNIFIED IDEOGRAPH - 0xA4C0: 0x5206, //CJK UNIFIED IDEOGRAPH - 0xA4C1: 0x5207, //CJK UNIFIED IDEOGRAPH - 0xA4C2: 0x5208, //CJK UNIFIED IDEOGRAPH - 0xA4C3: 0x52FB, //CJK UNIFIED IDEOGRAPH - 0xA4C4: 0x52FE, //CJK UNIFIED IDEOGRAPH - 0xA4C5: 0x52FF, //CJK UNIFIED IDEOGRAPH - 0xA4C6: 0x5316, //CJK UNIFIED IDEOGRAPH - 0xA4C7: 0x5339, //CJK UNIFIED IDEOGRAPH - 0xA4C8: 0x5348, //CJK UNIFIED IDEOGRAPH - 0xA4C9: 0x5347, //CJK UNIFIED IDEOGRAPH - 0xA4CA: 0x5345, //CJK UNIFIED IDEOGRAPH - 0xA4CB: 0x535E, //CJK UNIFIED IDEOGRAPH - 0xA4CC: 0x5384, //CJK UNIFIED IDEOGRAPH - 0xA4CD: 0x53CB, //CJK UNIFIED IDEOGRAPH - 0xA4CE: 0x53CA, //CJK UNIFIED IDEOGRAPH - 0xA4CF: 0x53CD, //CJK UNIFIED IDEOGRAPH - 0xA4D0: 0x58EC, //CJK UNIFIED IDEOGRAPH - 0xA4D1: 0x5929, //CJK UNIFIED IDEOGRAPH - 0xA4D2: 0x592B, //CJK UNIFIED IDEOGRAPH - 0xA4D3: 0x592A, //CJK UNIFIED IDEOGRAPH - 0xA4D4: 0x592D, //CJK UNIFIED IDEOGRAPH - 0xA4D5: 0x5B54, //CJK UNIFIED IDEOGRAPH - 0xA4D6: 0x5C11, //CJK UNIFIED IDEOGRAPH - 0xA4D7: 0x5C24, //CJK UNIFIED IDEOGRAPH - 0xA4D8: 0x5C3A, //CJK UNIFIED IDEOGRAPH - 0xA4D9: 0x5C6F, //CJK UNIFIED IDEOGRAPH - 0xA4DA: 0x5DF4, //CJK UNIFIED IDEOGRAPH - 0xA4DB: 0x5E7B, //CJK UNIFIED IDEOGRAPH - 0xA4DC: 0x5EFF, //CJK UNIFIED IDEOGRAPH - 0xA4DD: 0x5F14, //CJK UNIFIED IDEOGRAPH - 0xA4DE: 0x5F15, //CJK UNIFIED IDEOGRAPH - 0xA4DF: 0x5FC3, //CJK UNIFIED IDEOGRAPH - 0xA4E0: 0x6208, //CJK UNIFIED IDEOGRAPH - 0xA4E1: 0x6236, //CJK UNIFIED IDEOGRAPH - 0xA4E2: 0x624B, //CJK UNIFIED IDEOGRAPH - 0xA4E3: 0x624E, //CJK UNIFIED IDEOGRAPH - 0xA4E4: 0x652F, //CJK UNIFIED IDEOGRAPH - 0xA4E5: 0x6587, //CJK UNIFIED IDEOGRAPH - 0xA4E6: 0x6597, //CJK UNIFIED IDEOGRAPH - 0xA4E7: 0x65A4, //CJK UNIFIED IDEOGRAPH - 0xA4E8: 0x65B9, //CJK UNIFIED IDEOGRAPH - 0xA4E9: 0x65E5, //CJK UNIFIED IDEOGRAPH - 0xA4EA: 0x66F0, //CJK UNIFIED IDEOGRAPH - 0xA4EB: 0x6708, //CJK UNIFIED IDEOGRAPH - 0xA4EC: 0x6728, //CJK UNIFIED IDEOGRAPH - 0xA4ED: 0x6B20, //CJK UNIFIED IDEOGRAPH - 0xA4EE: 0x6B62, //CJK UNIFIED IDEOGRAPH - 0xA4EF: 0x6B79, //CJK UNIFIED IDEOGRAPH - 0xA4F0: 0x6BCB, //CJK UNIFIED IDEOGRAPH - 0xA4F1: 0x6BD4, //CJK UNIFIED IDEOGRAPH - 0xA4F2: 0x6BDB, //CJK UNIFIED IDEOGRAPH - 0xA4F3: 0x6C0F, //CJK UNIFIED IDEOGRAPH - 0xA4F4: 0x6C34, //CJK UNIFIED IDEOGRAPH - 0xA4F5: 0x706B, //CJK UNIFIED IDEOGRAPH - 0xA4F6: 0x722A, //CJK UNIFIED IDEOGRAPH - 0xA4F7: 0x7236, //CJK UNIFIED IDEOGRAPH - 0xA4F8: 0x723B, //CJK UNIFIED IDEOGRAPH - 0xA4F9: 0x7247, //CJK UNIFIED IDEOGRAPH - 0xA4FA: 0x7259, //CJK UNIFIED IDEOGRAPH - 0xA4FB: 0x725B, //CJK UNIFIED IDEOGRAPH - 0xA4FC: 0x72AC, //CJK UNIFIED IDEOGRAPH - 0xA4FD: 0x738B, //CJK UNIFIED IDEOGRAPH - 0xA4FE: 0x4E19, //CJK UNIFIED IDEOGRAPH - 0xA540: 0x4E16, //CJK UNIFIED IDEOGRAPH - 0xA541: 0x4E15, //CJK UNIFIED IDEOGRAPH - 0xA542: 0x4E14, //CJK UNIFIED IDEOGRAPH - 0xA543: 0x4E18, //CJK UNIFIED IDEOGRAPH - 0xA544: 0x4E3B, //CJK UNIFIED IDEOGRAPH - 0xA545: 0x4E4D, //CJK UNIFIED IDEOGRAPH - 0xA546: 0x4E4F, //CJK UNIFIED IDEOGRAPH - 0xA547: 0x4E4E, //CJK UNIFIED IDEOGRAPH - 0xA548: 0x4EE5, //CJK UNIFIED IDEOGRAPH - 0xA549: 0x4ED8, //CJK UNIFIED IDEOGRAPH - 0xA54A: 0x4ED4, //CJK UNIFIED IDEOGRAPH - 0xA54B: 0x4ED5, //CJK UNIFIED IDEOGRAPH - 0xA54C: 0x4ED6, //CJK UNIFIED IDEOGRAPH - 0xA54D: 0x4ED7, //CJK UNIFIED IDEOGRAPH - 0xA54E: 0x4EE3, //CJK UNIFIED IDEOGRAPH - 0xA54F: 0x4EE4, //CJK UNIFIED IDEOGRAPH - 0xA550: 0x4ED9, //CJK UNIFIED IDEOGRAPH - 0xA551: 0x4EDE, //CJK UNIFIED IDEOGRAPH - 0xA552: 0x5145, //CJK UNIFIED IDEOGRAPH - 0xA553: 0x5144, //CJK UNIFIED IDEOGRAPH - 0xA554: 0x5189, //CJK UNIFIED IDEOGRAPH - 0xA555: 0x518A, //CJK UNIFIED IDEOGRAPH - 0xA556: 0x51AC, //CJK UNIFIED IDEOGRAPH - 0xA557: 0x51F9, //CJK UNIFIED IDEOGRAPH - 0xA558: 0x51FA, //CJK UNIFIED IDEOGRAPH - 0xA559: 0x51F8, //CJK UNIFIED IDEOGRAPH - 0xA55A: 0x520A, //CJK UNIFIED IDEOGRAPH - 0xA55B: 0x52A0, //CJK UNIFIED IDEOGRAPH - 0xA55C: 0x529F, //CJK UNIFIED IDEOGRAPH - 0xA55D: 0x5305, //CJK UNIFIED IDEOGRAPH - 0xA55E: 0x5306, //CJK UNIFIED IDEOGRAPH - 0xA55F: 0x5317, //CJK UNIFIED IDEOGRAPH - 0xA560: 0x531D, //CJK UNIFIED IDEOGRAPH - 0xA561: 0x4EDF, //CJK UNIFIED IDEOGRAPH - 0xA562: 0x534A, //CJK UNIFIED IDEOGRAPH - 0xA563: 0x5349, //CJK UNIFIED IDEOGRAPH - 0xA564: 0x5361, //CJK UNIFIED IDEOGRAPH - 0xA565: 0x5360, //CJK UNIFIED IDEOGRAPH - 0xA566: 0x536F, //CJK UNIFIED IDEOGRAPH - 0xA567: 0x536E, //CJK UNIFIED IDEOGRAPH - 0xA568: 0x53BB, //CJK UNIFIED IDEOGRAPH - 0xA569: 0x53EF, //CJK UNIFIED IDEOGRAPH - 0xA56A: 0x53E4, //CJK UNIFIED IDEOGRAPH - 0xA56B: 0x53F3, //CJK UNIFIED IDEOGRAPH - 0xA56C: 0x53EC, //CJK UNIFIED IDEOGRAPH - 0xA56D: 0x53EE, //CJK UNIFIED IDEOGRAPH - 0xA56E: 0x53E9, //CJK UNIFIED IDEOGRAPH - 0xA56F: 0x53E8, //CJK UNIFIED IDEOGRAPH - 0xA570: 0x53FC, //CJK UNIFIED IDEOGRAPH - 0xA571: 0x53F8, //CJK UNIFIED IDEOGRAPH - 0xA572: 0x53F5, //CJK UNIFIED IDEOGRAPH - 0xA573: 0x53EB, //CJK UNIFIED IDEOGRAPH - 0xA574: 0x53E6, //CJK UNIFIED IDEOGRAPH - 0xA575: 0x53EA, //CJK UNIFIED IDEOGRAPH - 0xA576: 0x53F2, //CJK UNIFIED IDEOGRAPH - 0xA577: 0x53F1, //CJK UNIFIED IDEOGRAPH - 0xA578: 0x53F0, //CJK UNIFIED IDEOGRAPH - 0xA579: 0x53E5, //CJK UNIFIED IDEOGRAPH - 0xA57A: 0x53ED, //CJK UNIFIED IDEOGRAPH - 0xA57B: 0x53FB, //CJK UNIFIED IDEOGRAPH - 0xA57C: 0x56DB, //CJK UNIFIED IDEOGRAPH - 0xA57D: 0x56DA, //CJK UNIFIED IDEOGRAPH - 0xA57E: 0x5916, //CJK UNIFIED IDEOGRAPH - 0xA5A1: 0x592E, //CJK UNIFIED IDEOGRAPH - 0xA5A2: 0x5931, //CJK UNIFIED IDEOGRAPH - 0xA5A3: 0x5974, //CJK UNIFIED IDEOGRAPH - 0xA5A4: 0x5976, //CJK UNIFIED IDEOGRAPH - 0xA5A5: 0x5B55, //CJK UNIFIED IDEOGRAPH - 0xA5A6: 0x5B83, //CJK UNIFIED IDEOGRAPH - 0xA5A7: 0x5C3C, //CJK UNIFIED IDEOGRAPH - 0xA5A8: 0x5DE8, //CJK UNIFIED IDEOGRAPH - 0xA5A9: 0x5DE7, //CJK UNIFIED IDEOGRAPH - 0xA5AA: 0x5DE6, //CJK UNIFIED IDEOGRAPH - 0xA5AB: 0x5E02, //CJK UNIFIED IDEOGRAPH - 0xA5AC: 0x5E03, //CJK UNIFIED IDEOGRAPH - 0xA5AD: 0x5E73, //CJK UNIFIED IDEOGRAPH - 0xA5AE: 0x5E7C, //CJK UNIFIED IDEOGRAPH - 0xA5AF: 0x5F01, //CJK UNIFIED IDEOGRAPH - 0xA5B0: 0x5F18, //CJK UNIFIED IDEOGRAPH - 0xA5B1: 0x5F17, //CJK UNIFIED IDEOGRAPH - 0xA5B2: 0x5FC5, //CJK UNIFIED IDEOGRAPH - 0xA5B3: 0x620A, //CJK UNIFIED IDEOGRAPH - 0xA5B4: 0x6253, //CJK UNIFIED IDEOGRAPH - 0xA5B5: 0x6254, //CJK UNIFIED IDEOGRAPH - 0xA5B6: 0x6252, //CJK UNIFIED IDEOGRAPH - 0xA5B7: 0x6251, //CJK UNIFIED IDEOGRAPH - 0xA5B8: 0x65A5, //CJK UNIFIED IDEOGRAPH - 0xA5B9: 0x65E6, //CJK UNIFIED IDEOGRAPH - 0xA5BA: 0x672E, //CJK UNIFIED IDEOGRAPH - 0xA5BB: 0x672C, //CJK UNIFIED IDEOGRAPH - 0xA5BC: 0x672A, //CJK UNIFIED IDEOGRAPH - 0xA5BD: 0x672B, //CJK UNIFIED IDEOGRAPH - 0xA5BE: 0x672D, //CJK UNIFIED IDEOGRAPH - 0xA5BF: 0x6B63, //CJK UNIFIED IDEOGRAPH - 0xA5C0: 0x6BCD, //CJK UNIFIED IDEOGRAPH - 0xA5C1: 0x6C11, //CJK UNIFIED IDEOGRAPH - 0xA5C2: 0x6C10, //CJK UNIFIED IDEOGRAPH - 0xA5C3: 0x6C38, //CJK UNIFIED IDEOGRAPH - 0xA5C4: 0x6C41, //CJK UNIFIED IDEOGRAPH - 0xA5C5: 0x6C40, //CJK UNIFIED IDEOGRAPH - 0xA5C6: 0x6C3E, //CJK UNIFIED IDEOGRAPH - 0xA5C7: 0x72AF, //CJK UNIFIED IDEOGRAPH - 0xA5C8: 0x7384, //CJK UNIFIED IDEOGRAPH - 0xA5C9: 0x7389, //CJK UNIFIED IDEOGRAPH - 0xA5CA: 0x74DC, //CJK UNIFIED IDEOGRAPH - 0xA5CB: 0x74E6, //CJK UNIFIED IDEOGRAPH - 0xA5CC: 0x7518, //CJK UNIFIED IDEOGRAPH - 0xA5CD: 0x751F, //CJK UNIFIED IDEOGRAPH - 0xA5CE: 0x7528, //CJK UNIFIED IDEOGRAPH - 0xA5CF: 0x7529, //CJK UNIFIED IDEOGRAPH - 0xA5D0: 0x7530, //CJK UNIFIED IDEOGRAPH - 0xA5D1: 0x7531, //CJK UNIFIED IDEOGRAPH - 0xA5D2: 0x7532, //CJK UNIFIED IDEOGRAPH - 0xA5D3: 0x7533, //CJK UNIFIED IDEOGRAPH - 0xA5D4: 0x758B, //CJK UNIFIED IDEOGRAPH - 0xA5D5: 0x767D, //CJK UNIFIED IDEOGRAPH - 0xA5D6: 0x76AE, //CJK UNIFIED IDEOGRAPH - 0xA5D7: 0x76BF, //CJK UNIFIED IDEOGRAPH - 0xA5D8: 0x76EE, //CJK UNIFIED IDEOGRAPH - 0xA5D9: 0x77DB, //CJK UNIFIED IDEOGRAPH - 0xA5DA: 0x77E2, //CJK UNIFIED IDEOGRAPH - 0xA5DB: 0x77F3, //CJK UNIFIED IDEOGRAPH - 0xA5DC: 0x793A, //CJK UNIFIED IDEOGRAPH - 0xA5DD: 0x79BE, //CJK UNIFIED IDEOGRAPH - 0xA5DE: 0x7A74, //CJK UNIFIED IDEOGRAPH - 0xA5DF: 0x7ACB, //CJK UNIFIED IDEOGRAPH - 0xA5E0: 0x4E1E, //CJK UNIFIED IDEOGRAPH - 0xA5E1: 0x4E1F, //CJK UNIFIED IDEOGRAPH - 0xA5E2: 0x4E52, //CJK UNIFIED IDEOGRAPH - 0xA5E3: 0x4E53, //CJK UNIFIED IDEOGRAPH - 0xA5E4: 0x4E69, //CJK UNIFIED IDEOGRAPH - 0xA5E5: 0x4E99, //CJK UNIFIED IDEOGRAPH - 0xA5E6: 0x4EA4, //CJK UNIFIED IDEOGRAPH - 0xA5E7: 0x4EA6, //CJK UNIFIED IDEOGRAPH - 0xA5E8: 0x4EA5, //CJK UNIFIED IDEOGRAPH - 0xA5E9: 0x4EFF, //CJK UNIFIED IDEOGRAPH - 0xA5EA: 0x4F09, //CJK UNIFIED IDEOGRAPH - 0xA5EB: 0x4F19, //CJK UNIFIED IDEOGRAPH - 0xA5EC: 0x4F0A, //CJK UNIFIED IDEOGRAPH - 0xA5ED: 0x4F15, //CJK UNIFIED IDEOGRAPH - 0xA5EE: 0x4F0D, //CJK UNIFIED IDEOGRAPH - 0xA5EF: 0x4F10, //CJK UNIFIED IDEOGRAPH - 0xA5F0: 0x4F11, //CJK UNIFIED IDEOGRAPH - 0xA5F1: 0x4F0F, //CJK UNIFIED IDEOGRAPH - 0xA5F2: 0x4EF2, //CJK UNIFIED IDEOGRAPH - 0xA5F3: 0x4EF6, //CJK UNIFIED IDEOGRAPH - 0xA5F4: 0x4EFB, //CJK UNIFIED IDEOGRAPH - 0xA5F5: 0x4EF0, //CJK UNIFIED IDEOGRAPH - 0xA5F6: 0x4EF3, //CJK UNIFIED IDEOGRAPH - 0xA5F7: 0x4EFD, //CJK UNIFIED IDEOGRAPH - 0xA5F8: 0x4F01, //CJK UNIFIED IDEOGRAPH - 0xA5F9: 0x4F0B, //CJK UNIFIED IDEOGRAPH - 0xA5FA: 0x5149, //CJK UNIFIED IDEOGRAPH - 0xA5FB: 0x5147, //CJK UNIFIED IDEOGRAPH - 0xA5FC: 0x5146, //CJK UNIFIED IDEOGRAPH - 0xA5FD: 0x5148, //CJK UNIFIED IDEOGRAPH - 0xA5FE: 0x5168, //CJK UNIFIED IDEOGRAPH - 0xA640: 0x5171, //CJK UNIFIED IDEOGRAPH - 0xA641: 0x518D, //CJK UNIFIED IDEOGRAPH - 0xA642: 0x51B0, //CJK UNIFIED IDEOGRAPH - 0xA643: 0x5217, //CJK UNIFIED IDEOGRAPH - 0xA644: 0x5211, //CJK UNIFIED IDEOGRAPH - 0xA645: 0x5212, //CJK UNIFIED IDEOGRAPH - 0xA646: 0x520E, //CJK UNIFIED IDEOGRAPH - 0xA647: 0x5216, //CJK UNIFIED IDEOGRAPH - 0xA648: 0x52A3, //CJK UNIFIED IDEOGRAPH - 0xA649: 0x5308, //CJK UNIFIED IDEOGRAPH - 0xA64A: 0x5321, //CJK UNIFIED IDEOGRAPH - 0xA64B: 0x5320, //CJK UNIFIED IDEOGRAPH - 0xA64C: 0x5370, //CJK UNIFIED IDEOGRAPH - 0xA64D: 0x5371, //CJK UNIFIED IDEOGRAPH - 0xA64E: 0x5409, //CJK UNIFIED IDEOGRAPH - 0xA64F: 0x540F, //CJK UNIFIED IDEOGRAPH - 0xA650: 0x540C, //CJK UNIFIED IDEOGRAPH - 0xA651: 0x540A, //CJK UNIFIED IDEOGRAPH - 0xA652: 0x5410, //CJK UNIFIED IDEOGRAPH - 0xA653: 0x5401, //CJK UNIFIED IDEOGRAPH - 0xA654: 0x540B, //CJK UNIFIED IDEOGRAPH - 0xA655: 0x5404, //CJK UNIFIED IDEOGRAPH - 0xA656: 0x5411, //CJK UNIFIED IDEOGRAPH - 0xA657: 0x540D, //CJK UNIFIED IDEOGRAPH - 0xA658: 0x5408, //CJK UNIFIED IDEOGRAPH - 0xA659: 0x5403, //CJK UNIFIED IDEOGRAPH - 0xA65A: 0x540E, //CJK UNIFIED IDEOGRAPH - 0xA65B: 0x5406, //CJK UNIFIED IDEOGRAPH - 0xA65C: 0x5412, //CJK UNIFIED IDEOGRAPH - 0xA65D: 0x56E0, //CJK UNIFIED IDEOGRAPH - 0xA65E: 0x56DE, //CJK UNIFIED IDEOGRAPH - 0xA65F: 0x56DD, //CJK UNIFIED IDEOGRAPH - 0xA660: 0x5733, //CJK UNIFIED IDEOGRAPH - 0xA661: 0x5730, //CJK UNIFIED IDEOGRAPH - 0xA662: 0x5728, //CJK UNIFIED IDEOGRAPH - 0xA663: 0x572D, //CJK UNIFIED IDEOGRAPH - 0xA664: 0x572C, //CJK UNIFIED IDEOGRAPH - 0xA665: 0x572F, //CJK UNIFIED IDEOGRAPH - 0xA666: 0x5729, //CJK UNIFIED IDEOGRAPH - 0xA667: 0x5919, //CJK UNIFIED IDEOGRAPH - 0xA668: 0x591A, //CJK UNIFIED IDEOGRAPH - 0xA669: 0x5937, //CJK UNIFIED IDEOGRAPH - 0xA66A: 0x5938, //CJK UNIFIED IDEOGRAPH - 0xA66B: 0x5984, //CJK UNIFIED IDEOGRAPH - 0xA66C: 0x5978, //CJK UNIFIED IDEOGRAPH - 0xA66D: 0x5983, //CJK UNIFIED IDEOGRAPH - 0xA66E: 0x597D, //CJK UNIFIED IDEOGRAPH - 0xA66F: 0x5979, //CJK UNIFIED IDEOGRAPH - 0xA670: 0x5982, //CJK UNIFIED IDEOGRAPH - 0xA671: 0x5981, //CJK UNIFIED IDEOGRAPH - 0xA672: 0x5B57, //CJK UNIFIED IDEOGRAPH - 0xA673: 0x5B58, //CJK UNIFIED IDEOGRAPH - 0xA674: 0x5B87, //CJK UNIFIED IDEOGRAPH - 0xA675: 0x5B88, //CJK UNIFIED IDEOGRAPH - 0xA676: 0x5B85, //CJK UNIFIED IDEOGRAPH - 0xA677: 0x5B89, //CJK UNIFIED IDEOGRAPH - 0xA678: 0x5BFA, //CJK UNIFIED IDEOGRAPH - 0xA679: 0x5C16, //CJK UNIFIED IDEOGRAPH - 0xA67A: 0x5C79, //CJK UNIFIED IDEOGRAPH - 0xA67B: 0x5DDE, //CJK UNIFIED IDEOGRAPH - 0xA67C: 0x5E06, //CJK UNIFIED IDEOGRAPH - 0xA67D: 0x5E76, //CJK UNIFIED IDEOGRAPH - 0xA67E: 0x5E74, //CJK UNIFIED IDEOGRAPH - 0xA6A1: 0x5F0F, //CJK UNIFIED IDEOGRAPH - 0xA6A2: 0x5F1B, //CJK UNIFIED IDEOGRAPH - 0xA6A3: 0x5FD9, //CJK UNIFIED IDEOGRAPH - 0xA6A4: 0x5FD6, //CJK UNIFIED IDEOGRAPH - 0xA6A5: 0x620E, //CJK UNIFIED IDEOGRAPH - 0xA6A6: 0x620C, //CJK UNIFIED IDEOGRAPH - 0xA6A7: 0x620D, //CJK UNIFIED IDEOGRAPH - 0xA6A8: 0x6210, //CJK UNIFIED IDEOGRAPH - 0xA6A9: 0x6263, //CJK UNIFIED IDEOGRAPH - 0xA6AA: 0x625B, //CJK UNIFIED IDEOGRAPH - 0xA6AB: 0x6258, //CJK UNIFIED IDEOGRAPH - 0xA6AC: 0x6536, //CJK UNIFIED IDEOGRAPH - 0xA6AD: 0x65E9, //CJK UNIFIED IDEOGRAPH - 0xA6AE: 0x65E8, //CJK UNIFIED IDEOGRAPH - 0xA6AF: 0x65EC, //CJK UNIFIED IDEOGRAPH - 0xA6B0: 0x65ED, //CJK UNIFIED IDEOGRAPH - 0xA6B1: 0x66F2, //CJK UNIFIED IDEOGRAPH - 0xA6B2: 0x66F3, //CJK UNIFIED IDEOGRAPH - 0xA6B3: 0x6709, //CJK UNIFIED IDEOGRAPH - 0xA6B4: 0x673D, //CJK UNIFIED IDEOGRAPH - 0xA6B5: 0x6734, //CJK UNIFIED IDEOGRAPH - 0xA6B6: 0x6731, //CJK UNIFIED IDEOGRAPH - 0xA6B7: 0x6735, //CJK UNIFIED IDEOGRAPH - 0xA6B8: 0x6B21, //CJK UNIFIED IDEOGRAPH - 0xA6B9: 0x6B64, //CJK UNIFIED IDEOGRAPH - 0xA6BA: 0x6B7B, //CJK UNIFIED IDEOGRAPH - 0xA6BB: 0x6C16, //CJK UNIFIED IDEOGRAPH - 0xA6BC: 0x6C5D, //CJK UNIFIED IDEOGRAPH - 0xA6BD: 0x6C57, //CJK UNIFIED IDEOGRAPH - 0xA6BE: 0x6C59, //CJK UNIFIED IDEOGRAPH - 0xA6BF: 0x6C5F, //CJK UNIFIED IDEOGRAPH - 0xA6C0: 0x6C60, //CJK UNIFIED IDEOGRAPH - 0xA6C1: 0x6C50, //CJK UNIFIED IDEOGRAPH - 0xA6C2: 0x6C55, //CJK UNIFIED IDEOGRAPH - 0xA6C3: 0x6C61, //CJK UNIFIED IDEOGRAPH - 0xA6C4: 0x6C5B, //CJK UNIFIED IDEOGRAPH - 0xA6C5: 0x6C4D, //CJK UNIFIED IDEOGRAPH - 0xA6C6: 0x6C4E, //CJK UNIFIED IDEOGRAPH - 0xA6C7: 0x7070, //CJK UNIFIED IDEOGRAPH - 0xA6C8: 0x725F, //CJK UNIFIED IDEOGRAPH - 0xA6C9: 0x725D, //CJK UNIFIED IDEOGRAPH - 0xA6CA: 0x767E, //CJK UNIFIED IDEOGRAPH - 0xA6CB: 0x7AF9, //CJK UNIFIED IDEOGRAPH - 0xA6CC: 0x7C73, //CJK UNIFIED IDEOGRAPH - 0xA6CD: 0x7CF8, //CJK UNIFIED IDEOGRAPH - 0xA6CE: 0x7F36, //CJK UNIFIED IDEOGRAPH - 0xA6CF: 0x7F8A, //CJK UNIFIED IDEOGRAPH - 0xA6D0: 0x7FBD, //CJK UNIFIED IDEOGRAPH - 0xA6D1: 0x8001, //CJK UNIFIED IDEOGRAPH - 0xA6D2: 0x8003, //CJK UNIFIED IDEOGRAPH - 0xA6D3: 0x800C, //CJK UNIFIED IDEOGRAPH - 0xA6D4: 0x8012, //CJK UNIFIED IDEOGRAPH - 0xA6D5: 0x8033, //CJK UNIFIED IDEOGRAPH - 0xA6D6: 0x807F, //CJK UNIFIED IDEOGRAPH - 0xA6D7: 0x8089, //CJK UNIFIED IDEOGRAPH - 0xA6D8: 0x808B, //CJK UNIFIED IDEOGRAPH - 0xA6D9: 0x808C, //CJK UNIFIED IDEOGRAPH - 0xA6DA: 0x81E3, //CJK UNIFIED IDEOGRAPH - 0xA6DB: 0x81EA, //CJK UNIFIED IDEOGRAPH - 0xA6DC: 0x81F3, //CJK UNIFIED IDEOGRAPH - 0xA6DD: 0x81FC, //CJK UNIFIED IDEOGRAPH - 0xA6DE: 0x820C, //CJK UNIFIED IDEOGRAPH - 0xA6DF: 0x821B, //CJK UNIFIED IDEOGRAPH - 0xA6E0: 0x821F, //CJK UNIFIED IDEOGRAPH - 0xA6E1: 0x826E, //CJK UNIFIED IDEOGRAPH - 0xA6E2: 0x8272, //CJK UNIFIED IDEOGRAPH - 0xA6E3: 0x827E, //CJK UNIFIED IDEOGRAPH - 0xA6E4: 0x866B, //CJK UNIFIED IDEOGRAPH - 0xA6E5: 0x8840, //CJK UNIFIED IDEOGRAPH - 0xA6E6: 0x884C, //CJK UNIFIED IDEOGRAPH - 0xA6E7: 0x8863, //CJK UNIFIED IDEOGRAPH - 0xA6E8: 0x897F, //CJK UNIFIED IDEOGRAPH - 0xA6E9: 0x9621, //CJK UNIFIED IDEOGRAPH - 0xA6EA: 0x4E32, //CJK UNIFIED IDEOGRAPH - 0xA6EB: 0x4EA8, //CJK UNIFIED IDEOGRAPH - 0xA6EC: 0x4F4D, //CJK UNIFIED IDEOGRAPH - 0xA6ED: 0x4F4F, //CJK UNIFIED IDEOGRAPH - 0xA6EE: 0x4F47, //CJK UNIFIED IDEOGRAPH - 0xA6EF: 0x4F57, //CJK UNIFIED IDEOGRAPH - 0xA6F0: 0x4F5E, //CJK UNIFIED IDEOGRAPH - 0xA6F1: 0x4F34, //CJK UNIFIED IDEOGRAPH - 0xA6F2: 0x4F5B, //CJK UNIFIED IDEOGRAPH - 0xA6F3: 0x4F55, //CJK UNIFIED IDEOGRAPH - 0xA6F4: 0x4F30, //CJK UNIFIED IDEOGRAPH - 0xA6F5: 0x4F50, //CJK UNIFIED IDEOGRAPH - 0xA6F6: 0x4F51, //CJK UNIFIED IDEOGRAPH - 0xA6F7: 0x4F3D, //CJK UNIFIED IDEOGRAPH - 0xA6F8: 0x4F3A, //CJK UNIFIED IDEOGRAPH - 0xA6F9: 0x4F38, //CJK UNIFIED IDEOGRAPH - 0xA6FA: 0x4F43, //CJK UNIFIED IDEOGRAPH - 0xA6FB: 0x4F54, //CJK UNIFIED IDEOGRAPH - 0xA6FC: 0x4F3C, //CJK UNIFIED IDEOGRAPH - 0xA6FD: 0x4F46, //CJK UNIFIED IDEOGRAPH - 0xA6FE: 0x4F63, //CJK UNIFIED IDEOGRAPH - 0xA740: 0x4F5C, //CJK UNIFIED IDEOGRAPH - 0xA741: 0x4F60, //CJK UNIFIED IDEOGRAPH - 0xA742: 0x4F2F, //CJK UNIFIED IDEOGRAPH - 0xA743: 0x4F4E, //CJK UNIFIED IDEOGRAPH - 0xA744: 0x4F36, //CJK UNIFIED IDEOGRAPH - 0xA745: 0x4F59, //CJK UNIFIED IDEOGRAPH - 0xA746: 0x4F5D, //CJK UNIFIED IDEOGRAPH - 0xA747: 0x4F48, //CJK UNIFIED IDEOGRAPH - 0xA748: 0x4F5A, //CJK UNIFIED IDEOGRAPH - 0xA749: 0x514C, //CJK UNIFIED IDEOGRAPH - 0xA74A: 0x514B, //CJK UNIFIED IDEOGRAPH - 0xA74B: 0x514D, //CJK UNIFIED IDEOGRAPH - 0xA74C: 0x5175, //CJK UNIFIED IDEOGRAPH - 0xA74D: 0x51B6, //CJK UNIFIED IDEOGRAPH - 0xA74E: 0x51B7, //CJK UNIFIED IDEOGRAPH - 0xA74F: 0x5225, //CJK UNIFIED IDEOGRAPH - 0xA750: 0x5224, //CJK UNIFIED IDEOGRAPH - 0xA751: 0x5229, //CJK UNIFIED IDEOGRAPH - 0xA752: 0x522A, //CJK UNIFIED IDEOGRAPH - 0xA753: 0x5228, //CJK UNIFIED IDEOGRAPH - 0xA754: 0x52AB, //CJK UNIFIED IDEOGRAPH - 0xA755: 0x52A9, //CJK UNIFIED IDEOGRAPH - 0xA756: 0x52AA, //CJK UNIFIED IDEOGRAPH - 0xA757: 0x52AC, //CJK UNIFIED IDEOGRAPH - 0xA758: 0x5323, //CJK UNIFIED IDEOGRAPH - 0xA759: 0x5373, //CJK UNIFIED IDEOGRAPH - 0xA75A: 0x5375, //CJK UNIFIED IDEOGRAPH - 0xA75B: 0x541D, //CJK UNIFIED IDEOGRAPH - 0xA75C: 0x542D, //CJK UNIFIED IDEOGRAPH - 0xA75D: 0x541E, //CJK UNIFIED IDEOGRAPH - 0xA75E: 0x543E, //CJK UNIFIED IDEOGRAPH - 0xA75F: 0x5426, //CJK UNIFIED IDEOGRAPH - 0xA760: 0x544E, //CJK UNIFIED IDEOGRAPH - 0xA761: 0x5427, //CJK UNIFIED IDEOGRAPH - 0xA762: 0x5446, //CJK UNIFIED IDEOGRAPH - 0xA763: 0x5443, //CJK UNIFIED IDEOGRAPH - 0xA764: 0x5433, //CJK UNIFIED IDEOGRAPH - 0xA765: 0x5448, //CJK UNIFIED IDEOGRAPH - 0xA766: 0x5442, //CJK UNIFIED IDEOGRAPH - 0xA767: 0x541B, //CJK UNIFIED IDEOGRAPH - 0xA768: 0x5429, //CJK UNIFIED IDEOGRAPH - 0xA769: 0x544A, //CJK UNIFIED IDEOGRAPH - 0xA76A: 0x5439, //CJK UNIFIED IDEOGRAPH - 0xA76B: 0x543B, //CJK UNIFIED IDEOGRAPH - 0xA76C: 0x5438, //CJK UNIFIED IDEOGRAPH - 0xA76D: 0x542E, //CJK UNIFIED IDEOGRAPH - 0xA76E: 0x5435, //CJK UNIFIED IDEOGRAPH - 0xA76F: 0x5436, //CJK UNIFIED IDEOGRAPH - 0xA770: 0x5420, //CJK UNIFIED IDEOGRAPH - 0xA771: 0x543C, //CJK UNIFIED IDEOGRAPH - 0xA772: 0x5440, //CJK UNIFIED IDEOGRAPH - 0xA773: 0x5431, //CJK UNIFIED IDEOGRAPH - 0xA774: 0x542B, //CJK UNIFIED IDEOGRAPH - 0xA775: 0x541F, //CJK UNIFIED IDEOGRAPH - 0xA776: 0x542C, //CJK UNIFIED IDEOGRAPH - 0xA777: 0x56EA, //CJK UNIFIED IDEOGRAPH - 0xA778: 0x56F0, //CJK UNIFIED IDEOGRAPH - 0xA779: 0x56E4, //CJK UNIFIED IDEOGRAPH - 0xA77A: 0x56EB, //CJK UNIFIED IDEOGRAPH - 0xA77B: 0x574A, //CJK UNIFIED IDEOGRAPH - 0xA77C: 0x5751, //CJK UNIFIED IDEOGRAPH - 0xA77D: 0x5740, //CJK UNIFIED IDEOGRAPH - 0xA77E: 0x574D, //CJK UNIFIED IDEOGRAPH - 0xA7A1: 0x5747, //CJK UNIFIED IDEOGRAPH - 0xA7A2: 0x574E, //CJK UNIFIED IDEOGRAPH - 0xA7A3: 0x573E, //CJK UNIFIED IDEOGRAPH - 0xA7A4: 0x5750, //CJK UNIFIED IDEOGRAPH - 0xA7A5: 0x574F, //CJK UNIFIED IDEOGRAPH - 0xA7A6: 0x573B, //CJK UNIFIED IDEOGRAPH - 0xA7A7: 0x58EF, //CJK UNIFIED IDEOGRAPH - 0xA7A8: 0x593E, //CJK UNIFIED IDEOGRAPH - 0xA7A9: 0x599D, //CJK UNIFIED IDEOGRAPH - 0xA7AA: 0x5992, //CJK UNIFIED IDEOGRAPH - 0xA7AB: 0x59A8, //CJK UNIFIED IDEOGRAPH - 0xA7AC: 0x599E, //CJK UNIFIED IDEOGRAPH - 0xA7AD: 0x59A3, //CJK UNIFIED IDEOGRAPH - 0xA7AE: 0x5999, //CJK UNIFIED IDEOGRAPH - 0xA7AF: 0x5996, //CJK UNIFIED IDEOGRAPH - 0xA7B0: 0x598D, //CJK UNIFIED IDEOGRAPH - 0xA7B1: 0x59A4, //CJK UNIFIED IDEOGRAPH - 0xA7B2: 0x5993, //CJK UNIFIED IDEOGRAPH - 0xA7B3: 0x598A, //CJK UNIFIED IDEOGRAPH - 0xA7B4: 0x59A5, //CJK UNIFIED IDEOGRAPH - 0xA7B5: 0x5B5D, //CJK UNIFIED IDEOGRAPH - 0xA7B6: 0x5B5C, //CJK UNIFIED IDEOGRAPH - 0xA7B7: 0x5B5A, //CJK UNIFIED IDEOGRAPH - 0xA7B8: 0x5B5B, //CJK UNIFIED IDEOGRAPH - 0xA7B9: 0x5B8C, //CJK UNIFIED IDEOGRAPH - 0xA7BA: 0x5B8B, //CJK UNIFIED IDEOGRAPH - 0xA7BB: 0x5B8F, //CJK UNIFIED IDEOGRAPH - 0xA7BC: 0x5C2C, //CJK UNIFIED IDEOGRAPH - 0xA7BD: 0x5C40, //CJK UNIFIED IDEOGRAPH - 0xA7BE: 0x5C41, //CJK UNIFIED IDEOGRAPH - 0xA7BF: 0x5C3F, //CJK UNIFIED IDEOGRAPH - 0xA7C0: 0x5C3E, //CJK UNIFIED IDEOGRAPH - 0xA7C1: 0x5C90, //CJK UNIFIED IDEOGRAPH - 0xA7C2: 0x5C91, //CJK UNIFIED IDEOGRAPH - 0xA7C3: 0x5C94, //CJK UNIFIED IDEOGRAPH - 0xA7C4: 0x5C8C, //CJK UNIFIED IDEOGRAPH - 0xA7C5: 0x5DEB, //CJK UNIFIED IDEOGRAPH - 0xA7C6: 0x5E0C, //CJK UNIFIED IDEOGRAPH - 0xA7C7: 0x5E8F, //CJK UNIFIED IDEOGRAPH - 0xA7C8: 0x5E87, //CJK UNIFIED IDEOGRAPH - 0xA7C9: 0x5E8A, //CJK UNIFIED IDEOGRAPH - 0xA7CA: 0x5EF7, //CJK UNIFIED IDEOGRAPH - 0xA7CB: 0x5F04, //CJK UNIFIED IDEOGRAPH - 0xA7CC: 0x5F1F, //CJK UNIFIED IDEOGRAPH - 0xA7CD: 0x5F64, //CJK UNIFIED IDEOGRAPH - 0xA7CE: 0x5F62, //CJK UNIFIED IDEOGRAPH - 0xA7CF: 0x5F77, //CJK UNIFIED IDEOGRAPH - 0xA7D0: 0x5F79, //CJK UNIFIED IDEOGRAPH - 0xA7D1: 0x5FD8, //CJK UNIFIED IDEOGRAPH - 0xA7D2: 0x5FCC, //CJK UNIFIED IDEOGRAPH - 0xA7D3: 0x5FD7, //CJK UNIFIED IDEOGRAPH - 0xA7D4: 0x5FCD, //CJK UNIFIED IDEOGRAPH - 0xA7D5: 0x5FF1, //CJK UNIFIED IDEOGRAPH - 0xA7D6: 0x5FEB, //CJK UNIFIED IDEOGRAPH - 0xA7D7: 0x5FF8, //CJK UNIFIED IDEOGRAPH - 0xA7D8: 0x5FEA, //CJK UNIFIED IDEOGRAPH - 0xA7D9: 0x6212, //CJK UNIFIED IDEOGRAPH - 0xA7DA: 0x6211, //CJK UNIFIED IDEOGRAPH - 0xA7DB: 0x6284, //CJK UNIFIED IDEOGRAPH - 0xA7DC: 0x6297, //CJK UNIFIED IDEOGRAPH - 0xA7DD: 0x6296, //CJK UNIFIED IDEOGRAPH - 0xA7DE: 0x6280, //CJK UNIFIED IDEOGRAPH - 0xA7DF: 0x6276, //CJK UNIFIED IDEOGRAPH - 0xA7E0: 0x6289, //CJK UNIFIED IDEOGRAPH - 0xA7E1: 0x626D, //CJK UNIFIED IDEOGRAPH - 0xA7E2: 0x628A, //CJK UNIFIED IDEOGRAPH - 0xA7E3: 0x627C, //CJK UNIFIED IDEOGRAPH - 0xA7E4: 0x627E, //CJK UNIFIED IDEOGRAPH - 0xA7E5: 0x6279, //CJK UNIFIED IDEOGRAPH - 0xA7E6: 0x6273, //CJK UNIFIED IDEOGRAPH - 0xA7E7: 0x6292, //CJK UNIFIED IDEOGRAPH - 0xA7E8: 0x626F, //CJK UNIFIED IDEOGRAPH - 0xA7E9: 0x6298, //CJK UNIFIED IDEOGRAPH - 0xA7EA: 0x626E, //CJK UNIFIED IDEOGRAPH - 0xA7EB: 0x6295, //CJK UNIFIED IDEOGRAPH - 0xA7EC: 0x6293, //CJK UNIFIED IDEOGRAPH - 0xA7ED: 0x6291, //CJK UNIFIED IDEOGRAPH - 0xA7EE: 0x6286, //CJK UNIFIED IDEOGRAPH - 0xA7EF: 0x6539, //CJK UNIFIED IDEOGRAPH - 0xA7F0: 0x653B, //CJK UNIFIED IDEOGRAPH - 0xA7F1: 0x6538, //CJK UNIFIED IDEOGRAPH - 0xA7F2: 0x65F1, //CJK UNIFIED IDEOGRAPH - 0xA7F3: 0x66F4, //CJK UNIFIED IDEOGRAPH - 0xA7F4: 0x675F, //CJK UNIFIED IDEOGRAPH - 0xA7F5: 0x674E, //CJK UNIFIED IDEOGRAPH - 0xA7F6: 0x674F, //CJK UNIFIED IDEOGRAPH - 0xA7F7: 0x6750, //CJK UNIFIED IDEOGRAPH - 0xA7F8: 0x6751, //CJK UNIFIED IDEOGRAPH - 0xA7F9: 0x675C, //CJK UNIFIED IDEOGRAPH - 0xA7FA: 0x6756, //CJK UNIFIED IDEOGRAPH - 0xA7FB: 0x675E, //CJK UNIFIED IDEOGRAPH - 0xA7FC: 0x6749, //CJK UNIFIED IDEOGRAPH - 0xA7FD: 0x6746, //CJK UNIFIED IDEOGRAPH - 0xA7FE: 0x6760, //CJK UNIFIED IDEOGRAPH - 0xA840: 0x6753, //CJK UNIFIED IDEOGRAPH - 0xA841: 0x6757, //CJK UNIFIED IDEOGRAPH - 0xA842: 0x6B65, //CJK UNIFIED IDEOGRAPH - 0xA843: 0x6BCF, //CJK UNIFIED IDEOGRAPH - 0xA844: 0x6C42, //CJK UNIFIED IDEOGRAPH - 0xA845: 0x6C5E, //CJK UNIFIED IDEOGRAPH - 0xA846: 0x6C99, //CJK UNIFIED IDEOGRAPH - 0xA847: 0x6C81, //CJK UNIFIED IDEOGRAPH - 0xA848: 0x6C88, //CJK UNIFIED IDEOGRAPH - 0xA849: 0x6C89, //CJK UNIFIED IDEOGRAPH - 0xA84A: 0x6C85, //CJK UNIFIED IDEOGRAPH - 0xA84B: 0x6C9B, //CJK UNIFIED IDEOGRAPH - 0xA84C: 0x6C6A, //CJK UNIFIED IDEOGRAPH - 0xA84D: 0x6C7A, //CJK UNIFIED IDEOGRAPH - 0xA84E: 0x6C90, //CJK UNIFIED IDEOGRAPH - 0xA84F: 0x6C70, //CJK UNIFIED IDEOGRAPH - 0xA850: 0x6C8C, //CJK UNIFIED IDEOGRAPH - 0xA851: 0x6C68, //CJK UNIFIED IDEOGRAPH - 0xA852: 0x6C96, //CJK UNIFIED IDEOGRAPH - 0xA853: 0x6C92, //CJK UNIFIED IDEOGRAPH - 0xA854: 0x6C7D, //CJK UNIFIED IDEOGRAPH - 0xA855: 0x6C83, //CJK UNIFIED IDEOGRAPH - 0xA856: 0x6C72, //CJK UNIFIED IDEOGRAPH - 0xA857: 0x6C7E, //CJK UNIFIED IDEOGRAPH - 0xA858: 0x6C74, //CJK UNIFIED IDEOGRAPH - 0xA859: 0x6C86, //CJK UNIFIED IDEOGRAPH - 0xA85A: 0x6C76, //CJK UNIFIED IDEOGRAPH - 0xA85B: 0x6C8D, //CJK UNIFIED IDEOGRAPH - 0xA85C: 0x6C94, //CJK UNIFIED IDEOGRAPH - 0xA85D: 0x6C98, //CJK UNIFIED IDEOGRAPH - 0xA85E: 0x6C82, //CJK UNIFIED IDEOGRAPH - 0xA85F: 0x7076, //CJK UNIFIED IDEOGRAPH - 0xA860: 0x707C, //CJK UNIFIED IDEOGRAPH - 0xA861: 0x707D, //CJK UNIFIED IDEOGRAPH - 0xA862: 0x7078, //CJK UNIFIED IDEOGRAPH - 0xA863: 0x7262, //CJK UNIFIED IDEOGRAPH - 0xA864: 0x7261, //CJK UNIFIED IDEOGRAPH - 0xA865: 0x7260, //CJK UNIFIED IDEOGRAPH - 0xA866: 0x72C4, //CJK UNIFIED IDEOGRAPH - 0xA867: 0x72C2, //CJK UNIFIED IDEOGRAPH - 0xA868: 0x7396, //CJK UNIFIED IDEOGRAPH - 0xA869: 0x752C, //CJK UNIFIED IDEOGRAPH - 0xA86A: 0x752B, //CJK UNIFIED IDEOGRAPH - 0xA86B: 0x7537, //CJK UNIFIED IDEOGRAPH - 0xA86C: 0x7538, //CJK UNIFIED IDEOGRAPH - 0xA86D: 0x7682, //CJK UNIFIED IDEOGRAPH - 0xA86E: 0x76EF, //CJK UNIFIED IDEOGRAPH - 0xA86F: 0x77E3, //CJK UNIFIED IDEOGRAPH - 0xA870: 0x79C1, //CJK UNIFIED IDEOGRAPH - 0xA871: 0x79C0, //CJK UNIFIED IDEOGRAPH - 0xA872: 0x79BF, //CJK UNIFIED IDEOGRAPH - 0xA873: 0x7A76, //CJK UNIFIED IDEOGRAPH - 0xA874: 0x7CFB, //CJK UNIFIED IDEOGRAPH - 0xA875: 0x7F55, //CJK UNIFIED IDEOGRAPH - 0xA876: 0x8096, //CJK UNIFIED IDEOGRAPH - 0xA877: 0x8093, //CJK UNIFIED IDEOGRAPH - 0xA878: 0x809D, //CJK UNIFIED IDEOGRAPH - 0xA879: 0x8098, //CJK UNIFIED IDEOGRAPH - 0xA87A: 0x809B, //CJK UNIFIED IDEOGRAPH - 0xA87B: 0x809A, //CJK UNIFIED IDEOGRAPH - 0xA87C: 0x80B2, //CJK UNIFIED IDEOGRAPH - 0xA87D: 0x826F, //CJK UNIFIED IDEOGRAPH - 0xA87E: 0x8292, //CJK UNIFIED IDEOGRAPH - 0xA8A1: 0x828B, //CJK UNIFIED IDEOGRAPH - 0xA8A2: 0x828D, //CJK UNIFIED IDEOGRAPH - 0xA8A3: 0x898B, //CJK UNIFIED IDEOGRAPH - 0xA8A4: 0x89D2, //CJK UNIFIED IDEOGRAPH - 0xA8A5: 0x8A00, //CJK UNIFIED IDEOGRAPH - 0xA8A6: 0x8C37, //CJK UNIFIED IDEOGRAPH - 0xA8A7: 0x8C46, //CJK UNIFIED IDEOGRAPH - 0xA8A8: 0x8C55, //CJK UNIFIED IDEOGRAPH - 0xA8A9: 0x8C9D, //CJK UNIFIED IDEOGRAPH - 0xA8AA: 0x8D64, //CJK UNIFIED IDEOGRAPH - 0xA8AB: 0x8D70, //CJK UNIFIED IDEOGRAPH - 0xA8AC: 0x8DB3, //CJK UNIFIED IDEOGRAPH - 0xA8AD: 0x8EAB, //CJK UNIFIED IDEOGRAPH - 0xA8AE: 0x8ECA, //CJK UNIFIED IDEOGRAPH - 0xA8AF: 0x8F9B, //CJK UNIFIED IDEOGRAPH - 0xA8B0: 0x8FB0, //CJK UNIFIED IDEOGRAPH - 0xA8B1: 0x8FC2, //CJK UNIFIED IDEOGRAPH - 0xA8B2: 0x8FC6, //CJK UNIFIED IDEOGRAPH - 0xA8B3: 0x8FC5, //CJK UNIFIED IDEOGRAPH - 0xA8B4: 0x8FC4, //CJK UNIFIED IDEOGRAPH - 0xA8B5: 0x5DE1, //CJK UNIFIED IDEOGRAPH - 0xA8B6: 0x9091, //CJK UNIFIED IDEOGRAPH - 0xA8B7: 0x90A2, //CJK UNIFIED IDEOGRAPH - 0xA8B8: 0x90AA, //CJK UNIFIED IDEOGRAPH - 0xA8B9: 0x90A6, //CJK UNIFIED IDEOGRAPH - 0xA8BA: 0x90A3, //CJK UNIFIED IDEOGRAPH - 0xA8BB: 0x9149, //CJK UNIFIED IDEOGRAPH - 0xA8BC: 0x91C6, //CJK UNIFIED IDEOGRAPH - 0xA8BD: 0x91CC, //CJK UNIFIED IDEOGRAPH - 0xA8BE: 0x9632, //CJK UNIFIED IDEOGRAPH - 0xA8BF: 0x962E, //CJK UNIFIED IDEOGRAPH - 0xA8C0: 0x9631, //CJK UNIFIED IDEOGRAPH - 0xA8C1: 0x962A, //CJK UNIFIED IDEOGRAPH - 0xA8C2: 0x962C, //CJK UNIFIED IDEOGRAPH - 0xA8C3: 0x4E26, //CJK UNIFIED IDEOGRAPH - 0xA8C4: 0x4E56, //CJK UNIFIED IDEOGRAPH - 0xA8C5: 0x4E73, //CJK UNIFIED IDEOGRAPH - 0xA8C6: 0x4E8B, //CJK UNIFIED IDEOGRAPH - 0xA8C7: 0x4E9B, //CJK UNIFIED IDEOGRAPH - 0xA8C8: 0x4E9E, //CJK UNIFIED IDEOGRAPH - 0xA8C9: 0x4EAB, //CJK UNIFIED IDEOGRAPH - 0xA8CA: 0x4EAC, //CJK UNIFIED IDEOGRAPH - 0xA8CB: 0x4F6F, //CJK UNIFIED IDEOGRAPH - 0xA8CC: 0x4F9D, //CJK UNIFIED IDEOGRAPH - 0xA8CD: 0x4F8D, //CJK UNIFIED IDEOGRAPH - 0xA8CE: 0x4F73, //CJK UNIFIED IDEOGRAPH - 0xA8CF: 0x4F7F, //CJK UNIFIED IDEOGRAPH - 0xA8D0: 0x4F6C, //CJK UNIFIED IDEOGRAPH - 0xA8D1: 0x4F9B, //CJK UNIFIED IDEOGRAPH - 0xA8D2: 0x4F8B, //CJK UNIFIED IDEOGRAPH - 0xA8D3: 0x4F86, //CJK UNIFIED IDEOGRAPH - 0xA8D4: 0x4F83, //CJK UNIFIED IDEOGRAPH - 0xA8D5: 0x4F70, //CJK UNIFIED IDEOGRAPH - 0xA8D6: 0x4F75, //CJK UNIFIED IDEOGRAPH - 0xA8D7: 0x4F88, //CJK UNIFIED IDEOGRAPH - 0xA8D8: 0x4F69, //CJK UNIFIED IDEOGRAPH - 0xA8D9: 0x4F7B, //CJK UNIFIED IDEOGRAPH - 0xA8DA: 0x4F96, //CJK UNIFIED IDEOGRAPH - 0xA8DB: 0x4F7E, //CJK UNIFIED IDEOGRAPH - 0xA8DC: 0x4F8F, //CJK UNIFIED IDEOGRAPH - 0xA8DD: 0x4F91, //CJK UNIFIED IDEOGRAPH - 0xA8DE: 0x4F7A, //CJK UNIFIED IDEOGRAPH - 0xA8DF: 0x5154, //CJK UNIFIED IDEOGRAPH - 0xA8E0: 0x5152, //CJK UNIFIED IDEOGRAPH - 0xA8E1: 0x5155, //CJK UNIFIED IDEOGRAPH - 0xA8E2: 0x5169, //CJK UNIFIED IDEOGRAPH - 0xA8E3: 0x5177, //CJK UNIFIED IDEOGRAPH - 0xA8E4: 0x5176, //CJK UNIFIED IDEOGRAPH - 0xA8E5: 0x5178, //CJK UNIFIED IDEOGRAPH - 0xA8E6: 0x51BD, //CJK UNIFIED IDEOGRAPH - 0xA8E7: 0x51FD, //CJK UNIFIED IDEOGRAPH - 0xA8E8: 0x523B, //CJK UNIFIED IDEOGRAPH - 0xA8E9: 0x5238, //CJK UNIFIED IDEOGRAPH - 0xA8EA: 0x5237, //CJK UNIFIED IDEOGRAPH - 0xA8EB: 0x523A, //CJK UNIFIED IDEOGRAPH - 0xA8EC: 0x5230, //CJK UNIFIED IDEOGRAPH - 0xA8ED: 0x522E, //CJK UNIFIED IDEOGRAPH - 0xA8EE: 0x5236, //CJK UNIFIED IDEOGRAPH - 0xA8EF: 0x5241, //CJK UNIFIED IDEOGRAPH - 0xA8F0: 0x52BE, //CJK UNIFIED IDEOGRAPH - 0xA8F1: 0x52BB, //CJK UNIFIED IDEOGRAPH - 0xA8F2: 0x5352, //CJK UNIFIED IDEOGRAPH - 0xA8F3: 0x5354, //CJK UNIFIED IDEOGRAPH - 0xA8F4: 0x5353, //CJK UNIFIED IDEOGRAPH - 0xA8F5: 0x5351, //CJK UNIFIED IDEOGRAPH - 0xA8F6: 0x5366, //CJK UNIFIED IDEOGRAPH - 0xA8F7: 0x5377, //CJK UNIFIED IDEOGRAPH - 0xA8F8: 0x5378, //CJK UNIFIED IDEOGRAPH - 0xA8F9: 0x5379, //CJK UNIFIED IDEOGRAPH - 0xA8FA: 0x53D6, //CJK UNIFIED IDEOGRAPH - 0xA8FB: 0x53D4, //CJK UNIFIED IDEOGRAPH - 0xA8FC: 0x53D7, //CJK UNIFIED IDEOGRAPH - 0xA8FD: 0x5473, //CJK UNIFIED IDEOGRAPH - 0xA8FE: 0x5475, //CJK UNIFIED IDEOGRAPH - 0xA940: 0x5496, //CJK UNIFIED IDEOGRAPH - 0xA941: 0x5478, //CJK UNIFIED IDEOGRAPH - 0xA942: 0x5495, //CJK UNIFIED IDEOGRAPH - 0xA943: 0x5480, //CJK UNIFIED IDEOGRAPH - 0xA944: 0x547B, //CJK UNIFIED IDEOGRAPH - 0xA945: 0x5477, //CJK UNIFIED IDEOGRAPH - 0xA946: 0x5484, //CJK UNIFIED IDEOGRAPH - 0xA947: 0x5492, //CJK UNIFIED IDEOGRAPH - 0xA948: 0x5486, //CJK UNIFIED IDEOGRAPH - 0xA949: 0x547C, //CJK UNIFIED IDEOGRAPH - 0xA94A: 0x5490, //CJK UNIFIED IDEOGRAPH - 0xA94B: 0x5471, //CJK UNIFIED IDEOGRAPH - 0xA94C: 0x5476, //CJK UNIFIED IDEOGRAPH - 0xA94D: 0x548C, //CJK UNIFIED IDEOGRAPH - 0xA94E: 0x549A, //CJK UNIFIED IDEOGRAPH - 0xA94F: 0x5462, //CJK UNIFIED IDEOGRAPH - 0xA950: 0x5468, //CJK UNIFIED IDEOGRAPH - 0xA951: 0x548B, //CJK UNIFIED IDEOGRAPH - 0xA952: 0x547D, //CJK UNIFIED IDEOGRAPH - 0xA953: 0x548E, //CJK UNIFIED IDEOGRAPH - 0xA954: 0x56FA, //CJK UNIFIED IDEOGRAPH - 0xA955: 0x5783, //CJK UNIFIED IDEOGRAPH - 0xA956: 0x5777, //CJK UNIFIED IDEOGRAPH - 0xA957: 0x576A, //CJK UNIFIED IDEOGRAPH - 0xA958: 0x5769, //CJK UNIFIED IDEOGRAPH - 0xA959: 0x5761, //CJK UNIFIED IDEOGRAPH - 0xA95A: 0x5766, //CJK UNIFIED IDEOGRAPH - 0xA95B: 0x5764, //CJK UNIFIED IDEOGRAPH - 0xA95C: 0x577C, //CJK UNIFIED IDEOGRAPH - 0xA95D: 0x591C, //CJK UNIFIED IDEOGRAPH - 0xA95E: 0x5949, //CJK UNIFIED IDEOGRAPH - 0xA95F: 0x5947, //CJK UNIFIED IDEOGRAPH - 0xA960: 0x5948, //CJK UNIFIED IDEOGRAPH - 0xA961: 0x5944, //CJK UNIFIED IDEOGRAPH - 0xA962: 0x5954, //CJK UNIFIED IDEOGRAPH - 0xA963: 0x59BE, //CJK UNIFIED IDEOGRAPH - 0xA964: 0x59BB, //CJK UNIFIED IDEOGRAPH - 0xA965: 0x59D4, //CJK UNIFIED IDEOGRAPH - 0xA966: 0x59B9, //CJK UNIFIED IDEOGRAPH - 0xA967: 0x59AE, //CJK UNIFIED IDEOGRAPH - 0xA968: 0x59D1, //CJK UNIFIED IDEOGRAPH - 0xA969: 0x59C6, //CJK UNIFIED IDEOGRAPH - 0xA96A: 0x59D0, //CJK UNIFIED IDEOGRAPH - 0xA96B: 0x59CD, //CJK UNIFIED IDEOGRAPH - 0xA96C: 0x59CB, //CJK UNIFIED IDEOGRAPH - 0xA96D: 0x59D3, //CJK UNIFIED IDEOGRAPH - 0xA96E: 0x59CA, //CJK UNIFIED IDEOGRAPH - 0xA96F: 0x59AF, //CJK UNIFIED IDEOGRAPH - 0xA970: 0x59B3, //CJK UNIFIED IDEOGRAPH - 0xA971: 0x59D2, //CJK UNIFIED IDEOGRAPH - 0xA972: 0x59C5, //CJK UNIFIED IDEOGRAPH - 0xA973: 0x5B5F, //CJK UNIFIED IDEOGRAPH - 0xA974: 0x5B64, //CJK UNIFIED IDEOGRAPH - 0xA975: 0x5B63, //CJK UNIFIED IDEOGRAPH - 0xA976: 0x5B97, //CJK UNIFIED IDEOGRAPH - 0xA977: 0x5B9A, //CJK UNIFIED IDEOGRAPH - 0xA978: 0x5B98, //CJK UNIFIED IDEOGRAPH - 0xA979: 0x5B9C, //CJK UNIFIED IDEOGRAPH - 0xA97A: 0x5B99, //CJK UNIFIED IDEOGRAPH - 0xA97B: 0x5B9B, //CJK UNIFIED IDEOGRAPH - 0xA97C: 0x5C1A, //CJK UNIFIED IDEOGRAPH - 0xA97D: 0x5C48, //CJK UNIFIED IDEOGRAPH - 0xA97E: 0x5C45, //CJK UNIFIED IDEOGRAPH - 0xA9A1: 0x5C46, //CJK UNIFIED IDEOGRAPH - 0xA9A2: 0x5CB7, //CJK UNIFIED IDEOGRAPH - 0xA9A3: 0x5CA1, //CJK UNIFIED IDEOGRAPH - 0xA9A4: 0x5CB8, //CJK UNIFIED IDEOGRAPH - 0xA9A5: 0x5CA9, //CJK UNIFIED IDEOGRAPH - 0xA9A6: 0x5CAB, //CJK UNIFIED IDEOGRAPH - 0xA9A7: 0x5CB1, //CJK UNIFIED IDEOGRAPH - 0xA9A8: 0x5CB3, //CJK UNIFIED IDEOGRAPH - 0xA9A9: 0x5E18, //CJK UNIFIED IDEOGRAPH - 0xA9AA: 0x5E1A, //CJK UNIFIED IDEOGRAPH - 0xA9AB: 0x5E16, //CJK UNIFIED IDEOGRAPH - 0xA9AC: 0x5E15, //CJK UNIFIED IDEOGRAPH - 0xA9AD: 0x5E1B, //CJK UNIFIED IDEOGRAPH - 0xA9AE: 0x5E11, //CJK UNIFIED IDEOGRAPH - 0xA9AF: 0x5E78, //CJK UNIFIED IDEOGRAPH - 0xA9B0: 0x5E9A, //CJK UNIFIED IDEOGRAPH - 0xA9B1: 0x5E97, //CJK UNIFIED IDEOGRAPH - 0xA9B2: 0x5E9C, //CJK UNIFIED IDEOGRAPH - 0xA9B3: 0x5E95, //CJK UNIFIED IDEOGRAPH - 0xA9B4: 0x5E96, //CJK UNIFIED IDEOGRAPH - 0xA9B5: 0x5EF6, //CJK UNIFIED IDEOGRAPH - 0xA9B6: 0x5F26, //CJK UNIFIED IDEOGRAPH - 0xA9B7: 0x5F27, //CJK UNIFIED IDEOGRAPH - 0xA9B8: 0x5F29, //CJK UNIFIED IDEOGRAPH - 0xA9B9: 0x5F80, //CJK UNIFIED IDEOGRAPH - 0xA9BA: 0x5F81, //CJK UNIFIED IDEOGRAPH - 0xA9BB: 0x5F7F, //CJK UNIFIED IDEOGRAPH - 0xA9BC: 0x5F7C, //CJK UNIFIED IDEOGRAPH - 0xA9BD: 0x5FDD, //CJK UNIFIED IDEOGRAPH - 0xA9BE: 0x5FE0, //CJK UNIFIED IDEOGRAPH - 0xA9BF: 0x5FFD, //CJK UNIFIED IDEOGRAPH - 0xA9C0: 0x5FF5, //CJK UNIFIED IDEOGRAPH - 0xA9C1: 0x5FFF, //CJK UNIFIED IDEOGRAPH - 0xA9C2: 0x600F, //CJK UNIFIED IDEOGRAPH - 0xA9C3: 0x6014, //CJK UNIFIED IDEOGRAPH - 0xA9C4: 0x602F, //CJK UNIFIED IDEOGRAPH - 0xA9C5: 0x6035, //CJK UNIFIED IDEOGRAPH - 0xA9C6: 0x6016, //CJK UNIFIED IDEOGRAPH - 0xA9C7: 0x602A, //CJK UNIFIED IDEOGRAPH - 0xA9C8: 0x6015, //CJK UNIFIED IDEOGRAPH - 0xA9C9: 0x6021, //CJK UNIFIED IDEOGRAPH - 0xA9CA: 0x6027, //CJK UNIFIED IDEOGRAPH - 0xA9CB: 0x6029, //CJK UNIFIED IDEOGRAPH - 0xA9CC: 0x602B, //CJK UNIFIED IDEOGRAPH - 0xA9CD: 0x601B, //CJK UNIFIED IDEOGRAPH - 0xA9CE: 0x6216, //CJK UNIFIED IDEOGRAPH - 0xA9CF: 0x6215, //CJK UNIFIED IDEOGRAPH - 0xA9D0: 0x623F, //CJK UNIFIED IDEOGRAPH - 0xA9D1: 0x623E, //CJK UNIFIED IDEOGRAPH - 0xA9D2: 0x6240, //CJK UNIFIED IDEOGRAPH - 0xA9D3: 0x627F, //CJK UNIFIED IDEOGRAPH - 0xA9D4: 0x62C9, //CJK UNIFIED IDEOGRAPH - 0xA9D5: 0x62CC, //CJK UNIFIED IDEOGRAPH - 0xA9D6: 0x62C4, //CJK UNIFIED IDEOGRAPH - 0xA9D7: 0x62BF, //CJK UNIFIED IDEOGRAPH - 0xA9D8: 0x62C2, //CJK UNIFIED IDEOGRAPH - 0xA9D9: 0x62B9, //CJK UNIFIED IDEOGRAPH - 0xA9DA: 0x62D2, //CJK UNIFIED IDEOGRAPH - 0xA9DB: 0x62DB, //CJK UNIFIED IDEOGRAPH - 0xA9DC: 0x62AB, //CJK UNIFIED IDEOGRAPH - 0xA9DD: 0x62D3, //CJK UNIFIED IDEOGRAPH - 0xA9DE: 0x62D4, //CJK UNIFIED IDEOGRAPH - 0xA9DF: 0x62CB, //CJK UNIFIED IDEOGRAPH - 0xA9E0: 0x62C8, //CJK UNIFIED IDEOGRAPH - 0xA9E1: 0x62A8, //CJK UNIFIED IDEOGRAPH - 0xA9E2: 0x62BD, //CJK UNIFIED IDEOGRAPH - 0xA9E3: 0x62BC, //CJK UNIFIED IDEOGRAPH - 0xA9E4: 0x62D0, //CJK UNIFIED IDEOGRAPH - 0xA9E5: 0x62D9, //CJK UNIFIED IDEOGRAPH - 0xA9E6: 0x62C7, //CJK UNIFIED IDEOGRAPH - 0xA9E7: 0x62CD, //CJK UNIFIED IDEOGRAPH - 0xA9E8: 0x62B5, //CJK UNIFIED IDEOGRAPH - 0xA9E9: 0x62DA, //CJK UNIFIED IDEOGRAPH - 0xA9EA: 0x62B1, //CJK UNIFIED IDEOGRAPH - 0xA9EB: 0x62D8, //CJK UNIFIED IDEOGRAPH - 0xA9EC: 0x62D6, //CJK UNIFIED IDEOGRAPH - 0xA9ED: 0x62D7, //CJK UNIFIED IDEOGRAPH - 0xA9EE: 0x62C6, //CJK UNIFIED IDEOGRAPH - 0xA9EF: 0x62AC, //CJK UNIFIED IDEOGRAPH - 0xA9F0: 0x62CE, //CJK UNIFIED IDEOGRAPH - 0xA9F1: 0x653E, //CJK UNIFIED IDEOGRAPH - 0xA9F2: 0x65A7, //CJK UNIFIED IDEOGRAPH - 0xA9F3: 0x65BC, //CJK UNIFIED IDEOGRAPH - 0xA9F4: 0x65FA, //CJK UNIFIED IDEOGRAPH - 0xA9F5: 0x6614, //CJK UNIFIED IDEOGRAPH - 0xA9F6: 0x6613, //CJK UNIFIED IDEOGRAPH - 0xA9F7: 0x660C, //CJK UNIFIED IDEOGRAPH - 0xA9F8: 0x6606, //CJK UNIFIED IDEOGRAPH - 0xA9F9: 0x6602, //CJK UNIFIED IDEOGRAPH - 0xA9FA: 0x660E, //CJK UNIFIED IDEOGRAPH - 0xA9FB: 0x6600, //CJK UNIFIED IDEOGRAPH - 0xA9FC: 0x660F, //CJK UNIFIED IDEOGRAPH - 0xA9FD: 0x6615, //CJK UNIFIED IDEOGRAPH - 0xA9FE: 0x660A, //CJK UNIFIED IDEOGRAPH - 0xAA40: 0x6607, //CJK UNIFIED IDEOGRAPH - 0xAA41: 0x670D, //CJK UNIFIED IDEOGRAPH - 0xAA42: 0x670B, //CJK UNIFIED IDEOGRAPH - 0xAA43: 0x676D, //CJK UNIFIED IDEOGRAPH - 0xAA44: 0x678B, //CJK UNIFIED IDEOGRAPH - 0xAA45: 0x6795, //CJK UNIFIED IDEOGRAPH - 0xAA46: 0x6771, //CJK UNIFIED IDEOGRAPH - 0xAA47: 0x679C, //CJK UNIFIED IDEOGRAPH - 0xAA48: 0x6773, //CJK UNIFIED IDEOGRAPH - 0xAA49: 0x6777, //CJK UNIFIED IDEOGRAPH - 0xAA4A: 0x6787, //CJK UNIFIED IDEOGRAPH - 0xAA4B: 0x679D, //CJK UNIFIED IDEOGRAPH - 0xAA4C: 0x6797, //CJK UNIFIED IDEOGRAPH - 0xAA4D: 0x676F, //CJK UNIFIED IDEOGRAPH - 0xAA4E: 0x6770, //CJK UNIFIED IDEOGRAPH - 0xAA4F: 0x677F, //CJK UNIFIED IDEOGRAPH - 0xAA50: 0x6789, //CJK UNIFIED IDEOGRAPH - 0xAA51: 0x677E, //CJK UNIFIED IDEOGRAPH - 0xAA52: 0x6790, //CJK UNIFIED IDEOGRAPH - 0xAA53: 0x6775, //CJK UNIFIED IDEOGRAPH - 0xAA54: 0x679A, //CJK UNIFIED IDEOGRAPH - 0xAA55: 0x6793, //CJK UNIFIED IDEOGRAPH - 0xAA56: 0x677C, //CJK UNIFIED IDEOGRAPH - 0xAA57: 0x676A, //CJK UNIFIED IDEOGRAPH - 0xAA58: 0x6772, //CJK UNIFIED IDEOGRAPH - 0xAA59: 0x6B23, //CJK UNIFIED IDEOGRAPH - 0xAA5A: 0x6B66, //CJK UNIFIED IDEOGRAPH - 0xAA5B: 0x6B67, //CJK UNIFIED IDEOGRAPH - 0xAA5C: 0x6B7F, //CJK UNIFIED IDEOGRAPH - 0xAA5D: 0x6C13, //CJK UNIFIED IDEOGRAPH - 0xAA5E: 0x6C1B, //CJK UNIFIED IDEOGRAPH - 0xAA5F: 0x6CE3, //CJK UNIFIED IDEOGRAPH - 0xAA60: 0x6CE8, //CJK UNIFIED IDEOGRAPH - 0xAA61: 0x6CF3, //CJK UNIFIED IDEOGRAPH - 0xAA62: 0x6CB1, //CJK UNIFIED IDEOGRAPH - 0xAA63: 0x6CCC, //CJK UNIFIED IDEOGRAPH - 0xAA64: 0x6CE5, //CJK UNIFIED IDEOGRAPH - 0xAA65: 0x6CB3, //CJK UNIFIED IDEOGRAPH - 0xAA66: 0x6CBD, //CJK UNIFIED IDEOGRAPH - 0xAA67: 0x6CBE, //CJK UNIFIED IDEOGRAPH - 0xAA68: 0x6CBC, //CJK UNIFIED IDEOGRAPH - 0xAA69: 0x6CE2, //CJK UNIFIED IDEOGRAPH - 0xAA6A: 0x6CAB, //CJK UNIFIED IDEOGRAPH - 0xAA6B: 0x6CD5, //CJK UNIFIED IDEOGRAPH - 0xAA6C: 0x6CD3, //CJK UNIFIED IDEOGRAPH - 0xAA6D: 0x6CB8, //CJK UNIFIED IDEOGRAPH - 0xAA6E: 0x6CC4, //CJK UNIFIED IDEOGRAPH - 0xAA6F: 0x6CB9, //CJK UNIFIED IDEOGRAPH - 0xAA70: 0x6CC1, //CJK UNIFIED IDEOGRAPH - 0xAA71: 0x6CAE, //CJK UNIFIED IDEOGRAPH - 0xAA72: 0x6CD7, //CJK UNIFIED IDEOGRAPH - 0xAA73: 0x6CC5, //CJK UNIFIED IDEOGRAPH - 0xAA74: 0x6CF1, //CJK UNIFIED IDEOGRAPH - 0xAA75: 0x6CBF, //CJK UNIFIED IDEOGRAPH - 0xAA76: 0x6CBB, //CJK UNIFIED IDEOGRAPH - 0xAA77: 0x6CE1, //CJK UNIFIED IDEOGRAPH - 0xAA78: 0x6CDB, //CJK UNIFIED IDEOGRAPH - 0xAA79: 0x6CCA, //CJK UNIFIED IDEOGRAPH - 0xAA7A: 0x6CAC, //CJK UNIFIED IDEOGRAPH - 0xAA7B: 0x6CEF, //CJK UNIFIED IDEOGRAPH - 0xAA7C: 0x6CDC, //CJK UNIFIED IDEOGRAPH - 0xAA7D: 0x6CD6, //CJK UNIFIED IDEOGRAPH - 0xAA7E: 0x6CE0, //CJK UNIFIED IDEOGRAPH - 0xAAA1: 0x7095, //CJK UNIFIED IDEOGRAPH - 0xAAA2: 0x708E, //CJK UNIFIED IDEOGRAPH - 0xAAA3: 0x7092, //CJK UNIFIED IDEOGRAPH - 0xAAA4: 0x708A, //CJK UNIFIED IDEOGRAPH - 0xAAA5: 0x7099, //CJK UNIFIED IDEOGRAPH - 0xAAA6: 0x722C, //CJK UNIFIED IDEOGRAPH - 0xAAA7: 0x722D, //CJK UNIFIED IDEOGRAPH - 0xAAA8: 0x7238, //CJK UNIFIED IDEOGRAPH - 0xAAA9: 0x7248, //CJK UNIFIED IDEOGRAPH - 0xAAAA: 0x7267, //CJK UNIFIED IDEOGRAPH - 0xAAAB: 0x7269, //CJK UNIFIED IDEOGRAPH - 0xAAAC: 0x72C0, //CJK UNIFIED IDEOGRAPH - 0xAAAD: 0x72CE, //CJK UNIFIED IDEOGRAPH - 0xAAAE: 0x72D9, //CJK UNIFIED IDEOGRAPH - 0xAAAF: 0x72D7, //CJK UNIFIED IDEOGRAPH - 0xAAB0: 0x72D0, //CJK UNIFIED IDEOGRAPH - 0xAAB1: 0x73A9, //CJK UNIFIED IDEOGRAPH - 0xAAB2: 0x73A8, //CJK UNIFIED IDEOGRAPH - 0xAAB3: 0x739F, //CJK UNIFIED IDEOGRAPH - 0xAAB4: 0x73AB, //CJK UNIFIED IDEOGRAPH - 0xAAB5: 0x73A5, //CJK UNIFIED IDEOGRAPH - 0xAAB6: 0x753D, //CJK UNIFIED IDEOGRAPH - 0xAAB7: 0x759D, //CJK UNIFIED IDEOGRAPH - 0xAAB8: 0x7599, //CJK UNIFIED IDEOGRAPH - 0xAAB9: 0x759A, //CJK UNIFIED IDEOGRAPH - 0xAABA: 0x7684, //CJK UNIFIED IDEOGRAPH - 0xAABB: 0x76C2, //CJK UNIFIED IDEOGRAPH - 0xAABC: 0x76F2, //CJK UNIFIED IDEOGRAPH - 0xAABD: 0x76F4, //CJK UNIFIED IDEOGRAPH - 0xAABE: 0x77E5, //CJK UNIFIED IDEOGRAPH - 0xAABF: 0x77FD, //CJK UNIFIED IDEOGRAPH - 0xAAC0: 0x793E, //CJK UNIFIED IDEOGRAPH - 0xAAC1: 0x7940, //CJK UNIFIED IDEOGRAPH - 0xAAC2: 0x7941, //CJK UNIFIED IDEOGRAPH - 0xAAC3: 0x79C9, //CJK UNIFIED IDEOGRAPH - 0xAAC4: 0x79C8, //CJK UNIFIED IDEOGRAPH - 0xAAC5: 0x7A7A, //CJK UNIFIED IDEOGRAPH - 0xAAC6: 0x7A79, //CJK UNIFIED IDEOGRAPH - 0xAAC7: 0x7AFA, //CJK UNIFIED IDEOGRAPH - 0xAAC8: 0x7CFE, //CJK UNIFIED IDEOGRAPH - 0xAAC9: 0x7F54, //CJK UNIFIED IDEOGRAPH - 0xAACA: 0x7F8C, //CJK UNIFIED IDEOGRAPH - 0xAACB: 0x7F8B, //CJK UNIFIED IDEOGRAPH - 0xAACC: 0x8005, //CJK UNIFIED IDEOGRAPH - 0xAACD: 0x80BA, //CJK UNIFIED IDEOGRAPH - 0xAACE: 0x80A5, //CJK UNIFIED IDEOGRAPH - 0xAACF: 0x80A2, //CJK UNIFIED IDEOGRAPH - 0xAAD0: 0x80B1, //CJK UNIFIED IDEOGRAPH - 0xAAD1: 0x80A1, //CJK UNIFIED IDEOGRAPH - 0xAAD2: 0x80AB, //CJK UNIFIED IDEOGRAPH - 0xAAD3: 0x80A9, //CJK UNIFIED IDEOGRAPH - 0xAAD4: 0x80B4, //CJK UNIFIED IDEOGRAPH - 0xAAD5: 0x80AA, //CJK UNIFIED IDEOGRAPH - 0xAAD6: 0x80AF, //CJK UNIFIED IDEOGRAPH - 0xAAD7: 0x81E5, //CJK UNIFIED IDEOGRAPH - 0xAAD8: 0x81FE, //CJK UNIFIED IDEOGRAPH - 0xAAD9: 0x820D, //CJK UNIFIED IDEOGRAPH - 0xAADA: 0x82B3, //CJK UNIFIED IDEOGRAPH - 0xAADB: 0x829D, //CJK UNIFIED IDEOGRAPH - 0xAADC: 0x8299, //CJK UNIFIED IDEOGRAPH - 0xAADD: 0x82AD, //CJK UNIFIED IDEOGRAPH - 0xAADE: 0x82BD, //CJK UNIFIED IDEOGRAPH - 0xAADF: 0x829F, //CJK UNIFIED IDEOGRAPH - 0xAAE0: 0x82B9, //CJK UNIFIED IDEOGRAPH - 0xAAE1: 0x82B1, //CJK UNIFIED IDEOGRAPH - 0xAAE2: 0x82AC, //CJK UNIFIED IDEOGRAPH - 0xAAE3: 0x82A5, //CJK UNIFIED IDEOGRAPH - 0xAAE4: 0x82AF, //CJK UNIFIED IDEOGRAPH - 0xAAE5: 0x82B8, //CJK UNIFIED IDEOGRAPH - 0xAAE6: 0x82A3, //CJK UNIFIED IDEOGRAPH - 0xAAE7: 0x82B0, //CJK UNIFIED IDEOGRAPH - 0xAAE8: 0x82BE, //CJK UNIFIED IDEOGRAPH - 0xAAE9: 0x82B7, //CJK UNIFIED IDEOGRAPH - 0xAAEA: 0x864E, //CJK UNIFIED IDEOGRAPH - 0xAAEB: 0x8671, //CJK UNIFIED IDEOGRAPH - 0xAAEC: 0x521D, //CJK UNIFIED IDEOGRAPH - 0xAAED: 0x8868, //CJK UNIFIED IDEOGRAPH - 0xAAEE: 0x8ECB, //CJK UNIFIED IDEOGRAPH - 0xAAEF: 0x8FCE, //CJK UNIFIED IDEOGRAPH - 0xAAF0: 0x8FD4, //CJK UNIFIED IDEOGRAPH - 0xAAF1: 0x8FD1, //CJK UNIFIED IDEOGRAPH - 0xAAF2: 0x90B5, //CJK UNIFIED IDEOGRAPH - 0xAAF3: 0x90B8, //CJK UNIFIED IDEOGRAPH - 0xAAF4: 0x90B1, //CJK UNIFIED IDEOGRAPH - 0xAAF5: 0x90B6, //CJK UNIFIED IDEOGRAPH - 0xAAF6: 0x91C7, //CJK UNIFIED IDEOGRAPH - 0xAAF7: 0x91D1, //CJK UNIFIED IDEOGRAPH - 0xAAF8: 0x9577, //CJK UNIFIED IDEOGRAPH - 0xAAF9: 0x9580, //CJK UNIFIED IDEOGRAPH - 0xAAFA: 0x961C, //CJK UNIFIED IDEOGRAPH - 0xAAFB: 0x9640, //CJK UNIFIED IDEOGRAPH - 0xAAFC: 0x963F, //CJK UNIFIED IDEOGRAPH - 0xAAFD: 0x963B, //CJK UNIFIED IDEOGRAPH - 0xAAFE: 0x9644, //CJK UNIFIED IDEOGRAPH - 0xAB40: 0x9642, //CJK UNIFIED IDEOGRAPH - 0xAB41: 0x96B9, //CJK UNIFIED IDEOGRAPH - 0xAB42: 0x96E8, //CJK UNIFIED IDEOGRAPH - 0xAB43: 0x9752, //CJK UNIFIED IDEOGRAPH - 0xAB44: 0x975E, //CJK UNIFIED IDEOGRAPH - 0xAB45: 0x4E9F, //CJK UNIFIED IDEOGRAPH - 0xAB46: 0x4EAD, //CJK UNIFIED IDEOGRAPH - 0xAB47: 0x4EAE, //CJK UNIFIED IDEOGRAPH - 0xAB48: 0x4FE1, //CJK UNIFIED IDEOGRAPH - 0xAB49: 0x4FB5, //CJK UNIFIED IDEOGRAPH - 0xAB4A: 0x4FAF, //CJK UNIFIED IDEOGRAPH - 0xAB4B: 0x4FBF, //CJK UNIFIED IDEOGRAPH - 0xAB4C: 0x4FE0, //CJK UNIFIED IDEOGRAPH - 0xAB4D: 0x4FD1, //CJK UNIFIED IDEOGRAPH - 0xAB4E: 0x4FCF, //CJK UNIFIED IDEOGRAPH - 0xAB4F: 0x4FDD, //CJK UNIFIED IDEOGRAPH - 0xAB50: 0x4FC3, //CJK UNIFIED IDEOGRAPH - 0xAB51: 0x4FB6, //CJK UNIFIED IDEOGRAPH - 0xAB52: 0x4FD8, //CJK UNIFIED IDEOGRAPH - 0xAB53: 0x4FDF, //CJK UNIFIED IDEOGRAPH - 0xAB54: 0x4FCA, //CJK UNIFIED IDEOGRAPH - 0xAB55: 0x4FD7, //CJK UNIFIED IDEOGRAPH - 0xAB56: 0x4FAE, //CJK UNIFIED IDEOGRAPH - 0xAB57: 0x4FD0, //CJK UNIFIED IDEOGRAPH - 0xAB58: 0x4FC4, //CJK UNIFIED IDEOGRAPH - 0xAB59: 0x4FC2, //CJK UNIFIED IDEOGRAPH - 0xAB5A: 0x4FDA, //CJK UNIFIED IDEOGRAPH - 0xAB5B: 0x4FCE, //CJK UNIFIED IDEOGRAPH - 0xAB5C: 0x4FDE, //CJK UNIFIED IDEOGRAPH - 0xAB5D: 0x4FB7, //CJK UNIFIED IDEOGRAPH - 0xAB5E: 0x5157, //CJK UNIFIED IDEOGRAPH - 0xAB5F: 0x5192, //CJK UNIFIED IDEOGRAPH - 0xAB60: 0x5191, //CJK UNIFIED IDEOGRAPH - 0xAB61: 0x51A0, //CJK UNIFIED IDEOGRAPH - 0xAB62: 0x524E, //CJK UNIFIED IDEOGRAPH - 0xAB63: 0x5243, //CJK UNIFIED IDEOGRAPH - 0xAB64: 0x524A, //CJK UNIFIED IDEOGRAPH - 0xAB65: 0x524D, //CJK UNIFIED IDEOGRAPH - 0xAB66: 0x524C, //CJK UNIFIED IDEOGRAPH - 0xAB67: 0x524B, //CJK UNIFIED IDEOGRAPH - 0xAB68: 0x5247, //CJK UNIFIED IDEOGRAPH - 0xAB69: 0x52C7, //CJK UNIFIED IDEOGRAPH - 0xAB6A: 0x52C9, //CJK UNIFIED IDEOGRAPH - 0xAB6B: 0x52C3, //CJK UNIFIED IDEOGRAPH - 0xAB6C: 0x52C1, //CJK UNIFIED IDEOGRAPH - 0xAB6D: 0x530D, //CJK UNIFIED IDEOGRAPH - 0xAB6E: 0x5357, //CJK UNIFIED IDEOGRAPH - 0xAB6F: 0x537B, //CJK UNIFIED IDEOGRAPH - 0xAB70: 0x539A, //CJK UNIFIED IDEOGRAPH - 0xAB71: 0x53DB, //CJK UNIFIED IDEOGRAPH - 0xAB72: 0x54AC, //CJK UNIFIED IDEOGRAPH - 0xAB73: 0x54C0, //CJK UNIFIED IDEOGRAPH - 0xAB74: 0x54A8, //CJK UNIFIED IDEOGRAPH - 0xAB75: 0x54CE, //CJK UNIFIED IDEOGRAPH - 0xAB76: 0x54C9, //CJK UNIFIED IDEOGRAPH - 0xAB77: 0x54B8, //CJK UNIFIED IDEOGRAPH - 0xAB78: 0x54A6, //CJK UNIFIED IDEOGRAPH - 0xAB79: 0x54B3, //CJK UNIFIED IDEOGRAPH - 0xAB7A: 0x54C7, //CJK UNIFIED IDEOGRAPH - 0xAB7B: 0x54C2, //CJK UNIFIED IDEOGRAPH - 0xAB7C: 0x54BD, //CJK UNIFIED IDEOGRAPH - 0xAB7D: 0x54AA, //CJK UNIFIED IDEOGRAPH - 0xAB7E: 0x54C1, //CJK UNIFIED IDEOGRAPH - 0xABA1: 0x54C4, //CJK UNIFIED IDEOGRAPH - 0xABA2: 0x54C8, //CJK UNIFIED IDEOGRAPH - 0xABA3: 0x54AF, //CJK UNIFIED IDEOGRAPH - 0xABA4: 0x54AB, //CJK UNIFIED IDEOGRAPH - 0xABA5: 0x54B1, //CJK UNIFIED IDEOGRAPH - 0xABA6: 0x54BB, //CJK UNIFIED IDEOGRAPH - 0xABA7: 0x54A9, //CJK UNIFIED IDEOGRAPH - 0xABA8: 0x54A7, //CJK UNIFIED IDEOGRAPH - 0xABA9: 0x54BF, //CJK UNIFIED IDEOGRAPH - 0xABAA: 0x56FF, //CJK UNIFIED IDEOGRAPH - 0xABAB: 0x5782, //CJK UNIFIED IDEOGRAPH - 0xABAC: 0x578B, //CJK UNIFIED IDEOGRAPH - 0xABAD: 0x57A0, //CJK UNIFIED IDEOGRAPH - 0xABAE: 0x57A3, //CJK UNIFIED IDEOGRAPH - 0xABAF: 0x57A2, //CJK UNIFIED IDEOGRAPH - 0xABB0: 0x57CE, //CJK UNIFIED IDEOGRAPH - 0xABB1: 0x57AE, //CJK UNIFIED IDEOGRAPH - 0xABB2: 0x5793, //CJK UNIFIED IDEOGRAPH - 0xABB3: 0x5955, //CJK UNIFIED IDEOGRAPH - 0xABB4: 0x5951, //CJK UNIFIED IDEOGRAPH - 0xABB5: 0x594F, //CJK UNIFIED IDEOGRAPH - 0xABB6: 0x594E, //CJK UNIFIED IDEOGRAPH - 0xABB7: 0x5950, //CJK UNIFIED IDEOGRAPH - 0xABB8: 0x59DC, //CJK UNIFIED IDEOGRAPH - 0xABB9: 0x59D8, //CJK UNIFIED IDEOGRAPH - 0xABBA: 0x59FF, //CJK UNIFIED IDEOGRAPH - 0xABBB: 0x59E3, //CJK UNIFIED IDEOGRAPH - 0xABBC: 0x59E8, //CJK UNIFIED IDEOGRAPH - 0xABBD: 0x5A03, //CJK UNIFIED IDEOGRAPH - 0xABBE: 0x59E5, //CJK UNIFIED IDEOGRAPH - 0xABBF: 0x59EA, //CJK UNIFIED IDEOGRAPH - 0xABC0: 0x59DA, //CJK UNIFIED IDEOGRAPH - 0xABC1: 0x59E6, //CJK UNIFIED IDEOGRAPH - 0xABC2: 0x5A01, //CJK UNIFIED IDEOGRAPH - 0xABC3: 0x59FB, //CJK UNIFIED IDEOGRAPH - 0xABC4: 0x5B69, //CJK UNIFIED IDEOGRAPH - 0xABC5: 0x5BA3, //CJK UNIFIED IDEOGRAPH - 0xABC6: 0x5BA6, //CJK UNIFIED IDEOGRAPH - 0xABC7: 0x5BA4, //CJK UNIFIED IDEOGRAPH - 0xABC8: 0x5BA2, //CJK UNIFIED IDEOGRAPH - 0xABC9: 0x5BA5, //CJK UNIFIED IDEOGRAPH - 0xABCA: 0x5C01, //CJK UNIFIED IDEOGRAPH - 0xABCB: 0x5C4E, //CJK UNIFIED IDEOGRAPH - 0xABCC: 0x5C4F, //CJK UNIFIED IDEOGRAPH - 0xABCD: 0x5C4D, //CJK UNIFIED IDEOGRAPH - 0xABCE: 0x5C4B, //CJK UNIFIED IDEOGRAPH - 0xABCF: 0x5CD9, //CJK UNIFIED IDEOGRAPH - 0xABD0: 0x5CD2, //CJK UNIFIED IDEOGRAPH - 0xABD1: 0x5DF7, //CJK UNIFIED IDEOGRAPH - 0xABD2: 0x5E1D, //CJK UNIFIED IDEOGRAPH - 0xABD3: 0x5E25, //CJK UNIFIED IDEOGRAPH - 0xABD4: 0x5E1F, //CJK UNIFIED IDEOGRAPH - 0xABD5: 0x5E7D, //CJK UNIFIED IDEOGRAPH - 0xABD6: 0x5EA0, //CJK UNIFIED IDEOGRAPH - 0xABD7: 0x5EA6, //CJK UNIFIED IDEOGRAPH - 0xABD8: 0x5EFA, //CJK UNIFIED IDEOGRAPH - 0xABD9: 0x5F08, //CJK UNIFIED IDEOGRAPH - 0xABDA: 0x5F2D, //CJK UNIFIED IDEOGRAPH - 0xABDB: 0x5F65, //CJK UNIFIED IDEOGRAPH - 0xABDC: 0x5F88, //CJK UNIFIED IDEOGRAPH - 0xABDD: 0x5F85, //CJK UNIFIED IDEOGRAPH - 0xABDE: 0x5F8A, //CJK UNIFIED IDEOGRAPH - 0xABDF: 0x5F8B, //CJK UNIFIED IDEOGRAPH - 0xABE0: 0x5F87, //CJK UNIFIED IDEOGRAPH - 0xABE1: 0x5F8C, //CJK UNIFIED IDEOGRAPH - 0xABE2: 0x5F89, //CJK UNIFIED IDEOGRAPH - 0xABE3: 0x6012, //CJK UNIFIED IDEOGRAPH - 0xABE4: 0x601D, //CJK UNIFIED IDEOGRAPH - 0xABE5: 0x6020, //CJK UNIFIED IDEOGRAPH - 0xABE6: 0x6025, //CJK UNIFIED IDEOGRAPH - 0xABE7: 0x600E, //CJK UNIFIED IDEOGRAPH - 0xABE8: 0x6028, //CJK UNIFIED IDEOGRAPH - 0xABE9: 0x604D, //CJK UNIFIED IDEOGRAPH - 0xABEA: 0x6070, //CJK UNIFIED IDEOGRAPH - 0xABEB: 0x6068, //CJK UNIFIED IDEOGRAPH - 0xABEC: 0x6062, //CJK UNIFIED IDEOGRAPH - 0xABED: 0x6046, //CJK UNIFIED IDEOGRAPH - 0xABEE: 0x6043, //CJK UNIFIED IDEOGRAPH - 0xABEF: 0x606C, //CJK UNIFIED IDEOGRAPH - 0xABF0: 0x606B, //CJK UNIFIED IDEOGRAPH - 0xABF1: 0x606A, //CJK UNIFIED IDEOGRAPH - 0xABF2: 0x6064, //CJK UNIFIED IDEOGRAPH - 0xABF3: 0x6241, //CJK UNIFIED IDEOGRAPH - 0xABF4: 0x62DC, //CJK UNIFIED IDEOGRAPH - 0xABF5: 0x6316, //CJK UNIFIED IDEOGRAPH - 0xABF6: 0x6309, //CJK UNIFIED IDEOGRAPH - 0xABF7: 0x62FC, //CJK UNIFIED IDEOGRAPH - 0xABF8: 0x62ED, //CJK UNIFIED IDEOGRAPH - 0xABF9: 0x6301, //CJK UNIFIED IDEOGRAPH - 0xABFA: 0x62EE, //CJK UNIFIED IDEOGRAPH - 0xABFB: 0x62FD, //CJK UNIFIED IDEOGRAPH - 0xABFC: 0x6307, //CJK UNIFIED IDEOGRAPH - 0xABFD: 0x62F1, //CJK UNIFIED IDEOGRAPH - 0xABFE: 0x62F7, //CJK UNIFIED IDEOGRAPH - 0xAC40: 0x62EF, //CJK UNIFIED IDEOGRAPH - 0xAC41: 0x62EC, //CJK UNIFIED IDEOGRAPH - 0xAC42: 0x62FE, //CJK UNIFIED IDEOGRAPH - 0xAC43: 0x62F4, //CJK UNIFIED IDEOGRAPH - 0xAC44: 0x6311, //CJK UNIFIED IDEOGRAPH - 0xAC45: 0x6302, //CJK UNIFIED IDEOGRAPH - 0xAC46: 0x653F, //CJK UNIFIED IDEOGRAPH - 0xAC47: 0x6545, //CJK UNIFIED IDEOGRAPH - 0xAC48: 0x65AB, //CJK UNIFIED IDEOGRAPH - 0xAC49: 0x65BD, //CJK UNIFIED IDEOGRAPH - 0xAC4A: 0x65E2, //CJK UNIFIED IDEOGRAPH - 0xAC4B: 0x6625, //CJK UNIFIED IDEOGRAPH - 0xAC4C: 0x662D, //CJK UNIFIED IDEOGRAPH - 0xAC4D: 0x6620, //CJK UNIFIED IDEOGRAPH - 0xAC4E: 0x6627, //CJK UNIFIED IDEOGRAPH - 0xAC4F: 0x662F, //CJK UNIFIED IDEOGRAPH - 0xAC50: 0x661F, //CJK UNIFIED IDEOGRAPH - 0xAC51: 0x6628, //CJK UNIFIED IDEOGRAPH - 0xAC52: 0x6631, //CJK UNIFIED IDEOGRAPH - 0xAC53: 0x6624, //CJK UNIFIED IDEOGRAPH - 0xAC54: 0x66F7, //CJK UNIFIED IDEOGRAPH - 0xAC55: 0x67FF, //CJK UNIFIED IDEOGRAPH - 0xAC56: 0x67D3, //CJK UNIFIED IDEOGRAPH - 0xAC57: 0x67F1, //CJK UNIFIED IDEOGRAPH - 0xAC58: 0x67D4, //CJK UNIFIED IDEOGRAPH - 0xAC59: 0x67D0, //CJK UNIFIED IDEOGRAPH - 0xAC5A: 0x67EC, //CJK UNIFIED IDEOGRAPH - 0xAC5B: 0x67B6, //CJK UNIFIED IDEOGRAPH - 0xAC5C: 0x67AF, //CJK UNIFIED IDEOGRAPH - 0xAC5D: 0x67F5, //CJK UNIFIED IDEOGRAPH - 0xAC5E: 0x67E9, //CJK UNIFIED IDEOGRAPH - 0xAC5F: 0x67EF, //CJK UNIFIED IDEOGRAPH - 0xAC60: 0x67C4, //CJK UNIFIED IDEOGRAPH - 0xAC61: 0x67D1, //CJK UNIFIED IDEOGRAPH - 0xAC62: 0x67B4, //CJK UNIFIED IDEOGRAPH - 0xAC63: 0x67DA, //CJK UNIFIED IDEOGRAPH - 0xAC64: 0x67E5, //CJK UNIFIED IDEOGRAPH - 0xAC65: 0x67B8, //CJK UNIFIED IDEOGRAPH - 0xAC66: 0x67CF, //CJK UNIFIED IDEOGRAPH - 0xAC67: 0x67DE, //CJK UNIFIED IDEOGRAPH - 0xAC68: 0x67F3, //CJK UNIFIED IDEOGRAPH - 0xAC69: 0x67B0, //CJK UNIFIED IDEOGRAPH - 0xAC6A: 0x67D9, //CJK UNIFIED IDEOGRAPH - 0xAC6B: 0x67E2, //CJK UNIFIED IDEOGRAPH - 0xAC6C: 0x67DD, //CJK UNIFIED IDEOGRAPH - 0xAC6D: 0x67D2, //CJK UNIFIED IDEOGRAPH - 0xAC6E: 0x6B6A, //CJK UNIFIED IDEOGRAPH - 0xAC6F: 0x6B83, //CJK UNIFIED IDEOGRAPH - 0xAC70: 0x6B86, //CJK UNIFIED IDEOGRAPH - 0xAC71: 0x6BB5, //CJK UNIFIED IDEOGRAPH - 0xAC72: 0x6BD2, //CJK UNIFIED IDEOGRAPH - 0xAC73: 0x6BD7, //CJK UNIFIED IDEOGRAPH - 0xAC74: 0x6C1F, //CJK UNIFIED IDEOGRAPH - 0xAC75: 0x6CC9, //CJK UNIFIED IDEOGRAPH - 0xAC76: 0x6D0B, //CJK UNIFIED IDEOGRAPH - 0xAC77: 0x6D32, //CJK UNIFIED IDEOGRAPH - 0xAC78: 0x6D2A, //CJK UNIFIED IDEOGRAPH - 0xAC79: 0x6D41, //CJK UNIFIED IDEOGRAPH - 0xAC7A: 0x6D25, //CJK UNIFIED IDEOGRAPH - 0xAC7B: 0x6D0C, //CJK UNIFIED IDEOGRAPH - 0xAC7C: 0x6D31, //CJK UNIFIED IDEOGRAPH - 0xAC7D: 0x6D1E, //CJK UNIFIED IDEOGRAPH - 0xAC7E: 0x6D17, //CJK UNIFIED IDEOGRAPH - 0xACA1: 0x6D3B, //CJK UNIFIED IDEOGRAPH - 0xACA2: 0x6D3D, //CJK UNIFIED IDEOGRAPH - 0xACA3: 0x6D3E, //CJK UNIFIED IDEOGRAPH - 0xACA4: 0x6D36, //CJK UNIFIED IDEOGRAPH - 0xACA5: 0x6D1B, //CJK UNIFIED IDEOGRAPH - 0xACA6: 0x6CF5, //CJK UNIFIED IDEOGRAPH - 0xACA7: 0x6D39, //CJK UNIFIED IDEOGRAPH - 0xACA8: 0x6D27, //CJK UNIFIED IDEOGRAPH - 0xACA9: 0x6D38, //CJK UNIFIED IDEOGRAPH - 0xACAA: 0x6D29, //CJK UNIFIED IDEOGRAPH - 0xACAB: 0x6D2E, //CJK UNIFIED IDEOGRAPH - 0xACAC: 0x6D35, //CJK UNIFIED IDEOGRAPH - 0xACAD: 0x6D0E, //CJK UNIFIED IDEOGRAPH - 0xACAE: 0x6D2B, //CJK UNIFIED IDEOGRAPH - 0xACAF: 0x70AB, //CJK UNIFIED IDEOGRAPH - 0xACB0: 0x70BA, //CJK UNIFIED IDEOGRAPH - 0xACB1: 0x70B3, //CJK UNIFIED IDEOGRAPH - 0xACB2: 0x70AC, //CJK UNIFIED IDEOGRAPH - 0xACB3: 0x70AF, //CJK UNIFIED IDEOGRAPH - 0xACB4: 0x70AD, //CJK UNIFIED IDEOGRAPH - 0xACB5: 0x70B8, //CJK UNIFIED IDEOGRAPH - 0xACB6: 0x70AE, //CJK UNIFIED IDEOGRAPH - 0xACB7: 0x70A4, //CJK UNIFIED IDEOGRAPH - 0xACB8: 0x7230, //CJK UNIFIED IDEOGRAPH - 0xACB9: 0x7272, //CJK UNIFIED IDEOGRAPH - 0xACBA: 0x726F, //CJK UNIFIED IDEOGRAPH - 0xACBB: 0x7274, //CJK UNIFIED IDEOGRAPH - 0xACBC: 0x72E9, //CJK UNIFIED IDEOGRAPH - 0xACBD: 0x72E0, //CJK UNIFIED IDEOGRAPH - 0xACBE: 0x72E1, //CJK UNIFIED IDEOGRAPH - 0xACBF: 0x73B7, //CJK UNIFIED IDEOGRAPH - 0xACC0: 0x73CA, //CJK UNIFIED IDEOGRAPH - 0xACC1: 0x73BB, //CJK UNIFIED IDEOGRAPH - 0xACC2: 0x73B2, //CJK UNIFIED IDEOGRAPH - 0xACC3: 0x73CD, //CJK UNIFIED IDEOGRAPH - 0xACC4: 0x73C0, //CJK UNIFIED IDEOGRAPH - 0xACC5: 0x73B3, //CJK UNIFIED IDEOGRAPH - 0xACC6: 0x751A, //CJK UNIFIED IDEOGRAPH - 0xACC7: 0x752D, //CJK UNIFIED IDEOGRAPH - 0xACC8: 0x754F, //CJK UNIFIED IDEOGRAPH - 0xACC9: 0x754C, //CJK UNIFIED IDEOGRAPH - 0xACCA: 0x754E, //CJK UNIFIED IDEOGRAPH - 0xACCB: 0x754B, //CJK UNIFIED IDEOGRAPH - 0xACCC: 0x75AB, //CJK UNIFIED IDEOGRAPH - 0xACCD: 0x75A4, //CJK UNIFIED IDEOGRAPH - 0xACCE: 0x75A5, //CJK UNIFIED IDEOGRAPH - 0xACCF: 0x75A2, //CJK UNIFIED IDEOGRAPH - 0xACD0: 0x75A3, //CJK UNIFIED IDEOGRAPH - 0xACD1: 0x7678, //CJK UNIFIED IDEOGRAPH - 0xACD2: 0x7686, //CJK UNIFIED IDEOGRAPH - 0xACD3: 0x7687, //CJK UNIFIED IDEOGRAPH - 0xACD4: 0x7688, //CJK UNIFIED IDEOGRAPH - 0xACD5: 0x76C8, //CJK UNIFIED IDEOGRAPH - 0xACD6: 0x76C6, //CJK UNIFIED IDEOGRAPH - 0xACD7: 0x76C3, //CJK UNIFIED IDEOGRAPH - 0xACD8: 0x76C5, //CJK UNIFIED IDEOGRAPH - 0xACD9: 0x7701, //CJK UNIFIED IDEOGRAPH - 0xACDA: 0x76F9, //CJK UNIFIED IDEOGRAPH - 0xACDB: 0x76F8, //CJK UNIFIED IDEOGRAPH - 0xACDC: 0x7709, //CJK UNIFIED IDEOGRAPH - 0xACDD: 0x770B, //CJK UNIFIED IDEOGRAPH - 0xACDE: 0x76FE, //CJK UNIFIED IDEOGRAPH - 0xACDF: 0x76FC, //CJK UNIFIED IDEOGRAPH - 0xACE0: 0x7707, //CJK UNIFIED IDEOGRAPH - 0xACE1: 0x77DC, //CJK UNIFIED IDEOGRAPH - 0xACE2: 0x7802, //CJK UNIFIED IDEOGRAPH - 0xACE3: 0x7814, //CJK UNIFIED IDEOGRAPH - 0xACE4: 0x780C, //CJK UNIFIED IDEOGRAPH - 0xACE5: 0x780D, //CJK UNIFIED IDEOGRAPH - 0xACE6: 0x7946, //CJK UNIFIED IDEOGRAPH - 0xACE7: 0x7949, //CJK UNIFIED IDEOGRAPH - 0xACE8: 0x7948, //CJK UNIFIED IDEOGRAPH - 0xACE9: 0x7947, //CJK UNIFIED IDEOGRAPH - 0xACEA: 0x79B9, //CJK UNIFIED IDEOGRAPH - 0xACEB: 0x79BA, //CJK UNIFIED IDEOGRAPH - 0xACEC: 0x79D1, //CJK UNIFIED IDEOGRAPH - 0xACED: 0x79D2, //CJK UNIFIED IDEOGRAPH - 0xACEE: 0x79CB, //CJK UNIFIED IDEOGRAPH - 0xACEF: 0x7A7F, //CJK UNIFIED IDEOGRAPH - 0xACF0: 0x7A81, //CJK UNIFIED IDEOGRAPH - 0xACF1: 0x7AFF, //CJK UNIFIED IDEOGRAPH - 0xACF2: 0x7AFD, //CJK UNIFIED IDEOGRAPH - 0xACF3: 0x7C7D, //CJK UNIFIED IDEOGRAPH - 0xACF4: 0x7D02, //CJK UNIFIED IDEOGRAPH - 0xACF5: 0x7D05, //CJK UNIFIED IDEOGRAPH - 0xACF6: 0x7D00, //CJK UNIFIED IDEOGRAPH - 0xACF7: 0x7D09, //CJK UNIFIED IDEOGRAPH - 0xACF8: 0x7D07, //CJK UNIFIED IDEOGRAPH - 0xACF9: 0x7D04, //CJK UNIFIED IDEOGRAPH - 0xACFA: 0x7D06, //CJK UNIFIED IDEOGRAPH - 0xACFB: 0x7F38, //CJK UNIFIED IDEOGRAPH - 0xACFC: 0x7F8E, //CJK UNIFIED IDEOGRAPH - 0xACFD: 0x7FBF, //CJK UNIFIED IDEOGRAPH - 0xACFE: 0x8004, //CJK UNIFIED IDEOGRAPH - 0xAD40: 0x8010, //CJK UNIFIED IDEOGRAPH - 0xAD41: 0x800D, //CJK UNIFIED IDEOGRAPH - 0xAD42: 0x8011, //CJK UNIFIED IDEOGRAPH - 0xAD43: 0x8036, //CJK UNIFIED IDEOGRAPH - 0xAD44: 0x80D6, //CJK UNIFIED IDEOGRAPH - 0xAD45: 0x80E5, //CJK UNIFIED IDEOGRAPH - 0xAD46: 0x80DA, //CJK UNIFIED IDEOGRAPH - 0xAD47: 0x80C3, //CJK UNIFIED IDEOGRAPH - 0xAD48: 0x80C4, //CJK UNIFIED IDEOGRAPH - 0xAD49: 0x80CC, //CJK UNIFIED IDEOGRAPH - 0xAD4A: 0x80E1, //CJK UNIFIED IDEOGRAPH - 0xAD4B: 0x80DB, //CJK UNIFIED IDEOGRAPH - 0xAD4C: 0x80CE, //CJK UNIFIED IDEOGRAPH - 0xAD4D: 0x80DE, //CJK UNIFIED IDEOGRAPH - 0xAD4E: 0x80E4, //CJK UNIFIED IDEOGRAPH - 0xAD4F: 0x80DD, //CJK UNIFIED IDEOGRAPH - 0xAD50: 0x81F4, //CJK UNIFIED IDEOGRAPH - 0xAD51: 0x8222, //CJK UNIFIED IDEOGRAPH - 0xAD52: 0x82E7, //CJK UNIFIED IDEOGRAPH - 0xAD53: 0x8303, //CJK UNIFIED IDEOGRAPH - 0xAD54: 0x8305, //CJK UNIFIED IDEOGRAPH - 0xAD55: 0x82E3, //CJK UNIFIED IDEOGRAPH - 0xAD56: 0x82DB, //CJK UNIFIED IDEOGRAPH - 0xAD57: 0x82E6, //CJK UNIFIED IDEOGRAPH - 0xAD58: 0x8304, //CJK UNIFIED IDEOGRAPH - 0xAD59: 0x82E5, //CJK UNIFIED IDEOGRAPH - 0xAD5A: 0x8302, //CJK UNIFIED IDEOGRAPH - 0xAD5B: 0x8309, //CJK UNIFIED IDEOGRAPH - 0xAD5C: 0x82D2, //CJK UNIFIED IDEOGRAPH - 0xAD5D: 0x82D7, //CJK UNIFIED IDEOGRAPH - 0xAD5E: 0x82F1, //CJK UNIFIED IDEOGRAPH - 0xAD5F: 0x8301, //CJK UNIFIED IDEOGRAPH - 0xAD60: 0x82DC, //CJK UNIFIED IDEOGRAPH - 0xAD61: 0x82D4, //CJK UNIFIED IDEOGRAPH - 0xAD62: 0x82D1, //CJK UNIFIED IDEOGRAPH - 0xAD63: 0x82DE, //CJK UNIFIED IDEOGRAPH - 0xAD64: 0x82D3, //CJK UNIFIED IDEOGRAPH - 0xAD65: 0x82DF, //CJK UNIFIED IDEOGRAPH - 0xAD66: 0x82EF, //CJK UNIFIED IDEOGRAPH - 0xAD67: 0x8306, //CJK UNIFIED IDEOGRAPH - 0xAD68: 0x8650, //CJK UNIFIED IDEOGRAPH - 0xAD69: 0x8679, //CJK UNIFIED IDEOGRAPH - 0xAD6A: 0x867B, //CJK UNIFIED IDEOGRAPH - 0xAD6B: 0x867A, //CJK UNIFIED IDEOGRAPH - 0xAD6C: 0x884D, //CJK UNIFIED IDEOGRAPH - 0xAD6D: 0x886B, //CJK UNIFIED IDEOGRAPH - 0xAD6E: 0x8981, //CJK UNIFIED IDEOGRAPH - 0xAD6F: 0x89D4, //CJK UNIFIED IDEOGRAPH - 0xAD70: 0x8A08, //CJK UNIFIED IDEOGRAPH - 0xAD71: 0x8A02, //CJK UNIFIED IDEOGRAPH - 0xAD72: 0x8A03, //CJK UNIFIED IDEOGRAPH - 0xAD73: 0x8C9E, //CJK UNIFIED IDEOGRAPH - 0xAD74: 0x8CA0, //CJK UNIFIED IDEOGRAPH - 0xAD75: 0x8D74, //CJK UNIFIED IDEOGRAPH - 0xAD76: 0x8D73, //CJK UNIFIED IDEOGRAPH - 0xAD77: 0x8DB4, //CJK UNIFIED IDEOGRAPH - 0xAD78: 0x8ECD, //CJK UNIFIED IDEOGRAPH - 0xAD79: 0x8ECC, //CJK UNIFIED IDEOGRAPH - 0xAD7A: 0x8FF0, //CJK UNIFIED IDEOGRAPH - 0xAD7B: 0x8FE6, //CJK UNIFIED IDEOGRAPH - 0xAD7C: 0x8FE2, //CJK UNIFIED IDEOGRAPH - 0xAD7D: 0x8FEA, //CJK UNIFIED IDEOGRAPH - 0xAD7E: 0x8FE5, //CJK UNIFIED IDEOGRAPH - 0xADA1: 0x8FED, //CJK UNIFIED IDEOGRAPH - 0xADA2: 0x8FEB, //CJK UNIFIED IDEOGRAPH - 0xADA3: 0x8FE4, //CJK UNIFIED IDEOGRAPH - 0xADA4: 0x8FE8, //CJK UNIFIED IDEOGRAPH - 0xADA5: 0x90CA, //CJK UNIFIED IDEOGRAPH - 0xADA6: 0x90CE, //CJK UNIFIED IDEOGRAPH - 0xADA7: 0x90C1, //CJK UNIFIED IDEOGRAPH - 0xADA8: 0x90C3, //CJK UNIFIED IDEOGRAPH - 0xADA9: 0x914B, //CJK UNIFIED IDEOGRAPH - 0xADAA: 0x914A, //CJK UNIFIED IDEOGRAPH - 0xADAB: 0x91CD, //CJK UNIFIED IDEOGRAPH - 0xADAC: 0x9582, //CJK UNIFIED IDEOGRAPH - 0xADAD: 0x9650, //CJK UNIFIED IDEOGRAPH - 0xADAE: 0x964B, //CJK UNIFIED IDEOGRAPH - 0xADAF: 0x964C, //CJK UNIFIED IDEOGRAPH - 0xADB0: 0x964D, //CJK UNIFIED IDEOGRAPH - 0xADB1: 0x9762, //CJK UNIFIED IDEOGRAPH - 0xADB2: 0x9769, //CJK UNIFIED IDEOGRAPH - 0xADB3: 0x97CB, //CJK UNIFIED IDEOGRAPH - 0xADB4: 0x97ED, //CJK UNIFIED IDEOGRAPH - 0xADB5: 0x97F3, //CJK UNIFIED IDEOGRAPH - 0xADB6: 0x9801, //CJK UNIFIED IDEOGRAPH - 0xADB7: 0x98A8, //CJK UNIFIED IDEOGRAPH - 0xADB8: 0x98DB, //CJK UNIFIED IDEOGRAPH - 0xADB9: 0x98DF, //CJK UNIFIED IDEOGRAPH - 0xADBA: 0x9996, //CJK UNIFIED IDEOGRAPH - 0xADBB: 0x9999, //CJK UNIFIED IDEOGRAPH - 0xADBC: 0x4E58, //CJK UNIFIED IDEOGRAPH - 0xADBD: 0x4EB3, //CJK UNIFIED IDEOGRAPH - 0xADBE: 0x500C, //CJK UNIFIED IDEOGRAPH - 0xADBF: 0x500D, //CJK UNIFIED IDEOGRAPH - 0xADC0: 0x5023, //CJK UNIFIED IDEOGRAPH - 0xADC1: 0x4FEF, //CJK UNIFIED IDEOGRAPH - 0xADC2: 0x5026, //CJK UNIFIED IDEOGRAPH - 0xADC3: 0x5025, //CJK UNIFIED IDEOGRAPH - 0xADC4: 0x4FF8, //CJK UNIFIED IDEOGRAPH - 0xADC5: 0x5029, //CJK UNIFIED IDEOGRAPH - 0xADC6: 0x5016, //CJK UNIFIED IDEOGRAPH - 0xADC7: 0x5006, //CJK UNIFIED IDEOGRAPH - 0xADC8: 0x503C, //CJK UNIFIED IDEOGRAPH - 0xADC9: 0x501F, //CJK UNIFIED IDEOGRAPH - 0xADCA: 0x501A, //CJK UNIFIED IDEOGRAPH - 0xADCB: 0x5012, //CJK UNIFIED IDEOGRAPH - 0xADCC: 0x5011, //CJK UNIFIED IDEOGRAPH - 0xADCD: 0x4FFA, //CJK UNIFIED IDEOGRAPH - 0xADCE: 0x5000, //CJK UNIFIED IDEOGRAPH - 0xADCF: 0x5014, //CJK UNIFIED IDEOGRAPH - 0xADD0: 0x5028, //CJK UNIFIED IDEOGRAPH - 0xADD1: 0x4FF1, //CJK UNIFIED IDEOGRAPH - 0xADD2: 0x5021, //CJK UNIFIED IDEOGRAPH - 0xADD3: 0x500B, //CJK UNIFIED IDEOGRAPH - 0xADD4: 0x5019, //CJK UNIFIED IDEOGRAPH - 0xADD5: 0x5018, //CJK UNIFIED IDEOGRAPH - 0xADD6: 0x4FF3, //CJK UNIFIED IDEOGRAPH - 0xADD7: 0x4FEE, //CJK UNIFIED IDEOGRAPH - 0xADD8: 0x502D, //CJK UNIFIED IDEOGRAPH - 0xADD9: 0x502A, //CJK UNIFIED IDEOGRAPH - 0xADDA: 0x4FFE, //CJK UNIFIED IDEOGRAPH - 0xADDB: 0x502B, //CJK UNIFIED IDEOGRAPH - 0xADDC: 0x5009, //CJK UNIFIED IDEOGRAPH - 0xADDD: 0x517C, //CJK UNIFIED IDEOGRAPH - 0xADDE: 0x51A4, //CJK UNIFIED IDEOGRAPH - 0xADDF: 0x51A5, //CJK UNIFIED IDEOGRAPH - 0xADE0: 0x51A2, //CJK UNIFIED IDEOGRAPH - 0xADE1: 0x51CD, //CJK UNIFIED IDEOGRAPH - 0xADE2: 0x51CC, //CJK UNIFIED IDEOGRAPH - 0xADE3: 0x51C6, //CJK UNIFIED IDEOGRAPH - 0xADE4: 0x51CB, //CJK UNIFIED IDEOGRAPH - 0xADE5: 0x5256, //CJK UNIFIED IDEOGRAPH - 0xADE6: 0x525C, //CJK UNIFIED IDEOGRAPH - 0xADE7: 0x5254, //CJK UNIFIED IDEOGRAPH - 0xADE8: 0x525B, //CJK UNIFIED IDEOGRAPH - 0xADE9: 0x525D, //CJK UNIFIED IDEOGRAPH - 0xADEA: 0x532A, //CJK UNIFIED IDEOGRAPH - 0xADEB: 0x537F, //CJK UNIFIED IDEOGRAPH - 0xADEC: 0x539F, //CJK UNIFIED IDEOGRAPH - 0xADED: 0x539D, //CJK UNIFIED IDEOGRAPH - 0xADEE: 0x53DF, //CJK UNIFIED IDEOGRAPH - 0xADEF: 0x54E8, //CJK UNIFIED IDEOGRAPH - 0xADF0: 0x5510, //CJK UNIFIED IDEOGRAPH - 0xADF1: 0x5501, //CJK UNIFIED IDEOGRAPH - 0xADF2: 0x5537, //CJK UNIFIED IDEOGRAPH - 0xADF3: 0x54FC, //CJK UNIFIED IDEOGRAPH - 0xADF4: 0x54E5, //CJK UNIFIED IDEOGRAPH - 0xADF5: 0x54F2, //CJK UNIFIED IDEOGRAPH - 0xADF6: 0x5506, //CJK UNIFIED IDEOGRAPH - 0xADF7: 0x54FA, //CJK UNIFIED IDEOGRAPH - 0xADF8: 0x5514, //CJK UNIFIED IDEOGRAPH - 0xADF9: 0x54E9, //CJK UNIFIED IDEOGRAPH - 0xADFA: 0x54ED, //CJK UNIFIED IDEOGRAPH - 0xADFB: 0x54E1, //CJK UNIFIED IDEOGRAPH - 0xADFC: 0x5509, //CJK UNIFIED IDEOGRAPH - 0xADFD: 0x54EE, //CJK UNIFIED IDEOGRAPH - 0xADFE: 0x54EA, //CJK UNIFIED IDEOGRAPH - 0xAE40: 0x54E6, //CJK UNIFIED IDEOGRAPH - 0xAE41: 0x5527, //CJK UNIFIED IDEOGRAPH - 0xAE42: 0x5507, //CJK UNIFIED IDEOGRAPH - 0xAE43: 0x54FD, //CJK UNIFIED IDEOGRAPH - 0xAE44: 0x550F, //CJK UNIFIED IDEOGRAPH - 0xAE45: 0x5703, //CJK UNIFIED IDEOGRAPH - 0xAE46: 0x5704, //CJK UNIFIED IDEOGRAPH - 0xAE47: 0x57C2, //CJK UNIFIED IDEOGRAPH - 0xAE48: 0x57D4, //CJK UNIFIED IDEOGRAPH - 0xAE49: 0x57CB, //CJK UNIFIED IDEOGRAPH - 0xAE4A: 0x57C3, //CJK UNIFIED IDEOGRAPH - 0xAE4B: 0x5809, //CJK UNIFIED IDEOGRAPH - 0xAE4C: 0x590F, //CJK UNIFIED IDEOGRAPH - 0xAE4D: 0x5957, //CJK UNIFIED IDEOGRAPH - 0xAE4E: 0x5958, //CJK UNIFIED IDEOGRAPH - 0xAE4F: 0x595A, //CJK UNIFIED IDEOGRAPH - 0xAE50: 0x5A11, //CJK UNIFIED IDEOGRAPH - 0xAE51: 0x5A18, //CJK UNIFIED IDEOGRAPH - 0xAE52: 0x5A1C, //CJK UNIFIED IDEOGRAPH - 0xAE53: 0x5A1F, //CJK UNIFIED IDEOGRAPH - 0xAE54: 0x5A1B, //CJK UNIFIED IDEOGRAPH - 0xAE55: 0x5A13, //CJK UNIFIED IDEOGRAPH - 0xAE56: 0x59EC, //CJK UNIFIED IDEOGRAPH - 0xAE57: 0x5A20, //CJK UNIFIED IDEOGRAPH - 0xAE58: 0x5A23, //CJK UNIFIED IDEOGRAPH - 0xAE59: 0x5A29, //CJK UNIFIED IDEOGRAPH - 0xAE5A: 0x5A25, //CJK UNIFIED IDEOGRAPH - 0xAE5B: 0x5A0C, //CJK UNIFIED IDEOGRAPH - 0xAE5C: 0x5A09, //CJK UNIFIED IDEOGRAPH - 0xAE5D: 0x5B6B, //CJK UNIFIED IDEOGRAPH - 0xAE5E: 0x5C58, //CJK UNIFIED IDEOGRAPH - 0xAE5F: 0x5BB0, //CJK UNIFIED IDEOGRAPH - 0xAE60: 0x5BB3, //CJK UNIFIED IDEOGRAPH - 0xAE61: 0x5BB6, //CJK UNIFIED IDEOGRAPH - 0xAE62: 0x5BB4, //CJK UNIFIED IDEOGRAPH - 0xAE63: 0x5BAE, //CJK UNIFIED IDEOGRAPH - 0xAE64: 0x5BB5, //CJK UNIFIED IDEOGRAPH - 0xAE65: 0x5BB9, //CJK UNIFIED IDEOGRAPH - 0xAE66: 0x5BB8, //CJK UNIFIED IDEOGRAPH - 0xAE67: 0x5C04, //CJK UNIFIED IDEOGRAPH - 0xAE68: 0x5C51, //CJK UNIFIED IDEOGRAPH - 0xAE69: 0x5C55, //CJK UNIFIED IDEOGRAPH - 0xAE6A: 0x5C50, //CJK UNIFIED IDEOGRAPH - 0xAE6B: 0x5CED, //CJK UNIFIED IDEOGRAPH - 0xAE6C: 0x5CFD, //CJK UNIFIED IDEOGRAPH - 0xAE6D: 0x5CFB, //CJK UNIFIED IDEOGRAPH - 0xAE6E: 0x5CEA, //CJK UNIFIED IDEOGRAPH - 0xAE6F: 0x5CE8, //CJK UNIFIED IDEOGRAPH - 0xAE70: 0x5CF0, //CJK UNIFIED IDEOGRAPH - 0xAE71: 0x5CF6, //CJK UNIFIED IDEOGRAPH - 0xAE72: 0x5D01, //CJK UNIFIED IDEOGRAPH - 0xAE73: 0x5CF4, //CJK UNIFIED IDEOGRAPH - 0xAE74: 0x5DEE, //CJK UNIFIED IDEOGRAPH - 0xAE75: 0x5E2D, //CJK UNIFIED IDEOGRAPH - 0xAE76: 0x5E2B, //CJK UNIFIED IDEOGRAPH - 0xAE77: 0x5EAB, //CJK UNIFIED IDEOGRAPH - 0xAE78: 0x5EAD, //CJK UNIFIED IDEOGRAPH - 0xAE79: 0x5EA7, //CJK UNIFIED IDEOGRAPH - 0xAE7A: 0x5F31, //CJK UNIFIED IDEOGRAPH - 0xAE7B: 0x5F92, //CJK UNIFIED IDEOGRAPH - 0xAE7C: 0x5F91, //CJK UNIFIED IDEOGRAPH - 0xAE7D: 0x5F90, //CJK UNIFIED IDEOGRAPH - 0xAE7E: 0x6059, //CJK UNIFIED IDEOGRAPH - 0xAEA1: 0x6063, //CJK UNIFIED IDEOGRAPH - 0xAEA2: 0x6065, //CJK UNIFIED IDEOGRAPH - 0xAEA3: 0x6050, //CJK UNIFIED IDEOGRAPH - 0xAEA4: 0x6055, //CJK UNIFIED IDEOGRAPH - 0xAEA5: 0x606D, //CJK UNIFIED IDEOGRAPH - 0xAEA6: 0x6069, //CJK UNIFIED IDEOGRAPH - 0xAEA7: 0x606F, //CJK UNIFIED IDEOGRAPH - 0xAEA8: 0x6084, //CJK UNIFIED IDEOGRAPH - 0xAEA9: 0x609F, //CJK UNIFIED IDEOGRAPH - 0xAEAA: 0x609A, //CJK UNIFIED IDEOGRAPH - 0xAEAB: 0x608D, //CJK UNIFIED IDEOGRAPH - 0xAEAC: 0x6094, //CJK UNIFIED IDEOGRAPH - 0xAEAD: 0x608C, //CJK UNIFIED IDEOGRAPH - 0xAEAE: 0x6085, //CJK UNIFIED IDEOGRAPH - 0xAEAF: 0x6096, //CJK UNIFIED IDEOGRAPH - 0xAEB0: 0x6247, //CJK UNIFIED IDEOGRAPH - 0xAEB1: 0x62F3, //CJK UNIFIED IDEOGRAPH - 0xAEB2: 0x6308, //CJK UNIFIED IDEOGRAPH - 0xAEB3: 0x62FF, //CJK UNIFIED IDEOGRAPH - 0xAEB4: 0x634E, //CJK UNIFIED IDEOGRAPH - 0xAEB5: 0x633E, //CJK UNIFIED IDEOGRAPH - 0xAEB6: 0x632F, //CJK UNIFIED IDEOGRAPH - 0xAEB7: 0x6355, //CJK UNIFIED IDEOGRAPH - 0xAEB8: 0x6342, //CJK UNIFIED IDEOGRAPH - 0xAEB9: 0x6346, //CJK UNIFIED IDEOGRAPH - 0xAEBA: 0x634F, //CJK UNIFIED IDEOGRAPH - 0xAEBB: 0x6349, //CJK UNIFIED IDEOGRAPH - 0xAEBC: 0x633A, //CJK UNIFIED IDEOGRAPH - 0xAEBD: 0x6350, //CJK UNIFIED IDEOGRAPH - 0xAEBE: 0x633D, //CJK UNIFIED IDEOGRAPH - 0xAEBF: 0x632A, //CJK UNIFIED IDEOGRAPH - 0xAEC0: 0x632B, //CJK UNIFIED IDEOGRAPH - 0xAEC1: 0x6328, //CJK UNIFIED IDEOGRAPH - 0xAEC2: 0x634D, //CJK UNIFIED IDEOGRAPH - 0xAEC3: 0x634C, //CJK UNIFIED IDEOGRAPH - 0xAEC4: 0x6548, //CJK UNIFIED IDEOGRAPH - 0xAEC5: 0x6549, //CJK UNIFIED IDEOGRAPH - 0xAEC6: 0x6599, //CJK UNIFIED IDEOGRAPH - 0xAEC7: 0x65C1, //CJK UNIFIED IDEOGRAPH - 0xAEC8: 0x65C5, //CJK UNIFIED IDEOGRAPH - 0xAEC9: 0x6642, //CJK UNIFIED IDEOGRAPH - 0xAECA: 0x6649, //CJK UNIFIED IDEOGRAPH - 0xAECB: 0x664F, //CJK UNIFIED IDEOGRAPH - 0xAECC: 0x6643, //CJK UNIFIED IDEOGRAPH - 0xAECD: 0x6652, //CJK UNIFIED IDEOGRAPH - 0xAECE: 0x664C, //CJK UNIFIED IDEOGRAPH - 0xAECF: 0x6645, //CJK UNIFIED IDEOGRAPH - 0xAED0: 0x6641, //CJK UNIFIED IDEOGRAPH - 0xAED1: 0x66F8, //CJK UNIFIED IDEOGRAPH - 0xAED2: 0x6714, //CJK UNIFIED IDEOGRAPH - 0xAED3: 0x6715, //CJK UNIFIED IDEOGRAPH - 0xAED4: 0x6717, //CJK UNIFIED IDEOGRAPH - 0xAED5: 0x6821, //CJK UNIFIED IDEOGRAPH - 0xAED6: 0x6838, //CJK UNIFIED IDEOGRAPH - 0xAED7: 0x6848, //CJK UNIFIED IDEOGRAPH - 0xAED8: 0x6846, //CJK UNIFIED IDEOGRAPH - 0xAED9: 0x6853, //CJK UNIFIED IDEOGRAPH - 0xAEDA: 0x6839, //CJK UNIFIED IDEOGRAPH - 0xAEDB: 0x6842, //CJK UNIFIED IDEOGRAPH - 0xAEDC: 0x6854, //CJK UNIFIED IDEOGRAPH - 0xAEDD: 0x6829, //CJK UNIFIED IDEOGRAPH - 0xAEDE: 0x68B3, //CJK UNIFIED IDEOGRAPH - 0xAEDF: 0x6817, //CJK UNIFIED IDEOGRAPH - 0xAEE0: 0x684C, //CJK UNIFIED IDEOGRAPH - 0xAEE1: 0x6851, //CJK UNIFIED IDEOGRAPH - 0xAEE2: 0x683D, //CJK UNIFIED IDEOGRAPH - 0xAEE3: 0x67F4, //CJK UNIFIED IDEOGRAPH - 0xAEE4: 0x6850, //CJK UNIFIED IDEOGRAPH - 0xAEE5: 0x6840, //CJK UNIFIED IDEOGRAPH - 0xAEE6: 0x683C, //CJK UNIFIED IDEOGRAPH - 0xAEE7: 0x6843, //CJK UNIFIED IDEOGRAPH - 0xAEE8: 0x682A, //CJK UNIFIED IDEOGRAPH - 0xAEE9: 0x6845, //CJK UNIFIED IDEOGRAPH - 0xAEEA: 0x6813, //CJK UNIFIED IDEOGRAPH - 0xAEEB: 0x6818, //CJK UNIFIED IDEOGRAPH - 0xAEEC: 0x6841, //CJK UNIFIED IDEOGRAPH - 0xAEED: 0x6B8A, //CJK UNIFIED IDEOGRAPH - 0xAEEE: 0x6B89, //CJK UNIFIED IDEOGRAPH - 0xAEEF: 0x6BB7, //CJK UNIFIED IDEOGRAPH - 0xAEF0: 0x6C23, //CJK UNIFIED IDEOGRAPH - 0xAEF1: 0x6C27, //CJK UNIFIED IDEOGRAPH - 0xAEF2: 0x6C28, //CJK UNIFIED IDEOGRAPH - 0xAEF3: 0x6C26, //CJK UNIFIED IDEOGRAPH - 0xAEF4: 0x6C24, //CJK UNIFIED IDEOGRAPH - 0xAEF5: 0x6CF0, //CJK UNIFIED IDEOGRAPH - 0xAEF6: 0x6D6A, //CJK UNIFIED IDEOGRAPH - 0xAEF7: 0x6D95, //CJK UNIFIED IDEOGRAPH - 0xAEF8: 0x6D88, //CJK UNIFIED IDEOGRAPH - 0xAEF9: 0x6D87, //CJK UNIFIED IDEOGRAPH - 0xAEFA: 0x6D66, //CJK UNIFIED IDEOGRAPH - 0xAEFB: 0x6D78, //CJK UNIFIED IDEOGRAPH - 0xAEFC: 0x6D77, //CJK UNIFIED IDEOGRAPH - 0xAEFD: 0x6D59, //CJK UNIFIED IDEOGRAPH - 0xAEFE: 0x6D93, //CJK UNIFIED IDEOGRAPH - 0xAF40: 0x6D6C, //CJK UNIFIED IDEOGRAPH - 0xAF41: 0x6D89, //CJK UNIFIED IDEOGRAPH - 0xAF42: 0x6D6E, //CJK UNIFIED IDEOGRAPH - 0xAF43: 0x6D5A, //CJK UNIFIED IDEOGRAPH - 0xAF44: 0x6D74, //CJK UNIFIED IDEOGRAPH - 0xAF45: 0x6D69, //CJK UNIFIED IDEOGRAPH - 0xAF46: 0x6D8C, //CJK UNIFIED IDEOGRAPH - 0xAF47: 0x6D8A, //CJK UNIFIED IDEOGRAPH - 0xAF48: 0x6D79, //CJK UNIFIED IDEOGRAPH - 0xAF49: 0x6D85, //CJK UNIFIED IDEOGRAPH - 0xAF4A: 0x6D65, //CJK UNIFIED IDEOGRAPH - 0xAF4B: 0x6D94, //CJK UNIFIED IDEOGRAPH - 0xAF4C: 0x70CA, //CJK UNIFIED IDEOGRAPH - 0xAF4D: 0x70D8, //CJK UNIFIED IDEOGRAPH - 0xAF4E: 0x70E4, //CJK UNIFIED IDEOGRAPH - 0xAF4F: 0x70D9, //CJK UNIFIED IDEOGRAPH - 0xAF50: 0x70C8, //CJK UNIFIED IDEOGRAPH - 0xAF51: 0x70CF, //CJK UNIFIED IDEOGRAPH - 0xAF52: 0x7239, //CJK UNIFIED IDEOGRAPH - 0xAF53: 0x7279, //CJK UNIFIED IDEOGRAPH - 0xAF54: 0x72FC, //CJK UNIFIED IDEOGRAPH - 0xAF55: 0x72F9, //CJK UNIFIED IDEOGRAPH - 0xAF56: 0x72FD, //CJK UNIFIED IDEOGRAPH - 0xAF57: 0x72F8, //CJK UNIFIED IDEOGRAPH - 0xAF58: 0x72F7, //CJK UNIFIED IDEOGRAPH - 0xAF59: 0x7386, //CJK UNIFIED IDEOGRAPH - 0xAF5A: 0x73ED, //CJK UNIFIED IDEOGRAPH - 0xAF5B: 0x7409, //CJK UNIFIED IDEOGRAPH - 0xAF5C: 0x73EE, //CJK UNIFIED IDEOGRAPH - 0xAF5D: 0x73E0, //CJK UNIFIED IDEOGRAPH - 0xAF5E: 0x73EA, //CJK UNIFIED IDEOGRAPH - 0xAF5F: 0x73DE, //CJK UNIFIED IDEOGRAPH - 0xAF60: 0x7554, //CJK UNIFIED IDEOGRAPH - 0xAF61: 0x755D, //CJK UNIFIED IDEOGRAPH - 0xAF62: 0x755C, //CJK UNIFIED IDEOGRAPH - 0xAF63: 0x755A, //CJK UNIFIED IDEOGRAPH - 0xAF64: 0x7559, //CJK UNIFIED IDEOGRAPH - 0xAF65: 0x75BE, //CJK UNIFIED IDEOGRAPH - 0xAF66: 0x75C5, //CJK UNIFIED IDEOGRAPH - 0xAF67: 0x75C7, //CJK UNIFIED IDEOGRAPH - 0xAF68: 0x75B2, //CJK UNIFIED IDEOGRAPH - 0xAF69: 0x75B3, //CJK UNIFIED IDEOGRAPH - 0xAF6A: 0x75BD, //CJK UNIFIED IDEOGRAPH - 0xAF6B: 0x75BC, //CJK UNIFIED IDEOGRAPH - 0xAF6C: 0x75B9, //CJK UNIFIED IDEOGRAPH - 0xAF6D: 0x75C2, //CJK UNIFIED IDEOGRAPH - 0xAF6E: 0x75B8, //CJK UNIFIED IDEOGRAPH - 0xAF6F: 0x768B, //CJK UNIFIED IDEOGRAPH - 0xAF70: 0x76B0, //CJK UNIFIED IDEOGRAPH - 0xAF71: 0x76CA, //CJK UNIFIED IDEOGRAPH - 0xAF72: 0x76CD, //CJK UNIFIED IDEOGRAPH - 0xAF73: 0x76CE, //CJK UNIFIED IDEOGRAPH - 0xAF74: 0x7729, //CJK UNIFIED IDEOGRAPH - 0xAF75: 0x771F, //CJK UNIFIED IDEOGRAPH - 0xAF76: 0x7720, //CJK UNIFIED IDEOGRAPH - 0xAF77: 0x7728, //CJK UNIFIED IDEOGRAPH - 0xAF78: 0x77E9, //CJK UNIFIED IDEOGRAPH - 0xAF79: 0x7830, //CJK UNIFIED IDEOGRAPH - 0xAF7A: 0x7827, //CJK UNIFIED IDEOGRAPH - 0xAF7B: 0x7838, //CJK UNIFIED IDEOGRAPH - 0xAF7C: 0x781D, //CJK UNIFIED IDEOGRAPH - 0xAF7D: 0x7834, //CJK UNIFIED IDEOGRAPH - 0xAF7E: 0x7837, //CJK UNIFIED IDEOGRAPH - 0xAFA1: 0x7825, //CJK UNIFIED IDEOGRAPH - 0xAFA2: 0x782D, //CJK UNIFIED IDEOGRAPH - 0xAFA3: 0x7820, //CJK UNIFIED IDEOGRAPH - 0xAFA4: 0x781F, //CJK UNIFIED IDEOGRAPH - 0xAFA5: 0x7832, //CJK UNIFIED IDEOGRAPH - 0xAFA6: 0x7955, //CJK UNIFIED IDEOGRAPH - 0xAFA7: 0x7950, //CJK UNIFIED IDEOGRAPH - 0xAFA8: 0x7960, //CJK UNIFIED IDEOGRAPH - 0xAFA9: 0x795F, //CJK UNIFIED IDEOGRAPH - 0xAFAA: 0x7956, //CJK UNIFIED IDEOGRAPH - 0xAFAB: 0x795E, //CJK UNIFIED IDEOGRAPH - 0xAFAC: 0x795D, //CJK UNIFIED IDEOGRAPH - 0xAFAD: 0x7957, //CJK UNIFIED IDEOGRAPH - 0xAFAE: 0x795A, //CJK UNIFIED IDEOGRAPH - 0xAFAF: 0x79E4, //CJK UNIFIED IDEOGRAPH - 0xAFB0: 0x79E3, //CJK UNIFIED IDEOGRAPH - 0xAFB1: 0x79E7, //CJK UNIFIED IDEOGRAPH - 0xAFB2: 0x79DF, //CJK UNIFIED IDEOGRAPH - 0xAFB3: 0x79E6, //CJK UNIFIED IDEOGRAPH - 0xAFB4: 0x79E9, //CJK UNIFIED IDEOGRAPH - 0xAFB5: 0x79D8, //CJK UNIFIED IDEOGRAPH - 0xAFB6: 0x7A84, //CJK UNIFIED IDEOGRAPH - 0xAFB7: 0x7A88, //CJK UNIFIED IDEOGRAPH - 0xAFB8: 0x7AD9, //CJK UNIFIED IDEOGRAPH - 0xAFB9: 0x7B06, //CJK UNIFIED IDEOGRAPH - 0xAFBA: 0x7B11, //CJK UNIFIED IDEOGRAPH - 0xAFBB: 0x7C89, //CJK UNIFIED IDEOGRAPH - 0xAFBC: 0x7D21, //CJK UNIFIED IDEOGRAPH - 0xAFBD: 0x7D17, //CJK UNIFIED IDEOGRAPH - 0xAFBE: 0x7D0B, //CJK UNIFIED IDEOGRAPH - 0xAFBF: 0x7D0A, //CJK UNIFIED IDEOGRAPH - 0xAFC0: 0x7D20, //CJK UNIFIED IDEOGRAPH - 0xAFC1: 0x7D22, //CJK UNIFIED IDEOGRAPH - 0xAFC2: 0x7D14, //CJK UNIFIED IDEOGRAPH - 0xAFC3: 0x7D10, //CJK UNIFIED IDEOGRAPH - 0xAFC4: 0x7D15, //CJK UNIFIED IDEOGRAPH - 0xAFC5: 0x7D1A, //CJK UNIFIED IDEOGRAPH - 0xAFC6: 0x7D1C, //CJK UNIFIED IDEOGRAPH - 0xAFC7: 0x7D0D, //CJK UNIFIED IDEOGRAPH - 0xAFC8: 0x7D19, //CJK UNIFIED IDEOGRAPH - 0xAFC9: 0x7D1B, //CJK UNIFIED IDEOGRAPH - 0xAFCA: 0x7F3A, //CJK UNIFIED IDEOGRAPH - 0xAFCB: 0x7F5F, //CJK UNIFIED IDEOGRAPH - 0xAFCC: 0x7F94, //CJK UNIFIED IDEOGRAPH - 0xAFCD: 0x7FC5, //CJK UNIFIED IDEOGRAPH - 0xAFCE: 0x7FC1, //CJK UNIFIED IDEOGRAPH - 0xAFCF: 0x8006, //CJK UNIFIED IDEOGRAPH - 0xAFD0: 0x8018, //CJK UNIFIED IDEOGRAPH - 0xAFD1: 0x8015, //CJK UNIFIED IDEOGRAPH - 0xAFD2: 0x8019, //CJK UNIFIED IDEOGRAPH - 0xAFD3: 0x8017, //CJK UNIFIED IDEOGRAPH - 0xAFD4: 0x803D, //CJK UNIFIED IDEOGRAPH - 0xAFD5: 0x803F, //CJK UNIFIED IDEOGRAPH - 0xAFD6: 0x80F1, //CJK UNIFIED IDEOGRAPH - 0xAFD7: 0x8102, //CJK UNIFIED IDEOGRAPH - 0xAFD8: 0x80F0, //CJK UNIFIED IDEOGRAPH - 0xAFD9: 0x8105, //CJK UNIFIED IDEOGRAPH - 0xAFDA: 0x80ED, //CJK UNIFIED IDEOGRAPH - 0xAFDB: 0x80F4, //CJK UNIFIED IDEOGRAPH - 0xAFDC: 0x8106, //CJK UNIFIED IDEOGRAPH - 0xAFDD: 0x80F8, //CJK UNIFIED IDEOGRAPH - 0xAFDE: 0x80F3, //CJK UNIFIED IDEOGRAPH - 0xAFDF: 0x8108, //CJK UNIFIED IDEOGRAPH - 0xAFE0: 0x80FD, //CJK UNIFIED IDEOGRAPH - 0xAFE1: 0x810A, //CJK UNIFIED IDEOGRAPH - 0xAFE2: 0x80FC, //CJK UNIFIED IDEOGRAPH - 0xAFE3: 0x80EF, //CJK UNIFIED IDEOGRAPH - 0xAFE4: 0x81ED, //CJK UNIFIED IDEOGRAPH - 0xAFE5: 0x81EC, //CJK UNIFIED IDEOGRAPH - 0xAFE6: 0x8200, //CJK UNIFIED IDEOGRAPH - 0xAFE7: 0x8210, //CJK UNIFIED IDEOGRAPH - 0xAFE8: 0x822A, //CJK UNIFIED IDEOGRAPH - 0xAFE9: 0x822B, //CJK UNIFIED IDEOGRAPH - 0xAFEA: 0x8228, //CJK UNIFIED IDEOGRAPH - 0xAFEB: 0x822C, //CJK UNIFIED IDEOGRAPH - 0xAFEC: 0x82BB, //CJK UNIFIED IDEOGRAPH - 0xAFED: 0x832B, //CJK UNIFIED IDEOGRAPH - 0xAFEE: 0x8352, //CJK UNIFIED IDEOGRAPH - 0xAFEF: 0x8354, //CJK UNIFIED IDEOGRAPH - 0xAFF0: 0x834A, //CJK UNIFIED IDEOGRAPH - 0xAFF1: 0x8338, //CJK UNIFIED IDEOGRAPH - 0xAFF2: 0x8350, //CJK UNIFIED IDEOGRAPH - 0xAFF3: 0x8349, //CJK UNIFIED IDEOGRAPH - 0xAFF4: 0x8335, //CJK UNIFIED IDEOGRAPH - 0xAFF5: 0x8334, //CJK UNIFIED IDEOGRAPH - 0xAFF6: 0x834F, //CJK UNIFIED IDEOGRAPH - 0xAFF7: 0x8332, //CJK UNIFIED IDEOGRAPH - 0xAFF8: 0x8339, //CJK UNIFIED IDEOGRAPH - 0xAFF9: 0x8336, //CJK UNIFIED IDEOGRAPH - 0xAFFA: 0x8317, //CJK UNIFIED IDEOGRAPH - 0xAFFB: 0x8340, //CJK UNIFIED IDEOGRAPH - 0xAFFC: 0x8331, //CJK UNIFIED IDEOGRAPH - 0xAFFD: 0x8328, //CJK UNIFIED IDEOGRAPH - 0xAFFE: 0x8343, //CJK UNIFIED IDEOGRAPH - 0xB040: 0x8654, //CJK UNIFIED IDEOGRAPH - 0xB041: 0x868A, //CJK UNIFIED IDEOGRAPH - 0xB042: 0x86AA, //CJK UNIFIED IDEOGRAPH - 0xB043: 0x8693, //CJK UNIFIED IDEOGRAPH - 0xB044: 0x86A4, //CJK UNIFIED IDEOGRAPH - 0xB045: 0x86A9, //CJK UNIFIED IDEOGRAPH - 0xB046: 0x868C, //CJK UNIFIED IDEOGRAPH - 0xB047: 0x86A3, //CJK UNIFIED IDEOGRAPH - 0xB048: 0x869C, //CJK UNIFIED IDEOGRAPH - 0xB049: 0x8870, //CJK UNIFIED IDEOGRAPH - 0xB04A: 0x8877, //CJK UNIFIED IDEOGRAPH - 0xB04B: 0x8881, //CJK UNIFIED IDEOGRAPH - 0xB04C: 0x8882, //CJK UNIFIED IDEOGRAPH - 0xB04D: 0x887D, //CJK UNIFIED IDEOGRAPH - 0xB04E: 0x8879, //CJK UNIFIED IDEOGRAPH - 0xB04F: 0x8A18, //CJK UNIFIED IDEOGRAPH - 0xB050: 0x8A10, //CJK UNIFIED IDEOGRAPH - 0xB051: 0x8A0E, //CJK UNIFIED IDEOGRAPH - 0xB052: 0x8A0C, //CJK UNIFIED IDEOGRAPH - 0xB053: 0x8A15, //CJK UNIFIED IDEOGRAPH - 0xB054: 0x8A0A, //CJK UNIFIED IDEOGRAPH - 0xB055: 0x8A17, //CJK UNIFIED IDEOGRAPH - 0xB056: 0x8A13, //CJK UNIFIED IDEOGRAPH - 0xB057: 0x8A16, //CJK UNIFIED IDEOGRAPH - 0xB058: 0x8A0F, //CJK UNIFIED IDEOGRAPH - 0xB059: 0x8A11, //CJK UNIFIED IDEOGRAPH - 0xB05A: 0x8C48, //CJK UNIFIED IDEOGRAPH - 0xB05B: 0x8C7A, //CJK UNIFIED IDEOGRAPH - 0xB05C: 0x8C79, //CJK UNIFIED IDEOGRAPH - 0xB05D: 0x8CA1, //CJK UNIFIED IDEOGRAPH - 0xB05E: 0x8CA2, //CJK UNIFIED IDEOGRAPH - 0xB05F: 0x8D77, //CJK UNIFIED IDEOGRAPH - 0xB060: 0x8EAC, //CJK UNIFIED IDEOGRAPH - 0xB061: 0x8ED2, //CJK UNIFIED IDEOGRAPH - 0xB062: 0x8ED4, //CJK UNIFIED IDEOGRAPH - 0xB063: 0x8ECF, //CJK UNIFIED IDEOGRAPH - 0xB064: 0x8FB1, //CJK UNIFIED IDEOGRAPH - 0xB065: 0x9001, //CJK UNIFIED IDEOGRAPH - 0xB066: 0x9006, //CJK UNIFIED IDEOGRAPH - 0xB067: 0x8FF7, //CJK UNIFIED IDEOGRAPH - 0xB068: 0x9000, //CJK UNIFIED IDEOGRAPH - 0xB069: 0x8FFA, //CJK UNIFIED IDEOGRAPH - 0xB06A: 0x8FF4, //CJK UNIFIED IDEOGRAPH - 0xB06B: 0x9003, //CJK UNIFIED IDEOGRAPH - 0xB06C: 0x8FFD, //CJK UNIFIED IDEOGRAPH - 0xB06D: 0x9005, //CJK UNIFIED IDEOGRAPH - 0xB06E: 0x8FF8, //CJK UNIFIED IDEOGRAPH - 0xB06F: 0x9095, //CJK UNIFIED IDEOGRAPH - 0xB070: 0x90E1, //CJK UNIFIED IDEOGRAPH - 0xB071: 0x90DD, //CJK UNIFIED IDEOGRAPH - 0xB072: 0x90E2, //CJK UNIFIED IDEOGRAPH - 0xB073: 0x9152, //CJK UNIFIED IDEOGRAPH - 0xB074: 0x914D, //CJK UNIFIED IDEOGRAPH - 0xB075: 0x914C, //CJK UNIFIED IDEOGRAPH - 0xB076: 0x91D8, //CJK UNIFIED IDEOGRAPH - 0xB077: 0x91DD, //CJK UNIFIED IDEOGRAPH - 0xB078: 0x91D7, //CJK UNIFIED IDEOGRAPH - 0xB079: 0x91DC, //CJK UNIFIED IDEOGRAPH - 0xB07A: 0x91D9, //CJK UNIFIED IDEOGRAPH - 0xB07B: 0x9583, //CJK UNIFIED IDEOGRAPH - 0xB07C: 0x9662, //CJK UNIFIED IDEOGRAPH - 0xB07D: 0x9663, //CJK UNIFIED IDEOGRAPH - 0xB07E: 0x9661, //CJK UNIFIED IDEOGRAPH - 0xB0A1: 0x965B, //CJK UNIFIED IDEOGRAPH - 0xB0A2: 0x965D, //CJK UNIFIED IDEOGRAPH - 0xB0A3: 0x9664, //CJK UNIFIED IDEOGRAPH - 0xB0A4: 0x9658, //CJK UNIFIED IDEOGRAPH - 0xB0A5: 0x965E, //CJK UNIFIED IDEOGRAPH - 0xB0A6: 0x96BB, //CJK UNIFIED IDEOGRAPH - 0xB0A7: 0x98E2, //CJK UNIFIED IDEOGRAPH - 0xB0A8: 0x99AC, //CJK UNIFIED IDEOGRAPH - 0xB0A9: 0x9AA8, //CJK UNIFIED IDEOGRAPH - 0xB0AA: 0x9AD8, //CJK UNIFIED IDEOGRAPH - 0xB0AB: 0x9B25, //CJK UNIFIED IDEOGRAPH - 0xB0AC: 0x9B32, //CJK UNIFIED IDEOGRAPH - 0xB0AD: 0x9B3C, //CJK UNIFIED IDEOGRAPH - 0xB0AE: 0x4E7E, //CJK UNIFIED IDEOGRAPH - 0xB0AF: 0x507A, //CJK UNIFIED IDEOGRAPH - 0xB0B0: 0x507D, //CJK UNIFIED IDEOGRAPH - 0xB0B1: 0x505C, //CJK UNIFIED IDEOGRAPH - 0xB0B2: 0x5047, //CJK UNIFIED IDEOGRAPH - 0xB0B3: 0x5043, //CJK UNIFIED IDEOGRAPH - 0xB0B4: 0x504C, //CJK UNIFIED IDEOGRAPH - 0xB0B5: 0x505A, //CJK UNIFIED IDEOGRAPH - 0xB0B6: 0x5049, //CJK UNIFIED IDEOGRAPH - 0xB0B7: 0x5065, //CJK UNIFIED IDEOGRAPH - 0xB0B8: 0x5076, //CJK UNIFIED IDEOGRAPH - 0xB0B9: 0x504E, //CJK UNIFIED IDEOGRAPH - 0xB0BA: 0x5055, //CJK UNIFIED IDEOGRAPH - 0xB0BB: 0x5075, //CJK UNIFIED IDEOGRAPH - 0xB0BC: 0x5074, //CJK UNIFIED IDEOGRAPH - 0xB0BD: 0x5077, //CJK UNIFIED IDEOGRAPH - 0xB0BE: 0x504F, //CJK UNIFIED IDEOGRAPH - 0xB0BF: 0x500F, //CJK UNIFIED IDEOGRAPH - 0xB0C0: 0x506F, //CJK UNIFIED IDEOGRAPH - 0xB0C1: 0x506D, //CJK UNIFIED IDEOGRAPH - 0xB0C2: 0x515C, //CJK UNIFIED IDEOGRAPH - 0xB0C3: 0x5195, //CJK UNIFIED IDEOGRAPH - 0xB0C4: 0x51F0, //CJK UNIFIED IDEOGRAPH - 0xB0C5: 0x526A, //CJK UNIFIED IDEOGRAPH - 0xB0C6: 0x526F, //CJK UNIFIED IDEOGRAPH - 0xB0C7: 0x52D2, //CJK UNIFIED IDEOGRAPH - 0xB0C8: 0x52D9, //CJK UNIFIED IDEOGRAPH - 0xB0C9: 0x52D8, //CJK UNIFIED IDEOGRAPH - 0xB0CA: 0x52D5, //CJK UNIFIED IDEOGRAPH - 0xB0CB: 0x5310, //CJK UNIFIED IDEOGRAPH - 0xB0CC: 0x530F, //CJK UNIFIED IDEOGRAPH - 0xB0CD: 0x5319, //CJK UNIFIED IDEOGRAPH - 0xB0CE: 0x533F, //CJK UNIFIED IDEOGRAPH - 0xB0CF: 0x5340, //CJK UNIFIED IDEOGRAPH - 0xB0D0: 0x533E, //CJK UNIFIED IDEOGRAPH - 0xB0D1: 0x53C3, //CJK UNIFIED IDEOGRAPH - 0xB0D2: 0x66FC, //CJK UNIFIED IDEOGRAPH - 0xB0D3: 0x5546, //CJK UNIFIED IDEOGRAPH - 0xB0D4: 0x556A, //CJK UNIFIED IDEOGRAPH - 0xB0D5: 0x5566, //CJK UNIFIED IDEOGRAPH - 0xB0D6: 0x5544, //CJK UNIFIED IDEOGRAPH - 0xB0D7: 0x555E, //CJK UNIFIED IDEOGRAPH - 0xB0D8: 0x5561, //CJK UNIFIED IDEOGRAPH - 0xB0D9: 0x5543, //CJK UNIFIED IDEOGRAPH - 0xB0DA: 0x554A, //CJK UNIFIED IDEOGRAPH - 0xB0DB: 0x5531, //CJK UNIFIED IDEOGRAPH - 0xB0DC: 0x5556, //CJK UNIFIED IDEOGRAPH - 0xB0DD: 0x554F, //CJK UNIFIED IDEOGRAPH - 0xB0DE: 0x5555, //CJK UNIFIED IDEOGRAPH - 0xB0DF: 0x552F, //CJK UNIFIED IDEOGRAPH - 0xB0E0: 0x5564, //CJK UNIFIED IDEOGRAPH - 0xB0E1: 0x5538, //CJK UNIFIED IDEOGRAPH - 0xB0E2: 0x552E, //CJK UNIFIED IDEOGRAPH - 0xB0E3: 0x555C, //CJK UNIFIED IDEOGRAPH - 0xB0E4: 0x552C, //CJK UNIFIED IDEOGRAPH - 0xB0E5: 0x5563, //CJK UNIFIED IDEOGRAPH - 0xB0E6: 0x5533, //CJK UNIFIED IDEOGRAPH - 0xB0E7: 0x5541, //CJK UNIFIED IDEOGRAPH - 0xB0E8: 0x5557, //CJK UNIFIED IDEOGRAPH - 0xB0E9: 0x5708, //CJK UNIFIED IDEOGRAPH - 0xB0EA: 0x570B, //CJK UNIFIED IDEOGRAPH - 0xB0EB: 0x5709, //CJK UNIFIED IDEOGRAPH - 0xB0EC: 0x57DF, //CJK UNIFIED IDEOGRAPH - 0xB0ED: 0x5805, //CJK UNIFIED IDEOGRAPH - 0xB0EE: 0x580A, //CJK UNIFIED IDEOGRAPH - 0xB0EF: 0x5806, //CJK UNIFIED IDEOGRAPH - 0xB0F0: 0x57E0, //CJK UNIFIED IDEOGRAPH - 0xB0F1: 0x57E4, //CJK UNIFIED IDEOGRAPH - 0xB0F2: 0x57FA, //CJK UNIFIED IDEOGRAPH - 0xB0F3: 0x5802, //CJK UNIFIED IDEOGRAPH - 0xB0F4: 0x5835, //CJK UNIFIED IDEOGRAPH - 0xB0F5: 0x57F7, //CJK UNIFIED IDEOGRAPH - 0xB0F6: 0x57F9, //CJK UNIFIED IDEOGRAPH - 0xB0F7: 0x5920, //CJK UNIFIED IDEOGRAPH - 0xB0F8: 0x5962, //CJK UNIFIED IDEOGRAPH - 0xB0F9: 0x5A36, //CJK UNIFIED IDEOGRAPH - 0xB0FA: 0x5A41, //CJK UNIFIED IDEOGRAPH - 0xB0FB: 0x5A49, //CJK UNIFIED IDEOGRAPH - 0xB0FC: 0x5A66, //CJK UNIFIED IDEOGRAPH - 0xB0FD: 0x5A6A, //CJK UNIFIED IDEOGRAPH - 0xB0FE: 0x5A40, //CJK UNIFIED IDEOGRAPH - 0xB140: 0x5A3C, //CJK UNIFIED IDEOGRAPH - 0xB141: 0x5A62, //CJK UNIFIED IDEOGRAPH - 0xB142: 0x5A5A, //CJK UNIFIED IDEOGRAPH - 0xB143: 0x5A46, //CJK UNIFIED IDEOGRAPH - 0xB144: 0x5A4A, //CJK UNIFIED IDEOGRAPH - 0xB145: 0x5B70, //CJK UNIFIED IDEOGRAPH - 0xB146: 0x5BC7, //CJK UNIFIED IDEOGRAPH - 0xB147: 0x5BC5, //CJK UNIFIED IDEOGRAPH - 0xB148: 0x5BC4, //CJK UNIFIED IDEOGRAPH - 0xB149: 0x5BC2, //CJK UNIFIED IDEOGRAPH - 0xB14A: 0x5BBF, //CJK UNIFIED IDEOGRAPH - 0xB14B: 0x5BC6, //CJK UNIFIED IDEOGRAPH - 0xB14C: 0x5C09, //CJK UNIFIED IDEOGRAPH - 0xB14D: 0x5C08, //CJK UNIFIED IDEOGRAPH - 0xB14E: 0x5C07, //CJK UNIFIED IDEOGRAPH - 0xB14F: 0x5C60, //CJK UNIFIED IDEOGRAPH - 0xB150: 0x5C5C, //CJK UNIFIED IDEOGRAPH - 0xB151: 0x5C5D, //CJK UNIFIED IDEOGRAPH - 0xB152: 0x5D07, //CJK UNIFIED IDEOGRAPH - 0xB153: 0x5D06, //CJK UNIFIED IDEOGRAPH - 0xB154: 0x5D0E, //CJK UNIFIED IDEOGRAPH - 0xB155: 0x5D1B, //CJK UNIFIED IDEOGRAPH - 0xB156: 0x5D16, //CJK UNIFIED IDEOGRAPH - 0xB157: 0x5D22, //CJK UNIFIED IDEOGRAPH - 0xB158: 0x5D11, //CJK UNIFIED IDEOGRAPH - 0xB159: 0x5D29, //CJK UNIFIED IDEOGRAPH - 0xB15A: 0x5D14, //CJK UNIFIED IDEOGRAPH - 0xB15B: 0x5D19, //CJK UNIFIED IDEOGRAPH - 0xB15C: 0x5D24, //CJK UNIFIED IDEOGRAPH - 0xB15D: 0x5D27, //CJK UNIFIED IDEOGRAPH - 0xB15E: 0x5D17, //CJK UNIFIED IDEOGRAPH - 0xB15F: 0x5DE2, //CJK UNIFIED IDEOGRAPH - 0xB160: 0x5E38, //CJK UNIFIED IDEOGRAPH - 0xB161: 0x5E36, //CJK UNIFIED IDEOGRAPH - 0xB162: 0x5E33, //CJK UNIFIED IDEOGRAPH - 0xB163: 0x5E37, //CJK UNIFIED IDEOGRAPH - 0xB164: 0x5EB7, //CJK UNIFIED IDEOGRAPH - 0xB165: 0x5EB8, //CJK UNIFIED IDEOGRAPH - 0xB166: 0x5EB6, //CJK UNIFIED IDEOGRAPH - 0xB167: 0x5EB5, //CJK UNIFIED IDEOGRAPH - 0xB168: 0x5EBE, //CJK UNIFIED IDEOGRAPH - 0xB169: 0x5F35, //CJK UNIFIED IDEOGRAPH - 0xB16A: 0x5F37, //CJK UNIFIED IDEOGRAPH - 0xB16B: 0x5F57, //CJK UNIFIED IDEOGRAPH - 0xB16C: 0x5F6C, //CJK UNIFIED IDEOGRAPH - 0xB16D: 0x5F69, //CJK UNIFIED IDEOGRAPH - 0xB16E: 0x5F6B, //CJK UNIFIED IDEOGRAPH - 0xB16F: 0x5F97, //CJK UNIFIED IDEOGRAPH - 0xB170: 0x5F99, //CJK UNIFIED IDEOGRAPH - 0xB171: 0x5F9E, //CJK UNIFIED IDEOGRAPH - 0xB172: 0x5F98, //CJK UNIFIED IDEOGRAPH - 0xB173: 0x5FA1, //CJK UNIFIED IDEOGRAPH - 0xB174: 0x5FA0, //CJK UNIFIED IDEOGRAPH - 0xB175: 0x5F9C, //CJK UNIFIED IDEOGRAPH - 0xB176: 0x607F, //CJK UNIFIED IDEOGRAPH - 0xB177: 0x60A3, //CJK UNIFIED IDEOGRAPH - 0xB178: 0x6089, //CJK UNIFIED IDEOGRAPH - 0xB179: 0x60A0, //CJK UNIFIED IDEOGRAPH - 0xB17A: 0x60A8, //CJK UNIFIED IDEOGRAPH - 0xB17B: 0x60CB, //CJK UNIFIED IDEOGRAPH - 0xB17C: 0x60B4, //CJK UNIFIED IDEOGRAPH - 0xB17D: 0x60E6, //CJK UNIFIED IDEOGRAPH - 0xB17E: 0x60BD, //CJK UNIFIED IDEOGRAPH - 0xB1A1: 0x60C5, //CJK UNIFIED IDEOGRAPH - 0xB1A2: 0x60BB, //CJK UNIFIED IDEOGRAPH - 0xB1A3: 0x60B5, //CJK UNIFIED IDEOGRAPH - 0xB1A4: 0x60DC, //CJK UNIFIED IDEOGRAPH - 0xB1A5: 0x60BC, //CJK UNIFIED IDEOGRAPH - 0xB1A6: 0x60D8, //CJK UNIFIED IDEOGRAPH - 0xB1A7: 0x60D5, //CJK UNIFIED IDEOGRAPH - 0xB1A8: 0x60C6, //CJK UNIFIED IDEOGRAPH - 0xB1A9: 0x60DF, //CJK UNIFIED IDEOGRAPH - 0xB1AA: 0x60B8, //CJK UNIFIED IDEOGRAPH - 0xB1AB: 0x60DA, //CJK UNIFIED IDEOGRAPH - 0xB1AC: 0x60C7, //CJK UNIFIED IDEOGRAPH - 0xB1AD: 0x621A, //CJK UNIFIED IDEOGRAPH - 0xB1AE: 0x621B, //CJK UNIFIED IDEOGRAPH - 0xB1AF: 0x6248, //CJK UNIFIED IDEOGRAPH - 0xB1B0: 0x63A0, //CJK UNIFIED IDEOGRAPH - 0xB1B1: 0x63A7, //CJK UNIFIED IDEOGRAPH - 0xB1B2: 0x6372, //CJK UNIFIED IDEOGRAPH - 0xB1B3: 0x6396, //CJK UNIFIED IDEOGRAPH - 0xB1B4: 0x63A2, //CJK UNIFIED IDEOGRAPH - 0xB1B5: 0x63A5, //CJK UNIFIED IDEOGRAPH - 0xB1B6: 0x6377, //CJK UNIFIED IDEOGRAPH - 0xB1B7: 0x6367, //CJK UNIFIED IDEOGRAPH - 0xB1B8: 0x6398, //CJK UNIFIED IDEOGRAPH - 0xB1B9: 0x63AA, //CJK UNIFIED IDEOGRAPH - 0xB1BA: 0x6371, //CJK UNIFIED IDEOGRAPH - 0xB1BB: 0x63A9, //CJK UNIFIED IDEOGRAPH - 0xB1BC: 0x6389, //CJK UNIFIED IDEOGRAPH - 0xB1BD: 0x6383, //CJK UNIFIED IDEOGRAPH - 0xB1BE: 0x639B, //CJK UNIFIED IDEOGRAPH - 0xB1BF: 0x636B, //CJK UNIFIED IDEOGRAPH - 0xB1C0: 0x63A8, //CJK UNIFIED IDEOGRAPH - 0xB1C1: 0x6384, //CJK UNIFIED IDEOGRAPH - 0xB1C2: 0x6388, //CJK UNIFIED IDEOGRAPH - 0xB1C3: 0x6399, //CJK UNIFIED IDEOGRAPH - 0xB1C4: 0x63A1, //CJK UNIFIED IDEOGRAPH - 0xB1C5: 0x63AC, //CJK UNIFIED IDEOGRAPH - 0xB1C6: 0x6392, //CJK UNIFIED IDEOGRAPH - 0xB1C7: 0x638F, //CJK UNIFIED IDEOGRAPH - 0xB1C8: 0x6380, //CJK UNIFIED IDEOGRAPH - 0xB1C9: 0x637B, //CJK UNIFIED IDEOGRAPH - 0xB1CA: 0x6369, //CJK UNIFIED IDEOGRAPH - 0xB1CB: 0x6368, //CJK UNIFIED IDEOGRAPH - 0xB1CC: 0x637A, //CJK UNIFIED IDEOGRAPH - 0xB1CD: 0x655D, //CJK UNIFIED IDEOGRAPH - 0xB1CE: 0x6556, //CJK UNIFIED IDEOGRAPH - 0xB1CF: 0x6551, //CJK UNIFIED IDEOGRAPH - 0xB1D0: 0x6559, //CJK UNIFIED IDEOGRAPH - 0xB1D1: 0x6557, //CJK UNIFIED IDEOGRAPH - 0xB1D2: 0x555F, //CJK UNIFIED IDEOGRAPH - 0xB1D3: 0x654F, //CJK UNIFIED IDEOGRAPH - 0xB1D4: 0x6558, //CJK UNIFIED IDEOGRAPH - 0xB1D5: 0x6555, //CJK UNIFIED IDEOGRAPH - 0xB1D6: 0x6554, //CJK UNIFIED IDEOGRAPH - 0xB1D7: 0x659C, //CJK UNIFIED IDEOGRAPH - 0xB1D8: 0x659B, //CJK UNIFIED IDEOGRAPH - 0xB1D9: 0x65AC, //CJK UNIFIED IDEOGRAPH - 0xB1DA: 0x65CF, //CJK UNIFIED IDEOGRAPH - 0xB1DB: 0x65CB, //CJK UNIFIED IDEOGRAPH - 0xB1DC: 0x65CC, //CJK UNIFIED IDEOGRAPH - 0xB1DD: 0x65CE, //CJK UNIFIED IDEOGRAPH - 0xB1DE: 0x665D, //CJK UNIFIED IDEOGRAPH - 0xB1DF: 0x665A, //CJK UNIFIED IDEOGRAPH - 0xB1E0: 0x6664, //CJK UNIFIED IDEOGRAPH - 0xB1E1: 0x6668, //CJK UNIFIED IDEOGRAPH - 0xB1E2: 0x6666, //CJK UNIFIED IDEOGRAPH - 0xB1E3: 0x665E, //CJK UNIFIED IDEOGRAPH - 0xB1E4: 0x66F9, //CJK UNIFIED IDEOGRAPH - 0xB1E5: 0x52D7, //CJK UNIFIED IDEOGRAPH - 0xB1E6: 0x671B, //CJK UNIFIED IDEOGRAPH - 0xB1E7: 0x6881, //CJK UNIFIED IDEOGRAPH - 0xB1E8: 0x68AF, //CJK UNIFIED IDEOGRAPH - 0xB1E9: 0x68A2, //CJK UNIFIED IDEOGRAPH - 0xB1EA: 0x6893, //CJK UNIFIED IDEOGRAPH - 0xB1EB: 0x68B5, //CJK UNIFIED IDEOGRAPH - 0xB1EC: 0x687F, //CJK UNIFIED IDEOGRAPH - 0xB1ED: 0x6876, //CJK UNIFIED IDEOGRAPH - 0xB1EE: 0x68B1, //CJK UNIFIED IDEOGRAPH - 0xB1EF: 0x68A7, //CJK UNIFIED IDEOGRAPH - 0xB1F0: 0x6897, //CJK UNIFIED IDEOGRAPH - 0xB1F1: 0x68B0, //CJK UNIFIED IDEOGRAPH - 0xB1F2: 0x6883, //CJK UNIFIED IDEOGRAPH - 0xB1F3: 0x68C4, //CJK UNIFIED IDEOGRAPH - 0xB1F4: 0x68AD, //CJK UNIFIED IDEOGRAPH - 0xB1F5: 0x6886, //CJK UNIFIED IDEOGRAPH - 0xB1F6: 0x6885, //CJK UNIFIED IDEOGRAPH - 0xB1F7: 0x6894, //CJK UNIFIED IDEOGRAPH - 0xB1F8: 0x689D, //CJK UNIFIED IDEOGRAPH - 0xB1F9: 0x68A8, //CJK UNIFIED IDEOGRAPH - 0xB1FA: 0x689F, //CJK UNIFIED IDEOGRAPH - 0xB1FB: 0x68A1, //CJK UNIFIED IDEOGRAPH - 0xB1FC: 0x6882, //CJK UNIFIED IDEOGRAPH - 0xB1FD: 0x6B32, //CJK UNIFIED IDEOGRAPH - 0xB1FE: 0x6BBA, //CJK UNIFIED IDEOGRAPH - 0xB240: 0x6BEB, //CJK UNIFIED IDEOGRAPH - 0xB241: 0x6BEC, //CJK UNIFIED IDEOGRAPH - 0xB242: 0x6C2B, //CJK UNIFIED IDEOGRAPH - 0xB243: 0x6D8E, //CJK UNIFIED IDEOGRAPH - 0xB244: 0x6DBC, //CJK UNIFIED IDEOGRAPH - 0xB245: 0x6DF3, //CJK UNIFIED IDEOGRAPH - 0xB246: 0x6DD9, //CJK UNIFIED IDEOGRAPH - 0xB247: 0x6DB2, //CJK UNIFIED IDEOGRAPH - 0xB248: 0x6DE1, //CJK UNIFIED IDEOGRAPH - 0xB249: 0x6DCC, //CJK UNIFIED IDEOGRAPH - 0xB24A: 0x6DE4, //CJK UNIFIED IDEOGRAPH - 0xB24B: 0x6DFB, //CJK UNIFIED IDEOGRAPH - 0xB24C: 0x6DFA, //CJK UNIFIED IDEOGRAPH - 0xB24D: 0x6E05, //CJK UNIFIED IDEOGRAPH - 0xB24E: 0x6DC7, //CJK UNIFIED IDEOGRAPH - 0xB24F: 0x6DCB, //CJK UNIFIED IDEOGRAPH - 0xB250: 0x6DAF, //CJK UNIFIED IDEOGRAPH - 0xB251: 0x6DD1, //CJK UNIFIED IDEOGRAPH - 0xB252: 0x6DAE, //CJK UNIFIED IDEOGRAPH - 0xB253: 0x6DDE, //CJK UNIFIED IDEOGRAPH - 0xB254: 0x6DF9, //CJK UNIFIED IDEOGRAPH - 0xB255: 0x6DB8, //CJK UNIFIED IDEOGRAPH - 0xB256: 0x6DF7, //CJK UNIFIED IDEOGRAPH - 0xB257: 0x6DF5, //CJK UNIFIED IDEOGRAPH - 0xB258: 0x6DC5, //CJK UNIFIED IDEOGRAPH - 0xB259: 0x6DD2, //CJK UNIFIED IDEOGRAPH - 0xB25A: 0x6E1A, //CJK UNIFIED IDEOGRAPH - 0xB25B: 0x6DB5, //CJK UNIFIED IDEOGRAPH - 0xB25C: 0x6DDA, //CJK UNIFIED IDEOGRAPH - 0xB25D: 0x6DEB, //CJK UNIFIED IDEOGRAPH - 0xB25E: 0x6DD8, //CJK UNIFIED IDEOGRAPH - 0xB25F: 0x6DEA, //CJK UNIFIED IDEOGRAPH - 0xB260: 0x6DF1, //CJK UNIFIED IDEOGRAPH - 0xB261: 0x6DEE, //CJK UNIFIED IDEOGRAPH - 0xB262: 0x6DE8, //CJK UNIFIED IDEOGRAPH - 0xB263: 0x6DC6, //CJK UNIFIED IDEOGRAPH - 0xB264: 0x6DC4, //CJK UNIFIED IDEOGRAPH - 0xB265: 0x6DAA, //CJK UNIFIED IDEOGRAPH - 0xB266: 0x6DEC, //CJK UNIFIED IDEOGRAPH - 0xB267: 0x6DBF, //CJK UNIFIED IDEOGRAPH - 0xB268: 0x6DE6, //CJK UNIFIED IDEOGRAPH - 0xB269: 0x70F9, //CJK UNIFIED IDEOGRAPH - 0xB26A: 0x7109, //CJK UNIFIED IDEOGRAPH - 0xB26B: 0x710A, //CJK UNIFIED IDEOGRAPH - 0xB26C: 0x70FD, //CJK UNIFIED IDEOGRAPH - 0xB26D: 0x70EF, //CJK UNIFIED IDEOGRAPH - 0xB26E: 0x723D, //CJK UNIFIED IDEOGRAPH - 0xB26F: 0x727D, //CJK UNIFIED IDEOGRAPH - 0xB270: 0x7281, //CJK UNIFIED IDEOGRAPH - 0xB271: 0x731C, //CJK UNIFIED IDEOGRAPH - 0xB272: 0x731B, //CJK UNIFIED IDEOGRAPH - 0xB273: 0x7316, //CJK UNIFIED IDEOGRAPH - 0xB274: 0x7313, //CJK UNIFIED IDEOGRAPH - 0xB275: 0x7319, //CJK UNIFIED IDEOGRAPH - 0xB276: 0x7387, //CJK UNIFIED IDEOGRAPH - 0xB277: 0x7405, //CJK UNIFIED IDEOGRAPH - 0xB278: 0x740A, //CJK UNIFIED IDEOGRAPH - 0xB279: 0x7403, //CJK UNIFIED IDEOGRAPH - 0xB27A: 0x7406, //CJK UNIFIED IDEOGRAPH - 0xB27B: 0x73FE, //CJK UNIFIED IDEOGRAPH - 0xB27C: 0x740D, //CJK UNIFIED IDEOGRAPH - 0xB27D: 0x74E0, //CJK UNIFIED IDEOGRAPH - 0xB27E: 0x74F6, //CJK UNIFIED IDEOGRAPH - 0xB2A1: 0x74F7, //CJK UNIFIED IDEOGRAPH - 0xB2A2: 0x751C, //CJK UNIFIED IDEOGRAPH - 0xB2A3: 0x7522, //CJK UNIFIED IDEOGRAPH - 0xB2A4: 0x7565, //CJK UNIFIED IDEOGRAPH - 0xB2A5: 0x7566, //CJK UNIFIED IDEOGRAPH - 0xB2A6: 0x7562, //CJK UNIFIED IDEOGRAPH - 0xB2A7: 0x7570, //CJK UNIFIED IDEOGRAPH - 0xB2A8: 0x758F, //CJK UNIFIED IDEOGRAPH - 0xB2A9: 0x75D4, //CJK UNIFIED IDEOGRAPH - 0xB2AA: 0x75D5, //CJK UNIFIED IDEOGRAPH - 0xB2AB: 0x75B5, //CJK UNIFIED IDEOGRAPH - 0xB2AC: 0x75CA, //CJK UNIFIED IDEOGRAPH - 0xB2AD: 0x75CD, //CJK UNIFIED IDEOGRAPH - 0xB2AE: 0x768E, //CJK UNIFIED IDEOGRAPH - 0xB2AF: 0x76D4, //CJK UNIFIED IDEOGRAPH - 0xB2B0: 0x76D2, //CJK UNIFIED IDEOGRAPH - 0xB2B1: 0x76DB, //CJK UNIFIED IDEOGRAPH - 0xB2B2: 0x7737, //CJK UNIFIED IDEOGRAPH - 0xB2B3: 0x773E, //CJK UNIFIED IDEOGRAPH - 0xB2B4: 0x773C, //CJK UNIFIED IDEOGRAPH - 0xB2B5: 0x7736, //CJK UNIFIED IDEOGRAPH - 0xB2B6: 0x7738, //CJK UNIFIED IDEOGRAPH - 0xB2B7: 0x773A, //CJK UNIFIED IDEOGRAPH - 0xB2B8: 0x786B, //CJK UNIFIED IDEOGRAPH - 0xB2B9: 0x7843, //CJK UNIFIED IDEOGRAPH - 0xB2BA: 0x784E, //CJK UNIFIED IDEOGRAPH - 0xB2BB: 0x7965, //CJK UNIFIED IDEOGRAPH - 0xB2BC: 0x7968, //CJK UNIFIED IDEOGRAPH - 0xB2BD: 0x796D, //CJK UNIFIED IDEOGRAPH - 0xB2BE: 0x79FB, //CJK UNIFIED IDEOGRAPH - 0xB2BF: 0x7A92, //CJK UNIFIED IDEOGRAPH - 0xB2C0: 0x7A95, //CJK UNIFIED IDEOGRAPH - 0xB2C1: 0x7B20, //CJK UNIFIED IDEOGRAPH - 0xB2C2: 0x7B28, //CJK UNIFIED IDEOGRAPH - 0xB2C3: 0x7B1B, //CJK UNIFIED IDEOGRAPH - 0xB2C4: 0x7B2C, //CJK UNIFIED IDEOGRAPH - 0xB2C5: 0x7B26, //CJK UNIFIED IDEOGRAPH - 0xB2C6: 0x7B19, //CJK UNIFIED IDEOGRAPH - 0xB2C7: 0x7B1E, //CJK UNIFIED IDEOGRAPH - 0xB2C8: 0x7B2E, //CJK UNIFIED IDEOGRAPH - 0xB2C9: 0x7C92, //CJK UNIFIED IDEOGRAPH - 0xB2CA: 0x7C97, //CJK UNIFIED IDEOGRAPH - 0xB2CB: 0x7C95, //CJK UNIFIED IDEOGRAPH - 0xB2CC: 0x7D46, //CJK UNIFIED IDEOGRAPH - 0xB2CD: 0x7D43, //CJK UNIFIED IDEOGRAPH - 0xB2CE: 0x7D71, //CJK UNIFIED IDEOGRAPH - 0xB2CF: 0x7D2E, //CJK UNIFIED IDEOGRAPH - 0xB2D0: 0x7D39, //CJK UNIFIED IDEOGRAPH - 0xB2D1: 0x7D3C, //CJK UNIFIED IDEOGRAPH - 0xB2D2: 0x7D40, //CJK UNIFIED IDEOGRAPH - 0xB2D3: 0x7D30, //CJK UNIFIED IDEOGRAPH - 0xB2D4: 0x7D33, //CJK UNIFIED IDEOGRAPH - 0xB2D5: 0x7D44, //CJK UNIFIED IDEOGRAPH - 0xB2D6: 0x7D2F, //CJK UNIFIED IDEOGRAPH - 0xB2D7: 0x7D42, //CJK UNIFIED IDEOGRAPH - 0xB2D8: 0x7D32, //CJK UNIFIED IDEOGRAPH - 0xB2D9: 0x7D31, //CJK UNIFIED IDEOGRAPH - 0xB2DA: 0x7F3D, //CJK UNIFIED IDEOGRAPH - 0xB2DB: 0x7F9E, //CJK UNIFIED IDEOGRAPH - 0xB2DC: 0x7F9A, //CJK UNIFIED IDEOGRAPH - 0xB2DD: 0x7FCC, //CJK UNIFIED IDEOGRAPH - 0xB2DE: 0x7FCE, //CJK UNIFIED IDEOGRAPH - 0xB2DF: 0x7FD2, //CJK UNIFIED IDEOGRAPH - 0xB2E0: 0x801C, //CJK UNIFIED IDEOGRAPH - 0xB2E1: 0x804A, //CJK UNIFIED IDEOGRAPH - 0xB2E2: 0x8046, //CJK UNIFIED IDEOGRAPH - 0xB2E3: 0x812F, //CJK UNIFIED IDEOGRAPH - 0xB2E4: 0x8116, //CJK UNIFIED IDEOGRAPH - 0xB2E5: 0x8123, //CJK UNIFIED IDEOGRAPH - 0xB2E6: 0x812B, //CJK UNIFIED IDEOGRAPH - 0xB2E7: 0x8129, //CJK UNIFIED IDEOGRAPH - 0xB2E8: 0x8130, //CJK UNIFIED IDEOGRAPH - 0xB2E9: 0x8124, //CJK UNIFIED IDEOGRAPH - 0xB2EA: 0x8202, //CJK UNIFIED IDEOGRAPH - 0xB2EB: 0x8235, //CJK UNIFIED IDEOGRAPH - 0xB2EC: 0x8237, //CJK UNIFIED IDEOGRAPH - 0xB2ED: 0x8236, //CJK UNIFIED IDEOGRAPH - 0xB2EE: 0x8239, //CJK UNIFIED IDEOGRAPH - 0xB2EF: 0x838E, //CJK UNIFIED IDEOGRAPH - 0xB2F0: 0x839E, //CJK UNIFIED IDEOGRAPH - 0xB2F1: 0x8398, //CJK UNIFIED IDEOGRAPH - 0xB2F2: 0x8378, //CJK UNIFIED IDEOGRAPH - 0xB2F3: 0x83A2, //CJK UNIFIED IDEOGRAPH - 0xB2F4: 0x8396, //CJK UNIFIED IDEOGRAPH - 0xB2F5: 0x83BD, //CJK UNIFIED IDEOGRAPH - 0xB2F6: 0x83AB, //CJK UNIFIED IDEOGRAPH - 0xB2F7: 0x8392, //CJK UNIFIED IDEOGRAPH - 0xB2F8: 0x838A, //CJK UNIFIED IDEOGRAPH - 0xB2F9: 0x8393, //CJK UNIFIED IDEOGRAPH - 0xB2FA: 0x8389, //CJK UNIFIED IDEOGRAPH - 0xB2FB: 0x83A0, //CJK UNIFIED IDEOGRAPH - 0xB2FC: 0x8377, //CJK UNIFIED IDEOGRAPH - 0xB2FD: 0x837B, //CJK UNIFIED IDEOGRAPH - 0xB2FE: 0x837C, //CJK UNIFIED IDEOGRAPH - 0xB340: 0x8386, //CJK UNIFIED IDEOGRAPH - 0xB341: 0x83A7, //CJK UNIFIED IDEOGRAPH - 0xB342: 0x8655, //CJK UNIFIED IDEOGRAPH - 0xB343: 0x5F6A, //CJK UNIFIED IDEOGRAPH - 0xB344: 0x86C7, //CJK UNIFIED IDEOGRAPH - 0xB345: 0x86C0, //CJK UNIFIED IDEOGRAPH - 0xB346: 0x86B6, //CJK UNIFIED IDEOGRAPH - 0xB347: 0x86C4, //CJK UNIFIED IDEOGRAPH - 0xB348: 0x86B5, //CJK UNIFIED IDEOGRAPH - 0xB349: 0x86C6, //CJK UNIFIED IDEOGRAPH - 0xB34A: 0x86CB, //CJK UNIFIED IDEOGRAPH - 0xB34B: 0x86B1, //CJK UNIFIED IDEOGRAPH - 0xB34C: 0x86AF, //CJK UNIFIED IDEOGRAPH - 0xB34D: 0x86C9, //CJK UNIFIED IDEOGRAPH - 0xB34E: 0x8853, //CJK UNIFIED IDEOGRAPH - 0xB34F: 0x889E, //CJK UNIFIED IDEOGRAPH - 0xB350: 0x8888, //CJK UNIFIED IDEOGRAPH - 0xB351: 0x88AB, //CJK UNIFIED IDEOGRAPH - 0xB352: 0x8892, //CJK UNIFIED IDEOGRAPH - 0xB353: 0x8896, //CJK UNIFIED IDEOGRAPH - 0xB354: 0x888D, //CJK UNIFIED IDEOGRAPH - 0xB355: 0x888B, //CJK UNIFIED IDEOGRAPH - 0xB356: 0x8993, //CJK UNIFIED IDEOGRAPH - 0xB357: 0x898F, //CJK UNIFIED IDEOGRAPH - 0xB358: 0x8A2A, //CJK UNIFIED IDEOGRAPH - 0xB359: 0x8A1D, //CJK UNIFIED IDEOGRAPH - 0xB35A: 0x8A23, //CJK UNIFIED IDEOGRAPH - 0xB35B: 0x8A25, //CJK UNIFIED IDEOGRAPH - 0xB35C: 0x8A31, //CJK UNIFIED IDEOGRAPH - 0xB35D: 0x8A2D, //CJK UNIFIED IDEOGRAPH - 0xB35E: 0x8A1F, //CJK UNIFIED IDEOGRAPH - 0xB35F: 0x8A1B, //CJK UNIFIED IDEOGRAPH - 0xB360: 0x8A22, //CJK UNIFIED IDEOGRAPH - 0xB361: 0x8C49, //CJK UNIFIED IDEOGRAPH - 0xB362: 0x8C5A, //CJK UNIFIED IDEOGRAPH - 0xB363: 0x8CA9, //CJK UNIFIED IDEOGRAPH - 0xB364: 0x8CAC, //CJK UNIFIED IDEOGRAPH - 0xB365: 0x8CAB, //CJK UNIFIED IDEOGRAPH - 0xB366: 0x8CA8, //CJK UNIFIED IDEOGRAPH - 0xB367: 0x8CAA, //CJK UNIFIED IDEOGRAPH - 0xB368: 0x8CA7, //CJK UNIFIED IDEOGRAPH - 0xB369: 0x8D67, //CJK UNIFIED IDEOGRAPH - 0xB36A: 0x8D66, //CJK UNIFIED IDEOGRAPH - 0xB36B: 0x8DBE, //CJK UNIFIED IDEOGRAPH - 0xB36C: 0x8DBA, //CJK UNIFIED IDEOGRAPH - 0xB36D: 0x8EDB, //CJK UNIFIED IDEOGRAPH - 0xB36E: 0x8EDF, //CJK UNIFIED IDEOGRAPH - 0xB36F: 0x9019, //CJK UNIFIED IDEOGRAPH - 0xB370: 0x900D, //CJK UNIFIED IDEOGRAPH - 0xB371: 0x901A, //CJK UNIFIED IDEOGRAPH - 0xB372: 0x9017, //CJK UNIFIED IDEOGRAPH - 0xB373: 0x9023, //CJK UNIFIED IDEOGRAPH - 0xB374: 0x901F, //CJK UNIFIED IDEOGRAPH - 0xB375: 0x901D, //CJK UNIFIED IDEOGRAPH - 0xB376: 0x9010, //CJK UNIFIED IDEOGRAPH - 0xB377: 0x9015, //CJK UNIFIED IDEOGRAPH - 0xB378: 0x901E, //CJK UNIFIED IDEOGRAPH - 0xB379: 0x9020, //CJK UNIFIED IDEOGRAPH - 0xB37A: 0x900F, //CJK UNIFIED IDEOGRAPH - 0xB37B: 0x9022, //CJK UNIFIED IDEOGRAPH - 0xB37C: 0x9016, //CJK UNIFIED IDEOGRAPH - 0xB37D: 0x901B, //CJK UNIFIED IDEOGRAPH - 0xB37E: 0x9014, //CJK UNIFIED IDEOGRAPH - 0xB3A1: 0x90E8, //CJK UNIFIED IDEOGRAPH - 0xB3A2: 0x90ED, //CJK UNIFIED IDEOGRAPH - 0xB3A3: 0x90FD, //CJK UNIFIED IDEOGRAPH - 0xB3A4: 0x9157, //CJK UNIFIED IDEOGRAPH - 0xB3A5: 0x91CE, //CJK UNIFIED IDEOGRAPH - 0xB3A6: 0x91F5, //CJK UNIFIED IDEOGRAPH - 0xB3A7: 0x91E6, //CJK UNIFIED IDEOGRAPH - 0xB3A8: 0x91E3, //CJK UNIFIED IDEOGRAPH - 0xB3A9: 0x91E7, //CJK UNIFIED IDEOGRAPH - 0xB3AA: 0x91ED, //CJK UNIFIED IDEOGRAPH - 0xB3AB: 0x91E9, //CJK UNIFIED IDEOGRAPH - 0xB3AC: 0x9589, //CJK UNIFIED IDEOGRAPH - 0xB3AD: 0x966A, //CJK UNIFIED IDEOGRAPH - 0xB3AE: 0x9675, //CJK UNIFIED IDEOGRAPH - 0xB3AF: 0x9673, //CJK UNIFIED IDEOGRAPH - 0xB3B0: 0x9678, //CJK UNIFIED IDEOGRAPH - 0xB3B1: 0x9670, //CJK UNIFIED IDEOGRAPH - 0xB3B2: 0x9674, //CJK UNIFIED IDEOGRAPH - 0xB3B3: 0x9676, //CJK UNIFIED IDEOGRAPH - 0xB3B4: 0x9677, //CJK UNIFIED IDEOGRAPH - 0xB3B5: 0x966C, //CJK UNIFIED IDEOGRAPH - 0xB3B6: 0x96C0, //CJK UNIFIED IDEOGRAPH - 0xB3B7: 0x96EA, //CJK UNIFIED IDEOGRAPH - 0xB3B8: 0x96E9, //CJK UNIFIED IDEOGRAPH - 0xB3B9: 0x7AE0, //CJK UNIFIED IDEOGRAPH - 0xB3BA: 0x7ADF, //CJK UNIFIED IDEOGRAPH - 0xB3BB: 0x9802, //CJK UNIFIED IDEOGRAPH - 0xB3BC: 0x9803, //CJK UNIFIED IDEOGRAPH - 0xB3BD: 0x9B5A, //CJK UNIFIED IDEOGRAPH - 0xB3BE: 0x9CE5, //CJK UNIFIED IDEOGRAPH - 0xB3BF: 0x9E75, //CJK UNIFIED IDEOGRAPH - 0xB3C0: 0x9E7F, //CJK UNIFIED IDEOGRAPH - 0xB3C1: 0x9EA5, //CJK UNIFIED IDEOGRAPH - 0xB3C2: 0x9EBB, //CJK UNIFIED IDEOGRAPH - 0xB3C3: 0x50A2, //CJK UNIFIED IDEOGRAPH - 0xB3C4: 0x508D, //CJK UNIFIED IDEOGRAPH - 0xB3C5: 0x5085, //CJK UNIFIED IDEOGRAPH - 0xB3C6: 0x5099, //CJK UNIFIED IDEOGRAPH - 0xB3C7: 0x5091, //CJK UNIFIED IDEOGRAPH - 0xB3C8: 0x5080, //CJK UNIFIED IDEOGRAPH - 0xB3C9: 0x5096, //CJK UNIFIED IDEOGRAPH - 0xB3CA: 0x5098, //CJK UNIFIED IDEOGRAPH - 0xB3CB: 0x509A, //CJK UNIFIED IDEOGRAPH - 0xB3CC: 0x6700, //CJK UNIFIED IDEOGRAPH - 0xB3CD: 0x51F1, //CJK UNIFIED IDEOGRAPH - 0xB3CE: 0x5272, //CJK UNIFIED IDEOGRAPH - 0xB3CF: 0x5274, //CJK UNIFIED IDEOGRAPH - 0xB3D0: 0x5275, //CJK UNIFIED IDEOGRAPH - 0xB3D1: 0x5269, //CJK UNIFIED IDEOGRAPH - 0xB3D2: 0x52DE, //CJK UNIFIED IDEOGRAPH - 0xB3D3: 0x52DD, //CJK UNIFIED IDEOGRAPH - 0xB3D4: 0x52DB, //CJK UNIFIED IDEOGRAPH - 0xB3D5: 0x535A, //CJK UNIFIED IDEOGRAPH - 0xB3D6: 0x53A5, //CJK UNIFIED IDEOGRAPH - 0xB3D7: 0x557B, //CJK UNIFIED IDEOGRAPH - 0xB3D8: 0x5580, //CJK UNIFIED IDEOGRAPH - 0xB3D9: 0x55A7, //CJK UNIFIED IDEOGRAPH - 0xB3DA: 0x557C, //CJK UNIFIED IDEOGRAPH - 0xB3DB: 0x558A, //CJK UNIFIED IDEOGRAPH - 0xB3DC: 0x559D, //CJK UNIFIED IDEOGRAPH - 0xB3DD: 0x5598, //CJK UNIFIED IDEOGRAPH - 0xB3DE: 0x5582, //CJK UNIFIED IDEOGRAPH - 0xB3DF: 0x559C, //CJK UNIFIED IDEOGRAPH - 0xB3E0: 0x55AA, //CJK UNIFIED IDEOGRAPH - 0xB3E1: 0x5594, //CJK UNIFIED IDEOGRAPH - 0xB3E2: 0x5587, //CJK UNIFIED IDEOGRAPH - 0xB3E3: 0x558B, //CJK UNIFIED IDEOGRAPH - 0xB3E4: 0x5583, //CJK UNIFIED IDEOGRAPH - 0xB3E5: 0x55B3, //CJK UNIFIED IDEOGRAPH - 0xB3E6: 0x55AE, //CJK UNIFIED IDEOGRAPH - 0xB3E7: 0x559F, //CJK UNIFIED IDEOGRAPH - 0xB3E8: 0x553E, //CJK UNIFIED IDEOGRAPH - 0xB3E9: 0x55B2, //CJK UNIFIED IDEOGRAPH - 0xB3EA: 0x559A, //CJK UNIFIED IDEOGRAPH - 0xB3EB: 0x55BB, //CJK UNIFIED IDEOGRAPH - 0xB3EC: 0x55AC, //CJK UNIFIED IDEOGRAPH - 0xB3ED: 0x55B1, //CJK UNIFIED IDEOGRAPH - 0xB3EE: 0x557E, //CJK UNIFIED IDEOGRAPH - 0xB3EF: 0x5589, //CJK UNIFIED IDEOGRAPH - 0xB3F0: 0x55AB, //CJK UNIFIED IDEOGRAPH - 0xB3F1: 0x5599, //CJK UNIFIED IDEOGRAPH - 0xB3F2: 0x570D, //CJK UNIFIED IDEOGRAPH - 0xB3F3: 0x582F, //CJK UNIFIED IDEOGRAPH - 0xB3F4: 0x582A, //CJK UNIFIED IDEOGRAPH - 0xB3F5: 0x5834, //CJK UNIFIED IDEOGRAPH - 0xB3F6: 0x5824, //CJK UNIFIED IDEOGRAPH - 0xB3F7: 0x5830, //CJK UNIFIED IDEOGRAPH - 0xB3F8: 0x5831, //CJK UNIFIED IDEOGRAPH - 0xB3F9: 0x5821, //CJK UNIFIED IDEOGRAPH - 0xB3FA: 0x581D, //CJK UNIFIED IDEOGRAPH - 0xB3FB: 0x5820, //CJK UNIFIED IDEOGRAPH - 0xB3FC: 0x58F9, //CJK UNIFIED IDEOGRAPH - 0xB3FD: 0x58FA, //CJK UNIFIED IDEOGRAPH - 0xB3FE: 0x5960, //CJK UNIFIED IDEOGRAPH - 0xB440: 0x5A77, //CJK UNIFIED IDEOGRAPH - 0xB441: 0x5A9A, //CJK UNIFIED IDEOGRAPH - 0xB442: 0x5A7F, //CJK UNIFIED IDEOGRAPH - 0xB443: 0x5A92, //CJK UNIFIED IDEOGRAPH - 0xB444: 0x5A9B, //CJK UNIFIED IDEOGRAPH - 0xB445: 0x5AA7, //CJK UNIFIED IDEOGRAPH - 0xB446: 0x5B73, //CJK UNIFIED IDEOGRAPH - 0xB447: 0x5B71, //CJK UNIFIED IDEOGRAPH - 0xB448: 0x5BD2, //CJK UNIFIED IDEOGRAPH - 0xB449: 0x5BCC, //CJK UNIFIED IDEOGRAPH - 0xB44A: 0x5BD3, //CJK UNIFIED IDEOGRAPH - 0xB44B: 0x5BD0, //CJK UNIFIED IDEOGRAPH - 0xB44C: 0x5C0A, //CJK UNIFIED IDEOGRAPH - 0xB44D: 0x5C0B, //CJK UNIFIED IDEOGRAPH - 0xB44E: 0x5C31, //CJK UNIFIED IDEOGRAPH - 0xB44F: 0x5D4C, //CJK UNIFIED IDEOGRAPH - 0xB450: 0x5D50, //CJK UNIFIED IDEOGRAPH - 0xB451: 0x5D34, //CJK UNIFIED IDEOGRAPH - 0xB452: 0x5D47, //CJK UNIFIED IDEOGRAPH - 0xB453: 0x5DFD, //CJK UNIFIED IDEOGRAPH - 0xB454: 0x5E45, //CJK UNIFIED IDEOGRAPH - 0xB455: 0x5E3D, //CJK UNIFIED IDEOGRAPH - 0xB456: 0x5E40, //CJK UNIFIED IDEOGRAPH - 0xB457: 0x5E43, //CJK UNIFIED IDEOGRAPH - 0xB458: 0x5E7E, //CJK UNIFIED IDEOGRAPH - 0xB459: 0x5ECA, //CJK UNIFIED IDEOGRAPH - 0xB45A: 0x5EC1, //CJK UNIFIED IDEOGRAPH - 0xB45B: 0x5EC2, //CJK UNIFIED IDEOGRAPH - 0xB45C: 0x5EC4, //CJK UNIFIED IDEOGRAPH - 0xB45D: 0x5F3C, //CJK UNIFIED IDEOGRAPH - 0xB45E: 0x5F6D, //CJK UNIFIED IDEOGRAPH - 0xB45F: 0x5FA9, //CJK UNIFIED IDEOGRAPH - 0xB460: 0x5FAA, //CJK UNIFIED IDEOGRAPH - 0xB461: 0x5FA8, //CJK UNIFIED IDEOGRAPH - 0xB462: 0x60D1, //CJK UNIFIED IDEOGRAPH - 0xB463: 0x60E1, //CJK UNIFIED IDEOGRAPH - 0xB464: 0x60B2, //CJK UNIFIED IDEOGRAPH - 0xB465: 0x60B6, //CJK UNIFIED IDEOGRAPH - 0xB466: 0x60E0, //CJK UNIFIED IDEOGRAPH - 0xB467: 0x611C, //CJK UNIFIED IDEOGRAPH - 0xB468: 0x6123, //CJK UNIFIED IDEOGRAPH - 0xB469: 0x60FA, //CJK UNIFIED IDEOGRAPH - 0xB46A: 0x6115, //CJK UNIFIED IDEOGRAPH - 0xB46B: 0x60F0, //CJK UNIFIED IDEOGRAPH - 0xB46C: 0x60FB, //CJK UNIFIED IDEOGRAPH - 0xB46D: 0x60F4, //CJK UNIFIED IDEOGRAPH - 0xB46E: 0x6168, //CJK UNIFIED IDEOGRAPH - 0xB46F: 0x60F1, //CJK UNIFIED IDEOGRAPH - 0xB470: 0x610E, //CJK UNIFIED IDEOGRAPH - 0xB471: 0x60F6, //CJK UNIFIED IDEOGRAPH - 0xB472: 0x6109, //CJK UNIFIED IDEOGRAPH - 0xB473: 0x6100, //CJK UNIFIED IDEOGRAPH - 0xB474: 0x6112, //CJK UNIFIED IDEOGRAPH - 0xB475: 0x621F, //CJK UNIFIED IDEOGRAPH - 0xB476: 0x6249, //CJK UNIFIED IDEOGRAPH - 0xB477: 0x63A3, //CJK UNIFIED IDEOGRAPH - 0xB478: 0x638C, //CJK UNIFIED IDEOGRAPH - 0xB479: 0x63CF, //CJK UNIFIED IDEOGRAPH - 0xB47A: 0x63C0, //CJK UNIFIED IDEOGRAPH - 0xB47B: 0x63E9, //CJK UNIFIED IDEOGRAPH - 0xB47C: 0x63C9, //CJK UNIFIED IDEOGRAPH - 0xB47D: 0x63C6, //CJK UNIFIED IDEOGRAPH - 0xB47E: 0x63CD, //CJK UNIFIED IDEOGRAPH - 0xB4A1: 0x63D2, //CJK UNIFIED IDEOGRAPH - 0xB4A2: 0x63E3, //CJK UNIFIED IDEOGRAPH - 0xB4A3: 0x63D0, //CJK UNIFIED IDEOGRAPH - 0xB4A4: 0x63E1, //CJK UNIFIED IDEOGRAPH - 0xB4A5: 0x63D6, //CJK UNIFIED IDEOGRAPH - 0xB4A6: 0x63ED, //CJK UNIFIED IDEOGRAPH - 0xB4A7: 0x63EE, //CJK UNIFIED IDEOGRAPH - 0xB4A8: 0x6376, //CJK UNIFIED IDEOGRAPH - 0xB4A9: 0x63F4, //CJK UNIFIED IDEOGRAPH - 0xB4AA: 0x63EA, //CJK UNIFIED IDEOGRAPH - 0xB4AB: 0x63DB, //CJK UNIFIED IDEOGRAPH - 0xB4AC: 0x6452, //CJK UNIFIED IDEOGRAPH - 0xB4AD: 0x63DA, //CJK UNIFIED IDEOGRAPH - 0xB4AE: 0x63F9, //CJK UNIFIED IDEOGRAPH - 0xB4AF: 0x655E, //CJK UNIFIED IDEOGRAPH - 0xB4B0: 0x6566, //CJK UNIFIED IDEOGRAPH - 0xB4B1: 0x6562, //CJK UNIFIED IDEOGRAPH - 0xB4B2: 0x6563, //CJK UNIFIED IDEOGRAPH - 0xB4B3: 0x6591, //CJK UNIFIED IDEOGRAPH - 0xB4B4: 0x6590, //CJK UNIFIED IDEOGRAPH - 0xB4B5: 0x65AF, //CJK UNIFIED IDEOGRAPH - 0xB4B6: 0x666E, //CJK UNIFIED IDEOGRAPH - 0xB4B7: 0x6670, //CJK UNIFIED IDEOGRAPH - 0xB4B8: 0x6674, //CJK UNIFIED IDEOGRAPH - 0xB4B9: 0x6676, //CJK UNIFIED IDEOGRAPH - 0xB4BA: 0x666F, //CJK UNIFIED IDEOGRAPH - 0xB4BB: 0x6691, //CJK UNIFIED IDEOGRAPH - 0xB4BC: 0x667A, //CJK UNIFIED IDEOGRAPH - 0xB4BD: 0x667E, //CJK UNIFIED IDEOGRAPH - 0xB4BE: 0x6677, //CJK UNIFIED IDEOGRAPH - 0xB4BF: 0x66FE, //CJK UNIFIED IDEOGRAPH - 0xB4C0: 0x66FF, //CJK UNIFIED IDEOGRAPH - 0xB4C1: 0x671F, //CJK UNIFIED IDEOGRAPH - 0xB4C2: 0x671D, //CJK UNIFIED IDEOGRAPH - 0xB4C3: 0x68FA, //CJK UNIFIED IDEOGRAPH - 0xB4C4: 0x68D5, //CJK UNIFIED IDEOGRAPH - 0xB4C5: 0x68E0, //CJK UNIFIED IDEOGRAPH - 0xB4C6: 0x68D8, //CJK UNIFIED IDEOGRAPH - 0xB4C7: 0x68D7, //CJK UNIFIED IDEOGRAPH - 0xB4C8: 0x6905, //CJK UNIFIED IDEOGRAPH - 0xB4C9: 0x68DF, //CJK UNIFIED IDEOGRAPH - 0xB4CA: 0x68F5, //CJK UNIFIED IDEOGRAPH - 0xB4CB: 0x68EE, //CJK UNIFIED IDEOGRAPH - 0xB4CC: 0x68E7, //CJK UNIFIED IDEOGRAPH - 0xB4CD: 0x68F9, //CJK UNIFIED IDEOGRAPH - 0xB4CE: 0x68D2, //CJK UNIFIED IDEOGRAPH - 0xB4CF: 0x68F2, //CJK UNIFIED IDEOGRAPH - 0xB4D0: 0x68E3, //CJK UNIFIED IDEOGRAPH - 0xB4D1: 0x68CB, //CJK UNIFIED IDEOGRAPH - 0xB4D2: 0x68CD, //CJK UNIFIED IDEOGRAPH - 0xB4D3: 0x690D, //CJK UNIFIED IDEOGRAPH - 0xB4D4: 0x6912, //CJK UNIFIED IDEOGRAPH - 0xB4D5: 0x690E, //CJK UNIFIED IDEOGRAPH - 0xB4D6: 0x68C9, //CJK UNIFIED IDEOGRAPH - 0xB4D7: 0x68DA, //CJK UNIFIED IDEOGRAPH - 0xB4D8: 0x696E, //CJK UNIFIED IDEOGRAPH - 0xB4D9: 0x68FB, //CJK UNIFIED IDEOGRAPH - 0xB4DA: 0x6B3E, //CJK UNIFIED IDEOGRAPH - 0xB4DB: 0x6B3A, //CJK UNIFIED IDEOGRAPH - 0xB4DC: 0x6B3D, //CJK UNIFIED IDEOGRAPH - 0xB4DD: 0x6B98, //CJK UNIFIED IDEOGRAPH - 0xB4DE: 0x6B96, //CJK UNIFIED IDEOGRAPH - 0xB4DF: 0x6BBC, //CJK UNIFIED IDEOGRAPH - 0xB4E0: 0x6BEF, //CJK UNIFIED IDEOGRAPH - 0xB4E1: 0x6C2E, //CJK UNIFIED IDEOGRAPH - 0xB4E2: 0x6C2F, //CJK UNIFIED IDEOGRAPH - 0xB4E3: 0x6C2C, //CJK UNIFIED IDEOGRAPH - 0xB4E4: 0x6E2F, //CJK UNIFIED IDEOGRAPH - 0xB4E5: 0x6E38, //CJK UNIFIED IDEOGRAPH - 0xB4E6: 0x6E54, //CJK UNIFIED IDEOGRAPH - 0xB4E7: 0x6E21, //CJK UNIFIED IDEOGRAPH - 0xB4E8: 0x6E32, //CJK UNIFIED IDEOGRAPH - 0xB4E9: 0x6E67, //CJK UNIFIED IDEOGRAPH - 0xB4EA: 0x6E4A, //CJK UNIFIED IDEOGRAPH - 0xB4EB: 0x6E20, //CJK UNIFIED IDEOGRAPH - 0xB4EC: 0x6E25, //CJK UNIFIED IDEOGRAPH - 0xB4ED: 0x6E23, //CJK UNIFIED IDEOGRAPH - 0xB4EE: 0x6E1B, //CJK UNIFIED IDEOGRAPH - 0xB4EF: 0x6E5B, //CJK UNIFIED IDEOGRAPH - 0xB4F0: 0x6E58, //CJK UNIFIED IDEOGRAPH - 0xB4F1: 0x6E24, //CJK UNIFIED IDEOGRAPH - 0xB4F2: 0x6E56, //CJK UNIFIED IDEOGRAPH - 0xB4F3: 0x6E6E, //CJK UNIFIED IDEOGRAPH - 0xB4F4: 0x6E2D, //CJK UNIFIED IDEOGRAPH - 0xB4F5: 0x6E26, //CJK UNIFIED IDEOGRAPH - 0xB4F6: 0x6E6F, //CJK UNIFIED IDEOGRAPH - 0xB4F7: 0x6E34, //CJK UNIFIED IDEOGRAPH - 0xB4F8: 0x6E4D, //CJK UNIFIED IDEOGRAPH - 0xB4F9: 0x6E3A, //CJK UNIFIED IDEOGRAPH - 0xB4FA: 0x6E2C, //CJK UNIFIED IDEOGRAPH - 0xB4FB: 0x6E43, //CJK UNIFIED IDEOGRAPH - 0xB4FC: 0x6E1D, //CJK UNIFIED IDEOGRAPH - 0xB4FD: 0x6E3E, //CJK UNIFIED IDEOGRAPH - 0xB4FE: 0x6ECB, //CJK UNIFIED IDEOGRAPH - 0xB540: 0x6E89, //CJK UNIFIED IDEOGRAPH - 0xB541: 0x6E19, //CJK UNIFIED IDEOGRAPH - 0xB542: 0x6E4E, //CJK UNIFIED IDEOGRAPH - 0xB543: 0x6E63, //CJK UNIFIED IDEOGRAPH - 0xB544: 0x6E44, //CJK UNIFIED IDEOGRAPH - 0xB545: 0x6E72, //CJK UNIFIED IDEOGRAPH - 0xB546: 0x6E69, //CJK UNIFIED IDEOGRAPH - 0xB547: 0x6E5F, //CJK UNIFIED IDEOGRAPH - 0xB548: 0x7119, //CJK UNIFIED IDEOGRAPH - 0xB549: 0x711A, //CJK UNIFIED IDEOGRAPH - 0xB54A: 0x7126, //CJK UNIFIED IDEOGRAPH - 0xB54B: 0x7130, //CJK UNIFIED IDEOGRAPH - 0xB54C: 0x7121, //CJK UNIFIED IDEOGRAPH - 0xB54D: 0x7136, //CJK UNIFIED IDEOGRAPH - 0xB54E: 0x716E, //CJK UNIFIED IDEOGRAPH - 0xB54F: 0x711C, //CJK UNIFIED IDEOGRAPH - 0xB550: 0x724C, //CJK UNIFIED IDEOGRAPH - 0xB551: 0x7284, //CJK UNIFIED IDEOGRAPH - 0xB552: 0x7280, //CJK UNIFIED IDEOGRAPH - 0xB553: 0x7336, //CJK UNIFIED IDEOGRAPH - 0xB554: 0x7325, //CJK UNIFIED IDEOGRAPH - 0xB555: 0x7334, //CJK UNIFIED IDEOGRAPH - 0xB556: 0x7329, //CJK UNIFIED IDEOGRAPH - 0xB557: 0x743A, //CJK UNIFIED IDEOGRAPH - 0xB558: 0x742A, //CJK UNIFIED IDEOGRAPH - 0xB559: 0x7433, //CJK UNIFIED IDEOGRAPH - 0xB55A: 0x7422, //CJK UNIFIED IDEOGRAPH - 0xB55B: 0x7425, //CJK UNIFIED IDEOGRAPH - 0xB55C: 0x7435, //CJK UNIFIED IDEOGRAPH - 0xB55D: 0x7436, //CJK UNIFIED IDEOGRAPH - 0xB55E: 0x7434, //CJK UNIFIED IDEOGRAPH - 0xB55F: 0x742F, //CJK UNIFIED IDEOGRAPH - 0xB560: 0x741B, //CJK UNIFIED IDEOGRAPH - 0xB561: 0x7426, //CJK UNIFIED IDEOGRAPH - 0xB562: 0x7428, //CJK UNIFIED IDEOGRAPH - 0xB563: 0x7525, //CJK UNIFIED IDEOGRAPH - 0xB564: 0x7526, //CJK UNIFIED IDEOGRAPH - 0xB565: 0x756B, //CJK UNIFIED IDEOGRAPH - 0xB566: 0x756A, //CJK UNIFIED IDEOGRAPH - 0xB567: 0x75E2, //CJK UNIFIED IDEOGRAPH - 0xB568: 0x75DB, //CJK UNIFIED IDEOGRAPH - 0xB569: 0x75E3, //CJK UNIFIED IDEOGRAPH - 0xB56A: 0x75D9, //CJK UNIFIED IDEOGRAPH - 0xB56B: 0x75D8, //CJK UNIFIED IDEOGRAPH - 0xB56C: 0x75DE, //CJK UNIFIED IDEOGRAPH - 0xB56D: 0x75E0, //CJK UNIFIED IDEOGRAPH - 0xB56E: 0x767B, //CJK UNIFIED IDEOGRAPH - 0xB56F: 0x767C, //CJK UNIFIED IDEOGRAPH - 0xB570: 0x7696, //CJK UNIFIED IDEOGRAPH - 0xB571: 0x7693, //CJK UNIFIED IDEOGRAPH - 0xB572: 0x76B4, //CJK UNIFIED IDEOGRAPH - 0xB573: 0x76DC, //CJK UNIFIED IDEOGRAPH - 0xB574: 0x774F, //CJK UNIFIED IDEOGRAPH - 0xB575: 0x77ED, //CJK UNIFIED IDEOGRAPH - 0xB576: 0x785D, //CJK UNIFIED IDEOGRAPH - 0xB577: 0x786C, //CJK UNIFIED IDEOGRAPH - 0xB578: 0x786F, //CJK UNIFIED IDEOGRAPH - 0xB579: 0x7A0D, //CJK UNIFIED IDEOGRAPH - 0xB57A: 0x7A08, //CJK UNIFIED IDEOGRAPH - 0xB57B: 0x7A0B, //CJK UNIFIED IDEOGRAPH - 0xB57C: 0x7A05, //CJK UNIFIED IDEOGRAPH - 0xB57D: 0x7A00, //CJK UNIFIED IDEOGRAPH - 0xB57E: 0x7A98, //CJK UNIFIED IDEOGRAPH - 0xB5A1: 0x7A97, //CJK UNIFIED IDEOGRAPH - 0xB5A2: 0x7A96, //CJK UNIFIED IDEOGRAPH - 0xB5A3: 0x7AE5, //CJK UNIFIED IDEOGRAPH - 0xB5A4: 0x7AE3, //CJK UNIFIED IDEOGRAPH - 0xB5A5: 0x7B49, //CJK UNIFIED IDEOGRAPH - 0xB5A6: 0x7B56, //CJK UNIFIED IDEOGRAPH - 0xB5A7: 0x7B46, //CJK UNIFIED IDEOGRAPH - 0xB5A8: 0x7B50, //CJK UNIFIED IDEOGRAPH - 0xB5A9: 0x7B52, //CJK UNIFIED IDEOGRAPH - 0xB5AA: 0x7B54, //CJK UNIFIED IDEOGRAPH - 0xB5AB: 0x7B4D, //CJK UNIFIED IDEOGRAPH - 0xB5AC: 0x7B4B, //CJK UNIFIED IDEOGRAPH - 0xB5AD: 0x7B4F, //CJK UNIFIED IDEOGRAPH - 0xB5AE: 0x7B51, //CJK UNIFIED IDEOGRAPH - 0xB5AF: 0x7C9F, //CJK UNIFIED IDEOGRAPH - 0xB5B0: 0x7CA5, //CJK UNIFIED IDEOGRAPH - 0xB5B1: 0x7D5E, //CJK UNIFIED IDEOGRAPH - 0xB5B2: 0x7D50, //CJK UNIFIED IDEOGRAPH - 0xB5B3: 0x7D68, //CJK UNIFIED IDEOGRAPH - 0xB5B4: 0x7D55, //CJK UNIFIED IDEOGRAPH - 0xB5B5: 0x7D2B, //CJK UNIFIED IDEOGRAPH - 0xB5B6: 0x7D6E, //CJK UNIFIED IDEOGRAPH - 0xB5B7: 0x7D72, //CJK UNIFIED IDEOGRAPH - 0xB5B8: 0x7D61, //CJK UNIFIED IDEOGRAPH - 0xB5B9: 0x7D66, //CJK UNIFIED IDEOGRAPH - 0xB5BA: 0x7D62, //CJK UNIFIED IDEOGRAPH - 0xB5BB: 0x7D70, //CJK UNIFIED IDEOGRAPH - 0xB5BC: 0x7D73, //CJK UNIFIED IDEOGRAPH - 0xB5BD: 0x5584, //CJK UNIFIED IDEOGRAPH - 0xB5BE: 0x7FD4, //CJK UNIFIED IDEOGRAPH - 0xB5BF: 0x7FD5, //CJK UNIFIED IDEOGRAPH - 0xB5C0: 0x800B, //CJK UNIFIED IDEOGRAPH - 0xB5C1: 0x8052, //CJK UNIFIED IDEOGRAPH - 0xB5C2: 0x8085, //CJK UNIFIED IDEOGRAPH - 0xB5C3: 0x8155, //CJK UNIFIED IDEOGRAPH - 0xB5C4: 0x8154, //CJK UNIFIED IDEOGRAPH - 0xB5C5: 0x814B, //CJK UNIFIED IDEOGRAPH - 0xB5C6: 0x8151, //CJK UNIFIED IDEOGRAPH - 0xB5C7: 0x814E, //CJK UNIFIED IDEOGRAPH - 0xB5C8: 0x8139, //CJK UNIFIED IDEOGRAPH - 0xB5C9: 0x8146, //CJK UNIFIED IDEOGRAPH - 0xB5CA: 0x813E, //CJK UNIFIED IDEOGRAPH - 0xB5CB: 0x814C, //CJK UNIFIED IDEOGRAPH - 0xB5CC: 0x8153, //CJK UNIFIED IDEOGRAPH - 0xB5CD: 0x8174, //CJK UNIFIED IDEOGRAPH - 0xB5CE: 0x8212, //CJK UNIFIED IDEOGRAPH - 0xB5CF: 0x821C, //CJK UNIFIED IDEOGRAPH - 0xB5D0: 0x83E9, //CJK UNIFIED IDEOGRAPH - 0xB5D1: 0x8403, //CJK UNIFIED IDEOGRAPH - 0xB5D2: 0x83F8, //CJK UNIFIED IDEOGRAPH - 0xB5D3: 0x840D, //CJK UNIFIED IDEOGRAPH - 0xB5D4: 0x83E0, //CJK UNIFIED IDEOGRAPH - 0xB5D5: 0x83C5, //CJK UNIFIED IDEOGRAPH - 0xB5D6: 0x840B, //CJK UNIFIED IDEOGRAPH - 0xB5D7: 0x83C1, //CJK UNIFIED IDEOGRAPH - 0xB5D8: 0x83EF, //CJK UNIFIED IDEOGRAPH - 0xB5D9: 0x83F1, //CJK UNIFIED IDEOGRAPH - 0xB5DA: 0x83F4, //CJK UNIFIED IDEOGRAPH - 0xB5DB: 0x8457, //CJK UNIFIED IDEOGRAPH - 0xB5DC: 0x840A, //CJK UNIFIED IDEOGRAPH - 0xB5DD: 0x83F0, //CJK UNIFIED IDEOGRAPH - 0xB5DE: 0x840C, //CJK UNIFIED IDEOGRAPH - 0xB5DF: 0x83CC, //CJK UNIFIED IDEOGRAPH - 0xB5E0: 0x83FD, //CJK UNIFIED IDEOGRAPH - 0xB5E1: 0x83F2, //CJK UNIFIED IDEOGRAPH - 0xB5E2: 0x83CA, //CJK UNIFIED IDEOGRAPH - 0xB5E3: 0x8438, //CJK UNIFIED IDEOGRAPH - 0xB5E4: 0x840E, //CJK UNIFIED IDEOGRAPH - 0xB5E5: 0x8404, //CJK UNIFIED IDEOGRAPH - 0xB5E6: 0x83DC, //CJK UNIFIED IDEOGRAPH - 0xB5E7: 0x8407, //CJK UNIFIED IDEOGRAPH - 0xB5E8: 0x83D4, //CJK UNIFIED IDEOGRAPH - 0xB5E9: 0x83DF, //CJK UNIFIED IDEOGRAPH - 0xB5EA: 0x865B, //CJK UNIFIED IDEOGRAPH - 0xB5EB: 0x86DF, //CJK UNIFIED IDEOGRAPH - 0xB5EC: 0x86D9, //CJK UNIFIED IDEOGRAPH - 0xB5ED: 0x86ED, //CJK UNIFIED IDEOGRAPH - 0xB5EE: 0x86D4, //CJK UNIFIED IDEOGRAPH - 0xB5EF: 0x86DB, //CJK UNIFIED IDEOGRAPH - 0xB5F0: 0x86E4, //CJK UNIFIED IDEOGRAPH - 0xB5F1: 0x86D0, //CJK UNIFIED IDEOGRAPH - 0xB5F2: 0x86DE, //CJK UNIFIED IDEOGRAPH - 0xB5F3: 0x8857, //CJK UNIFIED IDEOGRAPH - 0xB5F4: 0x88C1, //CJK UNIFIED IDEOGRAPH - 0xB5F5: 0x88C2, //CJK UNIFIED IDEOGRAPH - 0xB5F6: 0x88B1, //CJK UNIFIED IDEOGRAPH - 0xB5F7: 0x8983, //CJK UNIFIED IDEOGRAPH - 0xB5F8: 0x8996, //CJK UNIFIED IDEOGRAPH - 0xB5F9: 0x8A3B, //CJK UNIFIED IDEOGRAPH - 0xB5FA: 0x8A60, //CJK UNIFIED IDEOGRAPH - 0xB5FB: 0x8A55, //CJK UNIFIED IDEOGRAPH - 0xB5FC: 0x8A5E, //CJK UNIFIED IDEOGRAPH - 0xB5FD: 0x8A3C, //CJK UNIFIED IDEOGRAPH - 0xB5FE: 0x8A41, //CJK UNIFIED IDEOGRAPH - 0xB640: 0x8A54, //CJK UNIFIED IDEOGRAPH - 0xB641: 0x8A5B, //CJK UNIFIED IDEOGRAPH - 0xB642: 0x8A50, //CJK UNIFIED IDEOGRAPH - 0xB643: 0x8A46, //CJK UNIFIED IDEOGRAPH - 0xB644: 0x8A34, //CJK UNIFIED IDEOGRAPH - 0xB645: 0x8A3A, //CJK UNIFIED IDEOGRAPH - 0xB646: 0x8A36, //CJK UNIFIED IDEOGRAPH - 0xB647: 0x8A56, //CJK UNIFIED IDEOGRAPH - 0xB648: 0x8C61, //CJK UNIFIED IDEOGRAPH - 0xB649: 0x8C82, //CJK UNIFIED IDEOGRAPH - 0xB64A: 0x8CAF, //CJK UNIFIED IDEOGRAPH - 0xB64B: 0x8CBC, //CJK UNIFIED IDEOGRAPH - 0xB64C: 0x8CB3, //CJK UNIFIED IDEOGRAPH - 0xB64D: 0x8CBD, //CJK UNIFIED IDEOGRAPH - 0xB64E: 0x8CC1, //CJK UNIFIED IDEOGRAPH - 0xB64F: 0x8CBB, //CJK UNIFIED IDEOGRAPH - 0xB650: 0x8CC0, //CJK UNIFIED IDEOGRAPH - 0xB651: 0x8CB4, //CJK UNIFIED IDEOGRAPH - 0xB652: 0x8CB7, //CJK UNIFIED IDEOGRAPH - 0xB653: 0x8CB6, //CJK UNIFIED IDEOGRAPH - 0xB654: 0x8CBF, //CJK UNIFIED IDEOGRAPH - 0xB655: 0x8CB8, //CJK UNIFIED IDEOGRAPH - 0xB656: 0x8D8A, //CJK UNIFIED IDEOGRAPH - 0xB657: 0x8D85, //CJK UNIFIED IDEOGRAPH - 0xB658: 0x8D81, //CJK UNIFIED IDEOGRAPH - 0xB659: 0x8DCE, //CJK UNIFIED IDEOGRAPH - 0xB65A: 0x8DDD, //CJK UNIFIED IDEOGRAPH - 0xB65B: 0x8DCB, //CJK UNIFIED IDEOGRAPH - 0xB65C: 0x8DDA, //CJK UNIFIED IDEOGRAPH - 0xB65D: 0x8DD1, //CJK UNIFIED IDEOGRAPH - 0xB65E: 0x8DCC, //CJK UNIFIED IDEOGRAPH - 0xB65F: 0x8DDB, //CJK UNIFIED IDEOGRAPH - 0xB660: 0x8DC6, //CJK UNIFIED IDEOGRAPH - 0xB661: 0x8EFB, //CJK UNIFIED IDEOGRAPH - 0xB662: 0x8EF8, //CJK UNIFIED IDEOGRAPH - 0xB663: 0x8EFC, //CJK UNIFIED IDEOGRAPH - 0xB664: 0x8F9C, //CJK UNIFIED IDEOGRAPH - 0xB665: 0x902E, //CJK UNIFIED IDEOGRAPH - 0xB666: 0x9035, //CJK UNIFIED IDEOGRAPH - 0xB667: 0x9031, //CJK UNIFIED IDEOGRAPH - 0xB668: 0x9038, //CJK UNIFIED IDEOGRAPH - 0xB669: 0x9032, //CJK UNIFIED IDEOGRAPH - 0xB66A: 0x9036, //CJK UNIFIED IDEOGRAPH - 0xB66B: 0x9102, //CJK UNIFIED IDEOGRAPH - 0xB66C: 0x90F5, //CJK UNIFIED IDEOGRAPH - 0xB66D: 0x9109, //CJK UNIFIED IDEOGRAPH - 0xB66E: 0x90FE, //CJK UNIFIED IDEOGRAPH - 0xB66F: 0x9163, //CJK UNIFIED IDEOGRAPH - 0xB670: 0x9165, //CJK UNIFIED IDEOGRAPH - 0xB671: 0x91CF, //CJK UNIFIED IDEOGRAPH - 0xB672: 0x9214, //CJK UNIFIED IDEOGRAPH - 0xB673: 0x9215, //CJK UNIFIED IDEOGRAPH - 0xB674: 0x9223, //CJK UNIFIED IDEOGRAPH - 0xB675: 0x9209, //CJK UNIFIED IDEOGRAPH - 0xB676: 0x921E, //CJK UNIFIED IDEOGRAPH - 0xB677: 0x920D, //CJK UNIFIED IDEOGRAPH - 0xB678: 0x9210, //CJK UNIFIED IDEOGRAPH - 0xB679: 0x9207, //CJK UNIFIED IDEOGRAPH - 0xB67A: 0x9211, //CJK UNIFIED IDEOGRAPH - 0xB67B: 0x9594, //CJK UNIFIED IDEOGRAPH - 0xB67C: 0x958F, //CJK UNIFIED IDEOGRAPH - 0xB67D: 0x958B, //CJK UNIFIED IDEOGRAPH - 0xB67E: 0x9591, //CJK UNIFIED IDEOGRAPH - 0xB6A1: 0x9593, //CJK UNIFIED IDEOGRAPH - 0xB6A2: 0x9592, //CJK UNIFIED IDEOGRAPH - 0xB6A3: 0x958E, //CJK UNIFIED IDEOGRAPH - 0xB6A4: 0x968A, //CJK UNIFIED IDEOGRAPH - 0xB6A5: 0x968E, //CJK UNIFIED IDEOGRAPH - 0xB6A6: 0x968B, //CJK UNIFIED IDEOGRAPH - 0xB6A7: 0x967D, //CJK UNIFIED IDEOGRAPH - 0xB6A8: 0x9685, //CJK UNIFIED IDEOGRAPH - 0xB6A9: 0x9686, //CJK UNIFIED IDEOGRAPH - 0xB6AA: 0x968D, //CJK UNIFIED IDEOGRAPH - 0xB6AB: 0x9672, //CJK UNIFIED IDEOGRAPH - 0xB6AC: 0x9684, //CJK UNIFIED IDEOGRAPH - 0xB6AD: 0x96C1, //CJK UNIFIED IDEOGRAPH - 0xB6AE: 0x96C5, //CJK UNIFIED IDEOGRAPH - 0xB6AF: 0x96C4, //CJK UNIFIED IDEOGRAPH - 0xB6B0: 0x96C6, //CJK UNIFIED IDEOGRAPH - 0xB6B1: 0x96C7, //CJK UNIFIED IDEOGRAPH - 0xB6B2: 0x96EF, //CJK UNIFIED IDEOGRAPH - 0xB6B3: 0x96F2, //CJK UNIFIED IDEOGRAPH - 0xB6B4: 0x97CC, //CJK UNIFIED IDEOGRAPH - 0xB6B5: 0x9805, //CJK UNIFIED IDEOGRAPH - 0xB6B6: 0x9806, //CJK UNIFIED IDEOGRAPH - 0xB6B7: 0x9808, //CJK UNIFIED IDEOGRAPH - 0xB6B8: 0x98E7, //CJK UNIFIED IDEOGRAPH - 0xB6B9: 0x98EA, //CJK UNIFIED IDEOGRAPH - 0xB6BA: 0x98EF, //CJK UNIFIED IDEOGRAPH - 0xB6BB: 0x98E9, //CJK UNIFIED IDEOGRAPH - 0xB6BC: 0x98F2, //CJK UNIFIED IDEOGRAPH - 0xB6BD: 0x98ED, //CJK UNIFIED IDEOGRAPH - 0xB6BE: 0x99AE, //CJK UNIFIED IDEOGRAPH - 0xB6BF: 0x99AD, //CJK UNIFIED IDEOGRAPH - 0xB6C0: 0x9EC3, //CJK UNIFIED IDEOGRAPH - 0xB6C1: 0x9ECD, //CJK UNIFIED IDEOGRAPH - 0xB6C2: 0x9ED1, //CJK UNIFIED IDEOGRAPH - 0xB6C3: 0x4E82, //CJK UNIFIED IDEOGRAPH - 0xB6C4: 0x50AD, //CJK UNIFIED IDEOGRAPH - 0xB6C5: 0x50B5, //CJK UNIFIED IDEOGRAPH - 0xB6C6: 0x50B2, //CJK UNIFIED IDEOGRAPH - 0xB6C7: 0x50B3, //CJK UNIFIED IDEOGRAPH - 0xB6C8: 0x50C5, //CJK UNIFIED IDEOGRAPH - 0xB6C9: 0x50BE, //CJK UNIFIED IDEOGRAPH - 0xB6CA: 0x50AC, //CJK UNIFIED IDEOGRAPH - 0xB6CB: 0x50B7, //CJK UNIFIED IDEOGRAPH - 0xB6CC: 0x50BB, //CJK UNIFIED IDEOGRAPH - 0xB6CD: 0x50AF, //CJK UNIFIED IDEOGRAPH - 0xB6CE: 0x50C7, //CJK UNIFIED IDEOGRAPH - 0xB6CF: 0x527F, //CJK UNIFIED IDEOGRAPH - 0xB6D0: 0x5277, //CJK UNIFIED IDEOGRAPH - 0xB6D1: 0x527D, //CJK UNIFIED IDEOGRAPH - 0xB6D2: 0x52DF, //CJK UNIFIED IDEOGRAPH - 0xB6D3: 0x52E6, //CJK UNIFIED IDEOGRAPH - 0xB6D4: 0x52E4, //CJK UNIFIED IDEOGRAPH - 0xB6D5: 0x52E2, //CJK UNIFIED IDEOGRAPH - 0xB6D6: 0x52E3, //CJK UNIFIED IDEOGRAPH - 0xB6D7: 0x532F, //CJK UNIFIED IDEOGRAPH - 0xB6D8: 0x55DF, //CJK UNIFIED IDEOGRAPH - 0xB6D9: 0x55E8, //CJK UNIFIED IDEOGRAPH - 0xB6DA: 0x55D3, //CJK UNIFIED IDEOGRAPH - 0xB6DB: 0x55E6, //CJK UNIFIED IDEOGRAPH - 0xB6DC: 0x55CE, //CJK UNIFIED IDEOGRAPH - 0xB6DD: 0x55DC, //CJK UNIFIED IDEOGRAPH - 0xB6DE: 0x55C7, //CJK UNIFIED IDEOGRAPH - 0xB6DF: 0x55D1, //CJK UNIFIED IDEOGRAPH - 0xB6E0: 0x55E3, //CJK UNIFIED IDEOGRAPH - 0xB6E1: 0x55E4, //CJK UNIFIED IDEOGRAPH - 0xB6E2: 0x55EF, //CJK UNIFIED IDEOGRAPH - 0xB6E3: 0x55DA, //CJK UNIFIED IDEOGRAPH - 0xB6E4: 0x55E1, //CJK UNIFIED IDEOGRAPH - 0xB6E5: 0x55C5, //CJK UNIFIED IDEOGRAPH - 0xB6E6: 0x55C6, //CJK UNIFIED IDEOGRAPH - 0xB6E7: 0x55E5, //CJK UNIFIED IDEOGRAPH - 0xB6E8: 0x55C9, //CJK UNIFIED IDEOGRAPH - 0xB6E9: 0x5712, //CJK UNIFIED IDEOGRAPH - 0xB6EA: 0x5713, //CJK UNIFIED IDEOGRAPH - 0xB6EB: 0x585E, //CJK UNIFIED IDEOGRAPH - 0xB6EC: 0x5851, //CJK UNIFIED IDEOGRAPH - 0xB6ED: 0x5858, //CJK UNIFIED IDEOGRAPH - 0xB6EE: 0x5857, //CJK UNIFIED IDEOGRAPH - 0xB6EF: 0x585A, //CJK UNIFIED IDEOGRAPH - 0xB6F0: 0x5854, //CJK UNIFIED IDEOGRAPH - 0xB6F1: 0x586B, //CJK UNIFIED IDEOGRAPH - 0xB6F2: 0x584C, //CJK UNIFIED IDEOGRAPH - 0xB6F3: 0x586D, //CJK UNIFIED IDEOGRAPH - 0xB6F4: 0x584A, //CJK UNIFIED IDEOGRAPH - 0xB6F5: 0x5862, //CJK UNIFIED IDEOGRAPH - 0xB6F6: 0x5852, //CJK UNIFIED IDEOGRAPH - 0xB6F7: 0x584B, //CJK UNIFIED IDEOGRAPH - 0xB6F8: 0x5967, //CJK UNIFIED IDEOGRAPH - 0xB6F9: 0x5AC1, //CJK UNIFIED IDEOGRAPH - 0xB6FA: 0x5AC9, //CJK UNIFIED IDEOGRAPH - 0xB6FB: 0x5ACC, //CJK UNIFIED IDEOGRAPH - 0xB6FC: 0x5ABE, //CJK UNIFIED IDEOGRAPH - 0xB6FD: 0x5ABD, //CJK UNIFIED IDEOGRAPH - 0xB6FE: 0x5ABC, //CJK UNIFIED IDEOGRAPH - 0xB740: 0x5AB3, //CJK UNIFIED IDEOGRAPH - 0xB741: 0x5AC2, //CJK UNIFIED IDEOGRAPH - 0xB742: 0x5AB2, //CJK UNIFIED IDEOGRAPH - 0xB743: 0x5D69, //CJK UNIFIED IDEOGRAPH - 0xB744: 0x5D6F, //CJK UNIFIED IDEOGRAPH - 0xB745: 0x5E4C, //CJK UNIFIED IDEOGRAPH - 0xB746: 0x5E79, //CJK UNIFIED IDEOGRAPH - 0xB747: 0x5EC9, //CJK UNIFIED IDEOGRAPH - 0xB748: 0x5EC8, //CJK UNIFIED IDEOGRAPH - 0xB749: 0x5F12, //CJK UNIFIED IDEOGRAPH - 0xB74A: 0x5F59, //CJK UNIFIED IDEOGRAPH - 0xB74B: 0x5FAC, //CJK UNIFIED IDEOGRAPH - 0xB74C: 0x5FAE, //CJK UNIFIED IDEOGRAPH - 0xB74D: 0x611A, //CJK UNIFIED IDEOGRAPH - 0xB74E: 0x610F, //CJK UNIFIED IDEOGRAPH - 0xB74F: 0x6148, //CJK UNIFIED IDEOGRAPH - 0xB750: 0x611F, //CJK UNIFIED IDEOGRAPH - 0xB751: 0x60F3, //CJK UNIFIED IDEOGRAPH - 0xB752: 0x611B, //CJK UNIFIED IDEOGRAPH - 0xB753: 0x60F9, //CJK UNIFIED IDEOGRAPH - 0xB754: 0x6101, //CJK UNIFIED IDEOGRAPH - 0xB755: 0x6108, //CJK UNIFIED IDEOGRAPH - 0xB756: 0x614E, //CJK UNIFIED IDEOGRAPH - 0xB757: 0x614C, //CJK UNIFIED IDEOGRAPH - 0xB758: 0x6144, //CJK UNIFIED IDEOGRAPH - 0xB759: 0x614D, //CJK UNIFIED IDEOGRAPH - 0xB75A: 0x613E, //CJK UNIFIED IDEOGRAPH - 0xB75B: 0x6134, //CJK UNIFIED IDEOGRAPH - 0xB75C: 0x6127, //CJK UNIFIED IDEOGRAPH - 0xB75D: 0x610D, //CJK UNIFIED IDEOGRAPH - 0xB75E: 0x6106, //CJK UNIFIED IDEOGRAPH - 0xB75F: 0x6137, //CJK UNIFIED IDEOGRAPH - 0xB760: 0x6221, //CJK UNIFIED IDEOGRAPH - 0xB761: 0x6222, //CJK UNIFIED IDEOGRAPH - 0xB762: 0x6413, //CJK UNIFIED IDEOGRAPH - 0xB763: 0x643E, //CJK UNIFIED IDEOGRAPH - 0xB764: 0x641E, //CJK UNIFIED IDEOGRAPH - 0xB765: 0x642A, //CJK UNIFIED IDEOGRAPH - 0xB766: 0x642D, //CJK UNIFIED IDEOGRAPH - 0xB767: 0x643D, //CJK UNIFIED IDEOGRAPH - 0xB768: 0x642C, //CJK UNIFIED IDEOGRAPH - 0xB769: 0x640F, //CJK UNIFIED IDEOGRAPH - 0xB76A: 0x641C, //CJK UNIFIED IDEOGRAPH - 0xB76B: 0x6414, //CJK UNIFIED IDEOGRAPH - 0xB76C: 0x640D, //CJK UNIFIED IDEOGRAPH - 0xB76D: 0x6436, //CJK UNIFIED IDEOGRAPH - 0xB76E: 0x6416, //CJK UNIFIED IDEOGRAPH - 0xB76F: 0x6417, //CJK UNIFIED IDEOGRAPH - 0xB770: 0x6406, //CJK UNIFIED IDEOGRAPH - 0xB771: 0x656C, //CJK UNIFIED IDEOGRAPH - 0xB772: 0x659F, //CJK UNIFIED IDEOGRAPH - 0xB773: 0x65B0, //CJK UNIFIED IDEOGRAPH - 0xB774: 0x6697, //CJK UNIFIED IDEOGRAPH - 0xB775: 0x6689, //CJK UNIFIED IDEOGRAPH - 0xB776: 0x6687, //CJK UNIFIED IDEOGRAPH - 0xB777: 0x6688, //CJK UNIFIED IDEOGRAPH - 0xB778: 0x6696, //CJK UNIFIED IDEOGRAPH - 0xB779: 0x6684, //CJK UNIFIED IDEOGRAPH - 0xB77A: 0x6698, //CJK UNIFIED IDEOGRAPH - 0xB77B: 0x668D, //CJK UNIFIED IDEOGRAPH - 0xB77C: 0x6703, //CJK UNIFIED IDEOGRAPH - 0xB77D: 0x6994, //CJK UNIFIED IDEOGRAPH - 0xB77E: 0x696D, //CJK UNIFIED IDEOGRAPH - 0xB7A1: 0x695A, //CJK UNIFIED IDEOGRAPH - 0xB7A2: 0x6977, //CJK UNIFIED IDEOGRAPH - 0xB7A3: 0x6960, //CJK UNIFIED IDEOGRAPH - 0xB7A4: 0x6954, //CJK UNIFIED IDEOGRAPH - 0xB7A5: 0x6975, //CJK UNIFIED IDEOGRAPH - 0xB7A6: 0x6930, //CJK UNIFIED IDEOGRAPH - 0xB7A7: 0x6982, //CJK UNIFIED IDEOGRAPH - 0xB7A8: 0x694A, //CJK UNIFIED IDEOGRAPH - 0xB7A9: 0x6968, //CJK UNIFIED IDEOGRAPH - 0xB7AA: 0x696B, //CJK UNIFIED IDEOGRAPH - 0xB7AB: 0x695E, //CJK UNIFIED IDEOGRAPH - 0xB7AC: 0x6953, //CJK UNIFIED IDEOGRAPH - 0xB7AD: 0x6979, //CJK UNIFIED IDEOGRAPH - 0xB7AE: 0x6986, //CJK UNIFIED IDEOGRAPH - 0xB7AF: 0x695D, //CJK UNIFIED IDEOGRAPH - 0xB7B0: 0x6963, //CJK UNIFIED IDEOGRAPH - 0xB7B1: 0x695B, //CJK UNIFIED IDEOGRAPH - 0xB7B2: 0x6B47, //CJK UNIFIED IDEOGRAPH - 0xB7B3: 0x6B72, //CJK UNIFIED IDEOGRAPH - 0xB7B4: 0x6BC0, //CJK UNIFIED IDEOGRAPH - 0xB7B5: 0x6BBF, //CJK UNIFIED IDEOGRAPH - 0xB7B6: 0x6BD3, //CJK UNIFIED IDEOGRAPH - 0xB7B7: 0x6BFD, //CJK UNIFIED IDEOGRAPH - 0xB7B8: 0x6EA2, //CJK UNIFIED IDEOGRAPH - 0xB7B9: 0x6EAF, //CJK UNIFIED IDEOGRAPH - 0xB7BA: 0x6ED3, //CJK UNIFIED IDEOGRAPH - 0xB7BB: 0x6EB6, //CJK UNIFIED IDEOGRAPH - 0xB7BC: 0x6EC2, //CJK UNIFIED IDEOGRAPH - 0xB7BD: 0x6E90, //CJK UNIFIED IDEOGRAPH - 0xB7BE: 0x6E9D, //CJK UNIFIED IDEOGRAPH - 0xB7BF: 0x6EC7, //CJK UNIFIED IDEOGRAPH - 0xB7C0: 0x6EC5, //CJK UNIFIED IDEOGRAPH - 0xB7C1: 0x6EA5, //CJK UNIFIED IDEOGRAPH - 0xB7C2: 0x6E98, //CJK UNIFIED IDEOGRAPH - 0xB7C3: 0x6EBC, //CJK UNIFIED IDEOGRAPH - 0xB7C4: 0x6EBA, //CJK UNIFIED IDEOGRAPH - 0xB7C5: 0x6EAB, //CJK UNIFIED IDEOGRAPH - 0xB7C6: 0x6ED1, //CJK UNIFIED IDEOGRAPH - 0xB7C7: 0x6E96, //CJK UNIFIED IDEOGRAPH - 0xB7C8: 0x6E9C, //CJK UNIFIED IDEOGRAPH - 0xB7C9: 0x6EC4, //CJK UNIFIED IDEOGRAPH - 0xB7CA: 0x6ED4, //CJK UNIFIED IDEOGRAPH - 0xB7CB: 0x6EAA, //CJK UNIFIED IDEOGRAPH - 0xB7CC: 0x6EA7, //CJK UNIFIED IDEOGRAPH - 0xB7CD: 0x6EB4, //CJK UNIFIED IDEOGRAPH - 0xB7CE: 0x714E, //CJK UNIFIED IDEOGRAPH - 0xB7CF: 0x7159, //CJK UNIFIED IDEOGRAPH - 0xB7D0: 0x7169, //CJK UNIFIED IDEOGRAPH - 0xB7D1: 0x7164, //CJK UNIFIED IDEOGRAPH - 0xB7D2: 0x7149, //CJK UNIFIED IDEOGRAPH - 0xB7D3: 0x7167, //CJK UNIFIED IDEOGRAPH - 0xB7D4: 0x715C, //CJK UNIFIED IDEOGRAPH - 0xB7D5: 0x716C, //CJK UNIFIED IDEOGRAPH - 0xB7D6: 0x7166, //CJK UNIFIED IDEOGRAPH - 0xB7D7: 0x714C, //CJK UNIFIED IDEOGRAPH - 0xB7D8: 0x7165, //CJK UNIFIED IDEOGRAPH - 0xB7D9: 0x715E, //CJK UNIFIED IDEOGRAPH - 0xB7DA: 0x7146, //CJK UNIFIED IDEOGRAPH - 0xB7DB: 0x7168, //CJK UNIFIED IDEOGRAPH - 0xB7DC: 0x7156, //CJK UNIFIED IDEOGRAPH - 0xB7DD: 0x723A, //CJK UNIFIED IDEOGRAPH - 0xB7DE: 0x7252, //CJK UNIFIED IDEOGRAPH - 0xB7DF: 0x7337, //CJK UNIFIED IDEOGRAPH - 0xB7E0: 0x7345, //CJK UNIFIED IDEOGRAPH - 0xB7E1: 0x733F, //CJK UNIFIED IDEOGRAPH - 0xB7E2: 0x733E, //CJK UNIFIED IDEOGRAPH - 0xB7E3: 0x746F, //CJK UNIFIED IDEOGRAPH - 0xB7E4: 0x745A, //CJK UNIFIED IDEOGRAPH - 0xB7E5: 0x7455, //CJK UNIFIED IDEOGRAPH - 0xB7E6: 0x745F, //CJK UNIFIED IDEOGRAPH - 0xB7E7: 0x745E, //CJK UNIFIED IDEOGRAPH - 0xB7E8: 0x7441, //CJK UNIFIED IDEOGRAPH - 0xB7E9: 0x743F, //CJK UNIFIED IDEOGRAPH - 0xB7EA: 0x7459, //CJK UNIFIED IDEOGRAPH - 0xB7EB: 0x745B, //CJK UNIFIED IDEOGRAPH - 0xB7EC: 0x745C, //CJK UNIFIED IDEOGRAPH - 0xB7ED: 0x7576, //CJK UNIFIED IDEOGRAPH - 0xB7EE: 0x7578, //CJK UNIFIED IDEOGRAPH - 0xB7EF: 0x7600, //CJK UNIFIED IDEOGRAPH - 0xB7F0: 0x75F0, //CJK UNIFIED IDEOGRAPH - 0xB7F1: 0x7601, //CJK UNIFIED IDEOGRAPH - 0xB7F2: 0x75F2, //CJK UNIFIED IDEOGRAPH - 0xB7F3: 0x75F1, //CJK UNIFIED IDEOGRAPH - 0xB7F4: 0x75FA, //CJK UNIFIED IDEOGRAPH - 0xB7F5: 0x75FF, //CJK UNIFIED IDEOGRAPH - 0xB7F6: 0x75F4, //CJK UNIFIED IDEOGRAPH - 0xB7F7: 0x75F3, //CJK UNIFIED IDEOGRAPH - 0xB7F8: 0x76DE, //CJK UNIFIED IDEOGRAPH - 0xB7F9: 0x76DF, //CJK UNIFIED IDEOGRAPH - 0xB7FA: 0x775B, //CJK UNIFIED IDEOGRAPH - 0xB7FB: 0x776B, //CJK UNIFIED IDEOGRAPH - 0xB7FC: 0x7766, //CJK UNIFIED IDEOGRAPH - 0xB7FD: 0x775E, //CJK UNIFIED IDEOGRAPH - 0xB7FE: 0x7763, //CJK UNIFIED IDEOGRAPH - 0xB840: 0x7779, //CJK UNIFIED IDEOGRAPH - 0xB841: 0x776A, //CJK UNIFIED IDEOGRAPH - 0xB842: 0x776C, //CJK UNIFIED IDEOGRAPH - 0xB843: 0x775C, //CJK UNIFIED IDEOGRAPH - 0xB844: 0x7765, //CJK UNIFIED IDEOGRAPH - 0xB845: 0x7768, //CJK UNIFIED IDEOGRAPH - 0xB846: 0x7762, //CJK UNIFIED IDEOGRAPH - 0xB847: 0x77EE, //CJK UNIFIED IDEOGRAPH - 0xB848: 0x788E, //CJK UNIFIED IDEOGRAPH - 0xB849: 0x78B0, //CJK UNIFIED IDEOGRAPH - 0xB84A: 0x7897, //CJK UNIFIED IDEOGRAPH - 0xB84B: 0x7898, //CJK UNIFIED IDEOGRAPH - 0xB84C: 0x788C, //CJK UNIFIED IDEOGRAPH - 0xB84D: 0x7889, //CJK UNIFIED IDEOGRAPH - 0xB84E: 0x787C, //CJK UNIFIED IDEOGRAPH - 0xB84F: 0x7891, //CJK UNIFIED IDEOGRAPH - 0xB850: 0x7893, //CJK UNIFIED IDEOGRAPH - 0xB851: 0x787F, //CJK UNIFIED IDEOGRAPH - 0xB852: 0x797A, //CJK UNIFIED IDEOGRAPH - 0xB853: 0x797F, //CJK UNIFIED IDEOGRAPH - 0xB854: 0x7981, //CJK UNIFIED IDEOGRAPH - 0xB855: 0x842C, //CJK UNIFIED IDEOGRAPH - 0xB856: 0x79BD, //CJK UNIFIED IDEOGRAPH - 0xB857: 0x7A1C, //CJK UNIFIED IDEOGRAPH - 0xB858: 0x7A1A, //CJK UNIFIED IDEOGRAPH - 0xB859: 0x7A20, //CJK UNIFIED IDEOGRAPH - 0xB85A: 0x7A14, //CJK UNIFIED IDEOGRAPH - 0xB85B: 0x7A1F, //CJK UNIFIED IDEOGRAPH - 0xB85C: 0x7A1E, //CJK UNIFIED IDEOGRAPH - 0xB85D: 0x7A9F, //CJK UNIFIED IDEOGRAPH - 0xB85E: 0x7AA0, //CJK UNIFIED IDEOGRAPH - 0xB85F: 0x7B77, //CJK UNIFIED IDEOGRAPH - 0xB860: 0x7BC0, //CJK UNIFIED IDEOGRAPH - 0xB861: 0x7B60, //CJK UNIFIED IDEOGRAPH - 0xB862: 0x7B6E, //CJK UNIFIED IDEOGRAPH - 0xB863: 0x7B67, //CJK UNIFIED IDEOGRAPH - 0xB864: 0x7CB1, //CJK UNIFIED IDEOGRAPH - 0xB865: 0x7CB3, //CJK UNIFIED IDEOGRAPH - 0xB866: 0x7CB5, //CJK UNIFIED IDEOGRAPH - 0xB867: 0x7D93, //CJK UNIFIED IDEOGRAPH - 0xB868: 0x7D79, //CJK UNIFIED IDEOGRAPH - 0xB869: 0x7D91, //CJK UNIFIED IDEOGRAPH - 0xB86A: 0x7D81, //CJK UNIFIED IDEOGRAPH - 0xB86B: 0x7D8F, //CJK UNIFIED IDEOGRAPH - 0xB86C: 0x7D5B, //CJK UNIFIED IDEOGRAPH - 0xB86D: 0x7F6E, //CJK UNIFIED IDEOGRAPH - 0xB86E: 0x7F69, //CJK UNIFIED IDEOGRAPH - 0xB86F: 0x7F6A, //CJK UNIFIED IDEOGRAPH - 0xB870: 0x7F72, //CJK UNIFIED IDEOGRAPH - 0xB871: 0x7FA9, //CJK UNIFIED IDEOGRAPH - 0xB872: 0x7FA8, //CJK UNIFIED IDEOGRAPH - 0xB873: 0x7FA4, //CJK UNIFIED IDEOGRAPH - 0xB874: 0x8056, //CJK UNIFIED IDEOGRAPH - 0xB875: 0x8058, //CJK UNIFIED IDEOGRAPH - 0xB876: 0x8086, //CJK UNIFIED IDEOGRAPH - 0xB877: 0x8084, //CJK UNIFIED IDEOGRAPH - 0xB878: 0x8171, //CJK UNIFIED IDEOGRAPH - 0xB879: 0x8170, //CJK UNIFIED IDEOGRAPH - 0xB87A: 0x8178, //CJK UNIFIED IDEOGRAPH - 0xB87B: 0x8165, //CJK UNIFIED IDEOGRAPH - 0xB87C: 0x816E, //CJK UNIFIED IDEOGRAPH - 0xB87D: 0x8173, //CJK UNIFIED IDEOGRAPH - 0xB87E: 0x816B, //CJK UNIFIED IDEOGRAPH - 0xB8A1: 0x8179, //CJK UNIFIED IDEOGRAPH - 0xB8A2: 0x817A, //CJK UNIFIED IDEOGRAPH - 0xB8A3: 0x8166, //CJK UNIFIED IDEOGRAPH - 0xB8A4: 0x8205, //CJK UNIFIED IDEOGRAPH - 0xB8A5: 0x8247, //CJK UNIFIED IDEOGRAPH - 0xB8A6: 0x8482, //CJK UNIFIED IDEOGRAPH - 0xB8A7: 0x8477, //CJK UNIFIED IDEOGRAPH - 0xB8A8: 0x843D, //CJK UNIFIED IDEOGRAPH - 0xB8A9: 0x8431, //CJK UNIFIED IDEOGRAPH - 0xB8AA: 0x8475, //CJK UNIFIED IDEOGRAPH - 0xB8AB: 0x8466, //CJK UNIFIED IDEOGRAPH - 0xB8AC: 0x846B, //CJK UNIFIED IDEOGRAPH - 0xB8AD: 0x8449, //CJK UNIFIED IDEOGRAPH - 0xB8AE: 0x846C, //CJK UNIFIED IDEOGRAPH - 0xB8AF: 0x845B, //CJK UNIFIED IDEOGRAPH - 0xB8B0: 0x843C, //CJK UNIFIED IDEOGRAPH - 0xB8B1: 0x8435, //CJK UNIFIED IDEOGRAPH - 0xB8B2: 0x8461, //CJK UNIFIED IDEOGRAPH - 0xB8B3: 0x8463, //CJK UNIFIED IDEOGRAPH - 0xB8B4: 0x8469, //CJK UNIFIED IDEOGRAPH - 0xB8B5: 0x846D, //CJK UNIFIED IDEOGRAPH - 0xB8B6: 0x8446, //CJK UNIFIED IDEOGRAPH - 0xB8B7: 0x865E, //CJK UNIFIED IDEOGRAPH - 0xB8B8: 0x865C, //CJK UNIFIED IDEOGRAPH - 0xB8B9: 0x865F, //CJK UNIFIED IDEOGRAPH - 0xB8BA: 0x86F9, //CJK UNIFIED IDEOGRAPH - 0xB8BB: 0x8713, //CJK UNIFIED IDEOGRAPH - 0xB8BC: 0x8708, //CJK UNIFIED IDEOGRAPH - 0xB8BD: 0x8707, //CJK UNIFIED IDEOGRAPH - 0xB8BE: 0x8700, //CJK UNIFIED IDEOGRAPH - 0xB8BF: 0x86FE, //CJK UNIFIED IDEOGRAPH - 0xB8C0: 0x86FB, //CJK UNIFIED IDEOGRAPH - 0xB8C1: 0x8702, //CJK UNIFIED IDEOGRAPH - 0xB8C2: 0x8703, //CJK UNIFIED IDEOGRAPH - 0xB8C3: 0x8706, //CJK UNIFIED IDEOGRAPH - 0xB8C4: 0x870A, //CJK UNIFIED IDEOGRAPH - 0xB8C5: 0x8859, //CJK UNIFIED IDEOGRAPH - 0xB8C6: 0x88DF, //CJK UNIFIED IDEOGRAPH - 0xB8C7: 0x88D4, //CJK UNIFIED IDEOGRAPH - 0xB8C8: 0x88D9, //CJK UNIFIED IDEOGRAPH - 0xB8C9: 0x88DC, //CJK UNIFIED IDEOGRAPH - 0xB8CA: 0x88D8, //CJK UNIFIED IDEOGRAPH - 0xB8CB: 0x88DD, //CJK UNIFIED IDEOGRAPH - 0xB8CC: 0x88E1, //CJK UNIFIED IDEOGRAPH - 0xB8CD: 0x88CA, //CJK UNIFIED IDEOGRAPH - 0xB8CE: 0x88D5, //CJK UNIFIED IDEOGRAPH - 0xB8CF: 0x88D2, //CJK UNIFIED IDEOGRAPH - 0xB8D0: 0x899C, //CJK UNIFIED IDEOGRAPH - 0xB8D1: 0x89E3, //CJK UNIFIED IDEOGRAPH - 0xB8D2: 0x8A6B, //CJK UNIFIED IDEOGRAPH - 0xB8D3: 0x8A72, //CJK UNIFIED IDEOGRAPH - 0xB8D4: 0x8A73, //CJK UNIFIED IDEOGRAPH - 0xB8D5: 0x8A66, //CJK UNIFIED IDEOGRAPH - 0xB8D6: 0x8A69, //CJK UNIFIED IDEOGRAPH - 0xB8D7: 0x8A70, //CJK UNIFIED IDEOGRAPH - 0xB8D8: 0x8A87, //CJK UNIFIED IDEOGRAPH - 0xB8D9: 0x8A7C, //CJK UNIFIED IDEOGRAPH - 0xB8DA: 0x8A63, //CJK UNIFIED IDEOGRAPH - 0xB8DB: 0x8AA0, //CJK UNIFIED IDEOGRAPH - 0xB8DC: 0x8A71, //CJK UNIFIED IDEOGRAPH - 0xB8DD: 0x8A85, //CJK UNIFIED IDEOGRAPH - 0xB8DE: 0x8A6D, //CJK UNIFIED IDEOGRAPH - 0xB8DF: 0x8A62, //CJK UNIFIED IDEOGRAPH - 0xB8E0: 0x8A6E, //CJK UNIFIED IDEOGRAPH - 0xB8E1: 0x8A6C, //CJK UNIFIED IDEOGRAPH - 0xB8E2: 0x8A79, //CJK UNIFIED IDEOGRAPH - 0xB8E3: 0x8A7B, //CJK UNIFIED IDEOGRAPH - 0xB8E4: 0x8A3E, //CJK UNIFIED IDEOGRAPH - 0xB8E5: 0x8A68, //CJK UNIFIED IDEOGRAPH - 0xB8E6: 0x8C62, //CJK UNIFIED IDEOGRAPH - 0xB8E7: 0x8C8A, //CJK UNIFIED IDEOGRAPH - 0xB8E8: 0x8C89, //CJK UNIFIED IDEOGRAPH - 0xB8E9: 0x8CCA, //CJK UNIFIED IDEOGRAPH - 0xB8EA: 0x8CC7, //CJK UNIFIED IDEOGRAPH - 0xB8EB: 0x8CC8, //CJK UNIFIED IDEOGRAPH - 0xB8EC: 0x8CC4, //CJK UNIFIED IDEOGRAPH - 0xB8ED: 0x8CB2, //CJK UNIFIED IDEOGRAPH - 0xB8EE: 0x8CC3, //CJK UNIFIED IDEOGRAPH - 0xB8EF: 0x8CC2, //CJK UNIFIED IDEOGRAPH - 0xB8F0: 0x8CC5, //CJK UNIFIED IDEOGRAPH - 0xB8F1: 0x8DE1, //CJK UNIFIED IDEOGRAPH - 0xB8F2: 0x8DDF, //CJK UNIFIED IDEOGRAPH - 0xB8F3: 0x8DE8, //CJK UNIFIED IDEOGRAPH - 0xB8F4: 0x8DEF, //CJK UNIFIED IDEOGRAPH - 0xB8F5: 0x8DF3, //CJK UNIFIED IDEOGRAPH - 0xB8F6: 0x8DFA, //CJK UNIFIED IDEOGRAPH - 0xB8F7: 0x8DEA, //CJK UNIFIED IDEOGRAPH - 0xB8F8: 0x8DE4, //CJK UNIFIED IDEOGRAPH - 0xB8F9: 0x8DE6, //CJK UNIFIED IDEOGRAPH - 0xB8FA: 0x8EB2, //CJK UNIFIED IDEOGRAPH - 0xB8FB: 0x8F03, //CJK UNIFIED IDEOGRAPH - 0xB8FC: 0x8F09, //CJK UNIFIED IDEOGRAPH - 0xB8FD: 0x8EFE, //CJK UNIFIED IDEOGRAPH - 0xB8FE: 0x8F0A, //CJK UNIFIED IDEOGRAPH - 0xB940: 0x8F9F, //CJK UNIFIED IDEOGRAPH - 0xB941: 0x8FB2, //CJK UNIFIED IDEOGRAPH - 0xB942: 0x904B, //CJK UNIFIED IDEOGRAPH - 0xB943: 0x904A, //CJK UNIFIED IDEOGRAPH - 0xB944: 0x9053, //CJK UNIFIED IDEOGRAPH - 0xB945: 0x9042, //CJK UNIFIED IDEOGRAPH - 0xB946: 0x9054, //CJK UNIFIED IDEOGRAPH - 0xB947: 0x903C, //CJK UNIFIED IDEOGRAPH - 0xB948: 0x9055, //CJK UNIFIED IDEOGRAPH - 0xB949: 0x9050, //CJK UNIFIED IDEOGRAPH - 0xB94A: 0x9047, //CJK UNIFIED IDEOGRAPH - 0xB94B: 0x904F, //CJK UNIFIED IDEOGRAPH - 0xB94C: 0x904E, //CJK UNIFIED IDEOGRAPH - 0xB94D: 0x904D, //CJK UNIFIED IDEOGRAPH - 0xB94E: 0x9051, //CJK UNIFIED IDEOGRAPH - 0xB94F: 0x903E, //CJK UNIFIED IDEOGRAPH - 0xB950: 0x9041, //CJK UNIFIED IDEOGRAPH - 0xB951: 0x9112, //CJK UNIFIED IDEOGRAPH - 0xB952: 0x9117, //CJK UNIFIED IDEOGRAPH - 0xB953: 0x916C, //CJK UNIFIED IDEOGRAPH - 0xB954: 0x916A, //CJK UNIFIED IDEOGRAPH - 0xB955: 0x9169, //CJK UNIFIED IDEOGRAPH - 0xB956: 0x91C9, //CJK UNIFIED IDEOGRAPH - 0xB957: 0x9237, //CJK UNIFIED IDEOGRAPH - 0xB958: 0x9257, //CJK UNIFIED IDEOGRAPH - 0xB959: 0x9238, //CJK UNIFIED IDEOGRAPH - 0xB95A: 0x923D, //CJK UNIFIED IDEOGRAPH - 0xB95B: 0x9240, //CJK UNIFIED IDEOGRAPH - 0xB95C: 0x923E, //CJK UNIFIED IDEOGRAPH - 0xB95D: 0x925B, //CJK UNIFIED IDEOGRAPH - 0xB95E: 0x924B, //CJK UNIFIED IDEOGRAPH - 0xB95F: 0x9264, //CJK UNIFIED IDEOGRAPH - 0xB960: 0x9251, //CJK UNIFIED IDEOGRAPH - 0xB961: 0x9234, //CJK UNIFIED IDEOGRAPH - 0xB962: 0x9249, //CJK UNIFIED IDEOGRAPH - 0xB963: 0x924D, //CJK UNIFIED IDEOGRAPH - 0xB964: 0x9245, //CJK UNIFIED IDEOGRAPH - 0xB965: 0x9239, //CJK UNIFIED IDEOGRAPH - 0xB966: 0x923F, //CJK UNIFIED IDEOGRAPH - 0xB967: 0x925A, //CJK UNIFIED IDEOGRAPH - 0xB968: 0x9598, //CJK UNIFIED IDEOGRAPH - 0xB969: 0x9698, //CJK UNIFIED IDEOGRAPH - 0xB96A: 0x9694, //CJK UNIFIED IDEOGRAPH - 0xB96B: 0x9695, //CJK UNIFIED IDEOGRAPH - 0xB96C: 0x96CD, //CJK UNIFIED IDEOGRAPH - 0xB96D: 0x96CB, //CJK UNIFIED IDEOGRAPH - 0xB96E: 0x96C9, //CJK UNIFIED IDEOGRAPH - 0xB96F: 0x96CA, //CJK UNIFIED IDEOGRAPH - 0xB970: 0x96F7, //CJK UNIFIED IDEOGRAPH - 0xB971: 0x96FB, //CJK UNIFIED IDEOGRAPH - 0xB972: 0x96F9, //CJK UNIFIED IDEOGRAPH - 0xB973: 0x96F6, //CJK UNIFIED IDEOGRAPH - 0xB974: 0x9756, //CJK UNIFIED IDEOGRAPH - 0xB975: 0x9774, //CJK UNIFIED IDEOGRAPH - 0xB976: 0x9776, //CJK UNIFIED IDEOGRAPH - 0xB977: 0x9810, //CJK UNIFIED IDEOGRAPH - 0xB978: 0x9811, //CJK UNIFIED IDEOGRAPH - 0xB979: 0x9813, //CJK UNIFIED IDEOGRAPH - 0xB97A: 0x980A, //CJK UNIFIED IDEOGRAPH - 0xB97B: 0x9812, //CJK UNIFIED IDEOGRAPH - 0xB97C: 0x980C, //CJK UNIFIED IDEOGRAPH - 0xB97D: 0x98FC, //CJK UNIFIED IDEOGRAPH - 0xB97E: 0x98F4, //CJK UNIFIED IDEOGRAPH - 0xB9A1: 0x98FD, //CJK UNIFIED IDEOGRAPH - 0xB9A2: 0x98FE, //CJK UNIFIED IDEOGRAPH - 0xB9A3: 0x99B3, //CJK UNIFIED IDEOGRAPH - 0xB9A4: 0x99B1, //CJK UNIFIED IDEOGRAPH - 0xB9A5: 0x99B4, //CJK UNIFIED IDEOGRAPH - 0xB9A6: 0x9AE1, //CJK UNIFIED IDEOGRAPH - 0xB9A7: 0x9CE9, //CJK UNIFIED IDEOGRAPH - 0xB9A8: 0x9E82, //CJK UNIFIED IDEOGRAPH - 0xB9A9: 0x9F0E, //CJK UNIFIED IDEOGRAPH - 0xB9AA: 0x9F13, //CJK UNIFIED IDEOGRAPH - 0xB9AB: 0x9F20, //CJK UNIFIED IDEOGRAPH - 0xB9AC: 0x50E7, //CJK UNIFIED IDEOGRAPH - 0xB9AD: 0x50EE, //CJK UNIFIED IDEOGRAPH - 0xB9AE: 0x50E5, //CJK UNIFIED IDEOGRAPH - 0xB9AF: 0x50D6, //CJK UNIFIED IDEOGRAPH - 0xB9B0: 0x50ED, //CJK UNIFIED IDEOGRAPH - 0xB9B1: 0x50DA, //CJK UNIFIED IDEOGRAPH - 0xB9B2: 0x50D5, //CJK UNIFIED IDEOGRAPH - 0xB9B3: 0x50CF, //CJK UNIFIED IDEOGRAPH - 0xB9B4: 0x50D1, //CJK UNIFIED IDEOGRAPH - 0xB9B5: 0x50F1, //CJK UNIFIED IDEOGRAPH - 0xB9B6: 0x50CE, //CJK UNIFIED IDEOGRAPH - 0xB9B7: 0x50E9, //CJK UNIFIED IDEOGRAPH - 0xB9B8: 0x5162, //CJK UNIFIED IDEOGRAPH - 0xB9B9: 0x51F3, //CJK UNIFIED IDEOGRAPH - 0xB9BA: 0x5283, //CJK UNIFIED IDEOGRAPH - 0xB9BB: 0x5282, //CJK UNIFIED IDEOGRAPH - 0xB9BC: 0x5331, //CJK UNIFIED IDEOGRAPH - 0xB9BD: 0x53AD, //CJK UNIFIED IDEOGRAPH - 0xB9BE: 0x55FE, //CJK UNIFIED IDEOGRAPH - 0xB9BF: 0x5600, //CJK UNIFIED IDEOGRAPH - 0xB9C0: 0x561B, //CJK UNIFIED IDEOGRAPH - 0xB9C1: 0x5617, //CJK UNIFIED IDEOGRAPH - 0xB9C2: 0x55FD, //CJK UNIFIED IDEOGRAPH - 0xB9C3: 0x5614, //CJK UNIFIED IDEOGRAPH - 0xB9C4: 0x5606, //CJK UNIFIED IDEOGRAPH - 0xB9C5: 0x5609, //CJK UNIFIED IDEOGRAPH - 0xB9C6: 0x560D, //CJK UNIFIED IDEOGRAPH - 0xB9C7: 0x560E, //CJK UNIFIED IDEOGRAPH - 0xB9C8: 0x55F7, //CJK UNIFIED IDEOGRAPH - 0xB9C9: 0x5616, //CJK UNIFIED IDEOGRAPH - 0xB9CA: 0x561F, //CJK UNIFIED IDEOGRAPH - 0xB9CB: 0x5608, //CJK UNIFIED IDEOGRAPH - 0xB9CC: 0x5610, //CJK UNIFIED IDEOGRAPH - 0xB9CD: 0x55F6, //CJK UNIFIED IDEOGRAPH - 0xB9CE: 0x5718, //CJK UNIFIED IDEOGRAPH - 0xB9CF: 0x5716, //CJK UNIFIED IDEOGRAPH - 0xB9D0: 0x5875, //CJK UNIFIED IDEOGRAPH - 0xB9D1: 0x587E, //CJK UNIFIED IDEOGRAPH - 0xB9D2: 0x5883, //CJK UNIFIED IDEOGRAPH - 0xB9D3: 0x5893, //CJK UNIFIED IDEOGRAPH - 0xB9D4: 0x588A, //CJK UNIFIED IDEOGRAPH - 0xB9D5: 0x5879, //CJK UNIFIED IDEOGRAPH - 0xB9D6: 0x5885, //CJK UNIFIED IDEOGRAPH - 0xB9D7: 0x587D, //CJK UNIFIED IDEOGRAPH - 0xB9D8: 0x58FD, //CJK UNIFIED IDEOGRAPH - 0xB9D9: 0x5925, //CJK UNIFIED IDEOGRAPH - 0xB9DA: 0x5922, //CJK UNIFIED IDEOGRAPH - 0xB9DB: 0x5924, //CJK UNIFIED IDEOGRAPH - 0xB9DC: 0x596A, //CJK UNIFIED IDEOGRAPH - 0xB9DD: 0x5969, //CJK UNIFIED IDEOGRAPH - 0xB9DE: 0x5AE1, //CJK UNIFIED IDEOGRAPH - 0xB9DF: 0x5AE6, //CJK UNIFIED IDEOGRAPH - 0xB9E0: 0x5AE9, //CJK UNIFIED IDEOGRAPH - 0xB9E1: 0x5AD7, //CJK UNIFIED IDEOGRAPH - 0xB9E2: 0x5AD6, //CJK UNIFIED IDEOGRAPH - 0xB9E3: 0x5AD8, //CJK UNIFIED IDEOGRAPH - 0xB9E4: 0x5AE3, //CJK UNIFIED IDEOGRAPH - 0xB9E5: 0x5B75, //CJK UNIFIED IDEOGRAPH - 0xB9E6: 0x5BDE, //CJK UNIFIED IDEOGRAPH - 0xB9E7: 0x5BE7, //CJK UNIFIED IDEOGRAPH - 0xB9E8: 0x5BE1, //CJK UNIFIED IDEOGRAPH - 0xB9E9: 0x5BE5, //CJK UNIFIED IDEOGRAPH - 0xB9EA: 0x5BE6, //CJK UNIFIED IDEOGRAPH - 0xB9EB: 0x5BE8, //CJK UNIFIED IDEOGRAPH - 0xB9EC: 0x5BE2, //CJK UNIFIED IDEOGRAPH - 0xB9ED: 0x5BE4, //CJK UNIFIED IDEOGRAPH - 0xB9EE: 0x5BDF, //CJK UNIFIED IDEOGRAPH - 0xB9EF: 0x5C0D, //CJK UNIFIED IDEOGRAPH - 0xB9F0: 0x5C62, //CJK UNIFIED IDEOGRAPH - 0xB9F1: 0x5D84, //CJK UNIFIED IDEOGRAPH - 0xB9F2: 0x5D87, //CJK UNIFIED IDEOGRAPH - 0xB9F3: 0x5E5B, //CJK UNIFIED IDEOGRAPH - 0xB9F4: 0x5E63, //CJK UNIFIED IDEOGRAPH - 0xB9F5: 0x5E55, //CJK UNIFIED IDEOGRAPH - 0xB9F6: 0x5E57, //CJK UNIFIED IDEOGRAPH - 0xB9F7: 0x5E54, //CJK UNIFIED IDEOGRAPH - 0xB9F8: 0x5ED3, //CJK UNIFIED IDEOGRAPH - 0xB9F9: 0x5ED6, //CJK UNIFIED IDEOGRAPH - 0xB9FA: 0x5F0A, //CJK UNIFIED IDEOGRAPH - 0xB9FB: 0x5F46, //CJK UNIFIED IDEOGRAPH - 0xB9FC: 0x5F70, //CJK UNIFIED IDEOGRAPH - 0xB9FD: 0x5FB9, //CJK UNIFIED IDEOGRAPH - 0xB9FE: 0x6147, //CJK UNIFIED IDEOGRAPH - 0xBA40: 0x613F, //CJK UNIFIED IDEOGRAPH - 0xBA41: 0x614B, //CJK UNIFIED IDEOGRAPH - 0xBA42: 0x6177, //CJK UNIFIED IDEOGRAPH - 0xBA43: 0x6162, //CJK UNIFIED IDEOGRAPH - 0xBA44: 0x6163, //CJK UNIFIED IDEOGRAPH - 0xBA45: 0x615F, //CJK UNIFIED IDEOGRAPH - 0xBA46: 0x615A, //CJK UNIFIED IDEOGRAPH - 0xBA47: 0x6158, //CJK UNIFIED IDEOGRAPH - 0xBA48: 0x6175, //CJK UNIFIED IDEOGRAPH - 0xBA49: 0x622A, //CJK UNIFIED IDEOGRAPH - 0xBA4A: 0x6487, //CJK UNIFIED IDEOGRAPH - 0xBA4B: 0x6458, //CJK UNIFIED IDEOGRAPH - 0xBA4C: 0x6454, //CJK UNIFIED IDEOGRAPH - 0xBA4D: 0x64A4, //CJK UNIFIED IDEOGRAPH - 0xBA4E: 0x6478, //CJK UNIFIED IDEOGRAPH - 0xBA4F: 0x645F, //CJK UNIFIED IDEOGRAPH - 0xBA50: 0x647A, //CJK UNIFIED IDEOGRAPH - 0xBA51: 0x6451, //CJK UNIFIED IDEOGRAPH - 0xBA52: 0x6467, //CJK UNIFIED IDEOGRAPH - 0xBA53: 0x6434, //CJK UNIFIED IDEOGRAPH - 0xBA54: 0x646D, //CJK UNIFIED IDEOGRAPH - 0xBA55: 0x647B, //CJK UNIFIED IDEOGRAPH - 0xBA56: 0x6572, //CJK UNIFIED IDEOGRAPH - 0xBA57: 0x65A1, //CJK UNIFIED IDEOGRAPH - 0xBA58: 0x65D7, //CJK UNIFIED IDEOGRAPH - 0xBA59: 0x65D6, //CJK UNIFIED IDEOGRAPH - 0xBA5A: 0x66A2, //CJK UNIFIED IDEOGRAPH - 0xBA5B: 0x66A8, //CJK UNIFIED IDEOGRAPH - 0xBA5C: 0x669D, //CJK UNIFIED IDEOGRAPH - 0xBA5D: 0x699C, //CJK UNIFIED IDEOGRAPH - 0xBA5E: 0x69A8, //CJK UNIFIED IDEOGRAPH - 0xBA5F: 0x6995, //CJK UNIFIED IDEOGRAPH - 0xBA60: 0x69C1, //CJK UNIFIED IDEOGRAPH - 0xBA61: 0x69AE, //CJK UNIFIED IDEOGRAPH - 0xBA62: 0x69D3, //CJK UNIFIED IDEOGRAPH - 0xBA63: 0x69CB, //CJK UNIFIED IDEOGRAPH - 0xBA64: 0x699B, //CJK UNIFIED IDEOGRAPH - 0xBA65: 0x69B7, //CJK UNIFIED IDEOGRAPH - 0xBA66: 0x69BB, //CJK UNIFIED IDEOGRAPH - 0xBA67: 0x69AB, //CJK UNIFIED IDEOGRAPH - 0xBA68: 0x69B4, //CJK UNIFIED IDEOGRAPH - 0xBA69: 0x69D0, //CJK UNIFIED IDEOGRAPH - 0xBA6A: 0x69CD, //CJK UNIFIED IDEOGRAPH - 0xBA6B: 0x69AD, //CJK UNIFIED IDEOGRAPH - 0xBA6C: 0x69CC, //CJK UNIFIED IDEOGRAPH - 0xBA6D: 0x69A6, //CJK UNIFIED IDEOGRAPH - 0xBA6E: 0x69C3, //CJK UNIFIED IDEOGRAPH - 0xBA6F: 0x69A3, //CJK UNIFIED IDEOGRAPH - 0xBA70: 0x6B49, //CJK UNIFIED IDEOGRAPH - 0xBA71: 0x6B4C, //CJK UNIFIED IDEOGRAPH - 0xBA72: 0x6C33, //CJK UNIFIED IDEOGRAPH - 0xBA73: 0x6F33, //CJK UNIFIED IDEOGRAPH - 0xBA74: 0x6F14, //CJK UNIFIED IDEOGRAPH - 0xBA75: 0x6EFE, //CJK UNIFIED IDEOGRAPH - 0xBA76: 0x6F13, //CJK UNIFIED IDEOGRAPH - 0xBA77: 0x6EF4, //CJK UNIFIED IDEOGRAPH - 0xBA78: 0x6F29, //CJK UNIFIED IDEOGRAPH - 0xBA79: 0x6F3E, //CJK UNIFIED IDEOGRAPH - 0xBA7A: 0x6F20, //CJK UNIFIED IDEOGRAPH - 0xBA7B: 0x6F2C, //CJK UNIFIED IDEOGRAPH - 0xBA7C: 0x6F0F, //CJK UNIFIED IDEOGRAPH - 0xBA7D: 0x6F02, //CJK UNIFIED IDEOGRAPH - 0xBA7E: 0x6F22, //CJK UNIFIED IDEOGRAPH - 0xBAA1: 0x6EFF, //CJK UNIFIED IDEOGRAPH - 0xBAA2: 0x6EEF, //CJK UNIFIED IDEOGRAPH - 0xBAA3: 0x6F06, //CJK UNIFIED IDEOGRAPH - 0xBAA4: 0x6F31, //CJK UNIFIED IDEOGRAPH - 0xBAA5: 0x6F38, //CJK UNIFIED IDEOGRAPH - 0xBAA6: 0x6F32, //CJK UNIFIED IDEOGRAPH - 0xBAA7: 0x6F23, //CJK UNIFIED IDEOGRAPH - 0xBAA8: 0x6F15, //CJK UNIFIED IDEOGRAPH - 0xBAA9: 0x6F2B, //CJK UNIFIED IDEOGRAPH - 0xBAAA: 0x6F2F, //CJK UNIFIED IDEOGRAPH - 0xBAAB: 0x6F88, //CJK UNIFIED IDEOGRAPH - 0xBAAC: 0x6F2A, //CJK UNIFIED IDEOGRAPH - 0xBAAD: 0x6EEC, //CJK UNIFIED IDEOGRAPH - 0xBAAE: 0x6F01, //CJK UNIFIED IDEOGRAPH - 0xBAAF: 0x6EF2, //CJK UNIFIED IDEOGRAPH - 0xBAB0: 0x6ECC, //CJK UNIFIED IDEOGRAPH - 0xBAB1: 0x6EF7, //CJK UNIFIED IDEOGRAPH - 0xBAB2: 0x7194, //CJK UNIFIED IDEOGRAPH - 0xBAB3: 0x7199, //CJK UNIFIED IDEOGRAPH - 0xBAB4: 0x717D, //CJK UNIFIED IDEOGRAPH - 0xBAB5: 0x718A, //CJK UNIFIED IDEOGRAPH - 0xBAB6: 0x7184, //CJK UNIFIED IDEOGRAPH - 0xBAB7: 0x7192, //CJK UNIFIED IDEOGRAPH - 0xBAB8: 0x723E, //CJK UNIFIED IDEOGRAPH - 0xBAB9: 0x7292, //CJK UNIFIED IDEOGRAPH - 0xBABA: 0x7296, //CJK UNIFIED IDEOGRAPH - 0xBABB: 0x7344, //CJK UNIFIED IDEOGRAPH - 0xBABC: 0x7350, //CJK UNIFIED IDEOGRAPH - 0xBABD: 0x7464, //CJK UNIFIED IDEOGRAPH - 0xBABE: 0x7463, //CJK UNIFIED IDEOGRAPH - 0xBABF: 0x746A, //CJK UNIFIED IDEOGRAPH - 0xBAC0: 0x7470, //CJK UNIFIED IDEOGRAPH - 0xBAC1: 0x746D, //CJK UNIFIED IDEOGRAPH - 0xBAC2: 0x7504, //CJK UNIFIED IDEOGRAPH - 0xBAC3: 0x7591, //CJK UNIFIED IDEOGRAPH - 0xBAC4: 0x7627, //CJK UNIFIED IDEOGRAPH - 0xBAC5: 0x760D, //CJK UNIFIED IDEOGRAPH - 0xBAC6: 0x760B, //CJK UNIFIED IDEOGRAPH - 0xBAC7: 0x7609, //CJK UNIFIED IDEOGRAPH - 0xBAC8: 0x7613, //CJK UNIFIED IDEOGRAPH - 0xBAC9: 0x76E1, //CJK UNIFIED IDEOGRAPH - 0xBACA: 0x76E3, //CJK UNIFIED IDEOGRAPH - 0xBACB: 0x7784, //CJK UNIFIED IDEOGRAPH - 0xBACC: 0x777D, //CJK UNIFIED IDEOGRAPH - 0xBACD: 0x777F, //CJK UNIFIED IDEOGRAPH - 0xBACE: 0x7761, //CJK UNIFIED IDEOGRAPH - 0xBACF: 0x78C1, //CJK UNIFIED IDEOGRAPH - 0xBAD0: 0x789F, //CJK UNIFIED IDEOGRAPH - 0xBAD1: 0x78A7, //CJK UNIFIED IDEOGRAPH - 0xBAD2: 0x78B3, //CJK UNIFIED IDEOGRAPH - 0xBAD3: 0x78A9, //CJK UNIFIED IDEOGRAPH - 0xBAD4: 0x78A3, //CJK UNIFIED IDEOGRAPH - 0xBAD5: 0x798E, //CJK UNIFIED IDEOGRAPH - 0xBAD6: 0x798F, //CJK UNIFIED IDEOGRAPH - 0xBAD7: 0x798D, //CJK UNIFIED IDEOGRAPH - 0xBAD8: 0x7A2E, //CJK UNIFIED IDEOGRAPH - 0xBAD9: 0x7A31, //CJK UNIFIED IDEOGRAPH - 0xBADA: 0x7AAA, //CJK UNIFIED IDEOGRAPH - 0xBADB: 0x7AA9, //CJK UNIFIED IDEOGRAPH - 0xBADC: 0x7AED, //CJK UNIFIED IDEOGRAPH - 0xBADD: 0x7AEF, //CJK UNIFIED IDEOGRAPH - 0xBADE: 0x7BA1, //CJK UNIFIED IDEOGRAPH - 0xBADF: 0x7B95, //CJK UNIFIED IDEOGRAPH - 0xBAE0: 0x7B8B, //CJK UNIFIED IDEOGRAPH - 0xBAE1: 0x7B75, //CJK UNIFIED IDEOGRAPH - 0xBAE2: 0x7B97, //CJK UNIFIED IDEOGRAPH - 0xBAE3: 0x7B9D, //CJK UNIFIED IDEOGRAPH - 0xBAE4: 0x7B94, //CJK UNIFIED IDEOGRAPH - 0xBAE5: 0x7B8F, //CJK UNIFIED IDEOGRAPH - 0xBAE6: 0x7BB8, //CJK UNIFIED IDEOGRAPH - 0xBAE7: 0x7B87, //CJK UNIFIED IDEOGRAPH - 0xBAE8: 0x7B84, //CJK UNIFIED IDEOGRAPH - 0xBAE9: 0x7CB9, //CJK UNIFIED IDEOGRAPH - 0xBAEA: 0x7CBD, //CJK UNIFIED IDEOGRAPH - 0xBAEB: 0x7CBE, //CJK UNIFIED IDEOGRAPH - 0xBAEC: 0x7DBB, //CJK UNIFIED IDEOGRAPH - 0xBAED: 0x7DB0, //CJK UNIFIED IDEOGRAPH - 0xBAEE: 0x7D9C, //CJK UNIFIED IDEOGRAPH - 0xBAEF: 0x7DBD, //CJK UNIFIED IDEOGRAPH - 0xBAF0: 0x7DBE, //CJK UNIFIED IDEOGRAPH - 0xBAF1: 0x7DA0, //CJK UNIFIED IDEOGRAPH - 0xBAF2: 0x7DCA, //CJK UNIFIED IDEOGRAPH - 0xBAF3: 0x7DB4, //CJK UNIFIED IDEOGRAPH - 0xBAF4: 0x7DB2, //CJK UNIFIED IDEOGRAPH - 0xBAF5: 0x7DB1, //CJK UNIFIED IDEOGRAPH - 0xBAF6: 0x7DBA, //CJK UNIFIED IDEOGRAPH - 0xBAF7: 0x7DA2, //CJK UNIFIED IDEOGRAPH - 0xBAF8: 0x7DBF, //CJK UNIFIED IDEOGRAPH - 0xBAF9: 0x7DB5, //CJK UNIFIED IDEOGRAPH - 0xBAFA: 0x7DB8, //CJK UNIFIED IDEOGRAPH - 0xBAFB: 0x7DAD, //CJK UNIFIED IDEOGRAPH - 0xBAFC: 0x7DD2, //CJK UNIFIED IDEOGRAPH - 0xBAFD: 0x7DC7, //CJK UNIFIED IDEOGRAPH - 0xBAFE: 0x7DAC, //CJK UNIFIED IDEOGRAPH - 0xBB40: 0x7F70, //CJK UNIFIED IDEOGRAPH - 0xBB41: 0x7FE0, //CJK UNIFIED IDEOGRAPH - 0xBB42: 0x7FE1, //CJK UNIFIED IDEOGRAPH - 0xBB43: 0x7FDF, //CJK UNIFIED IDEOGRAPH - 0xBB44: 0x805E, //CJK UNIFIED IDEOGRAPH - 0xBB45: 0x805A, //CJK UNIFIED IDEOGRAPH - 0xBB46: 0x8087, //CJK UNIFIED IDEOGRAPH - 0xBB47: 0x8150, //CJK UNIFIED IDEOGRAPH - 0xBB48: 0x8180, //CJK UNIFIED IDEOGRAPH - 0xBB49: 0x818F, //CJK UNIFIED IDEOGRAPH - 0xBB4A: 0x8188, //CJK UNIFIED IDEOGRAPH - 0xBB4B: 0x818A, //CJK UNIFIED IDEOGRAPH - 0xBB4C: 0x817F, //CJK UNIFIED IDEOGRAPH - 0xBB4D: 0x8182, //CJK UNIFIED IDEOGRAPH - 0xBB4E: 0x81E7, //CJK UNIFIED IDEOGRAPH - 0xBB4F: 0x81FA, //CJK UNIFIED IDEOGRAPH - 0xBB50: 0x8207, //CJK UNIFIED IDEOGRAPH - 0xBB51: 0x8214, //CJK UNIFIED IDEOGRAPH - 0xBB52: 0x821E, //CJK UNIFIED IDEOGRAPH - 0xBB53: 0x824B, //CJK UNIFIED IDEOGRAPH - 0xBB54: 0x84C9, //CJK UNIFIED IDEOGRAPH - 0xBB55: 0x84BF, //CJK UNIFIED IDEOGRAPH - 0xBB56: 0x84C6, //CJK UNIFIED IDEOGRAPH - 0xBB57: 0x84C4, //CJK UNIFIED IDEOGRAPH - 0xBB58: 0x8499, //CJK UNIFIED IDEOGRAPH - 0xBB59: 0x849E, //CJK UNIFIED IDEOGRAPH - 0xBB5A: 0x84B2, //CJK UNIFIED IDEOGRAPH - 0xBB5B: 0x849C, //CJK UNIFIED IDEOGRAPH - 0xBB5C: 0x84CB, //CJK UNIFIED IDEOGRAPH - 0xBB5D: 0x84B8, //CJK UNIFIED IDEOGRAPH - 0xBB5E: 0x84C0, //CJK UNIFIED IDEOGRAPH - 0xBB5F: 0x84D3, //CJK UNIFIED IDEOGRAPH - 0xBB60: 0x8490, //CJK UNIFIED IDEOGRAPH - 0xBB61: 0x84BC, //CJK UNIFIED IDEOGRAPH - 0xBB62: 0x84D1, //CJK UNIFIED IDEOGRAPH - 0xBB63: 0x84CA, //CJK UNIFIED IDEOGRAPH - 0xBB64: 0x873F, //CJK UNIFIED IDEOGRAPH - 0xBB65: 0x871C, //CJK UNIFIED IDEOGRAPH - 0xBB66: 0x873B, //CJK UNIFIED IDEOGRAPH - 0xBB67: 0x8722, //CJK UNIFIED IDEOGRAPH - 0xBB68: 0x8725, //CJK UNIFIED IDEOGRAPH - 0xBB69: 0x8734, //CJK UNIFIED IDEOGRAPH - 0xBB6A: 0x8718, //CJK UNIFIED IDEOGRAPH - 0xBB6B: 0x8755, //CJK UNIFIED IDEOGRAPH - 0xBB6C: 0x8737, //CJK UNIFIED IDEOGRAPH - 0xBB6D: 0x8729, //CJK UNIFIED IDEOGRAPH - 0xBB6E: 0x88F3, //CJK UNIFIED IDEOGRAPH - 0xBB6F: 0x8902, //CJK UNIFIED IDEOGRAPH - 0xBB70: 0x88F4, //CJK UNIFIED IDEOGRAPH - 0xBB71: 0x88F9, //CJK UNIFIED IDEOGRAPH - 0xBB72: 0x88F8, //CJK UNIFIED IDEOGRAPH - 0xBB73: 0x88FD, //CJK UNIFIED IDEOGRAPH - 0xBB74: 0x88E8, //CJK UNIFIED IDEOGRAPH - 0xBB75: 0x891A, //CJK UNIFIED IDEOGRAPH - 0xBB76: 0x88EF, //CJK UNIFIED IDEOGRAPH - 0xBB77: 0x8AA6, //CJK UNIFIED IDEOGRAPH - 0xBB78: 0x8A8C, //CJK UNIFIED IDEOGRAPH - 0xBB79: 0x8A9E, //CJK UNIFIED IDEOGRAPH - 0xBB7A: 0x8AA3, //CJK UNIFIED IDEOGRAPH - 0xBB7B: 0x8A8D, //CJK UNIFIED IDEOGRAPH - 0xBB7C: 0x8AA1, //CJK UNIFIED IDEOGRAPH - 0xBB7D: 0x8A93, //CJK UNIFIED IDEOGRAPH - 0xBB7E: 0x8AA4, //CJK UNIFIED IDEOGRAPH - 0xBBA1: 0x8AAA, //CJK UNIFIED IDEOGRAPH - 0xBBA2: 0x8AA5, //CJK UNIFIED IDEOGRAPH - 0xBBA3: 0x8AA8, //CJK UNIFIED IDEOGRAPH - 0xBBA4: 0x8A98, //CJK UNIFIED IDEOGRAPH - 0xBBA5: 0x8A91, //CJK UNIFIED IDEOGRAPH - 0xBBA6: 0x8A9A, //CJK UNIFIED IDEOGRAPH - 0xBBA7: 0x8AA7, //CJK UNIFIED IDEOGRAPH - 0xBBA8: 0x8C6A, //CJK UNIFIED IDEOGRAPH - 0xBBA9: 0x8C8D, //CJK UNIFIED IDEOGRAPH - 0xBBAA: 0x8C8C, //CJK UNIFIED IDEOGRAPH - 0xBBAB: 0x8CD3, //CJK UNIFIED IDEOGRAPH - 0xBBAC: 0x8CD1, //CJK UNIFIED IDEOGRAPH - 0xBBAD: 0x8CD2, //CJK UNIFIED IDEOGRAPH - 0xBBAE: 0x8D6B, //CJK UNIFIED IDEOGRAPH - 0xBBAF: 0x8D99, //CJK UNIFIED IDEOGRAPH - 0xBBB0: 0x8D95, //CJK UNIFIED IDEOGRAPH - 0xBBB1: 0x8DFC, //CJK UNIFIED IDEOGRAPH - 0xBBB2: 0x8F14, //CJK UNIFIED IDEOGRAPH - 0xBBB3: 0x8F12, //CJK UNIFIED IDEOGRAPH - 0xBBB4: 0x8F15, //CJK UNIFIED IDEOGRAPH - 0xBBB5: 0x8F13, //CJK UNIFIED IDEOGRAPH - 0xBBB6: 0x8FA3, //CJK UNIFIED IDEOGRAPH - 0xBBB7: 0x9060, //CJK UNIFIED IDEOGRAPH - 0xBBB8: 0x9058, //CJK UNIFIED IDEOGRAPH - 0xBBB9: 0x905C, //CJK UNIFIED IDEOGRAPH - 0xBBBA: 0x9063, //CJK UNIFIED IDEOGRAPH - 0xBBBB: 0x9059, //CJK UNIFIED IDEOGRAPH - 0xBBBC: 0x905E, //CJK UNIFIED IDEOGRAPH - 0xBBBD: 0x9062, //CJK UNIFIED IDEOGRAPH - 0xBBBE: 0x905D, //CJK UNIFIED IDEOGRAPH - 0xBBBF: 0x905B, //CJK UNIFIED IDEOGRAPH - 0xBBC0: 0x9119, //CJK UNIFIED IDEOGRAPH - 0xBBC1: 0x9118, //CJK UNIFIED IDEOGRAPH - 0xBBC2: 0x911E, //CJK UNIFIED IDEOGRAPH - 0xBBC3: 0x9175, //CJK UNIFIED IDEOGRAPH - 0xBBC4: 0x9178, //CJK UNIFIED IDEOGRAPH - 0xBBC5: 0x9177, //CJK UNIFIED IDEOGRAPH - 0xBBC6: 0x9174, //CJK UNIFIED IDEOGRAPH - 0xBBC7: 0x9278, //CJK UNIFIED IDEOGRAPH - 0xBBC8: 0x9280, //CJK UNIFIED IDEOGRAPH - 0xBBC9: 0x9285, //CJK UNIFIED IDEOGRAPH - 0xBBCA: 0x9298, //CJK UNIFIED IDEOGRAPH - 0xBBCB: 0x9296, //CJK UNIFIED IDEOGRAPH - 0xBBCC: 0x927B, //CJK UNIFIED IDEOGRAPH - 0xBBCD: 0x9293, //CJK UNIFIED IDEOGRAPH - 0xBBCE: 0x929C, //CJK UNIFIED IDEOGRAPH - 0xBBCF: 0x92A8, //CJK UNIFIED IDEOGRAPH - 0xBBD0: 0x927C, //CJK UNIFIED IDEOGRAPH - 0xBBD1: 0x9291, //CJK UNIFIED IDEOGRAPH - 0xBBD2: 0x95A1, //CJK UNIFIED IDEOGRAPH - 0xBBD3: 0x95A8, //CJK UNIFIED IDEOGRAPH - 0xBBD4: 0x95A9, //CJK UNIFIED IDEOGRAPH - 0xBBD5: 0x95A3, //CJK UNIFIED IDEOGRAPH - 0xBBD6: 0x95A5, //CJK UNIFIED IDEOGRAPH - 0xBBD7: 0x95A4, //CJK UNIFIED IDEOGRAPH - 0xBBD8: 0x9699, //CJK UNIFIED IDEOGRAPH - 0xBBD9: 0x969C, //CJK UNIFIED IDEOGRAPH - 0xBBDA: 0x969B, //CJK UNIFIED IDEOGRAPH - 0xBBDB: 0x96CC, //CJK UNIFIED IDEOGRAPH - 0xBBDC: 0x96D2, //CJK UNIFIED IDEOGRAPH - 0xBBDD: 0x9700, //CJK UNIFIED IDEOGRAPH - 0xBBDE: 0x977C, //CJK UNIFIED IDEOGRAPH - 0xBBDF: 0x9785, //CJK UNIFIED IDEOGRAPH - 0xBBE0: 0x97F6, //CJK UNIFIED IDEOGRAPH - 0xBBE1: 0x9817, //CJK UNIFIED IDEOGRAPH - 0xBBE2: 0x9818, //CJK UNIFIED IDEOGRAPH - 0xBBE3: 0x98AF, //CJK UNIFIED IDEOGRAPH - 0xBBE4: 0x98B1, //CJK UNIFIED IDEOGRAPH - 0xBBE5: 0x9903, //CJK UNIFIED IDEOGRAPH - 0xBBE6: 0x9905, //CJK UNIFIED IDEOGRAPH - 0xBBE7: 0x990C, //CJK UNIFIED IDEOGRAPH - 0xBBE8: 0x9909, //CJK UNIFIED IDEOGRAPH - 0xBBE9: 0x99C1, //CJK UNIFIED IDEOGRAPH - 0xBBEA: 0x9AAF, //CJK UNIFIED IDEOGRAPH - 0xBBEB: 0x9AB0, //CJK UNIFIED IDEOGRAPH - 0xBBEC: 0x9AE6, //CJK UNIFIED IDEOGRAPH - 0xBBED: 0x9B41, //CJK UNIFIED IDEOGRAPH - 0xBBEE: 0x9B42, //CJK UNIFIED IDEOGRAPH - 0xBBEF: 0x9CF4, //CJK UNIFIED IDEOGRAPH - 0xBBF0: 0x9CF6, //CJK UNIFIED IDEOGRAPH - 0xBBF1: 0x9CF3, //CJK UNIFIED IDEOGRAPH - 0xBBF2: 0x9EBC, //CJK UNIFIED IDEOGRAPH - 0xBBF3: 0x9F3B, //CJK UNIFIED IDEOGRAPH - 0xBBF4: 0x9F4A, //CJK UNIFIED IDEOGRAPH - 0xBBF5: 0x5104, //CJK UNIFIED IDEOGRAPH - 0xBBF6: 0x5100, //CJK UNIFIED IDEOGRAPH - 0xBBF7: 0x50FB, //CJK UNIFIED IDEOGRAPH - 0xBBF8: 0x50F5, //CJK UNIFIED IDEOGRAPH - 0xBBF9: 0x50F9, //CJK UNIFIED IDEOGRAPH - 0xBBFA: 0x5102, //CJK UNIFIED IDEOGRAPH - 0xBBFB: 0x5108, //CJK UNIFIED IDEOGRAPH - 0xBBFC: 0x5109, //CJK UNIFIED IDEOGRAPH - 0xBBFD: 0x5105, //CJK UNIFIED IDEOGRAPH - 0xBBFE: 0x51DC, //CJK UNIFIED IDEOGRAPH - 0xBC40: 0x5287, //CJK UNIFIED IDEOGRAPH - 0xBC41: 0x5288, //CJK UNIFIED IDEOGRAPH - 0xBC42: 0x5289, //CJK UNIFIED IDEOGRAPH - 0xBC43: 0x528D, //CJK UNIFIED IDEOGRAPH - 0xBC44: 0x528A, //CJK UNIFIED IDEOGRAPH - 0xBC45: 0x52F0, //CJK UNIFIED IDEOGRAPH - 0xBC46: 0x53B2, //CJK UNIFIED IDEOGRAPH - 0xBC47: 0x562E, //CJK UNIFIED IDEOGRAPH - 0xBC48: 0x563B, //CJK UNIFIED IDEOGRAPH - 0xBC49: 0x5639, //CJK UNIFIED IDEOGRAPH - 0xBC4A: 0x5632, //CJK UNIFIED IDEOGRAPH - 0xBC4B: 0x563F, //CJK UNIFIED IDEOGRAPH - 0xBC4C: 0x5634, //CJK UNIFIED IDEOGRAPH - 0xBC4D: 0x5629, //CJK UNIFIED IDEOGRAPH - 0xBC4E: 0x5653, //CJK UNIFIED IDEOGRAPH - 0xBC4F: 0x564E, //CJK UNIFIED IDEOGRAPH - 0xBC50: 0x5657, //CJK UNIFIED IDEOGRAPH - 0xBC51: 0x5674, //CJK UNIFIED IDEOGRAPH - 0xBC52: 0x5636, //CJK UNIFIED IDEOGRAPH - 0xBC53: 0x562F, //CJK UNIFIED IDEOGRAPH - 0xBC54: 0x5630, //CJK UNIFIED IDEOGRAPH - 0xBC55: 0x5880, //CJK UNIFIED IDEOGRAPH - 0xBC56: 0x589F, //CJK UNIFIED IDEOGRAPH - 0xBC57: 0x589E, //CJK UNIFIED IDEOGRAPH - 0xBC58: 0x58B3, //CJK UNIFIED IDEOGRAPH - 0xBC59: 0x589C, //CJK UNIFIED IDEOGRAPH - 0xBC5A: 0x58AE, //CJK UNIFIED IDEOGRAPH - 0xBC5B: 0x58A9, //CJK UNIFIED IDEOGRAPH - 0xBC5C: 0x58A6, //CJK UNIFIED IDEOGRAPH - 0xBC5D: 0x596D, //CJK UNIFIED IDEOGRAPH - 0xBC5E: 0x5B09, //CJK UNIFIED IDEOGRAPH - 0xBC5F: 0x5AFB, //CJK UNIFIED IDEOGRAPH - 0xBC60: 0x5B0B, //CJK UNIFIED IDEOGRAPH - 0xBC61: 0x5AF5, //CJK UNIFIED IDEOGRAPH - 0xBC62: 0x5B0C, //CJK UNIFIED IDEOGRAPH - 0xBC63: 0x5B08, //CJK UNIFIED IDEOGRAPH - 0xBC64: 0x5BEE, //CJK UNIFIED IDEOGRAPH - 0xBC65: 0x5BEC, //CJK UNIFIED IDEOGRAPH - 0xBC66: 0x5BE9, //CJK UNIFIED IDEOGRAPH - 0xBC67: 0x5BEB, //CJK UNIFIED IDEOGRAPH - 0xBC68: 0x5C64, //CJK UNIFIED IDEOGRAPH - 0xBC69: 0x5C65, //CJK UNIFIED IDEOGRAPH - 0xBC6A: 0x5D9D, //CJK UNIFIED IDEOGRAPH - 0xBC6B: 0x5D94, //CJK UNIFIED IDEOGRAPH - 0xBC6C: 0x5E62, //CJK UNIFIED IDEOGRAPH - 0xBC6D: 0x5E5F, //CJK UNIFIED IDEOGRAPH - 0xBC6E: 0x5E61, //CJK UNIFIED IDEOGRAPH - 0xBC6F: 0x5EE2, //CJK UNIFIED IDEOGRAPH - 0xBC70: 0x5EDA, //CJK UNIFIED IDEOGRAPH - 0xBC71: 0x5EDF, //CJK UNIFIED IDEOGRAPH - 0xBC72: 0x5EDD, //CJK UNIFIED IDEOGRAPH - 0xBC73: 0x5EE3, //CJK UNIFIED IDEOGRAPH - 0xBC74: 0x5EE0, //CJK UNIFIED IDEOGRAPH - 0xBC75: 0x5F48, //CJK UNIFIED IDEOGRAPH - 0xBC76: 0x5F71, //CJK UNIFIED IDEOGRAPH - 0xBC77: 0x5FB7, //CJK UNIFIED IDEOGRAPH - 0xBC78: 0x5FB5, //CJK UNIFIED IDEOGRAPH - 0xBC79: 0x6176, //CJK UNIFIED IDEOGRAPH - 0xBC7A: 0x6167, //CJK UNIFIED IDEOGRAPH - 0xBC7B: 0x616E, //CJK UNIFIED IDEOGRAPH - 0xBC7C: 0x615D, //CJK UNIFIED IDEOGRAPH - 0xBC7D: 0x6155, //CJK UNIFIED IDEOGRAPH - 0xBC7E: 0x6182, //CJK UNIFIED IDEOGRAPH - 0xBCA1: 0x617C, //CJK UNIFIED IDEOGRAPH - 0xBCA2: 0x6170, //CJK UNIFIED IDEOGRAPH - 0xBCA3: 0x616B, //CJK UNIFIED IDEOGRAPH - 0xBCA4: 0x617E, //CJK UNIFIED IDEOGRAPH - 0xBCA5: 0x61A7, //CJK UNIFIED IDEOGRAPH - 0xBCA6: 0x6190, //CJK UNIFIED IDEOGRAPH - 0xBCA7: 0x61AB, //CJK UNIFIED IDEOGRAPH - 0xBCA8: 0x618E, //CJK UNIFIED IDEOGRAPH - 0xBCA9: 0x61AC, //CJK UNIFIED IDEOGRAPH - 0xBCAA: 0x619A, //CJK UNIFIED IDEOGRAPH - 0xBCAB: 0x61A4, //CJK UNIFIED IDEOGRAPH - 0xBCAC: 0x6194, //CJK UNIFIED IDEOGRAPH - 0xBCAD: 0x61AE, //CJK UNIFIED IDEOGRAPH - 0xBCAE: 0x622E, //CJK UNIFIED IDEOGRAPH - 0xBCAF: 0x6469, //CJK UNIFIED IDEOGRAPH - 0xBCB0: 0x646F, //CJK UNIFIED IDEOGRAPH - 0xBCB1: 0x6479, //CJK UNIFIED IDEOGRAPH - 0xBCB2: 0x649E, //CJK UNIFIED IDEOGRAPH - 0xBCB3: 0x64B2, //CJK UNIFIED IDEOGRAPH - 0xBCB4: 0x6488, //CJK UNIFIED IDEOGRAPH - 0xBCB5: 0x6490, //CJK UNIFIED IDEOGRAPH - 0xBCB6: 0x64B0, //CJK UNIFIED IDEOGRAPH - 0xBCB7: 0x64A5, //CJK UNIFIED IDEOGRAPH - 0xBCB8: 0x6493, //CJK UNIFIED IDEOGRAPH - 0xBCB9: 0x6495, //CJK UNIFIED IDEOGRAPH - 0xBCBA: 0x64A9, //CJK UNIFIED IDEOGRAPH - 0xBCBB: 0x6492, //CJK UNIFIED IDEOGRAPH - 0xBCBC: 0x64AE, //CJK UNIFIED IDEOGRAPH - 0xBCBD: 0x64AD, //CJK UNIFIED IDEOGRAPH - 0xBCBE: 0x64AB, //CJK UNIFIED IDEOGRAPH - 0xBCBF: 0x649A, //CJK UNIFIED IDEOGRAPH - 0xBCC0: 0x64AC, //CJK UNIFIED IDEOGRAPH - 0xBCC1: 0x6499, //CJK UNIFIED IDEOGRAPH - 0xBCC2: 0x64A2, //CJK UNIFIED IDEOGRAPH - 0xBCC3: 0x64B3, //CJK UNIFIED IDEOGRAPH - 0xBCC4: 0x6575, //CJK UNIFIED IDEOGRAPH - 0xBCC5: 0x6577, //CJK UNIFIED IDEOGRAPH - 0xBCC6: 0x6578, //CJK UNIFIED IDEOGRAPH - 0xBCC7: 0x66AE, //CJK UNIFIED IDEOGRAPH - 0xBCC8: 0x66AB, //CJK UNIFIED IDEOGRAPH - 0xBCC9: 0x66B4, //CJK UNIFIED IDEOGRAPH - 0xBCCA: 0x66B1, //CJK UNIFIED IDEOGRAPH - 0xBCCB: 0x6A23, //CJK UNIFIED IDEOGRAPH - 0xBCCC: 0x6A1F, //CJK UNIFIED IDEOGRAPH - 0xBCCD: 0x69E8, //CJK UNIFIED IDEOGRAPH - 0xBCCE: 0x6A01, //CJK UNIFIED IDEOGRAPH - 0xBCCF: 0x6A1E, //CJK UNIFIED IDEOGRAPH - 0xBCD0: 0x6A19, //CJK UNIFIED IDEOGRAPH - 0xBCD1: 0x69FD, //CJK UNIFIED IDEOGRAPH - 0xBCD2: 0x6A21, //CJK UNIFIED IDEOGRAPH - 0xBCD3: 0x6A13, //CJK UNIFIED IDEOGRAPH - 0xBCD4: 0x6A0A, //CJK UNIFIED IDEOGRAPH - 0xBCD5: 0x69F3, //CJK UNIFIED IDEOGRAPH - 0xBCD6: 0x6A02, //CJK UNIFIED IDEOGRAPH - 0xBCD7: 0x6A05, //CJK UNIFIED IDEOGRAPH - 0xBCD8: 0x69ED, //CJK UNIFIED IDEOGRAPH - 0xBCD9: 0x6A11, //CJK UNIFIED IDEOGRAPH - 0xBCDA: 0x6B50, //CJK UNIFIED IDEOGRAPH - 0xBCDB: 0x6B4E, //CJK UNIFIED IDEOGRAPH - 0xBCDC: 0x6BA4, //CJK UNIFIED IDEOGRAPH - 0xBCDD: 0x6BC5, //CJK UNIFIED IDEOGRAPH - 0xBCDE: 0x6BC6, //CJK UNIFIED IDEOGRAPH - 0xBCDF: 0x6F3F, //CJK UNIFIED IDEOGRAPH - 0xBCE0: 0x6F7C, //CJK UNIFIED IDEOGRAPH - 0xBCE1: 0x6F84, //CJK UNIFIED IDEOGRAPH - 0xBCE2: 0x6F51, //CJK UNIFIED IDEOGRAPH - 0xBCE3: 0x6F66, //CJK UNIFIED IDEOGRAPH - 0xBCE4: 0x6F54, //CJK UNIFIED IDEOGRAPH - 0xBCE5: 0x6F86, //CJK UNIFIED IDEOGRAPH - 0xBCE6: 0x6F6D, //CJK UNIFIED IDEOGRAPH - 0xBCE7: 0x6F5B, //CJK UNIFIED IDEOGRAPH - 0xBCE8: 0x6F78, //CJK UNIFIED IDEOGRAPH - 0xBCE9: 0x6F6E, //CJK UNIFIED IDEOGRAPH - 0xBCEA: 0x6F8E, //CJK UNIFIED IDEOGRAPH - 0xBCEB: 0x6F7A, //CJK UNIFIED IDEOGRAPH - 0xBCEC: 0x6F70, //CJK UNIFIED IDEOGRAPH - 0xBCED: 0x6F64, //CJK UNIFIED IDEOGRAPH - 0xBCEE: 0x6F97, //CJK UNIFIED IDEOGRAPH - 0xBCEF: 0x6F58, //CJK UNIFIED IDEOGRAPH - 0xBCF0: 0x6ED5, //CJK UNIFIED IDEOGRAPH - 0xBCF1: 0x6F6F, //CJK UNIFIED IDEOGRAPH - 0xBCF2: 0x6F60, //CJK UNIFIED IDEOGRAPH - 0xBCF3: 0x6F5F, //CJK UNIFIED IDEOGRAPH - 0xBCF4: 0x719F, //CJK UNIFIED IDEOGRAPH - 0xBCF5: 0x71AC, //CJK UNIFIED IDEOGRAPH - 0xBCF6: 0x71B1, //CJK UNIFIED IDEOGRAPH - 0xBCF7: 0x71A8, //CJK UNIFIED IDEOGRAPH - 0xBCF8: 0x7256, //CJK UNIFIED IDEOGRAPH - 0xBCF9: 0x729B, //CJK UNIFIED IDEOGRAPH - 0xBCFA: 0x734E, //CJK UNIFIED IDEOGRAPH - 0xBCFB: 0x7357, //CJK UNIFIED IDEOGRAPH - 0xBCFC: 0x7469, //CJK UNIFIED IDEOGRAPH - 0xBCFD: 0x748B, //CJK UNIFIED IDEOGRAPH - 0xBCFE: 0x7483, //CJK UNIFIED IDEOGRAPH - 0xBD40: 0x747E, //CJK UNIFIED IDEOGRAPH - 0xBD41: 0x7480, //CJK UNIFIED IDEOGRAPH - 0xBD42: 0x757F, //CJK UNIFIED IDEOGRAPH - 0xBD43: 0x7620, //CJK UNIFIED IDEOGRAPH - 0xBD44: 0x7629, //CJK UNIFIED IDEOGRAPH - 0xBD45: 0x761F, //CJK UNIFIED IDEOGRAPH - 0xBD46: 0x7624, //CJK UNIFIED IDEOGRAPH - 0xBD47: 0x7626, //CJK UNIFIED IDEOGRAPH - 0xBD48: 0x7621, //CJK UNIFIED IDEOGRAPH - 0xBD49: 0x7622, //CJK UNIFIED IDEOGRAPH - 0xBD4A: 0x769A, //CJK UNIFIED IDEOGRAPH - 0xBD4B: 0x76BA, //CJK UNIFIED IDEOGRAPH - 0xBD4C: 0x76E4, //CJK UNIFIED IDEOGRAPH - 0xBD4D: 0x778E, //CJK UNIFIED IDEOGRAPH - 0xBD4E: 0x7787, //CJK UNIFIED IDEOGRAPH - 0xBD4F: 0x778C, //CJK UNIFIED IDEOGRAPH - 0xBD50: 0x7791, //CJK UNIFIED IDEOGRAPH - 0xBD51: 0x778B, //CJK UNIFIED IDEOGRAPH - 0xBD52: 0x78CB, //CJK UNIFIED IDEOGRAPH - 0xBD53: 0x78C5, //CJK UNIFIED IDEOGRAPH - 0xBD54: 0x78BA, //CJK UNIFIED IDEOGRAPH - 0xBD55: 0x78CA, //CJK UNIFIED IDEOGRAPH - 0xBD56: 0x78BE, //CJK UNIFIED IDEOGRAPH - 0xBD57: 0x78D5, //CJK UNIFIED IDEOGRAPH - 0xBD58: 0x78BC, //CJK UNIFIED IDEOGRAPH - 0xBD59: 0x78D0, //CJK UNIFIED IDEOGRAPH - 0xBD5A: 0x7A3F, //CJK UNIFIED IDEOGRAPH - 0xBD5B: 0x7A3C, //CJK UNIFIED IDEOGRAPH - 0xBD5C: 0x7A40, //CJK UNIFIED IDEOGRAPH - 0xBD5D: 0x7A3D, //CJK UNIFIED IDEOGRAPH - 0xBD5E: 0x7A37, //CJK UNIFIED IDEOGRAPH - 0xBD5F: 0x7A3B, //CJK UNIFIED IDEOGRAPH - 0xBD60: 0x7AAF, //CJK UNIFIED IDEOGRAPH - 0xBD61: 0x7AAE, //CJK UNIFIED IDEOGRAPH - 0xBD62: 0x7BAD, //CJK UNIFIED IDEOGRAPH - 0xBD63: 0x7BB1, //CJK UNIFIED IDEOGRAPH - 0xBD64: 0x7BC4, //CJK UNIFIED IDEOGRAPH - 0xBD65: 0x7BB4, //CJK UNIFIED IDEOGRAPH - 0xBD66: 0x7BC6, //CJK UNIFIED IDEOGRAPH - 0xBD67: 0x7BC7, //CJK UNIFIED IDEOGRAPH - 0xBD68: 0x7BC1, //CJK UNIFIED IDEOGRAPH - 0xBD69: 0x7BA0, //CJK UNIFIED IDEOGRAPH - 0xBD6A: 0x7BCC, //CJK UNIFIED IDEOGRAPH - 0xBD6B: 0x7CCA, //CJK UNIFIED IDEOGRAPH - 0xBD6C: 0x7DE0, //CJK UNIFIED IDEOGRAPH - 0xBD6D: 0x7DF4, //CJK UNIFIED IDEOGRAPH - 0xBD6E: 0x7DEF, //CJK UNIFIED IDEOGRAPH - 0xBD6F: 0x7DFB, //CJK UNIFIED IDEOGRAPH - 0xBD70: 0x7DD8, //CJK UNIFIED IDEOGRAPH - 0xBD71: 0x7DEC, //CJK UNIFIED IDEOGRAPH - 0xBD72: 0x7DDD, //CJK UNIFIED IDEOGRAPH - 0xBD73: 0x7DE8, //CJK UNIFIED IDEOGRAPH - 0xBD74: 0x7DE3, //CJK UNIFIED IDEOGRAPH - 0xBD75: 0x7DDA, //CJK UNIFIED IDEOGRAPH - 0xBD76: 0x7DDE, //CJK UNIFIED IDEOGRAPH - 0xBD77: 0x7DE9, //CJK UNIFIED IDEOGRAPH - 0xBD78: 0x7D9E, //CJK UNIFIED IDEOGRAPH - 0xBD79: 0x7DD9, //CJK UNIFIED IDEOGRAPH - 0xBD7A: 0x7DF2, //CJK UNIFIED IDEOGRAPH - 0xBD7B: 0x7DF9, //CJK UNIFIED IDEOGRAPH - 0xBD7C: 0x7F75, //CJK UNIFIED IDEOGRAPH - 0xBD7D: 0x7F77, //CJK UNIFIED IDEOGRAPH - 0xBD7E: 0x7FAF, //CJK UNIFIED IDEOGRAPH - 0xBDA1: 0x7FE9, //CJK UNIFIED IDEOGRAPH - 0xBDA2: 0x8026, //CJK UNIFIED IDEOGRAPH - 0xBDA3: 0x819B, //CJK UNIFIED IDEOGRAPH - 0xBDA4: 0x819C, //CJK UNIFIED IDEOGRAPH - 0xBDA5: 0x819D, //CJK UNIFIED IDEOGRAPH - 0xBDA6: 0x81A0, //CJK UNIFIED IDEOGRAPH - 0xBDA7: 0x819A, //CJK UNIFIED IDEOGRAPH - 0xBDA8: 0x8198, //CJK UNIFIED IDEOGRAPH - 0xBDA9: 0x8517, //CJK UNIFIED IDEOGRAPH - 0xBDAA: 0x853D, //CJK UNIFIED IDEOGRAPH - 0xBDAB: 0x851A, //CJK UNIFIED IDEOGRAPH - 0xBDAC: 0x84EE, //CJK UNIFIED IDEOGRAPH - 0xBDAD: 0x852C, //CJK UNIFIED IDEOGRAPH - 0xBDAE: 0x852D, //CJK UNIFIED IDEOGRAPH - 0xBDAF: 0x8513, //CJK UNIFIED IDEOGRAPH - 0xBDB0: 0x8511, //CJK UNIFIED IDEOGRAPH - 0xBDB1: 0x8523, //CJK UNIFIED IDEOGRAPH - 0xBDB2: 0x8521, //CJK UNIFIED IDEOGRAPH - 0xBDB3: 0x8514, //CJK UNIFIED IDEOGRAPH - 0xBDB4: 0x84EC, //CJK UNIFIED IDEOGRAPH - 0xBDB5: 0x8525, //CJK UNIFIED IDEOGRAPH - 0xBDB6: 0x84FF, //CJK UNIFIED IDEOGRAPH - 0xBDB7: 0x8506, //CJK UNIFIED IDEOGRAPH - 0xBDB8: 0x8782, //CJK UNIFIED IDEOGRAPH - 0xBDB9: 0x8774, //CJK UNIFIED IDEOGRAPH - 0xBDBA: 0x8776, //CJK UNIFIED IDEOGRAPH - 0xBDBB: 0x8760, //CJK UNIFIED IDEOGRAPH - 0xBDBC: 0x8766, //CJK UNIFIED IDEOGRAPH - 0xBDBD: 0x8778, //CJK UNIFIED IDEOGRAPH - 0xBDBE: 0x8768, //CJK UNIFIED IDEOGRAPH - 0xBDBF: 0x8759, //CJK UNIFIED IDEOGRAPH - 0xBDC0: 0x8757, //CJK UNIFIED IDEOGRAPH - 0xBDC1: 0x874C, //CJK UNIFIED IDEOGRAPH - 0xBDC2: 0x8753, //CJK UNIFIED IDEOGRAPH - 0xBDC3: 0x885B, //CJK UNIFIED IDEOGRAPH - 0xBDC4: 0x885D, //CJK UNIFIED IDEOGRAPH - 0xBDC5: 0x8910, //CJK UNIFIED IDEOGRAPH - 0xBDC6: 0x8907, //CJK UNIFIED IDEOGRAPH - 0xBDC7: 0x8912, //CJK UNIFIED IDEOGRAPH - 0xBDC8: 0x8913, //CJK UNIFIED IDEOGRAPH - 0xBDC9: 0x8915, //CJK UNIFIED IDEOGRAPH - 0xBDCA: 0x890A, //CJK UNIFIED IDEOGRAPH - 0xBDCB: 0x8ABC, //CJK UNIFIED IDEOGRAPH - 0xBDCC: 0x8AD2, //CJK UNIFIED IDEOGRAPH - 0xBDCD: 0x8AC7, //CJK UNIFIED IDEOGRAPH - 0xBDCE: 0x8AC4, //CJK UNIFIED IDEOGRAPH - 0xBDCF: 0x8A95, //CJK UNIFIED IDEOGRAPH - 0xBDD0: 0x8ACB, //CJK UNIFIED IDEOGRAPH - 0xBDD1: 0x8AF8, //CJK UNIFIED IDEOGRAPH - 0xBDD2: 0x8AB2, //CJK UNIFIED IDEOGRAPH - 0xBDD3: 0x8AC9, //CJK UNIFIED IDEOGRAPH - 0xBDD4: 0x8AC2, //CJK UNIFIED IDEOGRAPH - 0xBDD5: 0x8ABF, //CJK UNIFIED IDEOGRAPH - 0xBDD6: 0x8AB0, //CJK UNIFIED IDEOGRAPH - 0xBDD7: 0x8AD6, //CJK UNIFIED IDEOGRAPH - 0xBDD8: 0x8ACD, //CJK UNIFIED IDEOGRAPH - 0xBDD9: 0x8AB6, //CJK UNIFIED IDEOGRAPH - 0xBDDA: 0x8AB9, //CJK UNIFIED IDEOGRAPH - 0xBDDB: 0x8ADB, //CJK UNIFIED IDEOGRAPH - 0xBDDC: 0x8C4C, //CJK UNIFIED IDEOGRAPH - 0xBDDD: 0x8C4E, //CJK UNIFIED IDEOGRAPH - 0xBDDE: 0x8C6C, //CJK UNIFIED IDEOGRAPH - 0xBDDF: 0x8CE0, //CJK UNIFIED IDEOGRAPH - 0xBDE0: 0x8CDE, //CJK UNIFIED IDEOGRAPH - 0xBDE1: 0x8CE6, //CJK UNIFIED IDEOGRAPH - 0xBDE2: 0x8CE4, //CJK UNIFIED IDEOGRAPH - 0xBDE3: 0x8CEC, //CJK UNIFIED IDEOGRAPH - 0xBDE4: 0x8CED, //CJK UNIFIED IDEOGRAPH - 0xBDE5: 0x8CE2, //CJK UNIFIED IDEOGRAPH - 0xBDE6: 0x8CE3, //CJK UNIFIED IDEOGRAPH - 0xBDE7: 0x8CDC, //CJK UNIFIED IDEOGRAPH - 0xBDE8: 0x8CEA, //CJK UNIFIED IDEOGRAPH - 0xBDE9: 0x8CE1, //CJK UNIFIED IDEOGRAPH - 0xBDEA: 0x8D6D, //CJK UNIFIED IDEOGRAPH - 0xBDEB: 0x8D9F, //CJK UNIFIED IDEOGRAPH - 0xBDEC: 0x8DA3, //CJK UNIFIED IDEOGRAPH - 0xBDED: 0x8E2B, //CJK UNIFIED IDEOGRAPH - 0xBDEE: 0x8E10, //CJK UNIFIED IDEOGRAPH - 0xBDEF: 0x8E1D, //CJK UNIFIED IDEOGRAPH - 0xBDF0: 0x8E22, //CJK UNIFIED IDEOGRAPH - 0xBDF1: 0x8E0F, //CJK UNIFIED IDEOGRAPH - 0xBDF2: 0x8E29, //CJK UNIFIED IDEOGRAPH - 0xBDF3: 0x8E1F, //CJK UNIFIED IDEOGRAPH - 0xBDF4: 0x8E21, //CJK UNIFIED IDEOGRAPH - 0xBDF5: 0x8E1E, //CJK UNIFIED IDEOGRAPH - 0xBDF6: 0x8EBA, //CJK UNIFIED IDEOGRAPH - 0xBDF7: 0x8F1D, //CJK UNIFIED IDEOGRAPH - 0xBDF8: 0x8F1B, //CJK UNIFIED IDEOGRAPH - 0xBDF9: 0x8F1F, //CJK UNIFIED IDEOGRAPH - 0xBDFA: 0x8F29, //CJK UNIFIED IDEOGRAPH - 0xBDFB: 0x8F26, //CJK UNIFIED IDEOGRAPH - 0xBDFC: 0x8F2A, //CJK UNIFIED IDEOGRAPH - 0xBDFD: 0x8F1C, //CJK UNIFIED IDEOGRAPH - 0xBDFE: 0x8F1E, //CJK UNIFIED IDEOGRAPH - 0xBE40: 0x8F25, //CJK UNIFIED IDEOGRAPH - 0xBE41: 0x9069, //CJK UNIFIED IDEOGRAPH - 0xBE42: 0x906E, //CJK UNIFIED IDEOGRAPH - 0xBE43: 0x9068, //CJK UNIFIED IDEOGRAPH - 0xBE44: 0x906D, //CJK UNIFIED IDEOGRAPH - 0xBE45: 0x9077, //CJK UNIFIED IDEOGRAPH - 0xBE46: 0x9130, //CJK UNIFIED IDEOGRAPH - 0xBE47: 0x912D, //CJK UNIFIED IDEOGRAPH - 0xBE48: 0x9127, //CJK UNIFIED IDEOGRAPH - 0xBE49: 0x9131, //CJK UNIFIED IDEOGRAPH - 0xBE4A: 0x9187, //CJK UNIFIED IDEOGRAPH - 0xBE4B: 0x9189, //CJK UNIFIED IDEOGRAPH - 0xBE4C: 0x918B, //CJK UNIFIED IDEOGRAPH - 0xBE4D: 0x9183, //CJK UNIFIED IDEOGRAPH - 0xBE4E: 0x92C5, //CJK UNIFIED IDEOGRAPH - 0xBE4F: 0x92BB, //CJK UNIFIED IDEOGRAPH - 0xBE50: 0x92B7, //CJK UNIFIED IDEOGRAPH - 0xBE51: 0x92EA, //CJK UNIFIED IDEOGRAPH - 0xBE52: 0x92AC, //CJK UNIFIED IDEOGRAPH - 0xBE53: 0x92E4, //CJK UNIFIED IDEOGRAPH - 0xBE54: 0x92C1, //CJK UNIFIED IDEOGRAPH - 0xBE55: 0x92B3, //CJK UNIFIED IDEOGRAPH - 0xBE56: 0x92BC, //CJK UNIFIED IDEOGRAPH - 0xBE57: 0x92D2, //CJK UNIFIED IDEOGRAPH - 0xBE58: 0x92C7, //CJK UNIFIED IDEOGRAPH - 0xBE59: 0x92F0, //CJK UNIFIED IDEOGRAPH - 0xBE5A: 0x92B2, //CJK UNIFIED IDEOGRAPH - 0xBE5B: 0x95AD, //CJK UNIFIED IDEOGRAPH - 0xBE5C: 0x95B1, //CJK UNIFIED IDEOGRAPH - 0xBE5D: 0x9704, //CJK UNIFIED IDEOGRAPH - 0xBE5E: 0x9706, //CJK UNIFIED IDEOGRAPH - 0xBE5F: 0x9707, //CJK UNIFIED IDEOGRAPH - 0xBE60: 0x9709, //CJK UNIFIED IDEOGRAPH - 0xBE61: 0x9760, //CJK UNIFIED IDEOGRAPH - 0xBE62: 0x978D, //CJK UNIFIED IDEOGRAPH - 0xBE63: 0x978B, //CJK UNIFIED IDEOGRAPH - 0xBE64: 0x978F, //CJK UNIFIED IDEOGRAPH - 0xBE65: 0x9821, //CJK UNIFIED IDEOGRAPH - 0xBE66: 0x982B, //CJK UNIFIED IDEOGRAPH - 0xBE67: 0x981C, //CJK UNIFIED IDEOGRAPH - 0xBE68: 0x98B3, //CJK UNIFIED IDEOGRAPH - 0xBE69: 0x990A, //CJK UNIFIED IDEOGRAPH - 0xBE6A: 0x9913, //CJK UNIFIED IDEOGRAPH - 0xBE6B: 0x9912, //CJK UNIFIED IDEOGRAPH - 0xBE6C: 0x9918, //CJK UNIFIED IDEOGRAPH - 0xBE6D: 0x99DD, //CJK UNIFIED IDEOGRAPH - 0xBE6E: 0x99D0, //CJK UNIFIED IDEOGRAPH - 0xBE6F: 0x99DF, //CJK UNIFIED IDEOGRAPH - 0xBE70: 0x99DB, //CJK UNIFIED IDEOGRAPH - 0xBE71: 0x99D1, //CJK UNIFIED IDEOGRAPH - 0xBE72: 0x99D5, //CJK UNIFIED IDEOGRAPH - 0xBE73: 0x99D2, //CJK UNIFIED IDEOGRAPH - 0xBE74: 0x99D9, //CJK UNIFIED IDEOGRAPH - 0xBE75: 0x9AB7, //CJK UNIFIED IDEOGRAPH - 0xBE76: 0x9AEE, //CJK UNIFIED IDEOGRAPH - 0xBE77: 0x9AEF, //CJK UNIFIED IDEOGRAPH - 0xBE78: 0x9B27, //CJK UNIFIED IDEOGRAPH - 0xBE79: 0x9B45, //CJK UNIFIED IDEOGRAPH - 0xBE7A: 0x9B44, //CJK UNIFIED IDEOGRAPH - 0xBE7B: 0x9B77, //CJK UNIFIED IDEOGRAPH - 0xBE7C: 0x9B6F, //CJK UNIFIED IDEOGRAPH - 0xBE7D: 0x9D06, //CJK UNIFIED IDEOGRAPH - 0xBE7E: 0x9D09, //CJK UNIFIED IDEOGRAPH - 0xBEA1: 0x9D03, //CJK UNIFIED IDEOGRAPH - 0xBEA2: 0x9EA9, //CJK UNIFIED IDEOGRAPH - 0xBEA3: 0x9EBE, //CJK UNIFIED IDEOGRAPH - 0xBEA4: 0x9ECE, //CJK UNIFIED IDEOGRAPH - 0xBEA5: 0x58A8, //CJK UNIFIED IDEOGRAPH - 0xBEA6: 0x9F52, //CJK UNIFIED IDEOGRAPH - 0xBEA7: 0x5112, //CJK UNIFIED IDEOGRAPH - 0xBEA8: 0x5118, //CJK UNIFIED IDEOGRAPH - 0xBEA9: 0x5114, //CJK UNIFIED IDEOGRAPH - 0xBEAA: 0x5110, //CJK UNIFIED IDEOGRAPH - 0xBEAB: 0x5115, //CJK UNIFIED IDEOGRAPH - 0xBEAC: 0x5180, //CJK UNIFIED IDEOGRAPH - 0xBEAD: 0x51AA, //CJK UNIFIED IDEOGRAPH - 0xBEAE: 0x51DD, //CJK UNIFIED IDEOGRAPH - 0xBEAF: 0x5291, //CJK UNIFIED IDEOGRAPH - 0xBEB0: 0x5293, //CJK UNIFIED IDEOGRAPH - 0xBEB1: 0x52F3, //CJK UNIFIED IDEOGRAPH - 0xBEB2: 0x5659, //CJK UNIFIED IDEOGRAPH - 0xBEB3: 0x566B, //CJK UNIFIED IDEOGRAPH - 0xBEB4: 0x5679, //CJK UNIFIED IDEOGRAPH - 0xBEB5: 0x5669, //CJK UNIFIED IDEOGRAPH - 0xBEB6: 0x5664, //CJK UNIFIED IDEOGRAPH - 0xBEB7: 0x5678, //CJK UNIFIED IDEOGRAPH - 0xBEB8: 0x566A, //CJK UNIFIED IDEOGRAPH - 0xBEB9: 0x5668, //CJK UNIFIED IDEOGRAPH - 0xBEBA: 0x5665, //CJK UNIFIED IDEOGRAPH - 0xBEBB: 0x5671, //CJK UNIFIED IDEOGRAPH - 0xBEBC: 0x566F, //CJK UNIFIED IDEOGRAPH - 0xBEBD: 0x566C, //CJK UNIFIED IDEOGRAPH - 0xBEBE: 0x5662, //CJK UNIFIED IDEOGRAPH - 0xBEBF: 0x5676, //CJK UNIFIED IDEOGRAPH - 0xBEC0: 0x58C1, //CJK UNIFIED IDEOGRAPH - 0xBEC1: 0x58BE, //CJK UNIFIED IDEOGRAPH - 0xBEC2: 0x58C7, //CJK UNIFIED IDEOGRAPH - 0xBEC3: 0x58C5, //CJK UNIFIED IDEOGRAPH - 0xBEC4: 0x596E, //CJK UNIFIED IDEOGRAPH - 0xBEC5: 0x5B1D, //CJK UNIFIED IDEOGRAPH - 0xBEC6: 0x5B34, //CJK UNIFIED IDEOGRAPH - 0xBEC7: 0x5B78, //CJK UNIFIED IDEOGRAPH - 0xBEC8: 0x5BF0, //CJK UNIFIED IDEOGRAPH - 0xBEC9: 0x5C0E, //CJK UNIFIED IDEOGRAPH - 0xBECA: 0x5F4A, //CJK UNIFIED IDEOGRAPH - 0xBECB: 0x61B2, //CJK UNIFIED IDEOGRAPH - 0xBECC: 0x6191, //CJK UNIFIED IDEOGRAPH - 0xBECD: 0x61A9, //CJK UNIFIED IDEOGRAPH - 0xBECE: 0x618A, //CJK UNIFIED IDEOGRAPH - 0xBECF: 0x61CD, //CJK UNIFIED IDEOGRAPH - 0xBED0: 0x61B6, //CJK UNIFIED IDEOGRAPH - 0xBED1: 0x61BE, //CJK UNIFIED IDEOGRAPH - 0xBED2: 0x61CA, //CJK UNIFIED IDEOGRAPH - 0xBED3: 0x61C8, //CJK UNIFIED IDEOGRAPH - 0xBED4: 0x6230, //CJK UNIFIED IDEOGRAPH - 0xBED5: 0x64C5, //CJK UNIFIED IDEOGRAPH - 0xBED6: 0x64C1, //CJK UNIFIED IDEOGRAPH - 0xBED7: 0x64CB, //CJK UNIFIED IDEOGRAPH - 0xBED8: 0x64BB, //CJK UNIFIED IDEOGRAPH - 0xBED9: 0x64BC, //CJK UNIFIED IDEOGRAPH - 0xBEDA: 0x64DA, //CJK UNIFIED IDEOGRAPH - 0xBEDB: 0x64C4, //CJK UNIFIED IDEOGRAPH - 0xBEDC: 0x64C7, //CJK UNIFIED IDEOGRAPH - 0xBEDD: 0x64C2, //CJK UNIFIED IDEOGRAPH - 0xBEDE: 0x64CD, //CJK UNIFIED IDEOGRAPH - 0xBEDF: 0x64BF, //CJK UNIFIED IDEOGRAPH - 0xBEE0: 0x64D2, //CJK UNIFIED IDEOGRAPH - 0xBEE1: 0x64D4, //CJK UNIFIED IDEOGRAPH - 0xBEE2: 0x64BE, //CJK UNIFIED IDEOGRAPH - 0xBEE3: 0x6574, //CJK UNIFIED IDEOGRAPH - 0xBEE4: 0x66C6, //CJK UNIFIED IDEOGRAPH - 0xBEE5: 0x66C9, //CJK UNIFIED IDEOGRAPH - 0xBEE6: 0x66B9, //CJK UNIFIED IDEOGRAPH - 0xBEE7: 0x66C4, //CJK UNIFIED IDEOGRAPH - 0xBEE8: 0x66C7, //CJK UNIFIED IDEOGRAPH - 0xBEE9: 0x66B8, //CJK UNIFIED IDEOGRAPH - 0xBEEA: 0x6A3D, //CJK UNIFIED IDEOGRAPH - 0xBEEB: 0x6A38, //CJK UNIFIED IDEOGRAPH - 0xBEEC: 0x6A3A, //CJK UNIFIED IDEOGRAPH - 0xBEED: 0x6A59, //CJK UNIFIED IDEOGRAPH - 0xBEEE: 0x6A6B, //CJK UNIFIED IDEOGRAPH - 0xBEEF: 0x6A58, //CJK UNIFIED IDEOGRAPH - 0xBEF0: 0x6A39, //CJK UNIFIED IDEOGRAPH - 0xBEF1: 0x6A44, //CJK UNIFIED IDEOGRAPH - 0xBEF2: 0x6A62, //CJK UNIFIED IDEOGRAPH - 0xBEF3: 0x6A61, //CJK UNIFIED IDEOGRAPH - 0xBEF4: 0x6A4B, //CJK UNIFIED IDEOGRAPH - 0xBEF5: 0x6A47, //CJK UNIFIED IDEOGRAPH - 0xBEF6: 0x6A35, //CJK UNIFIED IDEOGRAPH - 0xBEF7: 0x6A5F, //CJK UNIFIED IDEOGRAPH - 0xBEF8: 0x6A48, //CJK UNIFIED IDEOGRAPH - 0xBEF9: 0x6B59, //CJK UNIFIED IDEOGRAPH - 0xBEFA: 0x6B77, //CJK UNIFIED IDEOGRAPH - 0xBEFB: 0x6C05, //CJK UNIFIED IDEOGRAPH - 0xBEFC: 0x6FC2, //CJK UNIFIED IDEOGRAPH - 0xBEFD: 0x6FB1, //CJK UNIFIED IDEOGRAPH - 0xBEFE: 0x6FA1, //CJK UNIFIED IDEOGRAPH - 0xBF40: 0x6FC3, //CJK UNIFIED IDEOGRAPH - 0xBF41: 0x6FA4, //CJK UNIFIED IDEOGRAPH - 0xBF42: 0x6FC1, //CJK UNIFIED IDEOGRAPH - 0xBF43: 0x6FA7, //CJK UNIFIED IDEOGRAPH - 0xBF44: 0x6FB3, //CJK UNIFIED IDEOGRAPH - 0xBF45: 0x6FC0, //CJK UNIFIED IDEOGRAPH - 0xBF46: 0x6FB9, //CJK UNIFIED IDEOGRAPH - 0xBF47: 0x6FB6, //CJK UNIFIED IDEOGRAPH - 0xBF48: 0x6FA6, //CJK UNIFIED IDEOGRAPH - 0xBF49: 0x6FA0, //CJK UNIFIED IDEOGRAPH - 0xBF4A: 0x6FB4, //CJK UNIFIED IDEOGRAPH - 0xBF4B: 0x71BE, //CJK UNIFIED IDEOGRAPH - 0xBF4C: 0x71C9, //CJK UNIFIED IDEOGRAPH - 0xBF4D: 0x71D0, //CJK UNIFIED IDEOGRAPH - 0xBF4E: 0x71D2, //CJK UNIFIED IDEOGRAPH - 0xBF4F: 0x71C8, //CJK UNIFIED IDEOGRAPH - 0xBF50: 0x71D5, //CJK UNIFIED IDEOGRAPH - 0xBF51: 0x71B9, //CJK UNIFIED IDEOGRAPH - 0xBF52: 0x71CE, //CJK UNIFIED IDEOGRAPH - 0xBF53: 0x71D9, //CJK UNIFIED IDEOGRAPH - 0xBF54: 0x71DC, //CJK UNIFIED IDEOGRAPH - 0xBF55: 0x71C3, //CJK UNIFIED IDEOGRAPH - 0xBF56: 0x71C4, //CJK UNIFIED IDEOGRAPH - 0xBF57: 0x7368, //CJK UNIFIED IDEOGRAPH - 0xBF58: 0x749C, //CJK UNIFIED IDEOGRAPH - 0xBF59: 0x74A3, //CJK UNIFIED IDEOGRAPH - 0xBF5A: 0x7498, //CJK UNIFIED IDEOGRAPH - 0xBF5B: 0x749F, //CJK UNIFIED IDEOGRAPH - 0xBF5C: 0x749E, //CJK UNIFIED IDEOGRAPH - 0xBF5D: 0x74E2, //CJK UNIFIED IDEOGRAPH - 0xBF5E: 0x750C, //CJK UNIFIED IDEOGRAPH - 0xBF5F: 0x750D, //CJK UNIFIED IDEOGRAPH - 0xBF60: 0x7634, //CJK UNIFIED IDEOGRAPH - 0xBF61: 0x7638, //CJK UNIFIED IDEOGRAPH - 0xBF62: 0x763A, //CJK UNIFIED IDEOGRAPH - 0xBF63: 0x76E7, //CJK UNIFIED IDEOGRAPH - 0xBF64: 0x76E5, //CJK UNIFIED IDEOGRAPH - 0xBF65: 0x77A0, //CJK UNIFIED IDEOGRAPH - 0xBF66: 0x779E, //CJK UNIFIED IDEOGRAPH - 0xBF67: 0x779F, //CJK UNIFIED IDEOGRAPH - 0xBF68: 0x77A5, //CJK UNIFIED IDEOGRAPH - 0xBF69: 0x78E8, //CJK UNIFIED IDEOGRAPH - 0xBF6A: 0x78DA, //CJK UNIFIED IDEOGRAPH - 0xBF6B: 0x78EC, //CJK UNIFIED IDEOGRAPH - 0xBF6C: 0x78E7, //CJK UNIFIED IDEOGRAPH - 0xBF6D: 0x79A6, //CJK UNIFIED IDEOGRAPH - 0xBF6E: 0x7A4D, //CJK UNIFIED IDEOGRAPH - 0xBF6F: 0x7A4E, //CJK UNIFIED IDEOGRAPH - 0xBF70: 0x7A46, //CJK UNIFIED IDEOGRAPH - 0xBF71: 0x7A4C, //CJK UNIFIED IDEOGRAPH - 0xBF72: 0x7A4B, //CJK UNIFIED IDEOGRAPH - 0xBF73: 0x7ABA, //CJK UNIFIED IDEOGRAPH - 0xBF74: 0x7BD9, //CJK UNIFIED IDEOGRAPH - 0xBF75: 0x7C11, //CJK UNIFIED IDEOGRAPH - 0xBF76: 0x7BC9, //CJK UNIFIED IDEOGRAPH - 0xBF77: 0x7BE4, //CJK UNIFIED IDEOGRAPH - 0xBF78: 0x7BDB, //CJK UNIFIED IDEOGRAPH - 0xBF79: 0x7BE1, //CJK UNIFIED IDEOGRAPH - 0xBF7A: 0x7BE9, //CJK UNIFIED IDEOGRAPH - 0xBF7B: 0x7BE6, //CJK UNIFIED IDEOGRAPH - 0xBF7C: 0x7CD5, //CJK UNIFIED IDEOGRAPH - 0xBF7D: 0x7CD6, //CJK UNIFIED IDEOGRAPH - 0xBF7E: 0x7E0A, //CJK UNIFIED IDEOGRAPH - 0xBFA1: 0x7E11, //CJK UNIFIED IDEOGRAPH - 0xBFA2: 0x7E08, //CJK UNIFIED IDEOGRAPH - 0xBFA3: 0x7E1B, //CJK UNIFIED IDEOGRAPH - 0xBFA4: 0x7E23, //CJK UNIFIED IDEOGRAPH - 0xBFA5: 0x7E1E, //CJK UNIFIED IDEOGRAPH - 0xBFA6: 0x7E1D, //CJK UNIFIED IDEOGRAPH - 0xBFA7: 0x7E09, //CJK UNIFIED IDEOGRAPH - 0xBFA8: 0x7E10, //CJK UNIFIED IDEOGRAPH - 0xBFA9: 0x7F79, //CJK UNIFIED IDEOGRAPH - 0xBFAA: 0x7FB2, //CJK UNIFIED IDEOGRAPH - 0xBFAB: 0x7FF0, //CJK UNIFIED IDEOGRAPH - 0xBFAC: 0x7FF1, //CJK UNIFIED IDEOGRAPH - 0xBFAD: 0x7FEE, //CJK UNIFIED IDEOGRAPH - 0xBFAE: 0x8028, //CJK UNIFIED IDEOGRAPH - 0xBFAF: 0x81B3, //CJK UNIFIED IDEOGRAPH - 0xBFB0: 0x81A9, //CJK UNIFIED IDEOGRAPH - 0xBFB1: 0x81A8, //CJK UNIFIED IDEOGRAPH - 0xBFB2: 0x81FB, //CJK UNIFIED IDEOGRAPH - 0xBFB3: 0x8208, //CJK UNIFIED IDEOGRAPH - 0xBFB4: 0x8258, //CJK UNIFIED IDEOGRAPH - 0xBFB5: 0x8259, //CJK UNIFIED IDEOGRAPH - 0xBFB6: 0x854A, //CJK UNIFIED IDEOGRAPH - 0xBFB7: 0x8559, //CJK UNIFIED IDEOGRAPH - 0xBFB8: 0x8548, //CJK UNIFIED IDEOGRAPH - 0xBFB9: 0x8568, //CJK UNIFIED IDEOGRAPH - 0xBFBA: 0x8569, //CJK UNIFIED IDEOGRAPH - 0xBFBB: 0x8543, //CJK UNIFIED IDEOGRAPH - 0xBFBC: 0x8549, //CJK UNIFIED IDEOGRAPH - 0xBFBD: 0x856D, //CJK UNIFIED IDEOGRAPH - 0xBFBE: 0x856A, //CJK UNIFIED IDEOGRAPH - 0xBFBF: 0x855E, //CJK UNIFIED IDEOGRAPH - 0xBFC0: 0x8783, //CJK UNIFIED IDEOGRAPH - 0xBFC1: 0x879F, //CJK UNIFIED IDEOGRAPH - 0xBFC2: 0x879E, //CJK UNIFIED IDEOGRAPH - 0xBFC3: 0x87A2, //CJK UNIFIED IDEOGRAPH - 0xBFC4: 0x878D, //CJK UNIFIED IDEOGRAPH - 0xBFC5: 0x8861, //CJK UNIFIED IDEOGRAPH - 0xBFC6: 0x892A, //CJK UNIFIED IDEOGRAPH - 0xBFC7: 0x8932, //CJK UNIFIED IDEOGRAPH - 0xBFC8: 0x8925, //CJK UNIFIED IDEOGRAPH - 0xBFC9: 0x892B, //CJK UNIFIED IDEOGRAPH - 0xBFCA: 0x8921, //CJK UNIFIED IDEOGRAPH - 0xBFCB: 0x89AA, //CJK UNIFIED IDEOGRAPH - 0xBFCC: 0x89A6, //CJK UNIFIED IDEOGRAPH - 0xBFCD: 0x8AE6, //CJK UNIFIED IDEOGRAPH - 0xBFCE: 0x8AFA, //CJK UNIFIED IDEOGRAPH - 0xBFCF: 0x8AEB, //CJK UNIFIED IDEOGRAPH - 0xBFD0: 0x8AF1, //CJK UNIFIED IDEOGRAPH - 0xBFD1: 0x8B00, //CJK UNIFIED IDEOGRAPH - 0xBFD2: 0x8ADC, //CJK UNIFIED IDEOGRAPH - 0xBFD3: 0x8AE7, //CJK UNIFIED IDEOGRAPH - 0xBFD4: 0x8AEE, //CJK UNIFIED IDEOGRAPH - 0xBFD5: 0x8AFE, //CJK UNIFIED IDEOGRAPH - 0xBFD6: 0x8B01, //CJK UNIFIED IDEOGRAPH - 0xBFD7: 0x8B02, //CJK UNIFIED IDEOGRAPH - 0xBFD8: 0x8AF7, //CJK UNIFIED IDEOGRAPH - 0xBFD9: 0x8AED, //CJK UNIFIED IDEOGRAPH - 0xBFDA: 0x8AF3, //CJK UNIFIED IDEOGRAPH - 0xBFDB: 0x8AF6, //CJK UNIFIED IDEOGRAPH - 0xBFDC: 0x8AFC, //CJK UNIFIED IDEOGRAPH - 0xBFDD: 0x8C6B, //CJK UNIFIED IDEOGRAPH - 0xBFDE: 0x8C6D, //CJK UNIFIED IDEOGRAPH - 0xBFDF: 0x8C93, //CJK UNIFIED IDEOGRAPH - 0xBFE0: 0x8CF4, //CJK UNIFIED IDEOGRAPH - 0xBFE1: 0x8E44, //CJK UNIFIED IDEOGRAPH - 0xBFE2: 0x8E31, //CJK UNIFIED IDEOGRAPH - 0xBFE3: 0x8E34, //CJK UNIFIED IDEOGRAPH - 0xBFE4: 0x8E42, //CJK UNIFIED IDEOGRAPH - 0xBFE5: 0x8E39, //CJK UNIFIED IDEOGRAPH - 0xBFE6: 0x8E35, //CJK UNIFIED IDEOGRAPH - 0xBFE7: 0x8F3B, //CJK UNIFIED IDEOGRAPH - 0xBFE8: 0x8F2F, //CJK UNIFIED IDEOGRAPH - 0xBFE9: 0x8F38, //CJK UNIFIED IDEOGRAPH - 0xBFEA: 0x8F33, //CJK UNIFIED IDEOGRAPH - 0xBFEB: 0x8FA8, //CJK UNIFIED IDEOGRAPH - 0xBFEC: 0x8FA6, //CJK UNIFIED IDEOGRAPH - 0xBFED: 0x9075, //CJK UNIFIED IDEOGRAPH - 0xBFEE: 0x9074, //CJK UNIFIED IDEOGRAPH - 0xBFEF: 0x9078, //CJK UNIFIED IDEOGRAPH - 0xBFF0: 0x9072, //CJK UNIFIED IDEOGRAPH - 0xBFF1: 0x907C, //CJK UNIFIED IDEOGRAPH - 0xBFF2: 0x907A, //CJK UNIFIED IDEOGRAPH - 0xBFF3: 0x9134, //CJK UNIFIED IDEOGRAPH - 0xBFF4: 0x9192, //CJK UNIFIED IDEOGRAPH - 0xBFF5: 0x9320, //CJK UNIFIED IDEOGRAPH - 0xBFF6: 0x9336, //CJK UNIFIED IDEOGRAPH - 0xBFF7: 0x92F8, //CJK UNIFIED IDEOGRAPH - 0xBFF8: 0x9333, //CJK UNIFIED IDEOGRAPH - 0xBFF9: 0x932F, //CJK UNIFIED IDEOGRAPH - 0xBFFA: 0x9322, //CJK UNIFIED IDEOGRAPH - 0xBFFB: 0x92FC, //CJK UNIFIED IDEOGRAPH - 0xBFFC: 0x932B, //CJK UNIFIED IDEOGRAPH - 0xBFFD: 0x9304, //CJK UNIFIED IDEOGRAPH - 0xBFFE: 0x931A, //CJK UNIFIED IDEOGRAPH - 0xC040: 0x9310, //CJK UNIFIED IDEOGRAPH - 0xC041: 0x9326, //CJK UNIFIED IDEOGRAPH - 0xC042: 0x9321, //CJK UNIFIED IDEOGRAPH - 0xC043: 0x9315, //CJK UNIFIED IDEOGRAPH - 0xC044: 0x932E, //CJK UNIFIED IDEOGRAPH - 0xC045: 0x9319, //CJK UNIFIED IDEOGRAPH - 0xC046: 0x95BB, //CJK UNIFIED IDEOGRAPH - 0xC047: 0x96A7, //CJK UNIFIED IDEOGRAPH - 0xC048: 0x96A8, //CJK UNIFIED IDEOGRAPH - 0xC049: 0x96AA, //CJK UNIFIED IDEOGRAPH - 0xC04A: 0x96D5, //CJK UNIFIED IDEOGRAPH - 0xC04B: 0x970E, //CJK UNIFIED IDEOGRAPH - 0xC04C: 0x9711, //CJK UNIFIED IDEOGRAPH - 0xC04D: 0x9716, //CJK UNIFIED IDEOGRAPH - 0xC04E: 0x970D, //CJK UNIFIED IDEOGRAPH - 0xC04F: 0x9713, //CJK UNIFIED IDEOGRAPH - 0xC050: 0x970F, //CJK UNIFIED IDEOGRAPH - 0xC051: 0x975B, //CJK UNIFIED IDEOGRAPH - 0xC052: 0x975C, //CJK UNIFIED IDEOGRAPH - 0xC053: 0x9766, //CJK UNIFIED IDEOGRAPH - 0xC054: 0x9798, //CJK UNIFIED IDEOGRAPH - 0xC055: 0x9830, //CJK UNIFIED IDEOGRAPH - 0xC056: 0x9838, //CJK UNIFIED IDEOGRAPH - 0xC057: 0x983B, //CJK UNIFIED IDEOGRAPH - 0xC058: 0x9837, //CJK UNIFIED IDEOGRAPH - 0xC059: 0x982D, //CJK UNIFIED IDEOGRAPH - 0xC05A: 0x9839, //CJK UNIFIED IDEOGRAPH - 0xC05B: 0x9824, //CJK UNIFIED IDEOGRAPH - 0xC05C: 0x9910, //CJK UNIFIED IDEOGRAPH - 0xC05D: 0x9928, //CJK UNIFIED IDEOGRAPH - 0xC05E: 0x991E, //CJK UNIFIED IDEOGRAPH - 0xC05F: 0x991B, //CJK UNIFIED IDEOGRAPH - 0xC060: 0x9921, //CJK UNIFIED IDEOGRAPH - 0xC061: 0x991A, //CJK UNIFIED IDEOGRAPH - 0xC062: 0x99ED, //CJK UNIFIED IDEOGRAPH - 0xC063: 0x99E2, //CJK UNIFIED IDEOGRAPH - 0xC064: 0x99F1, //CJK UNIFIED IDEOGRAPH - 0xC065: 0x9AB8, //CJK UNIFIED IDEOGRAPH - 0xC066: 0x9ABC, //CJK UNIFIED IDEOGRAPH - 0xC067: 0x9AFB, //CJK UNIFIED IDEOGRAPH - 0xC068: 0x9AED, //CJK UNIFIED IDEOGRAPH - 0xC069: 0x9B28, //CJK UNIFIED IDEOGRAPH - 0xC06A: 0x9B91, //CJK UNIFIED IDEOGRAPH - 0xC06B: 0x9D15, //CJK UNIFIED IDEOGRAPH - 0xC06C: 0x9D23, //CJK UNIFIED IDEOGRAPH - 0xC06D: 0x9D26, //CJK UNIFIED IDEOGRAPH - 0xC06E: 0x9D28, //CJK UNIFIED IDEOGRAPH - 0xC06F: 0x9D12, //CJK UNIFIED IDEOGRAPH - 0xC070: 0x9D1B, //CJK UNIFIED IDEOGRAPH - 0xC071: 0x9ED8, //CJK UNIFIED IDEOGRAPH - 0xC072: 0x9ED4, //CJK UNIFIED IDEOGRAPH - 0xC073: 0x9F8D, //CJK UNIFIED IDEOGRAPH - 0xC074: 0x9F9C, //CJK UNIFIED IDEOGRAPH - 0xC075: 0x512A, //CJK UNIFIED IDEOGRAPH - 0xC076: 0x511F, //CJK UNIFIED IDEOGRAPH - 0xC077: 0x5121, //CJK UNIFIED IDEOGRAPH - 0xC078: 0x5132, //CJK UNIFIED IDEOGRAPH - 0xC079: 0x52F5, //CJK UNIFIED IDEOGRAPH - 0xC07A: 0x568E, //CJK UNIFIED IDEOGRAPH - 0xC07B: 0x5680, //CJK UNIFIED IDEOGRAPH - 0xC07C: 0x5690, //CJK UNIFIED IDEOGRAPH - 0xC07D: 0x5685, //CJK UNIFIED IDEOGRAPH - 0xC07E: 0x5687, //CJK UNIFIED IDEOGRAPH - 0xC0A1: 0x568F, //CJK UNIFIED IDEOGRAPH - 0xC0A2: 0x58D5, //CJK UNIFIED IDEOGRAPH - 0xC0A3: 0x58D3, //CJK UNIFIED IDEOGRAPH - 0xC0A4: 0x58D1, //CJK UNIFIED IDEOGRAPH - 0xC0A5: 0x58CE, //CJK UNIFIED IDEOGRAPH - 0xC0A6: 0x5B30, //CJK UNIFIED IDEOGRAPH - 0xC0A7: 0x5B2A, //CJK UNIFIED IDEOGRAPH - 0xC0A8: 0x5B24, //CJK UNIFIED IDEOGRAPH - 0xC0A9: 0x5B7A, //CJK UNIFIED IDEOGRAPH - 0xC0AA: 0x5C37, //CJK UNIFIED IDEOGRAPH - 0xC0AB: 0x5C68, //CJK UNIFIED IDEOGRAPH - 0xC0AC: 0x5DBC, //CJK UNIFIED IDEOGRAPH - 0xC0AD: 0x5DBA, //CJK UNIFIED IDEOGRAPH - 0xC0AE: 0x5DBD, //CJK UNIFIED IDEOGRAPH - 0xC0AF: 0x5DB8, //CJK UNIFIED IDEOGRAPH - 0xC0B0: 0x5E6B, //CJK UNIFIED IDEOGRAPH - 0xC0B1: 0x5F4C, //CJK UNIFIED IDEOGRAPH - 0xC0B2: 0x5FBD, //CJK UNIFIED IDEOGRAPH - 0xC0B3: 0x61C9, //CJK UNIFIED IDEOGRAPH - 0xC0B4: 0x61C2, //CJK UNIFIED IDEOGRAPH - 0xC0B5: 0x61C7, //CJK UNIFIED IDEOGRAPH - 0xC0B6: 0x61E6, //CJK UNIFIED IDEOGRAPH - 0xC0B7: 0x61CB, //CJK UNIFIED IDEOGRAPH - 0xC0B8: 0x6232, //CJK UNIFIED IDEOGRAPH - 0xC0B9: 0x6234, //CJK UNIFIED IDEOGRAPH - 0xC0BA: 0x64CE, //CJK UNIFIED IDEOGRAPH - 0xC0BB: 0x64CA, //CJK UNIFIED IDEOGRAPH - 0xC0BC: 0x64D8, //CJK UNIFIED IDEOGRAPH - 0xC0BD: 0x64E0, //CJK UNIFIED IDEOGRAPH - 0xC0BE: 0x64F0, //CJK UNIFIED IDEOGRAPH - 0xC0BF: 0x64E6, //CJK UNIFIED IDEOGRAPH - 0xC0C0: 0x64EC, //CJK UNIFIED IDEOGRAPH - 0xC0C1: 0x64F1, //CJK UNIFIED IDEOGRAPH - 0xC0C2: 0x64E2, //CJK UNIFIED IDEOGRAPH - 0xC0C3: 0x64ED, //CJK UNIFIED IDEOGRAPH - 0xC0C4: 0x6582, //CJK UNIFIED IDEOGRAPH - 0xC0C5: 0x6583, //CJK UNIFIED IDEOGRAPH - 0xC0C6: 0x66D9, //CJK UNIFIED IDEOGRAPH - 0xC0C7: 0x66D6, //CJK UNIFIED IDEOGRAPH - 0xC0C8: 0x6A80, //CJK UNIFIED IDEOGRAPH - 0xC0C9: 0x6A94, //CJK UNIFIED IDEOGRAPH - 0xC0CA: 0x6A84, //CJK UNIFIED IDEOGRAPH - 0xC0CB: 0x6AA2, //CJK UNIFIED IDEOGRAPH - 0xC0CC: 0x6A9C, //CJK UNIFIED IDEOGRAPH - 0xC0CD: 0x6ADB, //CJK UNIFIED IDEOGRAPH - 0xC0CE: 0x6AA3, //CJK UNIFIED IDEOGRAPH - 0xC0CF: 0x6A7E, //CJK UNIFIED IDEOGRAPH - 0xC0D0: 0x6A97, //CJK UNIFIED IDEOGRAPH - 0xC0D1: 0x6A90, //CJK UNIFIED IDEOGRAPH - 0xC0D2: 0x6AA0, //CJK UNIFIED IDEOGRAPH - 0xC0D3: 0x6B5C, //CJK UNIFIED IDEOGRAPH - 0xC0D4: 0x6BAE, //CJK UNIFIED IDEOGRAPH - 0xC0D5: 0x6BDA, //CJK UNIFIED IDEOGRAPH - 0xC0D6: 0x6C08, //CJK UNIFIED IDEOGRAPH - 0xC0D7: 0x6FD8, //CJK UNIFIED IDEOGRAPH - 0xC0D8: 0x6FF1, //CJK UNIFIED IDEOGRAPH - 0xC0D9: 0x6FDF, //CJK UNIFIED IDEOGRAPH - 0xC0DA: 0x6FE0, //CJK UNIFIED IDEOGRAPH - 0xC0DB: 0x6FDB, //CJK UNIFIED IDEOGRAPH - 0xC0DC: 0x6FE4, //CJK UNIFIED IDEOGRAPH - 0xC0DD: 0x6FEB, //CJK UNIFIED IDEOGRAPH - 0xC0DE: 0x6FEF, //CJK UNIFIED IDEOGRAPH - 0xC0DF: 0x6F80, //CJK UNIFIED IDEOGRAPH - 0xC0E0: 0x6FEC, //CJK UNIFIED IDEOGRAPH - 0xC0E1: 0x6FE1, //CJK UNIFIED IDEOGRAPH - 0xC0E2: 0x6FE9, //CJK UNIFIED IDEOGRAPH - 0xC0E3: 0x6FD5, //CJK UNIFIED IDEOGRAPH - 0xC0E4: 0x6FEE, //CJK UNIFIED IDEOGRAPH - 0xC0E5: 0x6FF0, //CJK UNIFIED IDEOGRAPH - 0xC0E6: 0x71E7, //CJK UNIFIED IDEOGRAPH - 0xC0E7: 0x71DF, //CJK UNIFIED IDEOGRAPH - 0xC0E8: 0x71EE, //CJK UNIFIED IDEOGRAPH - 0xC0E9: 0x71E6, //CJK UNIFIED IDEOGRAPH - 0xC0EA: 0x71E5, //CJK UNIFIED IDEOGRAPH - 0xC0EB: 0x71ED, //CJK UNIFIED IDEOGRAPH - 0xC0EC: 0x71EC, //CJK UNIFIED IDEOGRAPH - 0xC0ED: 0x71F4, //CJK UNIFIED IDEOGRAPH - 0xC0EE: 0x71E0, //CJK UNIFIED IDEOGRAPH - 0xC0EF: 0x7235, //CJK UNIFIED IDEOGRAPH - 0xC0F0: 0x7246, //CJK UNIFIED IDEOGRAPH - 0xC0F1: 0x7370, //CJK UNIFIED IDEOGRAPH - 0xC0F2: 0x7372, //CJK UNIFIED IDEOGRAPH - 0xC0F3: 0x74A9, //CJK UNIFIED IDEOGRAPH - 0xC0F4: 0x74B0, //CJK UNIFIED IDEOGRAPH - 0xC0F5: 0x74A6, //CJK UNIFIED IDEOGRAPH - 0xC0F6: 0x74A8, //CJK UNIFIED IDEOGRAPH - 0xC0F7: 0x7646, //CJK UNIFIED IDEOGRAPH - 0xC0F8: 0x7642, //CJK UNIFIED IDEOGRAPH - 0xC0F9: 0x764C, //CJK UNIFIED IDEOGRAPH - 0xC0FA: 0x76EA, //CJK UNIFIED IDEOGRAPH - 0xC0FB: 0x77B3, //CJK UNIFIED IDEOGRAPH - 0xC0FC: 0x77AA, //CJK UNIFIED IDEOGRAPH - 0xC0FD: 0x77B0, //CJK UNIFIED IDEOGRAPH - 0xC0FE: 0x77AC, //CJK UNIFIED IDEOGRAPH - 0xC140: 0x77A7, //CJK UNIFIED IDEOGRAPH - 0xC141: 0x77AD, //CJK UNIFIED IDEOGRAPH - 0xC142: 0x77EF, //CJK UNIFIED IDEOGRAPH - 0xC143: 0x78F7, //CJK UNIFIED IDEOGRAPH - 0xC144: 0x78FA, //CJK UNIFIED IDEOGRAPH - 0xC145: 0x78F4, //CJK UNIFIED IDEOGRAPH - 0xC146: 0x78EF, //CJK UNIFIED IDEOGRAPH - 0xC147: 0x7901, //CJK UNIFIED IDEOGRAPH - 0xC148: 0x79A7, //CJK UNIFIED IDEOGRAPH - 0xC149: 0x79AA, //CJK UNIFIED IDEOGRAPH - 0xC14A: 0x7A57, //CJK UNIFIED IDEOGRAPH - 0xC14B: 0x7ABF, //CJK UNIFIED IDEOGRAPH - 0xC14C: 0x7C07, //CJK UNIFIED IDEOGRAPH - 0xC14D: 0x7C0D, //CJK UNIFIED IDEOGRAPH - 0xC14E: 0x7BFE, //CJK UNIFIED IDEOGRAPH - 0xC14F: 0x7BF7, //CJK UNIFIED IDEOGRAPH - 0xC150: 0x7C0C, //CJK UNIFIED IDEOGRAPH - 0xC151: 0x7BE0, //CJK UNIFIED IDEOGRAPH - 0xC152: 0x7CE0, //CJK UNIFIED IDEOGRAPH - 0xC153: 0x7CDC, //CJK UNIFIED IDEOGRAPH - 0xC154: 0x7CDE, //CJK UNIFIED IDEOGRAPH - 0xC155: 0x7CE2, //CJK UNIFIED IDEOGRAPH - 0xC156: 0x7CDF, //CJK UNIFIED IDEOGRAPH - 0xC157: 0x7CD9, //CJK UNIFIED IDEOGRAPH - 0xC158: 0x7CDD, //CJK UNIFIED IDEOGRAPH - 0xC159: 0x7E2E, //CJK UNIFIED IDEOGRAPH - 0xC15A: 0x7E3E, //CJK UNIFIED IDEOGRAPH - 0xC15B: 0x7E46, //CJK UNIFIED IDEOGRAPH - 0xC15C: 0x7E37, //CJK UNIFIED IDEOGRAPH - 0xC15D: 0x7E32, //CJK UNIFIED IDEOGRAPH - 0xC15E: 0x7E43, //CJK UNIFIED IDEOGRAPH - 0xC15F: 0x7E2B, //CJK UNIFIED IDEOGRAPH - 0xC160: 0x7E3D, //CJK UNIFIED IDEOGRAPH - 0xC161: 0x7E31, //CJK UNIFIED IDEOGRAPH - 0xC162: 0x7E45, //CJK UNIFIED IDEOGRAPH - 0xC163: 0x7E41, //CJK UNIFIED IDEOGRAPH - 0xC164: 0x7E34, //CJK UNIFIED IDEOGRAPH - 0xC165: 0x7E39, //CJK UNIFIED IDEOGRAPH - 0xC166: 0x7E48, //CJK UNIFIED IDEOGRAPH - 0xC167: 0x7E35, //CJK UNIFIED IDEOGRAPH - 0xC168: 0x7E3F, //CJK UNIFIED IDEOGRAPH - 0xC169: 0x7E2F, //CJK UNIFIED IDEOGRAPH - 0xC16A: 0x7F44, //CJK UNIFIED IDEOGRAPH - 0xC16B: 0x7FF3, //CJK UNIFIED IDEOGRAPH - 0xC16C: 0x7FFC, //CJK UNIFIED IDEOGRAPH - 0xC16D: 0x8071, //CJK UNIFIED IDEOGRAPH - 0xC16E: 0x8072, //CJK UNIFIED IDEOGRAPH - 0xC16F: 0x8070, //CJK UNIFIED IDEOGRAPH - 0xC170: 0x806F, //CJK UNIFIED IDEOGRAPH - 0xC171: 0x8073, //CJK UNIFIED IDEOGRAPH - 0xC172: 0x81C6, //CJK UNIFIED IDEOGRAPH - 0xC173: 0x81C3, //CJK UNIFIED IDEOGRAPH - 0xC174: 0x81BA, //CJK UNIFIED IDEOGRAPH - 0xC175: 0x81C2, //CJK UNIFIED IDEOGRAPH - 0xC176: 0x81C0, //CJK UNIFIED IDEOGRAPH - 0xC177: 0x81BF, //CJK UNIFIED IDEOGRAPH - 0xC178: 0x81BD, //CJK UNIFIED IDEOGRAPH - 0xC179: 0x81C9, //CJK UNIFIED IDEOGRAPH - 0xC17A: 0x81BE, //CJK UNIFIED IDEOGRAPH - 0xC17B: 0x81E8, //CJK UNIFIED IDEOGRAPH - 0xC17C: 0x8209, //CJK UNIFIED IDEOGRAPH - 0xC17D: 0x8271, //CJK UNIFIED IDEOGRAPH - 0xC17E: 0x85AA, //CJK UNIFIED IDEOGRAPH - 0xC1A1: 0x8584, //CJK UNIFIED IDEOGRAPH - 0xC1A2: 0x857E, //CJK UNIFIED IDEOGRAPH - 0xC1A3: 0x859C, //CJK UNIFIED IDEOGRAPH - 0xC1A4: 0x8591, //CJK UNIFIED IDEOGRAPH - 0xC1A5: 0x8594, //CJK UNIFIED IDEOGRAPH - 0xC1A6: 0x85AF, //CJK UNIFIED IDEOGRAPH - 0xC1A7: 0x859B, //CJK UNIFIED IDEOGRAPH - 0xC1A8: 0x8587, //CJK UNIFIED IDEOGRAPH - 0xC1A9: 0x85A8, //CJK UNIFIED IDEOGRAPH - 0xC1AA: 0x858A, //CJK UNIFIED IDEOGRAPH - 0xC1AB: 0x8667, //CJK UNIFIED IDEOGRAPH - 0xC1AC: 0x87C0, //CJK UNIFIED IDEOGRAPH - 0xC1AD: 0x87D1, //CJK UNIFIED IDEOGRAPH - 0xC1AE: 0x87B3, //CJK UNIFIED IDEOGRAPH - 0xC1AF: 0x87D2, //CJK UNIFIED IDEOGRAPH - 0xC1B0: 0x87C6, //CJK UNIFIED IDEOGRAPH - 0xC1B1: 0x87AB, //CJK UNIFIED IDEOGRAPH - 0xC1B2: 0x87BB, //CJK UNIFIED IDEOGRAPH - 0xC1B3: 0x87BA, //CJK UNIFIED IDEOGRAPH - 0xC1B4: 0x87C8, //CJK UNIFIED IDEOGRAPH - 0xC1B5: 0x87CB, //CJK UNIFIED IDEOGRAPH - 0xC1B6: 0x893B, //CJK UNIFIED IDEOGRAPH - 0xC1B7: 0x8936, //CJK UNIFIED IDEOGRAPH - 0xC1B8: 0x8944, //CJK UNIFIED IDEOGRAPH - 0xC1B9: 0x8938, //CJK UNIFIED IDEOGRAPH - 0xC1BA: 0x893D, //CJK UNIFIED IDEOGRAPH - 0xC1BB: 0x89AC, //CJK UNIFIED IDEOGRAPH - 0xC1BC: 0x8B0E, //CJK UNIFIED IDEOGRAPH - 0xC1BD: 0x8B17, //CJK UNIFIED IDEOGRAPH - 0xC1BE: 0x8B19, //CJK UNIFIED IDEOGRAPH - 0xC1BF: 0x8B1B, //CJK UNIFIED IDEOGRAPH - 0xC1C0: 0x8B0A, //CJK UNIFIED IDEOGRAPH - 0xC1C1: 0x8B20, //CJK UNIFIED IDEOGRAPH - 0xC1C2: 0x8B1D, //CJK UNIFIED IDEOGRAPH - 0xC1C3: 0x8B04, //CJK UNIFIED IDEOGRAPH - 0xC1C4: 0x8B10, //CJK UNIFIED IDEOGRAPH - 0xC1C5: 0x8C41, //CJK UNIFIED IDEOGRAPH - 0xC1C6: 0x8C3F, //CJK UNIFIED IDEOGRAPH - 0xC1C7: 0x8C73, //CJK UNIFIED IDEOGRAPH - 0xC1C8: 0x8CFA, //CJK UNIFIED IDEOGRAPH - 0xC1C9: 0x8CFD, //CJK UNIFIED IDEOGRAPH - 0xC1CA: 0x8CFC, //CJK UNIFIED IDEOGRAPH - 0xC1CB: 0x8CF8, //CJK UNIFIED IDEOGRAPH - 0xC1CC: 0x8CFB, //CJK UNIFIED IDEOGRAPH - 0xC1CD: 0x8DA8, //CJK UNIFIED IDEOGRAPH - 0xC1CE: 0x8E49, //CJK UNIFIED IDEOGRAPH - 0xC1CF: 0x8E4B, //CJK UNIFIED IDEOGRAPH - 0xC1D0: 0x8E48, //CJK UNIFIED IDEOGRAPH - 0xC1D1: 0x8E4A, //CJK UNIFIED IDEOGRAPH - 0xC1D2: 0x8F44, //CJK UNIFIED IDEOGRAPH - 0xC1D3: 0x8F3E, //CJK UNIFIED IDEOGRAPH - 0xC1D4: 0x8F42, //CJK UNIFIED IDEOGRAPH - 0xC1D5: 0x8F45, //CJK UNIFIED IDEOGRAPH - 0xC1D6: 0x8F3F, //CJK UNIFIED IDEOGRAPH - 0xC1D7: 0x907F, //CJK UNIFIED IDEOGRAPH - 0xC1D8: 0x907D, //CJK UNIFIED IDEOGRAPH - 0xC1D9: 0x9084, //CJK UNIFIED IDEOGRAPH - 0xC1DA: 0x9081, //CJK UNIFIED IDEOGRAPH - 0xC1DB: 0x9082, //CJK UNIFIED IDEOGRAPH - 0xC1DC: 0x9080, //CJK UNIFIED IDEOGRAPH - 0xC1DD: 0x9139, //CJK UNIFIED IDEOGRAPH - 0xC1DE: 0x91A3, //CJK UNIFIED IDEOGRAPH - 0xC1DF: 0x919E, //CJK UNIFIED IDEOGRAPH - 0xC1E0: 0x919C, //CJK UNIFIED IDEOGRAPH - 0xC1E1: 0x934D, //CJK UNIFIED IDEOGRAPH - 0xC1E2: 0x9382, //CJK UNIFIED IDEOGRAPH - 0xC1E3: 0x9328, //CJK UNIFIED IDEOGRAPH - 0xC1E4: 0x9375, //CJK UNIFIED IDEOGRAPH - 0xC1E5: 0x934A, //CJK UNIFIED IDEOGRAPH - 0xC1E6: 0x9365, //CJK UNIFIED IDEOGRAPH - 0xC1E7: 0x934B, //CJK UNIFIED IDEOGRAPH - 0xC1E8: 0x9318, //CJK UNIFIED IDEOGRAPH - 0xC1E9: 0x937E, //CJK UNIFIED IDEOGRAPH - 0xC1EA: 0x936C, //CJK UNIFIED IDEOGRAPH - 0xC1EB: 0x935B, //CJK UNIFIED IDEOGRAPH - 0xC1EC: 0x9370, //CJK UNIFIED IDEOGRAPH - 0xC1ED: 0x935A, //CJK UNIFIED IDEOGRAPH - 0xC1EE: 0x9354, //CJK UNIFIED IDEOGRAPH - 0xC1EF: 0x95CA, //CJK UNIFIED IDEOGRAPH - 0xC1F0: 0x95CB, //CJK UNIFIED IDEOGRAPH - 0xC1F1: 0x95CC, //CJK UNIFIED IDEOGRAPH - 0xC1F2: 0x95C8, //CJK UNIFIED IDEOGRAPH - 0xC1F3: 0x95C6, //CJK UNIFIED IDEOGRAPH - 0xC1F4: 0x96B1, //CJK UNIFIED IDEOGRAPH - 0xC1F5: 0x96B8, //CJK UNIFIED IDEOGRAPH - 0xC1F6: 0x96D6, //CJK UNIFIED IDEOGRAPH - 0xC1F7: 0x971C, //CJK UNIFIED IDEOGRAPH - 0xC1F8: 0x971E, //CJK UNIFIED IDEOGRAPH - 0xC1F9: 0x97A0, //CJK UNIFIED IDEOGRAPH - 0xC1FA: 0x97D3, //CJK UNIFIED IDEOGRAPH - 0xC1FB: 0x9846, //CJK UNIFIED IDEOGRAPH - 0xC1FC: 0x98B6, //CJK UNIFIED IDEOGRAPH - 0xC1FD: 0x9935, //CJK UNIFIED IDEOGRAPH - 0xC1FE: 0x9A01, //CJK UNIFIED IDEOGRAPH - 0xC240: 0x99FF, //CJK UNIFIED IDEOGRAPH - 0xC241: 0x9BAE, //CJK UNIFIED IDEOGRAPH - 0xC242: 0x9BAB, //CJK UNIFIED IDEOGRAPH - 0xC243: 0x9BAA, //CJK UNIFIED IDEOGRAPH - 0xC244: 0x9BAD, //CJK UNIFIED IDEOGRAPH - 0xC245: 0x9D3B, //CJK UNIFIED IDEOGRAPH - 0xC246: 0x9D3F, //CJK UNIFIED IDEOGRAPH - 0xC247: 0x9E8B, //CJK UNIFIED IDEOGRAPH - 0xC248: 0x9ECF, //CJK UNIFIED IDEOGRAPH - 0xC249: 0x9EDE, //CJK UNIFIED IDEOGRAPH - 0xC24A: 0x9EDC, //CJK UNIFIED IDEOGRAPH - 0xC24B: 0x9EDD, //CJK UNIFIED IDEOGRAPH - 0xC24C: 0x9EDB, //CJK UNIFIED IDEOGRAPH - 0xC24D: 0x9F3E, //CJK UNIFIED IDEOGRAPH - 0xC24E: 0x9F4B, //CJK UNIFIED IDEOGRAPH - 0xC24F: 0x53E2, //CJK UNIFIED IDEOGRAPH - 0xC250: 0x5695, //CJK UNIFIED IDEOGRAPH - 0xC251: 0x56AE, //CJK UNIFIED IDEOGRAPH - 0xC252: 0x58D9, //CJK UNIFIED IDEOGRAPH - 0xC253: 0x58D8, //CJK UNIFIED IDEOGRAPH - 0xC254: 0x5B38, //CJK UNIFIED IDEOGRAPH - 0xC255: 0x5F5D, //CJK UNIFIED IDEOGRAPH - 0xC256: 0x61E3, //CJK UNIFIED IDEOGRAPH - 0xC257: 0x6233, //CJK UNIFIED IDEOGRAPH - 0xC258: 0x64F4, //CJK UNIFIED IDEOGRAPH - 0xC259: 0x64F2, //CJK UNIFIED IDEOGRAPH - 0xC25A: 0x64FE, //CJK UNIFIED IDEOGRAPH - 0xC25B: 0x6506, //CJK UNIFIED IDEOGRAPH - 0xC25C: 0x64FA, //CJK UNIFIED IDEOGRAPH - 0xC25D: 0x64FB, //CJK UNIFIED IDEOGRAPH - 0xC25E: 0x64F7, //CJK UNIFIED IDEOGRAPH - 0xC25F: 0x65B7, //CJK UNIFIED IDEOGRAPH - 0xC260: 0x66DC, //CJK UNIFIED IDEOGRAPH - 0xC261: 0x6726, //CJK UNIFIED IDEOGRAPH - 0xC262: 0x6AB3, //CJK UNIFIED IDEOGRAPH - 0xC263: 0x6AAC, //CJK UNIFIED IDEOGRAPH - 0xC264: 0x6AC3, //CJK UNIFIED IDEOGRAPH - 0xC265: 0x6ABB, //CJK UNIFIED IDEOGRAPH - 0xC266: 0x6AB8, //CJK UNIFIED IDEOGRAPH - 0xC267: 0x6AC2, //CJK UNIFIED IDEOGRAPH - 0xC268: 0x6AAE, //CJK UNIFIED IDEOGRAPH - 0xC269: 0x6AAF, //CJK UNIFIED IDEOGRAPH - 0xC26A: 0x6B5F, //CJK UNIFIED IDEOGRAPH - 0xC26B: 0x6B78, //CJK UNIFIED IDEOGRAPH - 0xC26C: 0x6BAF, //CJK UNIFIED IDEOGRAPH - 0xC26D: 0x7009, //CJK UNIFIED IDEOGRAPH - 0xC26E: 0x700B, //CJK UNIFIED IDEOGRAPH - 0xC26F: 0x6FFE, //CJK UNIFIED IDEOGRAPH - 0xC270: 0x7006, //CJK UNIFIED IDEOGRAPH - 0xC271: 0x6FFA, //CJK UNIFIED IDEOGRAPH - 0xC272: 0x7011, //CJK UNIFIED IDEOGRAPH - 0xC273: 0x700F, //CJK UNIFIED IDEOGRAPH - 0xC274: 0x71FB, //CJK UNIFIED IDEOGRAPH - 0xC275: 0x71FC, //CJK UNIFIED IDEOGRAPH - 0xC276: 0x71FE, //CJK UNIFIED IDEOGRAPH - 0xC277: 0x71F8, //CJK UNIFIED IDEOGRAPH - 0xC278: 0x7377, //CJK UNIFIED IDEOGRAPH - 0xC279: 0x7375, //CJK UNIFIED IDEOGRAPH - 0xC27A: 0x74A7, //CJK UNIFIED IDEOGRAPH - 0xC27B: 0x74BF, //CJK UNIFIED IDEOGRAPH - 0xC27C: 0x7515, //CJK UNIFIED IDEOGRAPH - 0xC27D: 0x7656, //CJK UNIFIED IDEOGRAPH - 0xC27E: 0x7658, //CJK UNIFIED IDEOGRAPH - 0xC2A1: 0x7652, //CJK UNIFIED IDEOGRAPH - 0xC2A2: 0x77BD, //CJK UNIFIED IDEOGRAPH - 0xC2A3: 0x77BF, //CJK UNIFIED IDEOGRAPH - 0xC2A4: 0x77BB, //CJK UNIFIED IDEOGRAPH - 0xC2A5: 0x77BC, //CJK UNIFIED IDEOGRAPH - 0xC2A6: 0x790E, //CJK UNIFIED IDEOGRAPH - 0xC2A7: 0x79AE, //CJK UNIFIED IDEOGRAPH - 0xC2A8: 0x7A61, //CJK UNIFIED IDEOGRAPH - 0xC2A9: 0x7A62, //CJK UNIFIED IDEOGRAPH - 0xC2AA: 0x7A60, //CJK UNIFIED IDEOGRAPH - 0xC2AB: 0x7AC4, //CJK UNIFIED IDEOGRAPH - 0xC2AC: 0x7AC5, //CJK UNIFIED IDEOGRAPH - 0xC2AD: 0x7C2B, //CJK UNIFIED IDEOGRAPH - 0xC2AE: 0x7C27, //CJK UNIFIED IDEOGRAPH - 0xC2AF: 0x7C2A, //CJK UNIFIED IDEOGRAPH - 0xC2B0: 0x7C1E, //CJK UNIFIED IDEOGRAPH - 0xC2B1: 0x7C23, //CJK UNIFIED IDEOGRAPH - 0xC2B2: 0x7C21, //CJK UNIFIED IDEOGRAPH - 0xC2B3: 0x7CE7, //CJK UNIFIED IDEOGRAPH - 0xC2B4: 0x7E54, //CJK UNIFIED IDEOGRAPH - 0xC2B5: 0x7E55, //CJK UNIFIED IDEOGRAPH - 0xC2B6: 0x7E5E, //CJK UNIFIED IDEOGRAPH - 0xC2B7: 0x7E5A, //CJK UNIFIED IDEOGRAPH - 0xC2B8: 0x7E61, //CJK UNIFIED IDEOGRAPH - 0xC2B9: 0x7E52, //CJK UNIFIED IDEOGRAPH - 0xC2BA: 0x7E59, //CJK UNIFIED IDEOGRAPH - 0xC2BB: 0x7F48, //CJK UNIFIED IDEOGRAPH - 0xC2BC: 0x7FF9, //CJK UNIFIED IDEOGRAPH - 0xC2BD: 0x7FFB, //CJK UNIFIED IDEOGRAPH - 0xC2BE: 0x8077, //CJK UNIFIED IDEOGRAPH - 0xC2BF: 0x8076, //CJK UNIFIED IDEOGRAPH - 0xC2C0: 0x81CD, //CJK UNIFIED IDEOGRAPH - 0xC2C1: 0x81CF, //CJK UNIFIED IDEOGRAPH - 0xC2C2: 0x820A, //CJK UNIFIED IDEOGRAPH - 0xC2C3: 0x85CF, //CJK UNIFIED IDEOGRAPH - 0xC2C4: 0x85A9, //CJK UNIFIED IDEOGRAPH - 0xC2C5: 0x85CD, //CJK UNIFIED IDEOGRAPH - 0xC2C6: 0x85D0, //CJK UNIFIED IDEOGRAPH - 0xC2C7: 0x85C9, //CJK UNIFIED IDEOGRAPH - 0xC2C8: 0x85B0, //CJK UNIFIED IDEOGRAPH - 0xC2C9: 0x85BA, //CJK UNIFIED IDEOGRAPH - 0xC2CA: 0x85B9, //CJK UNIFIED IDEOGRAPH - 0xC2CB: 0x85A6, //CJK UNIFIED IDEOGRAPH - 0xC2CC: 0x87EF, //CJK UNIFIED IDEOGRAPH - 0xC2CD: 0x87EC, //CJK UNIFIED IDEOGRAPH - 0xC2CE: 0x87F2, //CJK UNIFIED IDEOGRAPH - 0xC2CF: 0x87E0, //CJK UNIFIED IDEOGRAPH - 0xC2D0: 0x8986, //CJK UNIFIED IDEOGRAPH - 0xC2D1: 0x89B2, //CJK UNIFIED IDEOGRAPH - 0xC2D2: 0x89F4, //CJK UNIFIED IDEOGRAPH - 0xC2D3: 0x8B28, //CJK UNIFIED IDEOGRAPH - 0xC2D4: 0x8B39, //CJK UNIFIED IDEOGRAPH - 0xC2D5: 0x8B2C, //CJK UNIFIED IDEOGRAPH - 0xC2D6: 0x8B2B, //CJK UNIFIED IDEOGRAPH - 0xC2D7: 0x8C50, //CJK UNIFIED IDEOGRAPH - 0xC2D8: 0x8D05, //CJK UNIFIED IDEOGRAPH - 0xC2D9: 0x8E59, //CJK UNIFIED IDEOGRAPH - 0xC2DA: 0x8E63, //CJK UNIFIED IDEOGRAPH - 0xC2DB: 0x8E66, //CJK UNIFIED IDEOGRAPH - 0xC2DC: 0x8E64, //CJK UNIFIED IDEOGRAPH - 0xC2DD: 0x8E5F, //CJK UNIFIED IDEOGRAPH - 0xC2DE: 0x8E55, //CJK UNIFIED IDEOGRAPH - 0xC2DF: 0x8EC0, //CJK UNIFIED IDEOGRAPH - 0xC2E0: 0x8F49, //CJK UNIFIED IDEOGRAPH - 0xC2E1: 0x8F4D, //CJK UNIFIED IDEOGRAPH - 0xC2E2: 0x9087, //CJK UNIFIED IDEOGRAPH - 0xC2E3: 0x9083, //CJK UNIFIED IDEOGRAPH - 0xC2E4: 0x9088, //CJK UNIFIED IDEOGRAPH - 0xC2E5: 0x91AB, //CJK UNIFIED IDEOGRAPH - 0xC2E6: 0x91AC, //CJK UNIFIED IDEOGRAPH - 0xC2E7: 0x91D0, //CJK UNIFIED IDEOGRAPH - 0xC2E8: 0x9394, //CJK UNIFIED IDEOGRAPH - 0xC2E9: 0x938A, //CJK UNIFIED IDEOGRAPH - 0xC2EA: 0x9396, //CJK UNIFIED IDEOGRAPH - 0xC2EB: 0x93A2, //CJK UNIFIED IDEOGRAPH - 0xC2EC: 0x93B3, //CJK UNIFIED IDEOGRAPH - 0xC2ED: 0x93AE, //CJK UNIFIED IDEOGRAPH - 0xC2EE: 0x93AC, //CJK UNIFIED IDEOGRAPH - 0xC2EF: 0x93B0, //CJK UNIFIED IDEOGRAPH - 0xC2F0: 0x9398, //CJK UNIFIED IDEOGRAPH - 0xC2F1: 0x939A, //CJK UNIFIED IDEOGRAPH - 0xC2F2: 0x9397, //CJK UNIFIED IDEOGRAPH - 0xC2F3: 0x95D4, //CJK UNIFIED IDEOGRAPH - 0xC2F4: 0x95D6, //CJK UNIFIED IDEOGRAPH - 0xC2F5: 0x95D0, //CJK UNIFIED IDEOGRAPH - 0xC2F6: 0x95D5, //CJK UNIFIED IDEOGRAPH - 0xC2F7: 0x96E2, //CJK UNIFIED IDEOGRAPH - 0xC2F8: 0x96DC, //CJK UNIFIED IDEOGRAPH - 0xC2F9: 0x96D9, //CJK UNIFIED IDEOGRAPH - 0xC2FA: 0x96DB, //CJK UNIFIED IDEOGRAPH - 0xC2FB: 0x96DE, //CJK UNIFIED IDEOGRAPH - 0xC2FC: 0x9724, //CJK UNIFIED IDEOGRAPH - 0xC2FD: 0x97A3, //CJK UNIFIED IDEOGRAPH - 0xC2FE: 0x97A6, //CJK UNIFIED IDEOGRAPH - 0xC340: 0x97AD, //CJK UNIFIED IDEOGRAPH - 0xC341: 0x97F9, //CJK UNIFIED IDEOGRAPH - 0xC342: 0x984D, //CJK UNIFIED IDEOGRAPH - 0xC343: 0x984F, //CJK UNIFIED IDEOGRAPH - 0xC344: 0x984C, //CJK UNIFIED IDEOGRAPH - 0xC345: 0x984E, //CJK UNIFIED IDEOGRAPH - 0xC346: 0x9853, //CJK UNIFIED IDEOGRAPH - 0xC347: 0x98BA, //CJK UNIFIED IDEOGRAPH - 0xC348: 0x993E, //CJK UNIFIED IDEOGRAPH - 0xC349: 0x993F, //CJK UNIFIED IDEOGRAPH - 0xC34A: 0x993D, //CJK UNIFIED IDEOGRAPH - 0xC34B: 0x992E, //CJK UNIFIED IDEOGRAPH - 0xC34C: 0x99A5, //CJK UNIFIED IDEOGRAPH - 0xC34D: 0x9A0E, //CJK UNIFIED IDEOGRAPH - 0xC34E: 0x9AC1, //CJK UNIFIED IDEOGRAPH - 0xC34F: 0x9B03, //CJK UNIFIED IDEOGRAPH - 0xC350: 0x9B06, //CJK UNIFIED IDEOGRAPH - 0xC351: 0x9B4F, //CJK UNIFIED IDEOGRAPH - 0xC352: 0x9B4E, //CJK UNIFIED IDEOGRAPH - 0xC353: 0x9B4D, //CJK UNIFIED IDEOGRAPH - 0xC354: 0x9BCA, //CJK UNIFIED IDEOGRAPH - 0xC355: 0x9BC9, //CJK UNIFIED IDEOGRAPH - 0xC356: 0x9BFD, //CJK UNIFIED IDEOGRAPH - 0xC357: 0x9BC8, //CJK UNIFIED IDEOGRAPH - 0xC358: 0x9BC0, //CJK UNIFIED IDEOGRAPH - 0xC359: 0x9D51, //CJK UNIFIED IDEOGRAPH - 0xC35A: 0x9D5D, //CJK UNIFIED IDEOGRAPH - 0xC35B: 0x9D60, //CJK UNIFIED IDEOGRAPH - 0xC35C: 0x9EE0, //CJK UNIFIED IDEOGRAPH - 0xC35D: 0x9F15, //CJK UNIFIED IDEOGRAPH - 0xC35E: 0x9F2C, //CJK UNIFIED IDEOGRAPH - 0xC35F: 0x5133, //CJK UNIFIED IDEOGRAPH - 0xC360: 0x56A5, //CJK UNIFIED IDEOGRAPH - 0xC361: 0x58DE, //CJK UNIFIED IDEOGRAPH - 0xC362: 0x58DF, //CJK UNIFIED IDEOGRAPH - 0xC363: 0x58E2, //CJK UNIFIED IDEOGRAPH - 0xC364: 0x5BF5, //CJK UNIFIED IDEOGRAPH - 0xC365: 0x9F90, //CJK UNIFIED IDEOGRAPH - 0xC366: 0x5EEC, //CJK UNIFIED IDEOGRAPH - 0xC367: 0x61F2, //CJK UNIFIED IDEOGRAPH - 0xC368: 0x61F7, //CJK UNIFIED IDEOGRAPH - 0xC369: 0x61F6, //CJK UNIFIED IDEOGRAPH - 0xC36A: 0x61F5, //CJK UNIFIED IDEOGRAPH - 0xC36B: 0x6500, //CJK UNIFIED IDEOGRAPH - 0xC36C: 0x650F, //CJK UNIFIED IDEOGRAPH - 0xC36D: 0x66E0, //CJK UNIFIED IDEOGRAPH - 0xC36E: 0x66DD, //CJK UNIFIED IDEOGRAPH - 0xC36F: 0x6AE5, //CJK UNIFIED IDEOGRAPH - 0xC370: 0x6ADD, //CJK UNIFIED IDEOGRAPH - 0xC371: 0x6ADA, //CJK UNIFIED IDEOGRAPH - 0xC372: 0x6AD3, //CJK UNIFIED IDEOGRAPH - 0xC373: 0x701B, //CJK UNIFIED IDEOGRAPH - 0xC374: 0x701F, //CJK UNIFIED IDEOGRAPH - 0xC375: 0x7028, //CJK UNIFIED IDEOGRAPH - 0xC376: 0x701A, //CJK UNIFIED IDEOGRAPH - 0xC377: 0x701D, //CJK UNIFIED IDEOGRAPH - 0xC378: 0x7015, //CJK UNIFIED IDEOGRAPH - 0xC379: 0x7018, //CJK UNIFIED IDEOGRAPH - 0xC37A: 0x7206, //CJK UNIFIED IDEOGRAPH - 0xC37B: 0x720D, //CJK UNIFIED IDEOGRAPH - 0xC37C: 0x7258, //CJK UNIFIED IDEOGRAPH - 0xC37D: 0x72A2, //CJK UNIFIED IDEOGRAPH - 0xC37E: 0x7378, //CJK UNIFIED IDEOGRAPH - 0xC3A1: 0x737A, //CJK UNIFIED IDEOGRAPH - 0xC3A2: 0x74BD, //CJK UNIFIED IDEOGRAPH - 0xC3A3: 0x74CA, //CJK UNIFIED IDEOGRAPH - 0xC3A4: 0x74E3, //CJK UNIFIED IDEOGRAPH - 0xC3A5: 0x7587, //CJK UNIFIED IDEOGRAPH - 0xC3A6: 0x7586, //CJK UNIFIED IDEOGRAPH - 0xC3A7: 0x765F, //CJK UNIFIED IDEOGRAPH - 0xC3A8: 0x7661, //CJK UNIFIED IDEOGRAPH - 0xC3A9: 0x77C7, //CJK UNIFIED IDEOGRAPH - 0xC3AA: 0x7919, //CJK UNIFIED IDEOGRAPH - 0xC3AB: 0x79B1, //CJK UNIFIED IDEOGRAPH - 0xC3AC: 0x7A6B, //CJK UNIFIED IDEOGRAPH - 0xC3AD: 0x7A69, //CJK UNIFIED IDEOGRAPH - 0xC3AE: 0x7C3E, //CJK UNIFIED IDEOGRAPH - 0xC3AF: 0x7C3F, //CJK UNIFIED IDEOGRAPH - 0xC3B0: 0x7C38, //CJK UNIFIED IDEOGRAPH - 0xC3B1: 0x7C3D, //CJK UNIFIED IDEOGRAPH - 0xC3B2: 0x7C37, //CJK UNIFIED IDEOGRAPH - 0xC3B3: 0x7C40, //CJK UNIFIED IDEOGRAPH - 0xC3B4: 0x7E6B, //CJK UNIFIED IDEOGRAPH - 0xC3B5: 0x7E6D, //CJK UNIFIED IDEOGRAPH - 0xC3B6: 0x7E79, //CJK UNIFIED IDEOGRAPH - 0xC3B7: 0x7E69, //CJK UNIFIED IDEOGRAPH - 0xC3B8: 0x7E6A, //CJK UNIFIED IDEOGRAPH - 0xC3B9: 0x7F85, //CJK UNIFIED IDEOGRAPH - 0xC3BA: 0x7E73, //CJK UNIFIED IDEOGRAPH - 0xC3BB: 0x7FB6, //CJK UNIFIED IDEOGRAPH - 0xC3BC: 0x7FB9, //CJK UNIFIED IDEOGRAPH - 0xC3BD: 0x7FB8, //CJK UNIFIED IDEOGRAPH - 0xC3BE: 0x81D8, //CJK UNIFIED IDEOGRAPH - 0xC3BF: 0x85E9, //CJK UNIFIED IDEOGRAPH - 0xC3C0: 0x85DD, //CJK UNIFIED IDEOGRAPH - 0xC3C1: 0x85EA, //CJK UNIFIED IDEOGRAPH - 0xC3C2: 0x85D5, //CJK UNIFIED IDEOGRAPH - 0xC3C3: 0x85E4, //CJK UNIFIED IDEOGRAPH - 0xC3C4: 0x85E5, //CJK UNIFIED IDEOGRAPH - 0xC3C5: 0x85F7, //CJK UNIFIED IDEOGRAPH - 0xC3C6: 0x87FB, //CJK UNIFIED IDEOGRAPH - 0xC3C7: 0x8805, //CJK UNIFIED IDEOGRAPH - 0xC3C8: 0x880D, //CJK UNIFIED IDEOGRAPH - 0xC3C9: 0x87F9, //CJK UNIFIED IDEOGRAPH - 0xC3CA: 0x87FE, //CJK UNIFIED IDEOGRAPH - 0xC3CB: 0x8960, //CJK UNIFIED IDEOGRAPH - 0xC3CC: 0x895F, //CJK UNIFIED IDEOGRAPH - 0xC3CD: 0x8956, //CJK UNIFIED IDEOGRAPH - 0xC3CE: 0x895E, //CJK UNIFIED IDEOGRAPH - 0xC3CF: 0x8B41, //CJK UNIFIED IDEOGRAPH - 0xC3D0: 0x8B5C, //CJK UNIFIED IDEOGRAPH - 0xC3D1: 0x8B58, //CJK UNIFIED IDEOGRAPH - 0xC3D2: 0x8B49, //CJK UNIFIED IDEOGRAPH - 0xC3D3: 0x8B5A, //CJK UNIFIED IDEOGRAPH - 0xC3D4: 0x8B4E, //CJK UNIFIED IDEOGRAPH - 0xC3D5: 0x8B4F, //CJK UNIFIED IDEOGRAPH - 0xC3D6: 0x8B46, //CJK UNIFIED IDEOGRAPH - 0xC3D7: 0x8B59, //CJK UNIFIED IDEOGRAPH - 0xC3D8: 0x8D08, //CJK UNIFIED IDEOGRAPH - 0xC3D9: 0x8D0A, //CJK UNIFIED IDEOGRAPH - 0xC3DA: 0x8E7C, //CJK UNIFIED IDEOGRAPH - 0xC3DB: 0x8E72, //CJK UNIFIED IDEOGRAPH - 0xC3DC: 0x8E87, //CJK UNIFIED IDEOGRAPH - 0xC3DD: 0x8E76, //CJK UNIFIED IDEOGRAPH - 0xC3DE: 0x8E6C, //CJK UNIFIED IDEOGRAPH - 0xC3DF: 0x8E7A, //CJK UNIFIED IDEOGRAPH - 0xC3E0: 0x8E74, //CJK UNIFIED IDEOGRAPH - 0xC3E1: 0x8F54, //CJK UNIFIED IDEOGRAPH - 0xC3E2: 0x8F4E, //CJK UNIFIED IDEOGRAPH - 0xC3E3: 0x8FAD, //CJK UNIFIED IDEOGRAPH - 0xC3E4: 0x908A, //CJK UNIFIED IDEOGRAPH - 0xC3E5: 0x908B, //CJK UNIFIED IDEOGRAPH - 0xC3E6: 0x91B1, //CJK UNIFIED IDEOGRAPH - 0xC3E7: 0x91AE, //CJK UNIFIED IDEOGRAPH - 0xC3E8: 0x93E1, //CJK UNIFIED IDEOGRAPH - 0xC3E9: 0x93D1, //CJK UNIFIED IDEOGRAPH - 0xC3EA: 0x93DF, //CJK UNIFIED IDEOGRAPH - 0xC3EB: 0x93C3, //CJK UNIFIED IDEOGRAPH - 0xC3EC: 0x93C8, //CJK UNIFIED IDEOGRAPH - 0xC3ED: 0x93DC, //CJK UNIFIED IDEOGRAPH - 0xC3EE: 0x93DD, //CJK UNIFIED IDEOGRAPH - 0xC3EF: 0x93D6, //CJK UNIFIED IDEOGRAPH - 0xC3F0: 0x93E2, //CJK UNIFIED IDEOGRAPH - 0xC3F1: 0x93CD, //CJK UNIFIED IDEOGRAPH - 0xC3F2: 0x93D8, //CJK UNIFIED IDEOGRAPH - 0xC3F3: 0x93E4, //CJK UNIFIED IDEOGRAPH - 0xC3F4: 0x93D7, //CJK UNIFIED IDEOGRAPH - 0xC3F5: 0x93E8, //CJK UNIFIED IDEOGRAPH - 0xC3F6: 0x95DC, //CJK UNIFIED IDEOGRAPH - 0xC3F7: 0x96B4, //CJK UNIFIED IDEOGRAPH - 0xC3F8: 0x96E3, //CJK UNIFIED IDEOGRAPH - 0xC3F9: 0x972A, //CJK UNIFIED IDEOGRAPH - 0xC3FA: 0x9727, //CJK UNIFIED IDEOGRAPH - 0xC3FB: 0x9761, //CJK UNIFIED IDEOGRAPH - 0xC3FC: 0x97DC, //CJK UNIFIED IDEOGRAPH - 0xC3FD: 0x97FB, //CJK UNIFIED IDEOGRAPH - 0xC3FE: 0x985E, //CJK UNIFIED IDEOGRAPH - 0xC440: 0x9858, //CJK UNIFIED IDEOGRAPH - 0xC441: 0x985B, //CJK UNIFIED IDEOGRAPH - 0xC442: 0x98BC, //CJK UNIFIED IDEOGRAPH - 0xC443: 0x9945, //CJK UNIFIED IDEOGRAPH - 0xC444: 0x9949, //CJK UNIFIED IDEOGRAPH - 0xC445: 0x9A16, //CJK UNIFIED IDEOGRAPH - 0xC446: 0x9A19, //CJK UNIFIED IDEOGRAPH - 0xC447: 0x9B0D, //CJK UNIFIED IDEOGRAPH - 0xC448: 0x9BE8, //CJK UNIFIED IDEOGRAPH - 0xC449: 0x9BE7, //CJK UNIFIED IDEOGRAPH - 0xC44A: 0x9BD6, //CJK UNIFIED IDEOGRAPH - 0xC44B: 0x9BDB, //CJK UNIFIED IDEOGRAPH - 0xC44C: 0x9D89, //CJK UNIFIED IDEOGRAPH - 0xC44D: 0x9D61, //CJK UNIFIED IDEOGRAPH - 0xC44E: 0x9D72, //CJK UNIFIED IDEOGRAPH - 0xC44F: 0x9D6A, //CJK UNIFIED IDEOGRAPH - 0xC450: 0x9D6C, //CJK UNIFIED IDEOGRAPH - 0xC451: 0x9E92, //CJK UNIFIED IDEOGRAPH - 0xC452: 0x9E97, //CJK UNIFIED IDEOGRAPH - 0xC453: 0x9E93, //CJK UNIFIED IDEOGRAPH - 0xC454: 0x9EB4, //CJK UNIFIED IDEOGRAPH - 0xC455: 0x52F8, //CJK UNIFIED IDEOGRAPH - 0xC456: 0x56A8, //CJK UNIFIED IDEOGRAPH - 0xC457: 0x56B7, //CJK UNIFIED IDEOGRAPH - 0xC458: 0x56B6, //CJK UNIFIED IDEOGRAPH - 0xC459: 0x56B4, //CJK UNIFIED IDEOGRAPH - 0xC45A: 0x56BC, //CJK UNIFIED IDEOGRAPH - 0xC45B: 0x58E4, //CJK UNIFIED IDEOGRAPH - 0xC45C: 0x5B40, //CJK UNIFIED IDEOGRAPH - 0xC45D: 0x5B43, //CJK UNIFIED IDEOGRAPH - 0xC45E: 0x5B7D, //CJK UNIFIED IDEOGRAPH - 0xC45F: 0x5BF6, //CJK UNIFIED IDEOGRAPH - 0xC460: 0x5DC9, //CJK UNIFIED IDEOGRAPH - 0xC461: 0x61F8, //CJK UNIFIED IDEOGRAPH - 0xC462: 0x61FA, //CJK UNIFIED IDEOGRAPH - 0xC463: 0x6518, //CJK UNIFIED IDEOGRAPH - 0xC464: 0x6514, //CJK UNIFIED IDEOGRAPH - 0xC465: 0x6519, //CJK UNIFIED IDEOGRAPH - 0xC466: 0x66E6, //CJK UNIFIED IDEOGRAPH - 0xC467: 0x6727, //CJK UNIFIED IDEOGRAPH - 0xC468: 0x6AEC, //CJK UNIFIED IDEOGRAPH - 0xC469: 0x703E, //CJK UNIFIED IDEOGRAPH - 0xC46A: 0x7030, //CJK UNIFIED IDEOGRAPH - 0xC46B: 0x7032, //CJK UNIFIED IDEOGRAPH - 0xC46C: 0x7210, //CJK UNIFIED IDEOGRAPH - 0xC46D: 0x737B, //CJK UNIFIED IDEOGRAPH - 0xC46E: 0x74CF, //CJK UNIFIED IDEOGRAPH - 0xC46F: 0x7662, //CJK UNIFIED IDEOGRAPH - 0xC470: 0x7665, //CJK UNIFIED IDEOGRAPH - 0xC471: 0x7926, //CJK UNIFIED IDEOGRAPH - 0xC472: 0x792A, //CJK UNIFIED IDEOGRAPH - 0xC473: 0x792C, //CJK UNIFIED IDEOGRAPH - 0xC474: 0x792B, //CJK UNIFIED IDEOGRAPH - 0xC475: 0x7AC7, //CJK UNIFIED IDEOGRAPH - 0xC476: 0x7AF6, //CJK UNIFIED IDEOGRAPH - 0xC477: 0x7C4C, //CJK UNIFIED IDEOGRAPH - 0xC478: 0x7C43, //CJK UNIFIED IDEOGRAPH - 0xC479: 0x7C4D, //CJK UNIFIED IDEOGRAPH - 0xC47A: 0x7CEF, //CJK UNIFIED IDEOGRAPH - 0xC47B: 0x7CF0, //CJK UNIFIED IDEOGRAPH - 0xC47C: 0x8FAE, //CJK UNIFIED IDEOGRAPH - 0xC47D: 0x7E7D, //CJK UNIFIED IDEOGRAPH - 0xC47E: 0x7E7C, //CJK UNIFIED IDEOGRAPH - 0xC4A1: 0x7E82, //CJK UNIFIED IDEOGRAPH - 0xC4A2: 0x7F4C, //CJK UNIFIED IDEOGRAPH - 0xC4A3: 0x8000, //CJK UNIFIED IDEOGRAPH - 0xC4A4: 0x81DA, //CJK UNIFIED IDEOGRAPH - 0xC4A5: 0x8266, //CJK UNIFIED IDEOGRAPH - 0xC4A6: 0x85FB, //CJK UNIFIED IDEOGRAPH - 0xC4A7: 0x85F9, //CJK UNIFIED IDEOGRAPH - 0xC4A8: 0x8611, //CJK UNIFIED IDEOGRAPH - 0xC4A9: 0x85FA, //CJK UNIFIED IDEOGRAPH - 0xC4AA: 0x8606, //CJK UNIFIED IDEOGRAPH - 0xC4AB: 0x860B, //CJK UNIFIED IDEOGRAPH - 0xC4AC: 0x8607, //CJK UNIFIED IDEOGRAPH - 0xC4AD: 0x860A, //CJK UNIFIED IDEOGRAPH - 0xC4AE: 0x8814, //CJK UNIFIED IDEOGRAPH - 0xC4AF: 0x8815, //CJK UNIFIED IDEOGRAPH - 0xC4B0: 0x8964, //CJK UNIFIED IDEOGRAPH - 0xC4B1: 0x89BA, //CJK UNIFIED IDEOGRAPH - 0xC4B2: 0x89F8, //CJK UNIFIED IDEOGRAPH - 0xC4B3: 0x8B70, //CJK UNIFIED IDEOGRAPH - 0xC4B4: 0x8B6C, //CJK UNIFIED IDEOGRAPH - 0xC4B5: 0x8B66, //CJK UNIFIED IDEOGRAPH - 0xC4B6: 0x8B6F, //CJK UNIFIED IDEOGRAPH - 0xC4B7: 0x8B5F, //CJK UNIFIED IDEOGRAPH - 0xC4B8: 0x8B6B, //CJK UNIFIED IDEOGRAPH - 0xC4B9: 0x8D0F, //CJK UNIFIED IDEOGRAPH - 0xC4BA: 0x8D0D, //CJK UNIFIED IDEOGRAPH - 0xC4BB: 0x8E89, //CJK UNIFIED IDEOGRAPH - 0xC4BC: 0x8E81, //CJK UNIFIED IDEOGRAPH - 0xC4BD: 0x8E85, //CJK UNIFIED IDEOGRAPH - 0xC4BE: 0x8E82, //CJK UNIFIED IDEOGRAPH - 0xC4BF: 0x91B4, //CJK UNIFIED IDEOGRAPH - 0xC4C0: 0x91CB, //CJK UNIFIED IDEOGRAPH - 0xC4C1: 0x9418, //CJK UNIFIED IDEOGRAPH - 0xC4C2: 0x9403, //CJK UNIFIED IDEOGRAPH - 0xC4C3: 0x93FD, //CJK UNIFIED IDEOGRAPH - 0xC4C4: 0x95E1, //CJK UNIFIED IDEOGRAPH - 0xC4C5: 0x9730, //CJK UNIFIED IDEOGRAPH - 0xC4C6: 0x98C4, //CJK UNIFIED IDEOGRAPH - 0xC4C7: 0x9952, //CJK UNIFIED IDEOGRAPH - 0xC4C8: 0x9951, //CJK UNIFIED IDEOGRAPH - 0xC4C9: 0x99A8, //CJK UNIFIED IDEOGRAPH - 0xC4CA: 0x9A2B, //CJK UNIFIED IDEOGRAPH - 0xC4CB: 0x9A30, //CJK UNIFIED IDEOGRAPH - 0xC4CC: 0x9A37, //CJK UNIFIED IDEOGRAPH - 0xC4CD: 0x9A35, //CJK UNIFIED IDEOGRAPH - 0xC4CE: 0x9C13, //CJK UNIFIED IDEOGRAPH - 0xC4CF: 0x9C0D, //CJK UNIFIED IDEOGRAPH - 0xC4D0: 0x9E79, //CJK UNIFIED IDEOGRAPH - 0xC4D1: 0x9EB5, //CJK UNIFIED IDEOGRAPH - 0xC4D2: 0x9EE8, //CJK UNIFIED IDEOGRAPH - 0xC4D3: 0x9F2F, //CJK UNIFIED IDEOGRAPH - 0xC4D4: 0x9F5F, //CJK UNIFIED IDEOGRAPH - 0xC4D5: 0x9F63, //CJK UNIFIED IDEOGRAPH - 0xC4D6: 0x9F61, //CJK UNIFIED IDEOGRAPH - 0xC4D7: 0x5137, //CJK UNIFIED IDEOGRAPH - 0xC4D8: 0x5138, //CJK UNIFIED IDEOGRAPH - 0xC4D9: 0x56C1, //CJK UNIFIED IDEOGRAPH - 0xC4DA: 0x56C0, //CJK UNIFIED IDEOGRAPH - 0xC4DB: 0x56C2, //CJK UNIFIED IDEOGRAPH - 0xC4DC: 0x5914, //CJK UNIFIED IDEOGRAPH - 0xC4DD: 0x5C6C, //CJK UNIFIED IDEOGRAPH - 0xC4DE: 0x5DCD, //CJK UNIFIED IDEOGRAPH - 0xC4DF: 0x61FC, //CJK UNIFIED IDEOGRAPH - 0xC4E0: 0x61FE, //CJK UNIFIED IDEOGRAPH - 0xC4E1: 0x651D, //CJK UNIFIED IDEOGRAPH - 0xC4E2: 0x651C, //CJK UNIFIED IDEOGRAPH - 0xC4E3: 0x6595, //CJK UNIFIED IDEOGRAPH - 0xC4E4: 0x66E9, //CJK UNIFIED IDEOGRAPH - 0xC4E5: 0x6AFB, //CJK UNIFIED IDEOGRAPH - 0xC4E6: 0x6B04, //CJK UNIFIED IDEOGRAPH - 0xC4E7: 0x6AFA, //CJK UNIFIED IDEOGRAPH - 0xC4E8: 0x6BB2, //CJK UNIFIED IDEOGRAPH - 0xC4E9: 0x704C, //CJK UNIFIED IDEOGRAPH - 0xC4EA: 0x721B, //CJK UNIFIED IDEOGRAPH - 0xC4EB: 0x72A7, //CJK UNIFIED IDEOGRAPH - 0xC4EC: 0x74D6, //CJK UNIFIED IDEOGRAPH - 0xC4ED: 0x74D4, //CJK UNIFIED IDEOGRAPH - 0xC4EE: 0x7669, //CJK UNIFIED IDEOGRAPH - 0xC4EF: 0x77D3, //CJK UNIFIED IDEOGRAPH - 0xC4F0: 0x7C50, //CJK UNIFIED IDEOGRAPH - 0xC4F1: 0x7E8F, //CJK UNIFIED IDEOGRAPH - 0xC4F2: 0x7E8C, //CJK UNIFIED IDEOGRAPH - 0xC4F3: 0x7FBC, //CJK UNIFIED IDEOGRAPH - 0xC4F4: 0x8617, //CJK UNIFIED IDEOGRAPH - 0xC4F5: 0x862D, //CJK UNIFIED IDEOGRAPH - 0xC4F6: 0x861A, //CJK UNIFIED IDEOGRAPH - 0xC4F7: 0x8823, //CJK UNIFIED IDEOGRAPH - 0xC4F8: 0x8822, //CJK UNIFIED IDEOGRAPH - 0xC4F9: 0x8821, //CJK UNIFIED IDEOGRAPH - 0xC4FA: 0x881F, //CJK UNIFIED IDEOGRAPH - 0xC4FB: 0x896A, //CJK UNIFIED IDEOGRAPH - 0xC4FC: 0x896C, //CJK UNIFIED IDEOGRAPH - 0xC4FD: 0x89BD, //CJK UNIFIED IDEOGRAPH - 0xC4FE: 0x8B74, //CJK UNIFIED IDEOGRAPH - 0xC540: 0x8B77, //CJK UNIFIED IDEOGRAPH - 0xC541: 0x8B7D, //CJK UNIFIED IDEOGRAPH - 0xC542: 0x8D13, //CJK UNIFIED IDEOGRAPH - 0xC543: 0x8E8A, //CJK UNIFIED IDEOGRAPH - 0xC544: 0x8E8D, //CJK UNIFIED IDEOGRAPH - 0xC545: 0x8E8B, //CJK UNIFIED IDEOGRAPH - 0xC546: 0x8F5F, //CJK UNIFIED IDEOGRAPH - 0xC547: 0x8FAF, //CJK UNIFIED IDEOGRAPH - 0xC548: 0x91BA, //CJK UNIFIED IDEOGRAPH - 0xC549: 0x942E, //CJK UNIFIED IDEOGRAPH - 0xC54A: 0x9433, //CJK UNIFIED IDEOGRAPH - 0xC54B: 0x9435, //CJK UNIFIED IDEOGRAPH - 0xC54C: 0x943A, //CJK UNIFIED IDEOGRAPH - 0xC54D: 0x9438, //CJK UNIFIED IDEOGRAPH - 0xC54E: 0x9432, //CJK UNIFIED IDEOGRAPH - 0xC54F: 0x942B, //CJK UNIFIED IDEOGRAPH - 0xC550: 0x95E2, //CJK UNIFIED IDEOGRAPH - 0xC551: 0x9738, //CJK UNIFIED IDEOGRAPH - 0xC552: 0x9739, //CJK UNIFIED IDEOGRAPH - 0xC553: 0x9732, //CJK UNIFIED IDEOGRAPH - 0xC554: 0x97FF, //CJK UNIFIED IDEOGRAPH - 0xC555: 0x9867, //CJK UNIFIED IDEOGRAPH - 0xC556: 0x9865, //CJK UNIFIED IDEOGRAPH - 0xC557: 0x9957, //CJK UNIFIED IDEOGRAPH - 0xC558: 0x9A45, //CJK UNIFIED IDEOGRAPH - 0xC559: 0x9A43, //CJK UNIFIED IDEOGRAPH - 0xC55A: 0x9A40, //CJK UNIFIED IDEOGRAPH - 0xC55B: 0x9A3E, //CJK UNIFIED IDEOGRAPH - 0xC55C: 0x9ACF, //CJK UNIFIED IDEOGRAPH - 0xC55D: 0x9B54, //CJK UNIFIED IDEOGRAPH - 0xC55E: 0x9B51, //CJK UNIFIED IDEOGRAPH - 0xC55F: 0x9C2D, //CJK UNIFIED IDEOGRAPH - 0xC560: 0x9C25, //CJK UNIFIED IDEOGRAPH - 0xC561: 0x9DAF, //CJK UNIFIED IDEOGRAPH - 0xC562: 0x9DB4, //CJK UNIFIED IDEOGRAPH - 0xC563: 0x9DC2, //CJK UNIFIED IDEOGRAPH - 0xC564: 0x9DB8, //CJK UNIFIED IDEOGRAPH - 0xC565: 0x9E9D, //CJK UNIFIED IDEOGRAPH - 0xC566: 0x9EEF, //CJK UNIFIED IDEOGRAPH - 0xC567: 0x9F19, //CJK UNIFIED IDEOGRAPH - 0xC568: 0x9F5C, //CJK UNIFIED IDEOGRAPH - 0xC569: 0x9F66, //CJK UNIFIED IDEOGRAPH - 0xC56A: 0x9F67, //CJK UNIFIED IDEOGRAPH - 0xC56B: 0x513C, //CJK UNIFIED IDEOGRAPH - 0xC56C: 0x513B, //CJK UNIFIED IDEOGRAPH - 0xC56D: 0x56C8, //CJK UNIFIED IDEOGRAPH - 0xC56E: 0x56CA, //CJK UNIFIED IDEOGRAPH - 0xC56F: 0x56C9, //CJK UNIFIED IDEOGRAPH - 0xC570: 0x5B7F, //CJK UNIFIED IDEOGRAPH - 0xC571: 0x5DD4, //CJK UNIFIED IDEOGRAPH - 0xC572: 0x5DD2, //CJK UNIFIED IDEOGRAPH - 0xC573: 0x5F4E, //CJK UNIFIED IDEOGRAPH - 0xC574: 0x61FF, //CJK UNIFIED IDEOGRAPH - 0xC575: 0x6524, //CJK UNIFIED IDEOGRAPH - 0xC576: 0x6B0A, //CJK UNIFIED IDEOGRAPH - 0xC577: 0x6B61, //CJK UNIFIED IDEOGRAPH - 0xC578: 0x7051, //CJK UNIFIED IDEOGRAPH - 0xC579: 0x7058, //CJK UNIFIED IDEOGRAPH - 0xC57A: 0x7380, //CJK UNIFIED IDEOGRAPH - 0xC57B: 0x74E4, //CJK UNIFIED IDEOGRAPH - 0xC57C: 0x758A, //CJK UNIFIED IDEOGRAPH - 0xC57D: 0x766E, //CJK UNIFIED IDEOGRAPH - 0xC57E: 0x766C, //CJK UNIFIED IDEOGRAPH - 0xC5A1: 0x79B3, //CJK UNIFIED IDEOGRAPH - 0xC5A2: 0x7C60, //CJK UNIFIED IDEOGRAPH - 0xC5A3: 0x7C5F, //CJK UNIFIED IDEOGRAPH - 0xC5A4: 0x807E, //CJK UNIFIED IDEOGRAPH - 0xC5A5: 0x807D, //CJK UNIFIED IDEOGRAPH - 0xC5A6: 0x81DF, //CJK UNIFIED IDEOGRAPH - 0xC5A7: 0x8972, //CJK UNIFIED IDEOGRAPH - 0xC5A8: 0x896F, //CJK UNIFIED IDEOGRAPH - 0xC5A9: 0x89FC, //CJK UNIFIED IDEOGRAPH - 0xC5AA: 0x8B80, //CJK UNIFIED IDEOGRAPH - 0xC5AB: 0x8D16, //CJK UNIFIED IDEOGRAPH - 0xC5AC: 0x8D17, //CJK UNIFIED IDEOGRAPH - 0xC5AD: 0x8E91, //CJK UNIFIED IDEOGRAPH - 0xC5AE: 0x8E93, //CJK UNIFIED IDEOGRAPH - 0xC5AF: 0x8F61, //CJK UNIFIED IDEOGRAPH - 0xC5B0: 0x9148, //CJK UNIFIED IDEOGRAPH - 0xC5B1: 0x9444, //CJK UNIFIED IDEOGRAPH - 0xC5B2: 0x9451, //CJK UNIFIED IDEOGRAPH - 0xC5B3: 0x9452, //CJK UNIFIED IDEOGRAPH - 0xC5B4: 0x973D, //CJK UNIFIED IDEOGRAPH - 0xC5B5: 0x973E, //CJK UNIFIED IDEOGRAPH - 0xC5B6: 0x97C3, //CJK UNIFIED IDEOGRAPH - 0xC5B7: 0x97C1, //CJK UNIFIED IDEOGRAPH - 0xC5B8: 0x986B, //CJK UNIFIED IDEOGRAPH - 0xC5B9: 0x9955, //CJK UNIFIED IDEOGRAPH - 0xC5BA: 0x9A55, //CJK UNIFIED IDEOGRAPH - 0xC5BB: 0x9A4D, //CJK UNIFIED IDEOGRAPH - 0xC5BC: 0x9AD2, //CJK UNIFIED IDEOGRAPH - 0xC5BD: 0x9B1A, //CJK UNIFIED IDEOGRAPH - 0xC5BE: 0x9C49, //CJK UNIFIED IDEOGRAPH - 0xC5BF: 0x9C31, //CJK UNIFIED IDEOGRAPH - 0xC5C0: 0x9C3E, //CJK UNIFIED IDEOGRAPH - 0xC5C1: 0x9C3B, //CJK UNIFIED IDEOGRAPH - 0xC5C2: 0x9DD3, //CJK UNIFIED IDEOGRAPH - 0xC5C3: 0x9DD7, //CJK UNIFIED IDEOGRAPH - 0xC5C4: 0x9F34, //CJK UNIFIED IDEOGRAPH - 0xC5C5: 0x9F6C, //CJK UNIFIED IDEOGRAPH - 0xC5C6: 0x9F6A, //CJK UNIFIED IDEOGRAPH - 0xC5C7: 0x9F94, //CJK UNIFIED IDEOGRAPH - 0xC5C8: 0x56CC, //CJK UNIFIED IDEOGRAPH - 0xC5C9: 0x5DD6, //CJK UNIFIED IDEOGRAPH - 0xC5CA: 0x6200, //CJK UNIFIED IDEOGRAPH - 0xC5CB: 0x6523, //CJK UNIFIED IDEOGRAPH - 0xC5CC: 0x652B, //CJK UNIFIED IDEOGRAPH - 0xC5CD: 0x652A, //CJK UNIFIED IDEOGRAPH - 0xC5CE: 0x66EC, //CJK UNIFIED IDEOGRAPH - 0xC5CF: 0x6B10, //CJK UNIFIED IDEOGRAPH - 0xC5D0: 0x74DA, //CJK UNIFIED IDEOGRAPH - 0xC5D1: 0x7ACA, //CJK UNIFIED IDEOGRAPH - 0xC5D2: 0x7C64, //CJK UNIFIED IDEOGRAPH - 0xC5D3: 0x7C63, //CJK UNIFIED IDEOGRAPH - 0xC5D4: 0x7C65, //CJK UNIFIED IDEOGRAPH - 0xC5D5: 0x7E93, //CJK UNIFIED IDEOGRAPH - 0xC5D6: 0x7E96, //CJK UNIFIED IDEOGRAPH - 0xC5D7: 0x7E94, //CJK UNIFIED IDEOGRAPH - 0xC5D8: 0x81E2, //CJK UNIFIED IDEOGRAPH - 0xC5D9: 0x8638, //CJK UNIFIED IDEOGRAPH - 0xC5DA: 0x863F, //CJK UNIFIED IDEOGRAPH - 0xC5DB: 0x8831, //CJK UNIFIED IDEOGRAPH - 0xC5DC: 0x8B8A, //CJK UNIFIED IDEOGRAPH - 0xC5DD: 0x9090, //CJK UNIFIED IDEOGRAPH - 0xC5DE: 0x908F, //CJK UNIFIED IDEOGRAPH - 0xC5DF: 0x9463, //CJK UNIFIED IDEOGRAPH - 0xC5E0: 0x9460, //CJK UNIFIED IDEOGRAPH - 0xC5E1: 0x9464, //CJK UNIFIED IDEOGRAPH - 0xC5E2: 0x9768, //CJK UNIFIED IDEOGRAPH - 0xC5E3: 0x986F, //CJK UNIFIED IDEOGRAPH - 0xC5E4: 0x995C, //CJK UNIFIED IDEOGRAPH - 0xC5E5: 0x9A5A, //CJK UNIFIED IDEOGRAPH - 0xC5E6: 0x9A5B, //CJK UNIFIED IDEOGRAPH - 0xC5E7: 0x9A57, //CJK UNIFIED IDEOGRAPH - 0xC5E8: 0x9AD3, //CJK UNIFIED IDEOGRAPH - 0xC5E9: 0x9AD4, //CJK UNIFIED IDEOGRAPH - 0xC5EA: 0x9AD1, //CJK UNIFIED IDEOGRAPH - 0xC5EB: 0x9C54, //CJK UNIFIED IDEOGRAPH - 0xC5EC: 0x9C57, //CJK UNIFIED IDEOGRAPH - 0xC5ED: 0x9C56, //CJK UNIFIED IDEOGRAPH - 0xC5EE: 0x9DE5, //CJK UNIFIED IDEOGRAPH - 0xC5EF: 0x9E9F, //CJK UNIFIED IDEOGRAPH - 0xC5F0: 0x9EF4, //CJK UNIFIED IDEOGRAPH - 0xC5F1: 0x56D1, //CJK UNIFIED IDEOGRAPH - 0xC5F2: 0x58E9, //CJK UNIFIED IDEOGRAPH - 0xC5F3: 0x652C, //CJK UNIFIED IDEOGRAPH - 0xC5F4: 0x705E, //CJK UNIFIED IDEOGRAPH - 0xC5F5: 0x7671, //CJK UNIFIED IDEOGRAPH - 0xC5F6: 0x7672, //CJK UNIFIED IDEOGRAPH - 0xC5F7: 0x77D7, //CJK UNIFIED IDEOGRAPH - 0xC5F8: 0x7F50, //CJK UNIFIED IDEOGRAPH - 0xC5F9: 0x7F88, //CJK UNIFIED IDEOGRAPH - 0xC5FA: 0x8836, //CJK UNIFIED IDEOGRAPH - 0xC5FB: 0x8839, //CJK UNIFIED IDEOGRAPH - 0xC5FC: 0x8862, //CJK UNIFIED IDEOGRAPH - 0xC5FD: 0x8B93, //CJK UNIFIED IDEOGRAPH - 0xC5FE: 0x8B92, //CJK UNIFIED IDEOGRAPH - 0xC640: 0x8B96, //CJK UNIFIED IDEOGRAPH - 0xC641: 0x8277, //CJK UNIFIED IDEOGRAPH - 0xC642: 0x8D1B, //CJK UNIFIED IDEOGRAPH - 0xC643: 0x91C0, //CJK UNIFIED IDEOGRAPH - 0xC644: 0x946A, //CJK UNIFIED IDEOGRAPH - 0xC645: 0x9742, //CJK UNIFIED IDEOGRAPH - 0xC646: 0x9748, //CJK UNIFIED IDEOGRAPH - 0xC647: 0x9744, //CJK UNIFIED IDEOGRAPH - 0xC648: 0x97C6, //CJK UNIFIED IDEOGRAPH - 0xC649: 0x9870, //CJK UNIFIED IDEOGRAPH - 0xC64A: 0x9A5F, //CJK UNIFIED IDEOGRAPH - 0xC64B: 0x9B22, //CJK UNIFIED IDEOGRAPH - 0xC64C: 0x9B58, //CJK UNIFIED IDEOGRAPH - 0xC64D: 0x9C5F, //CJK UNIFIED IDEOGRAPH - 0xC64E: 0x9DF9, //CJK UNIFIED IDEOGRAPH - 0xC64F: 0x9DFA, //CJK UNIFIED IDEOGRAPH - 0xC650: 0x9E7C, //CJK UNIFIED IDEOGRAPH - 0xC651: 0x9E7D, //CJK UNIFIED IDEOGRAPH - 0xC652: 0x9F07, //CJK UNIFIED IDEOGRAPH - 0xC653: 0x9F77, //CJK UNIFIED IDEOGRAPH - 0xC654: 0x9F72, //CJK UNIFIED IDEOGRAPH - 0xC655: 0x5EF3, //CJK UNIFIED IDEOGRAPH - 0xC656: 0x6B16, //CJK UNIFIED IDEOGRAPH - 0xC657: 0x7063, //CJK UNIFIED IDEOGRAPH - 0xC658: 0x7C6C, //CJK UNIFIED IDEOGRAPH - 0xC659: 0x7C6E, //CJK UNIFIED IDEOGRAPH - 0xC65A: 0x883B, //CJK UNIFIED IDEOGRAPH - 0xC65B: 0x89C0, //CJK UNIFIED IDEOGRAPH - 0xC65C: 0x8EA1, //CJK UNIFIED IDEOGRAPH - 0xC65D: 0x91C1, //CJK UNIFIED IDEOGRAPH - 0xC65E: 0x9472, //CJK UNIFIED IDEOGRAPH - 0xC65F: 0x9470, //CJK UNIFIED IDEOGRAPH - 0xC660: 0x9871, //CJK UNIFIED IDEOGRAPH - 0xC661: 0x995E, //CJK UNIFIED IDEOGRAPH - 0xC662: 0x9AD6, //CJK UNIFIED IDEOGRAPH - 0xC663: 0x9B23, //CJK UNIFIED IDEOGRAPH - 0xC664: 0x9ECC, //CJK UNIFIED IDEOGRAPH - 0xC665: 0x7064, //CJK UNIFIED IDEOGRAPH - 0xC666: 0x77DA, //CJK UNIFIED IDEOGRAPH - 0xC667: 0x8B9A, //CJK UNIFIED IDEOGRAPH - 0xC668: 0x9477, //CJK UNIFIED IDEOGRAPH - 0xC669: 0x97C9, //CJK UNIFIED IDEOGRAPH - 0xC66A: 0x9A62, //CJK UNIFIED IDEOGRAPH - 0xC66B: 0x9A65, //CJK UNIFIED IDEOGRAPH - 0xC66C: 0x7E9C, //CJK UNIFIED IDEOGRAPH - 0xC66D: 0x8B9C, //CJK UNIFIED IDEOGRAPH - 0xC66E: 0x8EAA, //CJK UNIFIED IDEOGRAPH - 0xC66F: 0x91C5, //CJK UNIFIED IDEOGRAPH - 0xC670: 0x947D, //CJK UNIFIED IDEOGRAPH - 0xC671: 0x947E, //CJK UNIFIED IDEOGRAPH - 0xC672: 0x947C, //CJK UNIFIED IDEOGRAPH - 0xC673: 0x9C77, //CJK UNIFIED IDEOGRAPH - 0xC674: 0x9C78, //CJK UNIFIED IDEOGRAPH - 0xC675: 0x9EF7, //CJK UNIFIED IDEOGRAPH - 0xC676: 0x8C54, //CJK UNIFIED IDEOGRAPH - 0xC677: 0x947F, //CJK UNIFIED IDEOGRAPH - 0xC678: 0x9E1A, //CJK UNIFIED IDEOGRAPH - 0xC679: 0x7228, //CJK UNIFIED IDEOGRAPH - 0xC67A: 0x9A6A, //CJK UNIFIED IDEOGRAPH - 0xC67B: 0x9B31, //CJK UNIFIED IDEOGRAPH - 0xC67C: 0x9E1B, //CJK UNIFIED IDEOGRAPH - 0xC67D: 0x9E1E, //CJK UNIFIED IDEOGRAPH - 0xC67E: 0x7C72, //CJK UNIFIED IDEOGRAPH - 0xC940: 0x4E42, //CJK UNIFIED IDEOGRAPH - 0xC941: 0x4E5C, //CJK UNIFIED IDEOGRAPH - 0xC942: 0x51F5, //CJK UNIFIED IDEOGRAPH - 0xC943: 0x531A, //CJK UNIFIED IDEOGRAPH - 0xC944: 0x5382, //CJK UNIFIED IDEOGRAPH - 0xC945: 0x4E07, //CJK UNIFIED IDEOGRAPH - 0xC946: 0x4E0C, //CJK UNIFIED IDEOGRAPH - 0xC947: 0x4E47, //CJK UNIFIED IDEOGRAPH - 0xC948: 0x4E8D, //CJK UNIFIED IDEOGRAPH - 0xC949: 0x56D7, //CJK UNIFIED IDEOGRAPH - 0xC94A: 0xFA0C, //CJK COMPATIBILITY IDEOGRAPH - 0xC94B: 0x5C6E, //CJK UNIFIED IDEOGRAPH - 0xC94C: 0x5F73, //CJK UNIFIED IDEOGRAPH - 0xC94D: 0x4E0F, //CJK UNIFIED IDEOGRAPH - 0xC94E: 0x5187, //CJK UNIFIED IDEOGRAPH - 0xC94F: 0x4E0E, //CJK UNIFIED IDEOGRAPH - 0xC950: 0x4E2E, //CJK UNIFIED IDEOGRAPH - 0xC951: 0x4E93, //CJK UNIFIED IDEOGRAPH - 0xC952: 0x4EC2, //CJK UNIFIED IDEOGRAPH - 0xC953: 0x4EC9, //CJK UNIFIED IDEOGRAPH - 0xC954: 0x4EC8, //CJK UNIFIED IDEOGRAPH - 0xC955: 0x5198, //CJK UNIFIED IDEOGRAPH - 0xC956: 0x52FC, //CJK UNIFIED IDEOGRAPH - 0xC957: 0x536C, //CJK UNIFIED IDEOGRAPH - 0xC958: 0x53B9, //CJK UNIFIED IDEOGRAPH - 0xC959: 0x5720, //CJK UNIFIED IDEOGRAPH - 0xC95A: 0x5903, //CJK UNIFIED IDEOGRAPH - 0xC95B: 0x592C, //CJK UNIFIED IDEOGRAPH - 0xC95C: 0x5C10, //CJK UNIFIED IDEOGRAPH - 0xC95D: 0x5DFF, //CJK UNIFIED IDEOGRAPH - 0xC95E: 0x65E1, //CJK UNIFIED IDEOGRAPH - 0xC95F: 0x6BB3, //CJK UNIFIED IDEOGRAPH - 0xC960: 0x6BCC, //CJK UNIFIED IDEOGRAPH - 0xC961: 0x6C14, //CJK UNIFIED IDEOGRAPH - 0xC962: 0x723F, //CJK UNIFIED IDEOGRAPH - 0xC963: 0x4E31, //CJK UNIFIED IDEOGRAPH - 0xC964: 0x4E3C, //CJK UNIFIED IDEOGRAPH - 0xC965: 0x4EE8, //CJK UNIFIED IDEOGRAPH - 0xC966: 0x4EDC, //CJK UNIFIED IDEOGRAPH - 0xC967: 0x4EE9, //CJK UNIFIED IDEOGRAPH - 0xC968: 0x4EE1, //CJK UNIFIED IDEOGRAPH - 0xC969: 0x4EDD, //CJK UNIFIED IDEOGRAPH - 0xC96A: 0x4EDA, //CJK UNIFIED IDEOGRAPH - 0xC96B: 0x520C, //CJK UNIFIED IDEOGRAPH - 0xC96C: 0x531C, //CJK UNIFIED IDEOGRAPH - 0xC96D: 0x534C, //CJK UNIFIED IDEOGRAPH - 0xC96E: 0x5722, //CJK UNIFIED IDEOGRAPH - 0xC96F: 0x5723, //CJK UNIFIED IDEOGRAPH - 0xC970: 0x5917, //CJK UNIFIED IDEOGRAPH - 0xC971: 0x592F, //CJK UNIFIED IDEOGRAPH - 0xC972: 0x5B81, //CJK UNIFIED IDEOGRAPH - 0xC973: 0x5B84, //CJK UNIFIED IDEOGRAPH - 0xC974: 0x5C12, //CJK UNIFIED IDEOGRAPH - 0xC975: 0x5C3B, //CJK UNIFIED IDEOGRAPH - 0xC976: 0x5C74, //CJK UNIFIED IDEOGRAPH - 0xC977: 0x5C73, //CJK UNIFIED IDEOGRAPH - 0xC978: 0x5E04, //CJK UNIFIED IDEOGRAPH - 0xC979: 0x5E80, //CJK UNIFIED IDEOGRAPH - 0xC97A: 0x5E82, //CJK UNIFIED IDEOGRAPH - 0xC97B: 0x5FC9, //CJK UNIFIED IDEOGRAPH - 0xC97C: 0x6209, //CJK UNIFIED IDEOGRAPH - 0xC97D: 0x6250, //CJK UNIFIED IDEOGRAPH - 0xC97E: 0x6C15, //CJK UNIFIED IDEOGRAPH - 0xC9A1: 0x6C36, //CJK UNIFIED IDEOGRAPH - 0xC9A2: 0x6C43, //CJK UNIFIED IDEOGRAPH - 0xC9A3: 0x6C3F, //CJK UNIFIED IDEOGRAPH - 0xC9A4: 0x6C3B, //CJK UNIFIED IDEOGRAPH - 0xC9A5: 0x72AE, //CJK UNIFIED IDEOGRAPH - 0xC9A6: 0x72B0, //CJK UNIFIED IDEOGRAPH - 0xC9A7: 0x738A, //CJK UNIFIED IDEOGRAPH - 0xC9A8: 0x79B8, //CJK UNIFIED IDEOGRAPH - 0xC9A9: 0x808A, //CJK UNIFIED IDEOGRAPH - 0xC9AA: 0x961E, //CJK UNIFIED IDEOGRAPH - 0xC9AB: 0x4F0E, //CJK UNIFIED IDEOGRAPH - 0xC9AC: 0x4F18, //CJK UNIFIED IDEOGRAPH - 0xC9AD: 0x4F2C, //CJK UNIFIED IDEOGRAPH - 0xC9AE: 0x4EF5, //CJK UNIFIED IDEOGRAPH - 0xC9AF: 0x4F14, //CJK UNIFIED IDEOGRAPH - 0xC9B0: 0x4EF1, //CJK UNIFIED IDEOGRAPH - 0xC9B1: 0x4F00, //CJK UNIFIED IDEOGRAPH - 0xC9B2: 0x4EF7, //CJK UNIFIED IDEOGRAPH - 0xC9B3: 0x4F08, //CJK UNIFIED IDEOGRAPH - 0xC9B4: 0x4F1D, //CJK UNIFIED IDEOGRAPH - 0xC9B5: 0x4F02, //CJK UNIFIED IDEOGRAPH - 0xC9B6: 0x4F05, //CJK UNIFIED IDEOGRAPH - 0xC9B7: 0x4F22, //CJK UNIFIED IDEOGRAPH - 0xC9B8: 0x4F13, //CJK UNIFIED IDEOGRAPH - 0xC9B9: 0x4F04, //CJK UNIFIED IDEOGRAPH - 0xC9BA: 0x4EF4, //CJK UNIFIED IDEOGRAPH - 0xC9BB: 0x4F12, //CJK UNIFIED IDEOGRAPH - 0xC9BC: 0x51B1, //CJK UNIFIED IDEOGRAPH - 0xC9BD: 0x5213, //CJK UNIFIED IDEOGRAPH - 0xC9BE: 0x5209, //CJK UNIFIED IDEOGRAPH - 0xC9BF: 0x5210, //CJK UNIFIED IDEOGRAPH - 0xC9C0: 0x52A6, //CJK UNIFIED IDEOGRAPH - 0xC9C1: 0x5322, //CJK UNIFIED IDEOGRAPH - 0xC9C2: 0x531F, //CJK UNIFIED IDEOGRAPH - 0xC9C3: 0x534D, //CJK UNIFIED IDEOGRAPH - 0xC9C4: 0x538A, //CJK UNIFIED IDEOGRAPH - 0xC9C5: 0x5407, //CJK UNIFIED IDEOGRAPH - 0xC9C6: 0x56E1, //CJK UNIFIED IDEOGRAPH - 0xC9C7: 0x56DF, //CJK UNIFIED IDEOGRAPH - 0xC9C8: 0x572E, //CJK UNIFIED IDEOGRAPH - 0xC9C9: 0x572A, //CJK UNIFIED IDEOGRAPH - 0xC9CA: 0x5734, //CJK UNIFIED IDEOGRAPH - 0xC9CB: 0x593C, //CJK UNIFIED IDEOGRAPH - 0xC9CC: 0x5980, //CJK UNIFIED IDEOGRAPH - 0xC9CD: 0x597C, //CJK UNIFIED IDEOGRAPH - 0xC9CE: 0x5985, //CJK UNIFIED IDEOGRAPH - 0xC9CF: 0x597B, //CJK UNIFIED IDEOGRAPH - 0xC9D0: 0x597E, //CJK UNIFIED IDEOGRAPH - 0xC9D1: 0x5977, //CJK UNIFIED IDEOGRAPH - 0xC9D2: 0x597F, //CJK UNIFIED IDEOGRAPH - 0xC9D3: 0x5B56, //CJK UNIFIED IDEOGRAPH - 0xC9D4: 0x5C15, //CJK UNIFIED IDEOGRAPH - 0xC9D5: 0x5C25, //CJK UNIFIED IDEOGRAPH - 0xC9D6: 0x5C7C, //CJK UNIFIED IDEOGRAPH - 0xC9D7: 0x5C7A, //CJK UNIFIED IDEOGRAPH - 0xC9D8: 0x5C7B, //CJK UNIFIED IDEOGRAPH - 0xC9D9: 0x5C7E, //CJK UNIFIED IDEOGRAPH - 0xC9DA: 0x5DDF, //CJK UNIFIED IDEOGRAPH - 0xC9DB: 0x5E75, //CJK UNIFIED IDEOGRAPH - 0xC9DC: 0x5E84, //CJK UNIFIED IDEOGRAPH - 0xC9DD: 0x5F02, //CJK UNIFIED IDEOGRAPH - 0xC9DE: 0x5F1A, //CJK UNIFIED IDEOGRAPH - 0xC9DF: 0x5F74, //CJK UNIFIED IDEOGRAPH - 0xC9E0: 0x5FD5, //CJK UNIFIED IDEOGRAPH - 0xC9E1: 0x5FD4, //CJK UNIFIED IDEOGRAPH - 0xC9E2: 0x5FCF, //CJK UNIFIED IDEOGRAPH - 0xC9E3: 0x625C, //CJK UNIFIED IDEOGRAPH - 0xC9E4: 0x625E, //CJK UNIFIED IDEOGRAPH - 0xC9E5: 0x6264, //CJK UNIFIED IDEOGRAPH - 0xC9E6: 0x6261, //CJK UNIFIED IDEOGRAPH - 0xC9E7: 0x6266, //CJK UNIFIED IDEOGRAPH - 0xC9E8: 0x6262, //CJK UNIFIED IDEOGRAPH - 0xC9E9: 0x6259, //CJK UNIFIED IDEOGRAPH - 0xC9EA: 0x6260, //CJK UNIFIED IDEOGRAPH - 0xC9EB: 0x625A, //CJK UNIFIED IDEOGRAPH - 0xC9EC: 0x6265, //CJK UNIFIED IDEOGRAPH - 0xC9ED: 0x65EF, //CJK UNIFIED IDEOGRAPH - 0xC9EE: 0x65EE, //CJK UNIFIED IDEOGRAPH - 0xC9EF: 0x673E, //CJK UNIFIED IDEOGRAPH - 0xC9F0: 0x6739, //CJK UNIFIED IDEOGRAPH - 0xC9F1: 0x6738, //CJK UNIFIED IDEOGRAPH - 0xC9F2: 0x673B, //CJK UNIFIED IDEOGRAPH - 0xC9F3: 0x673A, //CJK UNIFIED IDEOGRAPH - 0xC9F4: 0x673F, //CJK UNIFIED IDEOGRAPH - 0xC9F5: 0x673C, //CJK UNIFIED IDEOGRAPH - 0xC9F6: 0x6733, //CJK UNIFIED IDEOGRAPH - 0xC9F7: 0x6C18, //CJK UNIFIED IDEOGRAPH - 0xC9F8: 0x6C46, //CJK UNIFIED IDEOGRAPH - 0xC9F9: 0x6C52, //CJK UNIFIED IDEOGRAPH - 0xC9FA: 0x6C5C, //CJK UNIFIED IDEOGRAPH - 0xC9FB: 0x6C4F, //CJK UNIFIED IDEOGRAPH - 0xC9FC: 0x6C4A, //CJK UNIFIED IDEOGRAPH - 0xC9FD: 0x6C54, //CJK UNIFIED IDEOGRAPH - 0xC9FE: 0x6C4B, //CJK UNIFIED IDEOGRAPH - 0xCA40: 0x6C4C, //CJK UNIFIED IDEOGRAPH - 0xCA41: 0x7071, //CJK UNIFIED IDEOGRAPH - 0xCA42: 0x725E, //CJK UNIFIED IDEOGRAPH - 0xCA43: 0x72B4, //CJK UNIFIED IDEOGRAPH - 0xCA44: 0x72B5, //CJK UNIFIED IDEOGRAPH - 0xCA45: 0x738E, //CJK UNIFIED IDEOGRAPH - 0xCA46: 0x752A, //CJK UNIFIED IDEOGRAPH - 0xCA47: 0x767F, //CJK UNIFIED IDEOGRAPH - 0xCA48: 0x7A75, //CJK UNIFIED IDEOGRAPH - 0xCA49: 0x7F51, //CJK UNIFIED IDEOGRAPH - 0xCA4A: 0x8278, //CJK UNIFIED IDEOGRAPH - 0xCA4B: 0x827C, //CJK UNIFIED IDEOGRAPH - 0xCA4C: 0x8280, //CJK UNIFIED IDEOGRAPH - 0xCA4D: 0x827D, //CJK UNIFIED IDEOGRAPH - 0xCA4E: 0x827F, //CJK UNIFIED IDEOGRAPH - 0xCA4F: 0x864D, //CJK UNIFIED IDEOGRAPH - 0xCA50: 0x897E, //CJK UNIFIED IDEOGRAPH - 0xCA51: 0x9099, //CJK UNIFIED IDEOGRAPH - 0xCA52: 0x9097, //CJK UNIFIED IDEOGRAPH - 0xCA53: 0x9098, //CJK UNIFIED IDEOGRAPH - 0xCA54: 0x909B, //CJK UNIFIED IDEOGRAPH - 0xCA55: 0x9094, //CJK UNIFIED IDEOGRAPH - 0xCA56: 0x9622, //CJK UNIFIED IDEOGRAPH - 0xCA57: 0x9624, //CJK UNIFIED IDEOGRAPH - 0xCA58: 0x9620, //CJK UNIFIED IDEOGRAPH - 0xCA59: 0x9623, //CJK UNIFIED IDEOGRAPH - 0xCA5A: 0x4F56, //CJK UNIFIED IDEOGRAPH - 0xCA5B: 0x4F3B, //CJK UNIFIED IDEOGRAPH - 0xCA5C: 0x4F62, //CJK UNIFIED IDEOGRAPH - 0xCA5D: 0x4F49, //CJK UNIFIED IDEOGRAPH - 0xCA5E: 0x4F53, //CJK UNIFIED IDEOGRAPH - 0xCA5F: 0x4F64, //CJK UNIFIED IDEOGRAPH - 0xCA60: 0x4F3E, //CJK UNIFIED IDEOGRAPH - 0xCA61: 0x4F67, //CJK UNIFIED IDEOGRAPH - 0xCA62: 0x4F52, //CJK UNIFIED IDEOGRAPH - 0xCA63: 0x4F5F, //CJK UNIFIED IDEOGRAPH - 0xCA64: 0x4F41, //CJK UNIFIED IDEOGRAPH - 0xCA65: 0x4F58, //CJK UNIFIED IDEOGRAPH - 0xCA66: 0x4F2D, //CJK UNIFIED IDEOGRAPH - 0xCA67: 0x4F33, //CJK UNIFIED IDEOGRAPH - 0xCA68: 0x4F3F, //CJK UNIFIED IDEOGRAPH - 0xCA69: 0x4F61, //CJK UNIFIED IDEOGRAPH - 0xCA6A: 0x518F, //CJK UNIFIED IDEOGRAPH - 0xCA6B: 0x51B9, //CJK UNIFIED IDEOGRAPH - 0xCA6C: 0x521C, //CJK UNIFIED IDEOGRAPH - 0xCA6D: 0x521E, //CJK UNIFIED IDEOGRAPH - 0xCA6E: 0x5221, //CJK UNIFIED IDEOGRAPH - 0xCA6F: 0x52AD, //CJK UNIFIED IDEOGRAPH - 0xCA70: 0x52AE, //CJK UNIFIED IDEOGRAPH - 0xCA71: 0x5309, //CJK UNIFIED IDEOGRAPH - 0xCA72: 0x5363, //CJK UNIFIED IDEOGRAPH - 0xCA73: 0x5372, //CJK UNIFIED IDEOGRAPH - 0xCA74: 0x538E, //CJK UNIFIED IDEOGRAPH - 0xCA75: 0x538F, //CJK UNIFIED IDEOGRAPH - 0xCA76: 0x5430, //CJK UNIFIED IDEOGRAPH - 0xCA77: 0x5437, //CJK UNIFIED IDEOGRAPH - 0xCA78: 0x542A, //CJK UNIFIED IDEOGRAPH - 0xCA79: 0x5454, //CJK UNIFIED IDEOGRAPH - 0xCA7A: 0x5445, //CJK UNIFIED IDEOGRAPH - 0xCA7B: 0x5419, //CJK UNIFIED IDEOGRAPH - 0xCA7C: 0x541C, //CJK UNIFIED IDEOGRAPH - 0xCA7D: 0x5425, //CJK UNIFIED IDEOGRAPH - 0xCA7E: 0x5418, //CJK UNIFIED IDEOGRAPH - 0xCAA1: 0x543D, //CJK UNIFIED IDEOGRAPH - 0xCAA2: 0x544F, //CJK UNIFIED IDEOGRAPH - 0xCAA3: 0x5441, //CJK UNIFIED IDEOGRAPH - 0xCAA4: 0x5428, //CJK UNIFIED IDEOGRAPH - 0xCAA5: 0x5424, //CJK UNIFIED IDEOGRAPH - 0xCAA6: 0x5447, //CJK UNIFIED IDEOGRAPH - 0xCAA7: 0x56EE, //CJK UNIFIED IDEOGRAPH - 0xCAA8: 0x56E7, //CJK UNIFIED IDEOGRAPH - 0xCAA9: 0x56E5, //CJK UNIFIED IDEOGRAPH - 0xCAAA: 0x5741, //CJK UNIFIED IDEOGRAPH - 0xCAAB: 0x5745, //CJK UNIFIED IDEOGRAPH - 0xCAAC: 0x574C, //CJK UNIFIED IDEOGRAPH - 0xCAAD: 0x5749, //CJK UNIFIED IDEOGRAPH - 0xCAAE: 0x574B, //CJK UNIFIED IDEOGRAPH - 0xCAAF: 0x5752, //CJK UNIFIED IDEOGRAPH - 0xCAB0: 0x5906, //CJK UNIFIED IDEOGRAPH - 0xCAB1: 0x5940, //CJK UNIFIED IDEOGRAPH - 0xCAB2: 0x59A6, //CJK UNIFIED IDEOGRAPH - 0xCAB3: 0x5998, //CJK UNIFIED IDEOGRAPH - 0xCAB4: 0x59A0, //CJK UNIFIED IDEOGRAPH - 0xCAB5: 0x5997, //CJK UNIFIED IDEOGRAPH - 0xCAB6: 0x598E, //CJK UNIFIED IDEOGRAPH - 0xCAB7: 0x59A2, //CJK UNIFIED IDEOGRAPH - 0xCAB8: 0x5990, //CJK UNIFIED IDEOGRAPH - 0xCAB9: 0x598F, //CJK UNIFIED IDEOGRAPH - 0xCABA: 0x59A7, //CJK UNIFIED IDEOGRAPH - 0xCABB: 0x59A1, //CJK UNIFIED IDEOGRAPH - 0xCABC: 0x5B8E, //CJK UNIFIED IDEOGRAPH - 0xCABD: 0x5B92, //CJK UNIFIED IDEOGRAPH - 0xCABE: 0x5C28, //CJK UNIFIED IDEOGRAPH - 0xCABF: 0x5C2A, //CJK UNIFIED IDEOGRAPH - 0xCAC0: 0x5C8D, //CJK UNIFIED IDEOGRAPH - 0xCAC1: 0x5C8F, //CJK UNIFIED IDEOGRAPH - 0xCAC2: 0x5C88, //CJK UNIFIED IDEOGRAPH - 0xCAC3: 0x5C8B, //CJK UNIFIED IDEOGRAPH - 0xCAC4: 0x5C89, //CJK UNIFIED IDEOGRAPH - 0xCAC5: 0x5C92, //CJK UNIFIED IDEOGRAPH - 0xCAC6: 0x5C8A, //CJK UNIFIED IDEOGRAPH - 0xCAC7: 0x5C86, //CJK UNIFIED IDEOGRAPH - 0xCAC8: 0x5C93, //CJK UNIFIED IDEOGRAPH - 0xCAC9: 0x5C95, //CJK UNIFIED IDEOGRAPH - 0xCACA: 0x5DE0, //CJK UNIFIED IDEOGRAPH - 0xCACB: 0x5E0A, //CJK UNIFIED IDEOGRAPH - 0xCACC: 0x5E0E, //CJK UNIFIED IDEOGRAPH - 0xCACD: 0x5E8B, //CJK UNIFIED IDEOGRAPH - 0xCACE: 0x5E89, //CJK UNIFIED IDEOGRAPH - 0xCACF: 0x5E8C, //CJK UNIFIED IDEOGRAPH - 0xCAD0: 0x5E88, //CJK UNIFIED IDEOGRAPH - 0xCAD1: 0x5E8D, //CJK UNIFIED IDEOGRAPH - 0xCAD2: 0x5F05, //CJK UNIFIED IDEOGRAPH - 0xCAD3: 0x5F1D, //CJK UNIFIED IDEOGRAPH - 0xCAD4: 0x5F78, //CJK UNIFIED IDEOGRAPH - 0xCAD5: 0x5F76, //CJK UNIFIED IDEOGRAPH - 0xCAD6: 0x5FD2, //CJK UNIFIED IDEOGRAPH - 0xCAD7: 0x5FD1, //CJK UNIFIED IDEOGRAPH - 0xCAD8: 0x5FD0, //CJK UNIFIED IDEOGRAPH - 0xCAD9: 0x5FED, //CJK UNIFIED IDEOGRAPH - 0xCADA: 0x5FE8, //CJK UNIFIED IDEOGRAPH - 0xCADB: 0x5FEE, //CJK UNIFIED IDEOGRAPH - 0xCADC: 0x5FF3, //CJK UNIFIED IDEOGRAPH - 0xCADD: 0x5FE1, //CJK UNIFIED IDEOGRAPH - 0xCADE: 0x5FE4, //CJK UNIFIED IDEOGRAPH - 0xCADF: 0x5FE3, //CJK UNIFIED IDEOGRAPH - 0xCAE0: 0x5FFA, //CJK UNIFIED IDEOGRAPH - 0xCAE1: 0x5FEF, //CJK UNIFIED IDEOGRAPH - 0xCAE2: 0x5FF7, //CJK UNIFIED IDEOGRAPH - 0xCAE3: 0x5FFB, //CJK UNIFIED IDEOGRAPH - 0xCAE4: 0x6000, //CJK UNIFIED IDEOGRAPH - 0xCAE5: 0x5FF4, //CJK UNIFIED IDEOGRAPH - 0xCAE6: 0x623A, //CJK UNIFIED IDEOGRAPH - 0xCAE7: 0x6283, //CJK UNIFIED IDEOGRAPH - 0xCAE8: 0x628C, //CJK UNIFIED IDEOGRAPH - 0xCAE9: 0x628E, //CJK UNIFIED IDEOGRAPH - 0xCAEA: 0x628F, //CJK UNIFIED IDEOGRAPH - 0xCAEB: 0x6294, //CJK UNIFIED IDEOGRAPH - 0xCAEC: 0x6287, //CJK UNIFIED IDEOGRAPH - 0xCAED: 0x6271, //CJK UNIFIED IDEOGRAPH - 0xCAEE: 0x627B, //CJK UNIFIED IDEOGRAPH - 0xCAEF: 0x627A, //CJK UNIFIED IDEOGRAPH - 0xCAF0: 0x6270, //CJK UNIFIED IDEOGRAPH - 0xCAF1: 0x6281, //CJK UNIFIED IDEOGRAPH - 0xCAF2: 0x6288, //CJK UNIFIED IDEOGRAPH - 0xCAF3: 0x6277, //CJK UNIFIED IDEOGRAPH - 0xCAF4: 0x627D, //CJK UNIFIED IDEOGRAPH - 0xCAF5: 0x6272, //CJK UNIFIED IDEOGRAPH - 0xCAF6: 0x6274, //CJK UNIFIED IDEOGRAPH - 0xCAF7: 0x6537, //CJK UNIFIED IDEOGRAPH - 0xCAF8: 0x65F0, //CJK UNIFIED IDEOGRAPH - 0xCAF9: 0x65F4, //CJK UNIFIED IDEOGRAPH - 0xCAFA: 0x65F3, //CJK UNIFIED IDEOGRAPH - 0xCAFB: 0x65F2, //CJK UNIFIED IDEOGRAPH - 0xCAFC: 0x65F5, //CJK UNIFIED IDEOGRAPH - 0xCAFD: 0x6745, //CJK UNIFIED IDEOGRAPH - 0xCAFE: 0x6747, //CJK UNIFIED IDEOGRAPH - 0xCB40: 0x6759, //CJK UNIFIED IDEOGRAPH - 0xCB41: 0x6755, //CJK UNIFIED IDEOGRAPH - 0xCB42: 0x674C, //CJK UNIFIED IDEOGRAPH - 0xCB43: 0x6748, //CJK UNIFIED IDEOGRAPH - 0xCB44: 0x675D, //CJK UNIFIED IDEOGRAPH - 0xCB45: 0x674D, //CJK UNIFIED IDEOGRAPH - 0xCB46: 0x675A, //CJK UNIFIED IDEOGRAPH - 0xCB47: 0x674B, //CJK UNIFIED IDEOGRAPH - 0xCB48: 0x6BD0, //CJK UNIFIED IDEOGRAPH - 0xCB49: 0x6C19, //CJK UNIFIED IDEOGRAPH - 0xCB4A: 0x6C1A, //CJK UNIFIED IDEOGRAPH - 0xCB4B: 0x6C78, //CJK UNIFIED IDEOGRAPH - 0xCB4C: 0x6C67, //CJK UNIFIED IDEOGRAPH - 0xCB4D: 0x6C6B, //CJK UNIFIED IDEOGRAPH - 0xCB4E: 0x6C84, //CJK UNIFIED IDEOGRAPH - 0xCB4F: 0x6C8B, //CJK UNIFIED IDEOGRAPH - 0xCB50: 0x6C8F, //CJK UNIFIED IDEOGRAPH - 0xCB51: 0x6C71, //CJK UNIFIED IDEOGRAPH - 0xCB52: 0x6C6F, //CJK UNIFIED IDEOGRAPH - 0xCB53: 0x6C69, //CJK UNIFIED IDEOGRAPH - 0xCB54: 0x6C9A, //CJK UNIFIED IDEOGRAPH - 0xCB55: 0x6C6D, //CJK UNIFIED IDEOGRAPH - 0xCB56: 0x6C87, //CJK UNIFIED IDEOGRAPH - 0xCB57: 0x6C95, //CJK UNIFIED IDEOGRAPH - 0xCB58: 0x6C9C, //CJK UNIFIED IDEOGRAPH - 0xCB59: 0x6C66, //CJK UNIFIED IDEOGRAPH - 0xCB5A: 0x6C73, //CJK UNIFIED IDEOGRAPH - 0xCB5B: 0x6C65, //CJK UNIFIED IDEOGRAPH - 0xCB5C: 0x6C7B, //CJK UNIFIED IDEOGRAPH - 0xCB5D: 0x6C8E, //CJK UNIFIED IDEOGRAPH - 0xCB5E: 0x7074, //CJK UNIFIED IDEOGRAPH - 0xCB5F: 0x707A, //CJK UNIFIED IDEOGRAPH - 0xCB60: 0x7263, //CJK UNIFIED IDEOGRAPH - 0xCB61: 0x72BF, //CJK UNIFIED IDEOGRAPH - 0xCB62: 0x72BD, //CJK UNIFIED IDEOGRAPH - 0xCB63: 0x72C3, //CJK UNIFIED IDEOGRAPH - 0xCB64: 0x72C6, //CJK UNIFIED IDEOGRAPH - 0xCB65: 0x72C1, //CJK UNIFIED IDEOGRAPH - 0xCB66: 0x72BA, //CJK UNIFIED IDEOGRAPH - 0xCB67: 0x72C5, //CJK UNIFIED IDEOGRAPH - 0xCB68: 0x7395, //CJK UNIFIED IDEOGRAPH - 0xCB69: 0x7397, //CJK UNIFIED IDEOGRAPH - 0xCB6A: 0x7393, //CJK UNIFIED IDEOGRAPH - 0xCB6B: 0x7394, //CJK UNIFIED IDEOGRAPH - 0xCB6C: 0x7392, //CJK UNIFIED IDEOGRAPH - 0xCB6D: 0x753A, //CJK UNIFIED IDEOGRAPH - 0xCB6E: 0x7539, //CJK UNIFIED IDEOGRAPH - 0xCB6F: 0x7594, //CJK UNIFIED IDEOGRAPH - 0xCB70: 0x7595, //CJK UNIFIED IDEOGRAPH - 0xCB71: 0x7681, //CJK UNIFIED IDEOGRAPH - 0xCB72: 0x793D, //CJK UNIFIED IDEOGRAPH - 0xCB73: 0x8034, //CJK UNIFIED IDEOGRAPH - 0xCB74: 0x8095, //CJK UNIFIED IDEOGRAPH - 0xCB75: 0x8099, //CJK UNIFIED IDEOGRAPH - 0xCB76: 0x8090, //CJK UNIFIED IDEOGRAPH - 0xCB77: 0x8092, //CJK UNIFIED IDEOGRAPH - 0xCB78: 0x809C, //CJK UNIFIED IDEOGRAPH - 0xCB79: 0x8290, //CJK UNIFIED IDEOGRAPH - 0xCB7A: 0x828F, //CJK UNIFIED IDEOGRAPH - 0xCB7B: 0x8285, //CJK UNIFIED IDEOGRAPH - 0xCB7C: 0x828E, //CJK UNIFIED IDEOGRAPH - 0xCB7D: 0x8291, //CJK UNIFIED IDEOGRAPH - 0xCB7E: 0x8293, //CJK UNIFIED IDEOGRAPH - 0xCBA1: 0x828A, //CJK UNIFIED IDEOGRAPH - 0xCBA2: 0x8283, //CJK UNIFIED IDEOGRAPH - 0xCBA3: 0x8284, //CJK UNIFIED IDEOGRAPH - 0xCBA4: 0x8C78, //CJK UNIFIED IDEOGRAPH - 0xCBA5: 0x8FC9, //CJK UNIFIED IDEOGRAPH - 0xCBA6: 0x8FBF, //CJK UNIFIED IDEOGRAPH - 0xCBA7: 0x909F, //CJK UNIFIED IDEOGRAPH - 0xCBA8: 0x90A1, //CJK UNIFIED IDEOGRAPH - 0xCBA9: 0x90A5, //CJK UNIFIED IDEOGRAPH - 0xCBAA: 0x909E, //CJK UNIFIED IDEOGRAPH - 0xCBAB: 0x90A7, //CJK UNIFIED IDEOGRAPH - 0xCBAC: 0x90A0, //CJK UNIFIED IDEOGRAPH - 0xCBAD: 0x9630, //CJK UNIFIED IDEOGRAPH - 0xCBAE: 0x9628, //CJK UNIFIED IDEOGRAPH - 0xCBAF: 0x962F, //CJK UNIFIED IDEOGRAPH - 0xCBB0: 0x962D, //CJK UNIFIED IDEOGRAPH - 0xCBB1: 0x4E33, //CJK UNIFIED IDEOGRAPH - 0xCBB2: 0x4F98, //CJK UNIFIED IDEOGRAPH - 0xCBB3: 0x4F7C, //CJK UNIFIED IDEOGRAPH - 0xCBB4: 0x4F85, //CJK UNIFIED IDEOGRAPH - 0xCBB5: 0x4F7D, //CJK UNIFIED IDEOGRAPH - 0xCBB6: 0x4F80, //CJK UNIFIED IDEOGRAPH - 0xCBB7: 0x4F87, //CJK UNIFIED IDEOGRAPH - 0xCBB8: 0x4F76, //CJK UNIFIED IDEOGRAPH - 0xCBB9: 0x4F74, //CJK UNIFIED IDEOGRAPH - 0xCBBA: 0x4F89, //CJK UNIFIED IDEOGRAPH - 0xCBBB: 0x4F84, //CJK UNIFIED IDEOGRAPH - 0xCBBC: 0x4F77, //CJK UNIFIED IDEOGRAPH - 0xCBBD: 0x4F4C, //CJK UNIFIED IDEOGRAPH - 0xCBBE: 0x4F97, //CJK UNIFIED IDEOGRAPH - 0xCBBF: 0x4F6A, //CJK UNIFIED IDEOGRAPH - 0xCBC0: 0x4F9A, //CJK UNIFIED IDEOGRAPH - 0xCBC1: 0x4F79, //CJK UNIFIED IDEOGRAPH - 0xCBC2: 0x4F81, //CJK UNIFIED IDEOGRAPH - 0xCBC3: 0x4F78, //CJK UNIFIED IDEOGRAPH - 0xCBC4: 0x4F90, //CJK UNIFIED IDEOGRAPH - 0xCBC5: 0x4F9C, //CJK UNIFIED IDEOGRAPH - 0xCBC6: 0x4F94, //CJK UNIFIED IDEOGRAPH - 0xCBC7: 0x4F9E, //CJK UNIFIED IDEOGRAPH - 0xCBC8: 0x4F92, //CJK UNIFIED IDEOGRAPH - 0xCBC9: 0x4F82, //CJK UNIFIED IDEOGRAPH - 0xCBCA: 0x4F95, //CJK UNIFIED IDEOGRAPH - 0xCBCB: 0x4F6B, //CJK UNIFIED IDEOGRAPH - 0xCBCC: 0x4F6E, //CJK UNIFIED IDEOGRAPH - 0xCBCD: 0x519E, //CJK UNIFIED IDEOGRAPH - 0xCBCE: 0x51BC, //CJK UNIFIED IDEOGRAPH - 0xCBCF: 0x51BE, //CJK UNIFIED IDEOGRAPH - 0xCBD0: 0x5235, //CJK UNIFIED IDEOGRAPH - 0xCBD1: 0x5232, //CJK UNIFIED IDEOGRAPH - 0xCBD2: 0x5233, //CJK UNIFIED IDEOGRAPH - 0xCBD3: 0x5246, //CJK UNIFIED IDEOGRAPH - 0xCBD4: 0x5231, //CJK UNIFIED IDEOGRAPH - 0xCBD5: 0x52BC, //CJK UNIFIED IDEOGRAPH - 0xCBD6: 0x530A, //CJK UNIFIED IDEOGRAPH - 0xCBD7: 0x530B, //CJK UNIFIED IDEOGRAPH - 0xCBD8: 0x533C, //CJK UNIFIED IDEOGRAPH - 0xCBD9: 0x5392, //CJK UNIFIED IDEOGRAPH - 0xCBDA: 0x5394, //CJK UNIFIED IDEOGRAPH - 0xCBDB: 0x5487, //CJK UNIFIED IDEOGRAPH - 0xCBDC: 0x547F, //CJK UNIFIED IDEOGRAPH - 0xCBDD: 0x5481, //CJK UNIFIED IDEOGRAPH - 0xCBDE: 0x5491, //CJK UNIFIED IDEOGRAPH - 0xCBDF: 0x5482, //CJK UNIFIED IDEOGRAPH - 0xCBE0: 0x5488, //CJK UNIFIED IDEOGRAPH - 0xCBE1: 0x546B, //CJK UNIFIED IDEOGRAPH - 0xCBE2: 0x547A, //CJK UNIFIED IDEOGRAPH - 0xCBE3: 0x547E, //CJK UNIFIED IDEOGRAPH - 0xCBE4: 0x5465, //CJK UNIFIED IDEOGRAPH - 0xCBE5: 0x546C, //CJK UNIFIED IDEOGRAPH - 0xCBE6: 0x5474, //CJK UNIFIED IDEOGRAPH - 0xCBE7: 0x5466, //CJK UNIFIED IDEOGRAPH - 0xCBE8: 0x548D, //CJK UNIFIED IDEOGRAPH - 0xCBE9: 0x546F, //CJK UNIFIED IDEOGRAPH - 0xCBEA: 0x5461, //CJK UNIFIED IDEOGRAPH - 0xCBEB: 0x5460, //CJK UNIFIED IDEOGRAPH - 0xCBEC: 0x5498, //CJK UNIFIED IDEOGRAPH - 0xCBED: 0x5463, //CJK UNIFIED IDEOGRAPH - 0xCBEE: 0x5467, //CJK UNIFIED IDEOGRAPH - 0xCBEF: 0x5464, //CJK UNIFIED IDEOGRAPH - 0xCBF0: 0x56F7, //CJK UNIFIED IDEOGRAPH - 0xCBF1: 0x56F9, //CJK UNIFIED IDEOGRAPH - 0xCBF2: 0x576F, //CJK UNIFIED IDEOGRAPH - 0xCBF3: 0x5772, //CJK UNIFIED IDEOGRAPH - 0xCBF4: 0x576D, //CJK UNIFIED IDEOGRAPH - 0xCBF5: 0x576B, //CJK UNIFIED IDEOGRAPH - 0xCBF6: 0x5771, //CJK UNIFIED IDEOGRAPH - 0xCBF7: 0x5770, //CJK UNIFIED IDEOGRAPH - 0xCBF8: 0x5776, //CJK UNIFIED IDEOGRAPH - 0xCBF9: 0x5780, //CJK UNIFIED IDEOGRAPH - 0xCBFA: 0x5775, //CJK UNIFIED IDEOGRAPH - 0xCBFB: 0x577B, //CJK UNIFIED IDEOGRAPH - 0xCBFC: 0x5773, //CJK UNIFIED IDEOGRAPH - 0xCBFD: 0x5774, //CJK UNIFIED IDEOGRAPH - 0xCBFE: 0x5762, //CJK UNIFIED IDEOGRAPH - 0xCC40: 0x5768, //CJK UNIFIED IDEOGRAPH - 0xCC41: 0x577D, //CJK UNIFIED IDEOGRAPH - 0xCC42: 0x590C, //CJK UNIFIED IDEOGRAPH - 0xCC43: 0x5945, //CJK UNIFIED IDEOGRAPH - 0xCC44: 0x59B5, //CJK UNIFIED IDEOGRAPH - 0xCC45: 0x59BA, //CJK UNIFIED IDEOGRAPH - 0xCC46: 0x59CF, //CJK UNIFIED IDEOGRAPH - 0xCC47: 0x59CE, //CJK UNIFIED IDEOGRAPH - 0xCC48: 0x59B2, //CJK UNIFIED IDEOGRAPH - 0xCC49: 0x59CC, //CJK UNIFIED IDEOGRAPH - 0xCC4A: 0x59C1, //CJK UNIFIED IDEOGRAPH - 0xCC4B: 0x59B6, //CJK UNIFIED IDEOGRAPH - 0xCC4C: 0x59BC, //CJK UNIFIED IDEOGRAPH - 0xCC4D: 0x59C3, //CJK UNIFIED IDEOGRAPH - 0xCC4E: 0x59D6, //CJK UNIFIED IDEOGRAPH - 0xCC4F: 0x59B1, //CJK UNIFIED IDEOGRAPH - 0xCC50: 0x59BD, //CJK UNIFIED IDEOGRAPH - 0xCC51: 0x59C0, //CJK UNIFIED IDEOGRAPH - 0xCC52: 0x59C8, //CJK UNIFIED IDEOGRAPH - 0xCC53: 0x59B4, //CJK UNIFIED IDEOGRAPH - 0xCC54: 0x59C7, //CJK UNIFIED IDEOGRAPH - 0xCC55: 0x5B62, //CJK UNIFIED IDEOGRAPH - 0xCC56: 0x5B65, //CJK UNIFIED IDEOGRAPH - 0xCC57: 0x5B93, //CJK UNIFIED IDEOGRAPH - 0xCC58: 0x5B95, //CJK UNIFIED IDEOGRAPH - 0xCC59: 0x5C44, //CJK UNIFIED IDEOGRAPH - 0xCC5A: 0x5C47, //CJK UNIFIED IDEOGRAPH - 0xCC5B: 0x5CAE, //CJK UNIFIED IDEOGRAPH - 0xCC5C: 0x5CA4, //CJK UNIFIED IDEOGRAPH - 0xCC5D: 0x5CA0, //CJK UNIFIED IDEOGRAPH - 0xCC5E: 0x5CB5, //CJK UNIFIED IDEOGRAPH - 0xCC5F: 0x5CAF, //CJK UNIFIED IDEOGRAPH - 0xCC60: 0x5CA8, //CJK UNIFIED IDEOGRAPH - 0xCC61: 0x5CAC, //CJK UNIFIED IDEOGRAPH - 0xCC62: 0x5C9F, //CJK UNIFIED IDEOGRAPH - 0xCC63: 0x5CA3, //CJK UNIFIED IDEOGRAPH - 0xCC64: 0x5CAD, //CJK UNIFIED IDEOGRAPH - 0xCC65: 0x5CA2, //CJK UNIFIED IDEOGRAPH - 0xCC66: 0x5CAA, //CJK UNIFIED IDEOGRAPH - 0xCC67: 0x5CA7, //CJK UNIFIED IDEOGRAPH - 0xCC68: 0x5C9D, //CJK UNIFIED IDEOGRAPH - 0xCC69: 0x5CA5, //CJK UNIFIED IDEOGRAPH - 0xCC6A: 0x5CB6, //CJK UNIFIED IDEOGRAPH - 0xCC6B: 0x5CB0, //CJK UNIFIED IDEOGRAPH - 0xCC6C: 0x5CA6, //CJK UNIFIED IDEOGRAPH - 0xCC6D: 0x5E17, //CJK UNIFIED IDEOGRAPH - 0xCC6E: 0x5E14, //CJK UNIFIED IDEOGRAPH - 0xCC6F: 0x5E19, //CJK UNIFIED IDEOGRAPH - 0xCC70: 0x5F28, //CJK UNIFIED IDEOGRAPH - 0xCC71: 0x5F22, //CJK UNIFIED IDEOGRAPH - 0xCC72: 0x5F23, //CJK UNIFIED IDEOGRAPH - 0xCC73: 0x5F24, //CJK UNIFIED IDEOGRAPH - 0xCC74: 0x5F54, //CJK UNIFIED IDEOGRAPH - 0xCC75: 0x5F82, //CJK UNIFIED IDEOGRAPH - 0xCC76: 0x5F7E, //CJK UNIFIED IDEOGRAPH - 0xCC77: 0x5F7D, //CJK UNIFIED IDEOGRAPH - 0xCC78: 0x5FDE, //CJK UNIFIED IDEOGRAPH - 0xCC79: 0x5FE5, //CJK UNIFIED IDEOGRAPH - 0xCC7A: 0x602D, //CJK UNIFIED IDEOGRAPH - 0xCC7B: 0x6026, //CJK UNIFIED IDEOGRAPH - 0xCC7C: 0x6019, //CJK UNIFIED IDEOGRAPH - 0xCC7D: 0x6032, //CJK UNIFIED IDEOGRAPH - 0xCC7E: 0x600B, //CJK UNIFIED IDEOGRAPH - 0xCCA1: 0x6034, //CJK UNIFIED IDEOGRAPH - 0xCCA2: 0x600A, //CJK UNIFIED IDEOGRAPH - 0xCCA3: 0x6017, //CJK UNIFIED IDEOGRAPH - 0xCCA4: 0x6033, //CJK UNIFIED IDEOGRAPH - 0xCCA5: 0x601A, //CJK UNIFIED IDEOGRAPH - 0xCCA6: 0x601E, //CJK UNIFIED IDEOGRAPH - 0xCCA7: 0x602C, //CJK UNIFIED IDEOGRAPH - 0xCCA8: 0x6022, //CJK UNIFIED IDEOGRAPH - 0xCCA9: 0x600D, //CJK UNIFIED IDEOGRAPH - 0xCCAA: 0x6010, //CJK UNIFIED IDEOGRAPH - 0xCCAB: 0x602E, //CJK UNIFIED IDEOGRAPH - 0xCCAC: 0x6013, //CJK UNIFIED IDEOGRAPH - 0xCCAD: 0x6011, //CJK UNIFIED IDEOGRAPH - 0xCCAE: 0x600C, //CJK UNIFIED IDEOGRAPH - 0xCCAF: 0x6009, //CJK UNIFIED IDEOGRAPH - 0xCCB0: 0x601C, //CJK UNIFIED IDEOGRAPH - 0xCCB1: 0x6214, //CJK UNIFIED IDEOGRAPH - 0xCCB2: 0x623D, //CJK UNIFIED IDEOGRAPH - 0xCCB3: 0x62AD, //CJK UNIFIED IDEOGRAPH - 0xCCB4: 0x62B4, //CJK UNIFIED IDEOGRAPH - 0xCCB5: 0x62D1, //CJK UNIFIED IDEOGRAPH - 0xCCB6: 0x62BE, //CJK UNIFIED IDEOGRAPH - 0xCCB7: 0x62AA, //CJK UNIFIED IDEOGRAPH - 0xCCB8: 0x62B6, //CJK UNIFIED IDEOGRAPH - 0xCCB9: 0x62CA, //CJK UNIFIED IDEOGRAPH - 0xCCBA: 0x62AE, //CJK UNIFIED IDEOGRAPH - 0xCCBB: 0x62B3, //CJK UNIFIED IDEOGRAPH - 0xCCBC: 0x62AF, //CJK UNIFIED IDEOGRAPH - 0xCCBD: 0x62BB, //CJK UNIFIED IDEOGRAPH - 0xCCBE: 0x62A9, //CJK UNIFIED IDEOGRAPH - 0xCCBF: 0x62B0, //CJK UNIFIED IDEOGRAPH - 0xCCC0: 0x62B8, //CJK UNIFIED IDEOGRAPH - 0xCCC1: 0x653D, //CJK UNIFIED IDEOGRAPH - 0xCCC2: 0x65A8, //CJK UNIFIED IDEOGRAPH - 0xCCC3: 0x65BB, //CJK UNIFIED IDEOGRAPH - 0xCCC4: 0x6609, //CJK UNIFIED IDEOGRAPH - 0xCCC5: 0x65FC, //CJK UNIFIED IDEOGRAPH - 0xCCC6: 0x6604, //CJK UNIFIED IDEOGRAPH - 0xCCC7: 0x6612, //CJK UNIFIED IDEOGRAPH - 0xCCC8: 0x6608, //CJK UNIFIED IDEOGRAPH - 0xCCC9: 0x65FB, //CJK UNIFIED IDEOGRAPH - 0xCCCA: 0x6603, //CJK UNIFIED IDEOGRAPH - 0xCCCB: 0x660B, //CJK UNIFIED IDEOGRAPH - 0xCCCC: 0x660D, //CJK UNIFIED IDEOGRAPH - 0xCCCD: 0x6605, //CJK UNIFIED IDEOGRAPH - 0xCCCE: 0x65FD, //CJK UNIFIED IDEOGRAPH - 0xCCCF: 0x6611, //CJK UNIFIED IDEOGRAPH - 0xCCD0: 0x6610, //CJK UNIFIED IDEOGRAPH - 0xCCD1: 0x66F6, //CJK UNIFIED IDEOGRAPH - 0xCCD2: 0x670A, //CJK UNIFIED IDEOGRAPH - 0xCCD3: 0x6785, //CJK UNIFIED IDEOGRAPH - 0xCCD4: 0x676C, //CJK UNIFIED IDEOGRAPH - 0xCCD5: 0x678E, //CJK UNIFIED IDEOGRAPH - 0xCCD6: 0x6792, //CJK UNIFIED IDEOGRAPH - 0xCCD7: 0x6776, //CJK UNIFIED IDEOGRAPH - 0xCCD8: 0x677B, //CJK UNIFIED IDEOGRAPH - 0xCCD9: 0x6798, //CJK UNIFIED IDEOGRAPH - 0xCCDA: 0x6786, //CJK UNIFIED IDEOGRAPH - 0xCCDB: 0x6784, //CJK UNIFIED IDEOGRAPH - 0xCCDC: 0x6774, //CJK UNIFIED IDEOGRAPH - 0xCCDD: 0x678D, //CJK UNIFIED IDEOGRAPH - 0xCCDE: 0x678C, //CJK UNIFIED IDEOGRAPH - 0xCCDF: 0x677A, //CJK UNIFIED IDEOGRAPH - 0xCCE0: 0x679F, //CJK UNIFIED IDEOGRAPH - 0xCCE1: 0x6791, //CJK UNIFIED IDEOGRAPH - 0xCCE2: 0x6799, //CJK UNIFIED IDEOGRAPH - 0xCCE3: 0x6783, //CJK UNIFIED IDEOGRAPH - 0xCCE4: 0x677D, //CJK UNIFIED IDEOGRAPH - 0xCCE5: 0x6781, //CJK UNIFIED IDEOGRAPH - 0xCCE6: 0x6778, //CJK UNIFIED IDEOGRAPH - 0xCCE7: 0x6779, //CJK UNIFIED IDEOGRAPH - 0xCCE8: 0x6794, //CJK UNIFIED IDEOGRAPH - 0xCCE9: 0x6B25, //CJK UNIFIED IDEOGRAPH - 0xCCEA: 0x6B80, //CJK UNIFIED IDEOGRAPH - 0xCCEB: 0x6B7E, //CJK UNIFIED IDEOGRAPH - 0xCCEC: 0x6BDE, //CJK UNIFIED IDEOGRAPH - 0xCCED: 0x6C1D, //CJK UNIFIED IDEOGRAPH - 0xCCEE: 0x6C93, //CJK UNIFIED IDEOGRAPH - 0xCCEF: 0x6CEC, //CJK UNIFIED IDEOGRAPH - 0xCCF0: 0x6CEB, //CJK UNIFIED IDEOGRAPH - 0xCCF1: 0x6CEE, //CJK UNIFIED IDEOGRAPH - 0xCCF2: 0x6CD9, //CJK UNIFIED IDEOGRAPH - 0xCCF3: 0x6CB6, //CJK UNIFIED IDEOGRAPH - 0xCCF4: 0x6CD4, //CJK UNIFIED IDEOGRAPH - 0xCCF5: 0x6CAD, //CJK UNIFIED IDEOGRAPH - 0xCCF6: 0x6CE7, //CJK UNIFIED IDEOGRAPH - 0xCCF7: 0x6CB7, //CJK UNIFIED IDEOGRAPH - 0xCCF8: 0x6CD0, //CJK UNIFIED IDEOGRAPH - 0xCCF9: 0x6CC2, //CJK UNIFIED IDEOGRAPH - 0xCCFA: 0x6CBA, //CJK UNIFIED IDEOGRAPH - 0xCCFB: 0x6CC3, //CJK UNIFIED IDEOGRAPH - 0xCCFC: 0x6CC6, //CJK UNIFIED IDEOGRAPH - 0xCCFD: 0x6CED, //CJK UNIFIED IDEOGRAPH - 0xCCFE: 0x6CF2, //CJK UNIFIED IDEOGRAPH - 0xCD40: 0x6CD2, //CJK UNIFIED IDEOGRAPH - 0xCD41: 0x6CDD, //CJK UNIFIED IDEOGRAPH - 0xCD42: 0x6CB4, //CJK UNIFIED IDEOGRAPH - 0xCD43: 0x6C8A, //CJK UNIFIED IDEOGRAPH - 0xCD44: 0x6C9D, //CJK UNIFIED IDEOGRAPH - 0xCD45: 0x6C80, //CJK UNIFIED IDEOGRAPH - 0xCD46: 0x6CDE, //CJK UNIFIED IDEOGRAPH - 0xCD47: 0x6CC0, //CJK UNIFIED IDEOGRAPH - 0xCD48: 0x6D30, //CJK UNIFIED IDEOGRAPH - 0xCD49: 0x6CCD, //CJK UNIFIED IDEOGRAPH - 0xCD4A: 0x6CC7, //CJK UNIFIED IDEOGRAPH - 0xCD4B: 0x6CB0, //CJK UNIFIED IDEOGRAPH - 0xCD4C: 0x6CF9, //CJK UNIFIED IDEOGRAPH - 0xCD4D: 0x6CCF, //CJK UNIFIED IDEOGRAPH - 0xCD4E: 0x6CE9, //CJK UNIFIED IDEOGRAPH - 0xCD4F: 0x6CD1, //CJK UNIFIED IDEOGRAPH - 0xCD50: 0x7094, //CJK UNIFIED IDEOGRAPH - 0xCD51: 0x7098, //CJK UNIFIED IDEOGRAPH - 0xCD52: 0x7085, //CJK UNIFIED IDEOGRAPH - 0xCD53: 0x7093, //CJK UNIFIED IDEOGRAPH - 0xCD54: 0x7086, //CJK UNIFIED IDEOGRAPH - 0xCD55: 0x7084, //CJK UNIFIED IDEOGRAPH - 0xCD56: 0x7091, //CJK UNIFIED IDEOGRAPH - 0xCD57: 0x7096, //CJK UNIFIED IDEOGRAPH - 0xCD58: 0x7082, //CJK UNIFIED IDEOGRAPH - 0xCD59: 0x709A, //CJK UNIFIED IDEOGRAPH - 0xCD5A: 0x7083, //CJK UNIFIED IDEOGRAPH - 0xCD5B: 0x726A, //CJK UNIFIED IDEOGRAPH - 0xCD5C: 0x72D6, //CJK UNIFIED IDEOGRAPH - 0xCD5D: 0x72CB, //CJK UNIFIED IDEOGRAPH - 0xCD5E: 0x72D8, //CJK UNIFIED IDEOGRAPH - 0xCD5F: 0x72C9, //CJK UNIFIED IDEOGRAPH - 0xCD60: 0x72DC, //CJK UNIFIED IDEOGRAPH - 0xCD61: 0x72D2, //CJK UNIFIED IDEOGRAPH - 0xCD62: 0x72D4, //CJK UNIFIED IDEOGRAPH - 0xCD63: 0x72DA, //CJK UNIFIED IDEOGRAPH - 0xCD64: 0x72CC, //CJK UNIFIED IDEOGRAPH - 0xCD65: 0x72D1, //CJK UNIFIED IDEOGRAPH - 0xCD66: 0x73A4, //CJK UNIFIED IDEOGRAPH - 0xCD67: 0x73A1, //CJK UNIFIED IDEOGRAPH - 0xCD68: 0x73AD, //CJK UNIFIED IDEOGRAPH - 0xCD69: 0x73A6, //CJK UNIFIED IDEOGRAPH - 0xCD6A: 0x73A2, //CJK UNIFIED IDEOGRAPH - 0xCD6B: 0x73A0, //CJK UNIFIED IDEOGRAPH - 0xCD6C: 0x73AC, //CJK UNIFIED IDEOGRAPH - 0xCD6D: 0x739D, //CJK UNIFIED IDEOGRAPH - 0xCD6E: 0x74DD, //CJK UNIFIED IDEOGRAPH - 0xCD6F: 0x74E8, //CJK UNIFIED IDEOGRAPH - 0xCD70: 0x753F, //CJK UNIFIED IDEOGRAPH - 0xCD71: 0x7540, //CJK UNIFIED IDEOGRAPH - 0xCD72: 0x753E, //CJK UNIFIED IDEOGRAPH - 0xCD73: 0x758C, //CJK UNIFIED IDEOGRAPH - 0xCD74: 0x7598, //CJK UNIFIED IDEOGRAPH - 0xCD75: 0x76AF, //CJK UNIFIED IDEOGRAPH - 0xCD76: 0x76F3, //CJK UNIFIED IDEOGRAPH - 0xCD77: 0x76F1, //CJK UNIFIED IDEOGRAPH - 0xCD78: 0x76F0, //CJK UNIFIED IDEOGRAPH - 0xCD79: 0x76F5, //CJK UNIFIED IDEOGRAPH - 0xCD7A: 0x77F8, //CJK UNIFIED IDEOGRAPH - 0xCD7B: 0x77FC, //CJK UNIFIED IDEOGRAPH - 0xCD7C: 0x77F9, //CJK UNIFIED IDEOGRAPH - 0xCD7D: 0x77FB, //CJK UNIFIED IDEOGRAPH - 0xCD7E: 0x77FA, //CJK UNIFIED IDEOGRAPH - 0xCDA1: 0x77F7, //CJK UNIFIED IDEOGRAPH - 0xCDA2: 0x7942, //CJK UNIFIED IDEOGRAPH - 0xCDA3: 0x793F, //CJK UNIFIED IDEOGRAPH - 0xCDA4: 0x79C5, //CJK UNIFIED IDEOGRAPH - 0xCDA5: 0x7A78, //CJK UNIFIED IDEOGRAPH - 0xCDA6: 0x7A7B, //CJK UNIFIED IDEOGRAPH - 0xCDA7: 0x7AFB, //CJK UNIFIED IDEOGRAPH - 0xCDA8: 0x7C75, //CJK UNIFIED IDEOGRAPH - 0xCDA9: 0x7CFD, //CJK UNIFIED IDEOGRAPH - 0xCDAA: 0x8035, //CJK UNIFIED IDEOGRAPH - 0xCDAB: 0x808F, //CJK UNIFIED IDEOGRAPH - 0xCDAC: 0x80AE, //CJK UNIFIED IDEOGRAPH - 0xCDAD: 0x80A3, //CJK UNIFIED IDEOGRAPH - 0xCDAE: 0x80B8, //CJK UNIFIED IDEOGRAPH - 0xCDAF: 0x80B5, //CJK UNIFIED IDEOGRAPH - 0xCDB0: 0x80AD, //CJK UNIFIED IDEOGRAPH - 0xCDB1: 0x8220, //CJK UNIFIED IDEOGRAPH - 0xCDB2: 0x82A0, //CJK UNIFIED IDEOGRAPH - 0xCDB3: 0x82C0, //CJK UNIFIED IDEOGRAPH - 0xCDB4: 0x82AB, //CJK UNIFIED IDEOGRAPH - 0xCDB5: 0x829A, //CJK UNIFIED IDEOGRAPH - 0xCDB6: 0x8298, //CJK UNIFIED IDEOGRAPH - 0xCDB7: 0x829B, //CJK UNIFIED IDEOGRAPH - 0xCDB8: 0x82B5, //CJK UNIFIED IDEOGRAPH - 0xCDB9: 0x82A7, //CJK UNIFIED IDEOGRAPH - 0xCDBA: 0x82AE, //CJK UNIFIED IDEOGRAPH - 0xCDBB: 0x82BC, //CJK UNIFIED IDEOGRAPH - 0xCDBC: 0x829E, //CJK UNIFIED IDEOGRAPH - 0xCDBD: 0x82BA, //CJK UNIFIED IDEOGRAPH - 0xCDBE: 0x82B4, //CJK UNIFIED IDEOGRAPH - 0xCDBF: 0x82A8, //CJK UNIFIED IDEOGRAPH - 0xCDC0: 0x82A1, //CJK UNIFIED IDEOGRAPH - 0xCDC1: 0x82A9, //CJK UNIFIED IDEOGRAPH - 0xCDC2: 0x82C2, //CJK UNIFIED IDEOGRAPH - 0xCDC3: 0x82A4, //CJK UNIFIED IDEOGRAPH - 0xCDC4: 0x82C3, //CJK UNIFIED IDEOGRAPH - 0xCDC5: 0x82B6, //CJK UNIFIED IDEOGRAPH - 0xCDC6: 0x82A2, //CJK UNIFIED IDEOGRAPH - 0xCDC7: 0x8670, //CJK UNIFIED IDEOGRAPH - 0xCDC8: 0x866F, //CJK UNIFIED IDEOGRAPH - 0xCDC9: 0x866D, //CJK UNIFIED IDEOGRAPH - 0xCDCA: 0x866E, //CJK UNIFIED IDEOGRAPH - 0xCDCB: 0x8C56, //CJK UNIFIED IDEOGRAPH - 0xCDCC: 0x8FD2, //CJK UNIFIED IDEOGRAPH - 0xCDCD: 0x8FCB, //CJK UNIFIED IDEOGRAPH - 0xCDCE: 0x8FD3, //CJK UNIFIED IDEOGRAPH - 0xCDCF: 0x8FCD, //CJK UNIFIED IDEOGRAPH - 0xCDD0: 0x8FD6, //CJK UNIFIED IDEOGRAPH - 0xCDD1: 0x8FD5, //CJK UNIFIED IDEOGRAPH - 0xCDD2: 0x8FD7, //CJK UNIFIED IDEOGRAPH - 0xCDD3: 0x90B2, //CJK UNIFIED IDEOGRAPH - 0xCDD4: 0x90B4, //CJK UNIFIED IDEOGRAPH - 0xCDD5: 0x90AF, //CJK UNIFIED IDEOGRAPH - 0xCDD6: 0x90B3, //CJK UNIFIED IDEOGRAPH - 0xCDD7: 0x90B0, //CJK UNIFIED IDEOGRAPH - 0xCDD8: 0x9639, //CJK UNIFIED IDEOGRAPH - 0xCDD9: 0x963D, //CJK UNIFIED IDEOGRAPH - 0xCDDA: 0x963C, //CJK UNIFIED IDEOGRAPH - 0xCDDB: 0x963A, //CJK UNIFIED IDEOGRAPH - 0xCDDC: 0x9643, //CJK UNIFIED IDEOGRAPH - 0xCDDD: 0x4FCD, //CJK UNIFIED IDEOGRAPH - 0xCDDE: 0x4FC5, //CJK UNIFIED IDEOGRAPH - 0xCDDF: 0x4FD3, //CJK UNIFIED IDEOGRAPH - 0xCDE0: 0x4FB2, //CJK UNIFIED IDEOGRAPH - 0xCDE1: 0x4FC9, //CJK UNIFIED IDEOGRAPH - 0xCDE2: 0x4FCB, //CJK UNIFIED IDEOGRAPH - 0xCDE3: 0x4FC1, //CJK UNIFIED IDEOGRAPH - 0xCDE4: 0x4FD4, //CJK UNIFIED IDEOGRAPH - 0xCDE5: 0x4FDC, //CJK UNIFIED IDEOGRAPH - 0xCDE6: 0x4FD9, //CJK UNIFIED IDEOGRAPH - 0xCDE7: 0x4FBB, //CJK UNIFIED IDEOGRAPH - 0xCDE8: 0x4FB3, //CJK UNIFIED IDEOGRAPH - 0xCDE9: 0x4FDB, //CJK UNIFIED IDEOGRAPH - 0xCDEA: 0x4FC7, //CJK UNIFIED IDEOGRAPH - 0xCDEB: 0x4FD6, //CJK UNIFIED IDEOGRAPH - 0xCDEC: 0x4FBA, //CJK UNIFIED IDEOGRAPH - 0xCDED: 0x4FC0, //CJK UNIFIED IDEOGRAPH - 0xCDEE: 0x4FB9, //CJK UNIFIED IDEOGRAPH - 0xCDEF: 0x4FEC, //CJK UNIFIED IDEOGRAPH - 0xCDF0: 0x5244, //CJK UNIFIED IDEOGRAPH - 0xCDF1: 0x5249, //CJK UNIFIED IDEOGRAPH - 0xCDF2: 0x52C0, //CJK UNIFIED IDEOGRAPH - 0xCDF3: 0x52C2, //CJK UNIFIED IDEOGRAPH - 0xCDF4: 0x533D, //CJK UNIFIED IDEOGRAPH - 0xCDF5: 0x537C, //CJK UNIFIED IDEOGRAPH - 0xCDF6: 0x5397, //CJK UNIFIED IDEOGRAPH - 0xCDF7: 0x5396, //CJK UNIFIED IDEOGRAPH - 0xCDF8: 0x5399, //CJK UNIFIED IDEOGRAPH - 0xCDF9: 0x5398, //CJK UNIFIED IDEOGRAPH - 0xCDFA: 0x54BA, //CJK UNIFIED IDEOGRAPH - 0xCDFB: 0x54A1, //CJK UNIFIED IDEOGRAPH - 0xCDFC: 0x54AD, //CJK UNIFIED IDEOGRAPH - 0xCDFD: 0x54A5, //CJK UNIFIED IDEOGRAPH - 0xCDFE: 0x54CF, //CJK UNIFIED IDEOGRAPH - 0xCE40: 0x54C3, //CJK UNIFIED IDEOGRAPH - 0xCE41: 0x830D, //CJK UNIFIED IDEOGRAPH - 0xCE42: 0x54B7, //CJK UNIFIED IDEOGRAPH - 0xCE43: 0x54AE, //CJK UNIFIED IDEOGRAPH - 0xCE44: 0x54D6, //CJK UNIFIED IDEOGRAPH - 0xCE45: 0x54B6, //CJK UNIFIED IDEOGRAPH - 0xCE46: 0x54C5, //CJK UNIFIED IDEOGRAPH - 0xCE47: 0x54C6, //CJK UNIFIED IDEOGRAPH - 0xCE48: 0x54A0, //CJK UNIFIED IDEOGRAPH - 0xCE49: 0x5470, //CJK UNIFIED IDEOGRAPH - 0xCE4A: 0x54BC, //CJK UNIFIED IDEOGRAPH - 0xCE4B: 0x54A2, //CJK UNIFIED IDEOGRAPH - 0xCE4C: 0x54BE, //CJK UNIFIED IDEOGRAPH - 0xCE4D: 0x5472, //CJK UNIFIED IDEOGRAPH - 0xCE4E: 0x54DE, //CJK UNIFIED IDEOGRAPH - 0xCE4F: 0x54B0, //CJK UNIFIED IDEOGRAPH - 0xCE50: 0x57B5, //CJK UNIFIED IDEOGRAPH - 0xCE51: 0x579E, //CJK UNIFIED IDEOGRAPH - 0xCE52: 0x579F, //CJK UNIFIED IDEOGRAPH - 0xCE53: 0x57A4, //CJK UNIFIED IDEOGRAPH - 0xCE54: 0x578C, //CJK UNIFIED IDEOGRAPH - 0xCE55: 0x5797, //CJK UNIFIED IDEOGRAPH - 0xCE56: 0x579D, //CJK UNIFIED IDEOGRAPH - 0xCE57: 0x579B, //CJK UNIFIED IDEOGRAPH - 0xCE58: 0x5794, //CJK UNIFIED IDEOGRAPH - 0xCE59: 0x5798, //CJK UNIFIED IDEOGRAPH - 0xCE5A: 0x578F, //CJK UNIFIED IDEOGRAPH - 0xCE5B: 0x5799, //CJK UNIFIED IDEOGRAPH - 0xCE5C: 0x57A5, //CJK UNIFIED IDEOGRAPH - 0xCE5D: 0x579A, //CJK UNIFIED IDEOGRAPH - 0xCE5E: 0x5795, //CJK UNIFIED IDEOGRAPH - 0xCE5F: 0x58F4, //CJK UNIFIED IDEOGRAPH - 0xCE60: 0x590D, //CJK UNIFIED IDEOGRAPH - 0xCE61: 0x5953, //CJK UNIFIED IDEOGRAPH - 0xCE62: 0x59E1, //CJK UNIFIED IDEOGRAPH - 0xCE63: 0x59DE, //CJK UNIFIED IDEOGRAPH - 0xCE64: 0x59EE, //CJK UNIFIED IDEOGRAPH - 0xCE65: 0x5A00, //CJK UNIFIED IDEOGRAPH - 0xCE66: 0x59F1, //CJK UNIFIED IDEOGRAPH - 0xCE67: 0x59DD, //CJK UNIFIED IDEOGRAPH - 0xCE68: 0x59FA, //CJK UNIFIED IDEOGRAPH - 0xCE69: 0x59FD, //CJK UNIFIED IDEOGRAPH - 0xCE6A: 0x59FC, //CJK UNIFIED IDEOGRAPH - 0xCE6B: 0x59F6, //CJK UNIFIED IDEOGRAPH - 0xCE6C: 0x59E4, //CJK UNIFIED IDEOGRAPH - 0xCE6D: 0x59F2, //CJK UNIFIED IDEOGRAPH - 0xCE6E: 0x59F7, //CJK UNIFIED IDEOGRAPH - 0xCE6F: 0x59DB, //CJK UNIFIED IDEOGRAPH - 0xCE70: 0x59E9, //CJK UNIFIED IDEOGRAPH - 0xCE71: 0x59F3, //CJK UNIFIED IDEOGRAPH - 0xCE72: 0x59F5, //CJK UNIFIED IDEOGRAPH - 0xCE73: 0x59E0, //CJK UNIFIED IDEOGRAPH - 0xCE74: 0x59FE, //CJK UNIFIED IDEOGRAPH - 0xCE75: 0x59F4, //CJK UNIFIED IDEOGRAPH - 0xCE76: 0x59ED, //CJK UNIFIED IDEOGRAPH - 0xCE77: 0x5BA8, //CJK UNIFIED IDEOGRAPH - 0xCE78: 0x5C4C, //CJK UNIFIED IDEOGRAPH - 0xCE79: 0x5CD0, //CJK UNIFIED IDEOGRAPH - 0xCE7A: 0x5CD8, //CJK UNIFIED IDEOGRAPH - 0xCE7B: 0x5CCC, //CJK UNIFIED IDEOGRAPH - 0xCE7C: 0x5CD7, //CJK UNIFIED IDEOGRAPH - 0xCE7D: 0x5CCB, //CJK UNIFIED IDEOGRAPH - 0xCE7E: 0x5CDB, //CJK UNIFIED IDEOGRAPH - 0xCEA1: 0x5CDE, //CJK UNIFIED IDEOGRAPH - 0xCEA2: 0x5CDA, //CJK UNIFIED IDEOGRAPH - 0xCEA3: 0x5CC9, //CJK UNIFIED IDEOGRAPH - 0xCEA4: 0x5CC7, //CJK UNIFIED IDEOGRAPH - 0xCEA5: 0x5CCA, //CJK UNIFIED IDEOGRAPH - 0xCEA6: 0x5CD6, //CJK UNIFIED IDEOGRAPH - 0xCEA7: 0x5CD3, //CJK UNIFIED IDEOGRAPH - 0xCEA8: 0x5CD4, //CJK UNIFIED IDEOGRAPH - 0xCEA9: 0x5CCF, //CJK UNIFIED IDEOGRAPH - 0xCEAA: 0x5CC8, //CJK UNIFIED IDEOGRAPH - 0xCEAB: 0x5CC6, //CJK UNIFIED IDEOGRAPH - 0xCEAC: 0x5CCE, //CJK UNIFIED IDEOGRAPH - 0xCEAD: 0x5CDF, //CJK UNIFIED IDEOGRAPH - 0xCEAE: 0x5CF8, //CJK UNIFIED IDEOGRAPH - 0xCEAF: 0x5DF9, //CJK UNIFIED IDEOGRAPH - 0xCEB0: 0x5E21, //CJK UNIFIED IDEOGRAPH - 0xCEB1: 0x5E22, //CJK UNIFIED IDEOGRAPH - 0xCEB2: 0x5E23, //CJK UNIFIED IDEOGRAPH - 0xCEB3: 0x5E20, //CJK UNIFIED IDEOGRAPH - 0xCEB4: 0x5E24, //CJK UNIFIED IDEOGRAPH - 0xCEB5: 0x5EB0, //CJK UNIFIED IDEOGRAPH - 0xCEB6: 0x5EA4, //CJK UNIFIED IDEOGRAPH - 0xCEB7: 0x5EA2, //CJK UNIFIED IDEOGRAPH - 0xCEB8: 0x5E9B, //CJK UNIFIED IDEOGRAPH - 0xCEB9: 0x5EA3, //CJK UNIFIED IDEOGRAPH - 0xCEBA: 0x5EA5, //CJK UNIFIED IDEOGRAPH - 0xCEBB: 0x5F07, //CJK UNIFIED IDEOGRAPH - 0xCEBC: 0x5F2E, //CJK UNIFIED IDEOGRAPH - 0xCEBD: 0x5F56, //CJK UNIFIED IDEOGRAPH - 0xCEBE: 0x5F86, //CJK UNIFIED IDEOGRAPH - 0xCEBF: 0x6037, //CJK UNIFIED IDEOGRAPH - 0xCEC0: 0x6039, //CJK UNIFIED IDEOGRAPH - 0xCEC1: 0x6054, //CJK UNIFIED IDEOGRAPH - 0xCEC2: 0x6072, //CJK UNIFIED IDEOGRAPH - 0xCEC3: 0x605E, //CJK UNIFIED IDEOGRAPH - 0xCEC4: 0x6045, //CJK UNIFIED IDEOGRAPH - 0xCEC5: 0x6053, //CJK UNIFIED IDEOGRAPH - 0xCEC6: 0x6047, //CJK UNIFIED IDEOGRAPH - 0xCEC7: 0x6049, //CJK UNIFIED IDEOGRAPH - 0xCEC8: 0x605B, //CJK UNIFIED IDEOGRAPH - 0xCEC9: 0x604C, //CJK UNIFIED IDEOGRAPH - 0xCECA: 0x6040, //CJK UNIFIED IDEOGRAPH - 0xCECB: 0x6042, //CJK UNIFIED IDEOGRAPH - 0xCECC: 0x605F, //CJK UNIFIED IDEOGRAPH - 0xCECD: 0x6024, //CJK UNIFIED IDEOGRAPH - 0xCECE: 0x6044, //CJK UNIFIED IDEOGRAPH - 0xCECF: 0x6058, //CJK UNIFIED IDEOGRAPH - 0xCED0: 0x6066, //CJK UNIFIED IDEOGRAPH - 0xCED1: 0x606E, //CJK UNIFIED IDEOGRAPH - 0xCED2: 0x6242, //CJK UNIFIED IDEOGRAPH - 0xCED3: 0x6243, //CJK UNIFIED IDEOGRAPH - 0xCED4: 0x62CF, //CJK UNIFIED IDEOGRAPH - 0xCED5: 0x630D, //CJK UNIFIED IDEOGRAPH - 0xCED6: 0x630B, //CJK UNIFIED IDEOGRAPH - 0xCED7: 0x62F5, //CJK UNIFIED IDEOGRAPH - 0xCED8: 0x630E, //CJK UNIFIED IDEOGRAPH - 0xCED9: 0x6303, //CJK UNIFIED IDEOGRAPH - 0xCEDA: 0x62EB, //CJK UNIFIED IDEOGRAPH - 0xCEDB: 0x62F9, //CJK UNIFIED IDEOGRAPH - 0xCEDC: 0x630F, //CJK UNIFIED IDEOGRAPH - 0xCEDD: 0x630C, //CJK UNIFIED IDEOGRAPH - 0xCEDE: 0x62F8, //CJK UNIFIED IDEOGRAPH - 0xCEDF: 0x62F6, //CJK UNIFIED IDEOGRAPH - 0xCEE0: 0x6300, //CJK UNIFIED IDEOGRAPH - 0xCEE1: 0x6313, //CJK UNIFIED IDEOGRAPH - 0xCEE2: 0x6314, //CJK UNIFIED IDEOGRAPH - 0xCEE3: 0x62FA, //CJK UNIFIED IDEOGRAPH - 0xCEE4: 0x6315, //CJK UNIFIED IDEOGRAPH - 0xCEE5: 0x62FB, //CJK UNIFIED IDEOGRAPH - 0xCEE6: 0x62F0, //CJK UNIFIED IDEOGRAPH - 0xCEE7: 0x6541, //CJK UNIFIED IDEOGRAPH - 0xCEE8: 0x6543, //CJK UNIFIED IDEOGRAPH - 0xCEE9: 0x65AA, //CJK UNIFIED IDEOGRAPH - 0xCEEA: 0x65BF, //CJK UNIFIED IDEOGRAPH - 0xCEEB: 0x6636, //CJK UNIFIED IDEOGRAPH - 0xCEEC: 0x6621, //CJK UNIFIED IDEOGRAPH - 0xCEED: 0x6632, //CJK UNIFIED IDEOGRAPH - 0xCEEE: 0x6635, //CJK UNIFIED IDEOGRAPH - 0xCEEF: 0x661C, //CJK UNIFIED IDEOGRAPH - 0xCEF0: 0x6626, //CJK UNIFIED IDEOGRAPH - 0xCEF1: 0x6622, //CJK UNIFIED IDEOGRAPH - 0xCEF2: 0x6633, //CJK UNIFIED IDEOGRAPH - 0xCEF3: 0x662B, //CJK UNIFIED IDEOGRAPH - 0xCEF4: 0x663A, //CJK UNIFIED IDEOGRAPH - 0xCEF5: 0x661D, //CJK UNIFIED IDEOGRAPH - 0xCEF6: 0x6634, //CJK UNIFIED IDEOGRAPH - 0xCEF7: 0x6639, //CJK UNIFIED IDEOGRAPH - 0xCEF8: 0x662E, //CJK UNIFIED IDEOGRAPH - 0xCEF9: 0x670F, //CJK UNIFIED IDEOGRAPH - 0xCEFA: 0x6710, //CJK UNIFIED IDEOGRAPH - 0xCEFB: 0x67C1, //CJK UNIFIED IDEOGRAPH - 0xCEFC: 0x67F2, //CJK UNIFIED IDEOGRAPH - 0xCEFD: 0x67C8, //CJK UNIFIED IDEOGRAPH - 0xCEFE: 0x67BA, //CJK UNIFIED IDEOGRAPH - 0xCF40: 0x67DC, //CJK UNIFIED IDEOGRAPH - 0xCF41: 0x67BB, //CJK UNIFIED IDEOGRAPH - 0xCF42: 0x67F8, //CJK UNIFIED IDEOGRAPH - 0xCF43: 0x67D8, //CJK UNIFIED IDEOGRAPH - 0xCF44: 0x67C0, //CJK UNIFIED IDEOGRAPH - 0xCF45: 0x67B7, //CJK UNIFIED IDEOGRAPH - 0xCF46: 0x67C5, //CJK UNIFIED IDEOGRAPH - 0xCF47: 0x67EB, //CJK UNIFIED IDEOGRAPH - 0xCF48: 0x67E4, //CJK UNIFIED IDEOGRAPH - 0xCF49: 0x67DF, //CJK UNIFIED IDEOGRAPH - 0xCF4A: 0x67B5, //CJK UNIFIED IDEOGRAPH - 0xCF4B: 0x67CD, //CJK UNIFIED IDEOGRAPH - 0xCF4C: 0x67B3, //CJK UNIFIED IDEOGRAPH - 0xCF4D: 0x67F7, //CJK UNIFIED IDEOGRAPH - 0xCF4E: 0x67F6, //CJK UNIFIED IDEOGRAPH - 0xCF4F: 0x67EE, //CJK UNIFIED IDEOGRAPH - 0xCF50: 0x67E3, //CJK UNIFIED IDEOGRAPH - 0xCF51: 0x67C2, //CJK UNIFIED IDEOGRAPH - 0xCF52: 0x67B9, //CJK UNIFIED IDEOGRAPH - 0xCF53: 0x67CE, //CJK UNIFIED IDEOGRAPH - 0xCF54: 0x67E7, //CJK UNIFIED IDEOGRAPH - 0xCF55: 0x67F0, //CJK UNIFIED IDEOGRAPH - 0xCF56: 0x67B2, //CJK UNIFIED IDEOGRAPH - 0xCF57: 0x67FC, //CJK UNIFIED IDEOGRAPH - 0xCF58: 0x67C6, //CJK UNIFIED IDEOGRAPH - 0xCF59: 0x67ED, //CJK UNIFIED IDEOGRAPH - 0xCF5A: 0x67CC, //CJK UNIFIED IDEOGRAPH - 0xCF5B: 0x67AE, //CJK UNIFIED IDEOGRAPH - 0xCF5C: 0x67E6, //CJK UNIFIED IDEOGRAPH - 0xCF5D: 0x67DB, //CJK UNIFIED IDEOGRAPH - 0xCF5E: 0x67FA, //CJK UNIFIED IDEOGRAPH - 0xCF5F: 0x67C9, //CJK UNIFIED IDEOGRAPH - 0xCF60: 0x67CA, //CJK UNIFIED IDEOGRAPH - 0xCF61: 0x67C3, //CJK UNIFIED IDEOGRAPH - 0xCF62: 0x67EA, //CJK UNIFIED IDEOGRAPH - 0xCF63: 0x67CB, //CJK UNIFIED IDEOGRAPH - 0xCF64: 0x6B28, //CJK UNIFIED IDEOGRAPH - 0xCF65: 0x6B82, //CJK UNIFIED IDEOGRAPH - 0xCF66: 0x6B84, //CJK UNIFIED IDEOGRAPH - 0xCF67: 0x6BB6, //CJK UNIFIED IDEOGRAPH - 0xCF68: 0x6BD6, //CJK UNIFIED IDEOGRAPH - 0xCF69: 0x6BD8, //CJK UNIFIED IDEOGRAPH - 0xCF6A: 0x6BE0, //CJK UNIFIED IDEOGRAPH - 0xCF6B: 0x6C20, //CJK UNIFIED IDEOGRAPH - 0xCF6C: 0x6C21, //CJK UNIFIED IDEOGRAPH - 0xCF6D: 0x6D28, //CJK UNIFIED IDEOGRAPH - 0xCF6E: 0x6D34, //CJK UNIFIED IDEOGRAPH - 0xCF6F: 0x6D2D, //CJK UNIFIED IDEOGRAPH - 0xCF70: 0x6D1F, //CJK UNIFIED IDEOGRAPH - 0xCF71: 0x6D3C, //CJK UNIFIED IDEOGRAPH - 0xCF72: 0x6D3F, //CJK UNIFIED IDEOGRAPH - 0xCF73: 0x6D12, //CJK UNIFIED IDEOGRAPH - 0xCF74: 0x6D0A, //CJK UNIFIED IDEOGRAPH - 0xCF75: 0x6CDA, //CJK UNIFIED IDEOGRAPH - 0xCF76: 0x6D33, //CJK UNIFIED IDEOGRAPH - 0xCF77: 0x6D04, //CJK UNIFIED IDEOGRAPH - 0xCF78: 0x6D19, //CJK UNIFIED IDEOGRAPH - 0xCF79: 0x6D3A, //CJK UNIFIED IDEOGRAPH - 0xCF7A: 0x6D1A, //CJK UNIFIED IDEOGRAPH - 0xCF7B: 0x6D11, //CJK UNIFIED IDEOGRAPH - 0xCF7C: 0x6D00, //CJK UNIFIED IDEOGRAPH - 0xCF7D: 0x6D1D, //CJK UNIFIED IDEOGRAPH - 0xCF7E: 0x6D42, //CJK UNIFIED IDEOGRAPH - 0xCFA1: 0x6D01, //CJK UNIFIED IDEOGRAPH - 0xCFA2: 0x6D18, //CJK UNIFIED IDEOGRAPH - 0xCFA3: 0x6D37, //CJK UNIFIED IDEOGRAPH - 0xCFA4: 0x6D03, //CJK UNIFIED IDEOGRAPH - 0xCFA5: 0x6D0F, //CJK UNIFIED IDEOGRAPH - 0xCFA6: 0x6D40, //CJK UNIFIED IDEOGRAPH - 0xCFA7: 0x6D07, //CJK UNIFIED IDEOGRAPH - 0xCFA8: 0x6D20, //CJK UNIFIED IDEOGRAPH - 0xCFA9: 0x6D2C, //CJK UNIFIED IDEOGRAPH - 0xCFAA: 0x6D08, //CJK UNIFIED IDEOGRAPH - 0xCFAB: 0x6D22, //CJK UNIFIED IDEOGRAPH - 0xCFAC: 0x6D09, //CJK UNIFIED IDEOGRAPH - 0xCFAD: 0x6D10, //CJK UNIFIED IDEOGRAPH - 0xCFAE: 0x70B7, //CJK UNIFIED IDEOGRAPH - 0xCFAF: 0x709F, //CJK UNIFIED IDEOGRAPH - 0xCFB0: 0x70BE, //CJK UNIFIED IDEOGRAPH - 0xCFB1: 0x70B1, //CJK UNIFIED IDEOGRAPH - 0xCFB2: 0x70B0, //CJK UNIFIED IDEOGRAPH - 0xCFB3: 0x70A1, //CJK UNIFIED IDEOGRAPH - 0xCFB4: 0x70B4, //CJK UNIFIED IDEOGRAPH - 0xCFB5: 0x70B5, //CJK UNIFIED IDEOGRAPH - 0xCFB6: 0x70A9, //CJK UNIFIED IDEOGRAPH - 0xCFB7: 0x7241, //CJK UNIFIED IDEOGRAPH - 0xCFB8: 0x7249, //CJK UNIFIED IDEOGRAPH - 0xCFB9: 0x724A, //CJK UNIFIED IDEOGRAPH - 0xCFBA: 0x726C, //CJK UNIFIED IDEOGRAPH - 0xCFBB: 0x7270, //CJK UNIFIED IDEOGRAPH - 0xCFBC: 0x7273, //CJK UNIFIED IDEOGRAPH - 0xCFBD: 0x726E, //CJK UNIFIED IDEOGRAPH - 0xCFBE: 0x72CA, //CJK UNIFIED IDEOGRAPH - 0xCFBF: 0x72E4, //CJK UNIFIED IDEOGRAPH - 0xCFC0: 0x72E8, //CJK UNIFIED IDEOGRAPH - 0xCFC1: 0x72EB, //CJK UNIFIED IDEOGRAPH - 0xCFC2: 0x72DF, //CJK UNIFIED IDEOGRAPH - 0xCFC3: 0x72EA, //CJK UNIFIED IDEOGRAPH - 0xCFC4: 0x72E6, //CJK UNIFIED IDEOGRAPH - 0xCFC5: 0x72E3, //CJK UNIFIED IDEOGRAPH - 0xCFC6: 0x7385, //CJK UNIFIED IDEOGRAPH - 0xCFC7: 0x73CC, //CJK UNIFIED IDEOGRAPH - 0xCFC8: 0x73C2, //CJK UNIFIED IDEOGRAPH - 0xCFC9: 0x73C8, //CJK UNIFIED IDEOGRAPH - 0xCFCA: 0x73C5, //CJK UNIFIED IDEOGRAPH - 0xCFCB: 0x73B9, //CJK UNIFIED IDEOGRAPH - 0xCFCC: 0x73B6, //CJK UNIFIED IDEOGRAPH - 0xCFCD: 0x73B5, //CJK UNIFIED IDEOGRAPH - 0xCFCE: 0x73B4, //CJK UNIFIED IDEOGRAPH - 0xCFCF: 0x73EB, //CJK UNIFIED IDEOGRAPH - 0xCFD0: 0x73BF, //CJK UNIFIED IDEOGRAPH - 0xCFD1: 0x73C7, //CJK UNIFIED IDEOGRAPH - 0xCFD2: 0x73BE, //CJK UNIFIED IDEOGRAPH - 0xCFD3: 0x73C3, //CJK UNIFIED IDEOGRAPH - 0xCFD4: 0x73C6, //CJK UNIFIED IDEOGRAPH - 0xCFD5: 0x73B8, //CJK UNIFIED IDEOGRAPH - 0xCFD6: 0x73CB, //CJK UNIFIED IDEOGRAPH - 0xCFD7: 0x74EC, //CJK UNIFIED IDEOGRAPH - 0xCFD8: 0x74EE, //CJK UNIFIED IDEOGRAPH - 0xCFD9: 0x752E, //CJK UNIFIED IDEOGRAPH - 0xCFDA: 0x7547, //CJK UNIFIED IDEOGRAPH - 0xCFDB: 0x7548, //CJK UNIFIED IDEOGRAPH - 0xCFDC: 0x75A7, //CJK UNIFIED IDEOGRAPH - 0xCFDD: 0x75AA, //CJK UNIFIED IDEOGRAPH - 0xCFDE: 0x7679, //CJK UNIFIED IDEOGRAPH - 0xCFDF: 0x76C4, //CJK UNIFIED IDEOGRAPH - 0xCFE0: 0x7708, //CJK UNIFIED IDEOGRAPH - 0xCFE1: 0x7703, //CJK UNIFIED IDEOGRAPH - 0xCFE2: 0x7704, //CJK UNIFIED IDEOGRAPH - 0xCFE3: 0x7705, //CJK UNIFIED IDEOGRAPH - 0xCFE4: 0x770A, //CJK UNIFIED IDEOGRAPH - 0xCFE5: 0x76F7, //CJK UNIFIED IDEOGRAPH - 0xCFE6: 0x76FB, //CJK UNIFIED IDEOGRAPH - 0xCFE7: 0x76FA, //CJK UNIFIED IDEOGRAPH - 0xCFE8: 0x77E7, //CJK UNIFIED IDEOGRAPH - 0xCFE9: 0x77E8, //CJK UNIFIED IDEOGRAPH - 0xCFEA: 0x7806, //CJK UNIFIED IDEOGRAPH - 0xCFEB: 0x7811, //CJK UNIFIED IDEOGRAPH - 0xCFEC: 0x7812, //CJK UNIFIED IDEOGRAPH - 0xCFED: 0x7805, //CJK UNIFIED IDEOGRAPH - 0xCFEE: 0x7810, //CJK UNIFIED IDEOGRAPH - 0xCFEF: 0x780F, //CJK UNIFIED IDEOGRAPH - 0xCFF0: 0x780E, //CJK UNIFIED IDEOGRAPH - 0xCFF1: 0x7809, //CJK UNIFIED IDEOGRAPH - 0xCFF2: 0x7803, //CJK UNIFIED IDEOGRAPH - 0xCFF3: 0x7813, //CJK UNIFIED IDEOGRAPH - 0xCFF4: 0x794A, //CJK UNIFIED IDEOGRAPH - 0xCFF5: 0x794C, //CJK UNIFIED IDEOGRAPH - 0xCFF6: 0x794B, //CJK UNIFIED IDEOGRAPH - 0xCFF7: 0x7945, //CJK UNIFIED IDEOGRAPH - 0xCFF8: 0x7944, //CJK UNIFIED IDEOGRAPH - 0xCFF9: 0x79D5, //CJK UNIFIED IDEOGRAPH - 0xCFFA: 0x79CD, //CJK UNIFIED IDEOGRAPH - 0xCFFB: 0x79CF, //CJK UNIFIED IDEOGRAPH - 0xCFFC: 0x79D6, //CJK UNIFIED IDEOGRAPH - 0xCFFD: 0x79CE, //CJK UNIFIED IDEOGRAPH - 0xCFFE: 0x7A80, //CJK UNIFIED IDEOGRAPH - 0xD040: 0x7A7E, //CJK UNIFIED IDEOGRAPH - 0xD041: 0x7AD1, //CJK UNIFIED IDEOGRAPH - 0xD042: 0x7B00, //CJK UNIFIED IDEOGRAPH - 0xD043: 0x7B01, //CJK UNIFIED IDEOGRAPH - 0xD044: 0x7C7A, //CJK UNIFIED IDEOGRAPH - 0xD045: 0x7C78, //CJK UNIFIED IDEOGRAPH - 0xD046: 0x7C79, //CJK UNIFIED IDEOGRAPH - 0xD047: 0x7C7F, //CJK UNIFIED IDEOGRAPH - 0xD048: 0x7C80, //CJK UNIFIED IDEOGRAPH - 0xD049: 0x7C81, //CJK UNIFIED IDEOGRAPH - 0xD04A: 0x7D03, //CJK UNIFIED IDEOGRAPH - 0xD04B: 0x7D08, //CJK UNIFIED IDEOGRAPH - 0xD04C: 0x7D01, //CJK UNIFIED IDEOGRAPH - 0xD04D: 0x7F58, //CJK UNIFIED IDEOGRAPH - 0xD04E: 0x7F91, //CJK UNIFIED IDEOGRAPH - 0xD04F: 0x7F8D, //CJK UNIFIED IDEOGRAPH - 0xD050: 0x7FBE, //CJK UNIFIED IDEOGRAPH - 0xD051: 0x8007, //CJK UNIFIED IDEOGRAPH - 0xD052: 0x800E, //CJK UNIFIED IDEOGRAPH - 0xD053: 0x800F, //CJK UNIFIED IDEOGRAPH - 0xD054: 0x8014, //CJK UNIFIED IDEOGRAPH - 0xD055: 0x8037, //CJK UNIFIED IDEOGRAPH - 0xD056: 0x80D8, //CJK UNIFIED IDEOGRAPH - 0xD057: 0x80C7, //CJK UNIFIED IDEOGRAPH - 0xD058: 0x80E0, //CJK UNIFIED IDEOGRAPH - 0xD059: 0x80D1, //CJK UNIFIED IDEOGRAPH - 0xD05A: 0x80C8, //CJK UNIFIED IDEOGRAPH - 0xD05B: 0x80C2, //CJK UNIFIED IDEOGRAPH - 0xD05C: 0x80D0, //CJK UNIFIED IDEOGRAPH - 0xD05D: 0x80C5, //CJK UNIFIED IDEOGRAPH - 0xD05E: 0x80E3, //CJK UNIFIED IDEOGRAPH - 0xD05F: 0x80D9, //CJK UNIFIED IDEOGRAPH - 0xD060: 0x80DC, //CJK UNIFIED IDEOGRAPH - 0xD061: 0x80CA, //CJK UNIFIED IDEOGRAPH - 0xD062: 0x80D5, //CJK UNIFIED IDEOGRAPH - 0xD063: 0x80C9, //CJK UNIFIED IDEOGRAPH - 0xD064: 0x80CF, //CJK UNIFIED IDEOGRAPH - 0xD065: 0x80D7, //CJK UNIFIED IDEOGRAPH - 0xD066: 0x80E6, //CJK UNIFIED IDEOGRAPH - 0xD067: 0x80CD, //CJK UNIFIED IDEOGRAPH - 0xD068: 0x81FF, //CJK UNIFIED IDEOGRAPH - 0xD069: 0x8221, //CJK UNIFIED IDEOGRAPH - 0xD06A: 0x8294, //CJK UNIFIED IDEOGRAPH - 0xD06B: 0x82D9, //CJK UNIFIED IDEOGRAPH - 0xD06C: 0x82FE, //CJK UNIFIED IDEOGRAPH - 0xD06D: 0x82F9, //CJK UNIFIED IDEOGRAPH - 0xD06E: 0x8307, //CJK UNIFIED IDEOGRAPH - 0xD06F: 0x82E8, //CJK UNIFIED IDEOGRAPH - 0xD070: 0x8300, //CJK UNIFIED IDEOGRAPH - 0xD071: 0x82D5, //CJK UNIFIED IDEOGRAPH - 0xD072: 0x833A, //CJK UNIFIED IDEOGRAPH - 0xD073: 0x82EB, //CJK UNIFIED IDEOGRAPH - 0xD074: 0x82D6, //CJK UNIFIED IDEOGRAPH - 0xD075: 0x82F4, //CJK UNIFIED IDEOGRAPH - 0xD076: 0x82EC, //CJK UNIFIED IDEOGRAPH - 0xD077: 0x82E1, //CJK UNIFIED IDEOGRAPH - 0xD078: 0x82F2, //CJK UNIFIED IDEOGRAPH - 0xD079: 0x82F5, //CJK UNIFIED IDEOGRAPH - 0xD07A: 0x830C, //CJK UNIFIED IDEOGRAPH - 0xD07B: 0x82FB, //CJK UNIFIED IDEOGRAPH - 0xD07C: 0x82F6, //CJK UNIFIED IDEOGRAPH - 0xD07D: 0x82F0, //CJK UNIFIED IDEOGRAPH - 0xD07E: 0x82EA, //CJK UNIFIED IDEOGRAPH - 0xD0A1: 0x82E4, //CJK UNIFIED IDEOGRAPH - 0xD0A2: 0x82E0, //CJK UNIFIED IDEOGRAPH - 0xD0A3: 0x82FA, //CJK UNIFIED IDEOGRAPH - 0xD0A4: 0x82F3, //CJK UNIFIED IDEOGRAPH - 0xD0A5: 0x82ED, //CJK UNIFIED IDEOGRAPH - 0xD0A6: 0x8677, //CJK UNIFIED IDEOGRAPH - 0xD0A7: 0x8674, //CJK UNIFIED IDEOGRAPH - 0xD0A8: 0x867C, //CJK UNIFIED IDEOGRAPH - 0xD0A9: 0x8673, //CJK UNIFIED IDEOGRAPH - 0xD0AA: 0x8841, //CJK UNIFIED IDEOGRAPH - 0xD0AB: 0x884E, //CJK UNIFIED IDEOGRAPH - 0xD0AC: 0x8867, //CJK UNIFIED IDEOGRAPH - 0xD0AD: 0x886A, //CJK UNIFIED IDEOGRAPH - 0xD0AE: 0x8869, //CJK UNIFIED IDEOGRAPH - 0xD0AF: 0x89D3, //CJK UNIFIED IDEOGRAPH - 0xD0B0: 0x8A04, //CJK UNIFIED IDEOGRAPH - 0xD0B1: 0x8A07, //CJK UNIFIED IDEOGRAPH - 0xD0B2: 0x8D72, //CJK UNIFIED IDEOGRAPH - 0xD0B3: 0x8FE3, //CJK UNIFIED IDEOGRAPH - 0xD0B4: 0x8FE1, //CJK UNIFIED IDEOGRAPH - 0xD0B5: 0x8FEE, //CJK UNIFIED IDEOGRAPH - 0xD0B6: 0x8FE0, //CJK UNIFIED IDEOGRAPH - 0xD0B7: 0x90F1, //CJK UNIFIED IDEOGRAPH - 0xD0B8: 0x90BD, //CJK UNIFIED IDEOGRAPH - 0xD0B9: 0x90BF, //CJK UNIFIED IDEOGRAPH - 0xD0BA: 0x90D5, //CJK UNIFIED IDEOGRAPH - 0xD0BB: 0x90C5, //CJK UNIFIED IDEOGRAPH - 0xD0BC: 0x90BE, //CJK UNIFIED IDEOGRAPH - 0xD0BD: 0x90C7, //CJK UNIFIED IDEOGRAPH - 0xD0BE: 0x90CB, //CJK UNIFIED IDEOGRAPH - 0xD0BF: 0x90C8, //CJK UNIFIED IDEOGRAPH - 0xD0C0: 0x91D4, //CJK UNIFIED IDEOGRAPH - 0xD0C1: 0x91D3, //CJK UNIFIED IDEOGRAPH - 0xD0C2: 0x9654, //CJK UNIFIED IDEOGRAPH - 0xD0C3: 0x964F, //CJK UNIFIED IDEOGRAPH - 0xD0C4: 0x9651, //CJK UNIFIED IDEOGRAPH - 0xD0C5: 0x9653, //CJK UNIFIED IDEOGRAPH - 0xD0C6: 0x964A, //CJK UNIFIED IDEOGRAPH - 0xD0C7: 0x964E, //CJK UNIFIED IDEOGRAPH - 0xD0C8: 0x501E, //CJK UNIFIED IDEOGRAPH - 0xD0C9: 0x5005, //CJK UNIFIED IDEOGRAPH - 0xD0CA: 0x5007, //CJK UNIFIED IDEOGRAPH - 0xD0CB: 0x5013, //CJK UNIFIED IDEOGRAPH - 0xD0CC: 0x5022, //CJK UNIFIED IDEOGRAPH - 0xD0CD: 0x5030, //CJK UNIFIED IDEOGRAPH - 0xD0CE: 0x501B, //CJK UNIFIED IDEOGRAPH - 0xD0CF: 0x4FF5, //CJK UNIFIED IDEOGRAPH - 0xD0D0: 0x4FF4, //CJK UNIFIED IDEOGRAPH - 0xD0D1: 0x5033, //CJK UNIFIED IDEOGRAPH - 0xD0D2: 0x5037, //CJK UNIFIED IDEOGRAPH - 0xD0D3: 0x502C, //CJK UNIFIED IDEOGRAPH - 0xD0D4: 0x4FF6, //CJK UNIFIED IDEOGRAPH - 0xD0D5: 0x4FF7, //CJK UNIFIED IDEOGRAPH - 0xD0D6: 0x5017, //CJK UNIFIED IDEOGRAPH - 0xD0D7: 0x501C, //CJK UNIFIED IDEOGRAPH - 0xD0D8: 0x5020, //CJK UNIFIED IDEOGRAPH - 0xD0D9: 0x5027, //CJK UNIFIED IDEOGRAPH - 0xD0DA: 0x5035, //CJK UNIFIED IDEOGRAPH - 0xD0DB: 0x502F, //CJK UNIFIED IDEOGRAPH - 0xD0DC: 0x5031, //CJK UNIFIED IDEOGRAPH - 0xD0DD: 0x500E, //CJK UNIFIED IDEOGRAPH - 0xD0DE: 0x515A, //CJK UNIFIED IDEOGRAPH - 0xD0DF: 0x5194, //CJK UNIFIED IDEOGRAPH - 0xD0E0: 0x5193, //CJK UNIFIED IDEOGRAPH - 0xD0E1: 0x51CA, //CJK UNIFIED IDEOGRAPH - 0xD0E2: 0x51C4, //CJK UNIFIED IDEOGRAPH - 0xD0E3: 0x51C5, //CJK UNIFIED IDEOGRAPH - 0xD0E4: 0x51C8, //CJK UNIFIED IDEOGRAPH - 0xD0E5: 0x51CE, //CJK UNIFIED IDEOGRAPH - 0xD0E6: 0x5261, //CJK UNIFIED IDEOGRAPH - 0xD0E7: 0x525A, //CJK UNIFIED IDEOGRAPH - 0xD0E8: 0x5252, //CJK UNIFIED IDEOGRAPH - 0xD0E9: 0x525E, //CJK UNIFIED IDEOGRAPH - 0xD0EA: 0x525F, //CJK UNIFIED IDEOGRAPH - 0xD0EB: 0x5255, //CJK UNIFIED IDEOGRAPH - 0xD0EC: 0x5262, //CJK UNIFIED IDEOGRAPH - 0xD0ED: 0x52CD, //CJK UNIFIED IDEOGRAPH - 0xD0EE: 0x530E, //CJK UNIFIED IDEOGRAPH - 0xD0EF: 0x539E, //CJK UNIFIED IDEOGRAPH - 0xD0F0: 0x5526, //CJK UNIFIED IDEOGRAPH - 0xD0F1: 0x54E2, //CJK UNIFIED IDEOGRAPH - 0xD0F2: 0x5517, //CJK UNIFIED IDEOGRAPH - 0xD0F3: 0x5512, //CJK UNIFIED IDEOGRAPH - 0xD0F4: 0x54E7, //CJK UNIFIED IDEOGRAPH - 0xD0F5: 0x54F3, //CJK UNIFIED IDEOGRAPH - 0xD0F6: 0x54E4, //CJK UNIFIED IDEOGRAPH - 0xD0F7: 0x551A, //CJK UNIFIED IDEOGRAPH - 0xD0F8: 0x54FF, //CJK UNIFIED IDEOGRAPH - 0xD0F9: 0x5504, //CJK UNIFIED IDEOGRAPH - 0xD0FA: 0x5508, //CJK UNIFIED IDEOGRAPH - 0xD0FB: 0x54EB, //CJK UNIFIED IDEOGRAPH - 0xD0FC: 0x5511, //CJK UNIFIED IDEOGRAPH - 0xD0FD: 0x5505, //CJK UNIFIED IDEOGRAPH - 0xD0FE: 0x54F1, //CJK UNIFIED IDEOGRAPH - 0xD140: 0x550A, //CJK UNIFIED IDEOGRAPH - 0xD141: 0x54FB, //CJK UNIFIED IDEOGRAPH - 0xD142: 0x54F7, //CJK UNIFIED IDEOGRAPH - 0xD143: 0x54F8, //CJK UNIFIED IDEOGRAPH - 0xD144: 0x54E0, //CJK UNIFIED IDEOGRAPH - 0xD145: 0x550E, //CJK UNIFIED IDEOGRAPH - 0xD146: 0x5503, //CJK UNIFIED IDEOGRAPH - 0xD147: 0x550B, //CJK UNIFIED IDEOGRAPH - 0xD148: 0x5701, //CJK UNIFIED IDEOGRAPH - 0xD149: 0x5702, //CJK UNIFIED IDEOGRAPH - 0xD14A: 0x57CC, //CJK UNIFIED IDEOGRAPH - 0xD14B: 0x5832, //CJK UNIFIED IDEOGRAPH - 0xD14C: 0x57D5, //CJK UNIFIED IDEOGRAPH - 0xD14D: 0x57D2, //CJK UNIFIED IDEOGRAPH - 0xD14E: 0x57BA, //CJK UNIFIED IDEOGRAPH - 0xD14F: 0x57C6, //CJK UNIFIED IDEOGRAPH - 0xD150: 0x57BD, //CJK UNIFIED IDEOGRAPH - 0xD151: 0x57BC, //CJK UNIFIED IDEOGRAPH - 0xD152: 0x57B8, //CJK UNIFIED IDEOGRAPH - 0xD153: 0x57B6, //CJK UNIFIED IDEOGRAPH - 0xD154: 0x57BF, //CJK UNIFIED IDEOGRAPH - 0xD155: 0x57C7, //CJK UNIFIED IDEOGRAPH - 0xD156: 0x57D0, //CJK UNIFIED IDEOGRAPH - 0xD157: 0x57B9, //CJK UNIFIED IDEOGRAPH - 0xD158: 0x57C1, //CJK UNIFIED IDEOGRAPH - 0xD159: 0x590E, //CJK UNIFIED IDEOGRAPH - 0xD15A: 0x594A, //CJK UNIFIED IDEOGRAPH - 0xD15B: 0x5A19, //CJK UNIFIED IDEOGRAPH - 0xD15C: 0x5A16, //CJK UNIFIED IDEOGRAPH - 0xD15D: 0x5A2D, //CJK UNIFIED IDEOGRAPH - 0xD15E: 0x5A2E, //CJK UNIFIED IDEOGRAPH - 0xD15F: 0x5A15, //CJK UNIFIED IDEOGRAPH - 0xD160: 0x5A0F, //CJK UNIFIED IDEOGRAPH - 0xD161: 0x5A17, //CJK UNIFIED IDEOGRAPH - 0xD162: 0x5A0A, //CJK UNIFIED IDEOGRAPH - 0xD163: 0x5A1E, //CJK UNIFIED IDEOGRAPH - 0xD164: 0x5A33, //CJK UNIFIED IDEOGRAPH - 0xD165: 0x5B6C, //CJK UNIFIED IDEOGRAPH - 0xD166: 0x5BA7, //CJK UNIFIED IDEOGRAPH - 0xD167: 0x5BAD, //CJK UNIFIED IDEOGRAPH - 0xD168: 0x5BAC, //CJK UNIFIED IDEOGRAPH - 0xD169: 0x5C03, //CJK UNIFIED IDEOGRAPH - 0xD16A: 0x5C56, //CJK UNIFIED IDEOGRAPH - 0xD16B: 0x5C54, //CJK UNIFIED IDEOGRAPH - 0xD16C: 0x5CEC, //CJK UNIFIED IDEOGRAPH - 0xD16D: 0x5CFF, //CJK UNIFIED IDEOGRAPH - 0xD16E: 0x5CEE, //CJK UNIFIED IDEOGRAPH - 0xD16F: 0x5CF1, //CJK UNIFIED IDEOGRAPH - 0xD170: 0x5CF7, //CJK UNIFIED IDEOGRAPH - 0xD171: 0x5D00, //CJK UNIFIED IDEOGRAPH - 0xD172: 0x5CF9, //CJK UNIFIED IDEOGRAPH - 0xD173: 0x5E29, //CJK UNIFIED IDEOGRAPH - 0xD174: 0x5E28, //CJK UNIFIED IDEOGRAPH - 0xD175: 0x5EA8, //CJK UNIFIED IDEOGRAPH - 0xD176: 0x5EAE, //CJK UNIFIED IDEOGRAPH - 0xD177: 0x5EAA, //CJK UNIFIED IDEOGRAPH - 0xD178: 0x5EAC, //CJK UNIFIED IDEOGRAPH - 0xD179: 0x5F33, //CJK UNIFIED IDEOGRAPH - 0xD17A: 0x5F30, //CJK UNIFIED IDEOGRAPH - 0xD17B: 0x5F67, //CJK UNIFIED IDEOGRAPH - 0xD17C: 0x605D, //CJK UNIFIED IDEOGRAPH - 0xD17D: 0x605A, //CJK UNIFIED IDEOGRAPH - 0xD17E: 0x6067, //CJK UNIFIED IDEOGRAPH - 0xD1A1: 0x6041, //CJK UNIFIED IDEOGRAPH - 0xD1A2: 0x60A2, //CJK UNIFIED IDEOGRAPH - 0xD1A3: 0x6088, //CJK UNIFIED IDEOGRAPH - 0xD1A4: 0x6080, //CJK UNIFIED IDEOGRAPH - 0xD1A5: 0x6092, //CJK UNIFIED IDEOGRAPH - 0xD1A6: 0x6081, //CJK UNIFIED IDEOGRAPH - 0xD1A7: 0x609D, //CJK UNIFIED IDEOGRAPH - 0xD1A8: 0x6083, //CJK UNIFIED IDEOGRAPH - 0xD1A9: 0x6095, //CJK UNIFIED IDEOGRAPH - 0xD1AA: 0x609B, //CJK UNIFIED IDEOGRAPH - 0xD1AB: 0x6097, //CJK UNIFIED IDEOGRAPH - 0xD1AC: 0x6087, //CJK UNIFIED IDEOGRAPH - 0xD1AD: 0x609C, //CJK UNIFIED IDEOGRAPH - 0xD1AE: 0x608E, //CJK UNIFIED IDEOGRAPH - 0xD1AF: 0x6219, //CJK UNIFIED IDEOGRAPH - 0xD1B0: 0x6246, //CJK UNIFIED IDEOGRAPH - 0xD1B1: 0x62F2, //CJK UNIFIED IDEOGRAPH - 0xD1B2: 0x6310, //CJK UNIFIED IDEOGRAPH - 0xD1B3: 0x6356, //CJK UNIFIED IDEOGRAPH - 0xD1B4: 0x632C, //CJK UNIFIED IDEOGRAPH - 0xD1B5: 0x6344, //CJK UNIFIED IDEOGRAPH - 0xD1B6: 0x6345, //CJK UNIFIED IDEOGRAPH - 0xD1B7: 0x6336, //CJK UNIFIED IDEOGRAPH - 0xD1B8: 0x6343, //CJK UNIFIED IDEOGRAPH - 0xD1B9: 0x63E4, //CJK UNIFIED IDEOGRAPH - 0xD1BA: 0x6339, //CJK UNIFIED IDEOGRAPH - 0xD1BB: 0x634B, //CJK UNIFIED IDEOGRAPH - 0xD1BC: 0x634A, //CJK UNIFIED IDEOGRAPH - 0xD1BD: 0x633C, //CJK UNIFIED IDEOGRAPH - 0xD1BE: 0x6329, //CJK UNIFIED IDEOGRAPH - 0xD1BF: 0x6341, //CJK UNIFIED IDEOGRAPH - 0xD1C0: 0x6334, //CJK UNIFIED IDEOGRAPH - 0xD1C1: 0x6358, //CJK UNIFIED IDEOGRAPH - 0xD1C2: 0x6354, //CJK UNIFIED IDEOGRAPH - 0xD1C3: 0x6359, //CJK UNIFIED IDEOGRAPH - 0xD1C4: 0x632D, //CJK UNIFIED IDEOGRAPH - 0xD1C5: 0x6347, //CJK UNIFIED IDEOGRAPH - 0xD1C6: 0x6333, //CJK UNIFIED IDEOGRAPH - 0xD1C7: 0x635A, //CJK UNIFIED IDEOGRAPH - 0xD1C8: 0x6351, //CJK UNIFIED IDEOGRAPH - 0xD1C9: 0x6338, //CJK UNIFIED IDEOGRAPH - 0xD1CA: 0x6357, //CJK UNIFIED IDEOGRAPH - 0xD1CB: 0x6340, //CJK UNIFIED IDEOGRAPH - 0xD1CC: 0x6348, //CJK UNIFIED IDEOGRAPH - 0xD1CD: 0x654A, //CJK UNIFIED IDEOGRAPH - 0xD1CE: 0x6546, //CJK UNIFIED IDEOGRAPH - 0xD1CF: 0x65C6, //CJK UNIFIED IDEOGRAPH - 0xD1D0: 0x65C3, //CJK UNIFIED IDEOGRAPH - 0xD1D1: 0x65C4, //CJK UNIFIED IDEOGRAPH - 0xD1D2: 0x65C2, //CJK UNIFIED IDEOGRAPH - 0xD1D3: 0x664A, //CJK UNIFIED IDEOGRAPH - 0xD1D4: 0x665F, //CJK UNIFIED IDEOGRAPH - 0xD1D5: 0x6647, //CJK UNIFIED IDEOGRAPH - 0xD1D6: 0x6651, //CJK UNIFIED IDEOGRAPH - 0xD1D7: 0x6712, //CJK UNIFIED IDEOGRAPH - 0xD1D8: 0x6713, //CJK UNIFIED IDEOGRAPH - 0xD1D9: 0x681F, //CJK UNIFIED IDEOGRAPH - 0xD1DA: 0x681A, //CJK UNIFIED IDEOGRAPH - 0xD1DB: 0x6849, //CJK UNIFIED IDEOGRAPH - 0xD1DC: 0x6832, //CJK UNIFIED IDEOGRAPH - 0xD1DD: 0x6833, //CJK UNIFIED IDEOGRAPH - 0xD1DE: 0x683B, //CJK UNIFIED IDEOGRAPH - 0xD1DF: 0x684B, //CJK UNIFIED IDEOGRAPH - 0xD1E0: 0x684F, //CJK UNIFIED IDEOGRAPH - 0xD1E1: 0x6816, //CJK UNIFIED IDEOGRAPH - 0xD1E2: 0x6831, //CJK UNIFIED IDEOGRAPH - 0xD1E3: 0x681C, //CJK UNIFIED IDEOGRAPH - 0xD1E4: 0x6835, //CJK UNIFIED IDEOGRAPH - 0xD1E5: 0x682B, //CJK UNIFIED IDEOGRAPH - 0xD1E6: 0x682D, //CJK UNIFIED IDEOGRAPH - 0xD1E7: 0x682F, //CJK UNIFIED IDEOGRAPH - 0xD1E8: 0x684E, //CJK UNIFIED IDEOGRAPH - 0xD1E9: 0x6844, //CJK UNIFIED IDEOGRAPH - 0xD1EA: 0x6834, //CJK UNIFIED IDEOGRAPH - 0xD1EB: 0x681D, //CJK UNIFIED IDEOGRAPH - 0xD1EC: 0x6812, //CJK UNIFIED IDEOGRAPH - 0xD1ED: 0x6814, //CJK UNIFIED IDEOGRAPH - 0xD1EE: 0x6826, //CJK UNIFIED IDEOGRAPH - 0xD1EF: 0x6828, //CJK UNIFIED IDEOGRAPH - 0xD1F0: 0x682E, //CJK UNIFIED IDEOGRAPH - 0xD1F1: 0x684D, //CJK UNIFIED IDEOGRAPH - 0xD1F2: 0x683A, //CJK UNIFIED IDEOGRAPH - 0xD1F3: 0x6825, //CJK UNIFIED IDEOGRAPH - 0xD1F4: 0x6820, //CJK UNIFIED IDEOGRAPH - 0xD1F5: 0x6B2C, //CJK UNIFIED IDEOGRAPH - 0xD1F6: 0x6B2F, //CJK UNIFIED IDEOGRAPH - 0xD1F7: 0x6B2D, //CJK UNIFIED IDEOGRAPH - 0xD1F8: 0x6B31, //CJK UNIFIED IDEOGRAPH - 0xD1F9: 0x6B34, //CJK UNIFIED IDEOGRAPH - 0xD1FA: 0x6B6D, //CJK UNIFIED IDEOGRAPH - 0xD1FB: 0x8082, //CJK UNIFIED IDEOGRAPH - 0xD1FC: 0x6B88, //CJK UNIFIED IDEOGRAPH - 0xD1FD: 0x6BE6, //CJK UNIFIED IDEOGRAPH - 0xD1FE: 0x6BE4, //CJK UNIFIED IDEOGRAPH - 0xD240: 0x6BE8, //CJK UNIFIED IDEOGRAPH - 0xD241: 0x6BE3, //CJK UNIFIED IDEOGRAPH - 0xD242: 0x6BE2, //CJK UNIFIED IDEOGRAPH - 0xD243: 0x6BE7, //CJK UNIFIED IDEOGRAPH - 0xD244: 0x6C25, //CJK UNIFIED IDEOGRAPH - 0xD245: 0x6D7A, //CJK UNIFIED IDEOGRAPH - 0xD246: 0x6D63, //CJK UNIFIED IDEOGRAPH - 0xD247: 0x6D64, //CJK UNIFIED IDEOGRAPH - 0xD248: 0x6D76, //CJK UNIFIED IDEOGRAPH - 0xD249: 0x6D0D, //CJK UNIFIED IDEOGRAPH - 0xD24A: 0x6D61, //CJK UNIFIED IDEOGRAPH - 0xD24B: 0x6D92, //CJK UNIFIED IDEOGRAPH - 0xD24C: 0x6D58, //CJK UNIFIED IDEOGRAPH - 0xD24D: 0x6D62, //CJK UNIFIED IDEOGRAPH - 0xD24E: 0x6D6D, //CJK UNIFIED IDEOGRAPH - 0xD24F: 0x6D6F, //CJK UNIFIED IDEOGRAPH - 0xD250: 0x6D91, //CJK UNIFIED IDEOGRAPH - 0xD251: 0x6D8D, //CJK UNIFIED IDEOGRAPH - 0xD252: 0x6DEF, //CJK UNIFIED IDEOGRAPH - 0xD253: 0x6D7F, //CJK UNIFIED IDEOGRAPH - 0xD254: 0x6D86, //CJK UNIFIED IDEOGRAPH - 0xD255: 0x6D5E, //CJK UNIFIED IDEOGRAPH - 0xD256: 0x6D67, //CJK UNIFIED IDEOGRAPH - 0xD257: 0x6D60, //CJK UNIFIED IDEOGRAPH - 0xD258: 0x6D97, //CJK UNIFIED IDEOGRAPH - 0xD259: 0x6D70, //CJK UNIFIED IDEOGRAPH - 0xD25A: 0x6D7C, //CJK UNIFIED IDEOGRAPH - 0xD25B: 0x6D5F, //CJK UNIFIED IDEOGRAPH - 0xD25C: 0x6D82, //CJK UNIFIED IDEOGRAPH - 0xD25D: 0x6D98, //CJK UNIFIED IDEOGRAPH - 0xD25E: 0x6D2F, //CJK UNIFIED IDEOGRAPH - 0xD25F: 0x6D68, //CJK UNIFIED IDEOGRAPH - 0xD260: 0x6D8B, //CJK UNIFIED IDEOGRAPH - 0xD261: 0x6D7E, //CJK UNIFIED IDEOGRAPH - 0xD262: 0x6D80, //CJK UNIFIED IDEOGRAPH - 0xD263: 0x6D84, //CJK UNIFIED IDEOGRAPH - 0xD264: 0x6D16, //CJK UNIFIED IDEOGRAPH - 0xD265: 0x6D83, //CJK UNIFIED IDEOGRAPH - 0xD266: 0x6D7B, //CJK UNIFIED IDEOGRAPH - 0xD267: 0x6D7D, //CJK UNIFIED IDEOGRAPH - 0xD268: 0x6D75, //CJK UNIFIED IDEOGRAPH - 0xD269: 0x6D90, //CJK UNIFIED IDEOGRAPH - 0xD26A: 0x70DC, //CJK UNIFIED IDEOGRAPH - 0xD26B: 0x70D3, //CJK UNIFIED IDEOGRAPH - 0xD26C: 0x70D1, //CJK UNIFIED IDEOGRAPH - 0xD26D: 0x70DD, //CJK UNIFIED IDEOGRAPH - 0xD26E: 0x70CB, //CJK UNIFIED IDEOGRAPH - 0xD26F: 0x7F39, //CJK UNIFIED IDEOGRAPH - 0xD270: 0x70E2, //CJK UNIFIED IDEOGRAPH - 0xD271: 0x70D7, //CJK UNIFIED IDEOGRAPH - 0xD272: 0x70D2, //CJK UNIFIED IDEOGRAPH - 0xD273: 0x70DE, //CJK UNIFIED IDEOGRAPH - 0xD274: 0x70E0, //CJK UNIFIED IDEOGRAPH - 0xD275: 0x70D4, //CJK UNIFIED IDEOGRAPH - 0xD276: 0x70CD, //CJK UNIFIED IDEOGRAPH - 0xD277: 0x70C5, //CJK UNIFIED IDEOGRAPH - 0xD278: 0x70C6, //CJK UNIFIED IDEOGRAPH - 0xD279: 0x70C7, //CJK UNIFIED IDEOGRAPH - 0xD27A: 0x70DA, //CJK UNIFIED IDEOGRAPH - 0xD27B: 0x70CE, //CJK UNIFIED IDEOGRAPH - 0xD27C: 0x70E1, //CJK UNIFIED IDEOGRAPH - 0xD27D: 0x7242, //CJK UNIFIED IDEOGRAPH - 0xD27E: 0x7278, //CJK UNIFIED IDEOGRAPH - 0xD2A1: 0x7277, //CJK UNIFIED IDEOGRAPH - 0xD2A2: 0x7276, //CJK UNIFIED IDEOGRAPH - 0xD2A3: 0x7300, //CJK UNIFIED IDEOGRAPH - 0xD2A4: 0x72FA, //CJK UNIFIED IDEOGRAPH - 0xD2A5: 0x72F4, //CJK UNIFIED IDEOGRAPH - 0xD2A6: 0x72FE, //CJK UNIFIED IDEOGRAPH - 0xD2A7: 0x72F6, //CJK UNIFIED IDEOGRAPH - 0xD2A8: 0x72F3, //CJK UNIFIED IDEOGRAPH - 0xD2A9: 0x72FB, //CJK UNIFIED IDEOGRAPH - 0xD2AA: 0x7301, //CJK UNIFIED IDEOGRAPH - 0xD2AB: 0x73D3, //CJK UNIFIED IDEOGRAPH - 0xD2AC: 0x73D9, //CJK UNIFIED IDEOGRAPH - 0xD2AD: 0x73E5, //CJK UNIFIED IDEOGRAPH - 0xD2AE: 0x73D6, //CJK UNIFIED IDEOGRAPH - 0xD2AF: 0x73BC, //CJK UNIFIED IDEOGRAPH - 0xD2B0: 0x73E7, //CJK UNIFIED IDEOGRAPH - 0xD2B1: 0x73E3, //CJK UNIFIED IDEOGRAPH - 0xD2B2: 0x73E9, //CJK UNIFIED IDEOGRAPH - 0xD2B3: 0x73DC, //CJK UNIFIED IDEOGRAPH - 0xD2B4: 0x73D2, //CJK UNIFIED IDEOGRAPH - 0xD2B5: 0x73DB, //CJK UNIFIED IDEOGRAPH - 0xD2B6: 0x73D4, //CJK UNIFIED IDEOGRAPH - 0xD2B7: 0x73DD, //CJK UNIFIED IDEOGRAPH - 0xD2B8: 0x73DA, //CJK UNIFIED IDEOGRAPH - 0xD2B9: 0x73D7, //CJK UNIFIED IDEOGRAPH - 0xD2BA: 0x73D8, //CJK UNIFIED IDEOGRAPH - 0xD2BB: 0x73E8, //CJK UNIFIED IDEOGRAPH - 0xD2BC: 0x74DE, //CJK UNIFIED IDEOGRAPH - 0xD2BD: 0x74DF, //CJK UNIFIED IDEOGRAPH - 0xD2BE: 0x74F4, //CJK UNIFIED IDEOGRAPH - 0xD2BF: 0x74F5, //CJK UNIFIED IDEOGRAPH - 0xD2C0: 0x7521, //CJK UNIFIED IDEOGRAPH - 0xD2C1: 0x755B, //CJK UNIFIED IDEOGRAPH - 0xD2C2: 0x755F, //CJK UNIFIED IDEOGRAPH - 0xD2C3: 0x75B0, //CJK UNIFIED IDEOGRAPH - 0xD2C4: 0x75C1, //CJK UNIFIED IDEOGRAPH - 0xD2C5: 0x75BB, //CJK UNIFIED IDEOGRAPH - 0xD2C6: 0x75C4, //CJK UNIFIED IDEOGRAPH - 0xD2C7: 0x75C0, //CJK UNIFIED IDEOGRAPH - 0xD2C8: 0x75BF, //CJK UNIFIED IDEOGRAPH - 0xD2C9: 0x75B6, //CJK UNIFIED IDEOGRAPH - 0xD2CA: 0x75BA, //CJK UNIFIED IDEOGRAPH - 0xD2CB: 0x768A, //CJK UNIFIED IDEOGRAPH - 0xD2CC: 0x76C9, //CJK UNIFIED IDEOGRAPH - 0xD2CD: 0x771D, //CJK UNIFIED IDEOGRAPH - 0xD2CE: 0x771B, //CJK UNIFIED IDEOGRAPH - 0xD2CF: 0x7710, //CJK UNIFIED IDEOGRAPH - 0xD2D0: 0x7713, //CJK UNIFIED IDEOGRAPH - 0xD2D1: 0x7712, //CJK UNIFIED IDEOGRAPH - 0xD2D2: 0x7723, //CJK UNIFIED IDEOGRAPH - 0xD2D3: 0x7711, //CJK UNIFIED IDEOGRAPH - 0xD2D4: 0x7715, //CJK UNIFIED IDEOGRAPH - 0xD2D5: 0x7719, //CJK UNIFIED IDEOGRAPH - 0xD2D6: 0x771A, //CJK UNIFIED IDEOGRAPH - 0xD2D7: 0x7722, //CJK UNIFIED IDEOGRAPH - 0xD2D8: 0x7727, //CJK UNIFIED IDEOGRAPH - 0xD2D9: 0x7823, //CJK UNIFIED IDEOGRAPH - 0xD2DA: 0x782C, //CJK UNIFIED IDEOGRAPH - 0xD2DB: 0x7822, //CJK UNIFIED IDEOGRAPH - 0xD2DC: 0x7835, //CJK UNIFIED IDEOGRAPH - 0xD2DD: 0x782F, //CJK UNIFIED IDEOGRAPH - 0xD2DE: 0x7828, //CJK UNIFIED IDEOGRAPH - 0xD2DF: 0x782E, //CJK UNIFIED IDEOGRAPH - 0xD2E0: 0x782B, //CJK UNIFIED IDEOGRAPH - 0xD2E1: 0x7821, //CJK UNIFIED IDEOGRAPH - 0xD2E2: 0x7829, //CJK UNIFIED IDEOGRAPH - 0xD2E3: 0x7833, //CJK UNIFIED IDEOGRAPH - 0xD2E4: 0x782A, //CJK UNIFIED IDEOGRAPH - 0xD2E5: 0x7831, //CJK UNIFIED IDEOGRAPH - 0xD2E6: 0x7954, //CJK UNIFIED IDEOGRAPH - 0xD2E7: 0x795B, //CJK UNIFIED IDEOGRAPH - 0xD2E8: 0x794F, //CJK UNIFIED IDEOGRAPH - 0xD2E9: 0x795C, //CJK UNIFIED IDEOGRAPH - 0xD2EA: 0x7953, //CJK UNIFIED IDEOGRAPH - 0xD2EB: 0x7952, //CJK UNIFIED IDEOGRAPH - 0xD2EC: 0x7951, //CJK UNIFIED IDEOGRAPH - 0xD2ED: 0x79EB, //CJK UNIFIED IDEOGRAPH - 0xD2EE: 0x79EC, //CJK UNIFIED IDEOGRAPH - 0xD2EF: 0x79E0, //CJK UNIFIED IDEOGRAPH - 0xD2F0: 0x79EE, //CJK UNIFIED IDEOGRAPH - 0xD2F1: 0x79ED, //CJK UNIFIED IDEOGRAPH - 0xD2F2: 0x79EA, //CJK UNIFIED IDEOGRAPH - 0xD2F3: 0x79DC, //CJK UNIFIED IDEOGRAPH - 0xD2F4: 0x79DE, //CJK UNIFIED IDEOGRAPH - 0xD2F5: 0x79DD, //CJK UNIFIED IDEOGRAPH - 0xD2F6: 0x7A86, //CJK UNIFIED IDEOGRAPH - 0xD2F7: 0x7A89, //CJK UNIFIED IDEOGRAPH - 0xD2F8: 0x7A85, //CJK UNIFIED IDEOGRAPH - 0xD2F9: 0x7A8B, //CJK UNIFIED IDEOGRAPH - 0xD2FA: 0x7A8C, //CJK UNIFIED IDEOGRAPH - 0xD2FB: 0x7A8A, //CJK UNIFIED IDEOGRAPH - 0xD2FC: 0x7A87, //CJK UNIFIED IDEOGRAPH - 0xD2FD: 0x7AD8, //CJK UNIFIED IDEOGRAPH - 0xD2FE: 0x7B10, //CJK UNIFIED IDEOGRAPH - 0xD340: 0x7B04, //CJK UNIFIED IDEOGRAPH - 0xD341: 0x7B13, //CJK UNIFIED IDEOGRAPH - 0xD342: 0x7B05, //CJK UNIFIED IDEOGRAPH - 0xD343: 0x7B0F, //CJK UNIFIED IDEOGRAPH - 0xD344: 0x7B08, //CJK UNIFIED IDEOGRAPH - 0xD345: 0x7B0A, //CJK UNIFIED IDEOGRAPH - 0xD346: 0x7B0E, //CJK UNIFIED IDEOGRAPH - 0xD347: 0x7B09, //CJK UNIFIED IDEOGRAPH - 0xD348: 0x7B12, //CJK UNIFIED IDEOGRAPH - 0xD349: 0x7C84, //CJK UNIFIED IDEOGRAPH - 0xD34A: 0x7C91, //CJK UNIFIED IDEOGRAPH - 0xD34B: 0x7C8A, //CJK UNIFIED IDEOGRAPH - 0xD34C: 0x7C8C, //CJK UNIFIED IDEOGRAPH - 0xD34D: 0x7C88, //CJK UNIFIED IDEOGRAPH - 0xD34E: 0x7C8D, //CJK UNIFIED IDEOGRAPH - 0xD34F: 0x7C85, //CJK UNIFIED IDEOGRAPH - 0xD350: 0x7D1E, //CJK UNIFIED IDEOGRAPH - 0xD351: 0x7D1D, //CJK UNIFIED IDEOGRAPH - 0xD352: 0x7D11, //CJK UNIFIED IDEOGRAPH - 0xD353: 0x7D0E, //CJK UNIFIED IDEOGRAPH - 0xD354: 0x7D18, //CJK UNIFIED IDEOGRAPH - 0xD355: 0x7D16, //CJK UNIFIED IDEOGRAPH - 0xD356: 0x7D13, //CJK UNIFIED IDEOGRAPH - 0xD357: 0x7D1F, //CJK UNIFIED IDEOGRAPH - 0xD358: 0x7D12, //CJK UNIFIED IDEOGRAPH - 0xD359: 0x7D0F, //CJK UNIFIED IDEOGRAPH - 0xD35A: 0x7D0C, //CJK UNIFIED IDEOGRAPH - 0xD35B: 0x7F5C, //CJK UNIFIED IDEOGRAPH - 0xD35C: 0x7F61, //CJK UNIFIED IDEOGRAPH - 0xD35D: 0x7F5E, //CJK UNIFIED IDEOGRAPH - 0xD35E: 0x7F60, //CJK UNIFIED IDEOGRAPH - 0xD35F: 0x7F5D, //CJK UNIFIED IDEOGRAPH - 0xD360: 0x7F5B, //CJK UNIFIED IDEOGRAPH - 0xD361: 0x7F96, //CJK UNIFIED IDEOGRAPH - 0xD362: 0x7F92, //CJK UNIFIED IDEOGRAPH - 0xD363: 0x7FC3, //CJK UNIFIED IDEOGRAPH - 0xD364: 0x7FC2, //CJK UNIFIED IDEOGRAPH - 0xD365: 0x7FC0, //CJK UNIFIED IDEOGRAPH - 0xD366: 0x8016, //CJK UNIFIED IDEOGRAPH - 0xD367: 0x803E, //CJK UNIFIED IDEOGRAPH - 0xD368: 0x8039, //CJK UNIFIED IDEOGRAPH - 0xD369: 0x80FA, //CJK UNIFIED IDEOGRAPH - 0xD36A: 0x80F2, //CJK UNIFIED IDEOGRAPH - 0xD36B: 0x80F9, //CJK UNIFIED IDEOGRAPH - 0xD36C: 0x80F5, //CJK UNIFIED IDEOGRAPH - 0xD36D: 0x8101, //CJK UNIFIED IDEOGRAPH - 0xD36E: 0x80FB, //CJK UNIFIED IDEOGRAPH - 0xD36F: 0x8100, //CJK UNIFIED IDEOGRAPH - 0xD370: 0x8201, //CJK UNIFIED IDEOGRAPH - 0xD371: 0x822F, //CJK UNIFIED IDEOGRAPH - 0xD372: 0x8225, //CJK UNIFIED IDEOGRAPH - 0xD373: 0x8333, //CJK UNIFIED IDEOGRAPH - 0xD374: 0x832D, //CJK UNIFIED IDEOGRAPH - 0xD375: 0x8344, //CJK UNIFIED IDEOGRAPH - 0xD376: 0x8319, //CJK UNIFIED IDEOGRAPH - 0xD377: 0x8351, //CJK UNIFIED IDEOGRAPH - 0xD378: 0x8325, //CJK UNIFIED IDEOGRAPH - 0xD379: 0x8356, //CJK UNIFIED IDEOGRAPH - 0xD37A: 0x833F, //CJK UNIFIED IDEOGRAPH - 0xD37B: 0x8341, //CJK UNIFIED IDEOGRAPH - 0xD37C: 0x8326, //CJK UNIFIED IDEOGRAPH - 0xD37D: 0x831C, //CJK UNIFIED IDEOGRAPH - 0xD37E: 0x8322, //CJK UNIFIED IDEOGRAPH - 0xD3A1: 0x8342, //CJK UNIFIED IDEOGRAPH - 0xD3A2: 0x834E, //CJK UNIFIED IDEOGRAPH - 0xD3A3: 0x831B, //CJK UNIFIED IDEOGRAPH - 0xD3A4: 0x832A, //CJK UNIFIED IDEOGRAPH - 0xD3A5: 0x8308, //CJK UNIFIED IDEOGRAPH - 0xD3A6: 0x833C, //CJK UNIFIED IDEOGRAPH - 0xD3A7: 0x834D, //CJK UNIFIED IDEOGRAPH - 0xD3A8: 0x8316, //CJK UNIFIED IDEOGRAPH - 0xD3A9: 0x8324, //CJK UNIFIED IDEOGRAPH - 0xD3AA: 0x8320, //CJK UNIFIED IDEOGRAPH - 0xD3AB: 0x8337, //CJK UNIFIED IDEOGRAPH - 0xD3AC: 0x832F, //CJK UNIFIED IDEOGRAPH - 0xD3AD: 0x8329, //CJK UNIFIED IDEOGRAPH - 0xD3AE: 0x8347, //CJK UNIFIED IDEOGRAPH - 0xD3AF: 0x8345, //CJK UNIFIED IDEOGRAPH - 0xD3B0: 0x834C, //CJK UNIFIED IDEOGRAPH - 0xD3B1: 0x8353, //CJK UNIFIED IDEOGRAPH - 0xD3B2: 0x831E, //CJK UNIFIED IDEOGRAPH - 0xD3B3: 0x832C, //CJK UNIFIED IDEOGRAPH - 0xD3B4: 0x834B, //CJK UNIFIED IDEOGRAPH - 0xD3B5: 0x8327, //CJK UNIFIED IDEOGRAPH - 0xD3B6: 0x8348, //CJK UNIFIED IDEOGRAPH - 0xD3B7: 0x8653, //CJK UNIFIED IDEOGRAPH - 0xD3B8: 0x8652, //CJK UNIFIED IDEOGRAPH - 0xD3B9: 0x86A2, //CJK UNIFIED IDEOGRAPH - 0xD3BA: 0x86A8, //CJK UNIFIED IDEOGRAPH - 0xD3BB: 0x8696, //CJK UNIFIED IDEOGRAPH - 0xD3BC: 0x868D, //CJK UNIFIED IDEOGRAPH - 0xD3BD: 0x8691, //CJK UNIFIED IDEOGRAPH - 0xD3BE: 0x869E, //CJK UNIFIED IDEOGRAPH - 0xD3BF: 0x8687, //CJK UNIFIED IDEOGRAPH - 0xD3C0: 0x8697, //CJK UNIFIED IDEOGRAPH - 0xD3C1: 0x8686, //CJK UNIFIED IDEOGRAPH - 0xD3C2: 0x868B, //CJK UNIFIED IDEOGRAPH - 0xD3C3: 0x869A, //CJK UNIFIED IDEOGRAPH - 0xD3C4: 0x8685, //CJK UNIFIED IDEOGRAPH - 0xD3C5: 0x86A5, //CJK UNIFIED IDEOGRAPH - 0xD3C6: 0x8699, //CJK UNIFIED IDEOGRAPH - 0xD3C7: 0x86A1, //CJK UNIFIED IDEOGRAPH - 0xD3C8: 0x86A7, //CJK UNIFIED IDEOGRAPH - 0xD3C9: 0x8695, //CJK UNIFIED IDEOGRAPH - 0xD3CA: 0x8698, //CJK UNIFIED IDEOGRAPH - 0xD3CB: 0x868E, //CJK UNIFIED IDEOGRAPH - 0xD3CC: 0x869D, //CJK UNIFIED IDEOGRAPH - 0xD3CD: 0x8690, //CJK UNIFIED IDEOGRAPH - 0xD3CE: 0x8694, //CJK UNIFIED IDEOGRAPH - 0xD3CF: 0x8843, //CJK UNIFIED IDEOGRAPH - 0xD3D0: 0x8844, //CJK UNIFIED IDEOGRAPH - 0xD3D1: 0x886D, //CJK UNIFIED IDEOGRAPH - 0xD3D2: 0x8875, //CJK UNIFIED IDEOGRAPH - 0xD3D3: 0x8876, //CJK UNIFIED IDEOGRAPH - 0xD3D4: 0x8872, //CJK UNIFIED IDEOGRAPH - 0xD3D5: 0x8880, //CJK UNIFIED IDEOGRAPH - 0xD3D6: 0x8871, //CJK UNIFIED IDEOGRAPH - 0xD3D7: 0x887F, //CJK UNIFIED IDEOGRAPH - 0xD3D8: 0x886F, //CJK UNIFIED IDEOGRAPH - 0xD3D9: 0x8883, //CJK UNIFIED IDEOGRAPH - 0xD3DA: 0x887E, //CJK UNIFIED IDEOGRAPH - 0xD3DB: 0x8874, //CJK UNIFIED IDEOGRAPH - 0xD3DC: 0x887C, //CJK UNIFIED IDEOGRAPH - 0xD3DD: 0x8A12, //CJK UNIFIED IDEOGRAPH - 0xD3DE: 0x8C47, //CJK UNIFIED IDEOGRAPH - 0xD3DF: 0x8C57, //CJK UNIFIED IDEOGRAPH - 0xD3E0: 0x8C7B, //CJK UNIFIED IDEOGRAPH - 0xD3E1: 0x8CA4, //CJK UNIFIED IDEOGRAPH - 0xD3E2: 0x8CA3, //CJK UNIFIED IDEOGRAPH - 0xD3E3: 0x8D76, //CJK UNIFIED IDEOGRAPH - 0xD3E4: 0x8D78, //CJK UNIFIED IDEOGRAPH - 0xD3E5: 0x8DB5, //CJK UNIFIED IDEOGRAPH - 0xD3E6: 0x8DB7, //CJK UNIFIED IDEOGRAPH - 0xD3E7: 0x8DB6, //CJK UNIFIED IDEOGRAPH - 0xD3E8: 0x8ED1, //CJK UNIFIED IDEOGRAPH - 0xD3E9: 0x8ED3, //CJK UNIFIED IDEOGRAPH - 0xD3EA: 0x8FFE, //CJK UNIFIED IDEOGRAPH - 0xD3EB: 0x8FF5, //CJK UNIFIED IDEOGRAPH - 0xD3EC: 0x9002, //CJK UNIFIED IDEOGRAPH - 0xD3ED: 0x8FFF, //CJK UNIFIED IDEOGRAPH - 0xD3EE: 0x8FFB, //CJK UNIFIED IDEOGRAPH - 0xD3EF: 0x9004, //CJK UNIFIED IDEOGRAPH - 0xD3F0: 0x8FFC, //CJK UNIFIED IDEOGRAPH - 0xD3F1: 0x8FF6, //CJK UNIFIED IDEOGRAPH - 0xD3F2: 0x90D6, //CJK UNIFIED IDEOGRAPH - 0xD3F3: 0x90E0, //CJK UNIFIED IDEOGRAPH - 0xD3F4: 0x90D9, //CJK UNIFIED IDEOGRAPH - 0xD3F5: 0x90DA, //CJK UNIFIED IDEOGRAPH - 0xD3F6: 0x90E3, //CJK UNIFIED IDEOGRAPH - 0xD3F7: 0x90DF, //CJK UNIFIED IDEOGRAPH - 0xD3F8: 0x90E5, //CJK UNIFIED IDEOGRAPH - 0xD3F9: 0x90D8, //CJK UNIFIED IDEOGRAPH - 0xD3FA: 0x90DB, //CJK UNIFIED IDEOGRAPH - 0xD3FB: 0x90D7, //CJK UNIFIED IDEOGRAPH - 0xD3FC: 0x90DC, //CJK UNIFIED IDEOGRAPH - 0xD3FD: 0x90E4, //CJK UNIFIED IDEOGRAPH - 0xD3FE: 0x9150, //CJK UNIFIED IDEOGRAPH - 0xD440: 0x914E, //CJK UNIFIED IDEOGRAPH - 0xD441: 0x914F, //CJK UNIFIED IDEOGRAPH - 0xD442: 0x91D5, //CJK UNIFIED IDEOGRAPH - 0xD443: 0x91E2, //CJK UNIFIED IDEOGRAPH - 0xD444: 0x91DA, //CJK UNIFIED IDEOGRAPH - 0xD445: 0x965C, //CJK UNIFIED IDEOGRAPH - 0xD446: 0x965F, //CJK UNIFIED IDEOGRAPH - 0xD447: 0x96BC, //CJK UNIFIED IDEOGRAPH - 0xD448: 0x98E3, //CJK UNIFIED IDEOGRAPH - 0xD449: 0x9ADF, //CJK UNIFIED IDEOGRAPH - 0xD44A: 0x9B2F, //CJK UNIFIED IDEOGRAPH - 0xD44B: 0x4E7F, //CJK UNIFIED IDEOGRAPH - 0xD44C: 0x5070, //CJK UNIFIED IDEOGRAPH - 0xD44D: 0x506A, //CJK UNIFIED IDEOGRAPH - 0xD44E: 0x5061, //CJK UNIFIED IDEOGRAPH - 0xD44F: 0x505E, //CJK UNIFIED IDEOGRAPH - 0xD450: 0x5060, //CJK UNIFIED IDEOGRAPH - 0xD451: 0x5053, //CJK UNIFIED IDEOGRAPH - 0xD452: 0x504B, //CJK UNIFIED IDEOGRAPH - 0xD453: 0x505D, //CJK UNIFIED IDEOGRAPH - 0xD454: 0x5072, //CJK UNIFIED IDEOGRAPH - 0xD455: 0x5048, //CJK UNIFIED IDEOGRAPH - 0xD456: 0x504D, //CJK UNIFIED IDEOGRAPH - 0xD457: 0x5041, //CJK UNIFIED IDEOGRAPH - 0xD458: 0x505B, //CJK UNIFIED IDEOGRAPH - 0xD459: 0x504A, //CJK UNIFIED IDEOGRAPH - 0xD45A: 0x5062, //CJK UNIFIED IDEOGRAPH - 0xD45B: 0x5015, //CJK UNIFIED IDEOGRAPH - 0xD45C: 0x5045, //CJK UNIFIED IDEOGRAPH - 0xD45D: 0x505F, //CJK UNIFIED IDEOGRAPH - 0xD45E: 0x5069, //CJK UNIFIED IDEOGRAPH - 0xD45F: 0x506B, //CJK UNIFIED IDEOGRAPH - 0xD460: 0x5063, //CJK UNIFIED IDEOGRAPH - 0xD461: 0x5064, //CJK UNIFIED IDEOGRAPH - 0xD462: 0x5046, //CJK UNIFIED IDEOGRAPH - 0xD463: 0x5040, //CJK UNIFIED IDEOGRAPH - 0xD464: 0x506E, //CJK UNIFIED IDEOGRAPH - 0xD465: 0x5073, //CJK UNIFIED IDEOGRAPH - 0xD466: 0x5057, //CJK UNIFIED IDEOGRAPH - 0xD467: 0x5051, //CJK UNIFIED IDEOGRAPH - 0xD468: 0x51D0, //CJK UNIFIED IDEOGRAPH - 0xD469: 0x526B, //CJK UNIFIED IDEOGRAPH - 0xD46A: 0x526D, //CJK UNIFIED IDEOGRAPH - 0xD46B: 0x526C, //CJK UNIFIED IDEOGRAPH - 0xD46C: 0x526E, //CJK UNIFIED IDEOGRAPH - 0xD46D: 0x52D6, //CJK UNIFIED IDEOGRAPH - 0xD46E: 0x52D3, //CJK UNIFIED IDEOGRAPH - 0xD46F: 0x532D, //CJK UNIFIED IDEOGRAPH - 0xD470: 0x539C, //CJK UNIFIED IDEOGRAPH - 0xD471: 0x5575, //CJK UNIFIED IDEOGRAPH - 0xD472: 0x5576, //CJK UNIFIED IDEOGRAPH - 0xD473: 0x553C, //CJK UNIFIED IDEOGRAPH - 0xD474: 0x554D, //CJK UNIFIED IDEOGRAPH - 0xD475: 0x5550, //CJK UNIFIED IDEOGRAPH - 0xD476: 0x5534, //CJK UNIFIED IDEOGRAPH - 0xD477: 0x552A, //CJK UNIFIED IDEOGRAPH - 0xD478: 0x5551, //CJK UNIFIED IDEOGRAPH - 0xD479: 0x5562, //CJK UNIFIED IDEOGRAPH - 0xD47A: 0x5536, //CJK UNIFIED IDEOGRAPH - 0xD47B: 0x5535, //CJK UNIFIED IDEOGRAPH - 0xD47C: 0x5530, //CJK UNIFIED IDEOGRAPH - 0xD47D: 0x5552, //CJK UNIFIED IDEOGRAPH - 0xD47E: 0x5545, //CJK UNIFIED IDEOGRAPH - 0xD4A1: 0x550C, //CJK UNIFIED IDEOGRAPH - 0xD4A2: 0x5532, //CJK UNIFIED IDEOGRAPH - 0xD4A3: 0x5565, //CJK UNIFIED IDEOGRAPH - 0xD4A4: 0x554E, //CJK UNIFIED IDEOGRAPH - 0xD4A5: 0x5539, //CJK UNIFIED IDEOGRAPH - 0xD4A6: 0x5548, //CJK UNIFIED IDEOGRAPH - 0xD4A7: 0x552D, //CJK UNIFIED IDEOGRAPH - 0xD4A8: 0x553B, //CJK UNIFIED IDEOGRAPH - 0xD4A9: 0x5540, //CJK UNIFIED IDEOGRAPH - 0xD4AA: 0x554B, //CJK UNIFIED IDEOGRAPH - 0xD4AB: 0x570A, //CJK UNIFIED IDEOGRAPH - 0xD4AC: 0x5707, //CJK UNIFIED IDEOGRAPH - 0xD4AD: 0x57FB, //CJK UNIFIED IDEOGRAPH - 0xD4AE: 0x5814, //CJK UNIFIED IDEOGRAPH - 0xD4AF: 0x57E2, //CJK UNIFIED IDEOGRAPH - 0xD4B0: 0x57F6, //CJK UNIFIED IDEOGRAPH - 0xD4B1: 0x57DC, //CJK UNIFIED IDEOGRAPH - 0xD4B2: 0x57F4, //CJK UNIFIED IDEOGRAPH - 0xD4B3: 0x5800, //CJK UNIFIED IDEOGRAPH - 0xD4B4: 0x57ED, //CJK UNIFIED IDEOGRAPH - 0xD4B5: 0x57FD, //CJK UNIFIED IDEOGRAPH - 0xD4B6: 0x5808, //CJK UNIFIED IDEOGRAPH - 0xD4B7: 0x57F8, //CJK UNIFIED IDEOGRAPH - 0xD4B8: 0x580B, //CJK UNIFIED IDEOGRAPH - 0xD4B9: 0x57F3, //CJK UNIFIED IDEOGRAPH - 0xD4BA: 0x57CF, //CJK UNIFIED IDEOGRAPH - 0xD4BB: 0x5807, //CJK UNIFIED IDEOGRAPH - 0xD4BC: 0x57EE, //CJK UNIFIED IDEOGRAPH - 0xD4BD: 0x57E3, //CJK UNIFIED IDEOGRAPH - 0xD4BE: 0x57F2, //CJK UNIFIED IDEOGRAPH - 0xD4BF: 0x57E5, //CJK UNIFIED IDEOGRAPH - 0xD4C0: 0x57EC, //CJK UNIFIED IDEOGRAPH - 0xD4C1: 0x57E1, //CJK UNIFIED IDEOGRAPH - 0xD4C2: 0x580E, //CJK UNIFIED IDEOGRAPH - 0xD4C3: 0x57FC, //CJK UNIFIED IDEOGRAPH - 0xD4C4: 0x5810, //CJK UNIFIED IDEOGRAPH - 0xD4C5: 0x57E7, //CJK UNIFIED IDEOGRAPH - 0xD4C6: 0x5801, //CJK UNIFIED IDEOGRAPH - 0xD4C7: 0x580C, //CJK UNIFIED IDEOGRAPH - 0xD4C8: 0x57F1, //CJK UNIFIED IDEOGRAPH - 0xD4C9: 0x57E9, //CJK UNIFIED IDEOGRAPH - 0xD4CA: 0x57F0, //CJK UNIFIED IDEOGRAPH - 0xD4CB: 0x580D, //CJK UNIFIED IDEOGRAPH - 0xD4CC: 0x5804, //CJK UNIFIED IDEOGRAPH - 0xD4CD: 0x595C, //CJK UNIFIED IDEOGRAPH - 0xD4CE: 0x5A60, //CJK UNIFIED IDEOGRAPH - 0xD4CF: 0x5A58, //CJK UNIFIED IDEOGRAPH - 0xD4D0: 0x5A55, //CJK UNIFIED IDEOGRAPH - 0xD4D1: 0x5A67, //CJK UNIFIED IDEOGRAPH - 0xD4D2: 0x5A5E, //CJK UNIFIED IDEOGRAPH - 0xD4D3: 0x5A38, //CJK UNIFIED IDEOGRAPH - 0xD4D4: 0x5A35, //CJK UNIFIED IDEOGRAPH - 0xD4D5: 0x5A6D, //CJK UNIFIED IDEOGRAPH - 0xD4D6: 0x5A50, //CJK UNIFIED IDEOGRAPH - 0xD4D7: 0x5A5F, //CJK UNIFIED IDEOGRAPH - 0xD4D8: 0x5A65, //CJK UNIFIED IDEOGRAPH - 0xD4D9: 0x5A6C, //CJK UNIFIED IDEOGRAPH - 0xD4DA: 0x5A53, //CJK UNIFIED IDEOGRAPH - 0xD4DB: 0x5A64, //CJK UNIFIED IDEOGRAPH - 0xD4DC: 0x5A57, //CJK UNIFIED IDEOGRAPH - 0xD4DD: 0x5A43, //CJK UNIFIED IDEOGRAPH - 0xD4DE: 0x5A5D, //CJK UNIFIED IDEOGRAPH - 0xD4DF: 0x5A52, //CJK UNIFIED IDEOGRAPH - 0xD4E0: 0x5A44, //CJK UNIFIED IDEOGRAPH - 0xD4E1: 0x5A5B, //CJK UNIFIED IDEOGRAPH - 0xD4E2: 0x5A48, //CJK UNIFIED IDEOGRAPH - 0xD4E3: 0x5A8E, //CJK UNIFIED IDEOGRAPH - 0xD4E4: 0x5A3E, //CJK UNIFIED IDEOGRAPH - 0xD4E5: 0x5A4D, //CJK UNIFIED IDEOGRAPH - 0xD4E6: 0x5A39, //CJK UNIFIED IDEOGRAPH - 0xD4E7: 0x5A4C, //CJK UNIFIED IDEOGRAPH - 0xD4E8: 0x5A70, //CJK UNIFIED IDEOGRAPH - 0xD4E9: 0x5A69, //CJK UNIFIED IDEOGRAPH - 0xD4EA: 0x5A47, //CJK UNIFIED IDEOGRAPH - 0xD4EB: 0x5A51, //CJK UNIFIED IDEOGRAPH - 0xD4EC: 0x5A56, //CJK UNIFIED IDEOGRAPH - 0xD4ED: 0x5A42, //CJK UNIFIED IDEOGRAPH - 0xD4EE: 0x5A5C, //CJK UNIFIED IDEOGRAPH - 0xD4EF: 0x5B72, //CJK UNIFIED IDEOGRAPH - 0xD4F0: 0x5B6E, //CJK UNIFIED IDEOGRAPH - 0xD4F1: 0x5BC1, //CJK UNIFIED IDEOGRAPH - 0xD4F2: 0x5BC0, //CJK UNIFIED IDEOGRAPH - 0xD4F3: 0x5C59, //CJK UNIFIED IDEOGRAPH - 0xD4F4: 0x5D1E, //CJK UNIFIED IDEOGRAPH - 0xD4F5: 0x5D0B, //CJK UNIFIED IDEOGRAPH - 0xD4F6: 0x5D1D, //CJK UNIFIED IDEOGRAPH - 0xD4F7: 0x5D1A, //CJK UNIFIED IDEOGRAPH - 0xD4F8: 0x5D20, //CJK UNIFIED IDEOGRAPH - 0xD4F9: 0x5D0C, //CJK UNIFIED IDEOGRAPH - 0xD4FA: 0x5D28, //CJK UNIFIED IDEOGRAPH - 0xD4FB: 0x5D0D, //CJK UNIFIED IDEOGRAPH - 0xD4FC: 0x5D26, //CJK UNIFIED IDEOGRAPH - 0xD4FD: 0x5D25, //CJK UNIFIED IDEOGRAPH - 0xD4FE: 0x5D0F, //CJK UNIFIED IDEOGRAPH - 0xD540: 0x5D30, //CJK UNIFIED IDEOGRAPH - 0xD541: 0x5D12, //CJK UNIFIED IDEOGRAPH - 0xD542: 0x5D23, //CJK UNIFIED IDEOGRAPH - 0xD543: 0x5D1F, //CJK UNIFIED IDEOGRAPH - 0xD544: 0x5D2E, //CJK UNIFIED IDEOGRAPH - 0xD545: 0x5E3E, //CJK UNIFIED IDEOGRAPH - 0xD546: 0x5E34, //CJK UNIFIED IDEOGRAPH - 0xD547: 0x5EB1, //CJK UNIFIED IDEOGRAPH - 0xD548: 0x5EB4, //CJK UNIFIED IDEOGRAPH - 0xD549: 0x5EB9, //CJK UNIFIED IDEOGRAPH - 0xD54A: 0x5EB2, //CJK UNIFIED IDEOGRAPH - 0xD54B: 0x5EB3, //CJK UNIFIED IDEOGRAPH - 0xD54C: 0x5F36, //CJK UNIFIED IDEOGRAPH - 0xD54D: 0x5F38, //CJK UNIFIED IDEOGRAPH - 0xD54E: 0x5F9B, //CJK UNIFIED IDEOGRAPH - 0xD54F: 0x5F96, //CJK UNIFIED IDEOGRAPH - 0xD550: 0x5F9F, //CJK UNIFIED IDEOGRAPH - 0xD551: 0x608A, //CJK UNIFIED IDEOGRAPH - 0xD552: 0x6090, //CJK UNIFIED IDEOGRAPH - 0xD553: 0x6086, //CJK UNIFIED IDEOGRAPH - 0xD554: 0x60BE, //CJK UNIFIED IDEOGRAPH - 0xD555: 0x60B0, //CJK UNIFIED IDEOGRAPH - 0xD556: 0x60BA, //CJK UNIFIED IDEOGRAPH - 0xD557: 0x60D3, //CJK UNIFIED IDEOGRAPH - 0xD558: 0x60D4, //CJK UNIFIED IDEOGRAPH - 0xD559: 0x60CF, //CJK UNIFIED IDEOGRAPH - 0xD55A: 0x60E4, //CJK UNIFIED IDEOGRAPH - 0xD55B: 0x60D9, //CJK UNIFIED IDEOGRAPH - 0xD55C: 0x60DD, //CJK UNIFIED IDEOGRAPH - 0xD55D: 0x60C8, //CJK UNIFIED IDEOGRAPH - 0xD55E: 0x60B1, //CJK UNIFIED IDEOGRAPH - 0xD55F: 0x60DB, //CJK UNIFIED IDEOGRAPH - 0xD560: 0x60B7, //CJK UNIFIED IDEOGRAPH - 0xD561: 0x60CA, //CJK UNIFIED IDEOGRAPH - 0xD562: 0x60BF, //CJK UNIFIED IDEOGRAPH - 0xD563: 0x60C3, //CJK UNIFIED IDEOGRAPH - 0xD564: 0x60CD, //CJK UNIFIED IDEOGRAPH - 0xD565: 0x60C0, //CJK UNIFIED IDEOGRAPH - 0xD566: 0x6332, //CJK UNIFIED IDEOGRAPH - 0xD567: 0x6365, //CJK UNIFIED IDEOGRAPH - 0xD568: 0x638A, //CJK UNIFIED IDEOGRAPH - 0xD569: 0x6382, //CJK UNIFIED IDEOGRAPH - 0xD56A: 0x637D, //CJK UNIFIED IDEOGRAPH - 0xD56B: 0x63BD, //CJK UNIFIED IDEOGRAPH - 0xD56C: 0x639E, //CJK UNIFIED IDEOGRAPH - 0xD56D: 0x63AD, //CJK UNIFIED IDEOGRAPH - 0xD56E: 0x639D, //CJK UNIFIED IDEOGRAPH - 0xD56F: 0x6397, //CJK UNIFIED IDEOGRAPH - 0xD570: 0x63AB, //CJK UNIFIED IDEOGRAPH - 0xD571: 0x638E, //CJK UNIFIED IDEOGRAPH - 0xD572: 0x636F, //CJK UNIFIED IDEOGRAPH - 0xD573: 0x6387, //CJK UNIFIED IDEOGRAPH - 0xD574: 0x6390, //CJK UNIFIED IDEOGRAPH - 0xD575: 0x636E, //CJK UNIFIED IDEOGRAPH - 0xD576: 0x63AF, //CJK UNIFIED IDEOGRAPH - 0xD577: 0x6375, //CJK UNIFIED IDEOGRAPH - 0xD578: 0x639C, //CJK UNIFIED IDEOGRAPH - 0xD579: 0x636D, //CJK UNIFIED IDEOGRAPH - 0xD57A: 0x63AE, //CJK UNIFIED IDEOGRAPH - 0xD57B: 0x637C, //CJK UNIFIED IDEOGRAPH - 0xD57C: 0x63A4, //CJK UNIFIED IDEOGRAPH - 0xD57D: 0x633B, //CJK UNIFIED IDEOGRAPH - 0xD57E: 0x639F, //CJK UNIFIED IDEOGRAPH - 0xD5A1: 0x6378, //CJK UNIFIED IDEOGRAPH - 0xD5A2: 0x6385, //CJK UNIFIED IDEOGRAPH - 0xD5A3: 0x6381, //CJK UNIFIED IDEOGRAPH - 0xD5A4: 0x6391, //CJK UNIFIED IDEOGRAPH - 0xD5A5: 0x638D, //CJK UNIFIED IDEOGRAPH - 0xD5A6: 0x6370, //CJK UNIFIED IDEOGRAPH - 0xD5A7: 0x6553, //CJK UNIFIED IDEOGRAPH - 0xD5A8: 0x65CD, //CJK UNIFIED IDEOGRAPH - 0xD5A9: 0x6665, //CJK UNIFIED IDEOGRAPH - 0xD5AA: 0x6661, //CJK UNIFIED IDEOGRAPH - 0xD5AB: 0x665B, //CJK UNIFIED IDEOGRAPH - 0xD5AC: 0x6659, //CJK UNIFIED IDEOGRAPH - 0xD5AD: 0x665C, //CJK UNIFIED IDEOGRAPH - 0xD5AE: 0x6662, //CJK UNIFIED IDEOGRAPH - 0xD5AF: 0x6718, //CJK UNIFIED IDEOGRAPH - 0xD5B0: 0x6879, //CJK UNIFIED IDEOGRAPH - 0xD5B1: 0x6887, //CJK UNIFIED IDEOGRAPH - 0xD5B2: 0x6890, //CJK UNIFIED IDEOGRAPH - 0xD5B3: 0x689C, //CJK UNIFIED IDEOGRAPH - 0xD5B4: 0x686D, //CJK UNIFIED IDEOGRAPH - 0xD5B5: 0x686E, //CJK UNIFIED IDEOGRAPH - 0xD5B6: 0x68AE, //CJK UNIFIED IDEOGRAPH - 0xD5B7: 0x68AB, //CJK UNIFIED IDEOGRAPH - 0xD5B8: 0x6956, //CJK UNIFIED IDEOGRAPH - 0xD5B9: 0x686F, //CJK UNIFIED IDEOGRAPH - 0xD5BA: 0x68A3, //CJK UNIFIED IDEOGRAPH - 0xD5BB: 0x68AC, //CJK UNIFIED IDEOGRAPH - 0xD5BC: 0x68A9, //CJK UNIFIED IDEOGRAPH - 0xD5BD: 0x6875, //CJK UNIFIED IDEOGRAPH - 0xD5BE: 0x6874, //CJK UNIFIED IDEOGRAPH - 0xD5BF: 0x68B2, //CJK UNIFIED IDEOGRAPH - 0xD5C0: 0x688F, //CJK UNIFIED IDEOGRAPH - 0xD5C1: 0x6877, //CJK UNIFIED IDEOGRAPH - 0xD5C2: 0x6892, //CJK UNIFIED IDEOGRAPH - 0xD5C3: 0x687C, //CJK UNIFIED IDEOGRAPH - 0xD5C4: 0x686B, //CJK UNIFIED IDEOGRAPH - 0xD5C5: 0x6872, //CJK UNIFIED IDEOGRAPH - 0xD5C6: 0x68AA, //CJK UNIFIED IDEOGRAPH - 0xD5C7: 0x6880, //CJK UNIFIED IDEOGRAPH - 0xD5C8: 0x6871, //CJK UNIFIED IDEOGRAPH - 0xD5C9: 0x687E, //CJK UNIFIED IDEOGRAPH - 0xD5CA: 0x689B, //CJK UNIFIED IDEOGRAPH - 0xD5CB: 0x6896, //CJK UNIFIED IDEOGRAPH - 0xD5CC: 0x688B, //CJK UNIFIED IDEOGRAPH - 0xD5CD: 0x68A0, //CJK UNIFIED IDEOGRAPH - 0xD5CE: 0x6889, //CJK UNIFIED IDEOGRAPH - 0xD5CF: 0x68A4, //CJK UNIFIED IDEOGRAPH - 0xD5D0: 0x6878, //CJK UNIFIED IDEOGRAPH - 0xD5D1: 0x687B, //CJK UNIFIED IDEOGRAPH - 0xD5D2: 0x6891, //CJK UNIFIED IDEOGRAPH - 0xD5D3: 0x688C, //CJK UNIFIED IDEOGRAPH - 0xD5D4: 0x688A, //CJK UNIFIED IDEOGRAPH - 0xD5D5: 0x687D, //CJK UNIFIED IDEOGRAPH - 0xD5D6: 0x6B36, //CJK UNIFIED IDEOGRAPH - 0xD5D7: 0x6B33, //CJK UNIFIED IDEOGRAPH - 0xD5D8: 0x6B37, //CJK UNIFIED IDEOGRAPH - 0xD5D9: 0x6B38, //CJK UNIFIED IDEOGRAPH - 0xD5DA: 0x6B91, //CJK UNIFIED IDEOGRAPH - 0xD5DB: 0x6B8F, //CJK UNIFIED IDEOGRAPH - 0xD5DC: 0x6B8D, //CJK UNIFIED IDEOGRAPH - 0xD5DD: 0x6B8E, //CJK UNIFIED IDEOGRAPH - 0xD5DE: 0x6B8C, //CJK UNIFIED IDEOGRAPH - 0xD5DF: 0x6C2A, //CJK UNIFIED IDEOGRAPH - 0xD5E0: 0x6DC0, //CJK UNIFIED IDEOGRAPH - 0xD5E1: 0x6DAB, //CJK UNIFIED IDEOGRAPH - 0xD5E2: 0x6DB4, //CJK UNIFIED IDEOGRAPH - 0xD5E3: 0x6DB3, //CJK UNIFIED IDEOGRAPH - 0xD5E4: 0x6E74, //CJK UNIFIED IDEOGRAPH - 0xD5E5: 0x6DAC, //CJK UNIFIED IDEOGRAPH - 0xD5E6: 0x6DE9, //CJK UNIFIED IDEOGRAPH - 0xD5E7: 0x6DE2, //CJK UNIFIED IDEOGRAPH - 0xD5E8: 0x6DB7, //CJK UNIFIED IDEOGRAPH - 0xD5E9: 0x6DF6, //CJK UNIFIED IDEOGRAPH - 0xD5EA: 0x6DD4, //CJK UNIFIED IDEOGRAPH - 0xD5EB: 0x6E00, //CJK UNIFIED IDEOGRAPH - 0xD5EC: 0x6DC8, //CJK UNIFIED IDEOGRAPH - 0xD5ED: 0x6DE0, //CJK UNIFIED IDEOGRAPH - 0xD5EE: 0x6DDF, //CJK UNIFIED IDEOGRAPH - 0xD5EF: 0x6DD6, //CJK UNIFIED IDEOGRAPH - 0xD5F0: 0x6DBE, //CJK UNIFIED IDEOGRAPH - 0xD5F1: 0x6DE5, //CJK UNIFIED IDEOGRAPH - 0xD5F2: 0x6DDC, //CJK UNIFIED IDEOGRAPH - 0xD5F3: 0x6DDD, //CJK UNIFIED IDEOGRAPH - 0xD5F4: 0x6DDB, //CJK UNIFIED IDEOGRAPH - 0xD5F5: 0x6DF4, //CJK UNIFIED IDEOGRAPH - 0xD5F6: 0x6DCA, //CJK UNIFIED IDEOGRAPH - 0xD5F7: 0x6DBD, //CJK UNIFIED IDEOGRAPH - 0xD5F8: 0x6DED, //CJK UNIFIED IDEOGRAPH - 0xD5F9: 0x6DF0, //CJK UNIFIED IDEOGRAPH - 0xD5FA: 0x6DBA, //CJK UNIFIED IDEOGRAPH - 0xD5FB: 0x6DD5, //CJK UNIFIED IDEOGRAPH - 0xD5FC: 0x6DC2, //CJK UNIFIED IDEOGRAPH - 0xD5FD: 0x6DCF, //CJK UNIFIED IDEOGRAPH - 0xD5FE: 0x6DC9, //CJK UNIFIED IDEOGRAPH - 0xD640: 0x6DD0, //CJK UNIFIED IDEOGRAPH - 0xD641: 0x6DF2, //CJK UNIFIED IDEOGRAPH - 0xD642: 0x6DD3, //CJK UNIFIED IDEOGRAPH - 0xD643: 0x6DFD, //CJK UNIFIED IDEOGRAPH - 0xD644: 0x6DD7, //CJK UNIFIED IDEOGRAPH - 0xD645: 0x6DCD, //CJK UNIFIED IDEOGRAPH - 0xD646: 0x6DE3, //CJK UNIFIED IDEOGRAPH - 0xD647: 0x6DBB, //CJK UNIFIED IDEOGRAPH - 0xD648: 0x70FA, //CJK UNIFIED IDEOGRAPH - 0xD649: 0x710D, //CJK UNIFIED IDEOGRAPH - 0xD64A: 0x70F7, //CJK UNIFIED IDEOGRAPH - 0xD64B: 0x7117, //CJK UNIFIED IDEOGRAPH - 0xD64C: 0x70F4, //CJK UNIFIED IDEOGRAPH - 0xD64D: 0x710C, //CJK UNIFIED IDEOGRAPH - 0xD64E: 0x70F0, //CJK UNIFIED IDEOGRAPH - 0xD64F: 0x7104, //CJK UNIFIED IDEOGRAPH - 0xD650: 0x70F3, //CJK UNIFIED IDEOGRAPH - 0xD651: 0x7110, //CJK UNIFIED IDEOGRAPH - 0xD652: 0x70FC, //CJK UNIFIED IDEOGRAPH - 0xD653: 0x70FF, //CJK UNIFIED IDEOGRAPH - 0xD654: 0x7106, //CJK UNIFIED IDEOGRAPH - 0xD655: 0x7113, //CJK UNIFIED IDEOGRAPH - 0xD656: 0x7100, //CJK UNIFIED IDEOGRAPH - 0xD657: 0x70F8, //CJK UNIFIED IDEOGRAPH - 0xD658: 0x70F6, //CJK UNIFIED IDEOGRAPH - 0xD659: 0x710B, //CJK UNIFIED IDEOGRAPH - 0xD65A: 0x7102, //CJK UNIFIED IDEOGRAPH - 0xD65B: 0x710E, //CJK UNIFIED IDEOGRAPH - 0xD65C: 0x727E, //CJK UNIFIED IDEOGRAPH - 0xD65D: 0x727B, //CJK UNIFIED IDEOGRAPH - 0xD65E: 0x727C, //CJK UNIFIED IDEOGRAPH - 0xD65F: 0x727F, //CJK UNIFIED IDEOGRAPH - 0xD660: 0x731D, //CJK UNIFIED IDEOGRAPH - 0xD661: 0x7317, //CJK UNIFIED IDEOGRAPH - 0xD662: 0x7307, //CJK UNIFIED IDEOGRAPH - 0xD663: 0x7311, //CJK UNIFIED IDEOGRAPH - 0xD664: 0x7318, //CJK UNIFIED IDEOGRAPH - 0xD665: 0x730A, //CJK UNIFIED IDEOGRAPH - 0xD666: 0x7308, //CJK UNIFIED IDEOGRAPH - 0xD667: 0x72FF, //CJK UNIFIED IDEOGRAPH - 0xD668: 0x730F, //CJK UNIFIED IDEOGRAPH - 0xD669: 0x731E, //CJK UNIFIED IDEOGRAPH - 0xD66A: 0x7388, //CJK UNIFIED IDEOGRAPH - 0xD66B: 0x73F6, //CJK UNIFIED IDEOGRAPH - 0xD66C: 0x73F8, //CJK UNIFIED IDEOGRAPH - 0xD66D: 0x73F5, //CJK UNIFIED IDEOGRAPH - 0xD66E: 0x7404, //CJK UNIFIED IDEOGRAPH - 0xD66F: 0x7401, //CJK UNIFIED IDEOGRAPH - 0xD670: 0x73FD, //CJK UNIFIED IDEOGRAPH - 0xD671: 0x7407, //CJK UNIFIED IDEOGRAPH - 0xD672: 0x7400, //CJK UNIFIED IDEOGRAPH - 0xD673: 0x73FA, //CJK UNIFIED IDEOGRAPH - 0xD674: 0x73FC, //CJK UNIFIED IDEOGRAPH - 0xD675: 0x73FF, //CJK UNIFIED IDEOGRAPH - 0xD676: 0x740C, //CJK UNIFIED IDEOGRAPH - 0xD677: 0x740B, //CJK UNIFIED IDEOGRAPH - 0xD678: 0x73F4, //CJK UNIFIED IDEOGRAPH - 0xD679: 0x7408, //CJK UNIFIED IDEOGRAPH - 0xD67A: 0x7564, //CJK UNIFIED IDEOGRAPH - 0xD67B: 0x7563, //CJK UNIFIED IDEOGRAPH - 0xD67C: 0x75CE, //CJK UNIFIED IDEOGRAPH - 0xD67D: 0x75D2, //CJK UNIFIED IDEOGRAPH - 0xD67E: 0x75CF, //CJK UNIFIED IDEOGRAPH - 0xD6A1: 0x75CB, //CJK UNIFIED IDEOGRAPH - 0xD6A2: 0x75CC, //CJK UNIFIED IDEOGRAPH - 0xD6A3: 0x75D1, //CJK UNIFIED IDEOGRAPH - 0xD6A4: 0x75D0, //CJK UNIFIED IDEOGRAPH - 0xD6A5: 0x768F, //CJK UNIFIED IDEOGRAPH - 0xD6A6: 0x7689, //CJK UNIFIED IDEOGRAPH - 0xD6A7: 0x76D3, //CJK UNIFIED IDEOGRAPH - 0xD6A8: 0x7739, //CJK UNIFIED IDEOGRAPH - 0xD6A9: 0x772F, //CJK UNIFIED IDEOGRAPH - 0xD6AA: 0x772D, //CJK UNIFIED IDEOGRAPH - 0xD6AB: 0x7731, //CJK UNIFIED IDEOGRAPH - 0xD6AC: 0x7732, //CJK UNIFIED IDEOGRAPH - 0xD6AD: 0x7734, //CJK UNIFIED IDEOGRAPH - 0xD6AE: 0x7733, //CJK UNIFIED IDEOGRAPH - 0xD6AF: 0x773D, //CJK UNIFIED IDEOGRAPH - 0xD6B0: 0x7725, //CJK UNIFIED IDEOGRAPH - 0xD6B1: 0x773B, //CJK UNIFIED IDEOGRAPH - 0xD6B2: 0x7735, //CJK UNIFIED IDEOGRAPH - 0xD6B3: 0x7848, //CJK UNIFIED IDEOGRAPH - 0xD6B4: 0x7852, //CJK UNIFIED IDEOGRAPH - 0xD6B5: 0x7849, //CJK UNIFIED IDEOGRAPH - 0xD6B6: 0x784D, //CJK UNIFIED IDEOGRAPH - 0xD6B7: 0x784A, //CJK UNIFIED IDEOGRAPH - 0xD6B8: 0x784C, //CJK UNIFIED IDEOGRAPH - 0xD6B9: 0x7826, //CJK UNIFIED IDEOGRAPH - 0xD6BA: 0x7845, //CJK UNIFIED IDEOGRAPH - 0xD6BB: 0x7850, //CJK UNIFIED IDEOGRAPH - 0xD6BC: 0x7964, //CJK UNIFIED IDEOGRAPH - 0xD6BD: 0x7967, //CJK UNIFIED IDEOGRAPH - 0xD6BE: 0x7969, //CJK UNIFIED IDEOGRAPH - 0xD6BF: 0x796A, //CJK UNIFIED IDEOGRAPH - 0xD6C0: 0x7963, //CJK UNIFIED IDEOGRAPH - 0xD6C1: 0x796B, //CJK UNIFIED IDEOGRAPH - 0xD6C2: 0x7961, //CJK UNIFIED IDEOGRAPH - 0xD6C3: 0x79BB, //CJK UNIFIED IDEOGRAPH - 0xD6C4: 0x79FA, //CJK UNIFIED IDEOGRAPH - 0xD6C5: 0x79F8, //CJK UNIFIED IDEOGRAPH - 0xD6C6: 0x79F6, //CJK UNIFIED IDEOGRAPH - 0xD6C7: 0x79F7, //CJK UNIFIED IDEOGRAPH - 0xD6C8: 0x7A8F, //CJK UNIFIED IDEOGRAPH - 0xD6C9: 0x7A94, //CJK UNIFIED IDEOGRAPH - 0xD6CA: 0x7A90, //CJK UNIFIED IDEOGRAPH - 0xD6CB: 0x7B35, //CJK UNIFIED IDEOGRAPH - 0xD6CC: 0x7B47, //CJK UNIFIED IDEOGRAPH - 0xD6CD: 0x7B34, //CJK UNIFIED IDEOGRAPH - 0xD6CE: 0x7B25, //CJK UNIFIED IDEOGRAPH - 0xD6CF: 0x7B30, //CJK UNIFIED IDEOGRAPH - 0xD6D0: 0x7B22, //CJK UNIFIED IDEOGRAPH - 0xD6D1: 0x7B24, //CJK UNIFIED IDEOGRAPH - 0xD6D2: 0x7B33, //CJK UNIFIED IDEOGRAPH - 0xD6D3: 0x7B18, //CJK UNIFIED IDEOGRAPH - 0xD6D4: 0x7B2A, //CJK UNIFIED IDEOGRAPH - 0xD6D5: 0x7B1D, //CJK UNIFIED IDEOGRAPH - 0xD6D6: 0x7B31, //CJK UNIFIED IDEOGRAPH - 0xD6D7: 0x7B2B, //CJK UNIFIED IDEOGRAPH - 0xD6D8: 0x7B2D, //CJK UNIFIED IDEOGRAPH - 0xD6D9: 0x7B2F, //CJK UNIFIED IDEOGRAPH - 0xD6DA: 0x7B32, //CJK UNIFIED IDEOGRAPH - 0xD6DB: 0x7B38, //CJK UNIFIED IDEOGRAPH - 0xD6DC: 0x7B1A, //CJK UNIFIED IDEOGRAPH - 0xD6DD: 0x7B23, //CJK UNIFIED IDEOGRAPH - 0xD6DE: 0x7C94, //CJK UNIFIED IDEOGRAPH - 0xD6DF: 0x7C98, //CJK UNIFIED IDEOGRAPH - 0xD6E0: 0x7C96, //CJK UNIFIED IDEOGRAPH - 0xD6E1: 0x7CA3, //CJK UNIFIED IDEOGRAPH - 0xD6E2: 0x7D35, //CJK UNIFIED IDEOGRAPH - 0xD6E3: 0x7D3D, //CJK UNIFIED IDEOGRAPH - 0xD6E4: 0x7D38, //CJK UNIFIED IDEOGRAPH - 0xD6E5: 0x7D36, //CJK UNIFIED IDEOGRAPH - 0xD6E6: 0x7D3A, //CJK UNIFIED IDEOGRAPH - 0xD6E7: 0x7D45, //CJK UNIFIED IDEOGRAPH - 0xD6E8: 0x7D2C, //CJK UNIFIED IDEOGRAPH - 0xD6E9: 0x7D29, //CJK UNIFIED IDEOGRAPH - 0xD6EA: 0x7D41, //CJK UNIFIED IDEOGRAPH - 0xD6EB: 0x7D47, //CJK UNIFIED IDEOGRAPH - 0xD6EC: 0x7D3E, //CJK UNIFIED IDEOGRAPH - 0xD6ED: 0x7D3F, //CJK UNIFIED IDEOGRAPH - 0xD6EE: 0x7D4A, //CJK UNIFIED IDEOGRAPH - 0xD6EF: 0x7D3B, //CJK UNIFIED IDEOGRAPH - 0xD6F0: 0x7D28, //CJK UNIFIED IDEOGRAPH - 0xD6F1: 0x7F63, //CJK UNIFIED IDEOGRAPH - 0xD6F2: 0x7F95, //CJK UNIFIED IDEOGRAPH - 0xD6F3: 0x7F9C, //CJK UNIFIED IDEOGRAPH - 0xD6F4: 0x7F9D, //CJK UNIFIED IDEOGRAPH - 0xD6F5: 0x7F9B, //CJK UNIFIED IDEOGRAPH - 0xD6F6: 0x7FCA, //CJK UNIFIED IDEOGRAPH - 0xD6F7: 0x7FCB, //CJK UNIFIED IDEOGRAPH - 0xD6F8: 0x7FCD, //CJK UNIFIED IDEOGRAPH - 0xD6F9: 0x7FD0, //CJK UNIFIED IDEOGRAPH - 0xD6FA: 0x7FD1, //CJK UNIFIED IDEOGRAPH - 0xD6FB: 0x7FC7, //CJK UNIFIED IDEOGRAPH - 0xD6FC: 0x7FCF, //CJK UNIFIED IDEOGRAPH - 0xD6FD: 0x7FC9, //CJK UNIFIED IDEOGRAPH - 0xD6FE: 0x801F, //CJK UNIFIED IDEOGRAPH - 0xD740: 0x801E, //CJK UNIFIED IDEOGRAPH - 0xD741: 0x801B, //CJK UNIFIED IDEOGRAPH - 0xD742: 0x8047, //CJK UNIFIED IDEOGRAPH - 0xD743: 0x8043, //CJK UNIFIED IDEOGRAPH - 0xD744: 0x8048, //CJK UNIFIED IDEOGRAPH - 0xD745: 0x8118, //CJK UNIFIED IDEOGRAPH - 0xD746: 0x8125, //CJK UNIFIED IDEOGRAPH - 0xD747: 0x8119, //CJK UNIFIED IDEOGRAPH - 0xD748: 0x811B, //CJK UNIFIED IDEOGRAPH - 0xD749: 0x812D, //CJK UNIFIED IDEOGRAPH - 0xD74A: 0x811F, //CJK UNIFIED IDEOGRAPH - 0xD74B: 0x812C, //CJK UNIFIED IDEOGRAPH - 0xD74C: 0x811E, //CJK UNIFIED IDEOGRAPH - 0xD74D: 0x8121, //CJK UNIFIED IDEOGRAPH - 0xD74E: 0x8115, //CJK UNIFIED IDEOGRAPH - 0xD74F: 0x8127, //CJK UNIFIED IDEOGRAPH - 0xD750: 0x811D, //CJK UNIFIED IDEOGRAPH - 0xD751: 0x8122, //CJK UNIFIED IDEOGRAPH - 0xD752: 0x8211, //CJK UNIFIED IDEOGRAPH - 0xD753: 0x8238, //CJK UNIFIED IDEOGRAPH - 0xD754: 0x8233, //CJK UNIFIED IDEOGRAPH - 0xD755: 0x823A, //CJK UNIFIED IDEOGRAPH - 0xD756: 0x8234, //CJK UNIFIED IDEOGRAPH - 0xD757: 0x8232, //CJK UNIFIED IDEOGRAPH - 0xD758: 0x8274, //CJK UNIFIED IDEOGRAPH - 0xD759: 0x8390, //CJK UNIFIED IDEOGRAPH - 0xD75A: 0x83A3, //CJK UNIFIED IDEOGRAPH - 0xD75B: 0x83A8, //CJK UNIFIED IDEOGRAPH - 0xD75C: 0x838D, //CJK UNIFIED IDEOGRAPH - 0xD75D: 0x837A, //CJK UNIFIED IDEOGRAPH - 0xD75E: 0x8373, //CJK UNIFIED IDEOGRAPH - 0xD75F: 0x83A4, //CJK UNIFIED IDEOGRAPH - 0xD760: 0x8374, //CJK UNIFIED IDEOGRAPH - 0xD761: 0x838F, //CJK UNIFIED IDEOGRAPH - 0xD762: 0x8381, //CJK UNIFIED IDEOGRAPH - 0xD763: 0x8395, //CJK UNIFIED IDEOGRAPH - 0xD764: 0x8399, //CJK UNIFIED IDEOGRAPH - 0xD765: 0x8375, //CJK UNIFIED IDEOGRAPH - 0xD766: 0x8394, //CJK UNIFIED IDEOGRAPH - 0xD767: 0x83A9, //CJK UNIFIED IDEOGRAPH - 0xD768: 0x837D, //CJK UNIFIED IDEOGRAPH - 0xD769: 0x8383, //CJK UNIFIED IDEOGRAPH - 0xD76A: 0x838C, //CJK UNIFIED IDEOGRAPH - 0xD76B: 0x839D, //CJK UNIFIED IDEOGRAPH - 0xD76C: 0x839B, //CJK UNIFIED IDEOGRAPH - 0xD76D: 0x83AA, //CJK UNIFIED IDEOGRAPH - 0xD76E: 0x838B, //CJK UNIFIED IDEOGRAPH - 0xD76F: 0x837E, //CJK UNIFIED IDEOGRAPH - 0xD770: 0x83A5, //CJK UNIFIED IDEOGRAPH - 0xD771: 0x83AF, //CJK UNIFIED IDEOGRAPH - 0xD772: 0x8388, //CJK UNIFIED IDEOGRAPH - 0xD773: 0x8397, //CJK UNIFIED IDEOGRAPH - 0xD774: 0x83B0, //CJK UNIFIED IDEOGRAPH - 0xD775: 0x837F, //CJK UNIFIED IDEOGRAPH - 0xD776: 0x83A6, //CJK UNIFIED IDEOGRAPH - 0xD777: 0x8387, //CJK UNIFIED IDEOGRAPH - 0xD778: 0x83AE, //CJK UNIFIED IDEOGRAPH - 0xD779: 0x8376, //CJK UNIFIED IDEOGRAPH - 0xD77A: 0x839A, //CJK UNIFIED IDEOGRAPH - 0xD77B: 0x8659, //CJK UNIFIED IDEOGRAPH - 0xD77C: 0x8656, //CJK UNIFIED IDEOGRAPH - 0xD77D: 0x86BF, //CJK UNIFIED IDEOGRAPH - 0xD77E: 0x86B7, //CJK UNIFIED IDEOGRAPH - 0xD7A1: 0x86C2, //CJK UNIFIED IDEOGRAPH - 0xD7A2: 0x86C1, //CJK UNIFIED IDEOGRAPH - 0xD7A3: 0x86C5, //CJK UNIFIED IDEOGRAPH - 0xD7A4: 0x86BA, //CJK UNIFIED IDEOGRAPH - 0xD7A5: 0x86B0, //CJK UNIFIED IDEOGRAPH - 0xD7A6: 0x86C8, //CJK UNIFIED IDEOGRAPH - 0xD7A7: 0x86B9, //CJK UNIFIED IDEOGRAPH - 0xD7A8: 0x86B3, //CJK UNIFIED IDEOGRAPH - 0xD7A9: 0x86B8, //CJK UNIFIED IDEOGRAPH - 0xD7AA: 0x86CC, //CJK UNIFIED IDEOGRAPH - 0xD7AB: 0x86B4, //CJK UNIFIED IDEOGRAPH - 0xD7AC: 0x86BB, //CJK UNIFIED IDEOGRAPH - 0xD7AD: 0x86BC, //CJK UNIFIED IDEOGRAPH - 0xD7AE: 0x86C3, //CJK UNIFIED IDEOGRAPH - 0xD7AF: 0x86BD, //CJK UNIFIED IDEOGRAPH - 0xD7B0: 0x86BE, //CJK UNIFIED IDEOGRAPH - 0xD7B1: 0x8852, //CJK UNIFIED IDEOGRAPH - 0xD7B2: 0x8889, //CJK UNIFIED IDEOGRAPH - 0xD7B3: 0x8895, //CJK UNIFIED IDEOGRAPH - 0xD7B4: 0x88A8, //CJK UNIFIED IDEOGRAPH - 0xD7B5: 0x88A2, //CJK UNIFIED IDEOGRAPH - 0xD7B6: 0x88AA, //CJK UNIFIED IDEOGRAPH - 0xD7B7: 0x889A, //CJK UNIFIED IDEOGRAPH - 0xD7B8: 0x8891, //CJK UNIFIED IDEOGRAPH - 0xD7B9: 0x88A1, //CJK UNIFIED IDEOGRAPH - 0xD7BA: 0x889F, //CJK UNIFIED IDEOGRAPH - 0xD7BB: 0x8898, //CJK UNIFIED IDEOGRAPH - 0xD7BC: 0x88A7, //CJK UNIFIED IDEOGRAPH - 0xD7BD: 0x8899, //CJK UNIFIED IDEOGRAPH - 0xD7BE: 0x889B, //CJK UNIFIED IDEOGRAPH - 0xD7BF: 0x8897, //CJK UNIFIED IDEOGRAPH - 0xD7C0: 0x88A4, //CJK UNIFIED IDEOGRAPH - 0xD7C1: 0x88AC, //CJK UNIFIED IDEOGRAPH - 0xD7C2: 0x888C, //CJK UNIFIED IDEOGRAPH - 0xD7C3: 0x8893, //CJK UNIFIED IDEOGRAPH - 0xD7C4: 0x888E, //CJK UNIFIED IDEOGRAPH - 0xD7C5: 0x8982, //CJK UNIFIED IDEOGRAPH - 0xD7C6: 0x89D6, //CJK UNIFIED IDEOGRAPH - 0xD7C7: 0x89D9, //CJK UNIFIED IDEOGRAPH - 0xD7C8: 0x89D5, //CJK UNIFIED IDEOGRAPH - 0xD7C9: 0x8A30, //CJK UNIFIED IDEOGRAPH - 0xD7CA: 0x8A27, //CJK UNIFIED IDEOGRAPH - 0xD7CB: 0x8A2C, //CJK UNIFIED IDEOGRAPH - 0xD7CC: 0x8A1E, //CJK UNIFIED IDEOGRAPH - 0xD7CD: 0x8C39, //CJK UNIFIED IDEOGRAPH - 0xD7CE: 0x8C3B, //CJK UNIFIED IDEOGRAPH - 0xD7CF: 0x8C5C, //CJK UNIFIED IDEOGRAPH - 0xD7D0: 0x8C5D, //CJK UNIFIED IDEOGRAPH - 0xD7D1: 0x8C7D, //CJK UNIFIED IDEOGRAPH - 0xD7D2: 0x8CA5, //CJK UNIFIED IDEOGRAPH - 0xD7D3: 0x8D7D, //CJK UNIFIED IDEOGRAPH - 0xD7D4: 0x8D7B, //CJK UNIFIED IDEOGRAPH - 0xD7D5: 0x8D79, //CJK UNIFIED IDEOGRAPH - 0xD7D6: 0x8DBC, //CJK UNIFIED IDEOGRAPH - 0xD7D7: 0x8DC2, //CJK UNIFIED IDEOGRAPH - 0xD7D8: 0x8DB9, //CJK UNIFIED IDEOGRAPH - 0xD7D9: 0x8DBF, //CJK UNIFIED IDEOGRAPH - 0xD7DA: 0x8DC1, //CJK UNIFIED IDEOGRAPH - 0xD7DB: 0x8ED8, //CJK UNIFIED IDEOGRAPH - 0xD7DC: 0x8EDE, //CJK UNIFIED IDEOGRAPH - 0xD7DD: 0x8EDD, //CJK UNIFIED IDEOGRAPH - 0xD7DE: 0x8EDC, //CJK UNIFIED IDEOGRAPH - 0xD7DF: 0x8ED7, //CJK UNIFIED IDEOGRAPH - 0xD7E0: 0x8EE0, //CJK UNIFIED IDEOGRAPH - 0xD7E1: 0x8EE1, //CJK UNIFIED IDEOGRAPH - 0xD7E2: 0x9024, //CJK UNIFIED IDEOGRAPH - 0xD7E3: 0x900B, //CJK UNIFIED IDEOGRAPH - 0xD7E4: 0x9011, //CJK UNIFIED IDEOGRAPH - 0xD7E5: 0x901C, //CJK UNIFIED IDEOGRAPH - 0xD7E6: 0x900C, //CJK UNIFIED IDEOGRAPH - 0xD7E7: 0x9021, //CJK UNIFIED IDEOGRAPH - 0xD7E8: 0x90EF, //CJK UNIFIED IDEOGRAPH - 0xD7E9: 0x90EA, //CJK UNIFIED IDEOGRAPH - 0xD7EA: 0x90F0, //CJK UNIFIED IDEOGRAPH - 0xD7EB: 0x90F4, //CJK UNIFIED IDEOGRAPH - 0xD7EC: 0x90F2, //CJK UNIFIED IDEOGRAPH - 0xD7ED: 0x90F3, //CJK UNIFIED IDEOGRAPH - 0xD7EE: 0x90D4, //CJK UNIFIED IDEOGRAPH - 0xD7EF: 0x90EB, //CJK UNIFIED IDEOGRAPH - 0xD7F0: 0x90EC, //CJK UNIFIED IDEOGRAPH - 0xD7F1: 0x90E9, //CJK UNIFIED IDEOGRAPH - 0xD7F2: 0x9156, //CJK UNIFIED IDEOGRAPH - 0xD7F3: 0x9158, //CJK UNIFIED IDEOGRAPH - 0xD7F4: 0x915A, //CJK UNIFIED IDEOGRAPH - 0xD7F5: 0x9153, //CJK UNIFIED IDEOGRAPH - 0xD7F6: 0x9155, //CJK UNIFIED IDEOGRAPH - 0xD7F7: 0x91EC, //CJK UNIFIED IDEOGRAPH - 0xD7F8: 0x91F4, //CJK UNIFIED IDEOGRAPH - 0xD7F9: 0x91F1, //CJK UNIFIED IDEOGRAPH - 0xD7FA: 0x91F3, //CJK UNIFIED IDEOGRAPH - 0xD7FB: 0x91F8, //CJK UNIFIED IDEOGRAPH - 0xD7FC: 0x91E4, //CJK UNIFIED IDEOGRAPH - 0xD7FD: 0x91F9, //CJK UNIFIED IDEOGRAPH - 0xD7FE: 0x91EA, //CJK UNIFIED IDEOGRAPH - 0xD840: 0x91EB, //CJK UNIFIED IDEOGRAPH - 0xD841: 0x91F7, //CJK UNIFIED IDEOGRAPH - 0xD842: 0x91E8, //CJK UNIFIED IDEOGRAPH - 0xD843: 0x91EE, //CJK UNIFIED IDEOGRAPH - 0xD844: 0x957A, //CJK UNIFIED IDEOGRAPH - 0xD845: 0x9586, //CJK UNIFIED IDEOGRAPH - 0xD846: 0x9588, //CJK UNIFIED IDEOGRAPH - 0xD847: 0x967C, //CJK UNIFIED IDEOGRAPH - 0xD848: 0x966D, //CJK UNIFIED IDEOGRAPH - 0xD849: 0x966B, //CJK UNIFIED IDEOGRAPH - 0xD84A: 0x9671, //CJK UNIFIED IDEOGRAPH - 0xD84B: 0x966F, //CJK UNIFIED IDEOGRAPH - 0xD84C: 0x96BF, //CJK UNIFIED IDEOGRAPH - 0xD84D: 0x976A, //CJK UNIFIED IDEOGRAPH - 0xD84E: 0x9804, //CJK UNIFIED IDEOGRAPH - 0xD84F: 0x98E5, //CJK UNIFIED IDEOGRAPH - 0xD850: 0x9997, //CJK UNIFIED IDEOGRAPH - 0xD851: 0x509B, //CJK UNIFIED IDEOGRAPH - 0xD852: 0x5095, //CJK UNIFIED IDEOGRAPH - 0xD853: 0x5094, //CJK UNIFIED IDEOGRAPH - 0xD854: 0x509E, //CJK UNIFIED IDEOGRAPH - 0xD855: 0x508B, //CJK UNIFIED IDEOGRAPH - 0xD856: 0x50A3, //CJK UNIFIED IDEOGRAPH - 0xD857: 0x5083, //CJK UNIFIED IDEOGRAPH - 0xD858: 0x508C, //CJK UNIFIED IDEOGRAPH - 0xD859: 0x508E, //CJK UNIFIED IDEOGRAPH - 0xD85A: 0x509D, //CJK UNIFIED IDEOGRAPH - 0xD85B: 0x5068, //CJK UNIFIED IDEOGRAPH - 0xD85C: 0x509C, //CJK UNIFIED IDEOGRAPH - 0xD85D: 0x5092, //CJK UNIFIED IDEOGRAPH - 0xD85E: 0x5082, //CJK UNIFIED IDEOGRAPH - 0xD85F: 0x5087, //CJK UNIFIED IDEOGRAPH - 0xD860: 0x515F, //CJK UNIFIED IDEOGRAPH - 0xD861: 0x51D4, //CJK UNIFIED IDEOGRAPH - 0xD862: 0x5312, //CJK UNIFIED IDEOGRAPH - 0xD863: 0x5311, //CJK UNIFIED IDEOGRAPH - 0xD864: 0x53A4, //CJK UNIFIED IDEOGRAPH - 0xD865: 0x53A7, //CJK UNIFIED IDEOGRAPH - 0xD866: 0x5591, //CJK UNIFIED IDEOGRAPH - 0xD867: 0x55A8, //CJK UNIFIED IDEOGRAPH - 0xD868: 0x55A5, //CJK UNIFIED IDEOGRAPH - 0xD869: 0x55AD, //CJK UNIFIED IDEOGRAPH - 0xD86A: 0x5577, //CJK UNIFIED IDEOGRAPH - 0xD86B: 0x5645, //CJK UNIFIED IDEOGRAPH - 0xD86C: 0x55A2, //CJK UNIFIED IDEOGRAPH - 0xD86D: 0x5593, //CJK UNIFIED IDEOGRAPH - 0xD86E: 0x5588, //CJK UNIFIED IDEOGRAPH - 0xD86F: 0x558F, //CJK UNIFIED IDEOGRAPH - 0xD870: 0x55B5, //CJK UNIFIED IDEOGRAPH - 0xD871: 0x5581, //CJK UNIFIED IDEOGRAPH - 0xD872: 0x55A3, //CJK UNIFIED IDEOGRAPH - 0xD873: 0x5592, //CJK UNIFIED IDEOGRAPH - 0xD874: 0x55A4, //CJK UNIFIED IDEOGRAPH - 0xD875: 0x557D, //CJK UNIFIED IDEOGRAPH - 0xD876: 0x558C, //CJK UNIFIED IDEOGRAPH - 0xD877: 0x55A6, //CJK UNIFIED IDEOGRAPH - 0xD878: 0x557F, //CJK UNIFIED IDEOGRAPH - 0xD879: 0x5595, //CJK UNIFIED IDEOGRAPH - 0xD87A: 0x55A1, //CJK UNIFIED IDEOGRAPH - 0xD87B: 0x558E, //CJK UNIFIED IDEOGRAPH - 0xD87C: 0x570C, //CJK UNIFIED IDEOGRAPH - 0xD87D: 0x5829, //CJK UNIFIED IDEOGRAPH - 0xD87E: 0x5837, //CJK UNIFIED IDEOGRAPH - 0xD8A1: 0x5819, //CJK UNIFIED IDEOGRAPH - 0xD8A2: 0x581E, //CJK UNIFIED IDEOGRAPH - 0xD8A3: 0x5827, //CJK UNIFIED IDEOGRAPH - 0xD8A4: 0x5823, //CJK UNIFIED IDEOGRAPH - 0xD8A5: 0x5828, //CJK UNIFIED IDEOGRAPH - 0xD8A6: 0x57F5, //CJK UNIFIED IDEOGRAPH - 0xD8A7: 0x5848, //CJK UNIFIED IDEOGRAPH - 0xD8A8: 0x5825, //CJK UNIFIED IDEOGRAPH - 0xD8A9: 0x581C, //CJK UNIFIED IDEOGRAPH - 0xD8AA: 0x581B, //CJK UNIFIED IDEOGRAPH - 0xD8AB: 0x5833, //CJK UNIFIED IDEOGRAPH - 0xD8AC: 0x583F, //CJK UNIFIED IDEOGRAPH - 0xD8AD: 0x5836, //CJK UNIFIED IDEOGRAPH - 0xD8AE: 0x582E, //CJK UNIFIED IDEOGRAPH - 0xD8AF: 0x5839, //CJK UNIFIED IDEOGRAPH - 0xD8B0: 0x5838, //CJK UNIFIED IDEOGRAPH - 0xD8B1: 0x582D, //CJK UNIFIED IDEOGRAPH - 0xD8B2: 0x582C, //CJK UNIFIED IDEOGRAPH - 0xD8B3: 0x583B, //CJK UNIFIED IDEOGRAPH - 0xD8B4: 0x5961, //CJK UNIFIED IDEOGRAPH - 0xD8B5: 0x5AAF, //CJK UNIFIED IDEOGRAPH - 0xD8B6: 0x5A94, //CJK UNIFIED IDEOGRAPH - 0xD8B7: 0x5A9F, //CJK UNIFIED IDEOGRAPH - 0xD8B8: 0x5A7A, //CJK UNIFIED IDEOGRAPH - 0xD8B9: 0x5AA2, //CJK UNIFIED IDEOGRAPH - 0xD8BA: 0x5A9E, //CJK UNIFIED IDEOGRAPH - 0xD8BB: 0x5A78, //CJK UNIFIED IDEOGRAPH - 0xD8BC: 0x5AA6, //CJK UNIFIED IDEOGRAPH - 0xD8BD: 0x5A7C, //CJK UNIFIED IDEOGRAPH - 0xD8BE: 0x5AA5, //CJK UNIFIED IDEOGRAPH - 0xD8BF: 0x5AAC, //CJK UNIFIED IDEOGRAPH - 0xD8C0: 0x5A95, //CJK UNIFIED IDEOGRAPH - 0xD8C1: 0x5AAE, //CJK UNIFIED IDEOGRAPH - 0xD8C2: 0x5A37, //CJK UNIFIED IDEOGRAPH - 0xD8C3: 0x5A84, //CJK UNIFIED IDEOGRAPH - 0xD8C4: 0x5A8A, //CJK UNIFIED IDEOGRAPH - 0xD8C5: 0x5A97, //CJK UNIFIED IDEOGRAPH - 0xD8C6: 0x5A83, //CJK UNIFIED IDEOGRAPH - 0xD8C7: 0x5A8B, //CJK UNIFIED IDEOGRAPH - 0xD8C8: 0x5AA9, //CJK UNIFIED IDEOGRAPH - 0xD8C9: 0x5A7B, //CJK UNIFIED IDEOGRAPH - 0xD8CA: 0x5A7D, //CJK UNIFIED IDEOGRAPH - 0xD8CB: 0x5A8C, //CJK UNIFIED IDEOGRAPH - 0xD8CC: 0x5A9C, //CJK UNIFIED IDEOGRAPH - 0xD8CD: 0x5A8F, //CJK UNIFIED IDEOGRAPH - 0xD8CE: 0x5A93, //CJK UNIFIED IDEOGRAPH - 0xD8CF: 0x5A9D, //CJK UNIFIED IDEOGRAPH - 0xD8D0: 0x5BEA, //CJK UNIFIED IDEOGRAPH - 0xD8D1: 0x5BCD, //CJK UNIFIED IDEOGRAPH - 0xD8D2: 0x5BCB, //CJK UNIFIED IDEOGRAPH - 0xD8D3: 0x5BD4, //CJK UNIFIED IDEOGRAPH - 0xD8D4: 0x5BD1, //CJK UNIFIED IDEOGRAPH - 0xD8D5: 0x5BCA, //CJK UNIFIED IDEOGRAPH - 0xD8D6: 0x5BCE, //CJK UNIFIED IDEOGRAPH - 0xD8D7: 0x5C0C, //CJK UNIFIED IDEOGRAPH - 0xD8D8: 0x5C30, //CJK UNIFIED IDEOGRAPH - 0xD8D9: 0x5D37, //CJK UNIFIED IDEOGRAPH - 0xD8DA: 0x5D43, //CJK UNIFIED IDEOGRAPH - 0xD8DB: 0x5D6B, //CJK UNIFIED IDEOGRAPH - 0xD8DC: 0x5D41, //CJK UNIFIED IDEOGRAPH - 0xD8DD: 0x5D4B, //CJK UNIFIED IDEOGRAPH - 0xD8DE: 0x5D3F, //CJK UNIFIED IDEOGRAPH - 0xD8DF: 0x5D35, //CJK UNIFIED IDEOGRAPH - 0xD8E0: 0x5D51, //CJK UNIFIED IDEOGRAPH - 0xD8E1: 0x5D4E, //CJK UNIFIED IDEOGRAPH - 0xD8E2: 0x5D55, //CJK UNIFIED IDEOGRAPH - 0xD8E3: 0x5D33, //CJK UNIFIED IDEOGRAPH - 0xD8E4: 0x5D3A, //CJK UNIFIED IDEOGRAPH - 0xD8E5: 0x5D52, //CJK UNIFIED IDEOGRAPH - 0xD8E6: 0x5D3D, //CJK UNIFIED IDEOGRAPH - 0xD8E7: 0x5D31, //CJK UNIFIED IDEOGRAPH - 0xD8E8: 0x5D59, //CJK UNIFIED IDEOGRAPH - 0xD8E9: 0x5D42, //CJK UNIFIED IDEOGRAPH - 0xD8EA: 0x5D39, //CJK UNIFIED IDEOGRAPH - 0xD8EB: 0x5D49, //CJK UNIFIED IDEOGRAPH - 0xD8EC: 0x5D38, //CJK UNIFIED IDEOGRAPH - 0xD8ED: 0x5D3C, //CJK UNIFIED IDEOGRAPH - 0xD8EE: 0x5D32, //CJK UNIFIED IDEOGRAPH - 0xD8EF: 0x5D36, //CJK UNIFIED IDEOGRAPH - 0xD8F0: 0x5D40, //CJK UNIFIED IDEOGRAPH - 0xD8F1: 0x5D45, //CJK UNIFIED IDEOGRAPH - 0xD8F2: 0x5E44, //CJK UNIFIED IDEOGRAPH - 0xD8F3: 0x5E41, //CJK UNIFIED IDEOGRAPH - 0xD8F4: 0x5F58, //CJK UNIFIED IDEOGRAPH - 0xD8F5: 0x5FA6, //CJK UNIFIED IDEOGRAPH - 0xD8F6: 0x5FA5, //CJK UNIFIED IDEOGRAPH - 0xD8F7: 0x5FAB, //CJK UNIFIED IDEOGRAPH - 0xD8F8: 0x60C9, //CJK UNIFIED IDEOGRAPH - 0xD8F9: 0x60B9, //CJK UNIFIED IDEOGRAPH - 0xD8FA: 0x60CC, //CJK UNIFIED IDEOGRAPH - 0xD8FB: 0x60E2, //CJK UNIFIED IDEOGRAPH - 0xD8FC: 0x60CE, //CJK UNIFIED IDEOGRAPH - 0xD8FD: 0x60C4, //CJK UNIFIED IDEOGRAPH - 0xD8FE: 0x6114, //CJK UNIFIED IDEOGRAPH - 0xD940: 0x60F2, //CJK UNIFIED IDEOGRAPH - 0xD941: 0x610A, //CJK UNIFIED IDEOGRAPH - 0xD942: 0x6116, //CJK UNIFIED IDEOGRAPH - 0xD943: 0x6105, //CJK UNIFIED IDEOGRAPH - 0xD944: 0x60F5, //CJK UNIFIED IDEOGRAPH - 0xD945: 0x6113, //CJK UNIFIED IDEOGRAPH - 0xD946: 0x60F8, //CJK UNIFIED IDEOGRAPH - 0xD947: 0x60FC, //CJK UNIFIED IDEOGRAPH - 0xD948: 0x60FE, //CJK UNIFIED IDEOGRAPH - 0xD949: 0x60C1, //CJK UNIFIED IDEOGRAPH - 0xD94A: 0x6103, //CJK UNIFIED IDEOGRAPH - 0xD94B: 0x6118, //CJK UNIFIED IDEOGRAPH - 0xD94C: 0x611D, //CJK UNIFIED IDEOGRAPH - 0xD94D: 0x6110, //CJK UNIFIED IDEOGRAPH - 0xD94E: 0x60FF, //CJK UNIFIED IDEOGRAPH - 0xD94F: 0x6104, //CJK UNIFIED IDEOGRAPH - 0xD950: 0x610B, //CJK UNIFIED IDEOGRAPH - 0xD951: 0x624A, //CJK UNIFIED IDEOGRAPH - 0xD952: 0x6394, //CJK UNIFIED IDEOGRAPH - 0xD953: 0x63B1, //CJK UNIFIED IDEOGRAPH - 0xD954: 0x63B0, //CJK UNIFIED IDEOGRAPH - 0xD955: 0x63CE, //CJK UNIFIED IDEOGRAPH - 0xD956: 0x63E5, //CJK UNIFIED IDEOGRAPH - 0xD957: 0x63E8, //CJK UNIFIED IDEOGRAPH - 0xD958: 0x63EF, //CJK UNIFIED IDEOGRAPH - 0xD959: 0x63C3, //CJK UNIFIED IDEOGRAPH - 0xD95A: 0x649D, //CJK UNIFIED IDEOGRAPH - 0xD95B: 0x63F3, //CJK UNIFIED IDEOGRAPH - 0xD95C: 0x63CA, //CJK UNIFIED IDEOGRAPH - 0xD95D: 0x63E0, //CJK UNIFIED IDEOGRAPH - 0xD95E: 0x63F6, //CJK UNIFIED IDEOGRAPH - 0xD95F: 0x63D5, //CJK UNIFIED IDEOGRAPH - 0xD960: 0x63F2, //CJK UNIFIED IDEOGRAPH - 0xD961: 0x63F5, //CJK UNIFIED IDEOGRAPH - 0xD962: 0x6461, //CJK UNIFIED IDEOGRAPH - 0xD963: 0x63DF, //CJK UNIFIED IDEOGRAPH - 0xD964: 0x63BE, //CJK UNIFIED IDEOGRAPH - 0xD965: 0x63DD, //CJK UNIFIED IDEOGRAPH - 0xD966: 0x63DC, //CJK UNIFIED IDEOGRAPH - 0xD967: 0x63C4, //CJK UNIFIED IDEOGRAPH - 0xD968: 0x63D8, //CJK UNIFIED IDEOGRAPH - 0xD969: 0x63D3, //CJK UNIFIED IDEOGRAPH - 0xD96A: 0x63C2, //CJK UNIFIED IDEOGRAPH - 0xD96B: 0x63C7, //CJK UNIFIED IDEOGRAPH - 0xD96C: 0x63CC, //CJK UNIFIED IDEOGRAPH - 0xD96D: 0x63CB, //CJK UNIFIED IDEOGRAPH - 0xD96E: 0x63C8, //CJK UNIFIED IDEOGRAPH - 0xD96F: 0x63F0, //CJK UNIFIED IDEOGRAPH - 0xD970: 0x63D7, //CJK UNIFIED IDEOGRAPH - 0xD971: 0x63D9, //CJK UNIFIED IDEOGRAPH - 0xD972: 0x6532, //CJK UNIFIED IDEOGRAPH - 0xD973: 0x6567, //CJK UNIFIED IDEOGRAPH - 0xD974: 0x656A, //CJK UNIFIED IDEOGRAPH - 0xD975: 0x6564, //CJK UNIFIED IDEOGRAPH - 0xD976: 0x655C, //CJK UNIFIED IDEOGRAPH - 0xD977: 0x6568, //CJK UNIFIED IDEOGRAPH - 0xD978: 0x6565, //CJK UNIFIED IDEOGRAPH - 0xD979: 0x658C, //CJK UNIFIED IDEOGRAPH - 0xD97A: 0x659D, //CJK UNIFIED IDEOGRAPH - 0xD97B: 0x659E, //CJK UNIFIED IDEOGRAPH - 0xD97C: 0x65AE, //CJK UNIFIED IDEOGRAPH - 0xD97D: 0x65D0, //CJK UNIFIED IDEOGRAPH - 0xD97E: 0x65D2, //CJK UNIFIED IDEOGRAPH - 0xD9A1: 0x667C, //CJK UNIFIED IDEOGRAPH - 0xD9A2: 0x666C, //CJK UNIFIED IDEOGRAPH - 0xD9A3: 0x667B, //CJK UNIFIED IDEOGRAPH - 0xD9A4: 0x6680, //CJK UNIFIED IDEOGRAPH - 0xD9A5: 0x6671, //CJK UNIFIED IDEOGRAPH - 0xD9A6: 0x6679, //CJK UNIFIED IDEOGRAPH - 0xD9A7: 0x666A, //CJK UNIFIED IDEOGRAPH - 0xD9A8: 0x6672, //CJK UNIFIED IDEOGRAPH - 0xD9A9: 0x6701, //CJK UNIFIED IDEOGRAPH - 0xD9AA: 0x690C, //CJK UNIFIED IDEOGRAPH - 0xD9AB: 0x68D3, //CJK UNIFIED IDEOGRAPH - 0xD9AC: 0x6904, //CJK UNIFIED IDEOGRAPH - 0xD9AD: 0x68DC, //CJK UNIFIED IDEOGRAPH - 0xD9AE: 0x692A, //CJK UNIFIED IDEOGRAPH - 0xD9AF: 0x68EC, //CJK UNIFIED IDEOGRAPH - 0xD9B0: 0x68EA, //CJK UNIFIED IDEOGRAPH - 0xD9B1: 0x68F1, //CJK UNIFIED IDEOGRAPH - 0xD9B2: 0x690F, //CJK UNIFIED IDEOGRAPH - 0xD9B3: 0x68D6, //CJK UNIFIED IDEOGRAPH - 0xD9B4: 0x68F7, //CJK UNIFIED IDEOGRAPH - 0xD9B5: 0x68EB, //CJK UNIFIED IDEOGRAPH - 0xD9B6: 0x68E4, //CJK UNIFIED IDEOGRAPH - 0xD9B7: 0x68F6, //CJK UNIFIED IDEOGRAPH - 0xD9B8: 0x6913, //CJK UNIFIED IDEOGRAPH - 0xD9B9: 0x6910, //CJK UNIFIED IDEOGRAPH - 0xD9BA: 0x68F3, //CJK UNIFIED IDEOGRAPH - 0xD9BB: 0x68E1, //CJK UNIFIED IDEOGRAPH - 0xD9BC: 0x6907, //CJK UNIFIED IDEOGRAPH - 0xD9BD: 0x68CC, //CJK UNIFIED IDEOGRAPH - 0xD9BE: 0x6908, //CJK UNIFIED IDEOGRAPH - 0xD9BF: 0x6970, //CJK UNIFIED IDEOGRAPH - 0xD9C0: 0x68B4, //CJK UNIFIED IDEOGRAPH - 0xD9C1: 0x6911, //CJK UNIFIED IDEOGRAPH - 0xD9C2: 0x68EF, //CJK UNIFIED IDEOGRAPH - 0xD9C3: 0x68C6, //CJK UNIFIED IDEOGRAPH - 0xD9C4: 0x6914, //CJK UNIFIED IDEOGRAPH - 0xD9C5: 0x68F8, //CJK UNIFIED IDEOGRAPH - 0xD9C6: 0x68D0, //CJK UNIFIED IDEOGRAPH - 0xD9C7: 0x68FD, //CJK UNIFIED IDEOGRAPH - 0xD9C8: 0x68FC, //CJK UNIFIED IDEOGRAPH - 0xD9C9: 0x68E8, //CJK UNIFIED IDEOGRAPH - 0xD9CA: 0x690B, //CJK UNIFIED IDEOGRAPH - 0xD9CB: 0x690A, //CJK UNIFIED IDEOGRAPH - 0xD9CC: 0x6917, //CJK UNIFIED IDEOGRAPH - 0xD9CD: 0x68CE, //CJK UNIFIED IDEOGRAPH - 0xD9CE: 0x68C8, //CJK UNIFIED IDEOGRAPH - 0xD9CF: 0x68DD, //CJK UNIFIED IDEOGRAPH - 0xD9D0: 0x68DE, //CJK UNIFIED IDEOGRAPH - 0xD9D1: 0x68E6, //CJK UNIFIED IDEOGRAPH - 0xD9D2: 0x68F4, //CJK UNIFIED IDEOGRAPH - 0xD9D3: 0x68D1, //CJK UNIFIED IDEOGRAPH - 0xD9D4: 0x6906, //CJK UNIFIED IDEOGRAPH - 0xD9D5: 0x68D4, //CJK UNIFIED IDEOGRAPH - 0xD9D6: 0x68E9, //CJK UNIFIED IDEOGRAPH - 0xD9D7: 0x6915, //CJK UNIFIED IDEOGRAPH - 0xD9D8: 0x6925, //CJK UNIFIED IDEOGRAPH - 0xD9D9: 0x68C7, //CJK UNIFIED IDEOGRAPH - 0xD9DA: 0x6B39, //CJK UNIFIED IDEOGRAPH - 0xD9DB: 0x6B3B, //CJK UNIFIED IDEOGRAPH - 0xD9DC: 0x6B3F, //CJK UNIFIED IDEOGRAPH - 0xD9DD: 0x6B3C, //CJK UNIFIED IDEOGRAPH - 0xD9DE: 0x6B94, //CJK UNIFIED IDEOGRAPH - 0xD9DF: 0x6B97, //CJK UNIFIED IDEOGRAPH - 0xD9E0: 0x6B99, //CJK UNIFIED IDEOGRAPH - 0xD9E1: 0x6B95, //CJK UNIFIED IDEOGRAPH - 0xD9E2: 0x6BBD, //CJK UNIFIED IDEOGRAPH - 0xD9E3: 0x6BF0, //CJK UNIFIED IDEOGRAPH - 0xD9E4: 0x6BF2, //CJK UNIFIED IDEOGRAPH - 0xD9E5: 0x6BF3, //CJK UNIFIED IDEOGRAPH - 0xD9E6: 0x6C30, //CJK UNIFIED IDEOGRAPH - 0xD9E7: 0x6DFC, //CJK UNIFIED IDEOGRAPH - 0xD9E8: 0x6E46, //CJK UNIFIED IDEOGRAPH - 0xD9E9: 0x6E47, //CJK UNIFIED IDEOGRAPH - 0xD9EA: 0x6E1F, //CJK UNIFIED IDEOGRAPH - 0xD9EB: 0x6E49, //CJK UNIFIED IDEOGRAPH - 0xD9EC: 0x6E88, //CJK UNIFIED IDEOGRAPH - 0xD9ED: 0x6E3C, //CJK UNIFIED IDEOGRAPH - 0xD9EE: 0x6E3D, //CJK UNIFIED IDEOGRAPH - 0xD9EF: 0x6E45, //CJK UNIFIED IDEOGRAPH - 0xD9F0: 0x6E62, //CJK UNIFIED IDEOGRAPH - 0xD9F1: 0x6E2B, //CJK UNIFIED IDEOGRAPH - 0xD9F2: 0x6E3F, //CJK UNIFIED IDEOGRAPH - 0xD9F3: 0x6E41, //CJK UNIFIED IDEOGRAPH - 0xD9F4: 0x6E5D, //CJK UNIFIED IDEOGRAPH - 0xD9F5: 0x6E73, //CJK UNIFIED IDEOGRAPH - 0xD9F6: 0x6E1C, //CJK UNIFIED IDEOGRAPH - 0xD9F7: 0x6E33, //CJK UNIFIED IDEOGRAPH - 0xD9F8: 0x6E4B, //CJK UNIFIED IDEOGRAPH - 0xD9F9: 0x6E40, //CJK UNIFIED IDEOGRAPH - 0xD9FA: 0x6E51, //CJK UNIFIED IDEOGRAPH - 0xD9FB: 0x6E3B, //CJK UNIFIED IDEOGRAPH - 0xD9FC: 0x6E03, //CJK UNIFIED IDEOGRAPH - 0xD9FD: 0x6E2E, //CJK UNIFIED IDEOGRAPH - 0xD9FE: 0x6E5E, //CJK UNIFIED IDEOGRAPH - 0xDA40: 0x6E68, //CJK UNIFIED IDEOGRAPH - 0xDA41: 0x6E5C, //CJK UNIFIED IDEOGRAPH - 0xDA42: 0x6E61, //CJK UNIFIED IDEOGRAPH - 0xDA43: 0x6E31, //CJK UNIFIED IDEOGRAPH - 0xDA44: 0x6E28, //CJK UNIFIED IDEOGRAPH - 0xDA45: 0x6E60, //CJK UNIFIED IDEOGRAPH - 0xDA46: 0x6E71, //CJK UNIFIED IDEOGRAPH - 0xDA47: 0x6E6B, //CJK UNIFIED IDEOGRAPH - 0xDA48: 0x6E39, //CJK UNIFIED IDEOGRAPH - 0xDA49: 0x6E22, //CJK UNIFIED IDEOGRAPH - 0xDA4A: 0x6E30, //CJK UNIFIED IDEOGRAPH - 0xDA4B: 0x6E53, //CJK UNIFIED IDEOGRAPH - 0xDA4C: 0x6E65, //CJK UNIFIED IDEOGRAPH - 0xDA4D: 0x6E27, //CJK UNIFIED IDEOGRAPH - 0xDA4E: 0x6E78, //CJK UNIFIED IDEOGRAPH - 0xDA4F: 0x6E64, //CJK UNIFIED IDEOGRAPH - 0xDA50: 0x6E77, //CJK UNIFIED IDEOGRAPH - 0xDA51: 0x6E55, //CJK UNIFIED IDEOGRAPH - 0xDA52: 0x6E79, //CJK UNIFIED IDEOGRAPH - 0xDA53: 0x6E52, //CJK UNIFIED IDEOGRAPH - 0xDA54: 0x6E66, //CJK UNIFIED IDEOGRAPH - 0xDA55: 0x6E35, //CJK UNIFIED IDEOGRAPH - 0xDA56: 0x6E36, //CJK UNIFIED IDEOGRAPH - 0xDA57: 0x6E5A, //CJK UNIFIED IDEOGRAPH - 0xDA58: 0x7120, //CJK UNIFIED IDEOGRAPH - 0xDA59: 0x711E, //CJK UNIFIED IDEOGRAPH - 0xDA5A: 0x712F, //CJK UNIFIED IDEOGRAPH - 0xDA5B: 0x70FB, //CJK UNIFIED IDEOGRAPH - 0xDA5C: 0x712E, //CJK UNIFIED IDEOGRAPH - 0xDA5D: 0x7131, //CJK UNIFIED IDEOGRAPH - 0xDA5E: 0x7123, //CJK UNIFIED IDEOGRAPH - 0xDA5F: 0x7125, //CJK UNIFIED IDEOGRAPH - 0xDA60: 0x7122, //CJK UNIFIED IDEOGRAPH - 0xDA61: 0x7132, //CJK UNIFIED IDEOGRAPH - 0xDA62: 0x711F, //CJK UNIFIED IDEOGRAPH - 0xDA63: 0x7128, //CJK UNIFIED IDEOGRAPH - 0xDA64: 0x713A, //CJK UNIFIED IDEOGRAPH - 0xDA65: 0x711B, //CJK UNIFIED IDEOGRAPH - 0xDA66: 0x724B, //CJK UNIFIED IDEOGRAPH - 0xDA67: 0x725A, //CJK UNIFIED IDEOGRAPH - 0xDA68: 0x7288, //CJK UNIFIED IDEOGRAPH - 0xDA69: 0x7289, //CJK UNIFIED IDEOGRAPH - 0xDA6A: 0x7286, //CJK UNIFIED IDEOGRAPH - 0xDA6B: 0x7285, //CJK UNIFIED IDEOGRAPH - 0xDA6C: 0x728B, //CJK UNIFIED IDEOGRAPH - 0xDA6D: 0x7312, //CJK UNIFIED IDEOGRAPH - 0xDA6E: 0x730B, //CJK UNIFIED IDEOGRAPH - 0xDA6F: 0x7330, //CJK UNIFIED IDEOGRAPH - 0xDA70: 0x7322, //CJK UNIFIED IDEOGRAPH - 0xDA71: 0x7331, //CJK UNIFIED IDEOGRAPH - 0xDA72: 0x7333, //CJK UNIFIED IDEOGRAPH - 0xDA73: 0x7327, //CJK UNIFIED IDEOGRAPH - 0xDA74: 0x7332, //CJK UNIFIED IDEOGRAPH - 0xDA75: 0x732D, //CJK UNIFIED IDEOGRAPH - 0xDA76: 0x7326, //CJK UNIFIED IDEOGRAPH - 0xDA77: 0x7323, //CJK UNIFIED IDEOGRAPH - 0xDA78: 0x7335, //CJK UNIFIED IDEOGRAPH - 0xDA79: 0x730C, //CJK UNIFIED IDEOGRAPH - 0xDA7A: 0x742E, //CJK UNIFIED IDEOGRAPH - 0xDA7B: 0x742C, //CJK UNIFIED IDEOGRAPH - 0xDA7C: 0x7430, //CJK UNIFIED IDEOGRAPH - 0xDA7D: 0x742B, //CJK UNIFIED IDEOGRAPH - 0xDA7E: 0x7416, //CJK UNIFIED IDEOGRAPH - 0xDAA1: 0x741A, //CJK UNIFIED IDEOGRAPH - 0xDAA2: 0x7421, //CJK UNIFIED IDEOGRAPH - 0xDAA3: 0x742D, //CJK UNIFIED IDEOGRAPH - 0xDAA4: 0x7431, //CJK UNIFIED IDEOGRAPH - 0xDAA5: 0x7424, //CJK UNIFIED IDEOGRAPH - 0xDAA6: 0x7423, //CJK UNIFIED IDEOGRAPH - 0xDAA7: 0x741D, //CJK UNIFIED IDEOGRAPH - 0xDAA8: 0x7429, //CJK UNIFIED IDEOGRAPH - 0xDAA9: 0x7420, //CJK UNIFIED IDEOGRAPH - 0xDAAA: 0x7432, //CJK UNIFIED IDEOGRAPH - 0xDAAB: 0x74FB, //CJK UNIFIED IDEOGRAPH - 0xDAAC: 0x752F, //CJK UNIFIED IDEOGRAPH - 0xDAAD: 0x756F, //CJK UNIFIED IDEOGRAPH - 0xDAAE: 0x756C, //CJK UNIFIED IDEOGRAPH - 0xDAAF: 0x75E7, //CJK UNIFIED IDEOGRAPH - 0xDAB0: 0x75DA, //CJK UNIFIED IDEOGRAPH - 0xDAB1: 0x75E1, //CJK UNIFIED IDEOGRAPH - 0xDAB2: 0x75E6, //CJK UNIFIED IDEOGRAPH - 0xDAB3: 0x75DD, //CJK UNIFIED IDEOGRAPH - 0xDAB4: 0x75DF, //CJK UNIFIED IDEOGRAPH - 0xDAB5: 0x75E4, //CJK UNIFIED IDEOGRAPH - 0xDAB6: 0x75D7, //CJK UNIFIED IDEOGRAPH - 0xDAB7: 0x7695, //CJK UNIFIED IDEOGRAPH - 0xDAB8: 0x7692, //CJK UNIFIED IDEOGRAPH - 0xDAB9: 0x76DA, //CJK UNIFIED IDEOGRAPH - 0xDABA: 0x7746, //CJK UNIFIED IDEOGRAPH - 0xDABB: 0x7747, //CJK UNIFIED IDEOGRAPH - 0xDABC: 0x7744, //CJK UNIFIED IDEOGRAPH - 0xDABD: 0x774D, //CJK UNIFIED IDEOGRAPH - 0xDABE: 0x7745, //CJK UNIFIED IDEOGRAPH - 0xDABF: 0x774A, //CJK UNIFIED IDEOGRAPH - 0xDAC0: 0x774E, //CJK UNIFIED IDEOGRAPH - 0xDAC1: 0x774B, //CJK UNIFIED IDEOGRAPH - 0xDAC2: 0x774C, //CJK UNIFIED IDEOGRAPH - 0xDAC3: 0x77DE, //CJK UNIFIED IDEOGRAPH - 0xDAC4: 0x77EC, //CJK UNIFIED IDEOGRAPH - 0xDAC5: 0x7860, //CJK UNIFIED IDEOGRAPH - 0xDAC6: 0x7864, //CJK UNIFIED IDEOGRAPH - 0xDAC7: 0x7865, //CJK UNIFIED IDEOGRAPH - 0xDAC8: 0x785C, //CJK UNIFIED IDEOGRAPH - 0xDAC9: 0x786D, //CJK UNIFIED IDEOGRAPH - 0xDACA: 0x7871, //CJK UNIFIED IDEOGRAPH - 0xDACB: 0x786A, //CJK UNIFIED IDEOGRAPH - 0xDACC: 0x786E, //CJK UNIFIED IDEOGRAPH - 0xDACD: 0x7870, //CJK UNIFIED IDEOGRAPH - 0xDACE: 0x7869, //CJK UNIFIED IDEOGRAPH - 0xDACF: 0x7868, //CJK UNIFIED IDEOGRAPH - 0xDAD0: 0x785E, //CJK UNIFIED IDEOGRAPH - 0xDAD1: 0x7862, //CJK UNIFIED IDEOGRAPH - 0xDAD2: 0x7974, //CJK UNIFIED IDEOGRAPH - 0xDAD3: 0x7973, //CJK UNIFIED IDEOGRAPH - 0xDAD4: 0x7972, //CJK UNIFIED IDEOGRAPH - 0xDAD5: 0x7970, //CJK UNIFIED IDEOGRAPH - 0xDAD6: 0x7A02, //CJK UNIFIED IDEOGRAPH - 0xDAD7: 0x7A0A, //CJK UNIFIED IDEOGRAPH - 0xDAD8: 0x7A03, //CJK UNIFIED IDEOGRAPH - 0xDAD9: 0x7A0C, //CJK UNIFIED IDEOGRAPH - 0xDADA: 0x7A04, //CJK UNIFIED IDEOGRAPH - 0xDADB: 0x7A99, //CJK UNIFIED IDEOGRAPH - 0xDADC: 0x7AE6, //CJK UNIFIED IDEOGRAPH - 0xDADD: 0x7AE4, //CJK UNIFIED IDEOGRAPH - 0xDADE: 0x7B4A, //CJK UNIFIED IDEOGRAPH - 0xDADF: 0x7B3B, //CJK UNIFIED IDEOGRAPH - 0xDAE0: 0x7B44, //CJK UNIFIED IDEOGRAPH - 0xDAE1: 0x7B48, //CJK UNIFIED IDEOGRAPH - 0xDAE2: 0x7B4C, //CJK UNIFIED IDEOGRAPH - 0xDAE3: 0x7B4E, //CJK UNIFIED IDEOGRAPH - 0xDAE4: 0x7B40, //CJK UNIFIED IDEOGRAPH - 0xDAE5: 0x7B58, //CJK UNIFIED IDEOGRAPH - 0xDAE6: 0x7B45, //CJK UNIFIED IDEOGRAPH - 0xDAE7: 0x7CA2, //CJK UNIFIED IDEOGRAPH - 0xDAE8: 0x7C9E, //CJK UNIFIED IDEOGRAPH - 0xDAE9: 0x7CA8, //CJK UNIFIED IDEOGRAPH - 0xDAEA: 0x7CA1, //CJK UNIFIED IDEOGRAPH - 0xDAEB: 0x7D58, //CJK UNIFIED IDEOGRAPH - 0xDAEC: 0x7D6F, //CJK UNIFIED IDEOGRAPH - 0xDAED: 0x7D63, //CJK UNIFIED IDEOGRAPH - 0xDAEE: 0x7D53, //CJK UNIFIED IDEOGRAPH - 0xDAEF: 0x7D56, //CJK UNIFIED IDEOGRAPH - 0xDAF0: 0x7D67, //CJK UNIFIED IDEOGRAPH - 0xDAF1: 0x7D6A, //CJK UNIFIED IDEOGRAPH - 0xDAF2: 0x7D4F, //CJK UNIFIED IDEOGRAPH - 0xDAF3: 0x7D6D, //CJK UNIFIED IDEOGRAPH - 0xDAF4: 0x7D5C, //CJK UNIFIED IDEOGRAPH - 0xDAF5: 0x7D6B, //CJK UNIFIED IDEOGRAPH - 0xDAF6: 0x7D52, //CJK UNIFIED IDEOGRAPH - 0xDAF7: 0x7D54, //CJK UNIFIED IDEOGRAPH - 0xDAF8: 0x7D69, //CJK UNIFIED IDEOGRAPH - 0xDAF9: 0x7D51, //CJK UNIFIED IDEOGRAPH - 0xDAFA: 0x7D5F, //CJK UNIFIED IDEOGRAPH - 0xDAFB: 0x7D4E, //CJK UNIFIED IDEOGRAPH - 0xDAFC: 0x7F3E, //CJK UNIFIED IDEOGRAPH - 0xDAFD: 0x7F3F, //CJK UNIFIED IDEOGRAPH - 0xDAFE: 0x7F65, //CJK UNIFIED IDEOGRAPH - 0xDB40: 0x7F66, //CJK UNIFIED IDEOGRAPH - 0xDB41: 0x7FA2, //CJK UNIFIED IDEOGRAPH - 0xDB42: 0x7FA0, //CJK UNIFIED IDEOGRAPH - 0xDB43: 0x7FA1, //CJK UNIFIED IDEOGRAPH - 0xDB44: 0x7FD7, //CJK UNIFIED IDEOGRAPH - 0xDB45: 0x8051, //CJK UNIFIED IDEOGRAPH - 0xDB46: 0x804F, //CJK UNIFIED IDEOGRAPH - 0xDB47: 0x8050, //CJK UNIFIED IDEOGRAPH - 0xDB48: 0x80FE, //CJK UNIFIED IDEOGRAPH - 0xDB49: 0x80D4, //CJK UNIFIED IDEOGRAPH - 0xDB4A: 0x8143, //CJK UNIFIED IDEOGRAPH - 0xDB4B: 0x814A, //CJK UNIFIED IDEOGRAPH - 0xDB4C: 0x8152, //CJK UNIFIED IDEOGRAPH - 0xDB4D: 0x814F, //CJK UNIFIED IDEOGRAPH - 0xDB4E: 0x8147, //CJK UNIFIED IDEOGRAPH - 0xDB4F: 0x813D, //CJK UNIFIED IDEOGRAPH - 0xDB50: 0x814D, //CJK UNIFIED IDEOGRAPH - 0xDB51: 0x813A, //CJK UNIFIED IDEOGRAPH - 0xDB52: 0x81E6, //CJK UNIFIED IDEOGRAPH - 0xDB53: 0x81EE, //CJK UNIFIED IDEOGRAPH - 0xDB54: 0x81F7, //CJK UNIFIED IDEOGRAPH - 0xDB55: 0x81F8, //CJK UNIFIED IDEOGRAPH - 0xDB56: 0x81F9, //CJK UNIFIED IDEOGRAPH - 0xDB57: 0x8204, //CJK UNIFIED IDEOGRAPH - 0xDB58: 0x823C, //CJK UNIFIED IDEOGRAPH - 0xDB59: 0x823D, //CJK UNIFIED IDEOGRAPH - 0xDB5A: 0x823F, //CJK UNIFIED IDEOGRAPH - 0xDB5B: 0x8275, //CJK UNIFIED IDEOGRAPH - 0xDB5C: 0x833B, //CJK UNIFIED IDEOGRAPH - 0xDB5D: 0x83CF, //CJK UNIFIED IDEOGRAPH - 0xDB5E: 0x83F9, //CJK UNIFIED IDEOGRAPH - 0xDB5F: 0x8423, //CJK UNIFIED IDEOGRAPH - 0xDB60: 0x83C0, //CJK UNIFIED IDEOGRAPH - 0xDB61: 0x83E8, //CJK UNIFIED IDEOGRAPH - 0xDB62: 0x8412, //CJK UNIFIED IDEOGRAPH - 0xDB63: 0x83E7, //CJK UNIFIED IDEOGRAPH - 0xDB64: 0x83E4, //CJK UNIFIED IDEOGRAPH - 0xDB65: 0x83FC, //CJK UNIFIED IDEOGRAPH - 0xDB66: 0x83F6, //CJK UNIFIED IDEOGRAPH - 0xDB67: 0x8410, //CJK UNIFIED IDEOGRAPH - 0xDB68: 0x83C6, //CJK UNIFIED IDEOGRAPH - 0xDB69: 0x83C8, //CJK UNIFIED IDEOGRAPH - 0xDB6A: 0x83EB, //CJK UNIFIED IDEOGRAPH - 0xDB6B: 0x83E3, //CJK UNIFIED IDEOGRAPH - 0xDB6C: 0x83BF, //CJK UNIFIED IDEOGRAPH - 0xDB6D: 0x8401, //CJK UNIFIED IDEOGRAPH - 0xDB6E: 0x83DD, //CJK UNIFIED IDEOGRAPH - 0xDB6F: 0x83E5, //CJK UNIFIED IDEOGRAPH - 0xDB70: 0x83D8, //CJK UNIFIED IDEOGRAPH - 0xDB71: 0x83FF, //CJK UNIFIED IDEOGRAPH - 0xDB72: 0x83E1, //CJK UNIFIED IDEOGRAPH - 0xDB73: 0x83CB, //CJK UNIFIED IDEOGRAPH - 0xDB74: 0x83CE, //CJK UNIFIED IDEOGRAPH - 0xDB75: 0x83D6, //CJK UNIFIED IDEOGRAPH - 0xDB76: 0x83F5, //CJK UNIFIED IDEOGRAPH - 0xDB77: 0x83C9, //CJK UNIFIED IDEOGRAPH - 0xDB78: 0x8409, //CJK UNIFIED IDEOGRAPH - 0xDB79: 0x840F, //CJK UNIFIED IDEOGRAPH - 0xDB7A: 0x83DE, //CJK UNIFIED IDEOGRAPH - 0xDB7B: 0x8411, //CJK UNIFIED IDEOGRAPH - 0xDB7C: 0x8406, //CJK UNIFIED IDEOGRAPH - 0xDB7D: 0x83C2, //CJK UNIFIED IDEOGRAPH - 0xDB7E: 0x83F3, //CJK UNIFIED IDEOGRAPH - 0xDBA1: 0x83D5, //CJK UNIFIED IDEOGRAPH - 0xDBA2: 0x83FA, //CJK UNIFIED IDEOGRAPH - 0xDBA3: 0x83C7, //CJK UNIFIED IDEOGRAPH - 0xDBA4: 0x83D1, //CJK UNIFIED IDEOGRAPH - 0xDBA5: 0x83EA, //CJK UNIFIED IDEOGRAPH - 0xDBA6: 0x8413, //CJK UNIFIED IDEOGRAPH - 0xDBA7: 0x83C3, //CJK UNIFIED IDEOGRAPH - 0xDBA8: 0x83EC, //CJK UNIFIED IDEOGRAPH - 0xDBA9: 0x83EE, //CJK UNIFIED IDEOGRAPH - 0xDBAA: 0x83C4, //CJK UNIFIED IDEOGRAPH - 0xDBAB: 0x83FB, //CJK UNIFIED IDEOGRAPH - 0xDBAC: 0x83D7, //CJK UNIFIED IDEOGRAPH - 0xDBAD: 0x83E2, //CJK UNIFIED IDEOGRAPH - 0xDBAE: 0x841B, //CJK UNIFIED IDEOGRAPH - 0xDBAF: 0x83DB, //CJK UNIFIED IDEOGRAPH - 0xDBB0: 0x83FE, //CJK UNIFIED IDEOGRAPH - 0xDBB1: 0x86D8, //CJK UNIFIED IDEOGRAPH - 0xDBB2: 0x86E2, //CJK UNIFIED IDEOGRAPH - 0xDBB3: 0x86E6, //CJK UNIFIED IDEOGRAPH - 0xDBB4: 0x86D3, //CJK UNIFIED IDEOGRAPH - 0xDBB5: 0x86E3, //CJK UNIFIED IDEOGRAPH - 0xDBB6: 0x86DA, //CJK UNIFIED IDEOGRAPH - 0xDBB7: 0x86EA, //CJK UNIFIED IDEOGRAPH - 0xDBB8: 0x86DD, //CJK UNIFIED IDEOGRAPH - 0xDBB9: 0x86EB, //CJK UNIFIED IDEOGRAPH - 0xDBBA: 0x86DC, //CJK UNIFIED IDEOGRAPH - 0xDBBB: 0x86EC, //CJK UNIFIED IDEOGRAPH - 0xDBBC: 0x86E9, //CJK UNIFIED IDEOGRAPH - 0xDBBD: 0x86D7, //CJK UNIFIED IDEOGRAPH - 0xDBBE: 0x86E8, //CJK UNIFIED IDEOGRAPH - 0xDBBF: 0x86D1, //CJK UNIFIED IDEOGRAPH - 0xDBC0: 0x8848, //CJK UNIFIED IDEOGRAPH - 0xDBC1: 0x8856, //CJK UNIFIED IDEOGRAPH - 0xDBC2: 0x8855, //CJK UNIFIED IDEOGRAPH - 0xDBC3: 0x88BA, //CJK UNIFIED IDEOGRAPH - 0xDBC4: 0x88D7, //CJK UNIFIED IDEOGRAPH - 0xDBC5: 0x88B9, //CJK UNIFIED IDEOGRAPH - 0xDBC6: 0x88B8, //CJK UNIFIED IDEOGRAPH - 0xDBC7: 0x88C0, //CJK UNIFIED IDEOGRAPH - 0xDBC8: 0x88BE, //CJK UNIFIED IDEOGRAPH - 0xDBC9: 0x88B6, //CJK UNIFIED IDEOGRAPH - 0xDBCA: 0x88BC, //CJK UNIFIED IDEOGRAPH - 0xDBCB: 0x88B7, //CJK UNIFIED IDEOGRAPH - 0xDBCC: 0x88BD, //CJK UNIFIED IDEOGRAPH - 0xDBCD: 0x88B2, //CJK UNIFIED IDEOGRAPH - 0xDBCE: 0x8901, //CJK UNIFIED IDEOGRAPH - 0xDBCF: 0x88C9, //CJK UNIFIED IDEOGRAPH - 0xDBD0: 0x8995, //CJK UNIFIED IDEOGRAPH - 0xDBD1: 0x8998, //CJK UNIFIED IDEOGRAPH - 0xDBD2: 0x8997, //CJK UNIFIED IDEOGRAPH - 0xDBD3: 0x89DD, //CJK UNIFIED IDEOGRAPH - 0xDBD4: 0x89DA, //CJK UNIFIED IDEOGRAPH - 0xDBD5: 0x89DB, //CJK UNIFIED IDEOGRAPH - 0xDBD6: 0x8A4E, //CJK UNIFIED IDEOGRAPH - 0xDBD7: 0x8A4D, //CJK UNIFIED IDEOGRAPH - 0xDBD8: 0x8A39, //CJK UNIFIED IDEOGRAPH - 0xDBD9: 0x8A59, //CJK UNIFIED IDEOGRAPH - 0xDBDA: 0x8A40, //CJK UNIFIED IDEOGRAPH - 0xDBDB: 0x8A57, //CJK UNIFIED IDEOGRAPH - 0xDBDC: 0x8A58, //CJK UNIFIED IDEOGRAPH - 0xDBDD: 0x8A44, //CJK UNIFIED IDEOGRAPH - 0xDBDE: 0x8A45, //CJK UNIFIED IDEOGRAPH - 0xDBDF: 0x8A52, //CJK UNIFIED IDEOGRAPH - 0xDBE0: 0x8A48, //CJK UNIFIED IDEOGRAPH - 0xDBE1: 0x8A51, //CJK UNIFIED IDEOGRAPH - 0xDBE2: 0x8A4A, //CJK UNIFIED IDEOGRAPH - 0xDBE3: 0x8A4C, //CJK UNIFIED IDEOGRAPH - 0xDBE4: 0x8A4F, //CJK UNIFIED IDEOGRAPH - 0xDBE5: 0x8C5F, //CJK UNIFIED IDEOGRAPH - 0xDBE6: 0x8C81, //CJK UNIFIED IDEOGRAPH - 0xDBE7: 0x8C80, //CJK UNIFIED IDEOGRAPH - 0xDBE8: 0x8CBA, //CJK UNIFIED IDEOGRAPH - 0xDBE9: 0x8CBE, //CJK UNIFIED IDEOGRAPH - 0xDBEA: 0x8CB0, //CJK UNIFIED IDEOGRAPH - 0xDBEB: 0x8CB9, //CJK UNIFIED IDEOGRAPH - 0xDBEC: 0x8CB5, //CJK UNIFIED IDEOGRAPH - 0xDBED: 0x8D84, //CJK UNIFIED IDEOGRAPH - 0xDBEE: 0x8D80, //CJK UNIFIED IDEOGRAPH - 0xDBEF: 0x8D89, //CJK UNIFIED IDEOGRAPH - 0xDBF0: 0x8DD8, //CJK UNIFIED IDEOGRAPH - 0xDBF1: 0x8DD3, //CJK UNIFIED IDEOGRAPH - 0xDBF2: 0x8DCD, //CJK UNIFIED IDEOGRAPH - 0xDBF3: 0x8DC7, //CJK UNIFIED IDEOGRAPH - 0xDBF4: 0x8DD6, //CJK UNIFIED IDEOGRAPH - 0xDBF5: 0x8DDC, //CJK UNIFIED IDEOGRAPH - 0xDBF6: 0x8DCF, //CJK UNIFIED IDEOGRAPH - 0xDBF7: 0x8DD5, //CJK UNIFIED IDEOGRAPH - 0xDBF8: 0x8DD9, //CJK UNIFIED IDEOGRAPH - 0xDBF9: 0x8DC8, //CJK UNIFIED IDEOGRAPH - 0xDBFA: 0x8DD7, //CJK UNIFIED IDEOGRAPH - 0xDBFB: 0x8DC5, //CJK UNIFIED IDEOGRAPH - 0xDBFC: 0x8EEF, //CJK UNIFIED IDEOGRAPH - 0xDBFD: 0x8EF7, //CJK UNIFIED IDEOGRAPH - 0xDBFE: 0x8EFA, //CJK UNIFIED IDEOGRAPH - 0xDC40: 0x8EF9, //CJK UNIFIED IDEOGRAPH - 0xDC41: 0x8EE6, //CJK UNIFIED IDEOGRAPH - 0xDC42: 0x8EEE, //CJK UNIFIED IDEOGRAPH - 0xDC43: 0x8EE5, //CJK UNIFIED IDEOGRAPH - 0xDC44: 0x8EF5, //CJK UNIFIED IDEOGRAPH - 0xDC45: 0x8EE7, //CJK UNIFIED IDEOGRAPH - 0xDC46: 0x8EE8, //CJK UNIFIED IDEOGRAPH - 0xDC47: 0x8EF6, //CJK UNIFIED IDEOGRAPH - 0xDC48: 0x8EEB, //CJK UNIFIED IDEOGRAPH - 0xDC49: 0x8EF1, //CJK UNIFIED IDEOGRAPH - 0xDC4A: 0x8EEC, //CJK UNIFIED IDEOGRAPH - 0xDC4B: 0x8EF4, //CJK UNIFIED IDEOGRAPH - 0xDC4C: 0x8EE9, //CJK UNIFIED IDEOGRAPH - 0xDC4D: 0x902D, //CJK UNIFIED IDEOGRAPH - 0xDC4E: 0x9034, //CJK UNIFIED IDEOGRAPH - 0xDC4F: 0x902F, //CJK UNIFIED IDEOGRAPH - 0xDC50: 0x9106, //CJK UNIFIED IDEOGRAPH - 0xDC51: 0x912C, //CJK UNIFIED IDEOGRAPH - 0xDC52: 0x9104, //CJK UNIFIED IDEOGRAPH - 0xDC53: 0x90FF, //CJK UNIFIED IDEOGRAPH - 0xDC54: 0x90FC, //CJK UNIFIED IDEOGRAPH - 0xDC55: 0x9108, //CJK UNIFIED IDEOGRAPH - 0xDC56: 0x90F9, //CJK UNIFIED IDEOGRAPH - 0xDC57: 0x90FB, //CJK UNIFIED IDEOGRAPH - 0xDC58: 0x9101, //CJK UNIFIED IDEOGRAPH - 0xDC59: 0x9100, //CJK UNIFIED IDEOGRAPH - 0xDC5A: 0x9107, //CJK UNIFIED IDEOGRAPH - 0xDC5B: 0x9105, //CJK UNIFIED IDEOGRAPH - 0xDC5C: 0x9103, //CJK UNIFIED IDEOGRAPH - 0xDC5D: 0x9161, //CJK UNIFIED IDEOGRAPH - 0xDC5E: 0x9164, //CJK UNIFIED IDEOGRAPH - 0xDC5F: 0x915F, //CJK UNIFIED IDEOGRAPH - 0xDC60: 0x9162, //CJK UNIFIED IDEOGRAPH - 0xDC61: 0x9160, //CJK UNIFIED IDEOGRAPH - 0xDC62: 0x9201, //CJK UNIFIED IDEOGRAPH - 0xDC63: 0x920A, //CJK UNIFIED IDEOGRAPH - 0xDC64: 0x9225, //CJK UNIFIED IDEOGRAPH - 0xDC65: 0x9203, //CJK UNIFIED IDEOGRAPH - 0xDC66: 0x921A, //CJK UNIFIED IDEOGRAPH - 0xDC67: 0x9226, //CJK UNIFIED IDEOGRAPH - 0xDC68: 0x920F, //CJK UNIFIED IDEOGRAPH - 0xDC69: 0x920C, //CJK UNIFIED IDEOGRAPH - 0xDC6A: 0x9200, //CJK UNIFIED IDEOGRAPH - 0xDC6B: 0x9212, //CJK UNIFIED IDEOGRAPH - 0xDC6C: 0x91FF, //CJK UNIFIED IDEOGRAPH - 0xDC6D: 0x91FD, //CJK UNIFIED IDEOGRAPH - 0xDC6E: 0x9206, //CJK UNIFIED IDEOGRAPH - 0xDC6F: 0x9204, //CJK UNIFIED IDEOGRAPH - 0xDC70: 0x9227, //CJK UNIFIED IDEOGRAPH - 0xDC71: 0x9202, //CJK UNIFIED IDEOGRAPH - 0xDC72: 0x921C, //CJK UNIFIED IDEOGRAPH - 0xDC73: 0x9224, //CJK UNIFIED IDEOGRAPH - 0xDC74: 0x9219, //CJK UNIFIED IDEOGRAPH - 0xDC75: 0x9217, //CJK UNIFIED IDEOGRAPH - 0xDC76: 0x9205, //CJK UNIFIED IDEOGRAPH - 0xDC77: 0x9216, //CJK UNIFIED IDEOGRAPH - 0xDC78: 0x957B, //CJK UNIFIED IDEOGRAPH - 0xDC79: 0x958D, //CJK UNIFIED IDEOGRAPH - 0xDC7A: 0x958C, //CJK UNIFIED IDEOGRAPH - 0xDC7B: 0x9590, //CJK UNIFIED IDEOGRAPH - 0xDC7C: 0x9687, //CJK UNIFIED IDEOGRAPH - 0xDC7D: 0x967E, //CJK UNIFIED IDEOGRAPH - 0xDC7E: 0x9688, //CJK UNIFIED IDEOGRAPH - 0xDCA1: 0x9689, //CJK UNIFIED IDEOGRAPH - 0xDCA2: 0x9683, //CJK UNIFIED IDEOGRAPH - 0xDCA3: 0x9680, //CJK UNIFIED IDEOGRAPH - 0xDCA4: 0x96C2, //CJK UNIFIED IDEOGRAPH - 0xDCA5: 0x96C8, //CJK UNIFIED IDEOGRAPH - 0xDCA6: 0x96C3, //CJK UNIFIED IDEOGRAPH - 0xDCA7: 0x96F1, //CJK UNIFIED IDEOGRAPH - 0xDCA8: 0x96F0, //CJK UNIFIED IDEOGRAPH - 0xDCA9: 0x976C, //CJK UNIFIED IDEOGRAPH - 0xDCAA: 0x9770, //CJK UNIFIED IDEOGRAPH - 0xDCAB: 0x976E, //CJK UNIFIED IDEOGRAPH - 0xDCAC: 0x9807, //CJK UNIFIED IDEOGRAPH - 0xDCAD: 0x98A9, //CJK UNIFIED IDEOGRAPH - 0xDCAE: 0x98EB, //CJK UNIFIED IDEOGRAPH - 0xDCAF: 0x9CE6, //CJK UNIFIED IDEOGRAPH - 0xDCB0: 0x9EF9, //CJK UNIFIED IDEOGRAPH - 0xDCB1: 0x4E83, //CJK UNIFIED IDEOGRAPH - 0xDCB2: 0x4E84, //CJK UNIFIED IDEOGRAPH - 0xDCB3: 0x4EB6, //CJK UNIFIED IDEOGRAPH - 0xDCB4: 0x50BD, //CJK UNIFIED IDEOGRAPH - 0xDCB5: 0x50BF, //CJK UNIFIED IDEOGRAPH - 0xDCB6: 0x50C6, //CJK UNIFIED IDEOGRAPH - 0xDCB7: 0x50AE, //CJK UNIFIED IDEOGRAPH - 0xDCB8: 0x50C4, //CJK UNIFIED IDEOGRAPH - 0xDCB9: 0x50CA, //CJK UNIFIED IDEOGRAPH - 0xDCBA: 0x50B4, //CJK UNIFIED IDEOGRAPH - 0xDCBB: 0x50C8, //CJK UNIFIED IDEOGRAPH - 0xDCBC: 0x50C2, //CJK UNIFIED IDEOGRAPH - 0xDCBD: 0x50B0, //CJK UNIFIED IDEOGRAPH - 0xDCBE: 0x50C1, //CJK UNIFIED IDEOGRAPH - 0xDCBF: 0x50BA, //CJK UNIFIED IDEOGRAPH - 0xDCC0: 0x50B1, //CJK UNIFIED IDEOGRAPH - 0xDCC1: 0x50CB, //CJK UNIFIED IDEOGRAPH - 0xDCC2: 0x50C9, //CJK UNIFIED IDEOGRAPH - 0xDCC3: 0x50B6, //CJK UNIFIED IDEOGRAPH - 0xDCC4: 0x50B8, //CJK UNIFIED IDEOGRAPH - 0xDCC5: 0x51D7, //CJK UNIFIED IDEOGRAPH - 0xDCC6: 0x527A, //CJK UNIFIED IDEOGRAPH - 0xDCC7: 0x5278, //CJK UNIFIED IDEOGRAPH - 0xDCC8: 0x527B, //CJK UNIFIED IDEOGRAPH - 0xDCC9: 0x527C, //CJK UNIFIED IDEOGRAPH - 0xDCCA: 0x55C3, //CJK UNIFIED IDEOGRAPH - 0xDCCB: 0x55DB, //CJK UNIFIED IDEOGRAPH - 0xDCCC: 0x55CC, //CJK UNIFIED IDEOGRAPH - 0xDCCD: 0x55D0, //CJK UNIFIED IDEOGRAPH - 0xDCCE: 0x55CB, //CJK UNIFIED IDEOGRAPH - 0xDCCF: 0x55CA, //CJK UNIFIED IDEOGRAPH - 0xDCD0: 0x55DD, //CJK UNIFIED IDEOGRAPH - 0xDCD1: 0x55C0, //CJK UNIFIED IDEOGRAPH - 0xDCD2: 0x55D4, //CJK UNIFIED IDEOGRAPH - 0xDCD3: 0x55C4, //CJK UNIFIED IDEOGRAPH - 0xDCD4: 0x55E9, //CJK UNIFIED IDEOGRAPH - 0xDCD5: 0x55BF, //CJK UNIFIED IDEOGRAPH - 0xDCD6: 0x55D2, //CJK UNIFIED IDEOGRAPH - 0xDCD7: 0x558D, //CJK UNIFIED IDEOGRAPH - 0xDCD8: 0x55CF, //CJK UNIFIED IDEOGRAPH - 0xDCD9: 0x55D5, //CJK UNIFIED IDEOGRAPH - 0xDCDA: 0x55E2, //CJK UNIFIED IDEOGRAPH - 0xDCDB: 0x55D6, //CJK UNIFIED IDEOGRAPH - 0xDCDC: 0x55C8, //CJK UNIFIED IDEOGRAPH - 0xDCDD: 0x55F2, //CJK UNIFIED IDEOGRAPH - 0xDCDE: 0x55CD, //CJK UNIFIED IDEOGRAPH - 0xDCDF: 0x55D9, //CJK UNIFIED IDEOGRAPH - 0xDCE0: 0x55C2, //CJK UNIFIED IDEOGRAPH - 0xDCE1: 0x5714, //CJK UNIFIED IDEOGRAPH - 0xDCE2: 0x5853, //CJK UNIFIED IDEOGRAPH - 0xDCE3: 0x5868, //CJK UNIFIED IDEOGRAPH - 0xDCE4: 0x5864, //CJK UNIFIED IDEOGRAPH - 0xDCE5: 0x584F, //CJK UNIFIED IDEOGRAPH - 0xDCE6: 0x584D, //CJK UNIFIED IDEOGRAPH - 0xDCE7: 0x5849, //CJK UNIFIED IDEOGRAPH - 0xDCE8: 0x586F, //CJK UNIFIED IDEOGRAPH - 0xDCE9: 0x5855, //CJK UNIFIED IDEOGRAPH - 0xDCEA: 0x584E, //CJK UNIFIED IDEOGRAPH - 0xDCEB: 0x585D, //CJK UNIFIED IDEOGRAPH - 0xDCEC: 0x5859, //CJK UNIFIED IDEOGRAPH - 0xDCED: 0x5865, //CJK UNIFIED IDEOGRAPH - 0xDCEE: 0x585B, //CJK UNIFIED IDEOGRAPH - 0xDCEF: 0x583D, //CJK UNIFIED IDEOGRAPH - 0xDCF0: 0x5863, //CJK UNIFIED IDEOGRAPH - 0xDCF1: 0x5871, //CJK UNIFIED IDEOGRAPH - 0xDCF2: 0x58FC, //CJK UNIFIED IDEOGRAPH - 0xDCF3: 0x5AC7, //CJK UNIFIED IDEOGRAPH - 0xDCF4: 0x5AC4, //CJK UNIFIED IDEOGRAPH - 0xDCF5: 0x5ACB, //CJK UNIFIED IDEOGRAPH - 0xDCF6: 0x5ABA, //CJK UNIFIED IDEOGRAPH - 0xDCF7: 0x5AB8, //CJK UNIFIED IDEOGRAPH - 0xDCF8: 0x5AB1, //CJK UNIFIED IDEOGRAPH - 0xDCF9: 0x5AB5, //CJK UNIFIED IDEOGRAPH - 0xDCFA: 0x5AB0, //CJK UNIFIED IDEOGRAPH - 0xDCFB: 0x5ABF, //CJK UNIFIED IDEOGRAPH - 0xDCFC: 0x5AC8, //CJK UNIFIED IDEOGRAPH - 0xDCFD: 0x5ABB, //CJK UNIFIED IDEOGRAPH - 0xDCFE: 0x5AC6, //CJK UNIFIED IDEOGRAPH - 0xDD40: 0x5AB7, //CJK UNIFIED IDEOGRAPH - 0xDD41: 0x5AC0, //CJK UNIFIED IDEOGRAPH - 0xDD42: 0x5ACA, //CJK UNIFIED IDEOGRAPH - 0xDD43: 0x5AB4, //CJK UNIFIED IDEOGRAPH - 0xDD44: 0x5AB6, //CJK UNIFIED IDEOGRAPH - 0xDD45: 0x5ACD, //CJK UNIFIED IDEOGRAPH - 0xDD46: 0x5AB9, //CJK UNIFIED IDEOGRAPH - 0xDD47: 0x5A90, //CJK UNIFIED IDEOGRAPH - 0xDD48: 0x5BD6, //CJK UNIFIED IDEOGRAPH - 0xDD49: 0x5BD8, //CJK UNIFIED IDEOGRAPH - 0xDD4A: 0x5BD9, //CJK UNIFIED IDEOGRAPH - 0xDD4B: 0x5C1F, //CJK UNIFIED IDEOGRAPH - 0xDD4C: 0x5C33, //CJK UNIFIED IDEOGRAPH - 0xDD4D: 0x5D71, //CJK UNIFIED IDEOGRAPH - 0xDD4E: 0x5D63, //CJK UNIFIED IDEOGRAPH - 0xDD4F: 0x5D4A, //CJK UNIFIED IDEOGRAPH - 0xDD50: 0x5D65, //CJK UNIFIED IDEOGRAPH - 0xDD51: 0x5D72, //CJK UNIFIED IDEOGRAPH - 0xDD52: 0x5D6C, //CJK UNIFIED IDEOGRAPH - 0xDD53: 0x5D5E, //CJK UNIFIED IDEOGRAPH - 0xDD54: 0x5D68, //CJK UNIFIED IDEOGRAPH - 0xDD55: 0x5D67, //CJK UNIFIED IDEOGRAPH - 0xDD56: 0x5D62, //CJK UNIFIED IDEOGRAPH - 0xDD57: 0x5DF0, //CJK UNIFIED IDEOGRAPH - 0xDD58: 0x5E4F, //CJK UNIFIED IDEOGRAPH - 0xDD59: 0x5E4E, //CJK UNIFIED IDEOGRAPH - 0xDD5A: 0x5E4A, //CJK UNIFIED IDEOGRAPH - 0xDD5B: 0x5E4D, //CJK UNIFIED IDEOGRAPH - 0xDD5C: 0x5E4B, //CJK UNIFIED IDEOGRAPH - 0xDD5D: 0x5EC5, //CJK UNIFIED IDEOGRAPH - 0xDD5E: 0x5ECC, //CJK UNIFIED IDEOGRAPH - 0xDD5F: 0x5EC6, //CJK UNIFIED IDEOGRAPH - 0xDD60: 0x5ECB, //CJK UNIFIED IDEOGRAPH - 0xDD61: 0x5EC7, //CJK UNIFIED IDEOGRAPH - 0xDD62: 0x5F40, //CJK UNIFIED IDEOGRAPH - 0xDD63: 0x5FAF, //CJK UNIFIED IDEOGRAPH - 0xDD64: 0x5FAD, //CJK UNIFIED IDEOGRAPH - 0xDD65: 0x60F7, //CJK UNIFIED IDEOGRAPH - 0xDD66: 0x6149, //CJK UNIFIED IDEOGRAPH - 0xDD67: 0x614A, //CJK UNIFIED IDEOGRAPH - 0xDD68: 0x612B, //CJK UNIFIED IDEOGRAPH - 0xDD69: 0x6145, //CJK UNIFIED IDEOGRAPH - 0xDD6A: 0x6136, //CJK UNIFIED IDEOGRAPH - 0xDD6B: 0x6132, //CJK UNIFIED IDEOGRAPH - 0xDD6C: 0x612E, //CJK UNIFIED IDEOGRAPH - 0xDD6D: 0x6146, //CJK UNIFIED IDEOGRAPH - 0xDD6E: 0x612F, //CJK UNIFIED IDEOGRAPH - 0xDD6F: 0x614F, //CJK UNIFIED IDEOGRAPH - 0xDD70: 0x6129, //CJK UNIFIED IDEOGRAPH - 0xDD71: 0x6140, //CJK UNIFIED IDEOGRAPH - 0xDD72: 0x6220, //CJK UNIFIED IDEOGRAPH - 0xDD73: 0x9168, //CJK UNIFIED IDEOGRAPH - 0xDD74: 0x6223, //CJK UNIFIED IDEOGRAPH - 0xDD75: 0x6225, //CJK UNIFIED IDEOGRAPH - 0xDD76: 0x6224, //CJK UNIFIED IDEOGRAPH - 0xDD77: 0x63C5, //CJK UNIFIED IDEOGRAPH - 0xDD78: 0x63F1, //CJK UNIFIED IDEOGRAPH - 0xDD79: 0x63EB, //CJK UNIFIED IDEOGRAPH - 0xDD7A: 0x6410, //CJK UNIFIED IDEOGRAPH - 0xDD7B: 0x6412, //CJK UNIFIED IDEOGRAPH - 0xDD7C: 0x6409, //CJK UNIFIED IDEOGRAPH - 0xDD7D: 0x6420, //CJK UNIFIED IDEOGRAPH - 0xDD7E: 0x6424, //CJK UNIFIED IDEOGRAPH - 0xDDA1: 0x6433, //CJK UNIFIED IDEOGRAPH - 0xDDA2: 0x6443, //CJK UNIFIED IDEOGRAPH - 0xDDA3: 0x641F, //CJK UNIFIED IDEOGRAPH - 0xDDA4: 0x6415, //CJK UNIFIED IDEOGRAPH - 0xDDA5: 0x6418, //CJK UNIFIED IDEOGRAPH - 0xDDA6: 0x6439, //CJK UNIFIED IDEOGRAPH - 0xDDA7: 0x6437, //CJK UNIFIED IDEOGRAPH - 0xDDA8: 0x6422, //CJK UNIFIED IDEOGRAPH - 0xDDA9: 0x6423, //CJK UNIFIED IDEOGRAPH - 0xDDAA: 0x640C, //CJK UNIFIED IDEOGRAPH - 0xDDAB: 0x6426, //CJK UNIFIED IDEOGRAPH - 0xDDAC: 0x6430, //CJK UNIFIED IDEOGRAPH - 0xDDAD: 0x6428, //CJK UNIFIED IDEOGRAPH - 0xDDAE: 0x6441, //CJK UNIFIED IDEOGRAPH - 0xDDAF: 0x6435, //CJK UNIFIED IDEOGRAPH - 0xDDB0: 0x642F, //CJK UNIFIED IDEOGRAPH - 0xDDB1: 0x640A, //CJK UNIFIED IDEOGRAPH - 0xDDB2: 0x641A, //CJK UNIFIED IDEOGRAPH - 0xDDB3: 0x6440, //CJK UNIFIED IDEOGRAPH - 0xDDB4: 0x6425, //CJK UNIFIED IDEOGRAPH - 0xDDB5: 0x6427, //CJK UNIFIED IDEOGRAPH - 0xDDB6: 0x640B, //CJK UNIFIED IDEOGRAPH - 0xDDB7: 0x63E7, //CJK UNIFIED IDEOGRAPH - 0xDDB8: 0x641B, //CJK UNIFIED IDEOGRAPH - 0xDDB9: 0x642E, //CJK UNIFIED IDEOGRAPH - 0xDDBA: 0x6421, //CJK UNIFIED IDEOGRAPH - 0xDDBB: 0x640E, //CJK UNIFIED IDEOGRAPH - 0xDDBC: 0x656F, //CJK UNIFIED IDEOGRAPH - 0xDDBD: 0x6592, //CJK UNIFIED IDEOGRAPH - 0xDDBE: 0x65D3, //CJK UNIFIED IDEOGRAPH - 0xDDBF: 0x6686, //CJK UNIFIED IDEOGRAPH - 0xDDC0: 0x668C, //CJK UNIFIED IDEOGRAPH - 0xDDC1: 0x6695, //CJK UNIFIED IDEOGRAPH - 0xDDC2: 0x6690, //CJK UNIFIED IDEOGRAPH - 0xDDC3: 0x668B, //CJK UNIFIED IDEOGRAPH - 0xDDC4: 0x668A, //CJK UNIFIED IDEOGRAPH - 0xDDC5: 0x6699, //CJK UNIFIED IDEOGRAPH - 0xDDC6: 0x6694, //CJK UNIFIED IDEOGRAPH - 0xDDC7: 0x6678, //CJK UNIFIED IDEOGRAPH - 0xDDC8: 0x6720, //CJK UNIFIED IDEOGRAPH - 0xDDC9: 0x6966, //CJK UNIFIED IDEOGRAPH - 0xDDCA: 0x695F, //CJK UNIFIED IDEOGRAPH - 0xDDCB: 0x6938, //CJK UNIFIED IDEOGRAPH - 0xDDCC: 0x694E, //CJK UNIFIED IDEOGRAPH - 0xDDCD: 0x6962, //CJK UNIFIED IDEOGRAPH - 0xDDCE: 0x6971, //CJK UNIFIED IDEOGRAPH - 0xDDCF: 0x693F, //CJK UNIFIED IDEOGRAPH - 0xDDD0: 0x6945, //CJK UNIFIED IDEOGRAPH - 0xDDD1: 0x696A, //CJK UNIFIED IDEOGRAPH - 0xDDD2: 0x6939, //CJK UNIFIED IDEOGRAPH - 0xDDD3: 0x6942, //CJK UNIFIED IDEOGRAPH - 0xDDD4: 0x6957, //CJK UNIFIED IDEOGRAPH - 0xDDD5: 0x6959, //CJK UNIFIED IDEOGRAPH - 0xDDD6: 0x697A, //CJK UNIFIED IDEOGRAPH - 0xDDD7: 0x6948, //CJK UNIFIED IDEOGRAPH - 0xDDD8: 0x6949, //CJK UNIFIED IDEOGRAPH - 0xDDD9: 0x6935, //CJK UNIFIED IDEOGRAPH - 0xDDDA: 0x696C, //CJK UNIFIED IDEOGRAPH - 0xDDDB: 0x6933, //CJK UNIFIED IDEOGRAPH - 0xDDDC: 0x693D, //CJK UNIFIED IDEOGRAPH - 0xDDDD: 0x6965, //CJK UNIFIED IDEOGRAPH - 0xDDDE: 0x68F0, //CJK UNIFIED IDEOGRAPH - 0xDDDF: 0x6978, //CJK UNIFIED IDEOGRAPH - 0xDDE0: 0x6934, //CJK UNIFIED IDEOGRAPH - 0xDDE1: 0x6969, //CJK UNIFIED IDEOGRAPH - 0xDDE2: 0x6940, //CJK UNIFIED IDEOGRAPH - 0xDDE3: 0x696F, //CJK UNIFIED IDEOGRAPH - 0xDDE4: 0x6944, //CJK UNIFIED IDEOGRAPH - 0xDDE5: 0x6976, //CJK UNIFIED IDEOGRAPH - 0xDDE6: 0x6958, //CJK UNIFIED IDEOGRAPH - 0xDDE7: 0x6941, //CJK UNIFIED IDEOGRAPH - 0xDDE8: 0x6974, //CJK UNIFIED IDEOGRAPH - 0xDDE9: 0x694C, //CJK UNIFIED IDEOGRAPH - 0xDDEA: 0x693B, //CJK UNIFIED IDEOGRAPH - 0xDDEB: 0x694B, //CJK UNIFIED IDEOGRAPH - 0xDDEC: 0x6937, //CJK UNIFIED IDEOGRAPH - 0xDDED: 0x695C, //CJK UNIFIED IDEOGRAPH - 0xDDEE: 0x694F, //CJK UNIFIED IDEOGRAPH - 0xDDEF: 0x6951, //CJK UNIFIED IDEOGRAPH - 0xDDF0: 0x6932, //CJK UNIFIED IDEOGRAPH - 0xDDF1: 0x6952, //CJK UNIFIED IDEOGRAPH - 0xDDF2: 0x692F, //CJK UNIFIED IDEOGRAPH - 0xDDF3: 0x697B, //CJK UNIFIED IDEOGRAPH - 0xDDF4: 0x693C, //CJK UNIFIED IDEOGRAPH - 0xDDF5: 0x6B46, //CJK UNIFIED IDEOGRAPH - 0xDDF6: 0x6B45, //CJK UNIFIED IDEOGRAPH - 0xDDF7: 0x6B43, //CJK UNIFIED IDEOGRAPH - 0xDDF8: 0x6B42, //CJK UNIFIED IDEOGRAPH - 0xDDF9: 0x6B48, //CJK UNIFIED IDEOGRAPH - 0xDDFA: 0x6B41, //CJK UNIFIED IDEOGRAPH - 0xDDFB: 0x6B9B, //CJK UNIFIED IDEOGRAPH - 0xDDFC: 0xFA0D, //CJK COMPATIBILITY IDEOGRAPH - 0xDDFD: 0x6BFB, //CJK UNIFIED IDEOGRAPH - 0xDDFE: 0x6BFC, //CJK UNIFIED IDEOGRAPH - 0xDE40: 0x6BF9, //CJK UNIFIED IDEOGRAPH - 0xDE41: 0x6BF7, //CJK UNIFIED IDEOGRAPH - 0xDE42: 0x6BF8, //CJK UNIFIED IDEOGRAPH - 0xDE43: 0x6E9B, //CJK UNIFIED IDEOGRAPH - 0xDE44: 0x6ED6, //CJK UNIFIED IDEOGRAPH - 0xDE45: 0x6EC8, //CJK UNIFIED IDEOGRAPH - 0xDE46: 0x6E8F, //CJK UNIFIED IDEOGRAPH - 0xDE47: 0x6EC0, //CJK UNIFIED IDEOGRAPH - 0xDE48: 0x6E9F, //CJK UNIFIED IDEOGRAPH - 0xDE49: 0x6E93, //CJK UNIFIED IDEOGRAPH - 0xDE4A: 0x6E94, //CJK UNIFIED IDEOGRAPH - 0xDE4B: 0x6EA0, //CJK UNIFIED IDEOGRAPH - 0xDE4C: 0x6EB1, //CJK UNIFIED IDEOGRAPH - 0xDE4D: 0x6EB9, //CJK UNIFIED IDEOGRAPH - 0xDE4E: 0x6EC6, //CJK UNIFIED IDEOGRAPH - 0xDE4F: 0x6ED2, //CJK UNIFIED IDEOGRAPH - 0xDE50: 0x6EBD, //CJK UNIFIED IDEOGRAPH - 0xDE51: 0x6EC1, //CJK UNIFIED IDEOGRAPH - 0xDE52: 0x6E9E, //CJK UNIFIED IDEOGRAPH - 0xDE53: 0x6EC9, //CJK UNIFIED IDEOGRAPH - 0xDE54: 0x6EB7, //CJK UNIFIED IDEOGRAPH - 0xDE55: 0x6EB0, //CJK UNIFIED IDEOGRAPH - 0xDE56: 0x6ECD, //CJK UNIFIED IDEOGRAPH - 0xDE57: 0x6EA6, //CJK UNIFIED IDEOGRAPH - 0xDE58: 0x6ECF, //CJK UNIFIED IDEOGRAPH - 0xDE59: 0x6EB2, //CJK UNIFIED IDEOGRAPH - 0xDE5A: 0x6EBE, //CJK UNIFIED IDEOGRAPH - 0xDE5B: 0x6EC3, //CJK UNIFIED IDEOGRAPH - 0xDE5C: 0x6EDC, //CJK UNIFIED IDEOGRAPH - 0xDE5D: 0x6ED8, //CJK UNIFIED IDEOGRAPH - 0xDE5E: 0x6E99, //CJK UNIFIED IDEOGRAPH - 0xDE5F: 0x6E92, //CJK UNIFIED IDEOGRAPH - 0xDE60: 0x6E8E, //CJK UNIFIED IDEOGRAPH - 0xDE61: 0x6E8D, //CJK UNIFIED IDEOGRAPH - 0xDE62: 0x6EA4, //CJK UNIFIED IDEOGRAPH - 0xDE63: 0x6EA1, //CJK UNIFIED IDEOGRAPH - 0xDE64: 0x6EBF, //CJK UNIFIED IDEOGRAPH - 0xDE65: 0x6EB3, //CJK UNIFIED IDEOGRAPH - 0xDE66: 0x6ED0, //CJK UNIFIED IDEOGRAPH - 0xDE67: 0x6ECA, //CJK UNIFIED IDEOGRAPH - 0xDE68: 0x6E97, //CJK UNIFIED IDEOGRAPH - 0xDE69: 0x6EAE, //CJK UNIFIED IDEOGRAPH - 0xDE6A: 0x6EA3, //CJK UNIFIED IDEOGRAPH - 0xDE6B: 0x7147, //CJK UNIFIED IDEOGRAPH - 0xDE6C: 0x7154, //CJK UNIFIED IDEOGRAPH - 0xDE6D: 0x7152, //CJK UNIFIED IDEOGRAPH - 0xDE6E: 0x7163, //CJK UNIFIED IDEOGRAPH - 0xDE6F: 0x7160, //CJK UNIFIED IDEOGRAPH - 0xDE70: 0x7141, //CJK UNIFIED IDEOGRAPH - 0xDE71: 0x715D, //CJK UNIFIED IDEOGRAPH - 0xDE72: 0x7162, //CJK UNIFIED IDEOGRAPH - 0xDE73: 0x7172, //CJK UNIFIED IDEOGRAPH - 0xDE74: 0x7178, //CJK UNIFIED IDEOGRAPH - 0xDE75: 0x716A, //CJK UNIFIED IDEOGRAPH - 0xDE76: 0x7161, //CJK UNIFIED IDEOGRAPH - 0xDE77: 0x7142, //CJK UNIFIED IDEOGRAPH - 0xDE78: 0x7158, //CJK UNIFIED IDEOGRAPH - 0xDE79: 0x7143, //CJK UNIFIED IDEOGRAPH - 0xDE7A: 0x714B, //CJK UNIFIED IDEOGRAPH - 0xDE7B: 0x7170, //CJK UNIFIED IDEOGRAPH - 0xDE7C: 0x715F, //CJK UNIFIED IDEOGRAPH - 0xDE7D: 0x7150, //CJK UNIFIED IDEOGRAPH - 0xDE7E: 0x7153, //CJK UNIFIED IDEOGRAPH - 0xDEA1: 0x7144, //CJK UNIFIED IDEOGRAPH - 0xDEA2: 0x714D, //CJK UNIFIED IDEOGRAPH - 0xDEA3: 0x715A, //CJK UNIFIED IDEOGRAPH - 0xDEA4: 0x724F, //CJK UNIFIED IDEOGRAPH - 0xDEA5: 0x728D, //CJK UNIFIED IDEOGRAPH - 0xDEA6: 0x728C, //CJK UNIFIED IDEOGRAPH - 0xDEA7: 0x7291, //CJK UNIFIED IDEOGRAPH - 0xDEA8: 0x7290, //CJK UNIFIED IDEOGRAPH - 0xDEA9: 0x728E, //CJK UNIFIED IDEOGRAPH - 0xDEAA: 0x733C, //CJK UNIFIED IDEOGRAPH - 0xDEAB: 0x7342, //CJK UNIFIED IDEOGRAPH - 0xDEAC: 0x733B, //CJK UNIFIED IDEOGRAPH - 0xDEAD: 0x733A, //CJK UNIFIED IDEOGRAPH - 0xDEAE: 0x7340, //CJK UNIFIED IDEOGRAPH - 0xDEAF: 0x734A, //CJK UNIFIED IDEOGRAPH - 0xDEB0: 0x7349, //CJK UNIFIED IDEOGRAPH - 0xDEB1: 0x7444, //CJK UNIFIED IDEOGRAPH - 0xDEB2: 0x744A, //CJK UNIFIED IDEOGRAPH - 0xDEB3: 0x744B, //CJK UNIFIED IDEOGRAPH - 0xDEB4: 0x7452, //CJK UNIFIED IDEOGRAPH - 0xDEB5: 0x7451, //CJK UNIFIED IDEOGRAPH - 0xDEB6: 0x7457, //CJK UNIFIED IDEOGRAPH - 0xDEB7: 0x7440, //CJK UNIFIED IDEOGRAPH - 0xDEB8: 0x744F, //CJK UNIFIED IDEOGRAPH - 0xDEB9: 0x7450, //CJK UNIFIED IDEOGRAPH - 0xDEBA: 0x744E, //CJK UNIFIED IDEOGRAPH - 0xDEBB: 0x7442, //CJK UNIFIED IDEOGRAPH - 0xDEBC: 0x7446, //CJK UNIFIED IDEOGRAPH - 0xDEBD: 0x744D, //CJK UNIFIED IDEOGRAPH - 0xDEBE: 0x7454, //CJK UNIFIED IDEOGRAPH - 0xDEBF: 0x74E1, //CJK UNIFIED IDEOGRAPH - 0xDEC0: 0x74FF, //CJK UNIFIED IDEOGRAPH - 0xDEC1: 0x74FE, //CJK UNIFIED IDEOGRAPH - 0xDEC2: 0x74FD, //CJK UNIFIED IDEOGRAPH - 0xDEC3: 0x751D, //CJK UNIFIED IDEOGRAPH - 0xDEC4: 0x7579, //CJK UNIFIED IDEOGRAPH - 0xDEC5: 0x7577, //CJK UNIFIED IDEOGRAPH - 0xDEC6: 0x6983, //CJK UNIFIED IDEOGRAPH - 0xDEC7: 0x75EF, //CJK UNIFIED IDEOGRAPH - 0xDEC8: 0x760F, //CJK UNIFIED IDEOGRAPH - 0xDEC9: 0x7603, //CJK UNIFIED IDEOGRAPH - 0xDECA: 0x75F7, //CJK UNIFIED IDEOGRAPH - 0xDECB: 0x75FE, //CJK UNIFIED IDEOGRAPH - 0xDECC: 0x75FC, //CJK UNIFIED IDEOGRAPH - 0xDECD: 0x75F9, //CJK UNIFIED IDEOGRAPH - 0xDECE: 0x75F8, //CJK UNIFIED IDEOGRAPH - 0xDECF: 0x7610, //CJK UNIFIED IDEOGRAPH - 0xDED0: 0x75FB, //CJK UNIFIED IDEOGRAPH - 0xDED1: 0x75F6, //CJK UNIFIED IDEOGRAPH - 0xDED2: 0x75ED, //CJK UNIFIED IDEOGRAPH - 0xDED3: 0x75F5, //CJK UNIFIED IDEOGRAPH - 0xDED4: 0x75FD, //CJK UNIFIED IDEOGRAPH - 0xDED5: 0x7699, //CJK UNIFIED IDEOGRAPH - 0xDED6: 0x76B5, //CJK UNIFIED IDEOGRAPH - 0xDED7: 0x76DD, //CJK UNIFIED IDEOGRAPH - 0xDED8: 0x7755, //CJK UNIFIED IDEOGRAPH - 0xDED9: 0x775F, //CJK UNIFIED IDEOGRAPH - 0xDEDA: 0x7760, //CJK UNIFIED IDEOGRAPH - 0xDEDB: 0x7752, //CJK UNIFIED IDEOGRAPH - 0xDEDC: 0x7756, //CJK UNIFIED IDEOGRAPH - 0xDEDD: 0x775A, //CJK UNIFIED IDEOGRAPH - 0xDEDE: 0x7769, //CJK UNIFIED IDEOGRAPH - 0xDEDF: 0x7767, //CJK UNIFIED IDEOGRAPH - 0xDEE0: 0x7754, //CJK UNIFIED IDEOGRAPH - 0xDEE1: 0x7759, //CJK UNIFIED IDEOGRAPH - 0xDEE2: 0x776D, //CJK UNIFIED IDEOGRAPH - 0xDEE3: 0x77E0, //CJK UNIFIED IDEOGRAPH - 0xDEE4: 0x7887, //CJK UNIFIED IDEOGRAPH - 0xDEE5: 0x789A, //CJK UNIFIED IDEOGRAPH - 0xDEE6: 0x7894, //CJK UNIFIED IDEOGRAPH - 0xDEE7: 0x788F, //CJK UNIFIED IDEOGRAPH - 0xDEE8: 0x7884, //CJK UNIFIED IDEOGRAPH - 0xDEE9: 0x7895, //CJK UNIFIED IDEOGRAPH - 0xDEEA: 0x7885, //CJK UNIFIED IDEOGRAPH - 0xDEEB: 0x7886, //CJK UNIFIED IDEOGRAPH - 0xDEEC: 0x78A1, //CJK UNIFIED IDEOGRAPH - 0xDEED: 0x7883, //CJK UNIFIED IDEOGRAPH - 0xDEEE: 0x7879, //CJK UNIFIED IDEOGRAPH - 0xDEEF: 0x7899, //CJK UNIFIED IDEOGRAPH - 0xDEF0: 0x7880, //CJK UNIFIED IDEOGRAPH - 0xDEF1: 0x7896, //CJK UNIFIED IDEOGRAPH - 0xDEF2: 0x787B, //CJK UNIFIED IDEOGRAPH - 0xDEF3: 0x797C, //CJK UNIFIED IDEOGRAPH - 0xDEF4: 0x7982, //CJK UNIFIED IDEOGRAPH - 0xDEF5: 0x797D, //CJK UNIFIED IDEOGRAPH - 0xDEF6: 0x7979, //CJK UNIFIED IDEOGRAPH - 0xDEF7: 0x7A11, //CJK UNIFIED IDEOGRAPH - 0xDEF8: 0x7A18, //CJK UNIFIED IDEOGRAPH - 0xDEF9: 0x7A19, //CJK UNIFIED IDEOGRAPH - 0xDEFA: 0x7A12, //CJK UNIFIED IDEOGRAPH - 0xDEFB: 0x7A17, //CJK UNIFIED IDEOGRAPH - 0xDEFC: 0x7A15, //CJK UNIFIED IDEOGRAPH - 0xDEFD: 0x7A22, //CJK UNIFIED IDEOGRAPH - 0xDEFE: 0x7A13, //CJK UNIFIED IDEOGRAPH - 0xDF40: 0x7A1B, //CJK UNIFIED IDEOGRAPH - 0xDF41: 0x7A10, //CJK UNIFIED IDEOGRAPH - 0xDF42: 0x7AA3, //CJK UNIFIED IDEOGRAPH - 0xDF43: 0x7AA2, //CJK UNIFIED IDEOGRAPH - 0xDF44: 0x7A9E, //CJK UNIFIED IDEOGRAPH - 0xDF45: 0x7AEB, //CJK UNIFIED IDEOGRAPH - 0xDF46: 0x7B66, //CJK UNIFIED IDEOGRAPH - 0xDF47: 0x7B64, //CJK UNIFIED IDEOGRAPH - 0xDF48: 0x7B6D, //CJK UNIFIED IDEOGRAPH - 0xDF49: 0x7B74, //CJK UNIFIED IDEOGRAPH - 0xDF4A: 0x7B69, //CJK UNIFIED IDEOGRAPH - 0xDF4B: 0x7B72, //CJK UNIFIED IDEOGRAPH - 0xDF4C: 0x7B65, //CJK UNIFIED IDEOGRAPH - 0xDF4D: 0x7B73, //CJK UNIFIED IDEOGRAPH - 0xDF4E: 0x7B71, //CJK UNIFIED IDEOGRAPH - 0xDF4F: 0x7B70, //CJK UNIFIED IDEOGRAPH - 0xDF50: 0x7B61, //CJK UNIFIED IDEOGRAPH - 0xDF51: 0x7B78, //CJK UNIFIED IDEOGRAPH - 0xDF52: 0x7B76, //CJK UNIFIED IDEOGRAPH - 0xDF53: 0x7B63, //CJK UNIFIED IDEOGRAPH - 0xDF54: 0x7CB2, //CJK UNIFIED IDEOGRAPH - 0xDF55: 0x7CB4, //CJK UNIFIED IDEOGRAPH - 0xDF56: 0x7CAF, //CJK UNIFIED IDEOGRAPH - 0xDF57: 0x7D88, //CJK UNIFIED IDEOGRAPH - 0xDF58: 0x7D86, //CJK UNIFIED IDEOGRAPH - 0xDF59: 0x7D80, //CJK UNIFIED IDEOGRAPH - 0xDF5A: 0x7D8D, //CJK UNIFIED IDEOGRAPH - 0xDF5B: 0x7D7F, //CJK UNIFIED IDEOGRAPH - 0xDF5C: 0x7D85, //CJK UNIFIED IDEOGRAPH - 0xDF5D: 0x7D7A, //CJK UNIFIED IDEOGRAPH - 0xDF5E: 0x7D8E, //CJK UNIFIED IDEOGRAPH - 0xDF5F: 0x7D7B, //CJK UNIFIED IDEOGRAPH - 0xDF60: 0x7D83, //CJK UNIFIED IDEOGRAPH - 0xDF61: 0x7D7C, //CJK UNIFIED IDEOGRAPH - 0xDF62: 0x7D8C, //CJK UNIFIED IDEOGRAPH - 0xDF63: 0x7D94, //CJK UNIFIED IDEOGRAPH - 0xDF64: 0x7D84, //CJK UNIFIED IDEOGRAPH - 0xDF65: 0x7D7D, //CJK UNIFIED IDEOGRAPH - 0xDF66: 0x7D92, //CJK UNIFIED IDEOGRAPH - 0xDF67: 0x7F6D, //CJK UNIFIED IDEOGRAPH - 0xDF68: 0x7F6B, //CJK UNIFIED IDEOGRAPH - 0xDF69: 0x7F67, //CJK UNIFIED IDEOGRAPH - 0xDF6A: 0x7F68, //CJK UNIFIED IDEOGRAPH - 0xDF6B: 0x7F6C, //CJK UNIFIED IDEOGRAPH - 0xDF6C: 0x7FA6, //CJK UNIFIED IDEOGRAPH - 0xDF6D: 0x7FA5, //CJK UNIFIED IDEOGRAPH - 0xDF6E: 0x7FA7, //CJK UNIFIED IDEOGRAPH - 0xDF6F: 0x7FDB, //CJK UNIFIED IDEOGRAPH - 0xDF70: 0x7FDC, //CJK UNIFIED IDEOGRAPH - 0xDF71: 0x8021, //CJK UNIFIED IDEOGRAPH - 0xDF72: 0x8164, //CJK UNIFIED IDEOGRAPH - 0xDF73: 0x8160, //CJK UNIFIED IDEOGRAPH - 0xDF74: 0x8177, //CJK UNIFIED IDEOGRAPH - 0xDF75: 0x815C, //CJK UNIFIED IDEOGRAPH - 0xDF76: 0x8169, //CJK UNIFIED IDEOGRAPH - 0xDF77: 0x815B, //CJK UNIFIED IDEOGRAPH - 0xDF78: 0x8162, //CJK UNIFIED IDEOGRAPH - 0xDF79: 0x8172, //CJK UNIFIED IDEOGRAPH - 0xDF7A: 0x6721, //CJK UNIFIED IDEOGRAPH - 0xDF7B: 0x815E, //CJK UNIFIED IDEOGRAPH - 0xDF7C: 0x8176, //CJK UNIFIED IDEOGRAPH - 0xDF7D: 0x8167, //CJK UNIFIED IDEOGRAPH - 0xDF7E: 0x816F, //CJK UNIFIED IDEOGRAPH - 0xDFA1: 0x8144, //CJK UNIFIED IDEOGRAPH - 0xDFA2: 0x8161, //CJK UNIFIED IDEOGRAPH - 0xDFA3: 0x821D, //CJK UNIFIED IDEOGRAPH - 0xDFA4: 0x8249, //CJK UNIFIED IDEOGRAPH - 0xDFA5: 0x8244, //CJK UNIFIED IDEOGRAPH - 0xDFA6: 0x8240, //CJK UNIFIED IDEOGRAPH - 0xDFA7: 0x8242, //CJK UNIFIED IDEOGRAPH - 0xDFA8: 0x8245, //CJK UNIFIED IDEOGRAPH - 0xDFA9: 0x84F1, //CJK UNIFIED IDEOGRAPH - 0xDFAA: 0x843F, //CJK UNIFIED IDEOGRAPH - 0xDFAB: 0x8456, //CJK UNIFIED IDEOGRAPH - 0xDFAC: 0x8476, //CJK UNIFIED IDEOGRAPH - 0xDFAD: 0x8479, //CJK UNIFIED IDEOGRAPH - 0xDFAE: 0x848F, //CJK UNIFIED IDEOGRAPH - 0xDFAF: 0x848D, //CJK UNIFIED IDEOGRAPH - 0xDFB0: 0x8465, //CJK UNIFIED IDEOGRAPH - 0xDFB1: 0x8451, //CJK UNIFIED IDEOGRAPH - 0xDFB2: 0x8440, //CJK UNIFIED IDEOGRAPH - 0xDFB3: 0x8486, //CJK UNIFIED IDEOGRAPH - 0xDFB4: 0x8467, //CJK UNIFIED IDEOGRAPH - 0xDFB5: 0x8430, //CJK UNIFIED IDEOGRAPH - 0xDFB6: 0x844D, //CJK UNIFIED IDEOGRAPH - 0xDFB7: 0x847D, //CJK UNIFIED IDEOGRAPH - 0xDFB8: 0x845A, //CJK UNIFIED IDEOGRAPH - 0xDFB9: 0x8459, //CJK UNIFIED IDEOGRAPH - 0xDFBA: 0x8474, //CJK UNIFIED IDEOGRAPH - 0xDFBB: 0x8473, //CJK UNIFIED IDEOGRAPH - 0xDFBC: 0x845D, //CJK UNIFIED IDEOGRAPH - 0xDFBD: 0x8507, //CJK UNIFIED IDEOGRAPH - 0xDFBE: 0x845E, //CJK UNIFIED IDEOGRAPH - 0xDFBF: 0x8437, //CJK UNIFIED IDEOGRAPH - 0xDFC0: 0x843A, //CJK UNIFIED IDEOGRAPH - 0xDFC1: 0x8434, //CJK UNIFIED IDEOGRAPH - 0xDFC2: 0x847A, //CJK UNIFIED IDEOGRAPH - 0xDFC3: 0x8443, //CJK UNIFIED IDEOGRAPH - 0xDFC4: 0x8478, //CJK UNIFIED IDEOGRAPH - 0xDFC5: 0x8432, //CJK UNIFIED IDEOGRAPH - 0xDFC6: 0x8445, //CJK UNIFIED IDEOGRAPH - 0xDFC7: 0x8429, //CJK UNIFIED IDEOGRAPH - 0xDFC8: 0x83D9, //CJK UNIFIED IDEOGRAPH - 0xDFC9: 0x844B, //CJK UNIFIED IDEOGRAPH - 0xDFCA: 0x842F, //CJK UNIFIED IDEOGRAPH - 0xDFCB: 0x8442, //CJK UNIFIED IDEOGRAPH - 0xDFCC: 0x842D, //CJK UNIFIED IDEOGRAPH - 0xDFCD: 0x845F, //CJK UNIFIED IDEOGRAPH - 0xDFCE: 0x8470, //CJK UNIFIED IDEOGRAPH - 0xDFCF: 0x8439, //CJK UNIFIED IDEOGRAPH - 0xDFD0: 0x844E, //CJK UNIFIED IDEOGRAPH - 0xDFD1: 0x844C, //CJK UNIFIED IDEOGRAPH - 0xDFD2: 0x8452, //CJK UNIFIED IDEOGRAPH - 0xDFD3: 0x846F, //CJK UNIFIED IDEOGRAPH - 0xDFD4: 0x84C5, //CJK UNIFIED IDEOGRAPH - 0xDFD5: 0x848E, //CJK UNIFIED IDEOGRAPH - 0xDFD6: 0x843B, //CJK UNIFIED IDEOGRAPH - 0xDFD7: 0x8447, //CJK UNIFIED IDEOGRAPH - 0xDFD8: 0x8436, //CJK UNIFIED IDEOGRAPH - 0xDFD9: 0x8433, //CJK UNIFIED IDEOGRAPH - 0xDFDA: 0x8468, //CJK UNIFIED IDEOGRAPH - 0xDFDB: 0x847E, //CJK UNIFIED IDEOGRAPH - 0xDFDC: 0x8444, //CJK UNIFIED IDEOGRAPH - 0xDFDD: 0x842B, //CJK UNIFIED IDEOGRAPH - 0xDFDE: 0x8460, //CJK UNIFIED IDEOGRAPH - 0xDFDF: 0x8454, //CJK UNIFIED IDEOGRAPH - 0xDFE0: 0x846E, //CJK UNIFIED IDEOGRAPH - 0xDFE1: 0x8450, //CJK UNIFIED IDEOGRAPH - 0xDFE2: 0x870B, //CJK UNIFIED IDEOGRAPH - 0xDFE3: 0x8704, //CJK UNIFIED IDEOGRAPH - 0xDFE4: 0x86F7, //CJK UNIFIED IDEOGRAPH - 0xDFE5: 0x870C, //CJK UNIFIED IDEOGRAPH - 0xDFE6: 0x86FA, //CJK UNIFIED IDEOGRAPH - 0xDFE7: 0x86D6, //CJK UNIFIED IDEOGRAPH - 0xDFE8: 0x86F5, //CJK UNIFIED IDEOGRAPH - 0xDFE9: 0x874D, //CJK UNIFIED IDEOGRAPH - 0xDFEA: 0x86F8, //CJK UNIFIED IDEOGRAPH - 0xDFEB: 0x870E, //CJK UNIFIED IDEOGRAPH - 0xDFEC: 0x8709, //CJK UNIFIED IDEOGRAPH - 0xDFED: 0x8701, //CJK UNIFIED IDEOGRAPH - 0xDFEE: 0x86F6, //CJK UNIFIED IDEOGRAPH - 0xDFEF: 0x870D, //CJK UNIFIED IDEOGRAPH - 0xDFF0: 0x8705, //CJK UNIFIED IDEOGRAPH - 0xDFF1: 0x88D6, //CJK UNIFIED IDEOGRAPH - 0xDFF2: 0x88CB, //CJK UNIFIED IDEOGRAPH - 0xDFF3: 0x88CD, //CJK UNIFIED IDEOGRAPH - 0xDFF4: 0x88CE, //CJK UNIFIED IDEOGRAPH - 0xDFF5: 0x88DE, //CJK UNIFIED IDEOGRAPH - 0xDFF6: 0x88DB, //CJK UNIFIED IDEOGRAPH - 0xDFF7: 0x88DA, //CJK UNIFIED IDEOGRAPH - 0xDFF8: 0x88CC, //CJK UNIFIED IDEOGRAPH - 0xDFF9: 0x88D0, //CJK UNIFIED IDEOGRAPH - 0xDFFA: 0x8985, //CJK UNIFIED IDEOGRAPH - 0xDFFB: 0x899B, //CJK UNIFIED IDEOGRAPH - 0xDFFC: 0x89DF, //CJK UNIFIED IDEOGRAPH - 0xDFFD: 0x89E5, //CJK UNIFIED IDEOGRAPH - 0xDFFE: 0x89E4, //CJK UNIFIED IDEOGRAPH - 0xE040: 0x89E1, //CJK UNIFIED IDEOGRAPH - 0xE041: 0x89E0, //CJK UNIFIED IDEOGRAPH - 0xE042: 0x89E2, //CJK UNIFIED IDEOGRAPH - 0xE043: 0x89DC, //CJK UNIFIED IDEOGRAPH - 0xE044: 0x89E6, //CJK UNIFIED IDEOGRAPH - 0xE045: 0x8A76, //CJK UNIFIED IDEOGRAPH - 0xE046: 0x8A86, //CJK UNIFIED IDEOGRAPH - 0xE047: 0x8A7F, //CJK UNIFIED IDEOGRAPH - 0xE048: 0x8A61, //CJK UNIFIED IDEOGRAPH - 0xE049: 0x8A3F, //CJK UNIFIED IDEOGRAPH - 0xE04A: 0x8A77, //CJK UNIFIED IDEOGRAPH - 0xE04B: 0x8A82, //CJK UNIFIED IDEOGRAPH - 0xE04C: 0x8A84, //CJK UNIFIED IDEOGRAPH - 0xE04D: 0x8A75, //CJK UNIFIED IDEOGRAPH - 0xE04E: 0x8A83, //CJK UNIFIED IDEOGRAPH - 0xE04F: 0x8A81, //CJK UNIFIED IDEOGRAPH - 0xE050: 0x8A74, //CJK UNIFIED IDEOGRAPH - 0xE051: 0x8A7A, //CJK UNIFIED IDEOGRAPH - 0xE052: 0x8C3C, //CJK UNIFIED IDEOGRAPH - 0xE053: 0x8C4B, //CJK UNIFIED IDEOGRAPH - 0xE054: 0x8C4A, //CJK UNIFIED IDEOGRAPH - 0xE055: 0x8C65, //CJK UNIFIED IDEOGRAPH - 0xE056: 0x8C64, //CJK UNIFIED IDEOGRAPH - 0xE057: 0x8C66, //CJK UNIFIED IDEOGRAPH - 0xE058: 0x8C86, //CJK UNIFIED IDEOGRAPH - 0xE059: 0x8C84, //CJK UNIFIED IDEOGRAPH - 0xE05A: 0x8C85, //CJK UNIFIED IDEOGRAPH - 0xE05B: 0x8CCC, //CJK UNIFIED IDEOGRAPH - 0xE05C: 0x8D68, //CJK UNIFIED IDEOGRAPH - 0xE05D: 0x8D69, //CJK UNIFIED IDEOGRAPH - 0xE05E: 0x8D91, //CJK UNIFIED IDEOGRAPH - 0xE05F: 0x8D8C, //CJK UNIFIED IDEOGRAPH - 0xE060: 0x8D8E, //CJK UNIFIED IDEOGRAPH - 0xE061: 0x8D8F, //CJK UNIFIED IDEOGRAPH - 0xE062: 0x8D8D, //CJK UNIFIED IDEOGRAPH - 0xE063: 0x8D93, //CJK UNIFIED IDEOGRAPH - 0xE064: 0x8D94, //CJK UNIFIED IDEOGRAPH - 0xE065: 0x8D90, //CJK UNIFIED IDEOGRAPH - 0xE066: 0x8D92, //CJK UNIFIED IDEOGRAPH - 0xE067: 0x8DF0, //CJK UNIFIED IDEOGRAPH - 0xE068: 0x8DE0, //CJK UNIFIED IDEOGRAPH - 0xE069: 0x8DEC, //CJK UNIFIED IDEOGRAPH - 0xE06A: 0x8DF1, //CJK UNIFIED IDEOGRAPH - 0xE06B: 0x8DEE, //CJK UNIFIED IDEOGRAPH - 0xE06C: 0x8DD0, //CJK UNIFIED IDEOGRAPH - 0xE06D: 0x8DE9, //CJK UNIFIED IDEOGRAPH - 0xE06E: 0x8DE3, //CJK UNIFIED IDEOGRAPH - 0xE06F: 0x8DE2, //CJK UNIFIED IDEOGRAPH - 0xE070: 0x8DE7, //CJK UNIFIED IDEOGRAPH - 0xE071: 0x8DF2, //CJK UNIFIED IDEOGRAPH - 0xE072: 0x8DEB, //CJK UNIFIED IDEOGRAPH - 0xE073: 0x8DF4, //CJK UNIFIED IDEOGRAPH - 0xE074: 0x8F06, //CJK UNIFIED IDEOGRAPH - 0xE075: 0x8EFF, //CJK UNIFIED IDEOGRAPH - 0xE076: 0x8F01, //CJK UNIFIED IDEOGRAPH - 0xE077: 0x8F00, //CJK UNIFIED IDEOGRAPH - 0xE078: 0x8F05, //CJK UNIFIED IDEOGRAPH - 0xE079: 0x8F07, //CJK UNIFIED IDEOGRAPH - 0xE07A: 0x8F08, //CJK UNIFIED IDEOGRAPH - 0xE07B: 0x8F02, //CJK UNIFIED IDEOGRAPH - 0xE07C: 0x8F0B, //CJK UNIFIED IDEOGRAPH - 0xE07D: 0x9052, //CJK UNIFIED IDEOGRAPH - 0xE07E: 0x903F, //CJK UNIFIED IDEOGRAPH - 0xE0A1: 0x9044, //CJK UNIFIED IDEOGRAPH - 0xE0A2: 0x9049, //CJK UNIFIED IDEOGRAPH - 0xE0A3: 0x903D, //CJK UNIFIED IDEOGRAPH - 0xE0A4: 0x9110, //CJK UNIFIED IDEOGRAPH - 0xE0A5: 0x910D, //CJK UNIFIED IDEOGRAPH - 0xE0A6: 0x910F, //CJK UNIFIED IDEOGRAPH - 0xE0A7: 0x9111, //CJK UNIFIED IDEOGRAPH - 0xE0A8: 0x9116, //CJK UNIFIED IDEOGRAPH - 0xE0A9: 0x9114, //CJK UNIFIED IDEOGRAPH - 0xE0AA: 0x910B, //CJK UNIFIED IDEOGRAPH - 0xE0AB: 0x910E, //CJK UNIFIED IDEOGRAPH - 0xE0AC: 0x916E, //CJK UNIFIED IDEOGRAPH - 0xE0AD: 0x916F, //CJK UNIFIED IDEOGRAPH - 0xE0AE: 0x9248, //CJK UNIFIED IDEOGRAPH - 0xE0AF: 0x9252, //CJK UNIFIED IDEOGRAPH - 0xE0B0: 0x9230, //CJK UNIFIED IDEOGRAPH - 0xE0B1: 0x923A, //CJK UNIFIED IDEOGRAPH - 0xE0B2: 0x9266, //CJK UNIFIED IDEOGRAPH - 0xE0B3: 0x9233, //CJK UNIFIED IDEOGRAPH - 0xE0B4: 0x9265, //CJK UNIFIED IDEOGRAPH - 0xE0B5: 0x925E, //CJK UNIFIED IDEOGRAPH - 0xE0B6: 0x9283, //CJK UNIFIED IDEOGRAPH - 0xE0B7: 0x922E, //CJK UNIFIED IDEOGRAPH - 0xE0B8: 0x924A, //CJK UNIFIED IDEOGRAPH - 0xE0B9: 0x9246, //CJK UNIFIED IDEOGRAPH - 0xE0BA: 0x926D, //CJK UNIFIED IDEOGRAPH - 0xE0BB: 0x926C, //CJK UNIFIED IDEOGRAPH - 0xE0BC: 0x924F, //CJK UNIFIED IDEOGRAPH - 0xE0BD: 0x9260, //CJK UNIFIED IDEOGRAPH - 0xE0BE: 0x9267, //CJK UNIFIED IDEOGRAPH - 0xE0BF: 0x926F, //CJK UNIFIED IDEOGRAPH - 0xE0C0: 0x9236, //CJK UNIFIED IDEOGRAPH - 0xE0C1: 0x9261, //CJK UNIFIED IDEOGRAPH - 0xE0C2: 0x9270, //CJK UNIFIED IDEOGRAPH - 0xE0C3: 0x9231, //CJK UNIFIED IDEOGRAPH - 0xE0C4: 0x9254, //CJK UNIFIED IDEOGRAPH - 0xE0C5: 0x9263, //CJK UNIFIED IDEOGRAPH - 0xE0C6: 0x9250, //CJK UNIFIED IDEOGRAPH - 0xE0C7: 0x9272, //CJK UNIFIED IDEOGRAPH - 0xE0C8: 0x924E, //CJK UNIFIED IDEOGRAPH - 0xE0C9: 0x9253, //CJK UNIFIED IDEOGRAPH - 0xE0CA: 0x924C, //CJK UNIFIED IDEOGRAPH - 0xE0CB: 0x9256, //CJK UNIFIED IDEOGRAPH - 0xE0CC: 0x9232, //CJK UNIFIED IDEOGRAPH - 0xE0CD: 0x959F, //CJK UNIFIED IDEOGRAPH - 0xE0CE: 0x959C, //CJK UNIFIED IDEOGRAPH - 0xE0CF: 0x959E, //CJK UNIFIED IDEOGRAPH - 0xE0D0: 0x959B, //CJK UNIFIED IDEOGRAPH - 0xE0D1: 0x9692, //CJK UNIFIED IDEOGRAPH - 0xE0D2: 0x9693, //CJK UNIFIED IDEOGRAPH - 0xE0D3: 0x9691, //CJK UNIFIED IDEOGRAPH - 0xE0D4: 0x9697, //CJK UNIFIED IDEOGRAPH - 0xE0D5: 0x96CE, //CJK UNIFIED IDEOGRAPH - 0xE0D6: 0x96FA, //CJK UNIFIED IDEOGRAPH - 0xE0D7: 0x96FD, //CJK UNIFIED IDEOGRAPH - 0xE0D8: 0x96F8, //CJK UNIFIED IDEOGRAPH - 0xE0D9: 0x96F5, //CJK UNIFIED IDEOGRAPH - 0xE0DA: 0x9773, //CJK UNIFIED IDEOGRAPH - 0xE0DB: 0x9777, //CJK UNIFIED IDEOGRAPH - 0xE0DC: 0x9778, //CJK UNIFIED IDEOGRAPH - 0xE0DD: 0x9772, //CJK UNIFIED IDEOGRAPH - 0xE0DE: 0x980F, //CJK UNIFIED IDEOGRAPH - 0xE0DF: 0x980D, //CJK UNIFIED IDEOGRAPH - 0xE0E0: 0x980E, //CJK UNIFIED IDEOGRAPH - 0xE0E1: 0x98AC, //CJK UNIFIED IDEOGRAPH - 0xE0E2: 0x98F6, //CJK UNIFIED IDEOGRAPH - 0xE0E3: 0x98F9, //CJK UNIFIED IDEOGRAPH - 0xE0E4: 0x99AF, //CJK UNIFIED IDEOGRAPH - 0xE0E5: 0x99B2, //CJK UNIFIED IDEOGRAPH - 0xE0E6: 0x99B0, //CJK UNIFIED IDEOGRAPH - 0xE0E7: 0x99B5, //CJK UNIFIED IDEOGRAPH - 0xE0E8: 0x9AAD, //CJK UNIFIED IDEOGRAPH - 0xE0E9: 0x9AAB, //CJK UNIFIED IDEOGRAPH - 0xE0EA: 0x9B5B, //CJK UNIFIED IDEOGRAPH - 0xE0EB: 0x9CEA, //CJK UNIFIED IDEOGRAPH - 0xE0EC: 0x9CED, //CJK UNIFIED IDEOGRAPH - 0xE0ED: 0x9CE7, //CJK UNIFIED IDEOGRAPH - 0xE0EE: 0x9E80, //CJK UNIFIED IDEOGRAPH - 0xE0EF: 0x9EFD, //CJK UNIFIED IDEOGRAPH - 0xE0F0: 0x50E6, //CJK UNIFIED IDEOGRAPH - 0xE0F1: 0x50D4, //CJK UNIFIED IDEOGRAPH - 0xE0F2: 0x50D7, //CJK UNIFIED IDEOGRAPH - 0xE0F3: 0x50E8, //CJK UNIFIED IDEOGRAPH - 0xE0F4: 0x50F3, //CJK UNIFIED IDEOGRAPH - 0xE0F5: 0x50DB, //CJK UNIFIED IDEOGRAPH - 0xE0F6: 0x50EA, //CJK UNIFIED IDEOGRAPH - 0xE0F7: 0x50DD, //CJK UNIFIED IDEOGRAPH - 0xE0F8: 0x50E4, //CJK UNIFIED IDEOGRAPH - 0xE0F9: 0x50D3, //CJK UNIFIED IDEOGRAPH - 0xE0FA: 0x50EC, //CJK UNIFIED IDEOGRAPH - 0xE0FB: 0x50F0, //CJK UNIFIED IDEOGRAPH - 0xE0FC: 0x50EF, //CJK UNIFIED IDEOGRAPH - 0xE0FD: 0x50E3, //CJK UNIFIED IDEOGRAPH - 0xE0FE: 0x50E0, //CJK UNIFIED IDEOGRAPH - 0xE140: 0x51D8, //CJK UNIFIED IDEOGRAPH - 0xE141: 0x5280, //CJK UNIFIED IDEOGRAPH - 0xE142: 0x5281, //CJK UNIFIED IDEOGRAPH - 0xE143: 0x52E9, //CJK UNIFIED IDEOGRAPH - 0xE144: 0x52EB, //CJK UNIFIED IDEOGRAPH - 0xE145: 0x5330, //CJK UNIFIED IDEOGRAPH - 0xE146: 0x53AC, //CJK UNIFIED IDEOGRAPH - 0xE147: 0x5627, //CJK UNIFIED IDEOGRAPH - 0xE148: 0x5615, //CJK UNIFIED IDEOGRAPH - 0xE149: 0x560C, //CJK UNIFIED IDEOGRAPH - 0xE14A: 0x5612, //CJK UNIFIED IDEOGRAPH - 0xE14B: 0x55FC, //CJK UNIFIED IDEOGRAPH - 0xE14C: 0x560F, //CJK UNIFIED IDEOGRAPH - 0xE14D: 0x561C, //CJK UNIFIED IDEOGRAPH - 0xE14E: 0x5601, //CJK UNIFIED IDEOGRAPH - 0xE14F: 0x5613, //CJK UNIFIED IDEOGRAPH - 0xE150: 0x5602, //CJK UNIFIED IDEOGRAPH - 0xE151: 0x55FA, //CJK UNIFIED IDEOGRAPH - 0xE152: 0x561D, //CJK UNIFIED IDEOGRAPH - 0xE153: 0x5604, //CJK UNIFIED IDEOGRAPH - 0xE154: 0x55FF, //CJK UNIFIED IDEOGRAPH - 0xE155: 0x55F9, //CJK UNIFIED IDEOGRAPH - 0xE156: 0x5889, //CJK UNIFIED IDEOGRAPH - 0xE157: 0x587C, //CJK UNIFIED IDEOGRAPH - 0xE158: 0x5890, //CJK UNIFIED IDEOGRAPH - 0xE159: 0x5898, //CJK UNIFIED IDEOGRAPH - 0xE15A: 0x5886, //CJK UNIFIED IDEOGRAPH - 0xE15B: 0x5881, //CJK UNIFIED IDEOGRAPH - 0xE15C: 0x587F, //CJK UNIFIED IDEOGRAPH - 0xE15D: 0x5874, //CJK UNIFIED IDEOGRAPH - 0xE15E: 0x588B, //CJK UNIFIED IDEOGRAPH - 0xE15F: 0x587A, //CJK UNIFIED IDEOGRAPH - 0xE160: 0x5887, //CJK UNIFIED IDEOGRAPH - 0xE161: 0x5891, //CJK UNIFIED IDEOGRAPH - 0xE162: 0x588E, //CJK UNIFIED IDEOGRAPH - 0xE163: 0x5876, //CJK UNIFIED IDEOGRAPH - 0xE164: 0x5882, //CJK UNIFIED IDEOGRAPH - 0xE165: 0x5888, //CJK UNIFIED IDEOGRAPH - 0xE166: 0x587B, //CJK UNIFIED IDEOGRAPH - 0xE167: 0x5894, //CJK UNIFIED IDEOGRAPH - 0xE168: 0x588F, //CJK UNIFIED IDEOGRAPH - 0xE169: 0x58FE, //CJK UNIFIED IDEOGRAPH - 0xE16A: 0x596B, //CJK UNIFIED IDEOGRAPH - 0xE16B: 0x5ADC, //CJK UNIFIED IDEOGRAPH - 0xE16C: 0x5AEE, //CJK UNIFIED IDEOGRAPH - 0xE16D: 0x5AE5, //CJK UNIFIED IDEOGRAPH - 0xE16E: 0x5AD5, //CJK UNIFIED IDEOGRAPH - 0xE16F: 0x5AEA, //CJK UNIFIED IDEOGRAPH - 0xE170: 0x5ADA, //CJK UNIFIED IDEOGRAPH - 0xE171: 0x5AED, //CJK UNIFIED IDEOGRAPH - 0xE172: 0x5AEB, //CJK UNIFIED IDEOGRAPH - 0xE173: 0x5AF3, //CJK UNIFIED IDEOGRAPH - 0xE174: 0x5AE2, //CJK UNIFIED IDEOGRAPH - 0xE175: 0x5AE0, //CJK UNIFIED IDEOGRAPH - 0xE176: 0x5ADB, //CJK UNIFIED IDEOGRAPH - 0xE177: 0x5AEC, //CJK UNIFIED IDEOGRAPH - 0xE178: 0x5ADE, //CJK UNIFIED IDEOGRAPH - 0xE179: 0x5ADD, //CJK UNIFIED IDEOGRAPH - 0xE17A: 0x5AD9, //CJK UNIFIED IDEOGRAPH - 0xE17B: 0x5AE8, //CJK UNIFIED IDEOGRAPH - 0xE17C: 0x5ADF, //CJK UNIFIED IDEOGRAPH - 0xE17D: 0x5B77, //CJK UNIFIED IDEOGRAPH - 0xE17E: 0x5BE0, //CJK UNIFIED IDEOGRAPH - 0xE1A1: 0x5BE3, //CJK UNIFIED IDEOGRAPH - 0xE1A2: 0x5C63, //CJK UNIFIED IDEOGRAPH - 0xE1A3: 0x5D82, //CJK UNIFIED IDEOGRAPH - 0xE1A4: 0x5D80, //CJK UNIFIED IDEOGRAPH - 0xE1A5: 0x5D7D, //CJK UNIFIED IDEOGRAPH - 0xE1A6: 0x5D86, //CJK UNIFIED IDEOGRAPH - 0xE1A7: 0x5D7A, //CJK UNIFIED IDEOGRAPH - 0xE1A8: 0x5D81, //CJK UNIFIED IDEOGRAPH - 0xE1A9: 0x5D77, //CJK UNIFIED IDEOGRAPH - 0xE1AA: 0x5D8A, //CJK UNIFIED IDEOGRAPH - 0xE1AB: 0x5D89, //CJK UNIFIED IDEOGRAPH - 0xE1AC: 0x5D88, //CJK UNIFIED IDEOGRAPH - 0xE1AD: 0x5D7E, //CJK UNIFIED IDEOGRAPH - 0xE1AE: 0x5D7C, //CJK UNIFIED IDEOGRAPH - 0xE1AF: 0x5D8D, //CJK UNIFIED IDEOGRAPH - 0xE1B0: 0x5D79, //CJK UNIFIED IDEOGRAPH - 0xE1B1: 0x5D7F, //CJK UNIFIED IDEOGRAPH - 0xE1B2: 0x5E58, //CJK UNIFIED IDEOGRAPH - 0xE1B3: 0x5E59, //CJK UNIFIED IDEOGRAPH - 0xE1B4: 0x5E53, //CJK UNIFIED IDEOGRAPH - 0xE1B5: 0x5ED8, //CJK UNIFIED IDEOGRAPH - 0xE1B6: 0x5ED1, //CJK UNIFIED IDEOGRAPH - 0xE1B7: 0x5ED7, //CJK UNIFIED IDEOGRAPH - 0xE1B8: 0x5ECE, //CJK UNIFIED IDEOGRAPH - 0xE1B9: 0x5EDC, //CJK UNIFIED IDEOGRAPH - 0xE1BA: 0x5ED5, //CJK UNIFIED IDEOGRAPH - 0xE1BB: 0x5ED9, //CJK UNIFIED IDEOGRAPH - 0xE1BC: 0x5ED2, //CJK UNIFIED IDEOGRAPH - 0xE1BD: 0x5ED4, //CJK UNIFIED IDEOGRAPH - 0xE1BE: 0x5F44, //CJK UNIFIED IDEOGRAPH - 0xE1BF: 0x5F43, //CJK UNIFIED IDEOGRAPH - 0xE1C0: 0x5F6F, //CJK UNIFIED IDEOGRAPH - 0xE1C1: 0x5FB6, //CJK UNIFIED IDEOGRAPH - 0xE1C2: 0x612C, //CJK UNIFIED IDEOGRAPH - 0xE1C3: 0x6128, //CJK UNIFIED IDEOGRAPH - 0xE1C4: 0x6141, //CJK UNIFIED IDEOGRAPH - 0xE1C5: 0x615E, //CJK UNIFIED IDEOGRAPH - 0xE1C6: 0x6171, //CJK UNIFIED IDEOGRAPH - 0xE1C7: 0x6173, //CJK UNIFIED IDEOGRAPH - 0xE1C8: 0x6152, //CJK UNIFIED IDEOGRAPH - 0xE1C9: 0x6153, //CJK UNIFIED IDEOGRAPH - 0xE1CA: 0x6172, //CJK UNIFIED IDEOGRAPH - 0xE1CB: 0x616C, //CJK UNIFIED IDEOGRAPH - 0xE1CC: 0x6180, //CJK UNIFIED IDEOGRAPH - 0xE1CD: 0x6174, //CJK UNIFIED IDEOGRAPH - 0xE1CE: 0x6154, //CJK UNIFIED IDEOGRAPH - 0xE1CF: 0x617A, //CJK UNIFIED IDEOGRAPH - 0xE1D0: 0x615B, //CJK UNIFIED IDEOGRAPH - 0xE1D1: 0x6165, //CJK UNIFIED IDEOGRAPH - 0xE1D2: 0x613B, //CJK UNIFIED IDEOGRAPH - 0xE1D3: 0x616A, //CJK UNIFIED IDEOGRAPH - 0xE1D4: 0x6161, //CJK UNIFIED IDEOGRAPH - 0xE1D5: 0x6156, //CJK UNIFIED IDEOGRAPH - 0xE1D6: 0x6229, //CJK UNIFIED IDEOGRAPH - 0xE1D7: 0x6227, //CJK UNIFIED IDEOGRAPH - 0xE1D8: 0x622B, //CJK UNIFIED IDEOGRAPH - 0xE1D9: 0x642B, //CJK UNIFIED IDEOGRAPH - 0xE1DA: 0x644D, //CJK UNIFIED IDEOGRAPH - 0xE1DB: 0x645B, //CJK UNIFIED IDEOGRAPH - 0xE1DC: 0x645D, //CJK UNIFIED IDEOGRAPH - 0xE1DD: 0x6474, //CJK UNIFIED IDEOGRAPH - 0xE1DE: 0x6476, //CJK UNIFIED IDEOGRAPH - 0xE1DF: 0x6472, //CJK UNIFIED IDEOGRAPH - 0xE1E0: 0x6473, //CJK UNIFIED IDEOGRAPH - 0xE1E1: 0x647D, //CJK UNIFIED IDEOGRAPH - 0xE1E2: 0x6475, //CJK UNIFIED IDEOGRAPH - 0xE1E3: 0x6466, //CJK UNIFIED IDEOGRAPH - 0xE1E4: 0x64A6, //CJK UNIFIED IDEOGRAPH - 0xE1E5: 0x644E, //CJK UNIFIED IDEOGRAPH - 0xE1E6: 0x6482, //CJK UNIFIED IDEOGRAPH - 0xE1E7: 0x645E, //CJK UNIFIED IDEOGRAPH - 0xE1E8: 0x645C, //CJK UNIFIED IDEOGRAPH - 0xE1E9: 0x644B, //CJK UNIFIED IDEOGRAPH - 0xE1EA: 0x6453, //CJK UNIFIED IDEOGRAPH - 0xE1EB: 0x6460, //CJK UNIFIED IDEOGRAPH - 0xE1EC: 0x6450, //CJK UNIFIED IDEOGRAPH - 0xE1ED: 0x647F, //CJK UNIFIED IDEOGRAPH - 0xE1EE: 0x643F, //CJK UNIFIED IDEOGRAPH - 0xE1EF: 0x646C, //CJK UNIFIED IDEOGRAPH - 0xE1F0: 0x646B, //CJK UNIFIED IDEOGRAPH - 0xE1F1: 0x6459, //CJK UNIFIED IDEOGRAPH - 0xE1F2: 0x6465, //CJK UNIFIED IDEOGRAPH - 0xE1F3: 0x6477, //CJK UNIFIED IDEOGRAPH - 0xE1F4: 0x6573, //CJK UNIFIED IDEOGRAPH - 0xE1F5: 0x65A0, //CJK UNIFIED IDEOGRAPH - 0xE1F6: 0x66A1, //CJK UNIFIED IDEOGRAPH - 0xE1F7: 0x66A0, //CJK UNIFIED IDEOGRAPH - 0xE1F8: 0x669F, //CJK UNIFIED IDEOGRAPH - 0xE1F9: 0x6705, //CJK UNIFIED IDEOGRAPH - 0xE1FA: 0x6704, //CJK UNIFIED IDEOGRAPH - 0xE1FB: 0x6722, //CJK UNIFIED IDEOGRAPH - 0xE1FC: 0x69B1, //CJK UNIFIED IDEOGRAPH - 0xE1FD: 0x69B6, //CJK UNIFIED IDEOGRAPH - 0xE1FE: 0x69C9, //CJK UNIFIED IDEOGRAPH - 0xE240: 0x69A0, //CJK UNIFIED IDEOGRAPH - 0xE241: 0x69CE, //CJK UNIFIED IDEOGRAPH - 0xE242: 0x6996, //CJK UNIFIED IDEOGRAPH - 0xE243: 0x69B0, //CJK UNIFIED IDEOGRAPH - 0xE244: 0x69AC, //CJK UNIFIED IDEOGRAPH - 0xE245: 0x69BC, //CJK UNIFIED IDEOGRAPH - 0xE246: 0x6991, //CJK UNIFIED IDEOGRAPH - 0xE247: 0x6999, //CJK UNIFIED IDEOGRAPH - 0xE248: 0x698E, //CJK UNIFIED IDEOGRAPH - 0xE249: 0x69A7, //CJK UNIFIED IDEOGRAPH - 0xE24A: 0x698D, //CJK UNIFIED IDEOGRAPH - 0xE24B: 0x69A9, //CJK UNIFIED IDEOGRAPH - 0xE24C: 0x69BE, //CJK UNIFIED IDEOGRAPH - 0xE24D: 0x69AF, //CJK UNIFIED IDEOGRAPH - 0xE24E: 0x69BF, //CJK UNIFIED IDEOGRAPH - 0xE24F: 0x69C4, //CJK UNIFIED IDEOGRAPH - 0xE250: 0x69BD, //CJK UNIFIED IDEOGRAPH - 0xE251: 0x69A4, //CJK UNIFIED IDEOGRAPH - 0xE252: 0x69D4, //CJK UNIFIED IDEOGRAPH - 0xE253: 0x69B9, //CJK UNIFIED IDEOGRAPH - 0xE254: 0x69CA, //CJK UNIFIED IDEOGRAPH - 0xE255: 0x699A, //CJK UNIFIED IDEOGRAPH - 0xE256: 0x69CF, //CJK UNIFIED IDEOGRAPH - 0xE257: 0x69B3, //CJK UNIFIED IDEOGRAPH - 0xE258: 0x6993, //CJK UNIFIED IDEOGRAPH - 0xE259: 0x69AA, //CJK UNIFIED IDEOGRAPH - 0xE25A: 0x69A1, //CJK UNIFIED IDEOGRAPH - 0xE25B: 0x699E, //CJK UNIFIED IDEOGRAPH - 0xE25C: 0x69D9, //CJK UNIFIED IDEOGRAPH - 0xE25D: 0x6997, //CJK UNIFIED IDEOGRAPH - 0xE25E: 0x6990, //CJK UNIFIED IDEOGRAPH - 0xE25F: 0x69C2, //CJK UNIFIED IDEOGRAPH - 0xE260: 0x69B5, //CJK UNIFIED IDEOGRAPH - 0xE261: 0x69A5, //CJK UNIFIED IDEOGRAPH - 0xE262: 0x69C6, //CJK UNIFIED IDEOGRAPH - 0xE263: 0x6B4A, //CJK UNIFIED IDEOGRAPH - 0xE264: 0x6B4D, //CJK UNIFIED IDEOGRAPH - 0xE265: 0x6B4B, //CJK UNIFIED IDEOGRAPH - 0xE266: 0x6B9E, //CJK UNIFIED IDEOGRAPH - 0xE267: 0x6B9F, //CJK UNIFIED IDEOGRAPH - 0xE268: 0x6BA0, //CJK UNIFIED IDEOGRAPH - 0xE269: 0x6BC3, //CJK UNIFIED IDEOGRAPH - 0xE26A: 0x6BC4, //CJK UNIFIED IDEOGRAPH - 0xE26B: 0x6BFE, //CJK UNIFIED IDEOGRAPH - 0xE26C: 0x6ECE, //CJK UNIFIED IDEOGRAPH - 0xE26D: 0x6EF5, //CJK UNIFIED IDEOGRAPH - 0xE26E: 0x6EF1, //CJK UNIFIED IDEOGRAPH - 0xE26F: 0x6F03, //CJK UNIFIED IDEOGRAPH - 0xE270: 0x6F25, //CJK UNIFIED IDEOGRAPH - 0xE271: 0x6EF8, //CJK UNIFIED IDEOGRAPH - 0xE272: 0x6F37, //CJK UNIFIED IDEOGRAPH - 0xE273: 0x6EFB, //CJK UNIFIED IDEOGRAPH - 0xE274: 0x6F2E, //CJK UNIFIED IDEOGRAPH - 0xE275: 0x6F09, //CJK UNIFIED IDEOGRAPH - 0xE276: 0x6F4E, //CJK UNIFIED IDEOGRAPH - 0xE277: 0x6F19, //CJK UNIFIED IDEOGRAPH - 0xE278: 0x6F1A, //CJK UNIFIED IDEOGRAPH - 0xE279: 0x6F27, //CJK UNIFIED IDEOGRAPH - 0xE27A: 0x6F18, //CJK UNIFIED IDEOGRAPH - 0xE27B: 0x6F3B, //CJK UNIFIED IDEOGRAPH - 0xE27C: 0x6F12, //CJK UNIFIED IDEOGRAPH - 0xE27D: 0x6EED, //CJK UNIFIED IDEOGRAPH - 0xE27E: 0x6F0A, //CJK UNIFIED IDEOGRAPH - 0xE2A1: 0x6F36, //CJK UNIFIED IDEOGRAPH - 0xE2A2: 0x6F73, //CJK UNIFIED IDEOGRAPH - 0xE2A3: 0x6EF9, //CJK UNIFIED IDEOGRAPH - 0xE2A4: 0x6EEE, //CJK UNIFIED IDEOGRAPH - 0xE2A5: 0x6F2D, //CJK UNIFIED IDEOGRAPH - 0xE2A6: 0x6F40, //CJK UNIFIED IDEOGRAPH - 0xE2A7: 0x6F30, //CJK UNIFIED IDEOGRAPH - 0xE2A8: 0x6F3C, //CJK UNIFIED IDEOGRAPH - 0xE2A9: 0x6F35, //CJK UNIFIED IDEOGRAPH - 0xE2AA: 0x6EEB, //CJK UNIFIED IDEOGRAPH - 0xE2AB: 0x6F07, //CJK UNIFIED IDEOGRAPH - 0xE2AC: 0x6F0E, //CJK UNIFIED IDEOGRAPH - 0xE2AD: 0x6F43, //CJK UNIFIED IDEOGRAPH - 0xE2AE: 0x6F05, //CJK UNIFIED IDEOGRAPH - 0xE2AF: 0x6EFD, //CJK UNIFIED IDEOGRAPH - 0xE2B0: 0x6EF6, //CJK UNIFIED IDEOGRAPH - 0xE2B1: 0x6F39, //CJK UNIFIED IDEOGRAPH - 0xE2B2: 0x6F1C, //CJK UNIFIED IDEOGRAPH - 0xE2B3: 0x6EFC, //CJK UNIFIED IDEOGRAPH - 0xE2B4: 0x6F3A, //CJK UNIFIED IDEOGRAPH - 0xE2B5: 0x6F1F, //CJK UNIFIED IDEOGRAPH - 0xE2B6: 0x6F0D, //CJK UNIFIED IDEOGRAPH - 0xE2B7: 0x6F1E, //CJK UNIFIED IDEOGRAPH - 0xE2B8: 0x6F08, //CJK UNIFIED IDEOGRAPH - 0xE2B9: 0x6F21, //CJK UNIFIED IDEOGRAPH - 0xE2BA: 0x7187, //CJK UNIFIED IDEOGRAPH - 0xE2BB: 0x7190, //CJK UNIFIED IDEOGRAPH - 0xE2BC: 0x7189, //CJK UNIFIED IDEOGRAPH - 0xE2BD: 0x7180, //CJK UNIFIED IDEOGRAPH - 0xE2BE: 0x7185, //CJK UNIFIED IDEOGRAPH - 0xE2BF: 0x7182, //CJK UNIFIED IDEOGRAPH - 0xE2C0: 0x718F, //CJK UNIFIED IDEOGRAPH - 0xE2C1: 0x717B, //CJK UNIFIED IDEOGRAPH - 0xE2C2: 0x7186, //CJK UNIFIED IDEOGRAPH - 0xE2C3: 0x7181, //CJK UNIFIED IDEOGRAPH - 0xE2C4: 0x7197, //CJK UNIFIED IDEOGRAPH - 0xE2C5: 0x7244, //CJK UNIFIED IDEOGRAPH - 0xE2C6: 0x7253, //CJK UNIFIED IDEOGRAPH - 0xE2C7: 0x7297, //CJK UNIFIED IDEOGRAPH - 0xE2C8: 0x7295, //CJK UNIFIED IDEOGRAPH - 0xE2C9: 0x7293, //CJK UNIFIED IDEOGRAPH - 0xE2CA: 0x7343, //CJK UNIFIED IDEOGRAPH - 0xE2CB: 0x734D, //CJK UNIFIED IDEOGRAPH - 0xE2CC: 0x7351, //CJK UNIFIED IDEOGRAPH - 0xE2CD: 0x734C, //CJK UNIFIED IDEOGRAPH - 0xE2CE: 0x7462, //CJK UNIFIED IDEOGRAPH - 0xE2CF: 0x7473, //CJK UNIFIED IDEOGRAPH - 0xE2D0: 0x7471, //CJK UNIFIED IDEOGRAPH - 0xE2D1: 0x7475, //CJK UNIFIED IDEOGRAPH - 0xE2D2: 0x7472, //CJK UNIFIED IDEOGRAPH - 0xE2D3: 0x7467, //CJK UNIFIED IDEOGRAPH - 0xE2D4: 0x746E, //CJK UNIFIED IDEOGRAPH - 0xE2D5: 0x7500, //CJK UNIFIED IDEOGRAPH - 0xE2D6: 0x7502, //CJK UNIFIED IDEOGRAPH - 0xE2D7: 0x7503, //CJK UNIFIED IDEOGRAPH - 0xE2D8: 0x757D, //CJK UNIFIED IDEOGRAPH - 0xE2D9: 0x7590, //CJK UNIFIED IDEOGRAPH - 0xE2DA: 0x7616, //CJK UNIFIED IDEOGRAPH - 0xE2DB: 0x7608, //CJK UNIFIED IDEOGRAPH - 0xE2DC: 0x760C, //CJK UNIFIED IDEOGRAPH - 0xE2DD: 0x7615, //CJK UNIFIED IDEOGRAPH - 0xE2DE: 0x7611, //CJK UNIFIED IDEOGRAPH - 0xE2DF: 0x760A, //CJK UNIFIED IDEOGRAPH - 0xE2E0: 0x7614, //CJK UNIFIED IDEOGRAPH - 0xE2E1: 0x76B8, //CJK UNIFIED IDEOGRAPH - 0xE2E2: 0x7781, //CJK UNIFIED IDEOGRAPH - 0xE2E3: 0x777C, //CJK UNIFIED IDEOGRAPH - 0xE2E4: 0x7785, //CJK UNIFIED IDEOGRAPH - 0xE2E5: 0x7782, //CJK UNIFIED IDEOGRAPH - 0xE2E6: 0x776E, //CJK UNIFIED IDEOGRAPH - 0xE2E7: 0x7780, //CJK UNIFIED IDEOGRAPH - 0xE2E8: 0x776F, //CJK UNIFIED IDEOGRAPH - 0xE2E9: 0x777E, //CJK UNIFIED IDEOGRAPH - 0xE2EA: 0x7783, //CJK UNIFIED IDEOGRAPH - 0xE2EB: 0x78B2, //CJK UNIFIED IDEOGRAPH - 0xE2EC: 0x78AA, //CJK UNIFIED IDEOGRAPH - 0xE2ED: 0x78B4, //CJK UNIFIED IDEOGRAPH - 0xE2EE: 0x78AD, //CJK UNIFIED IDEOGRAPH - 0xE2EF: 0x78A8, //CJK UNIFIED IDEOGRAPH - 0xE2F0: 0x787E, //CJK UNIFIED IDEOGRAPH - 0xE2F1: 0x78AB, //CJK UNIFIED IDEOGRAPH - 0xE2F2: 0x789E, //CJK UNIFIED IDEOGRAPH - 0xE2F3: 0x78A5, //CJK UNIFIED IDEOGRAPH - 0xE2F4: 0x78A0, //CJK UNIFIED IDEOGRAPH - 0xE2F5: 0x78AC, //CJK UNIFIED IDEOGRAPH - 0xE2F6: 0x78A2, //CJK UNIFIED IDEOGRAPH - 0xE2F7: 0x78A4, //CJK UNIFIED IDEOGRAPH - 0xE2F8: 0x7998, //CJK UNIFIED IDEOGRAPH - 0xE2F9: 0x798A, //CJK UNIFIED IDEOGRAPH - 0xE2FA: 0x798B, //CJK UNIFIED IDEOGRAPH - 0xE2FB: 0x7996, //CJK UNIFIED IDEOGRAPH - 0xE2FC: 0x7995, //CJK UNIFIED IDEOGRAPH - 0xE2FD: 0x7994, //CJK UNIFIED IDEOGRAPH - 0xE2FE: 0x7993, //CJK UNIFIED IDEOGRAPH - 0xE340: 0x7997, //CJK UNIFIED IDEOGRAPH - 0xE341: 0x7988, //CJK UNIFIED IDEOGRAPH - 0xE342: 0x7992, //CJK UNIFIED IDEOGRAPH - 0xE343: 0x7990, //CJK UNIFIED IDEOGRAPH - 0xE344: 0x7A2B, //CJK UNIFIED IDEOGRAPH - 0xE345: 0x7A4A, //CJK UNIFIED IDEOGRAPH - 0xE346: 0x7A30, //CJK UNIFIED IDEOGRAPH - 0xE347: 0x7A2F, //CJK UNIFIED IDEOGRAPH - 0xE348: 0x7A28, //CJK UNIFIED IDEOGRAPH - 0xE349: 0x7A26, //CJK UNIFIED IDEOGRAPH - 0xE34A: 0x7AA8, //CJK UNIFIED IDEOGRAPH - 0xE34B: 0x7AAB, //CJK UNIFIED IDEOGRAPH - 0xE34C: 0x7AAC, //CJK UNIFIED IDEOGRAPH - 0xE34D: 0x7AEE, //CJK UNIFIED IDEOGRAPH - 0xE34E: 0x7B88, //CJK UNIFIED IDEOGRAPH - 0xE34F: 0x7B9C, //CJK UNIFIED IDEOGRAPH - 0xE350: 0x7B8A, //CJK UNIFIED IDEOGRAPH - 0xE351: 0x7B91, //CJK UNIFIED IDEOGRAPH - 0xE352: 0x7B90, //CJK UNIFIED IDEOGRAPH - 0xE353: 0x7B96, //CJK UNIFIED IDEOGRAPH - 0xE354: 0x7B8D, //CJK UNIFIED IDEOGRAPH - 0xE355: 0x7B8C, //CJK UNIFIED IDEOGRAPH - 0xE356: 0x7B9B, //CJK UNIFIED IDEOGRAPH - 0xE357: 0x7B8E, //CJK UNIFIED IDEOGRAPH - 0xE358: 0x7B85, //CJK UNIFIED IDEOGRAPH - 0xE359: 0x7B98, //CJK UNIFIED IDEOGRAPH - 0xE35A: 0x5284, //CJK UNIFIED IDEOGRAPH - 0xE35B: 0x7B99, //CJK UNIFIED IDEOGRAPH - 0xE35C: 0x7BA4, //CJK UNIFIED IDEOGRAPH - 0xE35D: 0x7B82, //CJK UNIFIED IDEOGRAPH - 0xE35E: 0x7CBB, //CJK UNIFIED IDEOGRAPH - 0xE35F: 0x7CBF, //CJK UNIFIED IDEOGRAPH - 0xE360: 0x7CBC, //CJK UNIFIED IDEOGRAPH - 0xE361: 0x7CBA, //CJK UNIFIED IDEOGRAPH - 0xE362: 0x7DA7, //CJK UNIFIED IDEOGRAPH - 0xE363: 0x7DB7, //CJK UNIFIED IDEOGRAPH - 0xE364: 0x7DC2, //CJK UNIFIED IDEOGRAPH - 0xE365: 0x7DA3, //CJK UNIFIED IDEOGRAPH - 0xE366: 0x7DAA, //CJK UNIFIED IDEOGRAPH - 0xE367: 0x7DC1, //CJK UNIFIED IDEOGRAPH - 0xE368: 0x7DC0, //CJK UNIFIED IDEOGRAPH - 0xE369: 0x7DC5, //CJK UNIFIED IDEOGRAPH - 0xE36A: 0x7D9D, //CJK UNIFIED IDEOGRAPH - 0xE36B: 0x7DCE, //CJK UNIFIED IDEOGRAPH - 0xE36C: 0x7DC4, //CJK UNIFIED IDEOGRAPH - 0xE36D: 0x7DC6, //CJK UNIFIED IDEOGRAPH - 0xE36E: 0x7DCB, //CJK UNIFIED IDEOGRAPH - 0xE36F: 0x7DCC, //CJK UNIFIED IDEOGRAPH - 0xE370: 0x7DAF, //CJK UNIFIED IDEOGRAPH - 0xE371: 0x7DB9, //CJK UNIFIED IDEOGRAPH - 0xE372: 0x7D96, //CJK UNIFIED IDEOGRAPH - 0xE373: 0x7DBC, //CJK UNIFIED IDEOGRAPH - 0xE374: 0x7D9F, //CJK UNIFIED IDEOGRAPH - 0xE375: 0x7DA6, //CJK UNIFIED IDEOGRAPH - 0xE376: 0x7DAE, //CJK UNIFIED IDEOGRAPH - 0xE377: 0x7DA9, //CJK UNIFIED IDEOGRAPH - 0xE378: 0x7DA1, //CJK UNIFIED IDEOGRAPH - 0xE379: 0x7DC9, //CJK UNIFIED IDEOGRAPH - 0xE37A: 0x7F73, //CJK UNIFIED IDEOGRAPH - 0xE37B: 0x7FE2, //CJK UNIFIED IDEOGRAPH - 0xE37C: 0x7FE3, //CJK UNIFIED IDEOGRAPH - 0xE37D: 0x7FE5, //CJK UNIFIED IDEOGRAPH - 0xE37E: 0x7FDE, //CJK UNIFIED IDEOGRAPH - 0xE3A1: 0x8024, //CJK UNIFIED IDEOGRAPH - 0xE3A2: 0x805D, //CJK UNIFIED IDEOGRAPH - 0xE3A3: 0x805C, //CJK UNIFIED IDEOGRAPH - 0xE3A4: 0x8189, //CJK UNIFIED IDEOGRAPH - 0xE3A5: 0x8186, //CJK UNIFIED IDEOGRAPH - 0xE3A6: 0x8183, //CJK UNIFIED IDEOGRAPH - 0xE3A7: 0x8187, //CJK UNIFIED IDEOGRAPH - 0xE3A8: 0x818D, //CJK UNIFIED IDEOGRAPH - 0xE3A9: 0x818C, //CJK UNIFIED IDEOGRAPH - 0xE3AA: 0x818B, //CJK UNIFIED IDEOGRAPH - 0xE3AB: 0x8215, //CJK UNIFIED IDEOGRAPH - 0xE3AC: 0x8497, //CJK UNIFIED IDEOGRAPH - 0xE3AD: 0x84A4, //CJK UNIFIED IDEOGRAPH - 0xE3AE: 0x84A1, //CJK UNIFIED IDEOGRAPH - 0xE3AF: 0x849F, //CJK UNIFIED IDEOGRAPH - 0xE3B0: 0x84BA, //CJK UNIFIED IDEOGRAPH - 0xE3B1: 0x84CE, //CJK UNIFIED IDEOGRAPH - 0xE3B2: 0x84C2, //CJK UNIFIED IDEOGRAPH - 0xE3B3: 0x84AC, //CJK UNIFIED IDEOGRAPH - 0xE3B4: 0x84AE, //CJK UNIFIED IDEOGRAPH - 0xE3B5: 0x84AB, //CJK UNIFIED IDEOGRAPH - 0xE3B6: 0x84B9, //CJK UNIFIED IDEOGRAPH - 0xE3B7: 0x84B4, //CJK UNIFIED IDEOGRAPH - 0xE3B8: 0x84C1, //CJK UNIFIED IDEOGRAPH - 0xE3B9: 0x84CD, //CJK UNIFIED IDEOGRAPH - 0xE3BA: 0x84AA, //CJK UNIFIED IDEOGRAPH - 0xE3BB: 0x849A, //CJK UNIFIED IDEOGRAPH - 0xE3BC: 0x84B1, //CJK UNIFIED IDEOGRAPH - 0xE3BD: 0x84D0, //CJK UNIFIED IDEOGRAPH - 0xE3BE: 0x849D, //CJK UNIFIED IDEOGRAPH - 0xE3BF: 0x84A7, //CJK UNIFIED IDEOGRAPH - 0xE3C0: 0x84BB, //CJK UNIFIED IDEOGRAPH - 0xE3C1: 0x84A2, //CJK UNIFIED IDEOGRAPH - 0xE3C2: 0x8494, //CJK UNIFIED IDEOGRAPH - 0xE3C3: 0x84C7, //CJK UNIFIED IDEOGRAPH - 0xE3C4: 0x84CC, //CJK UNIFIED IDEOGRAPH - 0xE3C5: 0x849B, //CJK UNIFIED IDEOGRAPH - 0xE3C6: 0x84A9, //CJK UNIFIED IDEOGRAPH - 0xE3C7: 0x84AF, //CJK UNIFIED IDEOGRAPH - 0xE3C8: 0x84A8, //CJK UNIFIED IDEOGRAPH - 0xE3C9: 0x84D6, //CJK UNIFIED IDEOGRAPH - 0xE3CA: 0x8498, //CJK UNIFIED IDEOGRAPH - 0xE3CB: 0x84B6, //CJK UNIFIED IDEOGRAPH - 0xE3CC: 0x84CF, //CJK UNIFIED IDEOGRAPH - 0xE3CD: 0x84A0, //CJK UNIFIED IDEOGRAPH - 0xE3CE: 0x84D7, //CJK UNIFIED IDEOGRAPH - 0xE3CF: 0x84D4, //CJK UNIFIED IDEOGRAPH - 0xE3D0: 0x84D2, //CJK UNIFIED IDEOGRAPH - 0xE3D1: 0x84DB, //CJK UNIFIED IDEOGRAPH - 0xE3D2: 0x84B0, //CJK UNIFIED IDEOGRAPH - 0xE3D3: 0x8491, //CJK UNIFIED IDEOGRAPH - 0xE3D4: 0x8661, //CJK UNIFIED IDEOGRAPH - 0xE3D5: 0x8733, //CJK UNIFIED IDEOGRAPH - 0xE3D6: 0x8723, //CJK UNIFIED IDEOGRAPH - 0xE3D7: 0x8728, //CJK UNIFIED IDEOGRAPH - 0xE3D8: 0x876B, //CJK UNIFIED IDEOGRAPH - 0xE3D9: 0x8740, //CJK UNIFIED IDEOGRAPH - 0xE3DA: 0x872E, //CJK UNIFIED IDEOGRAPH - 0xE3DB: 0x871E, //CJK UNIFIED IDEOGRAPH - 0xE3DC: 0x8721, //CJK UNIFIED IDEOGRAPH - 0xE3DD: 0x8719, //CJK UNIFIED IDEOGRAPH - 0xE3DE: 0x871B, //CJK UNIFIED IDEOGRAPH - 0xE3DF: 0x8743, //CJK UNIFIED IDEOGRAPH - 0xE3E0: 0x872C, //CJK UNIFIED IDEOGRAPH - 0xE3E1: 0x8741, //CJK UNIFIED IDEOGRAPH - 0xE3E2: 0x873E, //CJK UNIFIED IDEOGRAPH - 0xE3E3: 0x8746, //CJK UNIFIED IDEOGRAPH - 0xE3E4: 0x8720, //CJK UNIFIED IDEOGRAPH - 0xE3E5: 0x8732, //CJK UNIFIED IDEOGRAPH - 0xE3E6: 0x872A, //CJK UNIFIED IDEOGRAPH - 0xE3E7: 0x872D, //CJK UNIFIED IDEOGRAPH - 0xE3E8: 0x873C, //CJK UNIFIED IDEOGRAPH - 0xE3E9: 0x8712, //CJK UNIFIED IDEOGRAPH - 0xE3EA: 0x873A, //CJK UNIFIED IDEOGRAPH - 0xE3EB: 0x8731, //CJK UNIFIED IDEOGRAPH - 0xE3EC: 0x8735, //CJK UNIFIED IDEOGRAPH - 0xE3ED: 0x8742, //CJK UNIFIED IDEOGRAPH - 0xE3EE: 0x8726, //CJK UNIFIED IDEOGRAPH - 0xE3EF: 0x8727, //CJK UNIFIED IDEOGRAPH - 0xE3F0: 0x8738, //CJK UNIFIED IDEOGRAPH - 0xE3F1: 0x8724, //CJK UNIFIED IDEOGRAPH - 0xE3F2: 0x871A, //CJK UNIFIED IDEOGRAPH - 0xE3F3: 0x8730, //CJK UNIFIED IDEOGRAPH - 0xE3F4: 0x8711, //CJK UNIFIED IDEOGRAPH - 0xE3F5: 0x88F7, //CJK UNIFIED IDEOGRAPH - 0xE3F6: 0x88E7, //CJK UNIFIED IDEOGRAPH - 0xE3F7: 0x88F1, //CJK UNIFIED IDEOGRAPH - 0xE3F8: 0x88F2, //CJK UNIFIED IDEOGRAPH - 0xE3F9: 0x88FA, //CJK UNIFIED IDEOGRAPH - 0xE3FA: 0x88FE, //CJK UNIFIED IDEOGRAPH - 0xE3FB: 0x88EE, //CJK UNIFIED IDEOGRAPH - 0xE3FC: 0x88FC, //CJK UNIFIED IDEOGRAPH - 0xE3FD: 0x88F6, //CJK UNIFIED IDEOGRAPH - 0xE3FE: 0x88FB, //CJK UNIFIED IDEOGRAPH - 0xE440: 0x88F0, //CJK UNIFIED IDEOGRAPH - 0xE441: 0x88EC, //CJK UNIFIED IDEOGRAPH - 0xE442: 0x88EB, //CJK UNIFIED IDEOGRAPH - 0xE443: 0x899D, //CJK UNIFIED IDEOGRAPH - 0xE444: 0x89A1, //CJK UNIFIED IDEOGRAPH - 0xE445: 0x899F, //CJK UNIFIED IDEOGRAPH - 0xE446: 0x899E, //CJK UNIFIED IDEOGRAPH - 0xE447: 0x89E9, //CJK UNIFIED IDEOGRAPH - 0xE448: 0x89EB, //CJK UNIFIED IDEOGRAPH - 0xE449: 0x89E8, //CJK UNIFIED IDEOGRAPH - 0xE44A: 0x8AAB, //CJK UNIFIED IDEOGRAPH - 0xE44B: 0x8A99, //CJK UNIFIED IDEOGRAPH - 0xE44C: 0x8A8B, //CJK UNIFIED IDEOGRAPH - 0xE44D: 0x8A92, //CJK UNIFIED IDEOGRAPH - 0xE44E: 0x8A8F, //CJK UNIFIED IDEOGRAPH - 0xE44F: 0x8A96, //CJK UNIFIED IDEOGRAPH - 0xE450: 0x8C3D, //CJK UNIFIED IDEOGRAPH - 0xE451: 0x8C68, //CJK UNIFIED IDEOGRAPH - 0xE452: 0x8C69, //CJK UNIFIED IDEOGRAPH - 0xE453: 0x8CD5, //CJK UNIFIED IDEOGRAPH - 0xE454: 0x8CCF, //CJK UNIFIED IDEOGRAPH - 0xE455: 0x8CD7, //CJK UNIFIED IDEOGRAPH - 0xE456: 0x8D96, //CJK UNIFIED IDEOGRAPH - 0xE457: 0x8E09, //CJK UNIFIED IDEOGRAPH - 0xE458: 0x8E02, //CJK UNIFIED IDEOGRAPH - 0xE459: 0x8DFF, //CJK UNIFIED IDEOGRAPH - 0xE45A: 0x8E0D, //CJK UNIFIED IDEOGRAPH - 0xE45B: 0x8DFD, //CJK UNIFIED IDEOGRAPH - 0xE45C: 0x8E0A, //CJK UNIFIED IDEOGRAPH - 0xE45D: 0x8E03, //CJK UNIFIED IDEOGRAPH - 0xE45E: 0x8E07, //CJK UNIFIED IDEOGRAPH - 0xE45F: 0x8E06, //CJK UNIFIED IDEOGRAPH - 0xE460: 0x8E05, //CJK UNIFIED IDEOGRAPH - 0xE461: 0x8DFE, //CJK UNIFIED IDEOGRAPH - 0xE462: 0x8E00, //CJK UNIFIED IDEOGRAPH - 0xE463: 0x8E04, //CJK UNIFIED IDEOGRAPH - 0xE464: 0x8F10, //CJK UNIFIED IDEOGRAPH - 0xE465: 0x8F11, //CJK UNIFIED IDEOGRAPH - 0xE466: 0x8F0E, //CJK UNIFIED IDEOGRAPH - 0xE467: 0x8F0D, //CJK UNIFIED IDEOGRAPH - 0xE468: 0x9123, //CJK UNIFIED IDEOGRAPH - 0xE469: 0x911C, //CJK UNIFIED IDEOGRAPH - 0xE46A: 0x9120, //CJK UNIFIED IDEOGRAPH - 0xE46B: 0x9122, //CJK UNIFIED IDEOGRAPH - 0xE46C: 0x911F, //CJK UNIFIED IDEOGRAPH - 0xE46D: 0x911D, //CJK UNIFIED IDEOGRAPH - 0xE46E: 0x911A, //CJK UNIFIED IDEOGRAPH - 0xE46F: 0x9124, //CJK UNIFIED IDEOGRAPH - 0xE470: 0x9121, //CJK UNIFIED IDEOGRAPH - 0xE471: 0x911B, //CJK UNIFIED IDEOGRAPH - 0xE472: 0x917A, //CJK UNIFIED IDEOGRAPH - 0xE473: 0x9172, //CJK UNIFIED IDEOGRAPH - 0xE474: 0x9179, //CJK UNIFIED IDEOGRAPH - 0xE475: 0x9173, //CJK UNIFIED IDEOGRAPH - 0xE476: 0x92A5, //CJK UNIFIED IDEOGRAPH - 0xE477: 0x92A4, //CJK UNIFIED IDEOGRAPH - 0xE478: 0x9276, //CJK UNIFIED IDEOGRAPH - 0xE479: 0x929B, //CJK UNIFIED IDEOGRAPH - 0xE47A: 0x927A, //CJK UNIFIED IDEOGRAPH - 0xE47B: 0x92A0, //CJK UNIFIED IDEOGRAPH - 0xE47C: 0x9294, //CJK UNIFIED IDEOGRAPH - 0xE47D: 0x92AA, //CJK UNIFIED IDEOGRAPH - 0xE47E: 0x928D, //CJK UNIFIED IDEOGRAPH - 0xE4A1: 0x92A6, //CJK UNIFIED IDEOGRAPH - 0xE4A2: 0x929A, //CJK UNIFIED IDEOGRAPH - 0xE4A3: 0x92AB, //CJK UNIFIED IDEOGRAPH - 0xE4A4: 0x9279, //CJK UNIFIED IDEOGRAPH - 0xE4A5: 0x9297, //CJK UNIFIED IDEOGRAPH - 0xE4A6: 0x927F, //CJK UNIFIED IDEOGRAPH - 0xE4A7: 0x92A3, //CJK UNIFIED IDEOGRAPH - 0xE4A8: 0x92EE, //CJK UNIFIED IDEOGRAPH - 0xE4A9: 0x928E, //CJK UNIFIED IDEOGRAPH - 0xE4AA: 0x9282, //CJK UNIFIED IDEOGRAPH - 0xE4AB: 0x9295, //CJK UNIFIED IDEOGRAPH - 0xE4AC: 0x92A2, //CJK UNIFIED IDEOGRAPH - 0xE4AD: 0x927D, //CJK UNIFIED IDEOGRAPH - 0xE4AE: 0x9288, //CJK UNIFIED IDEOGRAPH - 0xE4AF: 0x92A1, //CJK UNIFIED IDEOGRAPH - 0xE4B0: 0x928A, //CJK UNIFIED IDEOGRAPH - 0xE4B1: 0x9286, //CJK UNIFIED IDEOGRAPH - 0xE4B2: 0x928C, //CJK UNIFIED IDEOGRAPH - 0xE4B3: 0x9299, //CJK UNIFIED IDEOGRAPH - 0xE4B4: 0x92A7, //CJK UNIFIED IDEOGRAPH - 0xE4B5: 0x927E, //CJK UNIFIED IDEOGRAPH - 0xE4B6: 0x9287, //CJK UNIFIED IDEOGRAPH - 0xE4B7: 0x92A9, //CJK UNIFIED IDEOGRAPH - 0xE4B8: 0x929D, //CJK UNIFIED IDEOGRAPH - 0xE4B9: 0x928B, //CJK UNIFIED IDEOGRAPH - 0xE4BA: 0x922D, //CJK UNIFIED IDEOGRAPH - 0xE4BB: 0x969E, //CJK UNIFIED IDEOGRAPH - 0xE4BC: 0x96A1, //CJK UNIFIED IDEOGRAPH - 0xE4BD: 0x96FF, //CJK UNIFIED IDEOGRAPH - 0xE4BE: 0x9758, //CJK UNIFIED IDEOGRAPH - 0xE4BF: 0x977D, //CJK UNIFIED IDEOGRAPH - 0xE4C0: 0x977A, //CJK UNIFIED IDEOGRAPH - 0xE4C1: 0x977E, //CJK UNIFIED IDEOGRAPH - 0xE4C2: 0x9783, //CJK UNIFIED IDEOGRAPH - 0xE4C3: 0x9780, //CJK UNIFIED IDEOGRAPH - 0xE4C4: 0x9782, //CJK UNIFIED IDEOGRAPH - 0xE4C5: 0x977B, //CJK UNIFIED IDEOGRAPH - 0xE4C6: 0x9784, //CJK UNIFIED IDEOGRAPH - 0xE4C7: 0x9781, //CJK UNIFIED IDEOGRAPH - 0xE4C8: 0x977F, //CJK UNIFIED IDEOGRAPH - 0xE4C9: 0x97CE, //CJK UNIFIED IDEOGRAPH - 0xE4CA: 0x97CD, //CJK UNIFIED IDEOGRAPH - 0xE4CB: 0x9816, //CJK UNIFIED IDEOGRAPH - 0xE4CC: 0x98AD, //CJK UNIFIED IDEOGRAPH - 0xE4CD: 0x98AE, //CJK UNIFIED IDEOGRAPH - 0xE4CE: 0x9902, //CJK UNIFIED IDEOGRAPH - 0xE4CF: 0x9900, //CJK UNIFIED IDEOGRAPH - 0xE4D0: 0x9907, //CJK UNIFIED IDEOGRAPH - 0xE4D1: 0x999D, //CJK UNIFIED IDEOGRAPH - 0xE4D2: 0x999C, //CJK UNIFIED IDEOGRAPH - 0xE4D3: 0x99C3, //CJK UNIFIED IDEOGRAPH - 0xE4D4: 0x99B9, //CJK UNIFIED IDEOGRAPH - 0xE4D5: 0x99BB, //CJK UNIFIED IDEOGRAPH - 0xE4D6: 0x99BA, //CJK UNIFIED IDEOGRAPH - 0xE4D7: 0x99C2, //CJK UNIFIED IDEOGRAPH - 0xE4D8: 0x99BD, //CJK UNIFIED IDEOGRAPH - 0xE4D9: 0x99C7, //CJK UNIFIED IDEOGRAPH - 0xE4DA: 0x9AB1, //CJK UNIFIED IDEOGRAPH - 0xE4DB: 0x9AE3, //CJK UNIFIED IDEOGRAPH - 0xE4DC: 0x9AE7, //CJK UNIFIED IDEOGRAPH - 0xE4DD: 0x9B3E, //CJK UNIFIED IDEOGRAPH - 0xE4DE: 0x9B3F, //CJK UNIFIED IDEOGRAPH - 0xE4DF: 0x9B60, //CJK UNIFIED IDEOGRAPH - 0xE4E0: 0x9B61, //CJK UNIFIED IDEOGRAPH - 0xE4E1: 0x9B5F, //CJK UNIFIED IDEOGRAPH - 0xE4E2: 0x9CF1, //CJK UNIFIED IDEOGRAPH - 0xE4E3: 0x9CF2, //CJK UNIFIED IDEOGRAPH - 0xE4E4: 0x9CF5, //CJK UNIFIED IDEOGRAPH - 0xE4E5: 0x9EA7, //CJK UNIFIED IDEOGRAPH - 0xE4E6: 0x50FF, //CJK UNIFIED IDEOGRAPH - 0xE4E7: 0x5103, //CJK UNIFIED IDEOGRAPH - 0xE4E8: 0x5130, //CJK UNIFIED IDEOGRAPH - 0xE4E9: 0x50F8, //CJK UNIFIED IDEOGRAPH - 0xE4EA: 0x5106, //CJK UNIFIED IDEOGRAPH - 0xE4EB: 0x5107, //CJK UNIFIED IDEOGRAPH - 0xE4EC: 0x50F6, //CJK UNIFIED IDEOGRAPH - 0xE4ED: 0x50FE, //CJK UNIFIED IDEOGRAPH - 0xE4EE: 0x510B, //CJK UNIFIED IDEOGRAPH - 0xE4EF: 0x510C, //CJK UNIFIED IDEOGRAPH - 0xE4F0: 0x50FD, //CJK UNIFIED IDEOGRAPH - 0xE4F1: 0x510A, //CJK UNIFIED IDEOGRAPH - 0xE4F2: 0x528B, //CJK UNIFIED IDEOGRAPH - 0xE4F3: 0x528C, //CJK UNIFIED IDEOGRAPH - 0xE4F4: 0x52F1, //CJK UNIFIED IDEOGRAPH - 0xE4F5: 0x52EF, //CJK UNIFIED IDEOGRAPH - 0xE4F6: 0x5648, //CJK UNIFIED IDEOGRAPH - 0xE4F7: 0x5642, //CJK UNIFIED IDEOGRAPH - 0xE4F8: 0x564C, //CJK UNIFIED IDEOGRAPH - 0xE4F9: 0x5635, //CJK UNIFIED IDEOGRAPH - 0xE4FA: 0x5641, //CJK UNIFIED IDEOGRAPH - 0xE4FB: 0x564A, //CJK UNIFIED IDEOGRAPH - 0xE4FC: 0x5649, //CJK UNIFIED IDEOGRAPH - 0xE4FD: 0x5646, //CJK UNIFIED IDEOGRAPH - 0xE4FE: 0x5658, //CJK UNIFIED IDEOGRAPH - 0xE540: 0x565A, //CJK UNIFIED IDEOGRAPH - 0xE541: 0x5640, //CJK UNIFIED IDEOGRAPH - 0xE542: 0x5633, //CJK UNIFIED IDEOGRAPH - 0xE543: 0x563D, //CJK UNIFIED IDEOGRAPH - 0xE544: 0x562C, //CJK UNIFIED IDEOGRAPH - 0xE545: 0x563E, //CJK UNIFIED IDEOGRAPH - 0xE546: 0x5638, //CJK UNIFIED IDEOGRAPH - 0xE547: 0x562A, //CJK UNIFIED IDEOGRAPH - 0xE548: 0x563A, //CJK UNIFIED IDEOGRAPH - 0xE549: 0x571A, //CJK UNIFIED IDEOGRAPH - 0xE54A: 0x58AB, //CJK UNIFIED IDEOGRAPH - 0xE54B: 0x589D, //CJK UNIFIED IDEOGRAPH - 0xE54C: 0x58B1, //CJK UNIFIED IDEOGRAPH - 0xE54D: 0x58A0, //CJK UNIFIED IDEOGRAPH - 0xE54E: 0x58A3, //CJK UNIFIED IDEOGRAPH - 0xE54F: 0x58AF, //CJK UNIFIED IDEOGRAPH - 0xE550: 0x58AC, //CJK UNIFIED IDEOGRAPH - 0xE551: 0x58A5, //CJK UNIFIED IDEOGRAPH - 0xE552: 0x58A1, //CJK UNIFIED IDEOGRAPH - 0xE553: 0x58FF, //CJK UNIFIED IDEOGRAPH - 0xE554: 0x5AFF, //CJK UNIFIED IDEOGRAPH - 0xE555: 0x5AF4, //CJK UNIFIED IDEOGRAPH - 0xE556: 0x5AFD, //CJK UNIFIED IDEOGRAPH - 0xE557: 0x5AF7, //CJK UNIFIED IDEOGRAPH - 0xE558: 0x5AF6, //CJK UNIFIED IDEOGRAPH - 0xE559: 0x5B03, //CJK UNIFIED IDEOGRAPH - 0xE55A: 0x5AF8, //CJK UNIFIED IDEOGRAPH - 0xE55B: 0x5B02, //CJK UNIFIED IDEOGRAPH - 0xE55C: 0x5AF9, //CJK UNIFIED IDEOGRAPH - 0xE55D: 0x5B01, //CJK UNIFIED IDEOGRAPH - 0xE55E: 0x5B07, //CJK UNIFIED IDEOGRAPH - 0xE55F: 0x5B05, //CJK UNIFIED IDEOGRAPH - 0xE560: 0x5B0F, //CJK UNIFIED IDEOGRAPH - 0xE561: 0x5C67, //CJK UNIFIED IDEOGRAPH - 0xE562: 0x5D99, //CJK UNIFIED IDEOGRAPH - 0xE563: 0x5D97, //CJK UNIFIED IDEOGRAPH - 0xE564: 0x5D9F, //CJK UNIFIED IDEOGRAPH - 0xE565: 0x5D92, //CJK UNIFIED IDEOGRAPH - 0xE566: 0x5DA2, //CJK UNIFIED IDEOGRAPH - 0xE567: 0x5D93, //CJK UNIFIED IDEOGRAPH - 0xE568: 0x5D95, //CJK UNIFIED IDEOGRAPH - 0xE569: 0x5DA0, //CJK UNIFIED IDEOGRAPH - 0xE56A: 0x5D9C, //CJK UNIFIED IDEOGRAPH - 0xE56B: 0x5DA1, //CJK UNIFIED IDEOGRAPH - 0xE56C: 0x5D9A, //CJK UNIFIED IDEOGRAPH - 0xE56D: 0x5D9E, //CJK UNIFIED IDEOGRAPH - 0xE56E: 0x5E69, //CJK UNIFIED IDEOGRAPH - 0xE56F: 0x5E5D, //CJK UNIFIED IDEOGRAPH - 0xE570: 0x5E60, //CJK UNIFIED IDEOGRAPH - 0xE571: 0x5E5C, //CJK UNIFIED IDEOGRAPH - 0xE572: 0x7DF3, //CJK UNIFIED IDEOGRAPH - 0xE573: 0x5EDB, //CJK UNIFIED IDEOGRAPH - 0xE574: 0x5EDE, //CJK UNIFIED IDEOGRAPH - 0xE575: 0x5EE1, //CJK UNIFIED IDEOGRAPH - 0xE576: 0x5F49, //CJK UNIFIED IDEOGRAPH - 0xE577: 0x5FB2, //CJK UNIFIED IDEOGRAPH - 0xE578: 0x618B, //CJK UNIFIED IDEOGRAPH - 0xE579: 0x6183, //CJK UNIFIED IDEOGRAPH - 0xE57A: 0x6179, //CJK UNIFIED IDEOGRAPH - 0xE57B: 0x61B1, //CJK UNIFIED IDEOGRAPH - 0xE57C: 0x61B0, //CJK UNIFIED IDEOGRAPH - 0xE57D: 0x61A2, //CJK UNIFIED IDEOGRAPH - 0xE57E: 0x6189, //CJK UNIFIED IDEOGRAPH - 0xE5A1: 0x619B, //CJK UNIFIED IDEOGRAPH - 0xE5A2: 0x6193, //CJK UNIFIED IDEOGRAPH - 0xE5A3: 0x61AF, //CJK UNIFIED IDEOGRAPH - 0xE5A4: 0x61AD, //CJK UNIFIED IDEOGRAPH - 0xE5A5: 0x619F, //CJK UNIFIED IDEOGRAPH - 0xE5A6: 0x6192, //CJK UNIFIED IDEOGRAPH - 0xE5A7: 0x61AA, //CJK UNIFIED IDEOGRAPH - 0xE5A8: 0x61A1, //CJK UNIFIED IDEOGRAPH - 0xE5A9: 0x618D, //CJK UNIFIED IDEOGRAPH - 0xE5AA: 0x6166, //CJK UNIFIED IDEOGRAPH - 0xE5AB: 0x61B3, //CJK UNIFIED IDEOGRAPH - 0xE5AC: 0x622D, //CJK UNIFIED IDEOGRAPH - 0xE5AD: 0x646E, //CJK UNIFIED IDEOGRAPH - 0xE5AE: 0x6470, //CJK UNIFIED IDEOGRAPH - 0xE5AF: 0x6496, //CJK UNIFIED IDEOGRAPH - 0xE5B0: 0x64A0, //CJK UNIFIED IDEOGRAPH - 0xE5B1: 0x6485, //CJK UNIFIED IDEOGRAPH - 0xE5B2: 0x6497, //CJK UNIFIED IDEOGRAPH - 0xE5B3: 0x649C, //CJK UNIFIED IDEOGRAPH - 0xE5B4: 0x648F, //CJK UNIFIED IDEOGRAPH - 0xE5B5: 0x648B, //CJK UNIFIED IDEOGRAPH - 0xE5B6: 0x648A, //CJK UNIFIED IDEOGRAPH - 0xE5B7: 0x648C, //CJK UNIFIED IDEOGRAPH - 0xE5B8: 0x64A3, //CJK UNIFIED IDEOGRAPH - 0xE5B9: 0x649F, //CJK UNIFIED IDEOGRAPH - 0xE5BA: 0x6468, //CJK UNIFIED IDEOGRAPH - 0xE5BB: 0x64B1, //CJK UNIFIED IDEOGRAPH - 0xE5BC: 0x6498, //CJK UNIFIED IDEOGRAPH - 0xE5BD: 0x6576, //CJK UNIFIED IDEOGRAPH - 0xE5BE: 0x657A, //CJK UNIFIED IDEOGRAPH - 0xE5BF: 0x6579, //CJK UNIFIED IDEOGRAPH - 0xE5C0: 0x657B, //CJK UNIFIED IDEOGRAPH - 0xE5C1: 0x65B2, //CJK UNIFIED IDEOGRAPH - 0xE5C2: 0x65B3, //CJK UNIFIED IDEOGRAPH - 0xE5C3: 0x66B5, //CJK UNIFIED IDEOGRAPH - 0xE5C4: 0x66B0, //CJK UNIFIED IDEOGRAPH - 0xE5C5: 0x66A9, //CJK UNIFIED IDEOGRAPH - 0xE5C6: 0x66B2, //CJK UNIFIED IDEOGRAPH - 0xE5C7: 0x66B7, //CJK UNIFIED IDEOGRAPH - 0xE5C8: 0x66AA, //CJK UNIFIED IDEOGRAPH - 0xE5C9: 0x66AF, //CJK UNIFIED IDEOGRAPH - 0xE5CA: 0x6A00, //CJK UNIFIED IDEOGRAPH - 0xE5CB: 0x6A06, //CJK UNIFIED IDEOGRAPH - 0xE5CC: 0x6A17, //CJK UNIFIED IDEOGRAPH - 0xE5CD: 0x69E5, //CJK UNIFIED IDEOGRAPH - 0xE5CE: 0x69F8, //CJK UNIFIED IDEOGRAPH - 0xE5CF: 0x6A15, //CJK UNIFIED IDEOGRAPH - 0xE5D0: 0x69F1, //CJK UNIFIED IDEOGRAPH - 0xE5D1: 0x69E4, //CJK UNIFIED IDEOGRAPH - 0xE5D2: 0x6A20, //CJK UNIFIED IDEOGRAPH - 0xE5D3: 0x69FF, //CJK UNIFIED IDEOGRAPH - 0xE5D4: 0x69EC, //CJK UNIFIED IDEOGRAPH - 0xE5D5: 0x69E2, //CJK UNIFIED IDEOGRAPH - 0xE5D6: 0x6A1B, //CJK UNIFIED IDEOGRAPH - 0xE5D7: 0x6A1D, //CJK UNIFIED IDEOGRAPH - 0xE5D8: 0x69FE, //CJK UNIFIED IDEOGRAPH - 0xE5D9: 0x6A27, //CJK UNIFIED IDEOGRAPH - 0xE5DA: 0x69F2, //CJK UNIFIED IDEOGRAPH - 0xE5DB: 0x69EE, //CJK UNIFIED IDEOGRAPH - 0xE5DC: 0x6A14, //CJK UNIFIED IDEOGRAPH - 0xE5DD: 0x69F7, //CJK UNIFIED IDEOGRAPH - 0xE5DE: 0x69E7, //CJK UNIFIED IDEOGRAPH - 0xE5DF: 0x6A40, //CJK UNIFIED IDEOGRAPH - 0xE5E0: 0x6A08, //CJK UNIFIED IDEOGRAPH - 0xE5E1: 0x69E6, //CJK UNIFIED IDEOGRAPH - 0xE5E2: 0x69FB, //CJK UNIFIED IDEOGRAPH - 0xE5E3: 0x6A0D, //CJK UNIFIED IDEOGRAPH - 0xE5E4: 0x69FC, //CJK UNIFIED IDEOGRAPH - 0xE5E5: 0x69EB, //CJK UNIFIED IDEOGRAPH - 0xE5E6: 0x6A09, //CJK UNIFIED IDEOGRAPH - 0xE5E7: 0x6A04, //CJK UNIFIED IDEOGRAPH - 0xE5E8: 0x6A18, //CJK UNIFIED IDEOGRAPH - 0xE5E9: 0x6A25, //CJK UNIFIED IDEOGRAPH - 0xE5EA: 0x6A0F, //CJK UNIFIED IDEOGRAPH - 0xE5EB: 0x69F6, //CJK UNIFIED IDEOGRAPH - 0xE5EC: 0x6A26, //CJK UNIFIED IDEOGRAPH - 0xE5ED: 0x6A07, //CJK UNIFIED IDEOGRAPH - 0xE5EE: 0x69F4, //CJK UNIFIED IDEOGRAPH - 0xE5EF: 0x6A16, //CJK UNIFIED IDEOGRAPH - 0xE5F0: 0x6B51, //CJK UNIFIED IDEOGRAPH - 0xE5F1: 0x6BA5, //CJK UNIFIED IDEOGRAPH - 0xE5F2: 0x6BA3, //CJK UNIFIED IDEOGRAPH - 0xE5F3: 0x6BA2, //CJK UNIFIED IDEOGRAPH - 0xE5F4: 0x6BA6, //CJK UNIFIED IDEOGRAPH - 0xE5F5: 0x6C01, //CJK UNIFIED IDEOGRAPH - 0xE5F6: 0x6C00, //CJK UNIFIED IDEOGRAPH - 0xE5F7: 0x6BFF, //CJK UNIFIED IDEOGRAPH - 0xE5F8: 0x6C02, //CJK UNIFIED IDEOGRAPH - 0xE5F9: 0x6F41, //CJK UNIFIED IDEOGRAPH - 0xE5FA: 0x6F26, //CJK UNIFIED IDEOGRAPH - 0xE5FB: 0x6F7E, //CJK UNIFIED IDEOGRAPH - 0xE5FC: 0x6F87, //CJK UNIFIED IDEOGRAPH - 0xE5FD: 0x6FC6, //CJK UNIFIED IDEOGRAPH - 0xE5FE: 0x6F92, //CJK UNIFIED IDEOGRAPH - 0xE640: 0x6F8D, //CJK UNIFIED IDEOGRAPH - 0xE641: 0x6F89, //CJK UNIFIED IDEOGRAPH - 0xE642: 0x6F8C, //CJK UNIFIED IDEOGRAPH - 0xE643: 0x6F62, //CJK UNIFIED IDEOGRAPH - 0xE644: 0x6F4F, //CJK UNIFIED IDEOGRAPH - 0xE645: 0x6F85, //CJK UNIFIED IDEOGRAPH - 0xE646: 0x6F5A, //CJK UNIFIED IDEOGRAPH - 0xE647: 0x6F96, //CJK UNIFIED IDEOGRAPH - 0xE648: 0x6F76, //CJK UNIFIED IDEOGRAPH - 0xE649: 0x6F6C, //CJK UNIFIED IDEOGRAPH - 0xE64A: 0x6F82, //CJK UNIFIED IDEOGRAPH - 0xE64B: 0x6F55, //CJK UNIFIED IDEOGRAPH - 0xE64C: 0x6F72, //CJK UNIFIED IDEOGRAPH - 0xE64D: 0x6F52, //CJK UNIFIED IDEOGRAPH - 0xE64E: 0x6F50, //CJK UNIFIED IDEOGRAPH - 0xE64F: 0x6F57, //CJK UNIFIED IDEOGRAPH - 0xE650: 0x6F94, //CJK UNIFIED IDEOGRAPH - 0xE651: 0x6F93, //CJK UNIFIED IDEOGRAPH - 0xE652: 0x6F5D, //CJK UNIFIED IDEOGRAPH - 0xE653: 0x6F00, //CJK UNIFIED IDEOGRAPH - 0xE654: 0x6F61, //CJK UNIFIED IDEOGRAPH - 0xE655: 0x6F6B, //CJK UNIFIED IDEOGRAPH - 0xE656: 0x6F7D, //CJK UNIFIED IDEOGRAPH - 0xE657: 0x6F67, //CJK UNIFIED IDEOGRAPH - 0xE658: 0x6F90, //CJK UNIFIED IDEOGRAPH - 0xE659: 0x6F53, //CJK UNIFIED IDEOGRAPH - 0xE65A: 0x6F8B, //CJK UNIFIED IDEOGRAPH - 0xE65B: 0x6F69, //CJK UNIFIED IDEOGRAPH - 0xE65C: 0x6F7F, //CJK UNIFIED IDEOGRAPH - 0xE65D: 0x6F95, //CJK UNIFIED IDEOGRAPH - 0xE65E: 0x6F63, //CJK UNIFIED IDEOGRAPH - 0xE65F: 0x6F77, //CJK UNIFIED IDEOGRAPH - 0xE660: 0x6F6A, //CJK UNIFIED IDEOGRAPH - 0xE661: 0x6F7B, //CJK UNIFIED IDEOGRAPH - 0xE662: 0x71B2, //CJK UNIFIED IDEOGRAPH - 0xE663: 0x71AF, //CJK UNIFIED IDEOGRAPH - 0xE664: 0x719B, //CJK UNIFIED IDEOGRAPH - 0xE665: 0x71B0, //CJK UNIFIED IDEOGRAPH - 0xE666: 0x71A0, //CJK UNIFIED IDEOGRAPH - 0xE667: 0x719A, //CJK UNIFIED IDEOGRAPH - 0xE668: 0x71A9, //CJK UNIFIED IDEOGRAPH - 0xE669: 0x71B5, //CJK UNIFIED IDEOGRAPH - 0xE66A: 0x719D, //CJK UNIFIED IDEOGRAPH - 0xE66B: 0x71A5, //CJK UNIFIED IDEOGRAPH - 0xE66C: 0x719E, //CJK UNIFIED IDEOGRAPH - 0xE66D: 0x71A4, //CJK UNIFIED IDEOGRAPH - 0xE66E: 0x71A1, //CJK UNIFIED IDEOGRAPH - 0xE66F: 0x71AA, //CJK UNIFIED IDEOGRAPH - 0xE670: 0x719C, //CJK UNIFIED IDEOGRAPH - 0xE671: 0x71A7, //CJK UNIFIED IDEOGRAPH - 0xE672: 0x71B3, //CJK UNIFIED IDEOGRAPH - 0xE673: 0x7298, //CJK UNIFIED IDEOGRAPH - 0xE674: 0x729A, //CJK UNIFIED IDEOGRAPH - 0xE675: 0x7358, //CJK UNIFIED IDEOGRAPH - 0xE676: 0x7352, //CJK UNIFIED IDEOGRAPH - 0xE677: 0x735E, //CJK UNIFIED IDEOGRAPH - 0xE678: 0x735F, //CJK UNIFIED IDEOGRAPH - 0xE679: 0x7360, //CJK UNIFIED IDEOGRAPH - 0xE67A: 0x735D, //CJK UNIFIED IDEOGRAPH - 0xE67B: 0x735B, //CJK UNIFIED IDEOGRAPH - 0xE67C: 0x7361, //CJK UNIFIED IDEOGRAPH - 0xE67D: 0x735A, //CJK UNIFIED IDEOGRAPH - 0xE67E: 0x7359, //CJK UNIFIED IDEOGRAPH - 0xE6A1: 0x7362, //CJK UNIFIED IDEOGRAPH - 0xE6A2: 0x7487, //CJK UNIFIED IDEOGRAPH - 0xE6A3: 0x7489, //CJK UNIFIED IDEOGRAPH - 0xE6A4: 0x748A, //CJK UNIFIED IDEOGRAPH - 0xE6A5: 0x7486, //CJK UNIFIED IDEOGRAPH - 0xE6A6: 0x7481, //CJK UNIFIED IDEOGRAPH - 0xE6A7: 0x747D, //CJK UNIFIED IDEOGRAPH - 0xE6A8: 0x7485, //CJK UNIFIED IDEOGRAPH - 0xE6A9: 0x7488, //CJK UNIFIED IDEOGRAPH - 0xE6AA: 0x747C, //CJK UNIFIED IDEOGRAPH - 0xE6AB: 0x7479, //CJK UNIFIED IDEOGRAPH - 0xE6AC: 0x7508, //CJK UNIFIED IDEOGRAPH - 0xE6AD: 0x7507, //CJK UNIFIED IDEOGRAPH - 0xE6AE: 0x757E, //CJK UNIFIED IDEOGRAPH - 0xE6AF: 0x7625, //CJK UNIFIED IDEOGRAPH - 0xE6B0: 0x761E, //CJK UNIFIED IDEOGRAPH - 0xE6B1: 0x7619, //CJK UNIFIED IDEOGRAPH - 0xE6B2: 0x761D, //CJK UNIFIED IDEOGRAPH - 0xE6B3: 0x761C, //CJK UNIFIED IDEOGRAPH - 0xE6B4: 0x7623, //CJK UNIFIED IDEOGRAPH - 0xE6B5: 0x761A, //CJK UNIFIED IDEOGRAPH - 0xE6B6: 0x7628, //CJK UNIFIED IDEOGRAPH - 0xE6B7: 0x761B, //CJK UNIFIED IDEOGRAPH - 0xE6B8: 0x769C, //CJK UNIFIED IDEOGRAPH - 0xE6B9: 0x769D, //CJK UNIFIED IDEOGRAPH - 0xE6BA: 0x769E, //CJK UNIFIED IDEOGRAPH - 0xE6BB: 0x769B, //CJK UNIFIED IDEOGRAPH - 0xE6BC: 0x778D, //CJK UNIFIED IDEOGRAPH - 0xE6BD: 0x778F, //CJK UNIFIED IDEOGRAPH - 0xE6BE: 0x7789, //CJK UNIFIED IDEOGRAPH - 0xE6BF: 0x7788, //CJK UNIFIED IDEOGRAPH - 0xE6C0: 0x78CD, //CJK UNIFIED IDEOGRAPH - 0xE6C1: 0x78BB, //CJK UNIFIED IDEOGRAPH - 0xE6C2: 0x78CF, //CJK UNIFIED IDEOGRAPH - 0xE6C3: 0x78CC, //CJK UNIFIED IDEOGRAPH - 0xE6C4: 0x78D1, //CJK UNIFIED IDEOGRAPH - 0xE6C5: 0x78CE, //CJK UNIFIED IDEOGRAPH - 0xE6C6: 0x78D4, //CJK UNIFIED IDEOGRAPH - 0xE6C7: 0x78C8, //CJK UNIFIED IDEOGRAPH - 0xE6C8: 0x78C3, //CJK UNIFIED IDEOGRAPH - 0xE6C9: 0x78C4, //CJK UNIFIED IDEOGRAPH - 0xE6CA: 0x78C9, //CJK UNIFIED IDEOGRAPH - 0xE6CB: 0x799A, //CJK UNIFIED IDEOGRAPH - 0xE6CC: 0x79A1, //CJK UNIFIED IDEOGRAPH - 0xE6CD: 0x79A0, //CJK UNIFIED IDEOGRAPH - 0xE6CE: 0x799C, //CJK UNIFIED IDEOGRAPH - 0xE6CF: 0x79A2, //CJK UNIFIED IDEOGRAPH - 0xE6D0: 0x799B, //CJK UNIFIED IDEOGRAPH - 0xE6D1: 0x6B76, //CJK UNIFIED IDEOGRAPH - 0xE6D2: 0x7A39, //CJK UNIFIED IDEOGRAPH - 0xE6D3: 0x7AB2, //CJK UNIFIED IDEOGRAPH - 0xE6D4: 0x7AB4, //CJK UNIFIED IDEOGRAPH - 0xE6D5: 0x7AB3, //CJK UNIFIED IDEOGRAPH - 0xE6D6: 0x7BB7, //CJK UNIFIED IDEOGRAPH - 0xE6D7: 0x7BCB, //CJK UNIFIED IDEOGRAPH - 0xE6D8: 0x7BBE, //CJK UNIFIED IDEOGRAPH - 0xE6D9: 0x7BAC, //CJK UNIFIED IDEOGRAPH - 0xE6DA: 0x7BCE, //CJK UNIFIED IDEOGRAPH - 0xE6DB: 0x7BAF, //CJK UNIFIED IDEOGRAPH - 0xE6DC: 0x7BB9, //CJK UNIFIED IDEOGRAPH - 0xE6DD: 0x7BCA, //CJK UNIFIED IDEOGRAPH - 0xE6DE: 0x7BB5, //CJK UNIFIED IDEOGRAPH - 0xE6DF: 0x7CC5, //CJK UNIFIED IDEOGRAPH - 0xE6E0: 0x7CC8, //CJK UNIFIED IDEOGRAPH - 0xE6E1: 0x7CCC, //CJK UNIFIED IDEOGRAPH - 0xE6E2: 0x7CCB, //CJK UNIFIED IDEOGRAPH - 0xE6E3: 0x7DF7, //CJK UNIFIED IDEOGRAPH - 0xE6E4: 0x7DDB, //CJK UNIFIED IDEOGRAPH - 0xE6E5: 0x7DEA, //CJK UNIFIED IDEOGRAPH - 0xE6E6: 0x7DE7, //CJK UNIFIED IDEOGRAPH - 0xE6E7: 0x7DD7, //CJK UNIFIED IDEOGRAPH - 0xE6E8: 0x7DE1, //CJK UNIFIED IDEOGRAPH - 0xE6E9: 0x7E03, //CJK UNIFIED IDEOGRAPH - 0xE6EA: 0x7DFA, //CJK UNIFIED IDEOGRAPH - 0xE6EB: 0x7DE6, //CJK UNIFIED IDEOGRAPH - 0xE6EC: 0x7DF6, //CJK UNIFIED IDEOGRAPH - 0xE6ED: 0x7DF1, //CJK UNIFIED IDEOGRAPH - 0xE6EE: 0x7DF0, //CJK UNIFIED IDEOGRAPH - 0xE6EF: 0x7DEE, //CJK UNIFIED IDEOGRAPH - 0xE6F0: 0x7DDF, //CJK UNIFIED IDEOGRAPH - 0xE6F1: 0x7F76, //CJK UNIFIED IDEOGRAPH - 0xE6F2: 0x7FAC, //CJK UNIFIED IDEOGRAPH - 0xE6F3: 0x7FB0, //CJK UNIFIED IDEOGRAPH - 0xE6F4: 0x7FAD, //CJK UNIFIED IDEOGRAPH - 0xE6F5: 0x7FED, //CJK UNIFIED IDEOGRAPH - 0xE6F6: 0x7FEB, //CJK UNIFIED IDEOGRAPH - 0xE6F7: 0x7FEA, //CJK UNIFIED IDEOGRAPH - 0xE6F8: 0x7FEC, //CJK UNIFIED IDEOGRAPH - 0xE6F9: 0x7FE6, //CJK UNIFIED IDEOGRAPH - 0xE6FA: 0x7FE8, //CJK UNIFIED IDEOGRAPH - 0xE6FB: 0x8064, //CJK UNIFIED IDEOGRAPH - 0xE6FC: 0x8067, //CJK UNIFIED IDEOGRAPH - 0xE6FD: 0x81A3, //CJK UNIFIED IDEOGRAPH - 0xE6FE: 0x819F, //CJK UNIFIED IDEOGRAPH - 0xE740: 0x819E, //CJK UNIFIED IDEOGRAPH - 0xE741: 0x8195, //CJK UNIFIED IDEOGRAPH - 0xE742: 0x81A2, //CJK UNIFIED IDEOGRAPH - 0xE743: 0x8199, //CJK UNIFIED IDEOGRAPH - 0xE744: 0x8197, //CJK UNIFIED IDEOGRAPH - 0xE745: 0x8216, //CJK UNIFIED IDEOGRAPH - 0xE746: 0x824F, //CJK UNIFIED IDEOGRAPH - 0xE747: 0x8253, //CJK UNIFIED IDEOGRAPH - 0xE748: 0x8252, //CJK UNIFIED IDEOGRAPH - 0xE749: 0x8250, //CJK UNIFIED IDEOGRAPH - 0xE74A: 0x824E, //CJK UNIFIED IDEOGRAPH - 0xE74B: 0x8251, //CJK UNIFIED IDEOGRAPH - 0xE74C: 0x8524, //CJK UNIFIED IDEOGRAPH - 0xE74D: 0x853B, //CJK UNIFIED IDEOGRAPH - 0xE74E: 0x850F, //CJK UNIFIED IDEOGRAPH - 0xE74F: 0x8500, //CJK UNIFIED IDEOGRAPH - 0xE750: 0x8529, //CJK UNIFIED IDEOGRAPH - 0xE751: 0x850E, //CJK UNIFIED IDEOGRAPH - 0xE752: 0x8509, //CJK UNIFIED IDEOGRAPH - 0xE753: 0x850D, //CJK UNIFIED IDEOGRAPH - 0xE754: 0x851F, //CJK UNIFIED IDEOGRAPH - 0xE755: 0x850A, //CJK UNIFIED IDEOGRAPH - 0xE756: 0x8527, //CJK UNIFIED IDEOGRAPH - 0xE757: 0x851C, //CJK UNIFIED IDEOGRAPH - 0xE758: 0x84FB, //CJK UNIFIED IDEOGRAPH - 0xE759: 0x852B, //CJK UNIFIED IDEOGRAPH - 0xE75A: 0x84FA, //CJK UNIFIED IDEOGRAPH - 0xE75B: 0x8508, //CJK UNIFIED IDEOGRAPH - 0xE75C: 0x850C, //CJK UNIFIED IDEOGRAPH - 0xE75D: 0x84F4, //CJK UNIFIED IDEOGRAPH - 0xE75E: 0x852A, //CJK UNIFIED IDEOGRAPH - 0xE75F: 0x84F2, //CJK UNIFIED IDEOGRAPH - 0xE760: 0x8515, //CJK UNIFIED IDEOGRAPH - 0xE761: 0x84F7, //CJK UNIFIED IDEOGRAPH - 0xE762: 0x84EB, //CJK UNIFIED IDEOGRAPH - 0xE763: 0x84F3, //CJK UNIFIED IDEOGRAPH - 0xE764: 0x84FC, //CJK UNIFIED IDEOGRAPH - 0xE765: 0x8512, //CJK UNIFIED IDEOGRAPH - 0xE766: 0x84EA, //CJK UNIFIED IDEOGRAPH - 0xE767: 0x84E9, //CJK UNIFIED IDEOGRAPH - 0xE768: 0x8516, //CJK UNIFIED IDEOGRAPH - 0xE769: 0x84FE, //CJK UNIFIED IDEOGRAPH - 0xE76A: 0x8528, //CJK UNIFIED IDEOGRAPH - 0xE76B: 0x851D, //CJK UNIFIED IDEOGRAPH - 0xE76C: 0x852E, //CJK UNIFIED IDEOGRAPH - 0xE76D: 0x8502, //CJK UNIFIED IDEOGRAPH - 0xE76E: 0x84FD, //CJK UNIFIED IDEOGRAPH - 0xE76F: 0x851E, //CJK UNIFIED IDEOGRAPH - 0xE770: 0x84F6, //CJK UNIFIED IDEOGRAPH - 0xE771: 0x8531, //CJK UNIFIED IDEOGRAPH - 0xE772: 0x8526, //CJK UNIFIED IDEOGRAPH - 0xE773: 0x84E7, //CJK UNIFIED IDEOGRAPH - 0xE774: 0x84E8, //CJK UNIFIED IDEOGRAPH - 0xE775: 0x84F0, //CJK UNIFIED IDEOGRAPH - 0xE776: 0x84EF, //CJK UNIFIED IDEOGRAPH - 0xE777: 0x84F9, //CJK UNIFIED IDEOGRAPH - 0xE778: 0x8518, //CJK UNIFIED IDEOGRAPH - 0xE779: 0x8520, //CJK UNIFIED IDEOGRAPH - 0xE77A: 0x8530, //CJK UNIFIED IDEOGRAPH - 0xE77B: 0x850B, //CJK UNIFIED IDEOGRAPH - 0xE77C: 0x8519, //CJK UNIFIED IDEOGRAPH - 0xE77D: 0x852F, //CJK UNIFIED IDEOGRAPH - 0xE77E: 0x8662, //CJK UNIFIED IDEOGRAPH - 0xE7A1: 0x8756, //CJK UNIFIED IDEOGRAPH - 0xE7A2: 0x8763, //CJK UNIFIED IDEOGRAPH - 0xE7A3: 0x8764, //CJK UNIFIED IDEOGRAPH - 0xE7A4: 0x8777, //CJK UNIFIED IDEOGRAPH - 0xE7A5: 0x87E1, //CJK UNIFIED IDEOGRAPH - 0xE7A6: 0x8773, //CJK UNIFIED IDEOGRAPH - 0xE7A7: 0x8758, //CJK UNIFIED IDEOGRAPH - 0xE7A8: 0x8754, //CJK UNIFIED IDEOGRAPH - 0xE7A9: 0x875B, //CJK UNIFIED IDEOGRAPH - 0xE7AA: 0x8752, //CJK UNIFIED IDEOGRAPH - 0xE7AB: 0x8761, //CJK UNIFIED IDEOGRAPH - 0xE7AC: 0x875A, //CJK UNIFIED IDEOGRAPH - 0xE7AD: 0x8751, //CJK UNIFIED IDEOGRAPH - 0xE7AE: 0x875E, //CJK UNIFIED IDEOGRAPH - 0xE7AF: 0x876D, //CJK UNIFIED IDEOGRAPH - 0xE7B0: 0x876A, //CJK UNIFIED IDEOGRAPH - 0xE7B1: 0x8750, //CJK UNIFIED IDEOGRAPH - 0xE7B2: 0x874E, //CJK UNIFIED IDEOGRAPH - 0xE7B3: 0x875F, //CJK UNIFIED IDEOGRAPH - 0xE7B4: 0x875D, //CJK UNIFIED IDEOGRAPH - 0xE7B5: 0x876F, //CJK UNIFIED IDEOGRAPH - 0xE7B6: 0x876C, //CJK UNIFIED IDEOGRAPH - 0xE7B7: 0x877A, //CJK UNIFIED IDEOGRAPH - 0xE7B8: 0x876E, //CJK UNIFIED IDEOGRAPH - 0xE7B9: 0x875C, //CJK UNIFIED IDEOGRAPH - 0xE7BA: 0x8765, //CJK UNIFIED IDEOGRAPH - 0xE7BB: 0x874F, //CJK UNIFIED IDEOGRAPH - 0xE7BC: 0x877B, //CJK UNIFIED IDEOGRAPH - 0xE7BD: 0x8775, //CJK UNIFIED IDEOGRAPH - 0xE7BE: 0x8762, //CJK UNIFIED IDEOGRAPH - 0xE7BF: 0x8767, //CJK UNIFIED IDEOGRAPH - 0xE7C0: 0x8769, //CJK UNIFIED IDEOGRAPH - 0xE7C1: 0x885A, //CJK UNIFIED IDEOGRAPH - 0xE7C2: 0x8905, //CJK UNIFIED IDEOGRAPH - 0xE7C3: 0x890C, //CJK UNIFIED IDEOGRAPH - 0xE7C4: 0x8914, //CJK UNIFIED IDEOGRAPH - 0xE7C5: 0x890B, //CJK UNIFIED IDEOGRAPH - 0xE7C6: 0x8917, //CJK UNIFIED IDEOGRAPH - 0xE7C7: 0x8918, //CJK UNIFIED IDEOGRAPH - 0xE7C8: 0x8919, //CJK UNIFIED IDEOGRAPH - 0xE7C9: 0x8906, //CJK UNIFIED IDEOGRAPH - 0xE7CA: 0x8916, //CJK UNIFIED IDEOGRAPH - 0xE7CB: 0x8911, //CJK UNIFIED IDEOGRAPH - 0xE7CC: 0x890E, //CJK UNIFIED IDEOGRAPH - 0xE7CD: 0x8909, //CJK UNIFIED IDEOGRAPH - 0xE7CE: 0x89A2, //CJK UNIFIED IDEOGRAPH - 0xE7CF: 0x89A4, //CJK UNIFIED IDEOGRAPH - 0xE7D0: 0x89A3, //CJK UNIFIED IDEOGRAPH - 0xE7D1: 0x89ED, //CJK UNIFIED IDEOGRAPH - 0xE7D2: 0x89F0, //CJK UNIFIED IDEOGRAPH - 0xE7D3: 0x89EC, //CJK UNIFIED IDEOGRAPH - 0xE7D4: 0x8ACF, //CJK UNIFIED IDEOGRAPH - 0xE7D5: 0x8AC6, //CJK UNIFIED IDEOGRAPH - 0xE7D6: 0x8AB8, //CJK UNIFIED IDEOGRAPH - 0xE7D7: 0x8AD3, //CJK UNIFIED IDEOGRAPH - 0xE7D8: 0x8AD1, //CJK UNIFIED IDEOGRAPH - 0xE7D9: 0x8AD4, //CJK UNIFIED IDEOGRAPH - 0xE7DA: 0x8AD5, //CJK UNIFIED IDEOGRAPH - 0xE7DB: 0x8ABB, //CJK UNIFIED IDEOGRAPH - 0xE7DC: 0x8AD7, //CJK UNIFIED IDEOGRAPH - 0xE7DD: 0x8ABE, //CJK UNIFIED IDEOGRAPH - 0xE7DE: 0x8AC0, //CJK UNIFIED IDEOGRAPH - 0xE7DF: 0x8AC5, //CJK UNIFIED IDEOGRAPH - 0xE7E0: 0x8AD8, //CJK UNIFIED IDEOGRAPH - 0xE7E1: 0x8AC3, //CJK UNIFIED IDEOGRAPH - 0xE7E2: 0x8ABA, //CJK UNIFIED IDEOGRAPH - 0xE7E3: 0x8ABD, //CJK UNIFIED IDEOGRAPH - 0xE7E4: 0x8AD9, //CJK UNIFIED IDEOGRAPH - 0xE7E5: 0x8C3E, //CJK UNIFIED IDEOGRAPH - 0xE7E6: 0x8C4D, //CJK UNIFIED IDEOGRAPH - 0xE7E7: 0x8C8F, //CJK UNIFIED IDEOGRAPH - 0xE7E8: 0x8CE5, //CJK UNIFIED IDEOGRAPH - 0xE7E9: 0x8CDF, //CJK UNIFIED IDEOGRAPH - 0xE7EA: 0x8CD9, //CJK UNIFIED IDEOGRAPH - 0xE7EB: 0x8CE8, //CJK UNIFIED IDEOGRAPH - 0xE7EC: 0x8CDA, //CJK UNIFIED IDEOGRAPH - 0xE7ED: 0x8CDD, //CJK UNIFIED IDEOGRAPH - 0xE7EE: 0x8CE7, //CJK UNIFIED IDEOGRAPH - 0xE7EF: 0x8DA0, //CJK UNIFIED IDEOGRAPH - 0xE7F0: 0x8D9C, //CJK UNIFIED IDEOGRAPH - 0xE7F1: 0x8DA1, //CJK UNIFIED IDEOGRAPH - 0xE7F2: 0x8D9B, //CJK UNIFIED IDEOGRAPH - 0xE7F3: 0x8E20, //CJK UNIFIED IDEOGRAPH - 0xE7F4: 0x8E23, //CJK UNIFIED IDEOGRAPH - 0xE7F5: 0x8E25, //CJK UNIFIED IDEOGRAPH - 0xE7F6: 0x8E24, //CJK UNIFIED IDEOGRAPH - 0xE7F7: 0x8E2E, //CJK UNIFIED IDEOGRAPH - 0xE7F8: 0x8E15, //CJK UNIFIED IDEOGRAPH - 0xE7F9: 0x8E1B, //CJK UNIFIED IDEOGRAPH - 0xE7FA: 0x8E16, //CJK UNIFIED IDEOGRAPH - 0xE7FB: 0x8E11, //CJK UNIFIED IDEOGRAPH - 0xE7FC: 0x8E19, //CJK UNIFIED IDEOGRAPH - 0xE7FD: 0x8E26, //CJK UNIFIED IDEOGRAPH - 0xE7FE: 0x8E27, //CJK UNIFIED IDEOGRAPH - 0xE840: 0x8E14, //CJK UNIFIED IDEOGRAPH - 0xE841: 0x8E12, //CJK UNIFIED IDEOGRAPH - 0xE842: 0x8E18, //CJK UNIFIED IDEOGRAPH - 0xE843: 0x8E13, //CJK UNIFIED IDEOGRAPH - 0xE844: 0x8E1C, //CJK UNIFIED IDEOGRAPH - 0xE845: 0x8E17, //CJK UNIFIED IDEOGRAPH - 0xE846: 0x8E1A, //CJK UNIFIED IDEOGRAPH - 0xE847: 0x8F2C, //CJK UNIFIED IDEOGRAPH - 0xE848: 0x8F24, //CJK UNIFIED IDEOGRAPH - 0xE849: 0x8F18, //CJK UNIFIED IDEOGRAPH - 0xE84A: 0x8F1A, //CJK UNIFIED IDEOGRAPH - 0xE84B: 0x8F20, //CJK UNIFIED IDEOGRAPH - 0xE84C: 0x8F23, //CJK UNIFIED IDEOGRAPH - 0xE84D: 0x8F16, //CJK UNIFIED IDEOGRAPH - 0xE84E: 0x8F17, //CJK UNIFIED IDEOGRAPH - 0xE84F: 0x9073, //CJK UNIFIED IDEOGRAPH - 0xE850: 0x9070, //CJK UNIFIED IDEOGRAPH - 0xE851: 0x906F, //CJK UNIFIED IDEOGRAPH - 0xE852: 0x9067, //CJK UNIFIED IDEOGRAPH - 0xE853: 0x906B, //CJK UNIFIED IDEOGRAPH - 0xE854: 0x912F, //CJK UNIFIED IDEOGRAPH - 0xE855: 0x912B, //CJK UNIFIED IDEOGRAPH - 0xE856: 0x9129, //CJK UNIFIED IDEOGRAPH - 0xE857: 0x912A, //CJK UNIFIED IDEOGRAPH - 0xE858: 0x9132, //CJK UNIFIED IDEOGRAPH - 0xE859: 0x9126, //CJK UNIFIED IDEOGRAPH - 0xE85A: 0x912E, //CJK UNIFIED IDEOGRAPH - 0xE85B: 0x9185, //CJK UNIFIED IDEOGRAPH - 0xE85C: 0x9186, //CJK UNIFIED IDEOGRAPH - 0xE85D: 0x918A, //CJK UNIFIED IDEOGRAPH - 0xE85E: 0x9181, //CJK UNIFIED IDEOGRAPH - 0xE85F: 0x9182, //CJK UNIFIED IDEOGRAPH - 0xE860: 0x9184, //CJK UNIFIED IDEOGRAPH - 0xE861: 0x9180, //CJK UNIFIED IDEOGRAPH - 0xE862: 0x92D0, //CJK UNIFIED IDEOGRAPH - 0xE863: 0x92C3, //CJK UNIFIED IDEOGRAPH - 0xE864: 0x92C4, //CJK UNIFIED IDEOGRAPH - 0xE865: 0x92C0, //CJK UNIFIED IDEOGRAPH - 0xE866: 0x92D9, //CJK UNIFIED IDEOGRAPH - 0xE867: 0x92B6, //CJK UNIFIED IDEOGRAPH - 0xE868: 0x92CF, //CJK UNIFIED IDEOGRAPH - 0xE869: 0x92F1, //CJK UNIFIED IDEOGRAPH - 0xE86A: 0x92DF, //CJK UNIFIED IDEOGRAPH - 0xE86B: 0x92D8, //CJK UNIFIED IDEOGRAPH - 0xE86C: 0x92E9, //CJK UNIFIED IDEOGRAPH - 0xE86D: 0x92D7, //CJK UNIFIED IDEOGRAPH - 0xE86E: 0x92DD, //CJK UNIFIED IDEOGRAPH - 0xE86F: 0x92CC, //CJK UNIFIED IDEOGRAPH - 0xE870: 0x92EF, //CJK UNIFIED IDEOGRAPH - 0xE871: 0x92C2, //CJK UNIFIED IDEOGRAPH - 0xE872: 0x92E8, //CJK UNIFIED IDEOGRAPH - 0xE873: 0x92CA, //CJK UNIFIED IDEOGRAPH - 0xE874: 0x92C8, //CJK UNIFIED IDEOGRAPH - 0xE875: 0x92CE, //CJK UNIFIED IDEOGRAPH - 0xE876: 0x92E6, //CJK UNIFIED IDEOGRAPH - 0xE877: 0x92CD, //CJK UNIFIED IDEOGRAPH - 0xE878: 0x92D5, //CJK UNIFIED IDEOGRAPH - 0xE879: 0x92C9, //CJK UNIFIED IDEOGRAPH - 0xE87A: 0x92E0, //CJK UNIFIED IDEOGRAPH - 0xE87B: 0x92DE, //CJK UNIFIED IDEOGRAPH - 0xE87C: 0x92E7, //CJK UNIFIED IDEOGRAPH - 0xE87D: 0x92D1, //CJK UNIFIED IDEOGRAPH - 0xE87E: 0x92D3, //CJK UNIFIED IDEOGRAPH - 0xE8A1: 0x92B5, //CJK UNIFIED IDEOGRAPH - 0xE8A2: 0x92E1, //CJK UNIFIED IDEOGRAPH - 0xE8A3: 0x92C6, //CJK UNIFIED IDEOGRAPH - 0xE8A4: 0x92B4, //CJK UNIFIED IDEOGRAPH - 0xE8A5: 0x957C, //CJK UNIFIED IDEOGRAPH - 0xE8A6: 0x95AC, //CJK UNIFIED IDEOGRAPH - 0xE8A7: 0x95AB, //CJK UNIFIED IDEOGRAPH - 0xE8A8: 0x95AE, //CJK UNIFIED IDEOGRAPH - 0xE8A9: 0x95B0, //CJK UNIFIED IDEOGRAPH - 0xE8AA: 0x96A4, //CJK UNIFIED IDEOGRAPH - 0xE8AB: 0x96A2, //CJK UNIFIED IDEOGRAPH - 0xE8AC: 0x96D3, //CJK UNIFIED IDEOGRAPH - 0xE8AD: 0x9705, //CJK UNIFIED IDEOGRAPH - 0xE8AE: 0x9708, //CJK UNIFIED IDEOGRAPH - 0xE8AF: 0x9702, //CJK UNIFIED IDEOGRAPH - 0xE8B0: 0x975A, //CJK UNIFIED IDEOGRAPH - 0xE8B1: 0x978A, //CJK UNIFIED IDEOGRAPH - 0xE8B2: 0x978E, //CJK UNIFIED IDEOGRAPH - 0xE8B3: 0x9788, //CJK UNIFIED IDEOGRAPH - 0xE8B4: 0x97D0, //CJK UNIFIED IDEOGRAPH - 0xE8B5: 0x97CF, //CJK UNIFIED IDEOGRAPH - 0xE8B6: 0x981E, //CJK UNIFIED IDEOGRAPH - 0xE8B7: 0x981D, //CJK UNIFIED IDEOGRAPH - 0xE8B8: 0x9826, //CJK UNIFIED IDEOGRAPH - 0xE8B9: 0x9829, //CJK UNIFIED IDEOGRAPH - 0xE8BA: 0x9828, //CJK UNIFIED IDEOGRAPH - 0xE8BB: 0x9820, //CJK UNIFIED IDEOGRAPH - 0xE8BC: 0x981B, //CJK UNIFIED IDEOGRAPH - 0xE8BD: 0x9827, //CJK UNIFIED IDEOGRAPH - 0xE8BE: 0x98B2, //CJK UNIFIED IDEOGRAPH - 0xE8BF: 0x9908, //CJK UNIFIED IDEOGRAPH - 0xE8C0: 0x98FA, //CJK UNIFIED IDEOGRAPH - 0xE8C1: 0x9911, //CJK UNIFIED IDEOGRAPH - 0xE8C2: 0x9914, //CJK UNIFIED IDEOGRAPH - 0xE8C3: 0x9916, //CJK UNIFIED IDEOGRAPH - 0xE8C4: 0x9917, //CJK UNIFIED IDEOGRAPH - 0xE8C5: 0x9915, //CJK UNIFIED IDEOGRAPH - 0xE8C6: 0x99DC, //CJK UNIFIED IDEOGRAPH - 0xE8C7: 0x99CD, //CJK UNIFIED IDEOGRAPH - 0xE8C8: 0x99CF, //CJK UNIFIED IDEOGRAPH - 0xE8C9: 0x99D3, //CJK UNIFIED IDEOGRAPH - 0xE8CA: 0x99D4, //CJK UNIFIED IDEOGRAPH - 0xE8CB: 0x99CE, //CJK UNIFIED IDEOGRAPH - 0xE8CC: 0x99C9, //CJK UNIFIED IDEOGRAPH - 0xE8CD: 0x99D6, //CJK UNIFIED IDEOGRAPH - 0xE8CE: 0x99D8, //CJK UNIFIED IDEOGRAPH - 0xE8CF: 0x99CB, //CJK UNIFIED IDEOGRAPH - 0xE8D0: 0x99D7, //CJK UNIFIED IDEOGRAPH - 0xE8D1: 0x99CC, //CJK UNIFIED IDEOGRAPH - 0xE8D2: 0x9AB3, //CJK UNIFIED IDEOGRAPH - 0xE8D3: 0x9AEC, //CJK UNIFIED IDEOGRAPH - 0xE8D4: 0x9AEB, //CJK UNIFIED IDEOGRAPH - 0xE8D5: 0x9AF3, //CJK UNIFIED IDEOGRAPH - 0xE8D6: 0x9AF2, //CJK UNIFIED IDEOGRAPH - 0xE8D7: 0x9AF1, //CJK UNIFIED IDEOGRAPH - 0xE8D8: 0x9B46, //CJK UNIFIED IDEOGRAPH - 0xE8D9: 0x9B43, //CJK UNIFIED IDEOGRAPH - 0xE8DA: 0x9B67, //CJK UNIFIED IDEOGRAPH - 0xE8DB: 0x9B74, //CJK UNIFIED IDEOGRAPH - 0xE8DC: 0x9B71, //CJK UNIFIED IDEOGRAPH - 0xE8DD: 0x9B66, //CJK UNIFIED IDEOGRAPH - 0xE8DE: 0x9B76, //CJK UNIFIED IDEOGRAPH - 0xE8DF: 0x9B75, //CJK UNIFIED IDEOGRAPH - 0xE8E0: 0x9B70, //CJK UNIFIED IDEOGRAPH - 0xE8E1: 0x9B68, //CJK UNIFIED IDEOGRAPH - 0xE8E2: 0x9B64, //CJK UNIFIED IDEOGRAPH - 0xE8E3: 0x9B6C, //CJK UNIFIED IDEOGRAPH - 0xE8E4: 0x9CFC, //CJK UNIFIED IDEOGRAPH - 0xE8E5: 0x9CFA, //CJK UNIFIED IDEOGRAPH - 0xE8E6: 0x9CFD, //CJK UNIFIED IDEOGRAPH - 0xE8E7: 0x9CFF, //CJK UNIFIED IDEOGRAPH - 0xE8E8: 0x9CF7, //CJK UNIFIED IDEOGRAPH - 0xE8E9: 0x9D07, //CJK UNIFIED IDEOGRAPH - 0xE8EA: 0x9D00, //CJK UNIFIED IDEOGRAPH - 0xE8EB: 0x9CF9, //CJK UNIFIED IDEOGRAPH - 0xE8EC: 0x9CFB, //CJK UNIFIED IDEOGRAPH - 0xE8ED: 0x9D08, //CJK UNIFIED IDEOGRAPH - 0xE8EE: 0x9D05, //CJK UNIFIED IDEOGRAPH - 0xE8EF: 0x9D04, //CJK UNIFIED IDEOGRAPH - 0xE8F0: 0x9E83, //CJK UNIFIED IDEOGRAPH - 0xE8F1: 0x9ED3, //CJK UNIFIED IDEOGRAPH - 0xE8F2: 0x9F0F, //CJK UNIFIED IDEOGRAPH - 0xE8F3: 0x9F10, //CJK UNIFIED IDEOGRAPH - 0xE8F4: 0x511C, //CJK UNIFIED IDEOGRAPH - 0xE8F5: 0x5113, //CJK UNIFIED IDEOGRAPH - 0xE8F6: 0x5117, //CJK UNIFIED IDEOGRAPH - 0xE8F7: 0x511A, //CJK UNIFIED IDEOGRAPH - 0xE8F8: 0x5111, //CJK UNIFIED IDEOGRAPH - 0xE8F9: 0x51DE, //CJK UNIFIED IDEOGRAPH - 0xE8FA: 0x5334, //CJK UNIFIED IDEOGRAPH - 0xE8FB: 0x53E1, //CJK UNIFIED IDEOGRAPH - 0xE8FC: 0x5670, //CJK UNIFIED IDEOGRAPH - 0xE8FD: 0x5660, //CJK UNIFIED IDEOGRAPH - 0xE8FE: 0x566E, //CJK UNIFIED IDEOGRAPH - 0xE940: 0x5673, //CJK UNIFIED IDEOGRAPH - 0xE941: 0x5666, //CJK UNIFIED IDEOGRAPH - 0xE942: 0x5663, //CJK UNIFIED IDEOGRAPH - 0xE943: 0x566D, //CJK UNIFIED IDEOGRAPH - 0xE944: 0x5672, //CJK UNIFIED IDEOGRAPH - 0xE945: 0x565E, //CJK UNIFIED IDEOGRAPH - 0xE946: 0x5677, //CJK UNIFIED IDEOGRAPH - 0xE947: 0x571C, //CJK UNIFIED IDEOGRAPH - 0xE948: 0x571B, //CJK UNIFIED IDEOGRAPH - 0xE949: 0x58C8, //CJK UNIFIED IDEOGRAPH - 0xE94A: 0x58BD, //CJK UNIFIED IDEOGRAPH - 0xE94B: 0x58C9, //CJK UNIFIED IDEOGRAPH - 0xE94C: 0x58BF, //CJK UNIFIED IDEOGRAPH - 0xE94D: 0x58BA, //CJK UNIFIED IDEOGRAPH - 0xE94E: 0x58C2, //CJK UNIFIED IDEOGRAPH - 0xE94F: 0x58BC, //CJK UNIFIED IDEOGRAPH - 0xE950: 0x58C6, //CJK UNIFIED IDEOGRAPH - 0xE951: 0x5B17, //CJK UNIFIED IDEOGRAPH - 0xE952: 0x5B19, //CJK UNIFIED IDEOGRAPH - 0xE953: 0x5B1B, //CJK UNIFIED IDEOGRAPH - 0xE954: 0x5B21, //CJK UNIFIED IDEOGRAPH - 0xE955: 0x5B14, //CJK UNIFIED IDEOGRAPH - 0xE956: 0x5B13, //CJK UNIFIED IDEOGRAPH - 0xE957: 0x5B10, //CJK UNIFIED IDEOGRAPH - 0xE958: 0x5B16, //CJK UNIFIED IDEOGRAPH - 0xE959: 0x5B28, //CJK UNIFIED IDEOGRAPH - 0xE95A: 0x5B1A, //CJK UNIFIED IDEOGRAPH - 0xE95B: 0x5B20, //CJK UNIFIED IDEOGRAPH - 0xE95C: 0x5B1E, //CJK UNIFIED IDEOGRAPH - 0xE95D: 0x5BEF, //CJK UNIFIED IDEOGRAPH - 0xE95E: 0x5DAC, //CJK UNIFIED IDEOGRAPH - 0xE95F: 0x5DB1, //CJK UNIFIED IDEOGRAPH - 0xE960: 0x5DA9, //CJK UNIFIED IDEOGRAPH - 0xE961: 0x5DA7, //CJK UNIFIED IDEOGRAPH - 0xE962: 0x5DB5, //CJK UNIFIED IDEOGRAPH - 0xE963: 0x5DB0, //CJK UNIFIED IDEOGRAPH - 0xE964: 0x5DAE, //CJK UNIFIED IDEOGRAPH - 0xE965: 0x5DAA, //CJK UNIFIED IDEOGRAPH - 0xE966: 0x5DA8, //CJK UNIFIED IDEOGRAPH - 0xE967: 0x5DB2, //CJK UNIFIED IDEOGRAPH - 0xE968: 0x5DAD, //CJK UNIFIED IDEOGRAPH - 0xE969: 0x5DAF, //CJK UNIFIED IDEOGRAPH - 0xE96A: 0x5DB4, //CJK UNIFIED IDEOGRAPH - 0xE96B: 0x5E67, //CJK UNIFIED IDEOGRAPH - 0xE96C: 0x5E68, //CJK UNIFIED IDEOGRAPH - 0xE96D: 0x5E66, //CJK UNIFIED IDEOGRAPH - 0xE96E: 0x5E6F, //CJK UNIFIED IDEOGRAPH - 0xE96F: 0x5EE9, //CJK UNIFIED IDEOGRAPH - 0xE970: 0x5EE7, //CJK UNIFIED IDEOGRAPH - 0xE971: 0x5EE6, //CJK UNIFIED IDEOGRAPH - 0xE972: 0x5EE8, //CJK UNIFIED IDEOGRAPH - 0xE973: 0x5EE5, //CJK UNIFIED IDEOGRAPH - 0xE974: 0x5F4B, //CJK UNIFIED IDEOGRAPH - 0xE975: 0x5FBC, //CJK UNIFIED IDEOGRAPH - 0xE976: 0x619D, //CJK UNIFIED IDEOGRAPH - 0xE977: 0x61A8, //CJK UNIFIED IDEOGRAPH - 0xE978: 0x6196, //CJK UNIFIED IDEOGRAPH - 0xE979: 0x61C5, //CJK UNIFIED IDEOGRAPH - 0xE97A: 0x61B4, //CJK UNIFIED IDEOGRAPH - 0xE97B: 0x61C6, //CJK UNIFIED IDEOGRAPH - 0xE97C: 0x61C1, //CJK UNIFIED IDEOGRAPH - 0xE97D: 0x61CC, //CJK UNIFIED IDEOGRAPH - 0xE97E: 0x61BA, //CJK UNIFIED IDEOGRAPH - 0xE9A1: 0x61BF, //CJK UNIFIED IDEOGRAPH - 0xE9A2: 0x61B8, //CJK UNIFIED IDEOGRAPH - 0xE9A3: 0x618C, //CJK UNIFIED IDEOGRAPH - 0xE9A4: 0x64D7, //CJK UNIFIED IDEOGRAPH - 0xE9A5: 0x64D6, //CJK UNIFIED IDEOGRAPH - 0xE9A6: 0x64D0, //CJK UNIFIED IDEOGRAPH - 0xE9A7: 0x64CF, //CJK UNIFIED IDEOGRAPH - 0xE9A8: 0x64C9, //CJK UNIFIED IDEOGRAPH - 0xE9A9: 0x64BD, //CJK UNIFIED IDEOGRAPH - 0xE9AA: 0x6489, //CJK UNIFIED IDEOGRAPH - 0xE9AB: 0x64C3, //CJK UNIFIED IDEOGRAPH - 0xE9AC: 0x64DB, //CJK UNIFIED IDEOGRAPH - 0xE9AD: 0x64F3, //CJK UNIFIED IDEOGRAPH - 0xE9AE: 0x64D9, //CJK UNIFIED IDEOGRAPH - 0xE9AF: 0x6533, //CJK UNIFIED IDEOGRAPH - 0xE9B0: 0x657F, //CJK UNIFIED IDEOGRAPH - 0xE9B1: 0x657C, //CJK UNIFIED IDEOGRAPH - 0xE9B2: 0x65A2, //CJK UNIFIED IDEOGRAPH - 0xE9B3: 0x66C8, //CJK UNIFIED IDEOGRAPH - 0xE9B4: 0x66BE, //CJK UNIFIED IDEOGRAPH - 0xE9B5: 0x66C0, //CJK UNIFIED IDEOGRAPH - 0xE9B6: 0x66CA, //CJK UNIFIED IDEOGRAPH - 0xE9B7: 0x66CB, //CJK UNIFIED IDEOGRAPH - 0xE9B8: 0x66CF, //CJK UNIFIED IDEOGRAPH - 0xE9B9: 0x66BD, //CJK UNIFIED IDEOGRAPH - 0xE9BA: 0x66BB, //CJK UNIFIED IDEOGRAPH - 0xE9BB: 0x66BA, //CJK UNIFIED IDEOGRAPH - 0xE9BC: 0x66CC, //CJK UNIFIED IDEOGRAPH - 0xE9BD: 0x6723, //CJK UNIFIED IDEOGRAPH - 0xE9BE: 0x6A34, //CJK UNIFIED IDEOGRAPH - 0xE9BF: 0x6A66, //CJK UNIFIED IDEOGRAPH - 0xE9C0: 0x6A49, //CJK UNIFIED IDEOGRAPH - 0xE9C1: 0x6A67, //CJK UNIFIED IDEOGRAPH - 0xE9C2: 0x6A32, //CJK UNIFIED IDEOGRAPH - 0xE9C3: 0x6A68, //CJK UNIFIED IDEOGRAPH - 0xE9C4: 0x6A3E, //CJK UNIFIED IDEOGRAPH - 0xE9C5: 0x6A5D, //CJK UNIFIED IDEOGRAPH - 0xE9C6: 0x6A6D, //CJK UNIFIED IDEOGRAPH - 0xE9C7: 0x6A76, //CJK UNIFIED IDEOGRAPH - 0xE9C8: 0x6A5B, //CJK UNIFIED IDEOGRAPH - 0xE9C9: 0x6A51, //CJK UNIFIED IDEOGRAPH - 0xE9CA: 0x6A28, //CJK UNIFIED IDEOGRAPH - 0xE9CB: 0x6A5A, //CJK UNIFIED IDEOGRAPH - 0xE9CC: 0x6A3B, //CJK UNIFIED IDEOGRAPH - 0xE9CD: 0x6A3F, //CJK UNIFIED IDEOGRAPH - 0xE9CE: 0x6A41, //CJK UNIFIED IDEOGRAPH - 0xE9CF: 0x6A6A, //CJK UNIFIED IDEOGRAPH - 0xE9D0: 0x6A64, //CJK UNIFIED IDEOGRAPH - 0xE9D1: 0x6A50, //CJK UNIFIED IDEOGRAPH - 0xE9D2: 0x6A4F, //CJK UNIFIED IDEOGRAPH - 0xE9D3: 0x6A54, //CJK UNIFIED IDEOGRAPH - 0xE9D4: 0x6A6F, //CJK UNIFIED IDEOGRAPH - 0xE9D5: 0x6A69, //CJK UNIFIED IDEOGRAPH - 0xE9D6: 0x6A60, //CJK UNIFIED IDEOGRAPH - 0xE9D7: 0x6A3C, //CJK UNIFIED IDEOGRAPH - 0xE9D8: 0x6A5E, //CJK UNIFIED IDEOGRAPH - 0xE9D9: 0x6A56, //CJK UNIFIED IDEOGRAPH - 0xE9DA: 0x6A55, //CJK UNIFIED IDEOGRAPH - 0xE9DB: 0x6A4D, //CJK UNIFIED IDEOGRAPH - 0xE9DC: 0x6A4E, //CJK UNIFIED IDEOGRAPH - 0xE9DD: 0x6A46, //CJK UNIFIED IDEOGRAPH - 0xE9DE: 0x6B55, //CJK UNIFIED IDEOGRAPH - 0xE9DF: 0x6B54, //CJK UNIFIED IDEOGRAPH - 0xE9E0: 0x6B56, //CJK UNIFIED IDEOGRAPH - 0xE9E1: 0x6BA7, //CJK UNIFIED IDEOGRAPH - 0xE9E2: 0x6BAA, //CJK UNIFIED IDEOGRAPH - 0xE9E3: 0x6BAB, //CJK UNIFIED IDEOGRAPH - 0xE9E4: 0x6BC8, //CJK UNIFIED IDEOGRAPH - 0xE9E5: 0x6BC7, //CJK UNIFIED IDEOGRAPH - 0xE9E6: 0x6C04, //CJK UNIFIED IDEOGRAPH - 0xE9E7: 0x6C03, //CJK UNIFIED IDEOGRAPH - 0xE9E8: 0x6C06, //CJK UNIFIED IDEOGRAPH - 0xE9E9: 0x6FAD, //CJK UNIFIED IDEOGRAPH - 0xE9EA: 0x6FCB, //CJK UNIFIED IDEOGRAPH - 0xE9EB: 0x6FA3, //CJK UNIFIED IDEOGRAPH - 0xE9EC: 0x6FC7, //CJK UNIFIED IDEOGRAPH - 0xE9ED: 0x6FBC, //CJK UNIFIED IDEOGRAPH - 0xE9EE: 0x6FCE, //CJK UNIFIED IDEOGRAPH - 0xE9EF: 0x6FC8, //CJK UNIFIED IDEOGRAPH - 0xE9F0: 0x6F5E, //CJK UNIFIED IDEOGRAPH - 0xE9F1: 0x6FC4, //CJK UNIFIED IDEOGRAPH - 0xE9F2: 0x6FBD, //CJK UNIFIED IDEOGRAPH - 0xE9F3: 0x6F9E, //CJK UNIFIED IDEOGRAPH - 0xE9F4: 0x6FCA, //CJK UNIFIED IDEOGRAPH - 0xE9F5: 0x6FA8, //CJK UNIFIED IDEOGRAPH - 0xE9F6: 0x7004, //CJK UNIFIED IDEOGRAPH - 0xE9F7: 0x6FA5, //CJK UNIFIED IDEOGRAPH - 0xE9F8: 0x6FAE, //CJK UNIFIED IDEOGRAPH - 0xE9F9: 0x6FBA, //CJK UNIFIED IDEOGRAPH - 0xE9FA: 0x6FAC, //CJK UNIFIED IDEOGRAPH - 0xE9FB: 0x6FAA, //CJK UNIFIED IDEOGRAPH - 0xE9FC: 0x6FCF, //CJK UNIFIED IDEOGRAPH - 0xE9FD: 0x6FBF, //CJK UNIFIED IDEOGRAPH - 0xE9FE: 0x6FB8, //CJK UNIFIED IDEOGRAPH - 0xEA40: 0x6FA2, //CJK UNIFIED IDEOGRAPH - 0xEA41: 0x6FC9, //CJK UNIFIED IDEOGRAPH - 0xEA42: 0x6FAB, //CJK UNIFIED IDEOGRAPH - 0xEA43: 0x6FCD, //CJK UNIFIED IDEOGRAPH - 0xEA44: 0x6FAF, //CJK UNIFIED IDEOGRAPH - 0xEA45: 0x6FB2, //CJK UNIFIED IDEOGRAPH - 0xEA46: 0x6FB0, //CJK UNIFIED IDEOGRAPH - 0xEA47: 0x71C5, //CJK UNIFIED IDEOGRAPH - 0xEA48: 0x71C2, //CJK UNIFIED IDEOGRAPH - 0xEA49: 0x71BF, //CJK UNIFIED IDEOGRAPH - 0xEA4A: 0x71B8, //CJK UNIFIED IDEOGRAPH - 0xEA4B: 0x71D6, //CJK UNIFIED IDEOGRAPH - 0xEA4C: 0x71C0, //CJK UNIFIED IDEOGRAPH - 0xEA4D: 0x71C1, //CJK UNIFIED IDEOGRAPH - 0xEA4E: 0x71CB, //CJK UNIFIED IDEOGRAPH - 0xEA4F: 0x71D4, //CJK UNIFIED IDEOGRAPH - 0xEA50: 0x71CA, //CJK UNIFIED IDEOGRAPH - 0xEA51: 0x71C7, //CJK UNIFIED IDEOGRAPH - 0xEA52: 0x71CF, //CJK UNIFIED IDEOGRAPH - 0xEA53: 0x71BD, //CJK UNIFIED IDEOGRAPH - 0xEA54: 0x71D8, //CJK UNIFIED IDEOGRAPH - 0xEA55: 0x71BC, //CJK UNIFIED IDEOGRAPH - 0xEA56: 0x71C6, //CJK UNIFIED IDEOGRAPH - 0xEA57: 0x71DA, //CJK UNIFIED IDEOGRAPH - 0xEA58: 0x71DB, //CJK UNIFIED IDEOGRAPH - 0xEA59: 0x729D, //CJK UNIFIED IDEOGRAPH - 0xEA5A: 0x729E, //CJK UNIFIED IDEOGRAPH - 0xEA5B: 0x7369, //CJK UNIFIED IDEOGRAPH - 0xEA5C: 0x7366, //CJK UNIFIED IDEOGRAPH - 0xEA5D: 0x7367, //CJK UNIFIED IDEOGRAPH - 0xEA5E: 0x736C, //CJK UNIFIED IDEOGRAPH - 0xEA5F: 0x7365, //CJK UNIFIED IDEOGRAPH - 0xEA60: 0x736B, //CJK UNIFIED IDEOGRAPH - 0xEA61: 0x736A, //CJK UNIFIED IDEOGRAPH - 0xEA62: 0x747F, //CJK UNIFIED IDEOGRAPH - 0xEA63: 0x749A, //CJK UNIFIED IDEOGRAPH - 0xEA64: 0x74A0, //CJK UNIFIED IDEOGRAPH - 0xEA65: 0x7494, //CJK UNIFIED IDEOGRAPH - 0xEA66: 0x7492, //CJK UNIFIED IDEOGRAPH - 0xEA67: 0x7495, //CJK UNIFIED IDEOGRAPH - 0xEA68: 0x74A1, //CJK UNIFIED IDEOGRAPH - 0xEA69: 0x750B, //CJK UNIFIED IDEOGRAPH - 0xEA6A: 0x7580, //CJK UNIFIED IDEOGRAPH - 0xEA6B: 0x762F, //CJK UNIFIED IDEOGRAPH - 0xEA6C: 0x762D, //CJK UNIFIED IDEOGRAPH - 0xEA6D: 0x7631, //CJK UNIFIED IDEOGRAPH - 0xEA6E: 0x763D, //CJK UNIFIED IDEOGRAPH - 0xEA6F: 0x7633, //CJK UNIFIED IDEOGRAPH - 0xEA70: 0x763C, //CJK UNIFIED IDEOGRAPH - 0xEA71: 0x7635, //CJK UNIFIED IDEOGRAPH - 0xEA72: 0x7632, //CJK UNIFIED IDEOGRAPH - 0xEA73: 0x7630, //CJK UNIFIED IDEOGRAPH - 0xEA74: 0x76BB, //CJK UNIFIED IDEOGRAPH - 0xEA75: 0x76E6, //CJK UNIFIED IDEOGRAPH - 0xEA76: 0x779A, //CJK UNIFIED IDEOGRAPH - 0xEA77: 0x779D, //CJK UNIFIED IDEOGRAPH - 0xEA78: 0x77A1, //CJK UNIFIED IDEOGRAPH - 0xEA79: 0x779C, //CJK UNIFIED IDEOGRAPH - 0xEA7A: 0x779B, //CJK UNIFIED IDEOGRAPH - 0xEA7B: 0x77A2, //CJK UNIFIED IDEOGRAPH - 0xEA7C: 0x77A3, //CJK UNIFIED IDEOGRAPH - 0xEA7D: 0x7795, //CJK UNIFIED IDEOGRAPH - 0xEA7E: 0x7799, //CJK UNIFIED IDEOGRAPH - 0xEAA1: 0x7797, //CJK UNIFIED IDEOGRAPH - 0xEAA2: 0x78DD, //CJK UNIFIED IDEOGRAPH - 0xEAA3: 0x78E9, //CJK UNIFIED IDEOGRAPH - 0xEAA4: 0x78E5, //CJK UNIFIED IDEOGRAPH - 0xEAA5: 0x78EA, //CJK UNIFIED IDEOGRAPH - 0xEAA6: 0x78DE, //CJK UNIFIED IDEOGRAPH - 0xEAA7: 0x78E3, //CJK UNIFIED IDEOGRAPH - 0xEAA8: 0x78DB, //CJK UNIFIED IDEOGRAPH - 0xEAA9: 0x78E1, //CJK UNIFIED IDEOGRAPH - 0xEAAA: 0x78E2, //CJK UNIFIED IDEOGRAPH - 0xEAAB: 0x78ED, //CJK UNIFIED IDEOGRAPH - 0xEAAC: 0x78DF, //CJK UNIFIED IDEOGRAPH - 0xEAAD: 0x78E0, //CJK UNIFIED IDEOGRAPH - 0xEAAE: 0x79A4, //CJK UNIFIED IDEOGRAPH - 0xEAAF: 0x7A44, //CJK UNIFIED IDEOGRAPH - 0xEAB0: 0x7A48, //CJK UNIFIED IDEOGRAPH - 0xEAB1: 0x7A47, //CJK UNIFIED IDEOGRAPH - 0xEAB2: 0x7AB6, //CJK UNIFIED IDEOGRAPH - 0xEAB3: 0x7AB8, //CJK UNIFIED IDEOGRAPH - 0xEAB4: 0x7AB5, //CJK UNIFIED IDEOGRAPH - 0xEAB5: 0x7AB1, //CJK UNIFIED IDEOGRAPH - 0xEAB6: 0x7AB7, //CJK UNIFIED IDEOGRAPH - 0xEAB7: 0x7BDE, //CJK UNIFIED IDEOGRAPH - 0xEAB8: 0x7BE3, //CJK UNIFIED IDEOGRAPH - 0xEAB9: 0x7BE7, //CJK UNIFIED IDEOGRAPH - 0xEABA: 0x7BDD, //CJK UNIFIED IDEOGRAPH - 0xEABB: 0x7BD5, //CJK UNIFIED IDEOGRAPH - 0xEABC: 0x7BE5, //CJK UNIFIED IDEOGRAPH - 0xEABD: 0x7BDA, //CJK UNIFIED IDEOGRAPH - 0xEABE: 0x7BE8, //CJK UNIFIED IDEOGRAPH - 0xEABF: 0x7BF9, //CJK UNIFIED IDEOGRAPH - 0xEAC0: 0x7BD4, //CJK UNIFIED IDEOGRAPH - 0xEAC1: 0x7BEA, //CJK UNIFIED IDEOGRAPH - 0xEAC2: 0x7BE2, //CJK UNIFIED IDEOGRAPH - 0xEAC3: 0x7BDC, //CJK UNIFIED IDEOGRAPH - 0xEAC4: 0x7BEB, //CJK UNIFIED IDEOGRAPH - 0xEAC5: 0x7BD8, //CJK UNIFIED IDEOGRAPH - 0xEAC6: 0x7BDF, //CJK UNIFIED IDEOGRAPH - 0xEAC7: 0x7CD2, //CJK UNIFIED IDEOGRAPH - 0xEAC8: 0x7CD4, //CJK UNIFIED IDEOGRAPH - 0xEAC9: 0x7CD7, //CJK UNIFIED IDEOGRAPH - 0xEACA: 0x7CD0, //CJK UNIFIED IDEOGRAPH - 0xEACB: 0x7CD1, //CJK UNIFIED IDEOGRAPH - 0xEACC: 0x7E12, //CJK UNIFIED IDEOGRAPH - 0xEACD: 0x7E21, //CJK UNIFIED IDEOGRAPH - 0xEACE: 0x7E17, //CJK UNIFIED IDEOGRAPH - 0xEACF: 0x7E0C, //CJK UNIFIED IDEOGRAPH - 0xEAD0: 0x7E1F, //CJK UNIFIED IDEOGRAPH - 0xEAD1: 0x7E20, //CJK UNIFIED IDEOGRAPH - 0xEAD2: 0x7E13, //CJK UNIFIED IDEOGRAPH - 0xEAD3: 0x7E0E, //CJK UNIFIED IDEOGRAPH - 0xEAD4: 0x7E1C, //CJK UNIFIED IDEOGRAPH - 0xEAD5: 0x7E15, //CJK UNIFIED IDEOGRAPH - 0xEAD6: 0x7E1A, //CJK UNIFIED IDEOGRAPH - 0xEAD7: 0x7E22, //CJK UNIFIED IDEOGRAPH - 0xEAD8: 0x7E0B, //CJK UNIFIED IDEOGRAPH - 0xEAD9: 0x7E0F, //CJK UNIFIED IDEOGRAPH - 0xEADA: 0x7E16, //CJK UNIFIED IDEOGRAPH - 0xEADB: 0x7E0D, //CJK UNIFIED IDEOGRAPH - 0xEADC: 0x7E14, //CJK UNIFIED IDEOGRAPH - 0xEADD: 0x7E25, //CJK UNIFIED IDEOGRAPH - 0xEADE: 0x7E24, //CJK UNIFIED IDEOGRAPH - 0xEADF: 0x7F43, //CJK UNIFIED IDEOGRAPH - 0xEAE0: 0x7F7B, //CJK UNIFIED IDEOGRAPH - 0xEAE1: 0x7F7C, //CJK UNIFIED IDEOGRAPH - 0xEAE2: 0x7F7A, //CJK UNIFIED IDEOGRAPH - 0xEAE3: 0x7FB1, //CJK UNIFIED IDEOGRAPH - 0xEAE4: 0x7FEF, //CJK UNIFIED IDEOGRAPH - 0xEAE5: 0x802A, //CJK UNIFIED IDEOGRAPH - 0xEAE6: 0x8029, //CJK UNIFIED IDEOGRAPH - 0xEAE7: 0x806C, //CJK UNIFIED IDEOGRAPH - 0xEAE8: 0x81B1, //CJK UNIFIED IDEOGRAPH - 0xEAE9: 0x81A6, //CJK UNIFIED IDEOGRAPH - 0xEAEA: 0x81AE, //CJK UNIFIED IDEOGRAPH - 0xEAEB: 0x81B9, //CJK UNIFIED IDEOGRAPH - 0xEAEC: 0x81B5, //CJK UNIFIED IDEOGRAPH - 0xEAED: 0x81AB, //CJK UNIFIED IDEOGRAPH - 0xEAEE: 0x81B0, //CJK UNIFIED IDEOGRAPH - 0xEAEF: 0x81AC, //CJK UNIFIED IDEOGRAPH - 0xEAF0: 0x81B4, //CJK UNIFIED IDEOGRAPH - 0xEAF1: 0x81B2, //CJK UNIFIED IDEOGRAPH - 0xEAF2: 0x81B7, //CJK UNIFIED IDEOGRAPH - 0xEAF3: 0x81A7, //CJK UNIFIED IDEOGRAPH - 0xEAF4: 0x81F2, //CJK UNIFIED IDEOGRAPH - 0xEAF5: 0x8255, //CJK UNIFIED IDEOGRAPH - 0xEAF6: 0x8256, //CJK UNIFIED IDEOGRAPH - 0xEAF7: 0x8257, //CJK UNIFIED IDEOGRAPH - 0xEAF8: 0x8556, //CJK UNIFIED IDEOGRAPH - 0xEAF9: 0x8545, //CJK UNIFIED IDEOGRAPH - 0xEAFA: 0x856B, //CJK UNIFIED IDEOGRAPH - 0xEAFB: 0x854D, //CJK UNIFIED IDEOGRAPH - 0xEAFC: 0x8553, //CJK UNIFIED IDEOGRAPH - 0xEAFD: 0x8561, //CJK UNIFIED IDEOGRAPH - 0xEAFE: 0x8558, //CJK UNIFIED IDEOGRAPH - 0xEB40: 0x8540, //CJK UNIFIED IDEOGRAPH - 0xEB41: 0x8546, //CJK UNIFIED IDEOGRAPH - 0xEB42: 0x8564, //CJK UNIFIED IDEOGRAPH - 0xEB43: 0x8541, //CJK UNIFIED IDEOGRAPH - 0xEB44: 0x8562, //CJK UNIFIED IDEOGRAPH - 0xEB45: 0x8544, //CJK UNIFIED IDEOGRAPH - 0xEB46: 0x8551, //CJK UNIFIED IDEOGRAPH - 0xEB47: 0x8547, //CJK UNIFIED IDEOGRAPH - 0xEB48: 0x8563, //CJK UNIFIED IDEOGRAPH - 0xEB49: 0x853E, //CJK UNIFIED IDEOGRAPH - 0xEB4A: 0x855B, //CJK UNIFIED IDEOGRAPH - 0xEB4B: 0x8571, //CJK UNIFIED IDEOGRAPH - 0xEB4C: 0x854E, //CJK UNIFIED IDEOGRAPH - 0xEB4D: 0x856E, //CJK UNIFIED IDEOGRAPH - 0xEB4E: 0x8575, //CJK UNIFIED IDEOGRAPH - 0xEB4F: 0x8555, //CJK UNIFIED IDEOGRAPH - 0xEB50: 0x8567, //CJK UNIFIED IDEOGRAPH - 0xEB51: 0x8560, //CJK UNIFIED IDEOGRAPH - 0xEB52: 0x858C, //CJK UNIFIED IDEOGRAPH - 0xEB53: 0x8566, //CJK UNIFIED IDEOGRAPH - 0xEB54: 0x855D, //CJK UNIFIED IDEOGRAPH - 0xEB55: 0x8554, //CJK UNIFIED IDEOGRAPH - 0xEB56: 0x8565, //CJK UNIFIED IDEOGRAPH - 0xEB57: 0x856C, //CJK UNIFIED IDEOGRAPH - 0xEB58: 0x8663, //CJK UNIFIED IDEOGRAPH - 0xEB59: 0x8665, //CJK UNIFIED IDEOGRAPH - 0xEB5A: 0x8664, //CJK UNIFIED IDEOGRAPH - 0xEB5B: 0x879B, //CJK UNIFIED IDEOGRAPH - 0xEB5C: 0x878F, //CJK UNIFIED IDEOGRAPH - 0xEB5D: 0x8797, //CJK UNIFIED IDEOGRAPH - 0xEB5E: 0x8793, //CJK UNIFIED IDEOGRAPH - 0xEB5F: 0x8792, //CJK UNIFIED IDEOGRAPH - 0xEB60: 0x8788, //CJK UNIFIED IDEOGRAPH - 0xEB61: 0x8781, //CJK UNIFIED IDEOGRAPH - 0xEB62: 0x8796, //CJK UNIFIED IDEOGRAPH - 0xEB63: 0x8798, //CJK UNIFIED IDEOGRAPH - 0xEB64: 0x8779, //CJK UNIFIED IDEOGRAPH - 0xEB65: 0x8787, //CJK UNIFIED IDEOGRAPH - 0xEB66: 0x87A3, //CJK UNIFIED IDEOGRAPH - 0xEB67: 0x8785, //CJK UNIFIED IDEOGRAPH - 0xEB68: 0x8790, //CJK UNIFIED IDEOGRAPH - 0xEB69: 0x8791, //CJK UNIFIED IDEOGRAPH - 0xEB6A: 0x879D, //CJK UNIFIED IDEOGRAPH - 0xEB6B: 0x8784, //CJK UNIFIED IDEOGRAPH - 0xEB6C: 0x8794, //CJK UNIFIED IDEOGRAPH - 0xEB6D: 0x879C, //CJK UNIFIED IDEOGRAPH - 0xEB6E: 0x879A, //CJK UNIFIED IDEOGRAPH - 0xEB6F: 0x8789, //CJK UNIFIED IDEOGRAPH - 0xEB70: 0x891E, //CJK UNIFIED IDEOGRAPH - 0xEB71: 0x8926, //CJK UNIFIED IDEOGRAPH - 0xEB72: 0x8930, //CJK UNIFIED IDEOGRAPH - 0xEB73: 0x892D, //CJK UNIFIED IDEOGRAPH - 0xEB74: 0x892E, //CJK UNIFIED IDEOGRAPH - 0xEB75: 0x8927, //CJK UNIFIED IDEOGRAPH - 0xEB76: 0x8931, //CJK UNIFIED IDEOGRAPH - 0xEB77: 0x8922, //CJK UNIFIED IDEOGRAPH - 0xEB78: 0x8929, //CJK UNIFIED IDEOGRAPH - 0xEB79: 0x8923, //CJK UNIFIED IDEOGRAPH - 0xEB7A: 0x892F, //CJK UNIFIED IDEOGRAPH - 0xEB7B: 0x892C, //CJK UNIFIED IDEOGRAPH - 0xEB7C: 0x891F, //CJK UNIFIED IDEOGRAPH - 0xEB7D: 0x89F1, //CJK UNIFIED IDEOGRAPH - 0xEB7E: 0x8AE0, //CJK UNIFIED IDEOGRAPH - 0xEBA1: 0x8AE2, //CJK UNIFIED IDEOGRAPH - 0xEBA2: 0x8AF2, //CJK UNIFIED IDEOGRAPH - 0xEBA3: 0x8AF4, //CJK UNIFIED IDEOGRAPH - 0xEBA4: 0x8AF5, //CJK UNIFIED IDEOGRAPH - 0xEBA5: 0x8ADD, //CJK UNIFIED IDEOGRAPH - 0xEBA6: 0x8B14, //CJK UNIFIED IDEOGRAPH - 0xEBA7: 0x8AE4, //CJK UNIFIED IDEOGRAPH - 0xEBA8: 0x8ADF, //CJK UNIFIED IDEOGRAPH - 0xEBA9: 0x8AF0, //CJK UNIFIED IDEOGRAPH - 0xEBAA: 0x8AC8, //CJK UNIFIED IDEOGRAPH - 0xEBAB: 0x8ADE, //CJK UNIFIED IDEOGRAPH - 0xEBAC: 0x8AE1, //CJK UNIFIED IDEOGRAPH - 0xEBAD: 0x8AE8, //CJK UNIFIED IDEOGRAPH - 0xEBAE: 0x8AFF, //CJK UNIFIED IDEOGRAPH - 0xEBAF: 0x8AEF, //CJK UNIFIED IDEOGRAPH - 0xEBB0: 0x8AFB, //CJK UNIFIED IDEOGRAPH - 0xEBB1: 0x8C91, //CJK UNIFIED IDEOGRAPH - 0xEBB2: 0x8C92, //CJK UNIFIED IDEOGRAPH - 0xEBB3: 0x8C90, //CJK UNIFIED IDEOGRAPH - 0xEBB4: 0x8CF5, //CJK UNIFIED IDEOGRAPH - 0xEBB5: 0x8CEE, //CJK UNIFIED IDEOGRAPH - 0xEBB6: 0x8CF1, //CJK UNIFIED IDEOGRAPH - 0xEBB7: 0x8CF0, //CJK UNIFIED IDEOGRAPH - 0xEBB8: 0x8CF3, //CJK UNIFIED IDEOGRAPH - 0xEBB9: 0x8D6C, //CJK UNIFIED IDEOGRAPH - 0xEBBA: 0x8D6E, //CJK UNIFIED IDEOGRAPH - 0xEBBB: 0x8DA5, //CJK UNIFIED IDEOGRAPH - 0xEBBC: 0x8DA7, //CJK UNIFIED IDEOGRAPH - 0xEBBD: 0x8E33, //CJK UNIFIED IDEOGRAPH - 0xEBBE: 0x8E3E, //CJK UNIFIED IDEOGRAPH - 0xEBBF: 0x8E38, //CJK UNIFIED IDEOGRAPH - 0xEBC0: 0x8E40, //CJK UNIFIED IDEOGRAPH - 0xEBC1: 0x8E45, //CJK UNIFIED IDEOGRAPH - 0xEBC2: 0x8E36, //CJK UNIFIED IDEOGRAPH - 0xEBC3: 0x8E3C, //CJK UNIFIED IDEOGRAPH - 0xEBC4: 0x8E3D, //CJK UNIFIED IDEOGRAPH - 0xEBC5: 0x8E41, //CJK UNIFIED IDEOGRAPH - 0xEBC6: 0x8E30, //CJK UNIFIED IDEOGRAPH - 0xEBC7: 0x8E3F, //CJK UNIFIED IDEOGRAPH - 0xEBC8: 0x8EBD, //CJK UNIFIED IDEOGRAPH - 0xEBC9: 0x8F36, //CJK UNIFIED IDEOGRAPH - 0xEBCA: 0x8F2E, //CJK UNIFIED IDEOGRAPH - 0xEBCB: 0x8F35, //CJK UNIFIED IDEOGRAPH - 0xEBCC: 0x8F32, //CJK UNIFIED IDEOGRAPH - 0xEBCD: 0x8F39, //CJK UNIFIED IDEOGRAPH - 0xEBCE: 0x8F37, //CJK UNIFIED IDEOGRAPH - 0xEBCF: 0x8F34, //CJK UNIFIED IDEOGRAPH - 0xEBD0: 0x9076, //CJK UNIFIED IDEOGRAPH - 0xEBD1: 0x9079, //CJK UNIFIED IDEOGRAPH - 0xEBD2: 0x907B, //CJK UNIFIED IDEOGRAPH - 0xEBD3: 0x9086, //CJK UNIFIED IDEOGRAPH - 0xEBD4: 0x90FA, //CJK UNIFIED IDEOGRAPH - 0xEBD5: 0x9133, //CJK UNIFIED IDEOGRAPH - 0xEBD6: 0x9135, //CJK UNIFIED IDEOGRAPH - 0xEBD7: 0x9136, //CJK UNIFIED IDEOGRAPH - 0xEBD8: 0x9193, //CJK UNIFIED IDEOGRAPH - 0xEBD9: 0x9190, //CJK UNIFIED IDEOGRAPH - 0xEBDA: 0x9191, //CJK UNIFIED IDEOGRAPH - 0xEBDB: 0x918D, //CJK UNIFIED IDEOGRAPH - 0xEBDC: 0x918F, //CJK UNIFIED IDEOGRAPH - 0xEBDD: 0x9327, //CJK UNIFIED IDEOGRAPH - 0xEBDE: 0x931E, //CJK UNIFIED IDEOGRAPH - 0xEBDF: 0x9308, //CJK UNIFIED IDEOGRAPH - 0xEBE0: 0x931F, //CJK UNIFIED IDEOGRAPH - 0xEBE1: 0x9306, //CJK UNIFIED IDEOGRAPH - 0xEBE2: 0x930F, //CJK UNIFIED IDEOGRAPH - 0xEBE3: 0x937A, //CJK UNIFIED IDEOGRAPH - 0xEBE4: 0x9338, //CJK UNIFIED IDEOGRAPH - 0xEBE5: 0x933C, //CJK UNIFIED IDEOGRAPH - 0xEBE6: 0x931B, //CJK UNIFIED IDEOGRAPH - 0xEBE7: 0x9323, //CJK UNIFIED IDEOGRAPH - 0xEBE8: 0x9312, //CJK UNIFIED IDEOGRAPH - 0xEBE9: 0x9301, //CJK UNIFIED IDEOGRAPH - 0xEBEA: 0x9346, //CJK UNIFIED IDEOGRAPH - 0xEBEB: 0x932D, //CJK UNIFIED IDEOGRAPH - 0xEBEC: 0x930E, //CJK UNIFIED IDEOGRAPH - 0xEBED: 0x930D, //CJK UNIFIED IDEOGRAPH - 0xEBEE: 0x92CB, //CJK UNIFIED IDEOGRAPH - 0xEBEF: 0x931D, //CJK UNIFIED IDEOGRAPH - 0xEBF0: 0x92FA, //CJK UNIFIED IDEOGRAPH - 0xEBF1: 0x9325, //CJK UNIFIED IDEOGRAPH - 0xEBF2: 0x9313, //CJK UNIFIED IDEOGRAPH - 0xEBF3: 0x92F9, //CJK UNIFIED IDEOGRAPH - 0xEBF4: 0x92F7, //CJK UNIFIED IDEOGRAPH - 0xEBF5: 0x9334, //CJK UNIFIED IDEOGRAPH - 0xEBF6: 0x9302, //CJK UNIFIED IDEOGRAPH - 0xEBF7: 0x9324, //CJK UNIFIED IDEOGRAPH - 0xEBF8: 0x92FF, //CJK UNIFIED IDEOGRAPH - 0xEBF9: 0x9329, //CJK UNIFIED IDEOGRAPH - 0xEBFA: 0x9339, //CJK UNIFIED IDEOGRAPH - 0xEBFB: 0x9335, //CJK UNIFIED IDEOGRAPH - 0xEBFC: 0x932A, //CJK UNIFIED IDEOGRAPH - 0xEBFD: 0x9314, //CJK UNIFIED IDEOGRAPH - 0xEBFE: 0x930C, //CJK UNIFIED IDEOGRAPH - 0xEC40: 0x930B, //CJK UNIFIED IDEOGRAPH - 0xEC41: 0x92FE, //CJK UNIFIED IDEOGRAPH - 0xEC42: 0x9309, //CJK UNIFIED IDEOGRAPH - 0xEC43: 0x9300, //CJK UNIFIED IDEOGRAPH - 0xEC44: 0x92FB, //CJK UNIFIED IDEOGRAPH - 0xEC45: 0x9316, //CJK UNIFIED IDEOGRAPH - 0xEC46: 0x95BC, //CJK UNIFIED IDEOGRAPH - 0xEC47: 0x95CD, //CJK UNIFIED IDEOGRAPH - 0xEC48: 0x95BE, //CJK UNIFIED IDEOGRAPH - 0xEC49: 0x95B9, //CJK UNIFIED IDEOGRAPH - 0xEC4A: 0x95BA, //CJK UNIFIED IDEOGRAPH - 0xEC4B: 0x95B6, //CJK UNIFIED IDEOGRAPH - 0xEC4C: 0x95BF, //CJK UNIFIED IDEOGRAPH - 0xEC4D: 0x95B5, //CJK UNIFIED IDEOGRAPH - 0xEC4E: 0x95BD, //CJK UNIFIED IDEOGRAPH - 0xEC4F: 0x96A9, //CJK UNIFIED IDEOGRAPH - 0xEC50: 0x96D4, //CJK UNIFIED IDEOGRAPH - 0xEC51: 0x970B, //CJK UNIFIED IDEOGRAPH - 0xEC52: 0x9712, //CJK UNIFIED IDEOGRAPH - 0xEC53: 0x9710, //CJK UNIFIED IDEOGRAPH - 0xEC54: 0x9799, //CJK UNIFIED IDEOGRAPH - 0xEC55: 0x9797, //CJK UNIFIED IDEOGRAPH - 0xEC56: 0x9794, //CJK UNIFIED IDEOGRAPH - 0xEC57: 0x97F0, //CJK UNIFIED IDEOGRAPH - 0xEC58: 0x97F8, //CJK UNIFIED IDEOGRAPH - 0xEC59: 0x9835, //CJK UNIFIED IDEOGRAPH - 0xEC5A: 0x982F, //CJK UNIFIED IDEOGRAPH - 0xEC5B: 0x9832, //CJK UNIFIED IDEOGRAPH - 0xEC5C: 0x9924, //CJK UNIFIED IDEOGRAPH - 0xEC5D: 0x991F, //CJK UNIFIED IDEOGRAPH - 0xEC5E: 0x9927, //CJK UNIFIED IDEOGRAPH - 0xEC5F: 0x9929, //CJK UNIFIED IDEOGRAPH - 0xEC60: 0x999E, //CJK UNIFIED IDEOGRAPH - 0xEC61: 0x99EE, //CJK UNIFIED IDEOGRAPH - 0xEC62: 0x99EC, //CJK UNIFIED IDEOGRAPH - 0xEC63: 0x99E5, //CJK UNIFIED IDEOGRAPH - 0xEC64: 0x99E4, //CJK UNIFIED IDEOGRAPH - 0xEC65: 0x99F0, //CJK UNIFIED IDEOGRAPH - 0xEC66: 0x99E3, //CJK UNIFIED IDEOGRAPH - 0xEC67: 0x99EA, //CJK UNIFIED IDEOGRAPH - 0xEC68: 0x99E9, //CJK UNIFIED IDEOGRAPH - 0xEC69: 0x99E7, //CJK UNIFIED IDEOGRAPH - 0xEC6A: 0x9AB9, //CJK UNIFIED IDEOGRAPH - 0xEC6B: 0x9ABF, //CJK UNIFIED IDEOGRAPH - 0xEC6C: 0x9AB4, //CJK UNIFIED IDEOGRAPH - 0xEC6D: 0x9ABB, //CJK UNIFIED IDEOGRAPH - 0xEC6E: 0x9AF6, //CJK UNIFIED IDEOGRAPH - 0xEC6F: 0x9AFA, //CJK UNIFIED IDEOGRAPH - 0xEC70: 0x9AF9, //CJK UNIFIED IDEOGRAPH - 0xEC71: 0x9AF7, //CJK UNIFIED IDEOGRAPH - 0xEC72: 0x9B33, //CJK UNIFIED IDEOGRAPH - 0xEC73: 0x9B80, //CJK UNIFIED IDEOGRAPH - 0xEC74: 0x9B85, //CJK UNIFIED IDEOGRAPH - 0xEC75: 0x9B87, //CJK UNIFIED IDEOGRAPH - 0xEC76: 0x9B7C, //CJK UNIFIED IDEOGRAPH - 0xEC77: 0x9B7E, //CJK UNIFIED IDEOGRAPH - 0xEC78: 0x9B7B, //CJK UNIFIED IDEOGRAPH - 0xEC79: 0x9B82, //CJK UNIFIED IDEOGRAPH - 0xEC7A: 0x9B93, //CJK UNIFIED IDEOGRAPH - 0xEC7B: 0x9B92, //CJK UNIFIED IDEOGRAPH - 0xEC7C: 0x9B90, //CJK UNIFIED IDEOGRAPH - 0xEC7D: 0x9B7A, //CJK UNIFIED IDEOGRAPH - 0xEC7E: 0x9B95, //CJK UNIFIED IDEOGRAPH - 0xECA1: 0x9B7D, //CJK UNIFIED IDEOGRAPH - 0xECA2: 0x9B88, //CJK UNIFIED IDEOGRAPH - 0xECA3: 0x9D25, //CJK UNIFIED IDEOGRAPH - 0xECA4: 0x9D17, //CJK UNIFIED IDEOGRAPH - 0xECA5: 0x9D20, //CJK UNIFIED IDEOGRAPH - 0xECA6: 0x9D1E, //CJK UNIFIED IDEOGRAPH - 0xECA7: 0x9D14, //CJK UNIFIED IDEOGRAPH - 0xECA8: 0x9D29, //CJK UNIFIED IDEOGRAPH - 0xECA9: 0x9D1D, //CJK UNIFIED IDEOGRAPH - 0xECAA: 0x9D18, //CJK UNIFIED IDEOGRAPH - 0xECAB: 0x9D22, //CJK UNIFIED IDEOGRAPH - 0xECAC: 0x9D10, //CJK UNIFIED IDEOGRAPH - 0xECAD: 0x9D19, //CJK UNIFIED IDEOGRAPH - 0xECAE: 0x9D1F, //CJK UNIFIED IDEOGRAPH - 0xECAF: 0x9E88, //CJK UNIFIED IDEOGRAPH - 0xECB0: 0x9E86, //CJK UNIFIED IDEOGRAPH - 0xECB1: 0x9E87, //CJK UNIFIED IDEOGRAPH - 0xECB2: 0x9EAE, //CJK UNIFIED IDEOGRAPH - 0xECB3: 0x9EAD, //CJK UNIFIED IDEOGRAPH - 0xECB4: 0x9ED5, //CJK UNIFIED IDEOGRAPH - 0xECB5: 0x9ED6, //CJK UNIFIED IDEOGRAPH - 0xECB6: 0x9EFA, //CJK UNIFIED IDEOGRAPH - 0xECB7: 0x9F12, //CJK UNIFIED IDEOGRAPH - 0xECB8: 0x9F3D, //CJK UNIFIED IDEOGRAPH - 0xECB9: 0x5126, //CJK UNIFIED IDEOGRAPH - 0xECBA: 0x5125, //CJK UNIFIED IDEOGRAPH - 0xECBB: 0x5122, //CJK UNIFIED IDEOGRAPH - 0xECBC: 0x5124, //CJK UNIFIED IDEOGRAPH - 0xECBD: 0x5120, //CJK UNIFIED IDEOGRAPH - 0xECBE: 0x5129, //CJK UNIFIED IDEOGRAPH - 0xECBF: 0x52F4, //CJK UNIFIED IDEOGRAPH - 0xECC0: 0x5693, //CJK UNIFIED IDEOGRAPH - 0xECC1: 0x568C, //CJK UNIFIED IDEOGRAPH - 0xECC2: 0x568D, //CJK UNIFIED IDEOGRAPH - 0xECC3: 0x5686, //CJK UNIFIED IDEOGRAPH - 0xECC4: 0x5684, //CJK UNIFIED IDEOGRAPH - 0xECC5: 0x5683, //CJK UNIFIED IDEOGRAPH - 0xECC6: 0x567E, //CJK UNIFIED IDEOGRAPH - 0xECC7: 0x5682, //CJK UNIFIED IDEOGRAPH - 0xECC8: 0x567F, //CJK UNIFIED IDEOGRAPH - 0xECC9: 0x5681, //CJK UNIFIED IDEOGRAPH - 0xECCA: 0x58D6, //CJK UNIFIED IDEOGRAPH - 0xECCB: 0x58D4, //CJK UNIFIED IDEOGRAPH - 0xECCC: 0x58CF, //CJK UNIFIED IDEOGRAPH - 0xECCD: 0x58D2, //CJK UNIFIED IDEOGRAPH - 0xECCE: 0x5B2D, //CJK UNIFIED IDEOGRAPH - 0xECCF: 0x5B25, //CJK UNIFIED IDEOGRAPH - 0xECD0: 0x5B32, //CJK UNIFIED IDEOGRAPH - 0xECD1: 0x5B23, //CJK UNIFIED IDEOGRAPH - 0xECD2: 0x5B2C, //CJK UNIFIED IDEOGRAPH - 0xECD3: 0x5B27, //CJK UNIFIED IDEOGRAPH - 0xECD4: 0x5B26, //CJK UNIFIED IDEOGRAPH - 0xECD5: 0x5B2F, //CJK UNIFIED IDEOGRAPH - 0xECD6: 0x5B2E, //CJK UNIFIED IDEOGRAPH - 0xECD7: 0x5B7B, //CJK UNIFIED IDEOGRAPH - 0xECD8: 0x5BF1, //CJK UNIFIED IDEOGRAPH - 0xECD9: 0x5BF2, //CJK UNIFIED IDEOGRAPH - 0xECDA: 0x5DB7, //CJK UNIFIED IDEOGRAPH - 0xECDB: 0x5E6C, //CJK UNIFIED IDEOGRAPH - 0xECDC: 0x5E6A, //CJK UNIFIED IDEOGRAPH - 0xECDD: 0x5FBE, //CJK UNIFIED IDEOGRAPH - 0xECDE: 0x5FBB, //CJK UNIFIED IDEOGRAPH - 0xECDF: 0x61C3, //CJK UNIFIED IDEOGRAPH - 0xECE0: 0x61B5, //CJK UNIFIED IDEOGRAPH - 0xECE1: 0x61BC, //CJK UNIFIED IDEOGRAPH - 0xECE2: 0x61E7, //CJK UNIFIED IDEOGRAPH - 0xECE3: 0x61E0, //CJK UNIFIED IDEOGRAPH - 0xECE4: 0x61E5, //CJK UNIFIED IDEOGRAPH - 0xECE5: 0x61E4, //CJK UNIFIED IDEOGRAPH - 0xECE6: 0x61E8, //CJK UNIFIED IDEOGRAPH - 0xECE7: 0x61DE, //CJK UNIFIED IDEOGRAPH - 0xECE8: 0x64EF, //CJK UNIFIED IDEOGRAPH - 0xECE9: 0x64E9, //CJK UNIFIED IDEOGRAPH - 0xECEA: 0x64E3, //CJK UNIFIED IDEOGRAPH - 0xECEB: 0x64EB, //CJK UNIFIED IDEOGRAPH - 0xECEC: 0x64E4, //CJK UNIFIED IDEOGRAPH - 0xECED: 0x64E8, //CJK UNIFIED IDEOGRAPH - 0xECEE: 0x6581, //CJK UNIFIED IDEOGRAPH - 0xECEF: 0x6580, //CJK UNIFIED IDEOGRAPH - 0xECF0: 0x65B6, //CJK UNIFIED IDEOGRAPH - 0xECF1: 0x65DA, //CJK UNIFIED IDEOGRAPH - 0xECF2: 0x66D2, //CJK UNIFIED IDEOGRAPH - 0xECF3: 0x6A8D, //CJK UNIFIED IDEOGRAPH - 0xECF4: 0x6A96, //CJK UNIFIED IDEOGRAPH - 0xECF5: 0x6A81, //CJK UNIFIED IDEOGRAPH - 0xECF6: 0x6AA5, //CJK UNIFIED IDEOGRAPH - 0xECF7: 0x6A89, //CJK UNIFIED IDEOGRAPH - 0xECF8: 0x6A9F, //CJK UNIFIED IDEOGRAPH - 0xECF9: 0x6A9B, //CJK UNIFIED IDEOGRAPH - 0xECFA: 0x6AA1, //CJK UNIFIED IDEOGRAPH - 0xECFB: 0x6A9E, //CJK UNIFIED IDEOGRAPH - 0xECFC: 0x6A87, //CJK UNIFIED IDEOGRAPH - 0xECFD: 0x6A93, //CJK UNIFIED IDEOGRAPH - 0xECFE: 0x6A8E, //CJK UNIFIED IDEOGRAPH - 0xED40: 0x6A95, //CJK UNIFIED IDEOGRAPH - 0xED41: 0x6A83, //CJK UNIFIED IDEOGRAPH - 0xED42: 0x6AA8, //CJK UNIFIED IDEOGRAPH - 0xED43: 0x6AA4, //CJK UNIFIED IDEOGRAPH - 0xED44: 0x6A91, //CJK UNIFIED IDEOGRAPH - 0xED45: 0x6A7F, //CJK UNIFIED IDEOGRAPH - 0xED46: 0x6AA6, //CJK UNIFIED IDEOGRAPH - 0xED47: 0x6A9A, //CJK UNIFIED IDEOGRAPH - 0xED48: 0x6A85, //CJK UNIFIED IDEOGRAPH - 0xED49: 0x6A8C, //CJK UNIFIED IDEOGRAPH - 0xED4A: 0x6A92, //CJK UNIFIED IDEOGRAPH - 0xED4B: 0x6B5B, //CJK UNIFIED IDEOGRAPH - 0xED4C: 0x6BAD, //CJK UNIFIED IDEOGRAPH - 0xED4D: 0x6C09, //CJK UNIFIED IDEOGRAPH - 0xED4E: 0x6FCC, //CJK UNIFIED IDEOGRAPH - 0xED4F: 0x6FA9, //CJK UNIFIED IDEOGRAPH - 0xED50: 0x6FF4, //CJK UNIFIED IDEOGRAPH - 0xED51: 0x6FD4, //CJK UNIFIED IDEOGRAPH - 0xED52: 0x6FE3, //CJK UNIFIED IDEOGRAPH - 0xED53: 0x6FDC, //CJK UNIFIED IDEOGRAPH - 0xED54: 0x6FED, //CJK UNIFIED IDEOGRAPH - 0xED55: 0x6FE7, //CJK UNIFIED IDEOGRAPH - 0xED56: 0x6FE6, //CJK UNIFIED IDEOGRAPH - 0xED57: 0x6FDE, //CJK UNIFIED IDEOGRAPH - 0xED58: 0x6FF2, //CJK UNIFIED IDEOGRAPH - 0xED59: 0x6FDD, //CJK UNIFIED IDEOGRAPH - 0xED5A: 0x6FE2, //CJK UNIFIED IDEOGRAPH - 0xED5B: 0x6FE8, //CJK UNIFIED IDEOGRAPH - 0xED5C: 0x71E1, //CJK UNIFIED IDEOGRAPH - 0xED5D: 0x71F1, //CJK UNIFIED IDEOGRAPH - 0xED5E: 0x71E8, //CJK UNIFIED IDEOGRAPH - 0xED5F: 0x71F2, //CJK UNIFIED IDEOGRAPH - 0xED60: 0x71E4, //CJK UNIFIED IDEOGRAPH - 0xED61: 0x71F0, //CJK UNIFIED IDEOGRAPH - 0xED62: 0x71E2, //CJK UNIFIED IDEOGRAPH - 0xED63: 0x7373, //CJK UNIFIED IDEOGRAPH - 0xED64: 0x736E, //CJK UNIFIED IDEOGRAPH - 0xED65: 0x736F, //CJK UNIFIED IDEOGRAPH - 0xED66: 0x7497, //CJK UNIFIED IDEOGRAPH - 0xED67: 0x74B2, //CJK UNIFIED IDEOGRAPH - 0xED68: 0x74AB, //CJK UNIFIED IDEOGRAPH - 0xED69: 0x7490, //CJK UNIFIED IDEOGRAPH - 0xED6A: 0x74AA, //CJK UNIFIED IDEOGRAPH - 0xED6B: 0x74AD, //CJK UNIFIED IDEOGRAPH - 0xED6C: 0x74B1, //CJK UNIFIED IDEOGRAPH - 0xED6D: 0x74A5, //CJK UNIFIED IDEOGRAPH - 0xED6E: 0x74AF, //CJK UNIFIED IDEOGRAPH - 0xED6F: 0x7510, //CJK UNIFIED IDEOGRAPH - 0xED70: 0x7511, //CJK UNIFIED IDEOGRAPH - 0xED71: 0x7512, //CJK UNIFIED IDEOGRAPH - 0xED72: 0x750F, //CJK UNIFIED IDEOGRAPH - 0xED73: 0x7584, //CJK UNIFIED IDEOGRAPH - 0xED74: 0x7643, //CJK UNIFIED IDEOGRAPH - 0xED75: 0x7648, //CJK UNIFIED IDEOGRAPH - 0xED76: 0x7649, //CJK UNIFIED IDEOGRAPH - 0xED77: 0x7647, //CJK UNIFIED IDEOGRAPH - 0xED78: 0x76A4, //CJK UNIFIED IDEOGRAPH - 0xED79: 0x76E9, //CJK UNIFIED IDEOGRAPH - 0xED7A: 0x77B5, //CJK UNIFIED IDEOGRAPH - 0xED7B: 0x77AB, //CJK UNIFIED IDEOGRAPH - 0xED7C: 0x77B2, //CJK UNIFIED IDEOGRAPH - 0xED7D: 0x77B7, //CJK UNIFIED IDEOGRAPH - 0xED7E: 0x77B6, //CJK UNIFIED IDEOGRAPH - 0xEDA1: 0x77B4, //CJK UNIFIED IDEOGRAPH - 0xEDA2: 0x77B1, //CJK UNIFIED IDEOGRAPH - 0xEDA3: 0x77A8, //CJK UNIFIED IDEOGRAPH - 0xEDA4: 0x77F0, //CJK UNIFIED IDEOGRAPH - 0xEDA5: 0x78F3, //CJK UNIFIED IDEOGRAPH - 0xEDA6: 0x78FD, //CJK UNIFIED IDEOGRAPH - 0xEDA7: 0x7902, //CJK UNIFIED IDEOGRAPH - 0xEDA8: 0x78FB, //CJK UNIFIED IDEOGRAPH - 0xEDA9: 0x78FC, //CJK UNIFIED IDEOGRAPH - 0xEDAA: 0x78F2, //CJK UNIFIED IDEOGRAPH - 0xEDAB: 0x7905, //CJK UNIFIED IDEOGRAPH - 0xEDAC: 0x78F9, //CJK UNIFIED IDEOGRAPH - 0xEDAD: 0x78FE, //CJK UNIFIED IDEOGRAPH - 0xEDAE: 0x7904, //CJK UNIFIED IDEOGRAPH - 0xEDAF: 0x79AB, //CJK UNIFIED IDEOGRAPH - 0xEDB0: 0x79A8, //CJK UNIFIED IDEOGRAPH - 0xEDB1: 0x7A5C, //CJK UNIFIED IDEOGRAPH - 0xEDB2: 0x7A5B, //CJK UNIFIED IDEOGRAPH - 0xEDB3: 0x7A56, //CJK UNIFIED IDEOGRAPH - 0xEDB4: 0x7A58, //CJK UNIFIED IDEOGRAPH - 0xEDB5: 0x7A54, //CJK UNIFIED IDEOGRAPH - 0xEDB6: 0x7A5A, //CJK UNIFIED IDEOGRAPH - 0xEDB7: 0x7ABE, //CJK UNIFIED IDEOGRAPH - 0xEDB8: 0x7AC0, //CJK UNIFIED IDEOGRAPH - 0xEDB9: 0x7AC1, //CJK UNIFIED IDEOGRAPH - 0xEDBA: 0x7C05, //CJK UNIFIED IDEOGRAPH - 0xEDBB: 0x7C0F, //CJK UNIFIED IDEOGRAPH - 0xEDBC: 0x7BF2, //CJK UNIFIED IDEOGRAPH - 0xEDBD: 0x7C00, //CJK UNIFIED IDEOGRAPH - 0xEDBE: 0x7BFF, //CJK UNIFIED IDEOGRAPH - 0xEDBF: 0x7BFB, //CJK UNIFIED IDEOGRAPH - 0xEDC0: 0x7C0E, //CJK UNIFIED IDEOGRAPH - 0xEDC1: 0x7BF4, //CJK UNIFIED IDEOGRAPH - 0xEDC2: 0x7C0B, //CJK UNIFIED IDEOGRAPH - 0xEDC3: 0x7BF3, //CJK UNIFIED IDEOGRAPH - 0xEDC4: 0x7C02, //CJK UNIFIED IDEOGRAPH - 0xEDC5: 0x7C09, //CJK UNIFIED IDEOGRAPH - 0xEDC6: 0x7C03, //CJK UNIFIED IDEOGRAPH - 0xEDC7: 0x7C01, //CJK UNIFIED IDEOGRAPH - 0xEDC8: 0x7BF8, //CJK UNIFIED IDEOGRAPH - 0xEDC9: 0x7BFD, //CJK UNIFIED IDEOGRAPH - 0xEDCA: 0x7C06, //CJK UNIFIED IDEOGRAPH - 0xEDCB: 0x7BF0, //CJK UNIFIED IDEOGRAPH - 0xEDCC: 0x7BF1, //CJK UNIFIED IDEOGRAPH - 0xEDCD: 0x7C10, //CJK UNIFIED IDEOGRAPH - 0xEDCE: 0x7C0A, //CJK UNIFIED IDEOGRAPH - 0xEDCF: 0x7CE8, //CJK UNIFIED IDEOGRAPH - 0xEDD0: 0x7E2D, //CJK UNIFIED IDEOGRAPH - 0xEDD1: 0x7E3C, //CJK UNIFIED IDEOGRAPH - 0xEDD2: 0x7E42, //CJK UNIFIED IDEOGRAPH - 0xEDD3: 0x7E33, //CJK UNIFIED IDEOGRAPH - 0xEDD4: 0x9848, //CJK UNIFIED IDEOGRAPH - 0xEDD5: 0x7E38, //CJK UNIFIED IDEOGRAPH - 0xEDD6: 0x7E2A, //CJK UNIFIED IDEOGRAPH - 0xEDD7: 0x7E49, //CJK UNIFIED IDEOGRAPH - 0xEDD8: 0x7E40, //CJK UNIFIED IDEOGRAPH - 0xEDD9: 0x7E47, //CJK UNIFIED IDEOGRAPH - 0xEDDA: 0x7E29, //CJK UNIFIED IDEOGRAPH - 0xEDDB: 0x7E4C, //CJK UNIFIED IDEOGRAPH - 0xEDDC: 0x7E30, //CJK UNIFIED IDEOGRAPH - 0xEDDD: 0x7E3B, //CJK UNIFIED IDEOGRAPH - 0xEDDE: 0x7E36, //CJK UNIFIED IDEOGRAPH - 0xEDDF: 0x7E44, //CJK UNIFIED IDEOGRAPH - 0xEDE0: 0x7E3A, //CJK UNIFIED IDEOGRAPH - 0xEDE1: 0x7F45, //CJK UNIFIED IDEOGRAPH - 0xEDE2: 0x7F7F, //CJK UNIFIED IDEOGRAPH - 0xEDE3: 0x7F7E, //CJK UNIFIED IDEOGRAPH - 0xEDE4: 0x7F7D, //CJK UNIFIED IDEOGRAPH - 0xEDE5: 0x7FF4, //CJK UNIFIED IDEOGRAPH - 0xEDE6: 0x7FF2, //CJK UNIFIED IDEOGRAPH - 0xEDE7: 0x802C, //CJK UNIFIED IDEOGRAPH - 0xEDE8: 0x81BB, //CJK UNIFIED IDEOGRAPH - 0xEDE9: 0x81C4, //CJK UNIFIED IDEOGRAPH - 0xEDEA: 0x81CC, //CJK UNIFIED IDEOGRAPH - 0xEDEB: 0x81CA, //CJK UNIFIED IDEOGRAPH - 0xEDEC: 0x81C5, //CJK UNIFIED IDEOGRAPH - 0xEDED: 0x81C7, //CJK UNIFIED IDEOGRAPH - 0xEDEE: 0x81BC, //CJK UNIFIED IDEOGRAPH - 0xEDEF: 0x81E9, //CJK UNIFIED IDEOGRAPH - 0xEDF0: 0x825B, //CJK UNIFIED IDEOGRAPH - 0xEDF1: 0x825A, //CJK UNIFIED IDEOGRAPH - 0xEDF2: 0x825C, //CJK UNIFIED IDEOGRAPH - 0xEDF3: 0x8583, //CJK UNIFIED IDEOGRAPH - 0xEDF4: 0x8580, //CJK UNIFIED IDEOGRAPH - 0xEDF5: 0x858F, //CJK UNIFIED IDEOGRAPH - 0xEDF6: 0x85A7, //CJK UNIFIED IDEOGRAPH - 0xEDF7: 0x8595, //CJK UNIFIED IDEOGRAPH - 0xEDF8: 0x85A0, //CJK UNIFIED IDEOGRAPH - 0xEDF9: 0x858B, //CJK UNIFIED IDEOGRAPH - 0xEDFA: 0x85A3, //CJK UNIFIED IDEOGRAPH - 0xEDFB: 0x857B, //CJK UNIFIED IDEOGRAPH - 0xEDFC: 0x85A4, //CJK UNIFIED IDEOGRAPH - 0xEDFD: 0x859A, //CJK UNIFIED IDEOGRAPH - 0xEDFE: 0x859E, //CJK UNIFIED IDEOGRAPH - 0xEE40: 0x8577, //CJK UNIFIED IDEOGRAPH - 0xEE41: 0x857C, //CJK UNIFIED IDEOGRAPH - 0xEE42: 0x8589, //CJK UNIFIED IDEOGRAPH - 0xEE43: 0x85A1, //CJK UNIFIED IDEOGRAPH - 0xEE44: 0x857A, //CJK UNIFIED IDEOGRAPH - 0xEE45: 0x8578, //CJK UNIFIED IDEOGRAPH - 0xEE46: 0x8557, //CJK UNIFIED IDEOGRAPH - 0xEE47: 0x858E, //CJK UNIFIED IDEOGRAPH - 0xEE48: 0x8596, //CJK UNIFIED IDEOGRAPH - 0xEE49: 0x8586, //CJK UNIFIED IDEOGRAPH - 0xEE4A: 0x858D, //CJK UNIFIED IDEOGRAPH - 0xEE4B: 0x8599, //CJK UNIFIED IDEOGRAPH - 0xEE4C: 0x859D, //CJK UNIFIED IDEOGRAPH - 0xEE4D: 0x8581, //CJK UNIFIED IDEOGRAPH - 0xEE4E: 0x85A2, //CJK UNIFIED IDEOGRAPH - 0xEE4F: 0x8582, //CJK UNIFIED IDEOGRAPH - 0xEE50: 0x8588, //CJK UNIFIED IDEOGRAPH - 0xEE51: 0x8585, //CJK UNIFIED IDEOGRAPH - 0xEE52: 0x8579, //CJK UNIFIED IDEOGRAPH - 0xEE53: 0x8576, //CJK UNIFIED IDEOGRAPH - 0xEE54: 0x8598, //CJK UNIFIED IDEOGRAPH - 0xEE55: 0x8590, //CJK UNIFIED IDEOGRAPH - 0xEE56: 0x859F, //CJK UNIFIED IDEOGRAPH - 0xEE57: 0x8668, //CJK UNIFIED IDEOGRAPH - 0xEE58: 0x87BE, //CJK UNIFIED IDEOGRAPH - 0xEE59: 0x87AA, //CJK UNIFIED IDEOGRAPH - 0xEE5A: 0x87AD, //CJK UNIFIED IDEOGRAPH - 0xEE5B: 0x87C5, //CJK UNIFIED IDEOGRAPH - 0xEE5C: 0x87B0, //CJK UNIFIED IDEOGRAPH - 0xEE5D: 0x87AC, //CJK UNIFIED IDEOGRAPH - 0xEE5E: 0x87B9, //CJK UNIFIED IDEOGRAPH - 0xEE5F: 0x87B5, //CJK UNIFIED IDEOGRAPH - 0xEE60: 0x87BC, //CJK UNIFIED IDEOGRAPH - 0xEE61: 0x87AE, //CJK UNIFIED IDEOGRAPH - 0xEE62: 0x87C9, //CJK UNIFIED IDEOGRAPH - 0xEE63: 0x87C3, //CJK UNIFIED IDEOGRAPH - 0xEE64: 0x87C2, //CJK UNIFIED IDEOGRAPH - 0xEE65: 0x87CC, //CJK UNIFIED IDEOGRAPH - 0xEE66: 0x87B7, //CJK UNIFIED IDEOGRAPH - 0xEE67: 0x87AF, //CJK UNIFIED IDEOGRAPH - 0xEE68: 0x87C4, //CJK UNIFIED IDEOGRAPH - 0xEE69: 0x87CA, //CJK UNIFIED IDEOGRAPH - 0xEE6A: 0x87B4, //CJK UNIFIED IDEOGRAPH - 0xEE6B: 0x87B6, //CJK UNIFIED IDEOGRAPH - 0xEE6C: 0x87BF, //CJK UNIFIED IDEOGRAPH - 0xEE6D: 0x87B8, //CJK UNIFIED IDEOGRAPH - 0xEE6E: 0x87BD, //CJK UNIFIED IDEOGRAPH - 0xEE6F: 0x87DE, //CJK UNIFIED IDEOGRAPH - 0xEE70: 0x87B2, //CJK UNIFIED IDEOGRAPH - 0xEE71: 0x8935, //CJK UNIFIED IDEOGRAPH - 0xEE72: 0x8933, //CJK UNIFIED IDEOGRAPH - 0xEE73: 0x893C, //CJK UNIFIED IDEOGRAPH - 0xEE74: 0x893E, //CJK UNIFIED IDEOGRAPH - 0xEE75: 0x8941, //CJK UNIFIED IDEOGRAPH - 0xEE76: 0x8952, //CJK UNIFIED IDEOGRAPH - 0xEE77: 0x8937, //CJK UNIFIED IDEOGRAPH - 0xEE78: 0x8942, //CJK UNIFIED IDEOGRAPH - 0xEE79: 0x89AD, //CJK UNIFIED IDEOGRAPH - 0xEE7A: 0x89AF, //CJK UNIFIED IDEOGRAPH - 0xEE7B: 0x89AE, //CJK UNIFIED IDEOGRAPH - 0xEE7C: 0x89F2, //CJK UNIFIED IDEOGRAPH - 0xEE7D: 0x89F3, //CJK UNIFIED IDEOGRAPH - 0xEE7E: 0x8B1E, //CJK UNIFIED IDEOGRAPH - 0xEEA1: 0x8B18, //CJK UNIFIED IDEOGRAPH - 0xEEA2: 0x8B16, //CJK UNIFIED IDEOGRAPH - 0xEEA3: 0x8B11, //CJK UNIFIED IDEOGRAPH - 0xEEA4: 0x8B05, //CJK UNIFIED IDEOGRAPH - 0xEEA5: 0x8B0B, //CJK UNIFIED IDEOGRAPH - 0xEEA6: 0x8B22, //CJK UNIFIED IDEOGRAPH - 0xEEA7: 0x8B0F, //CJK UNIFIED IDEOGRAPH - 0xEEA8: 0x8B12, //CJK UNIFIED IDEOGRAPH - 0xEEA9: 0x8B15, //CJK UNIFIED IDEOGRAPH - 0xEEAA: 0x8B07, //CJK UNIFIED IDEOGRAPH - 0xEEAB: 0x8B0D, //CJK UNIFIED IDEOGRAPH - 0xEEAC: 0x8B08, //CJK UNIFIED IDEOGRAPH - 0xEEAD: 0x8B06, //CJK UNIFIED IDEOGRAPH - 0xEEAE: 0x8B1C, //CJK UNIFIED IDEOGRAPH - 0xEEAF: 0x8B13, //CJK UNIFIED IDEOGRAPH - 0xEEB0: 0x8B1A, //CJK UNIFIED IDEOGRAPH - 0xEEB1: 0x8C4F, //CJK UNIFIED IDEOGRAPH - 0xEEB2: 0x8C70, //CJK UNIFIED IDEOGRAPH - 0xEEB3: 0x8C72, //CJK UNIFIED IDEOGRAPH - 0xEEB4: 0x8C71, //CJK UNIFIED IDEOGRAPH - 0xEEB5: 0x8C6F, //CJK UNIFIED IDEOGRAPH - 0xEEB6: 0x8C95, //CJK UNIFIED IDEOGRAPH - 0xEEB7: 0x8C94, //CJK UNIFIED IDEOGRAPH - 0xEEB8: 0x8CF9, //CJK UNIFIED IDEOGRAPH - 0xEEB9: 0x8D6F, //CJK UNIFIED IDEOGRAPH - 0xEEBA: 0x8E4E, //CJK UNIFIED IDEOGRAPH - 0xEEBB: 0x8E4D, //CJK UNIFIED IDEOGRAPH - 0xEEBC: 0x8E53, //CJK UNIFIED IDEOGRAPH - 0xEEBD: 0x8E50, //CJK UNIFIED IDEOGRAPH - 0xEEBE: 0x8E4C, //CJK UNIFIED IDEOGRAPH - 0xEEBF: 0x8E47, //CJK UNIFIED IDEOGRAPH - 0xEEC0: 0x8F43, //CJK UNIFIED IDEOGRAPH - 0xEEC1: 0x8F40, //CJK UNIFIED IDEOGRAPH - 0xEEC2: 0x9085, //CJK UNIFIED IDEOGRAPH - 0xEEC3: 0x907E, //CJK UNIFIED IDEOGRAPH - 0xEEC4: 0x9138, //CJK UNIFIED IDEOGRAPH - 0xEEC5: 0x919A, //CJK UNIFIED IDEOGRAPH - 0xEEC6: 0x91A2, //CJK UNIFIED IDEOGRAPH - 0xEEC7: 0x919B, //CJK UNIFIED IDEOGRAPH - 0xEEC8: 0x9199, //CJK UNIFIED IDEOGRAPH - 0xEEC9: 0x919F, //CJK UNIFIED IDEOGRAPH - 0xEECA: 0x91A1, //CJK UNIFIED IDEOGRAPH - 0xEECB: 0x919D, //CJK UNIFIED IDEOGRAPH - 0xEECC: 0x91A0, //CJK UNIFIED IDEOGRAPH - 0xEECD: 0x93A1, //CJK UNIFIED IDEOGRAPH - 0xEECE: 0x9383, //CJK UNIFIED IDEOGRAPH - 0xEECF: 0x93AF, //CJK UNIFIED IDEOGRAPH - 0xEED0: 0x9364, //CJK UNIFIED IDEOGRAPH - 0xEED1: 0x9356, //CJK UNIFIED IDEOGRAPH - 0xEED2: 0x9347, //CJK UNIFIED IDEOGRAPH - 0xEED3: 0x937C, //CJK UNIFIED IDEOGRAPH - 0xEED4: 0x9358, //CJK UNIFIED IDEOGRAPH - 0xEED5: 0x935C, //CJK UNIFIED IDEOGRAPH - 0xEED6: 0x9376, //CJK UNIFIED IDEOGRAPH - 0xEED7: 0x9349, //CJK UNIFIED IDEOGRAPH - 0xEED8: 0x9350, //CJK UNIFIED IDEOGRAPH - 0xEED9: 0x9351, //CJK UNIFIED IDEOGRAPH - 0xEEDA: 0x9360, //CJK UNIFIED IDEOGRAPH - 0xEEDB: 0x936D, //CJK UNIFIED IDEOGRAPH - 0xEEDC: 0x938F, //CJK UNIFIED IDEOGRAPH - 0xEEDD: 0x934C, //CJK UNIFIED IDEOGRAPH - 0xEEDE: 0x936A, //CJK UNIFIED IDEOGRAPH - 0xEEDF: 0x9379, //CJK UNIFIED IDEOGRAPH - 0xEEE0: 0x9357, //CJK UNIFIED IDEOGRAPH - 0xEEE1: 0x9355, //CJK UNIFIED IDEOGRAPH - 0xEEE2: 0x9352, //CJK UNIFIED IDEOGRAPH - 0xEEE3: 0x934F, //CJK UNIFIED IDEOGRAPH - 0xEEE4: 0x9371, //CJK UNIFIED IDEOGRAPH - 0xEEE5: 0x9377, //CJK UNIFIED IDEOGRAPH - 0xEEE6: 0x937B, //CJK UNIFIED IDEOGRAPH - 0xEEE7: 0x9361, //CJK UNIFIED IDEOGRAPH - 0xEEE8: 0x935E, //CJK UNIFIED IDEOGRAPH - 0xEEE9: 0x9363, //CJK UNIFIED IDEOGRAPH - 0xEEEA: 0x9367, //CJK UNIFIED IDEOGRAPH - 0xEEEB: 0x9380, //CJK UNIFIED IDEOGRAPH - 0xEEEC: 0x934E, //CJK UNIFIED IDEOGRAPH - 0xEEED: 0x9359, //CJK UNIFIED IDEOGRAPH - 0xEEEE: 0x95C7, //CJK UNIFIED IDEOGRAPH - 0xEEEF: 0x95C0, //CJK UNIFIED IDEOGRAPH - 0xEEF0: 0x95C9, //CJK UNIFIED IDEOGRAPH - 0xEEF1: 0x95C3, //CJK UNIFIED IDEOGRAPH - 0xEEF2: 0x95C5, //CJK UNIFIED IDEOGRAPH - 0xEEF3: 0x95B7, //CJK UNIFIED IDEOGRAPH - 0xEEF4: 0x96AE, //CJK UNIFIED IDEOGRAPH - 0xEEF5: 0x96B0, //CJK UNIFIED IDEOGRAPH - 0xEEF6: 0x96AC, //CJK UNIFIED IDEOGRAPH - 0xEEF7: 0x9720, //CJK UNIFIED IDEOGRAPH - 0xEEF8: 0x971F, //CJK UNIFIED IDEOGRAPH - 0xEEF9: 0x9718, //CJK UNIFIED IDEOGRAPH - 0xEEFA: 0x971D, //CJK UNIFIED IDEOGRAPH - 0xEEFB: 0x9719, //CJK UNIFIED IDEOGRAPH - 0xEEFC: 0x979A, //CJK UNIFIED IDEOGRAPH - 0xEEFD: 0x97A1, //CJK UNIFIED IDEOGRAPH - 0xEEFE: 0x979C, //CJK UNIFIED IDEOGRAPH - 0xEF40: 0x979E, //CJK UNIFIED IDEOGRAPH - 0xEF41: 0x979D, //CJK UNIFIED IDEOGRAPH - 0xEF42: 0x97D5, //CJK UNIFIED IDEOGRAPH - 0xEF43: 0x97D4, //CJK UNIFIED IDEOGRAPH - 0xEF44: 0x97F1, //CJK UNIFIED IDEOGRAPH - 0xEF45: 0x9841, //CJK UNIFIED IDEOGRAPH - 0xEF46: 0x9844, //CJK UNIFIED IDEOGRAPH - 0xEF47: 0x984A, //CJK UNIFIED IDEOGRAPH - 0xEF48: 0x9849, //CJK UNIFIED IDEOGRAPH - 0xEF49: 0x9845, //CJK UNIFIED IDEOGRAPH - 0xEF4A: 0x9843, //CJK UNIFIED IDEOGRAPH - 0xEF4B: 0x9925, //CJK UNIFIED IDEOGRAPH - 0xEF4C: 0x992B, //CJK UNIFIED IDEOGRAPH - 0xEF4D: 0x992C, //CJK UNIFIED IDEOGRAPH - 0xEF4E: 0x992A, //CJK UNIFIED IDEOGRAPH - 0xEF4F: 0x9933, //CJK UNIFIED IDEOGRAPH - 0xEF50: 0x9932, //CJK UNIFIED IDEOGRAPH - 0xEF51: 0x992F, //CJK UNIFIED IDEOGRAPH - 0xEF52: 0x992D, //CJK UNIFIED IDEOGRAPH - 0xEF53: 0x9931, //CJK UNIFIED IDEOGRAPH - 0xEF54: 0x9930, //CJK UNIFIED IDEOGRAPH - 0xEF55: 0x9998, //CJK UNIFIED IDEOGRAPH - 0xEF56: 0x99A3, //CJK UNIFIED IDEOGRAPH - 0xEF57: 0x99A1, //CJK UNIFIED IDEOGRAPH - 0xEF58: 0x9A02, //CJK UNIFIED IDEOGRAPH - 0xEF59: 0x99FA, //CJK UNIFIED IDEOGRAPH - 0xEF5A: 0x99F4, //CJK UNIFIED IDEOGRAPH - 0xEF5B: 0x99F7, //CJK UNIFIED IDEOGRAPH - 0xEF5C: 0x99F9, //CJK UNIFIED IDEOGRAPH - 0xEF5D: 0x99F8, //CJK UNIFIED IDEOGRAPH - 0xEF5E: 0x99F6, //CJK UNIFIED IDEOGRAPH - 0xEF5F: 0x99FB, //CJK UNIFIED IDEOGRAPH - 0xEF60: 0x99FD, //CJK UNIFIED IDEOGRAPH - 0xEF61: 0x99FE, //CJK UNIFIED IDEOGRAPH - 0xEF62: 0x99FC, //CJK UNIFIED IDEOGRAPH - 0xEF63: 0x9A03, //CJK UNIFIED IDEOGRAPH - 0xEF64: 0x9ABE, //CJK UNIFIED IDEOGRAPH - 0xEF65: 0x9AFE, //CJK UNIFIED IDEOGRAPH - 0xEF66: 0x9AFD, //CJK UNIFIED IDEOGRAPH - 0xEF67: 0x9B01, //CJK UNIFIED IDEOGRAPH - 0xEF68: 0x9AFC, //CJK UNIFIED IDEOGRAPH - 0xEF69: 0x9B48, //CJK UNIFIED IDEOGRAPH - 0xEF6A: 0x9B9A, //CJK UNIFIED IDEOGRAPH - 0xEF6B: 0x9BA8, //CJK UNIFIED IDEOGRAPH - 0xEF6C: 0x9B9E, //CJK UNIFIED IDEOGRAPH - 0xEF6D: 0x9B9B, //CJK UNIFIED IDEOGRAPH - 0xEF6E: 0x9BA6, //CJK UNIFIED IDEOGRAPH - 0xEF6F: 0x9BA1, //CJK UNIFIED IDEOGRAPH - 0xEF70: 0x9BA5, //CJK UNIFIED IDEOGRAPH - 0xEF71: 0x9BA4, //CJK UNIFIED IDEOGRAPH - 0xEF72: 0x9B86, //CJK UNIFIED IDEOGRAPH - 0xEF73: 0x9BA2, //CJK UNIFIED IDEOGRAPH - 0xEF74: 0x9BA0, //CJK UNIFIED IDEOGRAPH - 0xEF75: 0x9BAF, //CJK UNIFIED IDEOGRAPH - 0xEF76: 0x9D33, //CJK UNIFIED IDEOGRAPH - 0xEF77: 0x9D41, //CJK UNIFIED IDEOGRAPH - 0xEF78: 0x9D67, //CJK UNIFIED IDEOGRAPH - 0xEF79: 0x9D36, //CJK UNIFIED IDEOGRAPH - 0xEF7A: 0x9D2E, //CJK UNIFIED IDEOGRAPH - 0xEF7B: 0x9D2F, //CJK UNIFIED IDEOGRAPH - 0xEF7C: 0x9D31, //CJK UNIFIED IDEOGRAPH - 0xEF7D: 0x9D38, //CJK UNIFIED IDEOGRAPH - 0xEF7E: 0x9D30, //CJK UNIFIED IDEOGRAPH - 0xEFA1: 0x9D45, //CJK UNIFIED IDEOGRAPH - 0xEFA2: 0x9D42, //CJK UNIFIED IDEOGRAPH - 0xEFA3: 0x9D43, //CJK UNIFIED IDEOGRAPH - 0xEFA4: 0x9D3E, //CJK UNIFIED IDEOGRAPH - 0xEFA5: 0x9D37, //CJK UNIFIED IDEOGRAPH - 0xEFA6: 0x9D40, //CJK UNIFIED IDEOGRAPH - 0xEFA7: 0x9D3D, //CJK UNIFIED IDEOGRAPH - 0xEFA8: 0x7FF5, //CJK UNIFIED IDEOGRAPH - 0xEFA9: 0x9D2D, //CJK UNIFIED IDEOGRAPH - 0xEFAA: 0x9E8A, //CJK UNIFIED IDEOGRAPH - 0xEFAB: 0x9E89, //CJK UNIFIED IDEOGRAPH - 0xEFAC: 0x9E8D, //CJK UNIFIED IDEOGRAPH - 0xEFAD: 0x9EB0, //CJK UNIFIED IDEOGRAPH - 0xEFAE: 0x9EC8, //CJK UNIFIED IDEOGRAPH - 0xEFAF: 0x9EDA, //CJK UNIFIED IDEOGRAPH - 0xEFB0: 0x9EFB, //CJK UNIFIED IDEOGRAPH - 0xEFB1: 0x9EFF, //CJK UNIFIED IDEOGRAPH - 0xEFB2: 0x9F24, //CJK UNIFIED IDEOGRAPH - 0xEFB3: 0x9F23, //CJK UNIFIED IDEOGRAPH - 0xEFB4: 0x9F22, //CJK UNIFIED IDEOGRAPH - 0xEFB5: 0x9F54, //CJK UNIFIED IDEOGRAPH - 0xEFB6: 0x9FA0, //CJK UNIFIED IDEOGRAPH - 0xEFB7: 0x5131, //CJK UNIFIED IDEOGRAPH - 0xEFB8: 0x512D, //CJK UNIFIED IDEOGRAPH - 0xEFB9: 0x512E, //CJK UNIFIED IDEOGRAPH - 0xEFBA: 0x5698, //CJK UNIFIED IDEOGRAPH - 0xEFBB: 0x569C, //CJK UNIFIED IDEOGRAPH - 0xEFBC: 0x5697, //CJK UNIFIED IDEOGRAPH - 0xEFBD: 0x569A, //CJK UNIFIED IDEOGRAPH - 0xEFBE: 0x569D, //CJK UNIFIED IDEOGRAPH - 0xEFBF: 0x5699, //CJK UNIFIED IDEOGRAPH - 0xEFC0: 0x5970, //CJK UNIFIED IDEOGRAPH - 0xEFC1: 0x5B3C, //CJK UNIFIED IDEOGRAPH - 0xEFC2: 0x5C69, //CJK UNIFIED IDEOGRAPH - 0xEFC3: 0x5C6A, //CJK UNIFIED IDEOGRAPH - 0xEFC4: 0x5DC0, //CJK UNIFIED IDEOGRAPH - 0xEFC5: 0x5E6D, //CJK UNIFIED IDEOGRAPH - 0xEFC6: 0x5E6E, //CJK UNIFIED IDEOGRAPH - 0xEFC7: 0x61D8, //CJK UNIFIED IDEOGRAPH - 0xEFC8: 0x61DF, //CJK UNIFIED IDEOGRAPH - 0xEFC9: 0x61ED, //CJK UNIFIED IDEOGRAPH - 0xEFCA: 0x61EE, //CJK UNIFIED IDEOGRAPH - 0xEFCB: 0x61F1, //CJK UNIFIED IDEOGRAPH - 0xEFCC: 0x61EA, //CJK UNIFIED IDEOGRAPH - 0xEFCD: 0x61F0, //CJK UNIFIED IDEOGRAPH - 0xEFCE: 0x61EB, //CJK UNIFIED IDEOGRAPH - 0xEFCF: 0x61D6, //CJK UNIFIED IDEOGRAPH - 0xEFD0: 0x61E9, //CJK UNIFIED IDEOGRAPH - 0xEFD1: 0x64FF, //CJK UNIFIED IDEOGRAPH - 0xEFD2: 0x6504, //CJK UNIFIED IDEOGRAPH - 0xEFD3: 0x64FD, //CJK UNIFIED IDEOGRAPH - 0xEFD4: 0x64F8, //CJK UNIFIED IDEOGRAPH - 0xEFD5: 0x6501, //CJK UNIFIED IDEOGRAPH - 0xEFD6: 0x6503, //CJK UNIFIED IDEOGRAPH - 0xEFD7: 0x64FC, //CJK UNIFIED IDEOGRAPH - 0xEFD8: 0x6594, //CJK UNIFIED IDEOGRAPH - 0xEFD9: 0x65DB, //CJK UNIFIED IDEOGRAPH - 0xEFDA: 0x66DA, //CJK UNIFIED IDEOGRAPH - 0xEFDB: 0x66DB, //CJK UNIFIED IDEOGRAPH - 0xEFDC: 0x66D8, //CJK UNIFIED IDEOGRAPH - 0xEFDD: 0x6AC5, //CJK UNIFIED IDEOGRAPH - 0xEFDE: 0x6AB9, //CJK UNIFIED IDEOGRAPH - 0xEFDF: 0x6ABD, //CJK UNIFIED IDEOGRAPH - 0xEFE0: 0x6AE1, //CJK UNIFIED IDEOGRAPH - 0xEFE1: 0x6AC6, //CJK UNIFIED IDEOGRAPH - 0xEFE2: 0x6ABA, //CJK UNIFIED IDEOGRAPH - 0xEFE3: 0x6AB6, //CJK UNIFIED IDEOGRAPH - 0xEFE4: 0x6AB7, //CJK UNIFIED IDEOGRAPH - 0xEFE5: 0x6AC7, //CJK UNIFIED IDEOGRAPH - 0xEFE6: 0x6AB4, //CJK UNIFIED IDEOGRAPH - 0xEFE7: 0x6AAD, //CJK UNIFIED IDEOGRAPH - 0xEFE8: 0x6B5E, //CJK UNIFIED IDEOGRAPH - 0xEFE9: 0x6BC9, //CJK UNIFIED IDEOGRAPH - 0xEFEA: 0x6C0B, //CJK UNIFIED IDEOGRAPH - 0xEFEB: 0x7007, //CJK UNIFIED IDEOGRAPH - 0xEFEC: 0x700C, //CJK UNIFIED IDEOGRAPH - 0xEFED: 0x700D, //CJK UNIFIED IDEOGRAPH - 0xEFEE: 0x7001, //CJK UNIFIED IDEOGRAPH - 0xEFEF: 0x7005, //CJK UNIFIED IDEOGRAPH - 0xEFF0: 0x7014, //CJK UNIFIED IDEOGRAPH - 0xEFF1: 0x700E, //CJK UNIFIED IDEOGRAPH - 0xEFF2: 0x6FFF, //CJK UNIFIED IDEOGRAPH - 0xEFF3: 0x7000, //CJK UNIFIED IDEOGRAPH - 0xEFF4: 0x6FFB, //CJK UNIFIED IDEOGRAPH - 0xEFF5: 0x7026, //CJK UNIFIED IDEOGRAPH - 0xEFF6: 0x6FFC, //CJK UNIFIED IDEOGRAPH - 0xEFF7: 0x6FF7, //CJK UNIFIED IDEOGRAPH - 0xEFF8: 0x700A, //CJK UNIFIED IDEOGRAPH - 0xEFF9: 0x7201, //CJK UNIFIED IDEOGRAPH - 0xEFFA: 0x71FF, //CJK UNIFIED IDEOGRAPH - 0xEFFB: 0x71F9, //CJK UNIFIED IDEOGRAPH - 0xEFFC: 0x7203, //CJK UNIFIED IDEOGRAPH - 0xEFFD: 0x71FD, //CJK UNIFIED IDEOGRAPH - 0xEFFE: 0x7376, //CJK UNIFIED IDEOGRAPH - 0xF040: 0x74B8, //CJK UNIFIED IDEOGRAPH - 0xF041: 0x74C0, //CJK UNIFIED IDEOGRAPH - 0xF042: 0x74B5, //CJK UNIFIED IDEOGRAPH - 0xF043: 0x74C1, //CJK UNIFIED IDEOGRAPH - 0xF044: 0x74BE, //CJK UNIFIED IDEOGRAPH - 0xF045: 0x74B6, //CJK UNIFIED IDEOGRAPH - 0xF046: 0x74BB, //CJK UNIFIED IDEOGRAPH - 0xF047: 0x74C2, //CJK UNIFIED IDEOGRAPH - 0xF048: 0x7514, //CJK UNIFIED IDEOGRAPH - 0xF049: 0x7513, //CJK UNIFIED IDEOGRAPH - 0xF04A: 0x765C, //CJK UNIFIED IDEOGRAPH - 0xF04B: 0x7664, //CJK UNIFIED IDEOGRAPH - 0xF04C: 0x7659, //CJK UNIFIED IDEOGRAPH - 0xF04D: 0x7650, //CJK UNIFIED IDEOGRAPH - 0xF04E: 0x7653, //CJK UNIFIED IDEOGRAPH - 0xF04F: 0x7657, //CJK UNIFIED IDEOGRAPH - 0xF050: 0x765A, //CJK UNIFIED IDEOGRAPH - 0xF051: 0x76A6, //CJK UNIFIED IDEOGRAPH - 0xF052: 0x76BD, //CJK UNIFIED IDEOGRAPH - 0xF053: 0x76EC, //CJK UNIFIED IDEOGRAPH - 0xF054: 0x77C2, //CJK UNIFIED IDEOGRAPH - 0xF055: 0x77BA, //CJK UNIFIED IDEOGRAPH - 0xF056: 0x78FF, //CJK UNIFIED IDEOGRAPH - 0xF057: 0x790C, //CJK UNIFIED IDEOGRAPH - 0xF058: 0x7913, //CJK UNIFIED IDEOGRAPH - 0xF059: 0x7914, //CJK UNIFIED IDEOGRAPH - 0xF05A: 0x7909, //CJK UNIFIED IDEOGRAPH - 0xF05B: 0x7910, //CJK UNIFIED IDEOGRAPH - 0xF05C: 0x7912, //CJK UNIFIED IDEOGRAPH - 0xF05D: 0x7911, //CJK UNIFIED IDEOGRAPH - 0xF05E: 0x79AD, //CJK UNIFIED IDEOGRAPH - 0xF05F: 0x79AC, //CJK UNIFIED IDEOGRAPH - 0xF060: 0x7A5F, //CJK UNIFIED IDEOGRAPH - 0xF061: 0x7C1C, //CJK UNIFIED IDEOGRAPH - 0xF062: 0x7C29, //CJK UNIFIED IDEOGRAPH - 0xF063: 0x7C19, //CJK UNIFIED IDEOGRAPH - 0xF064: 0x7C20, //CJK UNIFIED IDEOGRAPH - 0xF065: 0x7C1F, //CJK UNIFIED IDEOGRAPH - 0xF066: 0x7C2D, //CJK UNIFIED IDEOGRAPH - 0xF067: 0x7C1D, //CJK UNIFIED IDEOGRAPH - 0xF068: 0x7C26, //CJK UNIFIED IDEOGRAPH - 0xF069: 0x7C28, //CJK UNIFIED IDEOGRAPH - 0xF06A: 0x7C22, //CJK UNIFIED IDEOGRAPH - 0xF06B: 0x7C25, //CJK UNIFIED IDEOGRAPH - 0xF06C: 0x7C30, //CJK UNIFIED IDEOGRAPH - 0xF06D: 0x7E5C, //CJK UNIFIED IDEOGRAPH - 0xF06E: 0x7E50, //CJK UNIFIED IDEOGRAPH - 0xF06F: 0x7E56, //CJK UNIFIED IDEOGRAPH - 0xF070: 0x7E63, //CJK UNIFIED IDEOGRAPH - 0xF071: 0x7E58, //CJK UNIFIED IDEOGRAPH - 0xF072: 0x7E62, //CJK UNIFIED IDEOGRAPH - 0xF073: 0x7E5F, //CJK UNIFIED IDEOGRAPH - 0xF074: 0x7E51, //CJK UNIFIED IDEOGRAPH - 0xF075: 0x7E60, //CJK UNIFIED IDEOGRAPH - 0xF076: 0x7E57, //CJK UNIFIED IDEOGRAPH - 0xF077: 0x7E53, //CJK UNIFIED IDEOGRAPH - 0xF078: 0x7FB5, //CJK UNIFIED IDEOGRAPH - 0xF079: 0x7FB3, //CJK UNIFIED IDEOGRAPH - 0xF07A: 0x7FF7, //CJK UNIFIED IDEOGRAPH - 0xF07B: 0x7FF8, //CJK UNIFIED IDEOGRAPH - 0xF07C: 0x8075, //CJK UNIFIED IDEOGRAPH - 0xF07D: 0x81D1, //CJK UNIFIED IDEOGRAPH - 0xF07E: 0x81D2, //CJK UNIFIED IDEOGRAPH - 0xF0A1: 0x81D0, //CJK UNIFIED IDEOGRAPH - 0xF0A2: 0x825F, //CJK UNIFIED IDEOGRAPH - 0xF0A3: 0x825E, //CJK UNIFIED IDEOGRAPH - 0xF0A4: 0x85B4, //CJK UNIFIED IDEOGRAPH - 0xF0A5: 0x85C6, //CJK UNIFIED IDEOGRAPH - 0xF0A6: 0x85C0, //CJK UNIFIED IDEOGRAPH - 0xF0A7: 0x85C3, //CJK UNIFIED IDEOGRAPH - 0xF0A8: 0x85C2, //CJK UNIFIED IDEOGRAPH - 0xF0A9: 0x85B3, //CJK UNIFIED IDEOGRAPH - 0xF0AA: 0x85B5, //CJK UNIFIED IDEOGRAPH - 0xF0AB: 0x85BD, //CJK UNIFIED IDEOGRAPH - 0xF0AC: 0x85C7, //CJK UNIFIED IDEOGRAPH - 0xF0AD: 0x85C4, //CJK UNIFIED IDEOGRAPH - 0xF0AE: 0x85BF, //CJK UNIFIED IDEOGRAPH - 0xF0AF: 0x85CB, //CJK UNIFIED IDEOGRAPH - 0xF0B0: 0x85CE, //CJK UNIFIED IDEOGRAPH - 0xF0B1: 0x85C8, //CJK UNIFIED IDEOGRAPH - 0xF0B2: 0x85C5, //CJK UNIFIED IDEOGRAPH - 0xF0B3: 0x85B1, //CJK UNIFIED IDEOGRAPH - 0xF0B4: 0x85B6, //CJK UNIFIED IDEOGRAPH - 0xF0B5: 0x85D2, //CJK UNIFIED IDEOGRAPH - 0xF0B6: 0x8624, //CJK UNIFIED IDEOGRAPH - 0xF0B7: 0x85B8, //CJK UNIFIED IDEOGRAPH - 0xF0B8: 0x85B7, //CJK UNIFIED IDEOGRAPH - 0xF0B9: 0x85BE, //CJK UNIFIED IDEOGRAPH - 0xF0BA: 0x8669, //CJK UNIFIED IDEOGRAPH - 0xF0BB: 0x87E7, //CJK UNIFIED IDEOGRAPH - 0xF0BC: 0x87E6, //CJK UNIFIED IDEOGRAPH - 0xF0BD: 0x87E2, //CJK UNIFIED IDEOGRAPH - 0xF0BE: 0x87DB, //CJK UNIFIED IDEOGRAPH - 0xF0BF: 0x87EB, //CJK UNIFIED IDEOGRAPH - 0xF0C0: 0x87EA, //CJK UNIFIED IDEOGRAPH - 0xF0C1: 0x87E5, //CJK UNIFIED IDEOGRAPH - 0xF0C2: 0x87DF, //CJK UNIFIED IDEOGRAPH - 0xF0C3: 0x87F3, //CJK UNIFIED IDEOGRAPH - 0xF0C4: 0x87E4, //CJK UNIFIED IDEOGRAPH - 0xF0C5: 0x87D4, //CJK UNIFIED IDEOGRAPH - 0xF0C6: 0x87DC, //CJK UNIFIED IDEOGRAPH - 0xF0C7: 0x87D3, //CJK UNIFIED IDEOGRAPH - 0xF0C8: 0x87ED, //CJK UNIFIED IDEOGRAPH - 0xF0C9: 0x87D8, //CJK UNIFIED IDEOGRAPH - 0xF0CA: 0x87E3, //CJK UNIFIED IDEOGRAPH - 0xF0CB: 0x87A4, //CJK UNIFIED IDEOGRAPH - 0xF0CC: 0x87D7, //CJK UNIFIED IDEOGRAPH - 0xF0CD: 0x87D9, //CJK UNIFIED IDEOGRAPH - 0xF0CE: 0x8801, //CJK UNIFIED IDEOGRAPH - 0xF0CF: 0x87F4, //CJK UNIFIED IDEOGRAPH - 0xF0D0: 0x87E8, //CJK UNIFIED IDEOGRAPH - 0xF0D1: 0x87DD, //CJK UNIFIED IDEOGRAPH - 0xF0D2: 0x8953, //CJK UNIFIED IDEOGRAPH - 0xF0D3: 0x894B, //CJK UNIFIED IDEOGRAPH - 0xF0D4: 0x894F, //CJK UNIFIED IDEOGRAPH - 0xF0D5: 0x894C, //CJK UNIFIED IDEOGRAPH - 0xF0D6: 0x8946, //CJK UNIFIED IDEOGRAPH - 0xF0D7: 0x8950, //CJK UNIFIED IDEOGRAPH - 0xF0D8: 0x8951, //CJK UNIFIED IDEOGRAPH - 0xF0D9: 0x8949, //CJK UNIFIED IDEOGRAPH - 0xF0DA: 0x8B2A, //CJK UNIFIED IDEOGRAPH - 0xF0DB: 0x8B27, //CJK UNIFIED IDEOGRAPH - 0xF0DC: 0x8B23, //CJK UNIFIED IDEOGRAPH - 0xF0DD: 0x8B33, //CJK UNIFIED IDEOGRAPH - 0xF0DE: 0x8B30, //CJK UNIFIED IDEOGRAPH - 0xF0DF: 0x8B35, //CJK UNIFIED IDEOGRAPH - 0xF0E0: 0x8B47, //CJK UNIFIED IDEOGRAPH - 0xF0E1: 0x8B2F, //CJK UNIFIED IDEOGRAPH - 0xF0E2: 0x8B3C, //CJK UNIFIED IDEOGRAPH - 0xF0E3: 0x8B3E, //CJK UNIFIED IDEOGRAPH - 0xF0E4: 0x8B31, //CJK UNIFIED IDEOGRAPH - 0xF0E5: 0x8B25, //CJK UNIFIED IDEOGRAPH - 0xF0E6: 0x8B37, //CJK UNIFIED IDEOGRAPH - 0xF0E7: 0x8B26, //CJK UNIFIED IDEOGRAPH - 0xF0E8: 0x8B36, //CJK UNIFIED IDEOGRAPH - 0xF0E9: 0x8B2E, //CJK UNIFIED IDEOGRAPH - 0xF0EA: 0x8B24, //CJK UNIFIED IDEOGRAPH - 0xF0EB: 0x8B3B, //CJK UNIFIED IDEOGRAPH - 0xF0EC: 0x8B3D, //CJK UNIFIED IDEOGRAPH - 0xF0ED: 0x8B3A, //CJK UNIFIED IDEOGRAPH - 0xF0EE: 0x8C42, //CJK UNIFIED IDEOGRAPH - 0xF0EF: 0x8C75, //CJK UNIFIED IDEOGRAPH - 0xF0F0: 0x8C99, //CJK UNIFIED IDEOGRAPH - 0xF0F1: 0x8C98, //CJK UNIFIED IDEOGRAPH - 0xF0F2: 0x8C97, //CJK UNIFIED IDEOGRAPH - 0xF0F3: 0x8CFE, //CJK UNIFIED IDEOGRAPH - 0xF0F4: 0x8D04, //CJK UNIFIED IDEOGRAPH - 0xF0F5: 0x8D02, //CJK UNIFIED IDEOGRAPH - 0xF0F6: 0x8D00, //CJK UNIFIED IDEOGRAPH - 0xF0F7: 0x8E5C, //CJK UNIFIED IDEOGRAPH - 0xF0F8: 0x8E62, //CJK UNIFIED IDEOGRAPH - 0xF0F9: 0x8E60, //CJK UNIFIED IDEOGRAPH - 0xF0FA: 0x8E57, //CJK UNIFIED IDEOGRAPH - 0xF0FB: 0x8E56, //CJK UNIFIED IDEOGRAPH - 0xF0FC: 0x8E5E, //CJK UNIFIED IDEOGRAPH - 0xF0FD: 0x8E65, //CJK UNIFIED IDEOGRAPH - 0xF0FE: 0x8E67, //CJK UNIFIED IDEOGRAPH - 0xF140: 0x8E5B, //CJK UNIFIED IDEOGRAPH - 0xF141: 0x8E5A, //CJK UNIFIED IDEOGRAPH - 0xF142: 0x8E61, //CJK UNIFIED IDEOGRAPH - 0xF143: 0x8E5D, //CJK UNIFIED IDEOGRAPH - 0xF144: 0x8E69, //CJK UNIFIED IDEOGRAPH - 0xF145: 0x8E54, //CJK UNIFIED IDEOGRAPH - 0xF146: 0x8F46, //CJK UNIFIED IDEOGRAPH - 0xF147: 0x8F47, //CJK UNIFIED IDEOGRAPH - 0xF148: 0x8F48, //CJK UNIFIED IDEOGRAPH - 0xF149: 0x8F4B, //CJK UNIFIED IDEOGRAPH - 0xF14A: 0x9128, //CJK UNIFIED IDEOGRAPH - 0xF14B: 0x913A, //CJK UNIFIED IDEOGRAPH - 0xF14C: 0x913B, //CJK UNIFIED IDEOGRAPH - 0xF14D: 0x913E, //CJK UNIFIED IDEOGRAPH - 0xF14E: 0x91A8, //CJK UNIFIED IDEOGRAPH - 0xF14F: 0x91A5, //CJK UNIFIED IDEOGRAPH - 0xF150: 0x91A7, //CJK UNIFIED IDEOGRAPH - 0xF151: 0x91AF, //CJK UNIFIED IDEOGRAPH - 0xF152: 0x91AA, //CJK UNIFIED IDEOGRAPH - 0xF153: 0x93B5, //CJK UNIFIED IDEOGRAPH - 0xF154: 0x938C, //CJK UNIFIED IDEOGRAPH - 0xF155: 0x9392, //CJK UNIFIED IDEOGRAPH - 0xF156: 0x93B7, //CJK UNIFIED IDEOGRAPH - 0xF157: 0x939B, //CJK UNIFIED IDEOGRAPH - 0xF158: 0x939D, //CJK UNIFIED IDEOGRAPH - 0xF159: 0x9389, //CJK UNIFIED IDEOGRAPH - 0xF15A: 0x93A7, //CJK UNIFIED IDEOGRAPH - 0xF15B: 0x938E, //CJK UNIFIED IDEOGRAPH - 0xF15C: 0x93AA, //CJK UNIFIED IDEOGRAPH - 0xF15D: 0x939E, //CJK UNIFIED IDEOGRAPH - 0xF15E: 0x93A6, //CJK UNIFIED IDEOGRAPH - 0xF15F: 0x9395, //CJK UNIFIED IDEOGRAPH - 0xF160: 0x9388, //CJK UNIFIED IDEOGRAPH - 0xF161: 0x9399, //CJK UNIFIED IDEOGRAPH - 0xF162: 0x939F, //CJK UNIFIED IDEOGRAPH - 0xF163: 0x938D, //CJK UNIFIED IDEOGRAPH - 0xF164: 0x93B1, //CJK UNIFIED IDEOGRAPH - 0xF165: 0x9391, //CJK UNIFIED IDEOGRAPH - 0xF166: 0x93B2, //CJK UNIFIED IDEOGRAPH - 0xF167: 0x93A4, //CJK UNIFIED IDEOGRAPH - 0xF168: 0x93A8, //CJK UNIFIED IDEOGRAPH - 0xF169: 0x93B4, //CJK UNIFIED IDEOGRAPH - 0xF16A: 0x93A3, //CJK UNIFIED IDEOGRAPH - 0xF16B: 0x93A5, //CJK UNIFIED IDEOGRAPH - 0xF16C: 0x95D2, //CJK UNIFIED IDEOGRAPH - 0xF16D: 0x95D3, //CJK UNIFIED IDEOGRAPH - 0xF16E: 0x95D1, //CJK UNIFIED IDEOGRAPH - 0xF16F: 0x96B3, //CJK UNIFIED IDEOGRAPH - 0xF170: 0x96D7, //CJK UNIFIED IDEOGRAPH - 0xF171: 0x96DA, //CJK UNIFIED IDEOGRAPH - 0xF172: 0x5DC2, //CJK UNIFIED IDEOGRAPH - 0xF173: 0x96DF, //CJK UNIFIED IDEOGRAPH - 0xF174: 0x96D8, //CJK UNIFIED IDEOGRAPH - 0xF175: 0x96DD, //CJK UNIFIED IDEOGRAPH - 0xF176: 0x9723, //CJK UNIFIED IDEOGRAPH - 0xF177: 0x9722, //CJK UNIFIED IDEOGRAPH - 0xF178: 0x9725, //CJK UNIFIED IDEOGRAPH - 0xF179: 0x97AC, //CJK UNIFIED IDEOGRAPH - 0xF17A: 0x97AE, //CJK UNIFIED IDEOGRAPH - 0xF17B: 0x97A8, //CJK UNIFIED IDEOGRAPH - 0xF17C: 0x97AB, //CJK UNIFIED IDEOGRAPH - 0xF17D: 0x97A4, //CJK UNIFIED IDEOGRAPH - 0xF17E: 0x97AA, //CJK UNIFIED IDEOGRAPH - 0xF1A1: 0x97A2, //CJK UNIFIED IDEOGRAPH - 0xF1A2: 0x97A5, //CJK UNIFIED IDEOGRAPH - 0xF1A3: 0x97D7, //CJK UNIFIED IDEOGRAPH - 0xF1A4: 0x97D9, //CJK UNIFIED IDEOGRAPH - 0xF1A5: 0x97D6, //CJK UNIFIED IDEOGRAPH - 0xF1A6: 0x97D8, //CJK UNIFIED IDEOGRAPH - 0xF1A7: 0x97FA, //CJK UNIFIED IDEOGRAPH - 0xF1A8: 0x9850, //CJK UNIFIED IDEOGRAPH - 0xF1A9: 0x9851, //CJK UNIFIED IDEOGRAPH - 0xF1AA: 0x9852, //CJK UNIFIED IDEOGRAPH - 0xF1AB: 0x98B8, //CJK UNIFIED IDEOGRAPH - 0xF1AC: 0x9941, //CJK UNIFIED IDEOGRAPH - 0xF1AD: 0x993C, //CJK UNIFIED IDEOGRAPH - 0xF1AE: 0x993A, //CJK UNIFIED IDEOGRAPH - 0xF1AF: 0x9A0F, //CJK UNIFIED IDEOGRAPH - 0xF1B0: 0x9A0B, //CJK UNIFIED IDEOGRAPH - 0xF1B1: 0x9A09, //CJK UNIFIED IDEOGRAPH - 0xF1B2: 0x9A0D, //CJK UNIFIED IDEOGRAPH - 0xF1B3: 0x9A04, //CJK UNIFIED IDEOGRAPH - 0xF1B4: 0x9A11, //CJK UNIFIED IDEOGRAPH - 0xF1B5: 0x9A0A, //CJK UNIFIED IDEOGRAPH - 0xF1B6: 0x9A05, //CJK UNIFIED IDEOGRAPH - 0xF1B7: 0x9A07, //CJK UNIFIED IDEOGRAPH - 0xF1B8: 0x9A06, //CJK UNIFIED IDEOGRAPH - 0xF1B9: 0x9AC0, //CJK UNIFIED IDEOGRAPH - 0xF1BA: 0x9ADC, //CJK UNIFIED IDEOGRAPH - 0xF1BB: 0x9B08, //CJK UNIFIED IDEOGRAPH - 0xF1BC: 0x9B04, //CJK UNIFIED IDEOGRAPH - 0xF1BD: 0x9B05, //CJK UNIFIED IDEOGRAPH - 0xF1BE: 0x9B29, //CJK UNIFIED IDEOGRAPH - 0xF1BF: 0x9B35, //CJK UNIFIED IDEOGRAPH - 0xF1C0: 0x9B4A, //CJK UNIFIED IDEOGRAPH - 0xF1C1: 0x9B4C, //CJK UNIFIED IDEOGRAPH - 0xF1C2: 0x9B4B, //CJK UNIFIED IDEOGRAPH - 0xF1C3: 0x9BC7, //CJK UNIFIED IDEOGRAPH - 0xF1C4: 0x9BC6, //CJK UNIFIED IDEOGRAPH - 0xF1C5: 0x9BC3, //CJK UNIFIED IDEOGRAPH - 0xF1C6: 0x9BBF, //CJK UNIFIED IDEOGRAPH - 0xF1C7: 0x9BC1, //CJK UNIFIED IDEOGRAPH - 0xF1C8: 0x9BB5, //CJK UNIFIED IDEOGRAPH - 0xF1C9: 0x9BB8, //CJK UNIFIED IDEOGRAPH - 0xF1CA: 0x9BD3, //CJK UNIFIED IDEOGRAPH - 0xF1CB: 0x9BB6, //CJK UNIFIED IDEOGRAPH - 0xF1CC: 0x9BC4, //CJK UNIFIED IDEOGRAPH - 0xF1CD: 0x9BB9, //CJK UNIFIED IDEOGRAPH - 0xF1CE: 0x9BBD, //CJK UNIFIED IDEOGRAPH - 0xF1CF: 0x9D5C, //CJK UNIFIED IDEOGRAPH - 0xF1D0: 0x9D53, //CJK UNIFIED IDEOGRAPH - 0xF1D1: 0x9D4F, //CJK UNIFIED IDEOGRAPH - 0xF1D2: 0x9D4A, //CJK UNIFIED IDEOGRAPH - 0xF1D3: 0x9D5B, //CJK UNIFIED IDEOGRAPH - 0xF1D4: 0x9D4B, //CJK UNIFIED IDEOGRAPH - 0xF1D5: 0x9D59, //CJK UNIFIED IDEOGRAPH - 0xF1D6: 0x9D56, //CJK UNIFIED IDEOGRAPH - 0xF1D7: 0x9D4C, //CJK UNIFIED IDEOGRAPH - 0xF1D8: 0x9D57, //CJK UNIFIED IDEOGRAPH - 0xF1D9: 0x9D52, //CJK UNIFIED IDEOGRAPH - 0xF1DA: 0x9D54, //CJK UNIFIED IDEOGRAPH - 0xF1DB: 0x9D5F, //CJK UNIFIED IDEOGRAPH - 0xF1DC: 0x9D58, //CJK UNIFIED IDEOGRAPH - 0xF1DD: 0x9D5A, //CJK UNIFIED IDEOGRAPH - 0xF1DE: 0x9E8E, //CJK UNIFIED IDEOGRAPH - 0xF1DF: 0x9E8C, //CJK UNIFIED IDEOGRAPH - 0xF1E0: 0x9EDF, //CJK UNIFIED IDEOGRAPH - 0xF1E1: 0x9F01, //CJK UNIFIED IDEOGRAPH - 0xF1E2: 0x9F00, //CJK UNIFIED IDEOGRAPH - 0xF1E3: 0x9F16, //CJK UNIFIED IDEOGRAPH - 0xF1E4: 0x9F25, //CJK UNIFIED IDEOGRAPH - 0xF1E5: 0x9F2B, //CJK UNIFIED IDEOGRAPH - 0xF1E6: 0x9F2A, //CJK UNIFIED IDEOGRAPH - 0xF1E7: 0x9F29, //CJK UNIFIED IDEOGRAPH - 0xF1E8: 0x9F28, //CJK UNIFIED IDEOGRAPH - 0xF1E9: 0x9F4C, //CJK UNIFIED IDEOGRAPH - 0xF1EA: 0x9F55, //CJK UNIFIED IDEOGRAPH - 0xF1EB: 0x5134, //CJK UNIFIED IDEOGRAPH - 0xF1EC: 0x5135, //CJK UNIFIED IDEOGRAPH - 0xF1ED: 0x5296, //CJK UNIFIED IDEOGRAPH - 0xF1EE: 0x52F7, //CJK UNIFIED IDEOGRAPH - 0xF1EF: 0x53B4, //CJK UNIFIED IDEOGRAPH - 0xF1F0: 0x56AB, //CJK UNIFIED IDEOGRAPH - 0xF1F1: 0x56AD, //CJK UNIFIED IDEOGRAPH - 0xF1F2: 0x56A6, //CJK UNIFIED IDEOGRAPH - 0xF1F3: 0x56A7, //CJK UNIFIED IDEOGRAPH - 0xF1F4: 0x56AA, //CJK UNIFIED IDEOGRAPH - 0xF1F5: 0x56AC, //CJK UNIFIED IDEOGRAPH - 0xF1F6: 0x58DA, //CJK UNIFIED IDEOGRAPH - 0xF1F7: 0x58DD, //CJK UNIFIED IDEOGRAPH - 0xF1F8: 0x58DB, //CJK UNIFIED IDEOGRAPH - 0xF1F9: 0x5912, //CJK UNIFIED IDEOGRAPH - 0xF1FA: 0x5B3D, //CJK UNIFIED IDEOGRAPH - 0xF1FB: 0x5B3E, //CJK UNIFIED IDEOGRAPH - 0xF1FC: 0x5B3F, //CJK UNIFIED IDEOGRAPH - 0xF1FD: 0x5DC3, //CJK UNIFIED IDEOGRAPH - 0xF1FE: 0x5E70, //CJK UNIFIED IDEOGRAPH - 0xF240: 0x5FBF, //CJK UNIFIED IDEOGRAPH - 0xF241: 0x61FB, //CJK UNIFIED IDEOGRAPH - 0xF242: 0x6507, //CJK UNIFIED IDEOGRAPH - 0xF243: 0x6510, //CJK UNIFIED IDEOGRAPH - 0xF244: 0x650D, //CJK UNIFIED IDEOGRAPH - 0xF245: 0x6509, //CJK UNIFIED IDEOGRAPH - 0xF246: 0x650C, //CJK UNIFIED IDEOGRAPH - 0xF247: 0x650E, //CJK UNIFIED IDEOGRAPH - 0xF248: 0x6584, //CJK UNIFIED IDEOGRAPH - 0xF249: 0x65DE, //CJK UNIFIED IDEOGRAPH - 0xF24A: 0x65DD, //CJK UNIFIED IDEOGRAPH - 0xF24B: 0x66DE, //CJK UNIFIED IDEOGRAPH - 0xF24C: 0x6AE7, //CJK UNIFIED IDEOGRAPH - 0xF24D: 0x6AE0, //CJK UNIFIED IDEOGRAPH - 0xF24E: 0x6ACC, //CJK UNIFIED IDEOGRAPH - 0xF24F: 0x6AD1, //CJK UNIFIED IDEOGRAPH - 0xF250: 0x6AD9, //CJK UNIFIED IDEOGRAPH - 0xF251: 0x6ACB, //CJK UNIFIED IDEOGRAPH - 0xF252: 0x6ADF, //CJK UNIFIED IDEOGRAPH - 0xF253: 0x6ADC, //CJK UNIFIED IDEOGRAPH - 0xF254: 0x6AD0, //CJK UNIFIED IDEOGRAPH - 0xF255: 0x6AEB, //CJK UNIFIED IDEOGRAPH - 0xF256: 0x6ACF, //CJK UNIFIED IDEOGRAPH - 0xF257: 0x6ACD, //CJK UNIFIED IDEOGRAPH - 0xF258: 0x6ADE, //CJK UNIFIED IDEOGRAPH - 0xF259: 0x6B60, //CJK UNIFIED IDEOGRAPH - 0xF25A: 0x6BB0, //CJK UNIFIED IDEOGRAPH - 0xF25B: 0x6C0C, //CJK UNIFIED IDEOGRAPH - 0xF25C: 0x7019, //CJK UNIFIED IDEOGRAPH - 0xF25D: 0x7027, //CJK UNIFIED IDEOGRAPH - 0xF25E: 0x7020, //CJK UNIFIED IDEOGRAPH - 0xF25F: 0x7016, //CJK UNIFIED IDEOGRAPH - 0xF260: 0x702B, //CJK UNIFIED IDEOGRAPH - 0xF261: 0x7021, //CJK UNIFIED IDEOGRAPH - 0xF262: 0x7022, //CJK UNIFIED IDEOGRAPH - 0xF263: 0x7023, //CJK UNIFIED IDEOGRAPH - 0xF264: 0x7029, //CJK UNIFIED IDEOGRAPH - 0xF265: 0x7017, //CJK UNIFIED IDEOGRAPH - 0xF266: 0x7024, //CJK UNIFIED IDEOGRAPH - 0xF267: 0x701C, //CJK UNIFIED IDEOGRAPH - 0xF268: 0x702A, //CJK UNIFIED IDEOGRAPH - 0xF269: 0x720C, //CJK UNIFIED IDEOGRAPH - 0xF26A: 0x720A, //CJK UNIFIED IDEOGRAPH - 0xF26B: 0x7207, //CJK UNIFIED IDEOGRAPH - 0xF26C: 0x7202, //CJK UNIFIED IDEOGRAPH - 0xF26D: 0x7205, //CJK UNIFIED IDEOGRAPH - 0xF26E: 0x72A5, //CJK UNIFIED IDEOGRAPH - 0xF26F: 0x72A6, //CJK UNIFIED IDEOGRAPH - 0xF270: 0x72A4, //CJK UNIFIED IDEOGRAPH - 0xF271: 0x72A3, //CJK UNIFIED IDEOGRAPH - 0xF272: 0x72A1, //CJK UNIFIED IDEOGRAPH - 0xF273: 0x74CB, //CJK UNIFIED IDEOGRAPH - 0xF274: 0x74C5, //CJK UNIFIED IDEOGRAPH - 0xF275: 0x74B7, //CJK UNIFIED IDEOGRAPH - 0xF276: 0x74C3, //CJK UNIFIED IDEOGRAPH - 0xF277: 0x7516, //CJK UNIFIED IDEOGRAPH - 0xF278: 0x7660, //CJK UNIFIED IDEOGRAPH - 0xF279: 0x77C9, //CJK UNIFIED IDEOGRAPH - 0xF27A: 0x77CA, //CJK UNIFIED IDEOGRAPH - 0xF27B: 0x77C4, //CJK UNIFIED IDEOGRAPH - 0xF27C: 0x77F1, //CJK UNIFIED IDEOGRAPH - 0xF27D: 0x791D, //CJK UNIFIED IDEOGRAPH - 0xF27E: 0x791B, //CJK UNIFIED IDEOGRAPH - 0xF2A1: 0x7921, //CJK UNIFIED IDEOGRAPH - 0xF2A2: 0x791C, //CJK UNIFIED IDEOGRAPH - 0xF2A3: 0x7917, //CJK UNIFIED IDEOGRAPH - 0xF2A4: 0x791E, //CJK UNIFIED IDEOGRAPH - 0xF2A5: 0x79B0, //CJK UNIFIED IDEOGRAPH - 0xF2A6: 0x7A67, //CJK UNIFIED IDEOGRAPH - 0xF2A7: 0x7A68, //CJK UNIFIED IDEOGRAPH - 0xF2A8: 0x7C33, //CJK UNIFIED IDEOGRAPH - 0xF2A9: 0x7C3C, //CJK UNIFIED IDEOGRAPH - 0xF2AA: 0x7C39, //CJK UNIFIED IDEOGRAPH - 0xF2AB: 0x7C2C, //CJK UNIFIED IDEOGRAPH - 0xF2AC: 0x7C3B, //CJK UNIFIED IDEOGRAPH - 0xF2AD: 0x7CEC, //CJK UNIFIED IDEOGRAPH - 0xF2AE: 0x7CEA, //CJK UNIFIED IDEOGRAPH - 0xF2AF: 0x7E76, //CJK UNIFIED IDEOGRAPH - 0xF2B0: 0x7E75, //CJK UNIFIED IDEOGRAPH - 0xF2B1: 0x7E78, //CJK UNIFIED IDEOGRAPH - 0xF2B2: 0x7E70, //CJK UNIFIED IDEOGRAPH - 0xF2B3: 0x7E77, //CJK UNIFIED IDEOGRAPH - 0xF2B4: 0x7E6F, //CJK UNIFIED IDEOGRAPH - 0xF2B5: 0x7E7A, //CJK UNIFIED IDEOGRAPH - 0xF2B6: 0x7E72, //CJK UNIFIED IDEOGRAPH - 0xF2B7: 0x7E74, //CJK UNIFIED IDEOGRAPH - 0xF2B8: 0x7E68, //CJK UNIFIED IDEOGRAPH - 0xF2B9: 0x7F4B, //CJK UNIFIED IDEOGRAPH - 0xF2BA: 0x7F4A, //CJK UNIFIED IDEOGRAPH - 0xF2BB: 0x7F83, //CJK UNIFIED IDEOGRAPH - 0xF2BC: 0x7F86, //CJK UNIFIED IDEOGRAPH - 0xF2BD: 0x7FB7, //CJK UNIFIED IDEOGRAPH - 0xF2BE: 0x7FFD, //CJK UNIFIED IDEOGRAPH - 0xF2BF: 0x7FFE, //CJK UNIFIED IDEOGRAPH - 0xF2C0: 0x8078, //CJK UNIFIED IDEOGRAPH - 0xF2C1: 0x81D7, //CJK UNIFIED IDEOGRAPH - 0xF2C2: 0x81D5, //CJK UNIFIED IDEOGRAPH - 0xF2C3: 0x8264, //CJK UNIFIED IDEOGRAPH - 0xF2C4: 0x8261, //CJK UNIFIED IDEOGRAPH - 0xF2C5: 0x8263, //CJK UNIFIED IDEOGRAPH - 0xF2C6: 0x85EB, //CJK UNIFIED IDEOGRAPH - 0xF2C7: 0x85F1, //CJK UNIFIED IDEOGRAPH - 0xF2C8: 0x85ED, //CJK UNIFIED IDEOGRAPH - 0xF2C9: 0x85D9, //CJK UNIFIED IDEOGRAPH - 0xF2CA: 0x85E1, //CJK UNIFIED IDEOGRAPH - 0xF2CB: 0x85E8, //CJK UNIFIED IDEOGRAPH - 0xF2CC: 0x85DA, //CJK UNIFIED IDEOGRAPH - 0xF2CD: 0x85D7, //CJK UNIFIED IDEOGRAPH - 0xF2CE: 0x85EC, //CJK UNIFIED IDEOGRAPH - 0xF2CF: 0x85F2, //CJK UNIFIED IDEOGRAPH - 0xF2D0: 0x85F8, //CJK UNIFIED IDEOGRAPH - 0xF2D1: 0x85D8, //CJK UNIFIED IDEOGRAPH - 0xF2D2: 0x85DF, //CJK UNIFIED IDEOGRAPH - 0xF2D3: 0x85E3, //CJK UNIFIED IDEOGRAPH - 0xF2D4: 0x85DC, //CJK UNIFIED IDEOGRAPH - 0xF2D5: 0x85D1, //CJK UNIFIED IDEOGRAPH - 0xF2D6: 0x85F0, //CJK UNIFIED IDEOGRAPH - 0xF2D7: 0x85E6, //CJK UNIFIED IDEOGRAPH - 0xF2D8: 0x85EF, //CJK UNIFIED IDEOGRAPH - 0xF2D9: 0x85DE, //CJK UNIFIED IDEOGRAPH - 0xF2DA: 0x85E2, //CJK UNIFIED IDEOGRAPH - 0xF2DB: 0x8800, //CJK UNIFIED IDEOGRAPH - 0xF2DC: 0x87FA, //CJK UNIFIED IDEOGRAPH - 0xF2DD: 0x8803, //CJK UNIFIED IDEOGRAPH - 0xF2DE: 0x87F6, //CJK UNIFIED IDEOGRAPH - 0xF2DF: 0x87F7, //CJK UNIFIED IDEOGRAPH - 0xF2E0: 0x8809, //CJK UNIFIED IDEOGRAPH - 0xF2E1: 0x880C, //CJK UNIFIED IDEOGRAPH - 0xF2E2: 0x880B, //CJK UNIFIED IDEOGRAPH - 0xF2E3: 0x8806, //CJK UNIFIED IDEOGRAPH - 0xF2E4: 0x87FC, //CJK UNIFIED IDEOGRAPH - 0xF2E5: 0x8808, //CJK UNIFIED IDEOGRAPH - 0xF2E6: 0x87FF, //CJK UNIFIED IDEOGRAPH - 0xF2E7: 0x880A, //CJK UNIFIED IDEOGRAPH - 0xF2E8: 0x8802, //CJK UNIFIED IDEOGRAPH - 0xF2E9: 0x8962, //CJK UNIFIED IDEOGRAPH - 0xF2EA: 0x895A, //CJK UNIFIED IDEOGRAPH - 0xF2EB: 0x895B, //CJK UNIFIED IDEOGRAPH - 0xF2EC: 0x8957, //CJK UNIFIED IDEOGRAPH - 0xF2ED: 0x8961, //CJK UNIFIED IDEOGRAPH - 0xF2EE: 0x895C, //CJK UNIFIED IDEOGRAPH - 0xF2EF: 0x8958, //CJK UNIFIED IDEOGRAPH - 0xF2F0: 0x895D, //CJK UNIFIED IDEOGRAPH - 0xF2F1: 0x8959, //CJK UNIFIED IDEOGRAPH - 0xF2F2: 0x8988, //CJK UNIFIED IDEOGRAPH - 0xF2F3: 0x89B7, //CJK UNIFIED IDEOGRAPH - 0xF2F4: 0x89B6, //CJK UNIFIED IDEOGRAPH - 0xF2F5: 0x89F6, //CJK UNIFIED IDEOGRAPH - 0xF2F6: 0x8B50, //CJK UNIFIED IDEOGRAPH - 0xF2F7: 0x8B48, //CJK UNIFIED IDEOGRAPH - 0xF2F8: 0x8B4A, //CJK UNIFIED IDEOGRAPH - 0xF2F9: 0x8B40, //CJK UNIFIED IDEOGRAPH - 0xF2FA: 0x8B53, //CJK UNIFIED IDEOGRAPH - 0xF2FB: 0x8B56, //CJK UNIFIED IDEOGRAPH - 0xF2FC: 0x8B54, //CJK UNIFIED IDEOGRAPH - 0xF2FD: 0x8B4B, //CJK UNIFIED IDEOGRAPH - 0xF2FE: 0x8B55, //CJK UNIFIED IDEOGRAPH - 0xF340: 0x8B51, //CJK UNIFIED IDEOGRAPH - 0xF341: 0x8B42, //CJK UNIFIED IDEOGRAPH - 0xF342: 0x8B52, //CJK UNIFIED IDEOGRAPH - 0xF343: 0x8B57, //CJK UNIFIED IDEOGRAPH - 0xF344: 0x8C43, //CJK UNIFIED IDEOGRAPH - 0xF345: 0x8C77, //CJK UNIFIED IDEOGRAPH - 0xF346: 0x8C76, //CJK UNIFIED IDEOGRAPH - 0xF347: 0x8C9A, //CJK UNIFIED IDEOGRAPH - 0xF348: 0x8D06, //CJK UNIFIED IDEOGRAPH - 0xF349: 0x8D07, //CJK UNIFIED IDEOGRAPH - 0xF34A: 0x8D09, //CJK UNIFIED IDEOGRAPH - 0xF34B: 0x8DAC, //CJK UNIFIED IDEOGRAPH - 0xF34C: 0x8DAA, //CJK UNIFIED IDEOGRAPH - 0xF34D: 0x8DAD, //CJK UNIFIED IDEOGRAPH - 0xF34E: 0x8DAB, //CJK UNIFIED IDEOGRAPH - 0xF34F: 0x8E6D, //CJK UNIFIED IDEOGRAPH - 0xF350: 0x8E78, //CJK UNIFIED IDEOGRAPH - 0xF351: 0x8E73, //CJK UNIFIED IDEOGRAPH - 0xF352: 0x8E6A, //CJK UNIFIED IDEOGRAPH - 0xF353: 0x8E6F, //CJK UNIFIED IDEOGRAPH - 0xF354: 0x8E7B, //CJK UNIFIED IDEOGRAPH - 0xF355: 0x8EC2, //CJK UNIFIED IDEOGRAPH - 0xF356: 0x8F52, //CJK UNIFIED IDEOGRAPH - 0xF357: 0x8F51, //CJK UNIFIED IDEOGRAPH - 0xF358: 0x8F4F, //CJK UNIFIED IDEOGRAPH - 0xF359: 0x8F50, //CJK UNIFIED IDEOGRAPH - 0xF35A: 0x8F53, //CJK UNIFIED IDEOGRAPH - 0xF35B: 0x8FB4, //CJK UNIFIED IDEOGRAPH - 0xF35C: 0x9140, //CJK UNIFIED IDEOGRAPH - 0xF35D: 0x913F, //CJK UNIFIED IDEOGRAPH - 0xF35E: 0x91B0, //CJK UNIFIED IDEOGRAPH - 0xF35F: 0x91AD, //CJK UNIFIED IDEOGRAPH - 0xF360: 0x93DE, //CJK UNIFIED IDEOGRAPH - 0xF361: 0x93C7, //CJK UNIFIED IDEOGRAPH - 0xF362: 0x93CF, //CJK UNIFIED IDEOGRAPH - 0xF363: 0x93C2, //CJK UNIFIED IDEOGRAPH - 0xF364: 0x93DA, //CJK UNIFIED IDEOGRAPH - 0xF365: 0x93D0, //CJK UNIFIED IDEOGRAPH - 0xF366: 0x93F9, //CJK UNIFIED IDEOGRAPH - 0xF367: 0x93EC, //CJK UNIFIED IDEOGRAPH - 0xF368: 0x93CC, //CJK UNIFIED IDEOGRAPH - 0xF369: 0x93D9, //CJK UNIFIED IDEOGRAPH - 0xF36A: 0x93A9, //CJK UNIFIED IDEOGRAPH - 0xF36B: 0x93E6, //CJK UNIFIED IDEOGRAPH - 0xF36C: 0x93CA, //CJK UNIFIED IDEOGRAPH - 0xF36D: 0x93D4, //CJK UNIFIED IDEOGRAPH - 0xF36E: 0x93EE, //CJK UNIFIED IDEOGRAPH - 0xF36F: 0x93E3, //CJK UNIFIED IDEOGRAPH - 0xF370: 0x93D5, //CJK UNIFIED IDEOGRAPH - 0xF371: 0x93C4, //CJK UNIFIED IDEOGRAPH - 0xF372: 0x93CE, //CJK UNIFIED IDEOGRAPH - 0xF373: 0x93C0, //CJK UNIFIED IDEOGRAPH - 0xF374: 0x93D2, //CJK UNIFIED IDEOGRAPH - 0xF375: 0x93E7, //CJK UNIFIED IDEOGRAPH - 0xF376: 0x957D, //CJK UNIFIED IDEOGRAPH - 0xF377: 0x95DA, //CJK UNIFIED IDEOGRAPH - 0xF378: 0x95DB, //CJK UNIFIED IDEOGRAPH - 0xF379: 0x96E1, //CJK UNIFIED IDEOGRAPH - 0xF37A: 0x9729, //CJK UNIFIED IDEOGRAPH - 0xF37B: 0x972B, //CJK UNIFIED IDEOGRAPH - 0xF37C: 0x972C, //CJK UNIFIED IDEOGRAPH - 0xF37D: 0x9728, //CJK UNIFIED IDEOGRAPH - 0xF37E: 0x9726, //CJK UNIFIED IDEOGRAPH - 0xF3A1: 0x97B3, //CJK UNIFIED IDEOGRAPH - 0xF3A2: 0x97B7, //CJK UNIFIED IDEOGRAPH - 0xF3A3: 0x97B6, //CJK UNIFIED IDEOGRAPH - 0xF3A4: 0x97DD, //CJK UNIFIED IDEOGRAPH - 0xF3A5: 0x97DE, //CJK UNIFIED IDEOGRAPH - 0xF3A6: 0x97DF, //CJK UNIFIED IDEOGRAPH - 0xF3A7: 0x985C, //CJK UNIFIED IDEOGRAPH - 0xF3A8: 0x9859, //CJK UNIFIED IDEOGRAPH - 0xF3A9: 0x985D, //CJK UNIFIED IDEOGRAPH - 0xF3AA: 0x9857, //CJK UNIFIED IDEOGRAPH - 0xF3AB: 0x98BF, //CJK UNIFIED IDEOGRAPH - 0xF3AC: 0x98BD, //CJK UNIFIED IDEOGRAPH - 0xF3AD: 0x98BB, //CJK UNIFIED IDEOGRAPH - 0xF3AE: 0x98BE, //CJK UNIFIED IDEOGRAPH - 0xF3AF: 0x9948, //CJK UNIFIED IDEOGRAPH - 0xF3B0: 0x9947, //CJK UNIFIED IDEOGRAPH - 0xF3B1: 0x9943, //CJK UNIFIED IDEOGRAPH - 0xF3B2: 0x99A6, //CJK UNIFIED IDEOGRAPH - 0xF3B3: 0x99A7, //CJK UNIFIED IDEOGRAPH - 0xF3B4: 0x9A1A, //CJK UNIFIED IDEOGRAPH - 0xF3B5: 0x9A15, //CJK UNIFIED IDEOGRAPH - 0xF3B6: 0x9A25, //CJK UNIFIED IDEOGRAPH - 0xF3B7: 0x9A1D, //CJK UNIFIED IDEOGRAPH - 0xF3B8: 0x9A24, //CJK UNIFIED IDEOGRAPH - 0xF3B9: 0x9A1B, //CJK UNIFIED IDEOGRAPH - 0xF3BA: 0x9A22, //CJK UNIFIED IDEOGRAPH - 0xF3BB: 0x9A20, //CJK UNIFIED IDEOGRAPH - 0xF3BC: 0x9A27, //CJK UNIFIED IDEOGRAPH - 0xF3BD: 0x9A23, //CJK UNIFIED IDEOGRAPH - 0xF3BE: 0x9A1E, //CJK UNIFIED IDEOGRAPH - 0xF3BF: 0x9A1C, //CJK UNIFIED IDEOGRAPH - 0xF3C0: 0x9A14, //CJK UNIFIED IDEOGRAPH - 0xF3C1: 0x9AC2, //CJK UNIFIED IDEOGRAPH - 0xF3C2: 0x9B0B, //CJK UNIFIED IDEOGRAPH - 0xF3C3: 0x9B0A, //CJK UNIFIED IDEOGRAPH - 0xF3C4: 0x9B0E, //CJK UNIFIED IDEOGRAPH - 0xF3C5: 0x9B0C, //CJK UNIFIED IDEOGRAPH - 0xF3C6: 0x9B37, //CJK UNIFIED IDEOGRAPH - 0xF3C7: 0x9BEA, //CJK UNIFIED IDEOGRAPH - 0xF3C8: 0x9BEB, //CJK UNIFIED IDEOGRAPH - 0xF3C9: 0x9BE0, //CJK UNIFIED IDEOGRAPH - 0xF3CA: 0x9BDE, //CJK UNIFIED IDEOGRAPH - 0xF3CB: 0x9BE4, //CJK UNIFIED IDEOGRAPH - 0xF3CC: 0x9BE6, //CJK UNIFIED IDEOGRAPH - 0xF3CD: 0x9BE2, //CJK UNIFIED IDEOGRAPH - 0xF3CE: 0x9BF0, //CJK UNIFIED IDEOGRAPH - 0xF3CF: 0x9BD4, //CJK UNIFIED IDEOGRAPH - 0xF3D0: 0x9BD7, //CJK UNIFIED IDEOGRAPH - 0xF3D1: 0x9BEC, //CJK UNIFIED IDEOGRAPH - 0xF3D2: 0x9BDC, //CJK UNIFIED IDEOGRAPH - 0xF3D3: 0x9BD9, //CJK UNIFIED IDEOGRAPH - 0xF3D4: 0x9BE5, //CJK UNIFIED IDEOGRAPH - 0xF3D5: 0x9BD5, //CJK UNIFIED IDEOGRAPH - 0xF3D6: 0x9BE1, //CJK UNIFIED IDEOGRAPH - 0xF3D7: 0x9BDA, //CJK UNIFIED IDEOGRAPH - 0xF3D8: 0x9D77, //CJK UNIFIED IDEOGRAPH - 0xF3D9: 0x9D81, //CJK UNIFIED IDEOGRAPH - 0xF3DA: 0x9D8A, //CJK UNIFIED IDEOGRAPH - 0xF3DB: 0x9D84, //CJK UNIFIED IDEOGRAPH - 0xF3DC: 0x9D88, //CJK UNIFIED IDEOGRAPH - 0xF3DD: 0x9D71, //CJK UNIFIED IDEOGRAPH - 0xF3DE: 0x9D80, //CJK UNIFIED IDEOGRAPH - 0xF3DF: 0x9D78, //CJK UNIFIED IDEOGRAPH - 0xF3E0: 0x9D86, //CJK UNIFIED IDEOGRAPH - 0xF3E1: 0x9D8B, //CJK UNIFIED IDEOGRAPH - 0xF3E2: 0x9D8C, //CJK UNIFIED IDEOGRAPH - 0xF3E3: 0x9D7D, //CJK UNIFIED IDEOGRAPH - 0xF3E4: 0x9D6B, //CJK UNIFIED IDEOGRAPH - 0xF3E5: 0x9D74, //CJK UNIFIED IDEOGRAPH - 0xF3E6: 0x9D75, //CJK UNIFIED IDEOGRAPH - 0xF3E7: 0x9D70, //CJK UNIFIED IDEOGRAPH - 0xF3E8: 0x9D69, //CJK UNIFIED IDEOGRAPH - 0xF3E9: 0x9D85, //CJK UNIFIED IDEOGRAPH - 0xF3EA: 0x9D73, //CJK UNIFIED IDEOGRAPH - 0xF3EB: 0x9D7B, //CJK UNIFIED IDEOGRAPH - 0xF3EC: 0x9D82, //CJK UNIFIED IDEOGRAPH - 0xF3ED: 0x9D6F, //CJK UNIFIED IDEOGRAPH - 0xF3EE: 0x9D79, //CJK UNIFIED IDEOGRAPH - 0xF3EF: 0x9D7F, //CJK UNIFIED IDEOGRAPH - 0xF3F0: 0x9D87, //CJK UNIFIED IDEOGRAPH - 0xF3F1: 0x9D68, //CJK UNIFIED IDEOGRAPH - 0xF3F2: 0x9E94, //CJK UNIFIED IDEOGRAPH - 0xF3F3: 0x9E91, //CJK UNIFIED IDEOGRAPH - 0xF3F4: 0x9EC0, //CJK UNIFIED IDEOGRAPH - 0xF3F5: 0x9EFC, //CJK UNIFIED IDEOGRAPH - 0xF3F6: 0x9F2D, //CJK UNIFIED IDEOGRAPH - 0xF3F7: 0x9F40, //CJK UNIFIED IDEOGRAPH - 0xF3F8: 0x9F41, //CJK UNIFIED IDEOGRAPH - 0xF3F9: 0x9F4D, //CJK UNIFIED IDEOGRAPH - 0xF3FA: 0x9F56, //CJK UNIFIED IDEOGRAPH - 0xF3FB: 0x9F57, //CJK UNIFIED IDEOGRAPH - 0xF3FC: 0x9F58, //CJK UNIFIED IDEOGRAPH - 0xF3FD: 0x5337, //CJK UNIFIED IDEOGRAPH - 0xF3FE: 0x56B2, //CJK UNIFIED IDEOGRAPH - 0xF440: 0x56B5, //CJK UNIFIED IDEOGRAPH - 0xF441: 0x56B3, //CJK UNIFIED IDEOGRAPH - 0xF442: 0x58E3, //CJK UNIFIED IDEOGRAPH - 0xF443: 0x5B45, //CJK UNIFIED IDEOGRAPH - 0xF444: 0x5DC6, //CJK UNIFIED IDEOGRAPH - 0xF445: 0x5DC7, //CJK UNIFIED IDEOGRAPH - 0xF446: 0x5EEE, //CJK UNIFIED IDEOGRAPH - 0xF447: 0x5EEF, //CJK UNIFIED IDEOGRAPH - 0xF448: 0x5FC0, //CJK UNIFIED IDEOGRAPH - 0xF449: 0x5FC1, //CJK UNIFIED IDEOGRAPH - 0xF44A: 0x61F9, //CJK UNIFIED IDEOGRAPH - 0xF44B: 0x6517, //CJK UNIFIED IDEOGRAPH - 0xF44C: 0x6516, //CJK UNIFIED IDEOGRAPH - 0xF44D: 0x6515, //CJK UNIFIED IDEOGRAPH - 0xF44E: 0x6513, //CJK UNIFIED IDEOGRAPH - 0xF44F: 0x65DF, //CJK UNIFIED IDEOGRAPH - 0xF450: 0x66E8, //CJK UNIFIED IDEOGRAPH - 0xF451: 0x66E3, //CJK UNIFIED IDEOGRAPH - 0xF452: 0x66E4, //CJK UNIFIED IDEOGRAPH - 0xF453: 0x6AF3, //CJK UNIFIED IDEOGRAPH - 0xF454: 0x6AF0, //CJK UNIFIED IDEOGRAPH - 0xF455: 0x6AEA, //CJK UNIFIED IDEOGRAPH - 0xF456: 0x6AE8, //CJK UNIFIED IDEOGRAPH - 0xF457: 0x6AF9, //CJK UNIFIED IDEOGRAPH - 0xF458: 0x6AF1, //CJK UNIFIED IDEOGRAPH - 0xF459: 0x6AEE, //CJK UNIFIED IDEOGRAPH - 0xF45A: 0x6AEF, //CJK UNIFIED IDEOGRAPH - 0xF45B: 0x703C, //CJK UNIFIED IDEOGRAPH - 0xF45C: 0x7035, //CJK UNIFIED IDEOGRAPH - 0xF45D: 0x702F, //CJK UNIFIED IDEOGRAPH - 0xF45E: 0x7037, //CJK UNIFIED IDEOGRAPH - 0xF45F: 0x7034, //CJK UNIFIED IDEOGRAPH - 0xF460: 0x7031, //CJK UNIFIED IDEOGRAPH - 0xF461: 0x7042, //CJK UNIFIED IDEOGRAPH - 0xF462: 0x7038, //CJK UNIFIED IDEOGRAPH - 0xF463: 0x703F, //CJK UNIFIED IDEOGRAPH - 0xF464: 0x703A, //CJK UNIFIED IDEOGRAPH - 0xF465: 0x7039, //CJK UNIFIED IDEOGRAPH - 0xF466: 0x7040, //CJK UNIFIED IDEOGRAPH - 0xF467: 0x703B, //CJK UNIFIED IDEOGRAPH - 0xF468: 0x7033, //CJK UNIFIED IDEOGRAPH - 0xF469: 0x7041, //CJK UNIFIED IDEOGRAPH - 0xF46A: 0x7213, //CJK UNIFIED IDEOGRAPH - 0xF46B: 0x7214, //CJK UNIFIED IDEOGRAPH - 0xF46C: 0x72A8, //CJK UNIFIED IDEOGRAPH - 0xF46D: 0x737D, //CJK UNIFIED IDEOGRAPH - 0xF46E: 0x737C, //CJK UNIFIED IDEOGRAPH - 0xF46F: 0x74BA, //CJK UNIFIED IDEOGRAPH - 0xF470: 0x76AB, //CJK UNIFIED IDEOGRAPH - 0xF471: 0x76AA, //CJK UNIFIED IDEOGRAPH - 0xF472: 0x76BE, //CJK UNIFIED IDEOGRAPH - 0xF473: 0x76ED, //CJK UNIFIED IDEOGRAPH - 0xF474: 0x77CC, //CJK UNIFIED IDEOGRAPH - 0xF475: 0x77CE, //CJK UNIFIED IDEOGRAPH - 0xF476: 0x77CF, //CJK UNIFIED IDEOGRAPH - 0xF477: 0x77CD, //CJK UNIFIED IDEOGRAPH - 0xF478: 0x77F2, //CJK UNIFIED IDEOGRAPH - 0xF479: 0x7925, //CJK UNIFIED IDEOGRAPH - 0xF47A: 0x7923, //CJK UNIFIED IDEOGRAPH - 0xF47B: 0x7927, //CJK UNIFIED IDEOGRAPH - 0xF47C: 0x7928, //CJK UNIFIED IDEOGRAPH - 0xF47D: 0x7924, //CJK UNIFIED IDEOGRAPH - 0xF47E: 0x7929, //CJK UNIFIED IDEOGRAPH - 0xF4A1: 0x79B2, //CJK UNIFIED IDEOGRAPH - 0xF4A2: 0x7A6E, //CJK UNIFIED IDEOGRAPH - 0xF4A3: 0x7A6C, //CJK UNIFIED IDEOGRAPH - 0xF4A4: 0x7A6D, //CJK UNIFIED IDEOGRAPH - 0xF4A5: 0x7AF7, //CJK UNIFIED IDEOGRAPH - 0xF4A6: 0x7C49, //CJK UNIFIED IDEOGRAPH - 0xF4A7: 0x7C48, //CJK UNIFIED IDEOGRAPH - 0xF4A8: 0x7C4A, //CJK UNIFIED IDEOGRAPH - 0xF4A9: 0x7C47, //CJK UNIFIED IDEOGRAPH - 0xF4AA: 0x7C45, //CJK UNIFIED IDEOGRAPH - 0xF4AB: 0x7CEE, //CJK UNIFIED IDEOGRAPH - 0xF4AC: 0x7E7B, //CJK UNIFIED IDEOGRAPH - 0xF4AD: 0x7E7E, //CJK UNIFIED IDEOGRAPH - 0xF4AE: 0x7E81, //CJK UNIFIED IDEOGRAPH - 0xF4AF: 0x7E80, //CJK UNIFIED IDEOGRAPH - 0xF4B0: 0x7FBA, //CJK UNIFIED IDEOGRAPH - 0xF4B1: 0x7FFF, //CJK UNIFIED IDEOGRAPH - 0xF4B2: 0x8079, //CJK UNIFIED IDEOGRAPH - 0xF4B3: 0x81DB, //CJK UNIFIED IDEOGRAPH - 0xF4B4: 0x81D9, //CJK UNIFIED IDEOGRAPH - 0xF4B5: 0x820B, //CJK UNIFIED IDEOGRAPH - 0xF4B6: 0x8268, //CJK UNIFIED IDEOGRAPH - 0xF4B7: 0x8269, //CJK UNIFIED IDEOGRAPH - 0xF4B8: 0x8622, //CJK UNIFIED IDEOGRAPH - 0xF4B9: 0x85FF, //CJK UNIFIED IDEOGRAPH - 0xF4BA: 0x8601, //CJK UNIFIED IDEOGRAPH - 0xF4BB: 0x85FE, //CJK UNIFIED IDEOGRAPH - 0xF4BC: 0x861B, //CJK UNIFIED IDEOGRAPH - 0xF4BD: 0x8600, //CJK UNIFIED IDEOGRAPH - 0xF4BE: 0x85F6, //CJK UNIFIED IDEOGRAPH - 0xF4BF: 0x8604, //CJK UNIFIED IDEOGRAPH - 0xF4C0: 0x8609, //CJK UNIFIED IDEOGRAPH - 0xF4C1: 0x8605, //CJK UNIFIED IDEOGRAPH - 0xF4C2: 0x860C, //CJK UNIFIED IDEOGRAPH - 0xF4C3: 0x85FD, //CJK UNIFIED IDEOGRAPH - 0xF4C4: 0x8819, //CJK UNIFIED IDEOGRAPH - 0xF4C5: 0x8810, //CJK UNIFIED IDEOGRAPH - 0xF4C6: 0x8811, //CJK UNIFIED IDEOGRAPH - 0xF4C7: 0x8817, //CJK UNIFIED IDEOGRAPH - 0xF4C8: 0x8813, //CJK UNIFIED IDEOGRAPH - 0xF4C9: 0x8816, //CJK UNIFIED IDEOGRAPH - 0xF4CA: 0x8963, //CJK UNIFIED IDEOGRAPH - 0xF4CB: 0x8966, //CJK UNIFIED IDEOGRAPH - 0xF4CC: 0x89B9, //CJK UNIFIED IDEOGRAPH - 0xF4CD: 0x89F7, //CJK UNIFIED IDEOGRAPH - 0xF4CE: 0x8B60, //CJK UNIFIED IDEOGRAPH - 0xF4CF: 0x8B6A, //CJK UNIFIED IDEOGRAPH - 0xF4D0: 0x8B5D, //CJK UNIFIED IDEOGRAPH - 0xF4D1: 0x8B68, //CJK UNIFIED IDEOGRAPH - 0xF4D2: 0x8B63, //CJK UNIFIED IDEOGRAPH - 0xF4D3: 0x8B65, //CJK UNIFIED IDEOGRAPH - 0xF4D4: 0x8B67, //CJK UNIFIED IDEOGRAPH - 0xF4D5: 0x8B6D, //CJK UNIFIED IDEOGRAPH - 0xF4D6: 0x8DAE, //CJK UNIFIED IDEOGRAPH - 0xF4D7: 0x8E86, //CJK UNIFIED IDEOGRAPH - 0xF4D8: 0x8E88, //CJK UNIFIED IDEOGRAPH - 0xF4D9: 0x8E84, //CJK UNIFIED IDEOGRAPH - 0xF4DA: 0x8F59, //CJK UNIFIED IDEOGRAPH - 0xF4DB: 0x8F56, //CJK UNIFIED IDEOGRAPH - 0xF4DC: 0x8F57, //CJK UNIFIED IDEOGRAPH - 0xF4DD: 0x8F55, //CJK UNIFIED IDEOGRAPH - 0xF4DE: 0x8F58, //CJK UNIFIED IDEOGRAPH - 0xF4DF: 0x8F5A, //CJK UNIFIED IDEOGRAPH - 0xF4E0: 0x908D, //CJK UNIFIED IDEOGRAPH - 0xF4E1: 0x9143, //CJK UNIFIED IDEOGRAPH - 0xF4E2: 0x9141, //CJK UNIFIED IDEOGRAPH - 0xF4E3: 0x91B7, //CJK UNIFIED IDEOGRAPH - 0xF4E4: 0x91B5, //CJK UNIFIED IDEOGRAPH - 0xF4E5: 0x91B2, //CJK UNIFIED IDEOGRAPH - 0xF4E6: 0x91B3, //CJK UNIFIED IDEOGRAPH - 0xF4E7: 0x940B, //CJK UNIFIED IDEOGRAPH - 0xF4E8: 0x9413, //CJK UNIFIED IDEOGRAPH - 0xF4E9: 0x93FB, //CJK UNIFIED IDEOGRAPH - 0xF4EA: 0x9420, //CJK UNIFIED IDEOGRAPH - 0xF4EB: 0x940F, //CJK UNIFIED IDEOGRAPH - 0xF4EC: 0x9414, //CJK UNIFIED IDEOGRAPH - 0xF4ED: 0x93FE, //CJK UNIFIED IDEOGRAPH - 0xF4EE: 0x9415, //CJK UNIFIED IDEOGRAPH - 0xF4EF: 0x9410, //CJK UNIFIED IDEOGRAPH - 0xF4F0: 0x9428, //CJK UNIFIED IDEOGRAPH - 0xF4F1: 0x9419, //CJK UNIFIED IDEOGRAPH - 0xF4F2: 0x940D, //CJK UNIFIED IDEOGRAPH - 0xF4F3: 0x93F5, //CJK UNIFIED IDEOGRAPH - 0xF4F4: 0x9400, //CJK UNIFIED IDEOGRAPH - 0xF4F5: 0x93F7, //CJK UNIFIED IDEOGRAPH - 0xF4F6: 0x9407, //CJK UNIFIED IDEOGRAPH - 0xF4F7: 0x940E, //CJK UNIFIED IDEOGRAPH - 0xF4F8: 0x9416, //CJK UNIFIED IDEOGRAPH - 0xF4F9: 0x9412, //CJK UNIFIED IDEOGRAPH - 0xF4FA: 0x93FA, //CJK UNIFIED IDEOGRAPH - 0xF4FB: 0x9409, //CJK UNIFIED IDEOGRAPH - 0xF4FC: 0x93F8, //CJK UNIFIED IDEOGRAPH - 0xF4FD: 0x940A, //CJK UNIFIED IDEOGRAPH - 0xF4FE: 0x93FF, //CJK UNIFIED IDEOGRAPH - 0xF540: 0x93FC, //CJK UNIFIED IDEOGRAPH - 0xF541: 0x940C, //CJK UNIFIED IDEOGRAPH - 0xF542: 0x93F6, //CJK UNIFIED IDEOGRAPH - 0xF543: 0x9411, //CJK UNIFIED IDEOGRAPH - 0xF544: 0x9406, //CJK UNIFIED IDEOGRAPH - 0xF545: 0x95DE, //CJK UNIFIED IDEOGRAPH - 0xF546: 0x95E0, //CJK UNIFIED IDEOGRAPH - 0xF547: 0x95DF, //CJK UNIFIED IDEOGRAPH - 0xF548: 0x972E, //CJK UNIFIED IDEOGRAPH - 0xF549: 0x972F, //CJK UNIFIED IDEOGRAPH - 0xF54A: 0x97B9, //CJK UNIFIED IDEOGRAPH - 0xF54B: 0x97BB, //CJK UNIFIED IDEOGRAPH - 0xF54C: 0x97FD, //CJK UNIFIED IDEOGRAPH - 0xF54D: 0x97FE, //CJK UNIFIED IDEOGRAPH - 0xF54E: 0x9860, //CJK UNIFIED IDEOGRAPH - 0xF54F: 0x9862, //CJK UNIFIED IDEOGRAPH - 0xF550: 0x9863, //CJK UNIFIED IDEOGRAPH - 0xF551: 0x985F, //CJK UNIFIED IDEOGRAPH - 0xF552: 0x98C1, //CJK UNIFIED IDEOGRAPH - 0xF553: 0x98C2, //CJK UNIFIED IDEOGRAPH - 0xF554: 0x9950, //CJK UNIFIED IDEOGRAPH - 0xF555: 0x994E, //CJK UNIFIED IDEOGRAPH - 0xF556: 0x9959, //CJK UNIFIED IDEOGRAPH - 0xF557: 0x994C, //CJK UNIFIED IDEOGRAPH - 0xF558: 0x994B, //CJK UNIFIED IDEOGRAPH - 0xF559: 0x9953, //CJK UNIFIED IDEOGRAPH - 0xF55A: 0x9A32, //CJK UNIFIED IDEOGRAPH - 0xF55B: 0x9A34, //CJK UNIFIED IDEOGRAPH - 0xF55C: 0x9A31, //CJK UNIFIED IDEOGRAPH - 0xF55D: 0x9A2C, //CJK UNIFIED IDEOGRAPH - 0xF55E: 0x9A2A, //CJK UNIFIED IDEOGRAPH - 0xF55F: 0x9A36, //CJK UNIFIED IDEOGRAPH - 0xF560: 0x9A29, //CJK UNIFIED IDEOGRAPH - 0xF561: 0x9A2E, //CJK UNIFIED IDEOGRAPH - 0xF562: 0x9A38, //CJK UNIFIED IDEOGRAPH - 0xF563: 0x9A2D, //CJK UNIFIED IDEOGRAPH - 0xF564: 0x9AC7, //CJK UNIFIED IDEOGRAPH - 0xF565: 0x9ACA, //CJK UNIFIED IDEOGRAPH - 0xF566: 0x9AC6, //CJK UNIFIED IDEOGRAPH - 0xF567: 0x9B10, //CJK UNIFIED IDEOGRAPH - 0xF568: 0x9B12, //CJK UNIFIED IDEOGRAPH - 0xF569: 0x9B11, //CJK UNIFIED IDEOGRAPH - 0xF56A: 0x9C0B, //CJK UNIFIED IDEOGRAPH - 0xF56B: 0x9C08, //CJK UNIFIED IDEOGRAPH - 0xF56C: 0x9BF7, //CJK UNIFIED IDEOGRAPH - 0xF56D: 0x9C05, //CJK UNIFIED IDEOGRAPH - 0xF56E: 0x9C12, //CJK UNIFIED IDEOGRAPH - 0xF56F: 0x9BF8, //CJK UNIFIED IDEOGRAPH - 0xF570: 0x9C40, //CJK UNIFIED IDEOGRAPH - 0xF571: 0x9C07, //CJK UNIFIED IDEOGRAPH - 0xF572: 0x9C0E, //CJK UNIFIED IDEOGRAPH - 0xF573: 0x9C06, //CJK UNIFIED IDEOGRAPH - 0xF574: 0x9C17, //CJK UNIFIED IDEOGRAPH - 0xF575: 0x9C14, //CJK UNIFIED IDEOGRAPH - 0xF576: 0x9C09, //CJK UNIFIED IDEOGRAPH - 0xF577: 0x9D9F, //CJK UNIFIED IDEOGRAPH - 0xF578: 0x9D99, //CJK UNIFIED IDEOGRAPH - 0xF579: 0x9DA4, //CJK UNIFIED IDEOGRAPH - 0xF57A: 0x9D9D, //CJK UNIFIED IDEOGRAPH - 0xF57B: 0x9D92, //CJK UNIFIED IDEOGRAPH - 0xF57C: 0x9D98, //CJK UNIFIED IDEOGRAPH - 0xF57D: 0x9D90, //CJK UNIFIED IDEOGRAPH - 0xF57E: 0x9D9B, //CJK UNIFIED IDEOGRAPH - 0xF5A1: 0x9DA0, //CJK UNIFIED IDEOGRAPH - 0xF5A2: 0x9D94, //CJK UNIFIED IDEOGRAPH - 0xF5A3: 0x9D9C, //CJK UNIFIED IDEOGRAPH - 0xF5A4: 0x9DAA, //CJK UNIFIED IDEOGRAPH - 0xF5A5: 0x9D97, //CJK UNIFIED IDEOGRAPH - 0xF5A6: 0x9DA1, //CJK UNIFIED IDEOGRAPH - 0xF5A7: 0x9D9A, //CJK UNIFIED IDEOGRAPH - 0xF5A8: 0x9DA2, //CJK UNIFIED IDEOGRAPH - 0xF5A9: 0x9DA8, //CJK UNIFIED IDEOGRAPH - 0xF5AA: 0x9D9E, //CJK UNIFIED IDEOGRAPH - 0xF5AB: 0x9DA3, //CJK UNIFIED IDEOGRAPH - 0xF5AC: 0x9DBF, //CJK UNIFIED IDEOGRAPH - 0xF5AD: 0x9DA9, //CJK UNIFIED IDEOGRAPH - 0xF5AE: 0x9D96, //CJK UNIFIED IDEOGRAPH - 0xF5AF: 0x9DA6, //CJK UNIFIED IDEOGRAPH - 0xF5B0: 0x9DA7, //CJK UNIFIED IDEOGRAPH - 0xF5B1: 0x9E99, //CJK UNIFIED IDEOGRAPH - 0xF5B2: 0x9E9B, //CJK UNIFIED IDEOGRAPH - 0xF5B3: 0x9E9A, //CJK UNIFIED IDEOGRAPH - 0xF5B4: 0x9EE5, //CJK UNIFIED IDEOGRAPH - 0xF5B5: 0x9EE4, //CJK UNIFIED IDEOGRAPH - 0xF5B6: 0x9EE7, //CJK UNIFIED IDEOGRAPH - 0xF5B7: 0x9EE6, //CJK UNIFIED IDEOGRAPH - 0xF5B8: 0x9F30, //CJK UNIFIED IDEOGRAPH - 0xF5B9: 0x9F2E, //CJK UNIFIED IDEOGRAPH - 0xF5BA: 0x9F5B, //CJK UNIFIED IDEOGRAPH - 0xF5BB: 0x9F60, //CJK UNIFIED IDEOGRAPH - 0xF5BC: 0x9F5E, //CJK UNIFIED IDEOGRAPH - 0xF5BD: 0x9F5D, //CJK UNIFIED IDEOGRAPH - 0xF5BE: 0x9F59, //CJK UNIFIED IDEOGRAPH - 0xF5BF: 0x9F91, //CJK UNIFIED IDEOGRAPH - 0xF5C0: 0x513A, //CJK UNIFIED IDEOGRAPH - 0xF5C1: 0x5139, //CJK UNIFIED IDEOGRAPH - 0xF5C2: 0x5298, //CJK UNIFIED IDEOGRAPH - 0xF5C3: 0x5297, //CJK UNIFIED IDEOGRAPH - 0xF5C4: 0x56C3, //CJK UNIFIED IDEOGRAPH - 0xF5C5: 0x56BD, //CJK UNIFIED IDEOGRAPH - 0xF5C6: 0x56BE, //CJK UNIFIED IDEOGRAPH - 0xF5C7: 0x5B48, //CJK UNIFIED IDEOGRAPH - 0xF5C8: 0x5B47, //CJK UNIFIED IDEOGRAPH - 0xF5C9: 0x5DCB, //CJK UNIFIED IDEOGRAPH - 0xF5CA: 0x5DCF, //CJK UNIFIED IDEOGRAPH - 0xF5CB: 0x5EF1, //CJK UNIFIED IDEOGRAPH - 0xF5CC: 0x61FD, //CJK UNIFIED IDEOGRAPH - 0xF5CD: 0x651B, //CJK UNIFIED IDEOGRAPH - 0xF5CE: 0x6B02, //CJK UNIFIED IDEOGRAPH - 0xF5CF: 0x6AFC, //CJK UNIFIED IDEOGRAPH - 0xF5D0: 0x6B03, //CJK UNIFIED IDEOGRAPH - 0xF5D1: 0x6AF8, //CJK UNIFIED IDEOGRAPH - 0xF5D2: 0x6B00, //CJK UNIFIED IDEOGRAPH - 0xF5D3: 0x7043, //CJK UNIFIED IDEOGRAPH - 0xF5D4: 0x7044, //CJK UNIFIED IDEOGRAPH - 0xF5D5: 0x704A, //CJK UNIFIED IDEOGRAPH - 0xF5D6: 0x7048, //CJK UNIFIED IDEOGRAPH - 0xF5D7: 0x7049, //CJK UNIFIED IDEOGRAPH - 0xF5D8: 0x7045, //CJK UNIFIED IDEOGRAPH - 0xF5D9: 0x7046, //CJK UNIFIED IDEOGRAPH - 0xF5DA: 0x721D, //CJK UNIFIED IDEOGRAPH - 0xF5DB: 0x721A, //CJK UNIFIED IDEOGRAPH - 0xF5DC: 0x7219, //CJK UNIFIED IDEOGRAPH - 0xF5DD: 0x737E, //CJK UNIFIED IDEOGRAPH - 0xF5DE: 0x7517, //CJK UNIFIED IDEOGRAPH - 0xF5DF: 0x766A, //CJK UNIFIED IDEOGRAPH - 0xF5E0: 0x77D0, //CJK UNIFIED IDEOGRAPH - 0xF5E1: 0x792D, //CJK UNIFIED IDEOGRAPH - 0xF5E2: 0x7931, //CJK UNIFIED IDEOGRAPH - 0xF5E3: 0x792F, //CJK UNIFIED IDEOGRAPH - 0xF5E4: 0x7C54, //CJK UNIFIED IDEOGRAPH - 0xF5E5: 0x7C53, //CJK UNIFIED IDEOGRAPH - 0xF5E6: 0x7CF2, //CJK UNIFIED IDEOGRAPH - 0xF5E7: 0x7E8A, //CJK UNIFIED IDEOGRAPH - 0xF5E8: 0x7E87, //CJK UNIFIED IDEOGRAPH - 0xF5E9: 0x7E88, //CJK UNIFIED IDEOGRAPH - 0xF5EA: 0x7E8B, //CJK UNIFIED IDEOGRAPH - 0xF5EB: 0x7E86, //CJK UNIFIED IDEOGRAPH - 0xF5EC: 0x7E8D, //CJK UNIFIED IDEOGRAPH - 0xF5ED: 0x7F4D, //CJK UNIFIED IDEOGRAPH - 0xF5EE: 0x7FBB, //CJK UNIFIED IDEOGRAPH - 0xF5EF: 0x8030, //CJK UNIFIED IDEOGRAPH - 0xF5F0: 0x81DD, //CJK UNIFIED IDEOGRAPH - 0xF5F1: 0x8618, //CJK UNIFIED IDEOGRAPH - 0xF5F2: 0x862A, //CJK UNIFIED IDEOGRAPH - 0xF5F3: 0x8626, //CJK UNIFIED IDEOGRAPH - 0xF5F4: 0x861F, //CJK UNIFIED IDEOGRAPH - 0xF5F5: 0x8623, //CJK UNIFIED IDEOGRAPH - 0xF5F6: 0x861C, //CJK UNIFIED IDEOGRAPH - 0xF5F7: 0x8619, //CJK UNIFIED IDEOGRAPH - 0xF5F8: 0x8627, //CJK UNIFIED IDEOGRAPH - 0xF5F9: 0x862E, //CJK UNIFIED IDEOGRAPH - 0xF5FA: 0x8621, //CJK UNIFIED IDEOGRAPH - 0xF5FB: 0x8620, //CJK UNIFIED IDEOGRAPH - 0xF5FC: 0x8629, //CJK UNIFIED IDEOGRAPH - 0xF5FD: 0x861E, //CJK UNIFIED IDEOGRAPH - 0xF5FE: 0x8625, //CJK UNIFIED IDEOGRAPH - 0xF640: 0x8829, //CJK UNIFIED IDEOGRAPH - 0xF641: 0x881D, //CJK UNIFIED IDEOGRAPH - 0xF642: 0x881B, //CJK UNIFIED IDEOGRAPH - 0xF643: 0x8820, //CJK UNIFIED IDEOGRAPH - 0xF644: 0x8824, //CJK UNIFIED IDEOGRAPH - 0xF645: 0x881C, //CJK UNIFIED IDEOGRAPH - 0xF646: 0x882B, //CJK UNIFIED IDEOGRAPH - 0xF647: 0x884A, //CJK UNIFIED IDEOGRAPH - 0xF648: 0x896D, //CJK UNIFIED IDEOGRAPH - 0xF649: 0x8969, //CJK UNIFIED IDEOGRAPH - 0xF64A: 0x896E, //CJK UNIFIED IDEOGRAPH - 0xF64B: 0x896B, //CJK UNIFIED IDEOGRAPH - 0xF64C: 0x89FA, //CJK UNIFIED IDEOGRAPH - 0xF64D: 0x8B79, //CJK UNIFIED IDEOGRAPH - 0xF64E: 0x8B78, //CJK UNIFIED IDEOGRAPH - 0xF64F: 0x8B45, //CJK UNIFIED IDEOGRAPH - 0xF650: 0x8B7A, //CJK UNIFIED IDEOGRAPH - 0xF651: 0x8B7B, //CJK UNIFIED IDEOGRAPH - 0xF652: 0x8D10, //CJK UNIFIED IDEOGRAPH - 0xF653: 0x8D14, //CJK UNIFIED IDEOGRAPH - 0xF654: 0x8DAF, //CJK UNIFIED IDEOGRAPH - 0xF655: 0x8E8E, //CJK UNIFIED IDEOGRAPH - 0xF656: 0x8E8C, //CJK UNIFIED IDEOGRAPH - 0xF657: 0x8F5E, //CJK UNIFIED IDEOGRAPH - 0xF658: 0x8F5B, //CJK UNIFIED IDEOGRAPH - 0xF659: 0x8F5D, //CJK UNIFIED IDEOGRAPH - 0xF65A: 0x9146, //CJK UNIFIED IDEOGRAPH - 0xF65B: 0x9144, //CJK UNIFIED IDEOGRAPH - 0xF65C: 0x9145, //CJK UNIFIED IDEOGRAPH - 0xF65D: 0x91B9, //CJK UNIFIED IDEOGRAPH - 0xF65E: 0x943F, //CJK UNIFIED IDEOGRAPH - 0xF65F: 0x943B, //CJK UNIFIED IDEOGRAPH - 0xF660: 0x9436, //CJK UNIFIED IDEOGRAPH - 0xF661: 0x9429, //CJK UNIFIED IDEOGRAPH - 0xF662: 0x943D, //CJK UNIFIED IDEOGRAPH - 0xF663: 0x943C, //CJK UNIFIED IDEOGRAPH - 0xF664: 0x9430, //CJK UNIFIED IDEOGRAPH - 0xF665: 0x9439, //CJK UNIFIED IDEOGRAPH - 0xF666: 0x942A, //CJK UNIFIED IDEOGRAPH - 0xF667: 0x9437, //CJK UNIFIED IDEOGRAPH - 0xF668: 0x942C, //CJK UNIFIED IDEOGRAPH - 0xF669: 0x9440, //CJK UNIFIED IDEOGRAPH - 0xF66A: 0x9431, //CJK UNIFIED IDEOGRAPH - 0xF66B: 0x95E5, //CJK UNIFIED IDEOGRAPH - 0xF66C: 0x95E4, //CJK UNIFIED IDEOGRAPH - 0xF66D: 0x95E3, //CJK UNIFIED IDEOGRAPH - 0xF66E: 0x9735, //CJK UNIFIED IDEOGRAPH - 0xF66F: 0x973A, //CJK UNIFIED IDEOGRAPH - 0xF670: 0x97BF, //CJK UNIFIED IDEOGRAPH - 0xF671: 0x97E1, //CJK UNIFIED IDEOGRAPH - 0xF672: 0x9864, //CJK UNIFIED IDEOGRAPH - 0xF673: 0x98C9, //CJK UNIFIED IDEOGRAPH - 0xF674: 0x98C6, //CJK UNIFIED IDEOGRAPH - 0xF675: 0x98C0, //CJK UNIFIED IDEOGRAPH - 0xF676: 0x9958, //CJK UNIFIED IDEOGRAPH - 0xF677: 0x9956, //CJK UNIFIED IDEOGRAPH - 0xF678: 0x9A39, //CJK UNIFIED IDEOGRAPH - 0xF679: 0x9A3D, //CJK UNIFIED IDEOGRAPH - 0xF67A: 0x9A46, //CJK UNIFIED IDEOGRAPH - 0xF67B: 0x9A44, //CJK UNIFIED IDEOGRAPH - 0xF67C: 0x9A42, //CJK UNIFIED IDEOGRAPH - 0xF67D: 0x9A41, //CJK UNIFIED IDEOGRAPH - 0xF67E: 0x9A3A, //CJK UNIFIED IDEOGRAPH - 0xF6A1: 0x9A3F, //CJK UNIFIED IDEOGRAPH - 0xF6A2: 0x9ACD, //CJK UNIFIED IDEOGRAPH - 0xF6A3: 0x9B15, //CJK UNIFIED IDEOGRAPH - 0xF6A4: 0x9B17, //CJK UNIFIED IDEOGRAPH - 0xF6A5: 0x9B18, //CJK UNIFIED IDEOGRAPH - 0xF6A6: 0x9B16, //CJK UNIFIED IDEOGRAPH - 0xF6A7: 0x9B3A, //CJK UNIFIED IDEOGRAPH - 0xF6A8: 0x9B52, //CJK UNIFIED IDEOGRAPH - 0xF6A9: 0x9C2B, //CJK UNIFIED IDEOGRAPH - 0xF6AA: 0x9C1D, //CJK UNIFIED IDEOGRAPH - 0xF6AB: 0x9C1C, //CJK UNIFIED IDEOGRAPH - 0xF6AC: 0x9C2C, //CJK UNIFIED IDEOGRAPH - 0xF6AD: 0x9C23, //CJK UNIFIED IDEOGRAPH - 0xF6AE: 0x9C28, //CJK UNIFIED IDEOGRAPH - 0xF6AF: 0x9C29, //CJK UNIFIED IDEOGRAPH - 0xF6B0: 0x9C24, //CJK UNIFIED IDEOGRAPH - 0xF6B1: 0x9C21, //CJK UNIFIED IDEOGRAPH - 0xF6B2: 0x9DB7, //CJK UNIFIED IDEOGRAPH - 0xF6B3: 0x9DB6, //CJK UNIFIED IDEOGRAPH - 0xF6B4: 0x9DBC, //CJK UNIFIED IDEOGRAPH - 0xF6B5: 0x9DC1, //CJK UNIFIED IDEOGRAPH - 0xF6B6: 0x9DC7, //CJK UNIFIED IDEOGRAPH - 0xF6B7: 0x9DCA, //CJK UNIFIED IDEOGRAPH - 0xF6B8: 0x9DCF, //CJK UNIFIED IDEOGRAPH - 0xF6B9: 0x9DBE, //CJK UNIFIED IDEOGRAPH - 0xF6BA: 0x9DC5, //CJK UNIFIED IDEOGRAPH - 0xF6BB: 0x9DC3, //CJK UNIFIED IDEOGRAPH - 0xF6BC: 0x9DBB, //CJK UNIFIED IDEOGRAPH - 0xF6BD: 0x9DB5, //CJK UNIFIED IDEOGRAPH - 0xF6BE: 0x9DCE, //CJK UNIFIED IDEOGRAPH - 0xF6BF: 0x9DB9, //CJK UNIFIED IDEOGRAPH - 0xF6C0: 0x9DBA, //CJK UNIFIED IDEOGRAPH - 0xF6C1: 0x9DAC, //CJK UNIFIED IDEOGRAPH - 0xF6C2: 0x9DC8, //CJK UNIFIED IDEOGRAPH - 0xF6C3: 0x9DB1, //CJK UNIFIED IDEOGRAPH - 0xF6C4: 0x9DAD, //CJK UNIFIED IDEOGRAPH - 0xF6C5: 0x9DCC, //CJK UNIFIED IDEOGRAPH - 0xF6C6: 0x9DB3, //CJK UNIFIED IDEOGRAPH - 0xF6C7: 0x9DCD, //CJK UNIFIED IDEOGRAPH - 0xF6C8: 0x9DB2, //CJK UNIFIED IDEOGRAPH - 0xF6C9: 0x9E7A, //CJK UNIFIED IDEOGRAPH - 0xF6CA: 0x9E9C, //CJK UNIFIED IDEOGRAPH - 0xF6CB: 0x9EEB, //CJK UNIFIED IDEOGRAPH - 0xF6CC: 0x9EEE, //CJK UNIFIED IDEOGRAPH - 0xF6CD: 0x9EED, //CJK UNIFIED IDEOGRAPH - 0xF6CE: 0x9F1B, //CJK UNIFIED IDEOGRAPH - 0xF6CF: 0x9F18, //CJK UNIFIED IDEOGRAPH - 0xF6D0: 0x9F1A, //CJK UNIFIED IDEOGRAPH - 0xF6D1: 0x9F31, //CJK UNIFIED IDEOGRAPH - 0xF6D2: 0x9F4E, //CJK UNIFIED IDEOGRAPH - 0xF6D3: 0x9F65, //CJK UNIFIED IDEOGRAPH - 0xF6D4: 0x9F64, //CJK UNIFIED IDEOGRAPH - 0xF6D5: 0x9F92, //CJK UNIFIED IDEOGRAPH - 0xF6D6: 0x4EB9, //CJK UNIFIED IDEOGRAPH - 0xF6D7: 0x56C6, //CJK UNIFIED IDEOGRAPH - 0xF6D8: 0x56C5, //CJK UNIFIED IDEOGRAPH - 0xF6D9: 0x56CB, //CJK UNIFIED IDEOGRAPH - 0xF6DA: 0x5971, //CJK UNIFIED IDEOGRAPH - 0xF6DB: 0x5B4B, //CJK UNIFIED IDEOGRAPH - 0xF6DC: 0x5B4C, //CJK UNIFIED IDEOGRAPH - 0xF6DD: 0x5DD5, //CJK UNIFIED IDEOGRAPH - 0xF6DE: 0x5DD1, //CJK UNIFIED IDEOGRAPH - 0xF6DF: 0x5EF2, //CJK UNIFIED IDEOGRAPH - 0xF6E0: 0x6521, //CJK UNIFIED IDEOGRAPH - 0xF6E1: 0x6520, //CJK UNIFIED IDEOGRAPH - 0xF6E2: 0x6526, //CJK UNIFIED IDEOGRAPH - 0xF6E3: 0x6522, //CJK UNIFIED IDEOGRAPH - 0xF6E4: 0x6B0B, //CJK UNIFIED IDEOGRAPH - 0xF6E5: 0x6B08, //CJK UNIFIED IDEOGRAPH - 0xF6E6: 0x6B09, //CJK UNIFIED IDEOGRAPH - 0xF6E7: 0x6C0D, //CJK UNIFIED IDEOGRAPH - 0xF6E8: 0x7055, //CJK UNIFIED IDEOGRAPH - 0xF6E9: 0x7056, //CJK UNIFIED IDEOGRAPH - 0xF6EA: 0x7057, //CJK UNIFIED IDEOGRAPH - 0xF6EB: 0x7052, //CJK UNIFIED IDEOGRAPH - 0xF6EC: 0x721E, //CJK UNIFIED IDEOGRAPH - 0xF6ED: 0x721F, //CJK UNIFIED IDEOGRAPH - 0xF6EE: 0x72A9, //CJK UNIFIED IDEOGRAPH - 0xF6EF: 0x737F, //CJK UNIFIED IDEOGRAPH - 0xF6F0: 0x74D8, //CJK UNIFIED IDEOGRAPH - 0xF6F1: 0x74D5, //CJK UNIFIED IDEOGRAPH - 0xF6F2: 0x74D9, //CJK UNIFIED IDEOGRAPH - 0xF6F3: 0x74D7, //CJK UNIFIED IDEOGRAPH - 0xF6F4: 0x766D, //CJK UNIFIED IDEOGRAPH - 0xF6F5: 0x76AD, //CJK UNIFIED IDEOGRAPH - 0xF6F6: 0x7935, //CJK UNIFIED IDEOGRAPH - 0xF6F7: 0x79B4, //CJK UNIFIED IDEOGRAPH - 0xF6F8: 0x7A70, //CJK UNIFIED IDEOGRAPH - 0xF6F9: 0x7A71, //CJK UNIFIED IDEOGRAPH - 0xF6FA: 0x7C57, //CJK UNIFIED IDEOGRAPH - 0xF6FB: 0x7C5C, //CJK UNIFIED IDEOGRAPH - 0xF6FC: 0x7C59, //CJK UNIFIED IDEOGRAPH - 0xF6FD: 0x7C5B, //CJK UNIFIED IDEOGRAPH - 0xF6FE: 0x7C5A, //CJK UNIFIED IDEOGRAPH - 0xF740: 0x7CF4, //CJK UNIFIED IDEOGRAPH - 0xF741: 0x7CF1, //CJK UNIFIED IDEOGRAPH - 0xF742: 0x7E91, //CJK UNIFIED IDEOGRAPH - 0xF743: 0x7F4F, //CJK UNIFIED IDEOGRAPH - 0xF744: 0x7F87, //CJK UNIFIED IDEOGRAPH - 0xF745: 0x81DE, //CJK UNIFIED IDEOGRAPH - 0xF746: 0x826B, //CJK UNIFIED IDEOGRAPH - 0xF747: 0x8634, //CJK UNIFIED IDEOGRAPH - 0xF748: 0x8635, //CJK UNIFIED IDEOGRAPH - 0xF749: 0x8633, //CJK UNIFIED IDEOGRAPH - 0xF74A: 0x862C, //CJK UNIFIED IDEOGRAPH - 0xF74B: 0x8632, //CJK UNIFIED IDEOGRAPH - 0xF74C: 0x8636, //CJK UNIFIED IDEOGRAPH - 0xF74D: 0x882C, //CJK UNIFIED IDEOGRAPH - 0xF74E: 0x8828, //CJK UNIFIED IDEOGRAPH - 0xF74F: 0x8826, //CJK UNIFIED IDEOGRAPH - 0xF750: 0x882A, //CJK UNIFIED IDEOGRAPH - 0xF751: 0x8825, //CJK UNIFIED IDEOGRAPH - 0xF752: 0x8971, //CJK UNIFIED IDEOGRAPH - 0xF753: 0x89BF, //CJK UNIFIED IDEOGRAPH - 0xF754: 0x89BE, //CJK UNIFIED IDEOGRAPH - 0xF755: 0x89FB, //CJK UNIFIED IDEOGRAPH - 0xF756: 0x8B7E, //CJK UNIFIED IDEOGRAPH - 0xF757: 0x8B84, //CJK UNIFIED IDEOGRAPH - 0xF758: 0x8B82, //CJK UNIFIED IDEOGRAPH - 0xF759: 0x8B86, //CJK UNIFIED IDEOGRAPH - 0xF75A: 0x8B85, //CJK UNIFIED IDEOGRAPH - 0xF75B: 0x8B7F, //CJK UNIFIED IDEOGRAPH - 0xF75C: 0x8D15, //CJK UNIFIED IDEOGRAPH - 0xF75D: 0x8E95, //CJK UNIFIED IDEOGRAPH - 0xF75E: 0x8E94, //CJK UNIFIED IDEOGRAPH - 0xF75F: 0x8E9A, //CJK UNIFIED IDEOGRAPH - 0xF760: 0x8E92, //CJK UNIFIED IDEOGRAPH - 0xF761: 0x8E90, //CJK UNIFIED IDEOGRAPH - 0xF762: 0x8E96, //CJK UNIFIED IDEOGRAPH - 0xF763: 0x8E97, //CJK UNIFIED IDEOGRAPH - 0xF764: 0x8F60, //CJK UNIFIED IDEOGRAPH - 0xF765: 0x8F62, //CJK UNIFIED IDEOGRAPH - 0xF766: 0x9147, //CJK UNIFIED IDEOGRAPH - 0xF767: 0x944C, //CJK UNIFIED IDEOGRAPH - 0xF768: 0x9450, //CJK UNIFIED IDEOGRAPH - 0xF769: 0x944A, //CJK UNIFIED IDEOGRAPH - 0xF76A: 0x944B, //CJK UNIFIED IDEOGRAPH - 0xF76B: 0x944F, //CJK UNIFIED IDEOGRAPH - 0xF76C: 0x9447, //CJK UNIFIED IDEOGRAPH - 0xF76D: 0x9445, //CJK UNIFIED IDEOGRAPH - 0xF76E: 0x9448, //CJK UNIFIED IDEOGRAPH - 0xF76F: 0x9449, //CJK UNIFIED IDEOGRAPH - 0xF770: 0x9446, //CJK UNIFIED IDEOGRAPH - 0xF771: 0x973F, //CJK UNIFIED IDEOGRAPH - 0xF772: 0x97E3, //CJK UNIFIED IDEOGRAPH - 0xF773: 0x986A, //CJK UNIFIED IDEOGRAPH - 0xF774: 0x9869, //CJK UNIFIED IDEOGRAPH - 0xF775: 0x98CB, //CJK UNIFIED IDEOGRAPH - 0xF776: 0x9954, //CJK UNIFIED IDEOGRAPH - 0xF777: 0x995B, //CJK UNIFIED IDEOGRAPH - 0xF778: 0x9A4E, //CJK UNIFIED IDEOGRAPH - 0xF779: 0x9A53, //CJK UNIFIED IDEOGRAPH - 0xF77A: 0x9A54, //CJK UNIFIED IDEOGRAPH - 0xF77B: 0x9A4C, //CJK UNIFIED IDEOGRAPH - 0xF77C: 0x9A4F, //CJK UNIFIED IDEOGRAPH - 0xF77D: 0x9A48, //CJK UNIFIED IDEOGRAPH - 0xF77E: 0x9A4A, //CJK UNIFIED IDEOGRAPH - 0xF7A1: 0x9A49, //CJK UNIFIED IDEOGRAPH - 0xF7A2: 0x9A52, //CJK UNIFIED IDEOGRAPH - 0xF7A3: 0x9A50, //CJK UNIFIED IDEOGRAPH - 0xF7A4: 0x9AD0, //CJK UNIFIED IDEOGRAPH - 0xF7A5: 0x9B19, //CJK UNIFIED IDEOGRAPH - 0xF7A6: 0x9B2B, //CJK UNIFIED IDEOGRAPH - 0xF7A7: 0x9B3B, //CJK UNIFIED IDEOGRAPH - 0xF7A8: 0x9B56, //CJK UNIFIED IDEOGRAPH - 0xF7A9: 0x9B55, //CJK UNIFIED IDEOGRAPH - 0xF7AA: 0x9C46, //CJK UNIFIED IDEOGRAPH - 0xF7AB: 0x9C48, //CJK UNIFIED IDEOGRAPH - 0xF7AC: 0x9C3F, //CJK UNIFIED IDEOGRAPH - 0xF7AD: 0x9C44, //CJK UNIFIED IDEOGRAPH - 0xF7AE: 0x9C39, //CJK UNIFIED IDEOGRAPH - 0xF7AF: 0x9C33, //CJK UNIFIED IDEOGRAPH - 0xF7B0: 0x9C41, //CJK UNIFIED IDEOGRAPH - 0xF7B1: 0x9C3C, //CJK UNIFIED IDEOGRAPH - 0xF7B2: 0x9C37, //CJK UNIFIED IDEOGRAPH - 0xF7B3: 0x9C34, //CJK UNIFIED IDEOGRAPH - 0xF7B4: 0x9C32, //CJK UNIFIED IDEOGRAPH - 0xF7B5: 0x9C3D, //CJK UNIFIED IDEOGRAPH - 0xF7B6: 0x9C36, //CJK UNIFIED IDEOGRAPH - 0xF7B7: 0x9DDB, //CJK UNIFIED IDEOGRAPH - 0xF7B8: 0x9DD2, //CJK UNIFIED IDEOGRAPH - 0xF7B9: 0x9DDE, //CJK UNIFIED IDEOGRAPH - 0xF7BA: 0x9DDA, //CJK UNIFIED IDEOGRAPH - 0xF7BB: 0x9DCB, //CJK UNIFIED IDEOGRAPH - 0xF7BC: 0x9DD0, //CJK UNIFIED IDEOGRAPH - 0xF7BD: 0x9DDC, //CJK UNIFIED IDEOGRAPH - 0xF7BE: 0x9DD1, //CJK UNIFIED IDEOGRAPH - 0xF7BF: 0x9DDF, //CJK UNIFIED IDEOGRAPH - 0xF7C0: 0x9DE9, //CJK UNIFIED IDEOGRAPH - 0xF7C1: 0x9DD9, //CJK UNIFIED IDEOGRAPH - 0xF7C2: 0x9DD8, //CJK UNIFIED IDEOGRAPH - 0xF7C3: 0x9DD6, //CJK UNIFIED IDEOGRAPH - 0xF7C4: 0x9DF5, //CJK UNIFIED IDEOGRAPH - 0xF7C5: 0x9DD5, //CJK UNIFIED IDEOGRAPH - 0xF7C6: 0x9DDD, //CJK UNIFIED IDEOGRAPH - 0xF7C7: 0x9EB6, //CJK UNIFIED IDEOGRAPH - 0xF7C8: 0x9EF0, //CJK UNIFIED IDEOGRAPH - 0xF7C9: 0x9F35, //CJK UNIFIED IDEOGRAPH - 0xF7CA: 0x9F33, //CJK UNIFIED IDEOGRAPH - 0xF7CB: 0x9F32, //CJK UNIFIED IDEOGRAPH - 0xF7CC: 0x9F42, //CJK UNIFIED IDEOGRAPH - 0xF7CD: 0x9F6B, //CJK UNIFIED IDEOGRAPH - 0xF7CE: 0x9F95, //CJK UNIFIED IDEOGRAPH - 0xF7CF: 0x9FA2, //CJK UNIFIED IDEOGRAPH - 0xF7D0: 0x513D, //CJK UNIFIED IDEOGRAPH - 0xF7D1: 0x5299, //CJK UNIFIED IDEOGRAPH - 0xF7D2: 0x58E8, //CJK UNIFIED IDEOGRAPH - 0xF7D3: 0x58E7, //CJK UNIFIED IDEOGRAPH - 0xF7D4: 0x5972, //CJK UNIFIED IDEOGRAPH - 0xF7D5: 0x5B4D, //CJK UNIFIED IDEOGRAPH - 0xF7D6: 0x5DD8, //CJK UNIFIED IDEOGRAPH - 0xF7D7: 0x882F, //CJK UNIFIED IDEOGRAPH - 0xF7D8: 0x5F4F, //CJK UNIFIED IDEOGRAPH - 0xF7D9: 0x6201, //CJK UNIFIED IDEOGRAPH - 0xF7DA: 0x6203, //CJK UNIFIED IDEOGRAPH - 0xF7DB: 0x6204, //CJK UNIFIED IDEOGRAPH - 0xF7DC: 0x6529, //CJK UNIFIED IDEOGRAPH - 0xF7DD: 0x6525, //CJK UNIFIED IDEOGRAPH - 0xF7DE: 0x6596, //CJK UNIFIED IDEOGRAPH - 0xF7DF: 0x66EB, //CJK UNIFIED IDEOGRAPH - 0xF7E0: 0x6B11, //CJK UNIFIED IDEOGRAPH - 0xF7E1: 0x6B12, //CJK UNIFIED IDEOGRAPH - 0xF7E2: 0x6B0F, //CJK UNIFIED IDEOGRAPH - 0xF7E3: 0x6BCA, //CJK UNIFIED IDEOGRAPH - 0xF7E4: 0x705B, //CJK UNIFIED IDEOGRAPH - 0xF7E5: 0x705A, //CJK UNIFIED IDEOGRAPH - 0xF7E6: 0x7222, //CJK UNIFIED IDEOGRAPH - 0xF7E7: 0x7382, //CJK UNIFIED IDEOGRAPH - 0xF7E8: 0x7381, //CJK UNIFIED IDEOGRAPH - 0xF7E9: 0x7383, //CJK UNIFIED IDEOGRAPH - 0xF7EA: 0x7670, //CJK UNIFIED IDEOGRAPH - 0xF7EB: 0x77D4, //CJK UNIFIED IDEOGRAPH - 0xF7EC: 0x7C67, //CJK UNIFIED IDEOGRAPH - 0xF7ED: 0x7C66, //CJK UNIFIED IDEOGRAPH - 0xF7EE: 0x7E95, //CJK UNIFIED IDEOGRAPH - 0xF7EF: 0x826C, //CJK UNIFIED IDEOGRAPH - 0xF7F0: 0x863A, //CJK UNIFIED IDEOGRAPH - 0xF7F1: 0x8640, //CJK UNIFIED IDEOGRAPH - 0xF7F2: 0x8639, //CJK UNIFIED IDEOGRAPH - 0xF7F3: 0x863C, //CJK UNIFIED IDEOGRAPH - 0xF7F4: 0x8631, //CJK UNIFIED IDEOGRAPH - 0xF7F5: 0x863B, //CJK UNIFIED IDEOGRAPH - 0xF7F6: 0x863E, //CJK UNIFIED IDEOGRAPH - 0xF7F7: 0x8830, //CJK UNIFIED IDEOGRAPH - 0xF7F8: 0x8832, //CJK UNIFIED IDEOGRAPH - 0xF7F9: 0x882E, //CJK UNIFIED IDEOGRAPH - 0xF7FA: 0x8833, //CJK UNIFIED IDEOGRAPH - 0xF7FB: 0x8976, //CJK UNIFIED IDEOGRAPH - 0xF7FC: 0x8974, //CJK UNIFIED IDEOGRAPH - 0xF7FD: 0x8973, //CJK UNIFIED IDEOGRAPH - 0xF7FE: 0x89FE, //CJK UNIFIED IDEOGRAPH - 0xF840: 0x8B8C, //CJK UNIFIED IDEOGRAPH - 0xF841: 0x8B8E, //CJK UNIFIED IDEOGRAPH - 0xF842: 0x8B8B, //CJK UNIFIED IDEOGRAPH - 0xF843: 0x8B88, //CJK UNIFIED IDEOGRAPH - 0xF844: 0x8C45, //CJK UNIFIED IDEOGRAPH - 0xF845: 0x8D19, //CJK UNIFIED IDEOGRAPH - 0xF846: 0x8E98, //CJK UNIFIED IDEOGRAPH - 0xF847: 0x8F64, //CJK UNIFIED IDEOGRAPH - 0xF848: 0x8F63, //CJK UNIFIED IDEOGRAPH - 0xF849: 0x91BC, //CJK UNIFIED IDEOGRAPH - 0xF84A: 0x9462, //CJK UNIFIED IDEOGRAPH - 0xF84B: 0x9455, //CJK UNIFIED IDEOGRAPH - 0xF84C: 0x945D, //CJK UNIFIED IDEOGRAPH - 0xF84D: 0x9457, //CJK UNIFIED IDEOGRAPH - 0xF84E: 0x945E, //CJK UNIFIED IDEOGRAPH - 0xF84F: 0x97C4, //CJK UNIFIED IDEOGRAPH - 0xF850: 0x97C5, //CJK UNIFIED IDEOGRAPH - 0xF851: 0x9800, //CJK UNIFIED IDEOGRAPH - 0xF852: 0x9A56, //CJK UNIFIED IDEOGRAPH - 0xF853: 0x9A59, //CJK UNIFIED IDEOGRAPH - 0xF854: 0x9B1E, //CJK UNIFIED IDEOGRAPH - 0xF855: 0x9B1F, //CJK UNIFIED IDEOGRAPH - 0xF856: 0x9B20, //CJK UNIFIED IDEOGRAPH - 0xF857: 0x9C52, //CJK UNIFIED IDEOGRAPH - 0xF858: 0x9C58, //CJK UNIFIED IDEOGRAPH - 0xF859: 0x9C50, //CJK UNIFIED IDEOGRAPH - 0xF85A: 0x9C4A, //CJK UNIFIED IDEOGRAPH - 0xF85B: 0x9C4D, //CJK UNIFIED IDEOGRAPH - 0xF85C: 0x9C4B, //CJK UNIFIED IDEOGRAPH - 0xF85D: 0x9C55, //CJK UNIFIED IDEOGRAPH - 0xF85E: 0x9C59, //CJK UNIFIED IDEOGRAPH - 0xF85F: 0x9C4C, //CJK UNIFIED IDEOGRAPH - 0xF860: 0x9C4E, //CJK UNIFIED IDEOGRAPH - 0xF861: 0x9DFB, //CJK UNIFIED IDEOGRAPH - 0xF862: 0x9DF7, //CJK UNIFIED IDEOGRAPH - 0xF863: 0x9DEF, //CJK UNIFIED IDEOGRAPH - 0xF864: 0x9DE3, //CJK UNIFIED IDEOGRAPH - 0xF865: 0x9DEB, //CJK UNIFIED IDEOGRAPH - 0xF866: 0x9DF8, //CJK UNIFIED IDEOGRAPH - 0xF867: 0x9DE4, //CJK UNIFIED IDEOGRAPH - 0xF868: 0x9DF6, //CJK UNIFIED IDEOGRAPH - 0xF869: 0x9DE1, //CJK UNIFIED IDEOGRAPH - 0xF86A: 0x9DEE, //CJK UNIFIED IDEOGRAPH - 0xF86B: 0x9DE6, //CJK UNIFIED IDEOGRAPH - 0xF86C: 0x9DF2, //CJK UNIFIED IDEOGRAPH - 0xF86D: 0x9DF0, //CJK UNIFIED IDEOGRAPH - 0xF86E: 0x9DE2, //CJK UNIFIED IDEOGRAPH - 0xF86F: 0x9DEC, //CJK UNIFIED IDEOGRAPH - 0xF870: 0x9DF4, //CJK UNIFIED IDEOGRAPH - 0xF871: 0x9DF3, //CJK UNIFIED IDEOGRAPH - 0xF872: 0x9DE8, //CJK UNIFIED IDEOGRAPH - 0xF873: 0x9DED, //CJK UNIFIED IDEOGRAPH - 0xF874: 0x9EC2, //CJK UNIFIED IDEOGRAPH - 0xF875: 0x9ED0, //CJK UNIFIED IDEOGRAPH - 0xF876: 0x9EF2, //CJK UNIFIED IDEOGRAPH - 0xF877: 0x9EF3, //CJK UNIFIED IDEOGRAPH - 0xF878: 0x9F06, //CJK UNIFIED IDEOGRAPH - 0xF879: 0x9F1C, //CJK UNIFIED IDEOGRAPH - 0xF87A: 0x9F38, //CJK UNIFIED IDEOGRAPH - 0xF87B: 0x9F37, //CJK UNIFIED IDEOGRAPH - 0xF87C: 0x9F36, //CJK UNIFIED IDEOGRAPH - 0xF87D: 0x9F43, //CJK UNIFIED IDEOGRAPH - 0xF87E: 0x9F4F, //CJK UNIFIED IDEOGRAPH - 0xF8A1: 0x9F71, //CJK UNIFIED IDEOGRAPH - 0xF8A2: 0x9F70, //CJK UNIFIED IDEOGRAPH - 0xF8A3: 0x9F6E, //CJK UNIFIED IDEOGRAPH - 0xF8A4: 0x9F6F, //CJK UNIFIED IDEOGRAPH - 0xF8A5: 0x56D3, //CJK UNIFIED IDEOGRAPH - 0xF8A6: 0x56CD, //CJK UNIFIED IDEOGRAPH - 0xF8A7: 0x5B4E, //CJK UNIFIED IDEOGRAPH - 0xF8A8: 0x5C6D, //CJK UNIFIED IDEOGRAPH - 0xF8A9: 0x652D, //CJK UNIFIED IDEOGRAPH - 0xF8AA: 0x66ED, //CJK UNIFIED IDEOGRAPH - 0xF8AB: 0x66EE, //CJK UNIFIED IDEOGRAPH - 0xF8AC: 0x6B13, //CJK UNIFIED IDEOGRAPH - 0xF8AD: 0x705F, //CJK UNIFIED IDEOGRAPH - 0xF8AE: 0x7061, //CJK UNIFIED IDEOGRAPH - 0xF8AF: 0x705D, //CJK UNIFIED IDEOGRAPH - 0xF8B0: 0x7060, //CJK UNIFIED IDEOGRAPH - 0xF8B1: 0x7223, //CJK UNIFIED IDEOGRAPH - 0xF8B2: 0x74DB, //CJK UNIFIED IDEOGRAPH - 0xF8B3: 0x74E5, //CJK UNIFIED IDEOGRAPH - 0xF8B4: 0x77D5, //CJK UNIFIED IDEOGRAPH - 0xF8B5: 0x7938, //CJK UNIFIED IDEOGRAPH - 0xF8B6: 0x79B7, //CJK UNIFIED IDEOGRAPH - 0xF8B7: 0x79B6, //CJK UNIFIED IDEOGRAPH - 0xF8B8: 0x7C6A, //CJK UNIFIED IDEOGRAPH - 0xF8B9: 0x7E97, //CJK UNIFIED IDEOGRAPH - 0xF8BA: 0x7F89, //CJK UNIFIED IDEOGRAPH - 0xF8BB: 0x826D, //CJK UNIFIED IDEOGRAPH - 0xF8BC: 0x8643, //CJK UNIFIED IDEOGRAPH - 0xF8BD: 0x8838, //CJK UNIFIED IDEOGRAPH - 0xF8BE: 0x8837, //CJK UNIFIED IDEOGRAPH - 0xF8BF: 0x8835, //CJK UNIFIED IDEOGRAPH - 0xF8C0: 0x884B, //CJK UNIFIED IDEOGRAPH - 0xF8C1: 0x8B94, //CJK UNIFIED IDEOGRAPH - 0xF8C2: 0x8B95, //CJK UNIFIED IDEOGRAPH - 0xF8C3: 0x8E9E, //CJK UNIFIED IDEOGRAPH - 0xF8C4: 0x8E9F, //CJK UNIFIED IDEOGRAPH - 0xF8C5: 0x8EA0, //CJK UNIFIED IDEOGRAPH - 0xF8C6: 0x8E9D, //CJK UNIFIED IDEOGRAPH - 0xF8C7: 0x91BE, //CJK UNIFIED IDEOGRAPH - 0xF8C8: 0x91BD, //CJK UNIFIED IDEOGRAPH - 0xF8C9: 0x91C2, //CJK UNIFIED IDEOGRAPH - 0xF8CA: 0x946B, //CJK UNIFIED IDEOGRAPH - 0xF8CB: 0x9468, //CJK UNIFIED IDEOGRAPH - 0xF8CC: 0x9469, //CJK UNIFIED IDEOGRAPH - 0xF8CD: 0x96E5, //CJK UNIFIED IDEOGRAPH - 0xF8CE: 0x9746, //CJK UNIFIED IDEOGRAPH - 0xF8CF: 0x9743, //CJK UNIFIED IDEOGRAPH - 0xF8D0: 0x9747, //CJK UNIFIED IDEOGRAPH - 0xF8D1: 0x97C7, //CJK UNIFIED IDEOGRAPH - 0xF8D2: 0x97E5, //CJK UNIFIED IDEOGRAPH - 0xF8D3: 0x9A5E, //CJK UNIFIED IDEOGRAPH - 0xF8D4: 0x9AD5, //CJK UNIFIED IDEOGRAPH - 0xF8D5: 0x9B59, //CJK UNIFIED IDEOGRAPH - 0xF8D6: 0x9C63, //CJK UNIFIED IDEOGRAPH - 0xF8D7: 0x9C67, //CJK UNIFIED IDEOGRAPH - 0xF8D8: 0x9C66, //CJK UNIFIED IDEOGRAPH - 0xF8D9: 0x9C62, //CJK UNIFIED IDEOGRAPH - 0xF8DA: 0x9C5E, //CJK UNIFIED IDEOGRAPH - 0xF8DB: 0x9C60, //CJK UNIFIED IDEOGRAPH - 0xF8DC: 0x9E02, //CJK UNIFIED IDEOGRAPH - 0xF8DD: 0x9DFE, //CJK UNIFIED IDEOGRAPH - 0xF8DE: 0x9E07, //CJK UNIFIED IDEOGRAPH - 0xF8DF: 0x9E03, //CJK UNIFIED IDEOGRAPH - 0xF8E0: 0x9E06, //CJK UNIFIED IDEOGRAPH - 0xF8E1: 0x9E05, //CJK UNIFIED IDEOGRAPH - 0xF8E2: 0x9E00, //CJK UNIFIED IDEOGRAPH - 0xF8E3: 0x9E01, //CJK UNIFIED IDEOGRAPH - 0xF8E4: 0x9E09, //CJK UNIFIED IDEOGRAPH - 0xF8E5: 0x9DFF, //CJK UNIFIED IDEOGRAPH - 0xF8E6: 0x9DFD, //CJK UNIFIED IDEOGRAPH - 0xF8E7: 0x9E04, //CJK UNIFIED IDEOGRAPH - 0xF8E8: 0x9EA0, //CJK UNIFIED IDEOGRAPH - 0xF8E9: 0x9F1E, //CJK UNIFIED IDEOGRAPH - 0xF8EA: 0x9F46, //CJK UNIFIED IDEOGRAPH - 0xF8EB: 0x9F74, //CJK UNIFIED IDEOGRAPH - 0xF8EC: 0x9F75, //CJK UNIFIED IDEOGRAPH - 0xF8ED: 0x9F76, //CJK UNIFIED IDEOGRAPH - 0xF8EE: 0x56D4, //CJK UNIFIED IDEOGRAPH - 0xF8EF: 0x652E, //CJK UNIFIED IDEOGRAPH - 0xF8F0: 0x65B8, //CJK UNIFIED IDEOGRAPH - 0xF8F1: 0x6B18, //CJK UNIFIED IDEOGRAPH - 0xF8F2: 0x6B19, //CJK UNIFIED IDEOGRAPH - 0xF8F3: 0x6B17, //CJK UNIFIED IDEOGRAPH - 0xF8F4: 0x6B1A, //CJK UNIFIED IDEOGRAPH - 0xF8F5: 0x7062, //CJK UNIFIED IDEOGRAPH - 0xF8F6: 0x7226, //CJK UNIFIED IDEOGRAPH - 0xF8F7: 0x72AA, //CJK UNIFIED IDEOGRAPH - 0xF8F8: 0x77D8, //CJK UNIFIED IDEOGRAPH - 0xF8F9: 0x77D9, //CJK UNIFIED IDEOGRAPH - 0xF8FA: 0x7939, //CJK UNIFIED IDEOGRAPH - 0xF8FB: 0x7C69, //CJK UNIFIED IDEOGRAPH - 0xF8FC: 0x7C6B, //CJK UNIFIED IDEOGRAPH - 0xF8FD: 0x7CF6, //CJK UNIFIED IDEOGRAPH - 0xF8FE: 0x7E9A, //CJK UNIFIED IDEOGRAPH - 0xF940: 0x7E98, //CJK UNIFIED IDEOGRAPH - 0xF941: 0x7E9B, //CJK UNIFIED IDEOGRAPH - 0xF942: 0x7E99, //CJK UNIFIED IDEOGRAPH - 0xF943: 0x81E0, //CJK UNIFIED IDEOGRAPH - 0xF944: 0x81E1, //CJK UNIFIED IDEOGRAPH - 0xF945: 0x8646, //CJK UNIFIED IDEOGRAPH - 0xF946: 0x8647, //CJK UNIFIED IDEOGRAPH - 0xF947: 0x8648, //CJK UNIFIED IDEOGRAPH - 0xF948: 0x8979, //CJK UNIFIED IDEOGRAPH - 0xF949: 0x897A, //CJK UNIFIED IDEOGRAPH - 0xF94A: 0x897C, //CJK UNIFIED IDEOGRAPH - 0xF94B: 0x897B, //CJK UNIFIED IDEOGRAPH - 0xF94C: 0x89FF, //CJK UNIFIED IDEOGRAPH - 0xF94D: 0x8B98, //CJK UNIFIED IDEOGRAPH - 0xF94E: 0x8B99, //CJK UNIFIED IDEOGRAPH - 0xF94F: 0x8EA5, //CJK UNIFIED IDEOGRAPH - 0xF950: 0x8EA4, //CJK UNIFIED IDEOGRAPH - 0xF951: 0x8EA3, //CJK UNIFIED IDEOGRAPH - 0xF952: 0x946E, //CJK UNIFIED IDEOGRAPH - 0xF953: 0x946D, //CJK UNIFIED IDEOGRAPH - 0xF954: 0x946F, //CJK UNIFIED IDEOGRAPH - 0xF955: 0x9471, //CJK UNIFIED IDEOGRAPH - 0xF956: 0x9473, //CJK UNIFIED IDEOGRAPH - 0xF957: 0x9749, //CJK UNIFIED IDEOGRAPH - 0xF958: 0x9872, //CJK UNIFIED IDEOGRAPH - 0xF959: 0x995F, //CJK UNIFIED IDEOGRAPH - 0xF95A: 0x9C68, //CJK UNIFIED IDEOGRAPH - 0xF95B: 0x9C6E, //CJK UNIFIED IDEOGRAPH - 0xF95C: 0x9C6D, //CJK UNIFIED IDEOGRAPH - 0xF95D: 0x9E0B, //CJK UNIFIED IDEOGRAPH - 0xF95E: 0x9E0D, //CJK UNIFIED IDEOGRAPH - 0xF95F: 0x9E10, //CJK UNIFIED IDEOGRAPH - 0xF960: 0x9E0F, //CJK UNIFIED IDEOGRAPH - 0xF961: 0x9E12, //CJK UNIFIED IDEOGRAPH - 0xF962: 0x9E11, //CJK UNIFIED IDEOGRAPH - 0xF963: 0x9EA1, //CJK UNIFIED IDEOGRAPH - 0xF964: 0x9EF5, //CJK UNIFIED IDEOGRAPH - 0xF965: 0x9F09, //CJK UNIFIED IDEOGRAPH - 0xF966: 0x9F47, //CJK UNIFIED IDEOGRAPH - 0xF967: 0x9F78, //CJK UNIFIED IDEOGRAPH - 0xF968: 0x9F7B, //CJK UNIFIED IDEOGRAPH - 0xF969: 0x9F7A, //CJK UNIFIED IDEOGRAPH - 0xF96A: 0x9F79, //CJK UNIFIED IDEOGRAPH - 0xF96B: 0x571E, //CJK UNIFIED IDEOGRAPH - 0xF96C: 0x7066, //CJK UNIFIED IDEOGRAPH - 0xF96D: 0x7C6F, //CJK UNIFIED IDEOGRAPH - 0xF96E: 0x883C, //CJK UNIFIED IDEOGRAPH - 0xF96F: 0x8DB2, //CJK UNIFIED IDEOGRAPH - 0xF970: 0x8EA6, //CJK UNIFIED IDEOGRAPH - 0xF971: 0x91C3, //CJK UNIFIED IDEOGRAPH - 0xF972: 0x9474, //CJK UNIFIED IDEOGRAPH - 0xF973: 0x9478, //CJK UNIFIED IDEOGRAPH - 0xF974: 0x9476, //CJK UNIFIED IDEOGRAPH - 0xF975: 0x9475, //CJK UNIFIED IDEOGRAPH - 0xF976: 0x9A60, //CJK UNIFIED IDEOGRAPH - 0xF977: 0x9C74, //CJK UNIFIED IDEOGRAPH - 0xF978: 0x9C73, //CJK UNIFIED IDEOGRAPH - 0xF979: 0x9C71, //CJK UNIFIED IDEOGRAPH - 0xF97A: 0x9C75, //CJK UNIFIED IDEOGRAPH - 0xF97B: 0x9E14, //CJK UNIFIED IDEOGRAPH - 0xF97C: 0x9E13, //CJK UNIFIED IDEOGRAPH - 0xF97D: 0x9EF6, //CJK UNIFIED IDEOGRAPH - 0xF97E: 0x9F0A, //CJK UNIFIED IDEOGRAPH - 0xF9A1: 0x9FA4, //CJK UNIFIED IDEOGRAPH - 0xF9A2: 0x7068, //CJK UNIFIED IDEOGRAPH - 0xF9A3: 0x7065, //CJK UNIFIED IDEOGRAPH - 0xF9A4: 0x7CF7, //CJK UNIFIED IDEOGRAPH - 0xF9A5: 0x866A, //CJK UNIFIED IDEOGRAPH - 0xF9A6: 0x883E, //CJK UNIFIED IDEOGRAPH - 0xF9A7: 0x883D, //CJK UNIFIED IDEOGRAPH - 0xF9A8: 0x883F, //CJK UNIFIED IDEOGRAPH - 0xF9A9: 0x8B9E, //CJK UNIFIED IDEOGRAPH - 0xF9AA: 0x8C9C, //CJK UNIFIED IDEOGRAPH - 0xF9AB: 0x8EA9, //CJK UNIFIED IDEOGRAPH - 0xF9AC: 0x8EC9, //CJK UNIFIED IDEOGRAPH - 0xF9AD: 0x974B, //CJK UNIFIED IDEOGRAPH - 0xF9AE: 0x9873, //CJK UNIFIED IDEOGRAPH - 0xF9AF: 0x9874, //CJK UNIFIED IDEOGRAPH - 0xF9B0: 0x98CC, //CJK UNIFIED IDEOGRAPH - 0xF9B1: 0x9961, //CJK UNIFIED IDEOGRAPH - 0xF9B2: 0x99AB, //CJK UNIFIED IDEOGRAPH - 0xF9B3: 0x9A64, //CJK UNIFIED IDEOGRAPH - 0xF9B4: 0x9A66, //CJK UNIFIED IDEOGRAPH - 0xF9B5: 0x9A67, //CJK UNIFIED IDEOGRAPH - 0xF9B6: 0x9B24, //CJK UNIFIED IDEOGRAPH - 0xF9B7: 0x9E15, //CJK UNIFIED IDEOGRAPH - 0xF9B8: 0x9E17, //CJK UNIFIED IDEOGRAPH - 0xF9B9: 0x9F48, //CJK UNIFIED IDEOGRAPH - 0xF9BA: 0x6207, //CJK UNIFIED IDEOGRAPH - 0xF9BB: 0x6B1E, //CJK UNIFIED IDEOGRAPH - 0xF9BC: 0x7227, //CJK UNIFIED IDEOGRAPH - 0xF9BD: 0x864C, //CJK UNIFIED IDEOGRAPH - 0xF9BE: 0x8EA8, //CJK UNIFIED IDEOGRAPH - 0xF9BF: 0x9482, //CJK UNIFIED IDEOGRAPH - 0xF9C0: 0x9480, //CJK UNIFIED IDEOGRAPH - 0xF9C1: 0x9481, //CJK UNIFIED IDEOGRAPH - 0xF9C2: 0x9A69, //CJK UNIFIED IDEOGRAPH - 0xF9C3: 0x9A68, //CJK UNIFIED IDEOGRAPH - 0xF9C4: 0x9B2E, //CJK UNIFIED IDEOGRAPH - 0xF9C5: 0x9E19, //CJK UNIFIED IDEOGRAPH - 0xF9C6: 0x7229, //CJK UNIFIED IDEOGRAPH - 0xF9C7: 0x864B, //CJK UNIFIED IDEOGRAPH - 0xF9C8: 0x8B9F, //CJK UNIFIED IDEOGRAPH - 0xF9C9: 0x9483, //CJK UNIFIED IDEOGRAPH - 0xF9CA: 0x9C79, //CJK UNIFIED IDEOGRAPH - 0xF9CB: 0x9EB7, //CJK UNIFIED IDEOGRAPH - 0xF9CC: 0x7675, //CJK UNIFIED IDEOGRAPH - 0xF9CD: 0x9A6B, //CJK UNIFIED IDEOGRAPH - 0xF9CE: 0x9C7A, //CJK UNIFIED IDEOGRAPH - 0xF9CF: 0x9E1D, //CJK UNIFIED IDEOGRAPH - 0xF9D0: 0x7069, //CJK UNIFIED IDEOGRAPH - 0xF9D1: 0x706A, //CJK UNIFIED IDEOGRAPH - 0xF9D2: 0x9EA4, //CJK UNIFIED IDEOGRAPH - 0xF9D3: 0x9F7E, //CJK UNIFIED IDEOGRAPH - 0xF9D4: 0x9F49, //CJK UNIFIED IDEOGRAPH - 0xF9D5: 0x9F98, //CJK UNIFIED IDEOGRAPH - 0xF9D6: 0x7881, //CJK UNIFIED IDEOGRAPH - 0xF9D7: 0x92B9, //CJK UNIFIED IDEOGRAPH - 0xF9D8: 0x88CF, //CJK UNIFIED IDEOGRAPH - 0xF9D9: 0x58BB, //CJK UNIFIED IDEOGRAPH - 0xF9DA: 0x6052, //CJK UNIFIED IDEOGRAPH - 0xF9DB: 0x7CA7, //CJK UNIFIED IDEOGRAPH - 0xF9DC: 0x5AFA, //CJK UNIFIED IDEOGRAPH - 0xF9DD: 0x2554, //BOX DRAWINGS DOUBLE DOWN AND RIGHT - 0xF9DE: 0x2566, //BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL - 0xF9DF: 0x2557, //BOX DRAWINGS DOUBLE DOWN AND LEFT - 0xF9E0: 0x2560, //BOX DRAWINGS DOUBLE VERTICAL AND RIGHT - 0xF9E1: 0x256C, //BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL - 0xF9E2: 0x2563, //BOX DRAWINGS DOUBLE VERTICAL AND LEFT - 0xF9E3: 0x255A, //BOX DRAWINGS DOUBLE UP AND RIGHT - 0xF9E4: 0x2569, //BOX DRAWINGS DOUBLE UP AND HORIZONTAL - 0xF9E5: 0x255D, //BOX DRAWINGS DOUBLE UP AND LEFT - 0xF9E6: 0x2552, //BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE - 0xF9E7: 0x2564, //BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE - 0xF9E8: 0x2555, //BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE - 0xF9E9: 0x255E, //BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE - 0xF9EA: 0x256A, //BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE - 0xF9EB: 0x2561, //BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE - 0xF9EC: 0x2558, //BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE - 0xF9ED: 0x2567, //BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE - 0xF9EE: 0x255B, //BOX DRAWINGS UP SINGLE AND LEFT DOUBLE - 0xF9EF: 0x2553, //BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE - 0xF9F0: 0x2565, //BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE - 0xF9F1: 0x2556, //BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE - 0xF9F2: 0x255F, //BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE - 0xF9F3: 0x256B, //BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE - 0xF9F4: 0x2562, //BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE - 0xF9F5: 0x2559, //BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE - 0xF9F6: 0x2568, //BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE - 0xF9F7: 0x255C, //BOX DRAWINGS UP DOUBLE AND LEFT SINGLE - 0xF9F8: 0x2551, //BOX DRAWINGS DOUBLE VERTICAL - 0xF9F9: 0x2550, //BOX DRAWINGS DOUBLE HORIZONTAL - 0xF9FA: 0x256D, //BOX DRAWINGS LIGHT ARC DOWN AND RIGHT - 0xF9FB: 0x256E, //BOX DRAWINGS LIGHT ARC DOWN AND LEFT - 0xF9FC: 0x2570, //BOX DRAWINGS LIGHT ARC UP AND RIGHT - 0xF9FD: 0x256F, //BOX DRAWINGS LIGHT ARC UP AND LEFT - 0xF9FE: 0x2593, //DARK SHADE - }, -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/decimal/decimal.go b/vendor/github.com/denisenkom/go-mssqldb/internal/decimal/decimal.go deleted file mode 100644 index 7da0375d..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/decimal/decimal.go +++ /dev/null @@ -1,252 +0,0 @@ -package decimal - -import ( - "encoding/binary" - "errors" - "fmt" - "math" - "math/big" - "strings" -) - -// Decimal represents decimal type in the Microsoft Open Specifications: http://msdn.microsoft.com/en-us/library/ee780893.aspx -type Decimal struct { - integer [4]uint32 // Little-endian - positive bool - prec uint8 - scale uint8 -} - -var ( - scaletblflt64 [39]float64 - int10 big.Int - int1e5 big.Int -) - -func init() { - var acc float64 = 1 - for i := 0; i <= 38; i++ { - scaletblflt64[i] = acc - acc *= 10 - } - - int10.SetInt64(10) - int1e5.SetInt64(1e5) -} - -const autoScale = 100 - -// SetInteger sets the ind'th element in the integer array -func (d *Decimal) SetInteger(integer uint32, ind uint8) { - d.integer[ind] = integer -} - -// SetPositive sets the positive member -func (d *Decimal) SetPositive(positive bool) { - d.positive = positive -} - -// SetPrec sets the prec member -func (d *Decimal) SetPrec(prec uint8) { - d.prec = prec -} - -// SetScale sets the scale member -func (d *Decimal) SetScale(scale uint8) { - d.scale = scale -} - -// IsPositive returns true if the Decimal is positive -func (d *Decimal) IsPositive() bool { - return d.positive -} - -// ToFloat64 converts decimal to a float64 -func (d Decimal) ToFloat64() float64 { - val := float64(0) - for i := 3; i >= 0; i-- { - val *= 0x100000000 - val += float64(d.integer[i]) - } - if !d.positive { - val = -val - } - if d.scale != 0 { - val /= scaletblflt64[d.scale] - } - return val -} - -// BigInt converts decimal to a bigint -func (d Decimal) BigInt() big.Int { - bytes := make([]byte, 16) - binary.BigEndian.PutUint32(bytes[0:4], d.integer[3]) - binary.BigEndian.PutUint32(bytes[4:8], d.integer[2]) - binary.BigEndian.PutUint32(bytes[8:12], d.integer[1]) - binary.BigEndian.PutUint32(bytes[12:16], d.integer[0]) - var x big.Int - x.SetBytes(bytes) - if !d.positive { - x.Neg(&x) - } - return x -} - -// Bytes converts decimal to a scaled byte slice -func (d Decimal) Bytes() []byte { - x := d.BigInt() - return ScaleBytes(x.String(), d.scale) -} - -// UnscaledBytes converts decimal to a unscaled byte slice -func (d Decimal) UnscaledBytes() []byte { - x := d.BigInt() - return x.Bytes() -} - -// String converts decimal to a string -func (d Decimal) String() string { - return string(d.Bytes()) -} - -// Float64ToDecimal converts float64 to decimal -func Float64ToDecimal(f float64) (Decimal, error) { - return Float64ToDecimalScale(f, autoScale) -} - -// Float64ToDecimalScale converts float64 to decimal; user can specify the scale -func Float64ToDecimalScale(f float64, scale uint8) (Decimal, error) { - var dec Decimal - if math.IsNaN(f) { - return dec, errors.New("NaN") - } - if math.IsInf(f, 0) { - return dec, errors.New("Infinity can't be converted to decimal") - } - dec.positive = f >= 0 - if !dec.positive { - f = math.Abs(f) - } - if f > 3.402823669209385e+38 { - return dec, errors.New("Float value is out of range") - } - dec.prec = 20 - var integer float64 - for dec.scale = 0; dec.scale <= scale; dec.scale++ { - integer = f * scaletblflt64[dec.scale] - _, frac := math.Modf(integer) - if frac == 0 && scale == autoScale { - break - } - } - for i := 0; i < 4; i++ { - mod := math.Mod(integer, 0x100000000) - integer -= mod - integer /= 0x100000000 - dec.integer[i] = uint32(mod) - if mod-math.Trunc(mod) >= 0.5 { - dec.integer[i] = uint32(mod) + 1 - } - } - return dec, nil -} - -// Int64ToDecimalScale converts float64 to decimal; user can specify the scale -func Int64ToDecimalScale(v int64, scale uint8) Decimal { - positive := v >= 0 - if !positive { - if v == math.MinInt64 { - // Special case - can't negate - return Decimal{ - integer: [4]uint32{0, 0x80000000, 0, 0}, - positive: false, - prec: 20, - scale: 0, - } - } - v = -v - } - return Decimal{ - integer: [4]uint32{uint32(v), uint32(v >> 32), 0, 0}, - positive: positive, - prec: 20, - scale: scale, - } -} - -// StringToDecimalScale converts string to decimal -func StringToDecimalScale(v string, outScale uint8) (Decimal, error) { - var r big.Int - var unscaled string - var inScale int - - point := strings.LastIndexByte(v, '.') - if point == -1 { - inScale = 0 - unscaled = v - } else { - inScale = len(v) - point - 1 - unscaled = v[:point] + v[point+1:] - } - if inScale > math.MaxUint8 { - return Decimal{}, fmt.Errorf("can't parse %q as a decimal number: scale too large", v) - } - - _, ok := r.SetString(unscaled, 10) - if !ok { - return Decimal{}, fmt.Errorf("can't parse %q as a decimal number", v) - } - - if inScale > int(outScale) { - return Decimal{}, fmt.Errorf("can't parse %q as a decimal number: scale %d is larger than the scale %d of the target column", v, inScale, outScale) - } - for inScale < int(outScale) { - if int(outScale)-inScale >= 5 { - r.Mul(&r, &int1e5) - inScale += 5 - } else { - r.Mul(&r, &int10) - inScale++ - } - } - - bytes := r.Bytes() - if len(bytes) > 16 { - return Decimal{}, fmt.Errorf("can't parse %q as a decimal number: precision too large", v) - } - var out [4]uint32 - for i, b := range bytes { - pos := len(bytes) - i - 1 - out[pos/4] += uint32(b) << uint(pos%4*8) - } - return Decimal{ - integer: out, - positive: r.Sign() >= 0, - prec: 20, - scale: uint8(inScale), - }, nil -} - -// ScaleBytes converts a stringified decimal to a scaled byte slice -func ScaleBytes(s string, scale uint8) []byte { - z := make([]byte, 0, len(s)+1) - if s[0] == '-' || s[0] == '+' { - z = append(z, byte(s[0])) - s = s[1:] - } - pos := len(s) - int(scale) - if pos <= 0 { - z = append(z, byte('0')) - } else if pos > 0 { - z = append(z, []byte(s[:pos])...) - } - if scale > 0 { - z = append(z, byte('.')) - for pos < 0 { - z = append(z, byte('0')) - pos++ - } - z = append(z, []byte(s[pos:])...) - } - return z -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/internal/querytext/parser.go b/vendor/github.com/denisenkom/go-mssqldb/internal/querytext/parser.go deleted file mode 100644 index 14650e38..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/internal/querytext/parser.go +++ /dev/null @@ -1,265 +0,0 @@ -// Package querytext is the old query parser and parameter substitute process. -// Do not use on new code. -// -// This package is not subject to any API compatibility guarantee. -package querytext - -import ( - "bytes" - "io" - "strconv" -) - -type parser struct { - r *bytes.Reader - w bytes.Buffer - paramCount int - paramMax int - - // using map as a set - namedParams map[string]bool -} - -func (p *parser) next() (rune, bool) { - ch, _, err := p.r.ReadRune() - if err != nil { - if err != io.EOF { - panic(err) - } - return 0, false - } - return ch, true -} - -func (p *parser) unread() { - err := p.r.UnreadRune() - if err != nil { - panic(err) - } -} - -func (p *parser) write(ch rune) { - p.w.WriteRune(ch) -} - -type stateFunc func(*parser) stateFunc - -// ParseParams rewrites the query from using "?" placeholders -// to using "@pN" parameter names that SQL Server will accept. -// -// This function and package is not subject to any API compatibility guarantee. -func ParseParams(query string) (string, int) { - p := &parser{ - r: bytes.NewReader([]byte(query)), - namedParams: map[string]bool{}, - } - state := parseNormal - for state != nil { - state = state(p) - } - return p.w.String(), p.paramMax + len(p.namedParams) -} - -func parseNormal(p *parser) stateFunc { - for { - ch, ok := p.next() - if !ok { - return nil - } - if ch == '?' { - return parseOrdinalParameter - } else if ch == '$' || ch == ':' { - ch2, ok := p.next() - if !ok { - p.write(ch) - return nil - } - p.unread() - if ch2 >= '0' && ch2 <= '9' { - return parseOrdinalParameter - } else if 'a' <= ch2 && ch2 <= 'z' || 'A' <= ch2 && ch2 <= 'Z' { - return parseNamedParameter - } - } - p.write(ch) - switch ch { - case '\'': - return parseQuote - case '"': - return parseDoubleQuote - case '[': - return parseBracket - case '-': - return parseLineComment - case '/': - return parseComment - } - } -} - -func parseOrdinalParameter(p *parser) stateFunc { - var paramN int - var ok bool - for { - var ch rune - ch, ok = p.next() - if ok && ch >= '0' && ch <= '9' { - paramN = paramN*10 + int(ch-'0') - } else { - break - } - } - if ok { - p.unread() - } - if paramN == 0 { - p.paramCount++ - paramN = p.paramCount - } - if paramN > p.paramMax { - p.paramMax = paramN - } - p.w.WriteString("@p") - p.w.WriteString(strconv.Itoa(paramN)) - if !ok { - return nil - } - return parseNormal -} - -func parseNamedParameter(p *parser) stateFunc { - var paramName string - var ok bool - for { - var ch rune - ch, ok = p.next() - if ok && (ch >= '0' && ch <= '9' || 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z') { - paramName = paramName + string(ch) - } else { - break - } - } - if ok { - p.unread() - } - p.namedParams[paramName] = true - p.w.WriteString("@") - p.w.WriteString(paramName) - if !ok { - return nil - } - return parseNormal -} - -func parseQuote(p *parser) stateFunc { - for { - ch, ok := p.next() - if !ok { - return nil - } - p.write(ch) - if ch == '\'' { - return parseNormal - } - } -} - -func parseDoubleQuote(p *parser) stateFunc { - for { - ch, ok := p.next() - if !ok { - return nil - } - p.write(ch) - if ch == '"' { - return parseNormal - } - } -} - -func parseBracket(p *parser) stateFunc { - for { - ch, ok := p.next() - if !ok { - return nil - } - p.write(ch) - if ch == ']' { - ch, ok = p.next() - if !ok { - return nil - } - if ch != ']' { - p.unread() - return parseNormal - } - p.write(ch) - } - } -} - -func parseLineComment(p *parser) stateFunc { - ch, ok := p.next() - if !ok { - return nil - } - if ch != '-' { - p.unread() - return parseNormal - } - p.write(ch) - for { - ch, ok = p.next() - if !ok { - return nil - } - p.write(ch) - if ch == '\n' { - return parseNormal - } - } -} - -func parseComment(p *parser) stateFunc { - var nested int - ch, ok := p.next() - if !ok { - return nil - } - if ch != '*' { - p.unread() - return parseNormal - } - p.write(ch) - for { - ch, ok = p.next() - if !ok { - return nil - } - p.write(ch) - for ch == '*' { - ch, ok = p.next() - if !ok { - return nil - } - p.write(ch) - if ch == '/' { - if nested == 0 { - return parseNormal - } else { - nested-- - } - } - } - for ch == '/' { - ch, ok = p.next() - if !ok { - return nil - } - p.write(ch) - if ch == '*' { - nested++ - } - } - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/log.go b/vendor/github.com/denisenkom/go-mssqldb/log.go deleted file mode 100644 index 9b8c551e..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/log.go +++ /dev/null @@ -1,30 +0,0 @@ -package mssql - -import ( - "log" -) - -type Logger interface { - Printf(format string, v ...interface{}) - Println(v ...interface{}) -} - -type optionalLogger struct { - logger Logger -} - -func (o optionalLogger) Printf(format string, v ...interface{}) { - if o.logger != nil { - o.logger.Printf(format, v...) - } else { - log.Printf(format, v...) - } -} - -func (o optionalLogger) Println(v ...interface{}) { - if o.logger != nil { - o.logger.Println(v...) - } else { - log.Println(v...) - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/mssql.go b/vendor/github.com/denisenkom/go-mssqldb/mssql.go deleted file mode 100644 index e37109cd..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/mssql.go +++ /dev/null @@ -1,957 +0,0 @@ -package mssql - -import ( - "context" - "database/sql" - "database/sql/driver" - "encoding/binary" - "errors" - "fmt" - "io" - "math" - "net" - "reflect" - "strings" - "time" - "unicode" - - "github.com/denisenkom/go-mssqldb/internal/querytext" -) - -// ReturnStatus may be used to return the return value from a proc. -// -// var rs mssql.ReturnStatus -// _, err := db.Exec("theproc", &rs) -// log.Printf("return status = %d", rs) -type ReturnStatus int32 - -var driverInstance = &Driver{processQueryText: true} -var driverInstanceNoProcess = &Driver{processQueryText: false} - -func init() { - sql.Register("mssql", driverInstance) - sql.Register("sqlserver", driverInstanceNoProcess) - createDialer = func(p *connectParams) Dialer { - return netDialer{&net.Dialer{KeepAlive: p.keepAlive}} - } -} - -var createDialer func(p *connectParams) Dialer - -type netDialer struct { - nd *net.Dialer -} - -func (d netDialer) DialContext(ctx context.Context, network string, addr string) (net.Conn, error) { - return d.nd.DialContext(ctx, network, addr) -} - -type Driver struct { - log optionalLogger - - processQueryText bool -} - -// OpenConnector opens a new connector. Useful to dial with a context. -func (d *Driver) OpenConnector(dsn string) (*Connector, error) { - params, err := parseConnectParams(dsn) - if err != nil { - return nil, err - } - return &Connector{ - params: params, - driver: d, - }, nil -} - -func (d *Driver) Open(dsn string) (driver.Conn, error) { - return d.open(context.Background(), dsn) -} - -func SetLogger(logger Logger) { - driverInstance.SetLogger(logger) - driverInstanceNoProcess.SetLogger(logger) -} - -func (d *Driver) SetLogger(logger Logger) { - d.log = optionalLogger{logger} -} - -// NewConnector creates a new connector from a DSN. -// The returned connector may be used with sql.OpenDB. -func NewConnector(dsn string) (*Connector, error) { - params, err := parseConnectParams(dsn) - if err != nil { - return nil, err - } - c := &Connector{ - params: params, - driver: driverInstanceNoProcess, - } - return c, nil -} - -// Connector holds the parsed DSN and is ready to make a new connection -// at any time. -// -// In the future, settings that cannot be passed through a string DSN -// may be set directly on the connector. -type Connector struct { - params connectParams - driver *Driver - - // SessionInitSQL is executed after marking a given session to be reset. - // When not present, the next query will still reset the session to the - // database defaults. - // - // When present the connection will immediately mark the session to - // be reset, then execute the SessionInitSQL text to setup the session - // that may be different from the base database defaults. - // - // For Example, the application relies on the following defaults - // but is not allowed to set them at the database system level. - // - // SET XACT_ABORT ON; - // SET TEXTSIZE -1; - // SET ANSI_NULLS ON; - // SET LOCK_TIMEOUT 10000; - // - // SessionInitSQL should not attempt to manually call sp_reset_connection. - // This will happen at the TDS layer. - // - // SessionInitSQL is optional. The session will be reset even if - // SessionInitSQL is empty. - SessionInitSQL string - - // Dialer sets a custom dialer for all network operations. - // If Dialer is not set, normal net dialers are used. - Dialer Dialer -} - -type Dialer interface { - DialContext(ctx context.Context, network string, addr string) (net.Conn, error) -} - -func (c *Connector) getDialer(p *connectParams) Dialer { - if c != nil && c.Dialer != nil { - return c.Dialer - } - return createDialer(p) -} - -type Conn struct { - connector *Connector - sess *tdsSession - transactionCtx context.Context - resetSession bool - - processQueryText bool - connectionGood bool - - outs map[string]interface{} - returnStatus *ReturnStatus -} - -func (c *Conn) setReturnStatus(s ReturnStatus) { - if c.returnStatus == nil { - return - } - *c.returnStatus = s -} - -func (c *Conn) checkBadConn(err error) error { - // this is a hack to address Issue #275 - // we set connectionGood flag to false if - // error indicates that connection is not usable - // but we return actual error instead of ErrBadConn - // this will cause connection to stay in a pool - // but next request to this connection will return ErrBadConn - - // it might be possible to revise this hack after - // https://github.com/golang/go/issues/20807 - // is implemented - switch err { - case nil: - return nil - case io.EOF: - c.connectionGood = false - return driver.ErrBadConn - case driver.ErrBadConn: - // It is an internal programming error if driver.ErrBadConn - // is ever passed to this function. driver.ErrBadConn should - // only ever be returned in response to a *mssql.Conn.connectionGood == false - // check in the external facing API. - panic("driver.ErrBadConn in checkBadConn. This should not happen.") - } - - switch err.(type) { - case net.Error: - c.connectionGood = false - return err - case StreamError: - c.connectionGood = false - return err - default: - return err - } -} - -func (c *Conn) clearOuts() { - c.outs = nil -} - -func (c *Conn) simpleProcessResp(ctx context.Context) error { - tokchan := make(chan tokenStruct, 5) - go processResponse(ctx, c.sess, tokchan, c.outs) - c.clearOuts() - for tok := range tokchan { - switch token := tok.(type) { - case doneStruct: - if token.isError() { - return c.checkBadConn(token.getError()) - } - case error: - return c.checkBadConn(token) - } - } - return nil -} - -func (c *Conn) Commit() error { - if !c.connectionGood { - return driver.ErrBadConn - } - if err := c.sendCommitRequest(); err != nil { - return c.checkBadConn(err) - } - return c.simpleProcessResp(c.transactionCtx) -} - -func (c *Conn) sendCommitRequest() error { - headers := []headerStruct{ - {hdrtype: dataStmHdrTransDescr, - data: transDescrHdr{c.sess.tranid, 1}.pack()}, - } - reset := c.resetSession - c.resetSession = false - if err := sendCommitXact(c.sess.buf, headers, "", 0, 0, "", reset); err != nil { - if c.sess.logFlags&logErrors != 0 { - c.sess.log.Printf("Failed to send CommitXact with %v", err) - } - c.connectionGood = false - return fmt.Errorf("Faild to send CommitXact: %v", err) - } - return nil -} - -func (c *Conn) Rollback() error { - if !c.connectionGood { - return driver.ErrBadConn - } - if err := c.sendRollbackRequest(); err != nil { - return c.checkBadConn(err) - } - return c.simpleProcessResp(c.transactionCtx) -} - -func (c *Conn) sendRollbackRequest() error { - headers := []headerStruct{ - {hdrtype: dataStmHdrTransDescr, - data: transDescrHdr{c.sess.tranid, 1}.pack()}, - } - reset := c.resetSession - c.resetSession = false - if err := sendRollbackXact(c.sess.buf, headers, "", 0, 0, "", reset); err != nil { - if c.sess.logFlags&logErrors != 0 { - c.sess.log.Printf("Failed to send RollbackXact with %v", err) - } - c.connectionGood = false - return fmt.Errorf("Failed to send RollbackXact: %v", err) - } - return nil -} - -func (c *Conn) Begin() (driver.Tx, error) { - return c.begin(context.Background(), isolationUseCurrent) -} - -func (c *Conn) begin(ctx context.Context, tdsIsolation isoLevel) (tx driver.Tx, err error) { - if !c.connectionGood { - return nil, driver.ErrBadConn - } - err = c.sendBeginRequest(ctx, tdsIsolation) - if err != nil { - return nil, c.checkBadConn(err) - } - tx, err = c.processBeginResponse(ctx) - if err != nil { - return nil, c.checkBadConn(err) - } - return -} - -func (c *Conn) sendBeginRequest(ctx context.Context, tdsIsolation isoLevel) error { - c.transactionCtx = ctx - headers := []headerStruct{ - {hdrtype: dataStmHdrTransDescr, - data: transDescrHdr{0, 1}.pack()}, - } - reset := c.resetSession - c.resetSession = false - if err := sendBeginXact(c.sess.buf, headers, tdsIsolation, "", reset); err != nil { - if c.sess.logFlags&logErrors != 0 { - c.sess.log.Printf("Failed to send BeginXact with %v", err) - } - c.connectionGood = false - return fmt.Errorf("Failed to send BeginXact: %v", err) - } - return nil -} - -func (c *Conn) processBeginResponse(ctx context.Context) (driver.Tx, error) { - if err := c.simpleProcessResp(ctx); err != nil { - return nil, err - } - // successful BEGINXACT request will return sess.tranid - // for started transaction - return c, nil -} - -func (d *Driver) open(ctx context.Context, dsn string) (*Conn, error) { - params, err := parseConnectParams(dsn) - if err != nil { - return nil, err - } - return d.connect(ctx, nil, params) -} - -// connect to the server, using the provided context for dialing only. -func (d *Driver) connect(ctx context.Context, c *Connector, params connectParams) (*Conn, error) { - sess, err := connect(ctx, c, d.log, params) - if err != nil { - // main server failed, try fail-over partner - if params.failOverPartner == "" { - return nil, err - } - - params.host = params.failOverPartner - if params.failOverPort != 0 { - params.port = params.failOverPort - } - - sess, err = connect(ctx, c, d.log, params) - if err != nil { - // fail-over partner also failed, now fail - return nil, err - } - } - - conn := &Conn{ - connector: c, - sess: sess, - transactionCtx: context.Background(), - processQueryText: d.processQueryText, - connectionGood: true, - } - - return conn, nil -} - -func (c *Conn) Close() error { - return c.sess.buf.transport.Close() -} - -type Stmt struct { - c *Conn - query string - paramCount int - notifSub *queryNotifSub -} - -type queryNotifSub struct { - msgText string - options string - timeout uint32 -} - -func (c *Conn) Prepare(query string) (driver.Stmt, error) { - if !c.connectionGood { - return nil, driver.ErrBadConn - } - if len(query) > 10 && strings.EqualFold(query[:10], "INSERTBULK") { - return c.prepareCopyIn(context.Background(), query) - } - return c.prepareContext(context.Background(), query) -} - -func (c *Conn) prepareContext(ctx context.Context, query string) (*Stmt, error) { - paramCount := -1 - if c.processQueryText { - query, paramCount = querytext.ParseParams(query) - } - return &Stmt{c, query, paramCount, nil}, nil -} - -func (s *Stmt) Close() error { - return nil -} - -func (s *Stmt) SetQueryNotification(id, options string, timeout time.Duration) { - to := uint32(timeout / time.Second) - if to < 1 { - to = 1 - } - s.notifSub = &queryNotifSub{id, options, to} -} - -func (s *Stmt) NumInput() int { - return s.paramCount -} - -func (s *Stmt) sendQuery(args []namedValue) (err error) { - headers := []headerStruct{ - {hdrtype: dataStmHdrTransDescr, - data: transDescrHdr{s.c.sess.tranid, 1}.pack()}, - } - - if s.notifSub != nil { - headers = append(headers, - headerStruct{ - hdrtype: dataStmHdrQueryNotif, - data: queryNotifHdr{ - s.notifSub.msgText, - s.notifSub.options, - s.notifSub.timeout, - }.pack(), - }) - } - - conn := s.c - - // no need to check number of parameters here, it is checked by database/sql - if conn.sess.logFlags&logSQL != 0 { - conn.sess.log.Println(s.query) - } - if conn.sess.logFlags&logParams != 0 && len(args) > 0 { - for i := 0; i < len(args); i++ { - if len(args[i].Name) > 0 { - s.c.sess.log.Printf("\t@%s\t%v\n", args[i].Name, args[i].Value) - } else { - s.c.sess.log.Printf("\t@p%d\t%v\n", i+1, args[i].Value) - } - } - } - - reset := conn.resetSession - conn.resetSession = false - if len(args) == 0 { - if err = sendSqlBatch72(conn.sess.buf, s.query, headers, reset); err != nil { - if conn.sess.logFlags&logErrors != 0 { - conn.sess.log.Printf("Failed to send SqlBatch with %v", err) - } - conn.connectionGood = false - return fmt.Errorf("failed to send SQL Batch: %v", err) - } - } else { - proc := sp_ExecuteSql - var params []param - if isProc(s.query) { - proc.name = s.query - params, _, err = s.makeRPCParams(args, true) - if err != nil { - return - } - } else { - var decls []string - params, decls, err = s.makeRPCParams(args, false) - if err != nil { - return - } - params[0] = makeStrParam(s.query) - params[1] = makeStrParam(strings.Join(decls, ",")) - } - if err = sendRpc(conn.sess.buf, headers, proc, 0, params, reset); err != nil { - if conn.sess.logFlags&logErrors != 0 { - conn.sess.log.Printf("Failed to send Rpc with %v", err) - } - conn.connectionGood = false - return fmt.Errorf("Failed to send RPC: %v", err) - } - } - return -} - -// isProc takes the query text in s and determines if it is a stored proc name -// or SQL text. -func isProc(s string) bool { - if len(s) == 0 { - return false - } - const ( - outside = iota - text - escaped - ) - st := outside - var rn1, rPrev rune - for _, r := range s { - rPrev = rn1 - rn1 = r - switch r { - // No newlines or string sequences. - case '\n', '\r', '\'', ';': - return false - } - switch st { - case outside: - switch { - case unicode.IsSpace(r): - return false - case r == '[': - st = escaped - continue - case r == ']' && rPrev == ']': - st = escaped - continue - case unicode.IsLetter(r): - st = text - } - case text: - switch { - case r == '.': - st = outside - continue - case unicode.IsSpace(r): - return false - } - case escaped: - switch { - case r == ']': - st = outside - continue - } - } - } - return true -} - -func (s *Stmt) makeRPCParams(args []namedValue, isProc bool) ([]param, []string, error) { - var err error - var offset int - if !isProc { - offset = 2 - } - params := make([]param, len(args)+offset) - decls := make([]string, len(args)) - for i, val := range args { - params[i+offset], err = s.makeParam(val.Value) - if err != nil { - return nil, nil, err - } - var name string - if len(val.Name) > 0 { - name = "@" + val.Name - } else if !isProc { - name = fmt.Sprintf("@p%d", val.Ordinal) - } - params[i+offset].Name = name - decls[i] = fmt.Sprintf("%s %s", name, makeDecl(params[i+offset].ti)) - } - return params, decls, nil -} - -type namedValue struct { - Name string - Ordinal int - Value driver.Value -} - -func convertOldArgs(args []driver.Value) []namedValue { - list := make([]namedValue, len(args)) - for i, v := range args { - list[i] = namedValue{ - Ordinal: i + 1, - Value: v, - } - } - return list -} - -func (s *Stmt) Query(args []driver.Value) (driver.Rows, error) { - return s.queryContext(context.Background(), convertOldArgs(args)) -} - -func (s *Stmt) queryContext(ctx context.Context, args []namedValue) (rows driver.Rows, err error) { - if !s.c.connectionGood { - return nil, driver.ErrBadConn - } - if err = s.sendQuery(args); err != nil { - return nil, s.c.checkBadConn(err) - } - return s.processQueryResponse(ctx) -} - -func (s *Stmt) processQueryResponse(ctx context.Context) (res driver.Rows, err error) { - tokchan := make(chan tokenStruct, 5) - ctx, cancel := context.WithCancel(ctx) - go processResponse(ctx, s.c.sess, tokchan, s.c.outs) - s.c.clearOuts() - // process metadata - var cols []columnStruct -loop: - for tok := range tokchan { - switch token := tok.(type) { - // By ignoring DONE token we effectively - // skip empty result-sets. - // This improves results in queries like that: - // set nocount on; select 1 - // see TestIgnoreEmptyResults test - //case doneStruct: - //break loop - case []columnStruct: - cols = token - break loop - case doneStruct: - if token.isError() { - return nil, s.c.checkBadConn(token.getError()) - } - case ReturnStatus: - s.c.setReturnStatus(token) - case error: - return nil, s.c.checkBadConn(token) - } - } - res = &Rows{stmt: s, tokchan: tokchan, cols: cols, cancel: cancel} - return -} - -func (s *Stmt) Exec(args []driver.Value) (driver.Result, error) { - return s.exec(context.Background(), convertOldArgs(args)) -} - -func (s *Stmt) exec(ctx context.Context, args []namedValue) (res driver.Result, err error) { - if !s.c.connectionGood { - return nil, driver.ErrBadConn - } - if err = s.sendQuery(args); err != nil { - return nil, s.c.checkBadConn(err) - } - if res, err = s.processExec(ctx); err != nil { - return nil, s.c.checkBadConn(err) - } - return -} - -func (s *Stmt) processExec(ctx context.Context) (res driver.Result, err error) { - tokchan := make(chan tokenStruct, 5) - go processResponse(ctx, s.c.sess, tokchan, s.c.outs) - s.c.clearOuts() - var rowCount int64 - for token := range tokchan { - switch token := token.(type) { - case doneInProcStruct: - if token.Status&doneCount != 0 { - rowCount += int64(token.RowCount) - } - case doneStruct: - if token.Status&doneCount != 0 { - rowCount += int64(token.RowCount) - } - if token.isError() { - return nil, token.getError() - } - case ReturnStatus: - s.c.setReturnStatus(token) - case error: - return nil, token - } - } - return &Result{s.c, rowCount}, nil -} - -type Rows struct { - stmt *Stmt - cols []columnStruct - tokchan chan tokenStruct - - nextCols []columnStruct - - cancel func() -} - -func (rc *Rows) Close() error { - rc.cancel() - for _ = range rc.tokchan { - } - rc.tokchan = nil - return nil -} - -func (rc *Rows) Columns() (res []string) { - res = make([]string, len(rc.cols)) - for i, col := range rc.cols { - res[i] = col.ColName - } - return -} - -func (rc *Rows) Next(dest []driver.Value) error { - if !rc.stmt.c.connectionGood { - return driver.ErrBadConn - } - if rc.nextCols != nil { - return io.EOF - } - for tok := range rc.tokchan { - switch tokdata := tok.(type) { - case []columnStruct: - rc.nextCols = tokdata - return io.EOF - case []interface{}: - for i := range dest { - dest[i] = tokdata[i] - } - return nil - case doneStruct: - if tokdata.isError() { - return rc.stmt.c.checkBadConn(tokdata.getError()) - } - case ReturnStatus: - rc.stmt.c.setReturnStatus(tokdata) - case error: - return rc.stmt.c.checkBadConn(tokdata) - } - } - return io.EOF -} - -func (rc *Rows) HasNextResultSet() bool { - return rc.nextCols != nil -} - -func (rc *Rows) NextResultSet() error { - rc.cols = rc.nextCols - rc.nextCols = nil - if rc.cols == nil { - return io.EOF - } - return nil -} - -// It should return -// the value type that can be used to scan types into. For example, the database -// column type "bigint" this should return "reflect.TypeOf(int64(0))". -func (r *Rows) ColumnTypeScanType(index int) reflect.Type { - return makeGoLangScanType(r.cols[index].ti) -} - -// RowsColumnTypeDatabaseTypeName may be implemented by Rows. It should return the -// database system type name without the length. Type names should be uppercase. -// Examples of returned types: "VARCHAR", "NVARCHAR", "VARCHAR2", "CHAR", "TEXT", -// "DECIMAL", "SMALLINT", "INT", "BIGINT", "BOOL", "[]BIGINT", "JSONB", "XML", -// "TIMESTAMP". -func (r *Rows) ColumnTypeDatabaseTypeName(index int) string { - return makeGoLangTypeName(r.cols[index].ti) -} - -// RowsColumnTypeLength may be implemented by Rows. It should return the length -// of the column type if the column is a variable length type. If the column is -// not a variable length type ok should return false. -// If length is not limited other than system limits, it should return math.MaxInt64. -// The following are examples of returned values for various types: -// TEXT (math.MaxInt64, true) -// varchar(10) (10, true) -// nvarchar(10) (10, true) -// decimal (0, false) -// int (0, false) -// bytea(30) (30, true) -func (r *Rows) ColumnTypeLength(index int) (int64, bool) { - return makeGoLangTypeLength(r.cols[index].ti) -} - -// It should return -// the precision and scale for decimal types. If not applicable, ok should be false. -// The following are examples of returned values for various types: -// decimal(38, 4) (38, 4, true) -// int (0, 0, false) -// decimal (math.MaxInt64, math.MaxInt64, true) -func (r *Rows) ColumnTypePrecisionScale(index int) (int64, int64, bool) { - return makeGoLangTypePrecisionScale(r.cols[index].ti) -} - -// The nullable value should -// be true if it is known the column may be null, or false if the column is known -// to be not nullable. -// If the column nullability is unknown, ok should be false. -func (r *Rows) ColumnTypeNullable(index int) (nullable, ok bool) { - nullable = r.cols[index].Flags&colFlagNullable != 0 - ok = true - return -} - -func makeStrParam(val string) (res param) { - res.ti.TypeId = typeNVarChar - res.buffer = str2ucs2(val) - res.ti.Size = len(res.buffer) - return -} - -func (s *Stmt) makeParam(val driver.Value) (res param, err error) { - if val == nil { - res.ti.TypeId = typeNull - res.buffer = nil - res.ti.Size = 0 - return - } - switch val := val.(type) { - case int64: - res.ti.TypeId = typeIntN - res.buffer = make([]byte, 8) - res.ti.Size = 8 - binary.LittleEndian.PutUint64(res.buffer, uint64(val)) - case sql.NullInt64: - // only null values should be getting here - res.ti.TypeId = typeIntN - res.ti.Size = 8 - res.buffer = []byte{} - - case float64: - res.ti.TypeId = typeFltN - res.ti.Size = 8 - res.buffer = make([]byte, 8) - binary.LittleEndian.PutUint64(res.buffer, math.Float64bits(val)) - case sql.NullFloat64: - // only null values should be getting here - res.ti.TypeId = typeFltN - res.ti.Size = 8 - res.buffer = []byte{} - - case []byte: - res.ti.TypeId = typeBigVarBin - res.ti.Size = len(val) - res.buffer = val - case string: - res = makeStrParam(val) - case sql.NullString: - // only null values should be getting here - res.ti.TypeId = typeNVarChar - res.buffer = nil - res.ti.Size = 8000 - case bool: - res.ti.TypeId = typeBitN - res.ti.Size = 1 - res.buffer = make([]byte, 1) - if val { - res.buffer[0] = 1 - } - case sql.NullBool: - // only null values should be getting here - res.ti.TypeId = typeBitN - res.ti.Size = 1 - res.buffer = []byte{} - - case time.Time: - if s.c.sess.loginAck.TDSVersion >= verTDS73 { - res.ti.TypeId = typeDateTimeOffsetN - res.ti.Scale = 7 - res.buffer = encodeDateTimeOffset(val, int(res.ti.Scale)) - res.ti.Size = len(res.buffer) - } else { - res.ti.TypeId = typeDateTimeN - res.buffer = encodeDateTime(val) - res.ti.Size = len(res.buffer) - } - default: - return s.makeParamExtra(val) - } - return -} - -type Result struct { - c *Conn - rowsAffected int64 -} - -func (r *Result) RowsAffected() (int64, error) { - return r.rowsAffected, nil -} - -var _ driver.Pinger = &Conn{} - -// Ping is used to check if the remote server is available and satisfies the Pinger interface. -func (c *Conn) Ping(ctx context.Context) error { - if !c.connectionGood { - return driver.ErrBadConn - } - stmt := &Stmt{c, `select 1;`, 0, nil} - _, err := stmt.ExecContext(ctx, nil) - return err -} - -var _ driver.ConnBeginTx = &Conn{} - -// BeginTx satisfies ConnBeginTx. -func (c *Conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { - if !c.connectionGood { - return nil, driver.ErrBadConn - } - if opts.ReadOnly { - return nil, errors.New("Read-only transactions are not supported") - } - - var tdsIsolation isoLevel - switch sql.IsolationLevel(opts.Isolation) { - case sql.LevelDefault: - tdsIsolation = isolationUseCurrent - case sql.LevelReadUncommitted: - tdsIsolation = isolationReadUncommited - case sql.LevelReadCommitted: - tdsIsolation = isolationReadCommited - case sql.LevelWriteCommitted: - return nil, errors.New("LevelWriteCommitted isolation level is not supported") - case sql.LevelRepeatableRead: - tdsIsolation = isolationRepeatableRead - case sql.LevelSnapshot: - tdsIsolation = isolationSnapshot - case sql.LevelSerializable: - tdsIsolation = isolationSerializable - case sql.LevelLinearizable: - return nil, errors.New("LevelLinearizable isolation level is not supported") - default: - return nil, errors.New("Isolation level is not supported or unknown") - } - return c.begin(ctx, tdsIsolation) -} - -func (c *Conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { - if !c.connectionGood { - return nil, driver.ErrBadConn - } - if len(query) > 10 && strings.EqualFold(query[:10], "INSERTBULK") { - return c.prepareCopyIn(ctx, query) - } - - return c.prepareContext(ctx, query) -} - -func (s *Stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - if !s.c.connectionGood { - return nil, driver.ErrBadConn - } - list := make([]namedValue, len(args)) - for i, nv := range args { - list[i] = namedValue(nv) - } - return s.queryContext(ctx, list) -} - -func (s *Stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { - if !s.c.connectionGood { - return nil, driver.ErrBadConn - } - list := make([]namedValue, len(args)) - for i, nv := range args { - list[i] = namedValue(nv) - } - return s.exec(ctx, list) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/mssql_go110.go b/vendor/github.com/denisenkom/go-mssqldb/mssql_go110.go deleted file mode 100644 index 6d76fbad..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/mssql_go110.go +++ /dev/null @@ -1,52 +0,0 @@ -// +build go1.10 - -package mssql - -import ( - "context" - "database/sql/driver" - "errors" -) - -var _ driver.Connector = &Connector{} -var _ driver.SessionResetter = &Conn{} - -func (c *Conn) ResetSession(ctx context.Context) error { - if !c.connectionGood { - return driver.ErrBadConn - } - c.resetSession = true - - if c.connector == nil || len(c.connector.SessionInitSQL) == 0 { - return nil - } - - s, err := c.prepareContext(ctx, c.connector.SessionInitSQL) - if err != nil { - return driver.ErrBadConn - } - _, err = s.exec(ctx, nil) - if err != nil { - return driver.ErrBadConn - } - - return nil -} - -// Connect to the server and return a TDS connection. -func (c *Connector) Connect(ctx context.Context) (driver.Conn, error) { - conn, err := c.driver.connect(ctx, c, c.params) - if err == nil { - err = conn.ResetSession(ctx) - } - return conn, err -} - -// Driver underlying the Connector. -func (c *Connector) Driver() driver.Driver { - return c.driver -} - -func (r *Result) LastInsertId() (int64, error) { - return -1, errors.New("LastInsertId is not supported. Please use the OUTPUT clause or add `select ID = convert(bigint, SCOPE_IDENTITY())` to the end of your query.") -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/mssql_go110pre.go b/vendor/github.com/denisenkom/go-mssqldb/mssql_go110pre.go deleted file mode 100644 index 3baae0c4..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/mssql_go110pre.go +++ /dev/null @@ -1,31 +0,0 @@ -// +build !go1.10 - -package mssql - -import ( - "database/sql/driver" - "errors" -) - -func (r *Result) LastInsertId() (int64, error) { - s, err := r.c.Prepare("select cast(@@identity as bigint)") - if err != nil { - return 0, err - } - defer s.Close() - rows, err := s.Query(nil) - if err != nil { - return 0, err - } - defer rows.Close() - dest := make([]driver.Value, 1) - err = rows.Next(dest) - if err != nil { - return 0, err - } - if dest[0] == nil { - return -1, errors.New("There is no generated identity value") - } - lastInsertId := dest[0].(int64) - return lastInsertId, nil -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/mssql_go19.go b/vendor/github.com/denisenkom/go-mssqldb/mssql_go19.go deleted file mode 100644 index a2bd1167..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/mssql_go19.go +++ /dev/null @@ -1,196 +0,0 @@ -// +build go1.9 - -package mssql - -import ( - "database/sql" - "database/sql/driver" - "errors" - "fmt" - "reflect" - "time" - - // "github.com/cockroachdb/apd" - "github.com/golang-sql/civil" -) - -// Type alias provided for compatibility. - -type MssqlDriver = Driver // Deprecated: users should transition to the new name when possible. -type MssqlBulk = Bulk // Deprecated: users should transition to the new name when possible. -type MssqlBulkOptions = BulkOptions // Deprecated: users should transition to the new name when possible. -type MssqlConn = Conn // Deprecated: users should transition to the new name when possible. -type MssqlResult = Result // Deprecated: users should transition to the new name when possible. -type MssqlRows = Rows // Deprecated: users should transition to the new name when possible. -type MssqlStmt = Stmt // Deprecated: users should transition to the new name when possible. - -var _ driver.NamedValueChecker = &Conn{} - -// VarChar parameter types. -type VarChar string - -type NVarCharMax string -type VarCharMax string - -// DateTime1 encodes parameters to original DateTime SQL types. -type DateTime1 time.Time - -// DateTimeOffset encodes parameters to DateTimeOffset, preserving the UTC offset. -type DateTimeOffset time.Time - -func convertInputParameter(val interface{}) (interface{}, error) { - switch v := val.(type) { - case VarChar: - return val, nil - case NVarCharMax: - return val, nil - case VarCharMax: - return val, nil - case DateTime1: - return val, nil - case DateTimeOffset: - return val, nil - case civil.Date: - return val, nil - case civil.DateTime: - return val, nil - case civil.Time: - return val, nil - // case *apd.Decimal: - // return nil - default: - return driver.DefaultParameterConverter.ConvertValue(v) - } -} - -func (c *Conn) CheckNamedValue(nv *driver.NamedValue) error { - switch v := nv.Value.(type) { - case sql.Out: - if c.outs == nil { - c.outs = make(map[string]interface{}) - } - c.outs[nv.Name] = v.Dest - - if v.Dest == nil { - return errors.New("destination is a nil pointer") - } - - dest_info := reflect.ValueOf(v.Dest) - if dest_info.Kind() != reflect.Ptr { - return errors.New("destination not a pointer") - } - - if dest_info.IsNil() { - return errors.New("destination is a nil pointer") - } - - pointed_value := reflect.Indirect(dest_info) - - // don't allow pointer to a pointer, only pointer to a value can be handled - // correctly - if pointed_value.Kind() == reflect.Ptr { - return errors.New("destination is a pointer to a pointer") - } - - // Unwrap the Out value and check the inner value. - val := pointed_value.Interface() - if val == nil { - return errors.New("MSSQL does not allow NULL value without type for OUTPUT parameters") - } - conv, err := convertInputParameter(val) - if err != nil { - return err - } - if conv == nil { - // if we replace with nil we would lose type information - nv.Value = sql.Out{Dest: val} - } else { - nv.Value = sql.Out{Dest: conv} - } - return nil - case *ReturnStatus: - *v = 0 // By default the return value should be zero. - c.returnStatus = v - return driver.ErrRemoveArgument - case TVP: - return nil - default: - var err error - nv.Value, err = convertInputParameter(nv.Value) - return err - } -} - -func (s *Stmt) makeParamExtra(val driver.Value) (res param, err error) { - switch val := val.(type) { - case VarChar: - res.ti.TypeId = typeBigVarChar - res.buffer = []byte(val) - res.ti.Size = len(res.buffer) - case VarCharMax: - res.ti.TypeId = typeBigVarChar - res.buffer = []byte(val) - res.ti.Size = 0 // currently zero forces varchar(max) - case NVarCharMax: - res.ti.TypeId = typeNVarChar - res.buffer = str2ucs2(string(val)) - res.ti.Size = 0 // currently zero forces nvarchar(max) - case DateTime1: - t := time.Time(val) - res.ti.TypeId = typeDateTimeN - res.buffer = encodeDateTime(t) - res.ti.Size = len(res.buffer) - case DateTimeOffset: - res.ti.TypeId = typeDateTimeOffsetN - res.ti.Scale = 7 - res.buffer = encodeDateTimeOffset(time.Time(val), int(res.ti.Scale)) - res.ti.Size = len(res.buffer) - case civil.Date: - res.ti.TypeId = typeDateN - res.buffer = encodeDate(val.In(time.UTC)) - res.ti.Size = len(res.buffer) - case civil.DateTime: - res.ti.TypeId = typeDateTime2N - res.ti.Scale = 7 - res.buffer = encodeDateTime2(val.In(time.UTC), int(res.ti.Scale)) - res.ti.Size = len(res.buffer) - case civil.Time: - res.ti.TypeId = typeTimeN - res.ti.Scale = 7 - res.buffer = encodeTime(val.Hour, val.Minute, val.Second, val.Nanosecond, int(res.ti.Scale)) - res.ti.Size = len(res.buffer) - case sql.Out: - res, err = s.makeParam(val.Dest) - res.Flags = fByRevValue - case TVP: - err = val.check() - if err != nil { - return - } - schema, name, errGetName := getSchemeAndName(val.TypeName) - if errGetName != nil { - return - } - res.ti.UdtInfo.TypeName = name - res.ti.UdtInfo.SchemaName = schema - res.ti.TypeId = typeTvp - columnStr, tvpFieldIndexes, errCalTypes := val.columnTypes() - if errCalTypes != nil { - err = errCalTypes - return - } - res.buffer, err = val.encode(schema, name, columnStr, tvpFieldIndexes) - if err != nil { - return - } - res.ti.Size = len(res.buffer) - - default: - err = fmt.Errorf("mssql: unknown type for %T", val) - } - return -} - -func scanIntoOut(name string, fromServer, scanInto interface{}) error { - return convertAssign(scanInto, fromServer) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/mssql_go19pre.go b/vendor/github.com/denisenkom/go-mssqldb/mssql_go19pre.go deleted file mode 100644 index 9680f510..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/mssql_go19pre.go +++ /dev/null @@ -1,16 +0,0 @@ -// +build !go1.9 - -package mssql - -import ( - "database/sql/driver" - "fmt" -) - -func (s *Stmt) makeParamExtra(val driver.Value) (param, error) { - return param{}, fmt.Errorf("mssql: unknown type for %T", val) -} - -func scanIntoOut(name string, fromServer, scanInto interface{}) error { - return fmt.Errorf("mssql: unsupported OUTPUT type, use a newer Go version") -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/net.go b/vendor/github.com/denisenkom/go-mssqldb/net.go deleted file mode 100644 index 94858cc7..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/net.go +++ /dev/null @@ -1,168 +0,0 @@ -package mssql - -import ( - "fmt" - "net" - "time" -) - -type timeoutConn struct { - c net.Conn - timeout time.Duration -} - -func newTimeoutConn(conn net.Conn, timeout time.Duration) *timeoutConn { - return &timeoutConn{ - c: conn, - timeout: timeout, - } -} - -func (c *timeoutConn) Read(b []byte) (n int, err error) { - if c.timeout > 0 { - err = c.c.SetDeadline(time.Now().Add(c.timeout)) - if err != nil { - return - } - } - return c.c.Read(b) -} - -func (c *timeoutConn) Write(b []byte) (n int, err error) { - if c.timeout > 0 { - err = c.c.SetDeadline(time.Now().Add(c.timeout)) - if err != nil { - return - } - } - return c.c.Write(b) -} - -func (c timeoutConn) Close() error { - return c.c.Close() -} - -func (c timeoutConn) LocalAddr() net.Addr { - return c.c.LocalAddr() -} - -func (c timeoutConn) RemoteAddr() net.Addr { - return c.c.RemoteAddr() -} - -func (c timeoutConn) SetDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c timeoutConn) SetReadDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c timeoutConn) SetWriteDeadline(t time.Time) error { - panic("Not implemented") -} - -// this connection is used during TLS Handshake -// TDS protocol requires TLS handshake messages to be sent inside TDS packets -type tlsHandshakeConn struct { - buf *tdsBuffer - packetPending bool - continueRead bool -} - -func (c *tlsHandshakeConn) Read(b []byte) (n int, err error) { - if c.packetPending { - c.packetPending = false - err = c.buf.FinishPacket() - if err != nil { - err = fmt.Errorf("Cannot send handshake packet: %s", err.Error()) - return - } - c.continueRead = false - } - if !c.continueRead { - var packet packetType - packet, err = c.buf.BeginRead() - if err != nil { - err = fmt.Errorf("Cannot read handshake packet: %s", err.Error()) - return - } - if packet != packPrelogin { - err = fmt.Errorf("unexpected packet %d, expecting prelogin", packet) - return - } - c.continueRead = true - } - return c.buf.Read(b) -} - -func (c *tlsHandshakeConn) Write(b []byte) (n int, err error) { - if !c.packetPending { - c.buf.BeginPacket(packPrelogin, false) - c.packetPending = true - } - return c.buf.Write(b) -} - -func (c *tlsHandshakeConn) Close() error { - panic("Not implemented") -} - -func (c *tlsHandshakeConn) LocalAddr() net.Addr { - panic("Not implemented") -} - -func (c *tlsHandshakeConn) RemoteAddr() net.Addr { - panic("Not implemented") -} - -func (c *tlsHandshakeConn) SetDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c *tlsHandshakeConn) SetReadDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c *tlsHandshakeConn) SetWriteDeadline(t time.Time) error { - panic("Not implemented") -} - -// this connection just delegates all methods to it's wrapped connection -// it also allows switching underlying connection on the fly -// it is needed because tls.Conn does not allow switching underlying connection -type passthroughConn struct { - c net.Conn -} - -func (c passthroughConn) Read(b []byte) (n int, err error) { - return c.c.Read(b) -} - -func (c passthroughConn) Write(b []byte) (n int, err error) { - return c.c.Write(b) -} - -func (c passthroughConn) Close() error { - return c.c.Close() -} - -func (c passthroughConn) LocalAddr() net.Addr { - panic("Not implemented") -} - -func (c passthroughConn) RemoteAddr() net.Addr { - panic("Not implemented") -} - -func (c passthroughConn) SetDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c passthroughConn) SetReadDeadline(t time.Time) error { - panic("Not implemented") -} - -func (c passthroughConn) SetWriteDeadline(t time.Time) error { - panic("Not implemented") -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/ntlm.go b/vendor/github.com/denisenkom/go-mssqldb/ntlm.go deleted file mode 100644 index 7c0cc4f7..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/ntlm.go +++ /dev/null @@ -1,283 +0,0 @@ -// +build !windows - -package mssql - -import ( - "crypto/des" - "crypto/md5" - "crypto/rand" - "encoding/binary" - "errors" - "strings" - "unicode/utf16" - - "golang.org/x/crypto/md4" -) - -const ( - _NEGOTIATE_MESSAGE = 1 - _CHALLENGE_MESSAGE = 2 - _AUTHENTICATE_MESSAGE = 3 -) - -const ( - _NEGOTIATE_UNICODE = 0x00000001 - _NEGOTIATE_OEM = 0x00000002 - _NEGOTIATE_TARGET = 0x00000004 - _NEGOTIATE_SIGN = 0x00000010 - _NEGOTIATE_SEAL = 0x00000020 - _NEGOTIATE_DATAGRAM = 0x00000040 - _NEGOTIATE_LMKEY = 0x00000080 - _NEGOTIATE_NTLM = 0x00000200 - _NEGOTIATE_ANONYMOUS = 0x00000800 - _NEGOTIATE_OEM_DOMAIN_SUPPLIED = 0x00001000 - _NEGOTIATE_OEM_WORKSTATION_SUPPLIED = 0x00002000 - _NEGOTIATE_ALWAYS_SIGN = 0x00008000 - _NEGOTIATE_TARGET_TYPE_DOMAIN = 0x00010000 - _NEGOTIATE_TARGET_TYPE_SERVER = 0x00020000 - _NEGOTIATE_EXTENDED_SESSIONSECURITY = 0x00080000 - _NEGOTIATE_IDENTIFY = 0x00100000 - _REQUEST_NON_NT_SESSION_KEY = 0x00400000 - _NEGOTIATE_TARGET_INFO = 0x00800000 - _NEGOTIATE_VERSION = 0x02000000 - _NEGOTIATE_128 = 0x20000000 - _NEGOTIATE_KEY_EXCH = 0x40000000 - _NEGOTIATE_56 = 0x80000000 -) - -const _NEGOTIATE_FLAGS = _NEGOTIATE_UNICODE | - _NEGOTIATE_NTLM | - _NEGOTIATE_OEM_DOMAIN_SUPPLIED | - _NEGOTIATE_OEM_WORKSTATION_SUPPLIED | - _NEGOTIATE_ALWAYS_SIGN | - _NEGOTIATE_EXTENDED_SESSIONSECURITY - -type ntlmAuth struct { - Domain string - UserName string - Password string - Workstation string -} - -func getAuth(user, password, service, workstation string) (auth, bool) { - if !strings.ContainsRune(user, '\\') { - return nil, false - } - domain_user := strings.SplitN(user, "\\", 2) - return &ntlmAuth{ - Domain: domain_user[0], - UserName: domain_user[1], - Password: password, - Workstation: workstation, - }, true -} - -func utf16le(val string) []byte { - var v []byte - for _, r := range val { - if utf16.IsSurrogate(r) { - r1, r2 := utf16.EncodeRune(r) - v = append(v, byte(r1), byte(r1>>8)) - v = append(v, byte(r2), byte(r2>>8)) - } else { - v = append(v, byte(r), byte(r>>8)) - } - } - return v -} - -func (auth *ntlmAuth) InitialBytes() ([]byte, error) { - domain_len := len(auth.Domain) - workstation_len := len(auth.Workstation) - msg := make([]byte, 40+domain_len+workstation_len) - copy(msg, []byte("NTLMSSP\x00")) - binary.LittleEndian.PutUint32(msg[8:], _NEGOTIATE_MESSAGE) - binary.LittleEndian.PutUint32(msg[12:], _NEGOTIATE_FLAGS) - // Domain Name Fields - binary.LittleEndian.PutUint16(msg[16:], uint16(domain_len)) - binary.LittleEndian.PutUint16(msg[18:], uint16(domain_len)) - binary.LittleEndian.PutUint32(msg[20:], 40) - // Workstation Fields - binary.LittleEndian.PutUint16(msg[24:], uint16(workstation_len)) - binary.LittleEndian.PutUint16(msg[26:], uint16(workstation_len)) - binary.LittleEndian.PutUint32(msg[28:], uint32(40+domain_len)) - // Version - binary.LittleEndian.PutUint32(msg[32:], 0) - binary.LittleEndian.PutUint32(msg[36:], 0) - // Payload - copy(msg[40:], auth.Domain) - copy(msg[40+domain_len:], auth.Workstation) - return msg, nil -} - -var errorNTLM = errors.New("NTLM protocol error") - -func createDesKey(bytes, material []byte) { - material[0] = bytes[0] - material[1] = (byte)(bytes[0]<<7 | (bytes[1]&0xff)>>1) - material[2] = (byte)(bytes[1]<<6 | (bytes[2]&0xff)>>2) - material[3] = (byte)(bytes[2]<<5 | (bytes[3]&0xff)>>3) - material[4] = (byte)(bytes[3]<<4 | (bytes[4]&0xff)>>4) - material[5] = (byte)(bytes[4]<<3 | (bytes[5]&0xff)>>5) - material[6] = (byte)(bytes[5]<<2 | (bytes[6]&0xff)>>6) - material[7] = (byte)(bytes[6] << 1) -} - -func oddParity(bytes []byte) { - for i := 0; i < len(bytes); i++ { - b := bytes[i] - needsParity := (((b >> 7) ^ (b >> 6) ^ (b >> 5) ^ (b >> 4) ^ (b >> 3) ^ (b >> 2) ^ (b >> 1)) & 0x01) == 0 - if needsParity { - bytes[i] = bytes[i] | byte(0x01) - } else { - bytes[i] = bytes[i] & byte(0xfe) - } - } -} - -func encryptDes(key []byte, cleartext []byte, ciphertext []byte) { - var desKey [8]byte - createDesKey(key, desKey[:]) - cipher, err := des.NewCipher(desKey[:]) - if err != nil { - panic(err) - } - cipher.Encrypt(ciphertext, cleartext) -} - -func response(challenge [8]byte, hash [21]byte) (ret [24]byte) { - encryptDes(hash[:7], challenge[:], ret[:8]) - encryptDes(hash[7:14], challenge[:], ret[8:16]) - encryptDes(hash[14:], challenge[:], ret[16:]) - return -} - -func lmHash(password string) (hash [21]byte) { - var lmpass [14]byte - copy(lmpass[:14], []byte(strings.ToUpper(password))) - magic := []byte("KGS!@#$%") - encryptDes(lmpass[:7], magic, hash[:8]) - encryptDes(lmpass[7:], magic, hash[8:]) - return -} - -func lmResponse(challenge [8]byte, password string) [24]byte { - hash := lmHash(password) - return response(challenge, hash) -} - -func ntlmHash(password string) (hash [21]byte) { - h := md4.New() - h.Write(utf16le(password)) - h.Sum(hash[:0]) - return -} - -func ntResponse(challenge [8]byte, password string) [24]byte { - hash := ntlmHash(password) - return response(challenge, hash) -} - -func clientChallenge() (nonce [8]byte) { - _, err := rand.Read(nonce[:]) - if err != nil { - panic(err) - } - return -} - -func ntlmSessionResponse(clientNonce [8]byte, serverChallenge [8]byte, password string) [24]byte { - var sessionHash [16]byte - h := md5.New() - h.Write(serverChallenge[:]) - h.Write(clientNonce[:]) - h.Sum(sessionHash[:0]) - var hash [8]byte - copy(hash[:], sessionHash[:8]) - passwordHash := ntlmHash(password) - return response(hash, passwordHash) -} - -func (auth *ntlmAuth) NextBytes(bytes []byte) ([]byte, error) { - if string(bytes[0:8]) != "NTLMSSP\x00" { - return nil, errorNTLM - } - if binary.LittleEndian.Uint32(bytes[8:12]) != _CHALLENGE_MESSAGE { - return nil, errorNTLM - } - flags := binary.LittleEndian.Uint32(bytes[20:24]) - var challenge [8]byte - copy(challenge[:], bytes[24:32]) - - var lm, nt []byte - if (flags & _NEGOTIATE_EXTENDED_SESSIONSECURITY) != 0 { - nonce := clientChallenge() - var lm_bytes [24]byte - copy(lm_bytes[:8], nonce[:]) - lm = lm_bytes[:] - nt_bytes := ntlmSessionResponse(nonce, challenge, auth.Password) - nt = nt_bytes[:] - } else { - lm_bytes := lmResponse(challenge, auth.Password) - lm = lm_bytes[:] - nt_bytes := ntResponse(challenge, auth.Password) - nt = nt_bytes[:] - } - lm_len := len(lm) - nt_len := len(nt) - - domain16 := utf16le(auth.Domain) - domain_len := len(domain16) - user16 := utf16le(auth.UserName) - user_len := len(user16) - workstation16 := utf16le(auth.Workstation) - workstation_len := len(workstation16) - - msg := make([]byte, 88+lm_len+nt_len+domain_len+user_len+workstation_len) - copy(msg, []byte("NTLMSSP\x00")) - binary.LittleEndian.PutUint32(msg[8:], _AUTHENTICATE_MESSAGE) - // Lm Challenge Response Fields - binary.LittleEndian.PutUint16(msg[12:], uint16(lm_len)) - binary.LittleEndian.PutUint16(msg[14:], uint16(lm_len)) - binary.LittleEndian.PutUint32(msg[16:], 88) - // Nt Challenge Response Fields - binary.LittleEndian.PutUint16(msg[20:], uint16(nt_len)) - binary.LittleEndian.PutUint16(msg[22:], uint16(nt_len)) - binary.LittleEndian.PutUint32(msg[24:], uint32(88+lm_len)) - // Domain Name Fields - binary.LittleEndian.PutUint16(msg[28:], uint16(domain_len)) - binary.LittleEndian.PutUint16(msg[30:], uint16(domain_len)) - binary.LittleEndian.PutUint32(msg[32:], uint32(88+lm_len+nt_len)) - // User Name Fields - binary.LittleEndian.PutUint16(msg[36:], uint16(user_len)) - binary.LittleEndian.PutUint16(msg[38:], uint16(user_len)) - binary.LittleEndian.PutUint32(msg[40:], uint32(88+lm_len+nt_len+domain_len)) - // Workstation Fields - binary.LittleEndian.PutUint16(msg[44:], uint16(workstation_len)) - binary.LittleEndian.PutUint16(msg[46:], uint16(workstation_len)) - binary.LittleEndian.PutUint32(msg[48:], uint32(88+lm_len+nt_len+domain_len+user_len)) - // Encrypted Random Session Key Fields - binary.LittleEndian.PutUint16(msg[52:], 0) - binary.LittleEndian.PutUint16(msg[54:], 0) - binary.LittleEndian.PutUint32(msg[56:], uint32(88+lm_len+nt_len+domain_len+user_len+workstation_len)) - // Negotiate Flags - binary.LittleEndian.PutUint32(msg[60:], flags) - // Version - binary.LittleEndian.PutUint32(msg[64:], 0) - binary.LittleEndian.PutUint32(msg[68:], 0) - // MIC - binary.LittleEndian.PutUint32(msg[72:], 0) - binary.LittleEndian.PutUint32(msg[76:], 0) - binary.LittleEndian.PutUint32(msg[88:], 0) - binary.LittleEndian.PutUint32(msg[84:], 0) - // Payload - copy(msg[88:], lm) - copy(msg[88+lm_len:], nt) - copy(msg[88+lm_len+nt_len:], domain16) - copy(msg[88+lm_len+nt_len+domain_len:], user16) - copy(msg[88+lm_len+nt_len+domain_len+user_len:], workstation16) - return msg, nil -} - -func (auth *ntlmAuth) Free() { -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/rpc.go b/vendor/github.com/denisenkom/go-mssqldb/rpc.go deleted file mode 100644 index 4ca22578..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/rpc.go +++ /dev/null @@ -1,89 +0,0 @@ -package mssql - -import ( - "encoding/binary" -) - -type procId struct { - id uint16 - name string -} - -// parameter flags -const ( - fByRevValue = 1 - fDefaultValue = 2 -) - -type param struct { - Name string - Flags uint8 - ti typeInfo - buffer []byte -} - -const ( - fWithRecomp = 1 - fNoMetaData = 2 - fReuseMetaData = 4 -) - -var ( - sp_Cursor = procId{1, ""} - sp_CursorOpen = procId{2, ""} - sp_CursorPrepare = procId{3, ""} - sp_CursorExecute = procId{4, ""} - sp_CursorPrepExec = procId{5, ""} - sp_CursorUnprepare = procId{6, ""} - sp_CursorFetch = procId{7, ""} - sp_CursorOption = procId{8, ""} - sp_CursorClose = procId{9, ""} - sp_ExecuteSql = procId{10, ""} - sp_Prepare = procId{11, ""} - sp_PrepExec = procId{13, ""} - sp_PrepExecRpc = procId{14, ""} - sp_Unprepare = procId{15, ""} -) - -// http://msdn.microsoft.com/en-us/library/dd357576.aspx -func sendRpc(buf *tdsBuffer, headers []headerStruct, proc procId, flags uint16, params []param, resetSession bool) (err error) { - buf.BeginPacket(packRPCRequest, resetSession) - writeAllHeaders(buf, headers) - if len(proc.name) == 0 { - var idswitch uint16 = 0xffff - err = binary.Write(buf, binary.LittleEndian, &idswitch) - if err != nil { - return - } - err = binary.Write(buf, binary.LittleEndian, &proc.id) - if err != nil { - return - } - } else { - err = writeUsVarChar(buf, proc.name) - if err != nil { - return - } - } - err = binary.Write(buf, binary.LittleEndian, &flags) - if err != nil { - return - } - for _, param := range params { - if err = writeBVarChar(buf, param.Name); err != nil { - return - } - if err = binary.Write(buf, binary.LittleEndian, param.Flags); err != nil { - return - } - err = writeTypeInfo(buf, ¶m.ti) - if err != nil { - return - } - err = param.ti.Writer(buf, param.ti, param.buffer) - if err != nil { - return - } - } - return buf.FinishPacket() -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/sspi_windows.go b/vendor/github.com/denisenkom/go-mssqldb/sspi_windows.go deleted file mode 100644 index 9b5bc689..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/sspi_windows.go +++ /dev/null @@ -1,266 +0,0 @@ -package mssql - -import ( - "fmt" - "strings" - "syscall" - "unsafe" -) - -var ( - secur32_dll = syscall.NewLazyDLL("secur32.dll") - initSecurityInterface = secur32_dll.NewProc("InitSecurityInterfaceW") - sec_fn *SecurityFunctionTable -) - -func init() { - ptr, _, _ := initSecurityInterface.Call() - sec_fn = (*SecurityFunctionTable)(unsafe.Pointer(ptr)) -} - -const ( - SEC_E_OK = 0 - SECPKG_CRED_OUTBOUND = 2 - SEC_WINNT_AUTH_IDENTITY_UNICODE = 2 - ISC_REQ_DELEGATE = 0x00000001 - ISC_REQ_REPLAY_DETECT = 0x00000004 - ISC_REQ_SEQUENCE_DETECT = 0x00000008 - ISC_REQ_CONFIDENTIALITY = 0x00000010 - ISC_REQ_CONNECTION = 0x00000800 - SECURITY_NETWORK_DREP = 0 - SEC_I_CONTINUE_NEEDED = 0x00090312 - SEC_I_COMPLETE_NEEDED = 0x00090313 - SEC_I_COMPLETE_AND_CONTINUE = 0x00090314 - SECBUFFER_VERSION = 0 - SECBUFFER_TOKEN = 2 - NTLMBUF_LEN = 12000 -) - -const ISC_REQ = ISC_REQ_CONFIDENTIALITY | - ISC_REQ_REPLAY_DETECT | - ISC_REQ_SEQUENCE_DETECT | - ISC_REQ_CONNECTION | - ISC_REQ_DELEGATE - -type SecurityFunctionTable struct { - dwVersion uint32 - EnumerateSecurityPackages uintptr - QueryCredentialsAttributes uintptr - AcquireCredentialsHandle uintptr - FreeCredentialsHandle uintptr - Reserved2 uintptr - InitializeSecurityContext uintptr - AcceptSecurityContext uintptr - CompleteAuthToken uintptr - DeleteSecurityContext uintptr - ApplyControlToken uintptr - QueryContextAttributes uintptr - ImpersonateSecurityContext uintptr - RevertSecurityContext uintptr - MakeSignature uintptr - VerifySignature uintptr - FreeContextBuffer uintptr - QuerySecurityPackageInfo uintptr - Reserved3 uintptr - Reserved4 uintptr - Reserved5 uintptr - Reserved6 uintptr - Reserved7 uintptr - Reserved8 uintptr - QuerySecurityContextToken uintptr - EncryptMessage uintptr - DecryptMessage uintptr -} - -type SEC_WINNT_AUTH_IDENTITY struct { - User *uint16 - UserLength uint32 - Domain *uint16 - DomainLength uint32 - Password *uint16 - PasswordLength uint32 - Flags uint32 -} - -type TimeStamp struct { - LowPart uint32 - HighPart int32 -} - -type SecHandle struct { - dwLower uintptr - dwUpper uintptr -} - -type SecBuffer struct { - cbBuffer uint32 - BufferType uint32 - pvBuffer *byte -} - -type SecBufferDesc struct { - ulVersion uint32 - cBuffers uint32 - pBuffers *SecBuffer -} - -type SSPIAuth struct { - Domain string - UserName string - Password string - Service string - cred SecHandle - ctxt SecHandle -} - -func getAuth(user, password, service, workstation string) (auth, bool) { - if user == "" { - return &SSPIAuth{Service: service}, true - } - if !strings.ContainsRune(user, '\\') { - return nil, false - } - domain_user := strings.SplitN(user, "\\", 2) - return &SSPIAuth{ - Domain: domain_user[0], - UserName: domain_user[1], - Password: password, - Service: service, - }, true -} - -func (auth *SSPIAuth) InitialBytes() ([]byte, error) { - var identity *SEC_WINNT_AUTH_IDENTITY - if auth.UserName != "" { - identity = &SEC_WINNT_AUTH_IDENTITY{ - Flags: SEC_WINNT_AUTH_IDENTITY_UNICODE, - Password: syscall.StringToUTF16Ptr(auth.Password), - PasswordLength: uint32(len(auth.Password)), - Domain: syscall.StringToUTF16Ptr(auth.Domain), - DomainLength: uint32(len(auth.Domain)), - User: syscall.StringToUTF16Ptr(auth.UserName), - UserLength: uint32(len(auth.UserName)), - } - } - var ts TimeStamp - sec_ok, _, _ := syscall.Syscall9(sec_fn.AcquireCredentialsHandle, - 9, - 0, - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Negotiate"))), - SECPKG_CRED_OUTBOUND, - 0, - uintptr(unsafe.Pointer(identity)), - 0, - 0, - uintptr(unsafe.Pointer(&auth.cred)), - uintptr(unsafe.Pointer(&ts))) - if sec_ok != SEC_E_OK { - return nil, fmt.Errorf("AcquireCredentialsHandle failed %x", sec_ok) - } - - var buf SecBuffer - var desc SecBufferDesc - desc.ulVersion = SECBUFFER_VERSION - desc.cBuffers = 1 - desc.pBuffers = &buf - - outbuf := make([]byte, NTLMBUF_LEN) - buf.cbBuffer = NTLMBUF_LEN - buf.BufferType = SECBUFFER_TOKEN - buf.pvBuffer = &outbuf[0] - - var attrs uint32 - sec_ok, _, _ = syscall.Syscall12(sec_fn.InitializeSecurityContext, - 12, - uintptr(unsafe.Pointer(&auth.cred)), - 0, - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(auth.Service))), - ISC_REQ, - 0, - SECURITY_NETWORK_DREP, - 0, - 0, - uintptr(unsafe.Pointer(&auth.ctxt)), - uintptr(unsafe.Pointer(&desc)), - uintptr(unsafe.Pointer(&attrs)), - uintptr(unsafe.Pointer(&ts))) - if sec_ok == SEC_I_COMPLETE_AND_CONTINUE || - sec_ok == SEC_I_COMPLETE_NEEDED { - syscall.Syscall6(sec_fn.CompleteAuthToken, - 2, - uintptr(unsafe.Pointer(&auth.ctxt)), - uintptr(unsafe.Pointer(&desc)), - 0, 0, 0, 0) - } else if sec_ok != SEC_E_OK && - sec_ok != SEC_I_CONTINUE_NEEDED { - syscall.Syscall6(sec_fn.FreeCredentialsHandle, - 1, - uintptr(unsafe.Pointer(&auth.cred)), - 0, 0, 0, 0, 0) - return nil, fmt.Errorf("InitialBytes InitializeSecurityContext failed %x", sec_ok) - } - return outbuf[:buf.cbBuffer], nil -} - -func (auth *SSPIAuth) NextBytes(bytes []byte) ([]byte, error) { - var in_buf, out_buf SecBuffer - var in_desc, out_desc SecBufferDesc - - in_desc.ulVersion = SECBUFFER_VERSION - in_desc.cBuffers = 1 - in_desc.pBuffers = &in_buf - - out_desc.ulVersion = SECBUFFER_VERSION - out_desc.cBuffers = 1 - out_desc.pBuffers = &out_buf - - in_buf.BufferType = SECBUFFER_TOKEN - in_buf.pvBuffer = &bytes[0] - in_buf.cbBuffer = uint32(len(bytes)) - - outbuf := make([]byte, NTLMBUF_LEN) - out_buf.BufferType = SECBUFFER_TOKEN - out_buf.pvBuffer = &outbuf[0] - out_buf.cbBuffer = NTLMBUF_LEN - - var attrs uint32 - var ts TimeStamp - sec_ok, _, _ := syscall.Syscall12(sec_fn.InitializeSecurityContext, - 12, - uintptr(unsafe.Pointer(&auth.cred)), - uintptr(unsafe.Pointer(&auth.ctxt)), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(auth.Service))), - ISC_REQ, - 0, - SECURITY_NETWORK_DREP, - uintptr(unsafe.Pointer(&in_desc)), - 0, - uintptr(unsafe.Pointer(&auth.ctxt)), - uintptr(unsafe.Pointer(&out_desc)), - uintptr(unsafe.Pointer(&attrs)), - uintptr(unsafe.Pointer(&ts))) - if sec_ok == SEC_I_COMPLETE_AND_CONTINUE || - sec_ok == SEC_I_COMPLETE_NEEDED { - syscall.Syscall6(sec_fn.CompleteAuthToken, - 2, - uintptr(unsafe.Pointer(&auth.ctxt)), - uintptr(unsafe.Pointer(&out_desc)), - 0, 0, 0, 0) - } else if sec_ok != SEC_E_OK && - sec_ok != SEC_I_CONTINUE_NEEDED { - return nil, fmt.Errorf("NextBytes InitializeSecurityContext failed %x", sec_ok) - } - - return outbuf[:out_buf.cbBuffer], nil -} - -func (auth *SSPIAuth) Free() { - syscall.Syscall6(sec_fn.DeleteSecurityContext, - 1, - uintptr(unsafe.Pointer(&auth.ctxt)), - 0, 0, 0, 0, 0) - syscall.Syscall6(sec_fn.FreeCredentialsHandle, - 1, - uintptr(unsafe.Pointer(&auth.cred)), - 0, 0, 0, 0, 0) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/tds.go b/vendor/github.com/denisenkom/go-mssqldb/tds.go deleted file mode 100644 index 5a9f53b7..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/tds.go +++ /dev/null @@ -1,914 +0,0 @@ -package mssql - -import ( - "context" - "crypto/tls" - "crypto/x509" - "encoding/binary" - "errors" - "fmt" - "io" - "io/ioutil" - "net" - "sort" - "strconv" - "strings" - "unicode/utf16" - "unicode/utf8" -) - -func parseInstances(msg []byte) map[string]map[string]string { - results := map[string]map[string]string{} - if len(msg) > 3 && msg[0] == 5 { - out_s := string(msg[3:]) - tokens := strings.Split(out_s, ";") - instdict := map[string]string{} - got_name := false - var name string - for _, token := range tokens { - if got_name { - instdict[name] = token - got_name = false - } else { - name = token - if len(name) == 0 { - if len(instdict) == 0 { - break - } - results[strings.ToUpper(instdict["InstanceName"])] = instdict - instdict = map[string]string{} - continue - } - got_name = true - } - } - } - return results -} - -func getInstances(ctx context.Context, d Dialer, address string) (map[string]map[string]string, error) { - conn, err := d.DialContext(ctx, "udp", address+":1434") - if err != nil { - return nil, err - } - defer conn.Close() - deadline, _ := ctx.Deadline() - conn.SetDeadline(deadline) - _, err = conn.Write([]byte{3}) - if err != nil { - return nil, err - } - var resp = make([]byte, 16*1024-1) - read, err := conn.Read(resp) - if err != nil { - return nil, err - } - return parseInstances(resp[:read]), nil -} - -// tds versions -const ( - verTDS70 = 0x70000000 - verTDS71 = 0x71000000 - verTDS71rev1 = 0x71000001 - verTDS72 = 0x72090002 - verTDS73A = 0x730A0003 - verTDS73 = verTDS73A - verTDS73B = 0x730B0003 - verTDS74 = 0x74000004 -) - -// packet types -// https://msdn.microsoft.com/en-us/library/dd304214.aspx -const ( - packSQLBatch packetType = 1 - packRPCRequest = 3 - packReply = 4 - - // 2.2.1.7 Attention: https://msdn.microsoft.com/en-us/library/dd341449.aspx - // 4.19.2 Out-of-Band Attention Signal: https://msdn.microsoft.com/en-us/library/dd305167.aspx - packAttention = 6 - - packBulkLoadBCP = 7 - packTransMgrReq = 14 - packNormal = 15 - packLogin7 = 16 - packSSPIMessage = 17 - packPrelogin = 18 -) - -// prelogin fields -// http://msdn.microsoft.com/en-us/library/dd357559.aspx -const ( - preloginVERSION = 0 - preloginENCRYPTION = 1 - preloginINSTOPT = 2 - preloginTHREADID = 3 - preloginMARS = 4 - preloginTRACEID = 5 - preloginTERMINATOR = 0xff -) - -const ( - encryptOff = 0 // Encryption is available but off. - encryptOn = 1 // Encryption is available and on. - encryptNotSup = 2 // Encryption is not available. - encryptReq = 3 // Encryption is required. -) - -type tdsSession struct { - buf *tdsBuffer - loginAck loginAckStruct - database string - partner string - columns []columnStruct - tranid uint64 - logFlags uint64 - log optionalLogger - routedServer string - routedPort uint16 -} - -const ( - logErrors = 1 - logMessages = 2 - logRows = 4 - logSQL = 8 - logParams = 16 - logTransaction = 32 - logDebug = 64 -) - -type columnStruct struct { - UserType uint32 - Flags uint16 - ColName string - ti typeInfo -} - -type keySlice []uint8 - -func (p keySlice) Len() int { return len(p) } -func (p keySlice) Less(i, j int) bool { return p[i] < p[j] } -func (p keySlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -// http://msdn.microsoft.com/en-us/library/dd357559.aspx -func writePrelogin(w *tdsBuffer, fields map[uint8][]byte) error { - var err error - - w.BeginPacket(packPrelogin, false) - offset := uint16(5*len(fields) + 1) - keys := make(keySlice, 0, len(fields)) - for k, _ := range fields { - keys = append(keys, k) - } - sort.Sort(keys) - // writing header - for _, k := range keys { - err = w.WriteByte(k) - if err != nil { - return err - } - err = binary.Write(w, binary.BigEndian, offset) - if err != nil { - return err - } - v := fields[k] - size := uint16(len(v)) - err = binary.Write(w, binary.BigEndian, size) - if err != nil { - return err - } - offset += size - } - err = w.WriteByte(preloginTERMINATOR) - if err != nil { - return err - } - // writing values - for _, k := range keys { - v := fields[k] - written, err := w.Write(v) - if err != nil { - return err - } - if written != len(v) { - return errors.New("Write method didn't write the whole value") - } - } - return w.FinishPacket() -} - -func readPrelogin(r *tdsBuffer) (map[uint8][]byte, error) { - packet_type, err := r.BeginRead() - if err != nil { - return nil, err - } - struct_buf, err := ioutil.ReadAll(r) - if err != nil { - return nil, err - } - if packet_type != 4 { - return nil, errors.New("Invalid respones, expected packet type 4, PRELOGIN RESPONSE") - } - offset := 0 - results := map[uint8][]byte{} - for true { - rec_type := struct_buf[offset] - if rec_type == preloginTERMINATOR { - break - } - - rec_offset := binary.BigEndian.Uint16(struct_buf[offset+1:]) - rec_len := binary.BigEndian.Uint16(struct_buf[offset+3:]) - value := struct_buf[rec_offset : rec_offset+rec_len] - results[rec_type] = value - offset += 5 - } - return results, nil -} - -// OptionFlags2 -// http://msdn.microsoft.com/en-us/library/dd304019.aspx -const ( - fLanguageFatal = 1 - fODBC = 2 - fTransBoundary = 4 - fCacheConnect = 8 - fIntSecurity = 0x80 -) - -// TypeFlags -const ( - // 4 bits for fSQLType - // 1 bit for fOLEDB - fReadOnlyIntent = 32 -) - -type login struct { - TDSVersion uint32 - PacketSize uint32 - ClientProgVer uint32 - ClientPID uint32 - ConnectionID uint32 - OptionFlags1 uint8 - OptionFlags2 uint8 - TypeFlags uint8 - OptionFlags3 uint8 - ClientTimeZone int32 - ClientLCID uint32 - HostName string - UserName string - Password string - AppName string - ServerName string - CtlIntName string - Language string - Database string - ClientID [6]byte - SSPI []byte - AtchDBFile string - ChangePassword string -} - -type loginHeader struct { - Length uint32 - TDSVersion uint32 - PacketSize uint32 - ClientProgVer uint32 - ClientPID uint32 - ConnectionID uint32 - OptionFlags1 uint8 - OptionFlags2 uint8 - TypeFlags uint8 - OptionFlags3 uint8 - ClientTimeZone int32 - ClientLCID uint32 - HostNameOffset uint16 - HostNameLength uint16 - UserNameOffset uint16 - UserNameLength uint16 - PasswordOffset uint16 - PasswordLength uint16 - AppNameOffset uint16 - AppNameLength uint16 - ServerNameOffset uint16 - ServerNameLength uint16 - ExtensionOffset uint16 - ExtensionLenght uint16 - CtlIntNameOffset uint16 - CtlIntNameLength uint16 - LanguageOffset uint16 - LanguageLength uint16 - DatabaseOffset uint16 - DatabaseLength uint16 - ClientID [6]byte - SSPIOffset uint16 - SSPILength uint16 - AtchDBFileOffset uint16 - AtchDBFileLength uint16 - ChangePasswordOffset uint16 - ChangePasswordLength uint16 - SSPILongLength uint32 -} - -// convert Go string to UTF-16 encoded []byte (littleEndian) -// done manually rather than using bytes and binary packages -// for performance reasons -func str2ucs2(s string) []byte { - res := utf16.Encode([]rune(s)) - ucs2 := make([]byte, 2*len(res)) - for i := 0; i < len(res); i++ { - ucs2[2*i] = byte(res[i]) - ucs2[2*i+1] = byte(res[i] >> 8) - } - return ucs2 -} - -func ucs22str(s []byte) (string, error) { - if len(s)%2 != 0 { - return "", fmt.Errorf("Illegal UCS2 string length: %d", len(s)) - } - buf := make([]uint16, len(s)/2) - for i := 0; i < len(s); i += 2 { - buf[i/2] = binary.LittleEndian.Uint16(s[i:]) - } - return string(utf16.Decode(buf)), nil -} - -func manglePassword(password string) []byte { - var ucs2password []byte = str2ucs2(password) - for i, ch := range ucs2password { - ucs2password[i] = ((ch<<4)&0xff | (ch >> 4)) ^ 0xA5 - } - return ucs2password -} - -// http://msdn.microsoft.com/en-us/library/dd304019.aspx -func sendLogin(w *tdsBuffer, login login) error { - w.BeginPacket(packLogin7, false) - hostname := str2ucs2(login.HostName) - username := str2ucs2(login.UserName) - password := manglePassword(login.Password) - appname := str2ucs2(login.AppName) - servername := str2ucs2(login.ServerName) - ctlintname := str2ucs2(login.CtlIntName) - language := str2ucs2(login.Language) - database := str2ucs2(login.Database) - atchdbfile := str2ucs2(login.AtchDBFile) - changepassword := str2ucs2(login.ChangePassword) - hdr := loginHeader{ - TDSVersion: login.TDSVersion, - PacketSize: login.PacketSize, - ClientProgVer: login.ClientProgVer, - ClientPID: login.ClientPID, - ConnectionID: login.ConnectionID, - OptionFlags1: login.OptionFlags1, - OptionFlags2: login.OptionFlags2, - TypeFlags: login.TypeFlags, - OptionFlags3: login.OptionFlags3, - ClientTimeZone: login.ClientTimeZone, - ClientLCID: login.ClientLCID, - HostNameLength: uint16(utf8.RuneCountInString(login.HostName)), - UserNameLength: uint16(utf8.RuneCountInString(login.UserName)), - PasswordLength: uint16(utf8.RuneCountInString(login.Password)), - AppNameLength: uint16(utf8.RuneCountInString(login.AppName)), - ServerNameLength: uint16(utf8.RuneCountInString(login.ServerName)), - CtlIntNameLength: uint16(utf8.RuneCountInString(login.CtlIntName)), - LanguageLength: uint16(utf8.RuneCountInString(login.Language)), - DatabaseLength: uint16(utf8.RuneCountInString(login.Database)), - ClientID: login.ClientID, - SSPILength: uint16(len(login.SSPI)), - AtchDBFileLength: uint16(utf8.RuneCountInString(login.AtchDBFile)), - ChangePasswordLength: uint16(utf8.RuneCountInString(login.ChangePassword)), - } - offset := uint16(binary.Size(hdr)) - hdr.HostNameOffset = offset - offset += uint16(len(hostname)) - hdr.UserNameOffset = offset - offset += uint16(len(username)) - hdr.PasswordOffset = offset - offset += uint16(len(password)) - hdr.AppNameOffset = offset - offset += uint16(len(appname)) - hdr.ServerNameOffset = offset - offset += uint16(len(servername)) - hdr.CtlIntNameOffset = offset - offset += uint16(len(ctlintname)) - hdr.LanguageOffset = offset - offset += uint16(len(language)) - hdr.DatabaseOffset = offset - offset += uint16(len(database)) - hdr.SSPIOffset = offset - offset += uint16(len(login.SSPI)) - hdr.AtchDBFileOffset = offset - offset += uint16(len(atchdbfile)) - hdr.ChangePasswordOffset = offset - offset += uint16(len(changepassword)) - hdr.Length = uint32(offset) - var err error - err = binary.Write(w, binary.LittleEndian, &hdr) - if err != nil { - return err - } - _, err = w.Write(hostname) - if err != nil { - return err - } - _, err = w.Write(username) - if err != nil { - return err - } - _, err = w.Write(password) - if err != nil { - return err - } - _, err = w.Write(appname) - if err != nil { - return err - } - _, err = w.Write(servername) - if err != nil { - return err - } - _, err = w.Write(ctlintname) - if err != nil { - return err - } - _, err = w.Write(language) - if err != nil { - return err - } - _, err = w.Write(database) - if err != nil { - return err - } - _, err = w.Write(login.SSPI) - if err != nil { - return err - } - _, err = w.Write(atchdbfile) - if err != nil { - return err - } - _, err = w.Write(changepassword) - if err != nil { - return err - } - return w.FinishPacket() -} - -func readUcs2(r io.Reader, numchars int) (res string, err error) { - buf := make([]byte, numchars*2) - _, err = io.ReadFull(r, buf) - if err != nil { - return "", err - } - return ucs22str(buf) -} - -func readUsVarChar(r io.Reader) (res string, err error) { - numchars, err := readUshort(r) - if err != nil { - return - } - return readUcs2(r, int(numchars)) -} - -func writeUsVarChar(w io.Writer, s string) (err error) { - buf := str2ucs2(s) - var numchars int = len(buf) / 2 - if numchars > 0xffff { - panic("invalid size for US_VARCHAR") - } - err = binary.Write(w, binary.LittleEndian, uint16(numchars)) - if err != nil { - return - } - _, err = w.Write(buf) - return -} - -func readBVarChar(r io.Reader) (res string, err error) { - numchars, err := readByte(r) - if err != nil { - return "", err - } - - // A zero length could be returned, return an empty string - if numchars == 0 { - return "", nil - } - return readUcs2(r, int(numchars)) -} - -func writeBVarChar(w io.Writer, s string) (err error) { - buf := str2ucs2(s) - var numchars int = len(buf) / 2 - if numchars > 0xff { - panic("invalid size for B_VARCHAR") - } - err = binary.Write(w, binary.LittleEndian, uint8(numchars)) - if err != nil { - return - } - _, err = w.Write(buf) - return -} - -func readBVarByte(r io.Reader) (res []byte, err error) { - length, err := readByte(r) - if err != nil { - return - } - res = make([]byte, length) - _, err = io.ReadFull(r, res) - return -} - -func readUshort(r io.Reader) (res uint16, err error) { - err = binary.Read(r, binary.LittleEndian, &res) - return -} - -func readByte(r io.Reader) (res byte, err error) { - var b [1]byte - _, err = r.Read(b[:]) - res = b[0] - return -} - -// Packet Data Stream Headers -// http://msdn.microsoft.com/en-us/library/dd304953.aspx -type headerStruct struct { - hdrtype uint16 - data []byte -} - -const ( - dataStmHdrQueryNotif = 1 // query notifications - dataStmHdrTransDescr = 2 // MARS transaction descriptor (required) - dataStmHdrTraceActivity = 3 -) - -// Query Notifications Header -// http://msdn.microsoft.com/en-us/library/dd304949.aspx -type queryNotifHdr struct { - notifyId string - ssbDeployment string - notifyTimeout uint32 -} - -func (hdr queryNotifHdr) pack() (res []byte) { - notifyId := str2ucs2(hdr.notifyId) - ssbDeployment := str2ucs2(hdr.ssbDeployment) - - res = make([]byte, 2+len(notifyId)+2+len(ssbDeployment)+4) - b := res - - binary.LittleEndian.PutUint16(b, uint16(len(notifyId))) - b = b[2:] - copy(b, notifyId) - b = b[len(notifyId):] - - binary.LittleEndian.PutUint16(b, uint16(len(ssbDeployment))) - b = b[2:] - copy(b, ssbDeployment) - b = b[len(ssbDeployment):] - - binary.LittleEndian.PutUint32(b, hdr.notifyTimeout) - - return res -} - -// MARS Transaction Descriptor Header -// http://msdn.microsoft.com/en-us/library/dd340515.aspx -type transDescrHdr struct { - transDescr uint64 // transaction descriptor returned from ENVCHANGE - outstandingReqCnt uint32 // outstanding request count -} - -func (hdr transDescrHdr) pack() (res []byte) { - res = make([]byte, 8+4) - binary.LittleEndian.PutUint64(res, hdr.transDescr) - binary.LittleEndian.PutUint32(res[8:], hdr.outstandingReqCnt) - return res -} - -func writeAllHeaders(w io.Writer, headers []headerStruct) (err error) { - // Calculating total length. - var totallen uint32 = 4 - for _, hdr := range headers { - totallen += 4 + 2 + uint32(len(hdr.data)) - } - // writing - err = binary.Write(w, binary.LittleEndian, totallen) - if err != nil { - return err - } - for _, hdr := range headers { - var headerlen uint32 = 4 + 2 + uint32(len(hdr.data)) - err = binary.Write(w, binary.LittleEndian, headerlen) - if err != nil { - return err - } - err = binary.Write(w, binary.LittleEndian, hdr.hdrtype) - if err != nil { - return err - } - _, err = w.Write(hdr.data) - if err != nil { - return err - } - } - return nil -} - -func sendSqlBatch72(buf *tdsBuffer, sqltext string, headers []headerStruct, resetSession bool) (err error) { - buf.BeginPacket(packSQLBatch, resetSession) - - if err = writeAllHeaders(buf, headers); err != nil { - return - } - - _, err = buf.Write(str2ucs2(sqltext)) - if err != nil { - return - } - return buf.FinishPacket() -} - -// 2.2.1.7 Attention: https://msdn.microsoft.com/en-us/library/dd341449.aspx -// 4.19.2 Out-of-Band Attention Signal: https://msdn.microsoft.com/en-us/library/dd305167.aspx -func sendAttention(buf *tdsBuffer) error { - buf.BeginPacket(packAttention, false) - return buf.FinishPacket() -} - -type auth interface { - InitialBytes() ([]byte, error) - NextBytes([]byte) ([]byte, error) - Free() -} - -// SQL Server AlwaysOn Availability Group Listeners are bound by DNS to a -// list of IP addresses. So if there is more than one, try them all and -// use the first one that allows a connection. -func dialConnection(ctx context.Context, c *Connector, p connectParams) (conn net.Conn, err error) { - var ips []net.IP - ips, err = net.LookupIP(p.host) - if err != nil { - ip := net.ParseIP(p.host) - if ip == nil { - return nil, err - } - ips = []net.IP{ip} - } - if len(ips) == 1 { - d := c.getDialer(&p) - addr := net.JoinHostPort(ips[0].String(), strconv.Itoa(int(p.port))) - conn, err = d.DialContext(ctx, "tcp", addr) - - } else { - //Try Dials in parallel to avoid waiting for timeouts. - connChan := make(chan net.Conn, len(ips)) - errChan := make(chan error, len(ips)) - portStr := strconv.Itoa(int(p.port)) - for _, ip := range ips { - go func(ip net.IP) { - d := c.getDialer(&p) - addr := net.JoinHostPort(ip.String(), portStr) - conn, err := d.DialContext(ctx, "tcp", addr) - if err == nil { - connChan <- conn - } else { - errChan <- err - } - }(ip) - } - // Wait for either the *first* successful connection, or all the errors - wait_loop: - for i, _ := range ips { - select { - case conn = <-connChan: - // Got a connection to use, close any others - go func(n int) { - for i := 0; i < n; i++ { - select { - case conn := <-connChan: - conn.Close() - case <-errChan: - } - } - }(len(ips) - i - 1) - // Remove any earlier errors we may have collected - err = nil - break wait_loop - case err = <-errChan: - } - } - } - // Can't do the usual err != nil check, as it is possible to have gotten an error before a successful connection - if conn == nil { - f := "Unable to open tcp connection with host '%v:%v': %v" - return nil, fmt.Errorf(f, p.host, p.port, err.Error()) - } - return conn, err -} - -func connect(ctx context.Context, c *Connector, log optionalLogger, p connectParams) (res *tdsSession, err error) { - dialCtx := ctx - if p.dial_timeout > 0 { - var cancel func() - dialCtx, cancel = context.WithTimeout(ctx, p.dial_timeout) - defer cancel() - } - // if instance is specified use instance resolution service - if p.instance != "" { - p.instance = strings.ToUpper(p.instance) - d := c.getDialer(&p) - instances, err := getInstances(dialCtx, d, p.host) - if err != nil { - f := "Unable to get instances from Sql Server Browser on host %v: %v" - return nil, fmt.Errorf(f, p.host, err.Error()) - } - strport, ok := instances[p.instance]["tcp"] - if !ok { - f := "No instance matching '%v' returned from host '%v'" - return nil, fmt.Errorf(f, p.instance, p.host) - } - p.port, err = strconv.ParseUint(strport, 0, 16) - if err != nil { - f := "Invalid tcp port returned from Sql Server Browser '%v': %v" - return nil, fmt.Errorf(f, strport, err.Error()) - } - } - -initiate_connection: - conn, err := dialConnection(dialCtx, c, p) - if err != nil { - return nil, err - } - - toconn := newTimeoutConn(conn, p.conn_timeout) - - outbuf := newTdsBuffer(p.packetSize, toconn) - sess := tdsSession{ - buf: outbuf, - log: log, - logFlags: p.logFlags, - } - - instance_buf := []byte(p.instance) - instance_buf = append(instance_buf, 0) // zero terminate instance name - var encrypt byte - if p.disableEncryption { - encrypt = encryptNotSup - } else if p.encrypt { - encrypt = encryptOn - } else { - encrypt = encryptOff - } - fields := map[uint8][]byte{ - preloginVERSION: {0, 0, 0, 0, 0, 0}, - preloginENCRYPTION: {encrypt}, - preloginINSTOPT: instance_buf, - preloginTHREADID: {0, 0, 0, 0}, - preloginMARS: {0}, // MARS disabled - } - - err = writePrelogin(outbuf, fields) - if err != nil { - return nil, err - } - - fields, err = readPrelogin(outbuf) - if err != nil { - return nil, err - } - - encryptBytes, ok := fields[preloginENCRYPTION] - if !ok { - return nil, fmt.Errorf("Encrypt negotiation failed") - } - encrypt = encryptBytes[0] - if p.encrypt && (encrypt == encryptNotSup || encrypt == encryptOff) { - return nil, fmt.Errorf("Server does not support encryption") - } - - if encrypt != encryptNotSup { - var config tls.Config - if p.certificate != "" { - pem, err := ioutil.ReadFile(p.certificate) - if err != nil { - return nil, fmt.Errorf("Cannot read certificate %q: %v", p.certificate, err) - } - certs := x509.NewCertPool() - certs.AppendCertsFromPEM(pem) - config.RootCAs = certs - } - if p.trustServerCertificate { - config.InsecureSkipVerify = true - } - config.ServerName = p.hostInCertificate - // fix for https://github.com/denisenkom/go-mssqldb/issues/166 - // Go implementation of TLS payload size heuristic algorithm splits single TDS package to multiple TCP segments, - // while SQL Server seems to expect one TCP segment per encrypted TDS package. - // Setting DynamicRecordSizingDisabled to true disables that algorithm and uses 16384 bytes per TLS package - config.DynamicRecordSizingDisabled = true - // setting up connection handler which will allow wrapping of TLS handshake packets inside TDS stream - handshakeConn := tlsHandshakeConn{buf: outbuf} - passthrough := passthroughConn{c: &handshakeConn} - tlsConn := tls.Client(&passthrough, &config) - err = tlsConn.Handshake() - passthrough.c = toconn - outbuf.transport = tlsConn - if err != nil { - return nil, fmt.Errorf("TLS Handshake failed: %v", err) - } - if encrypt == encryptOff { - outbuf.afterFirst = func() { - outbuf.transport = toconn - } - } - } - - login := login{ - TDSVersion: verTDS74, - PacketSize: uint32(outbuf.PackageSize()), - Database: p.database, - OptionFlags2: fODBC, // to get unlimited TEXTSIZE - HostName: p.workstation, - ServerName: p.host, - AppName: p.appname, - TypeFlags: p.typeFlags, - } - auth, auth_ok := getAuth(p.user, p.password, p.serverSPN, p.workstation) - if auth_ok { - login.SSPI, err = auth.InitialBytes() - if err != nil { - return nil, err - } - login.OptionFlags2 |= fIntSecurity - defer auth.Free() - } else { - login.UserName = p.user - login.Password = p.password - } - err = sendLogin(outbuf, login) - if err != nil { - return nil, err - } - - // processing login response - success := false - for { - tokchan := make(chan tokenStruct, 5) - go processResponse(context.Background(), &sess, tokchan, nil) - for tok := range tokchan { - switch token := tok.(type) { - case sspiMsg: - sspi_msg, err := auth.NextBytes(token) - if err != nil { - return nil, err - } - if sspi_msg != nil && len(sspi_msg) > 0 { - outbuf.BeginPacket(packSSPIMessage, false) - _, err = outbuf.Write(sspi_msg) - if err != nil { - return nil, err - } - err = outbuf.FinishPacket() - if err != nil { - return nil, err - } - sspi_msg = nil - } - case loginAckStruct: - success = true - sess.loginAck = token - case error: - return nil, fmt.Errorf("Login error: %s", token.Error()) - case doneStruct: - if token.isError() { - return nil, fmt.Errorf("Login error: %s", token.getError()) - } - goto loginEnd - } - } - } -loginEnd: - if !success { - return nil, fmt.Errorf("Login failed") - } - if sess.routedServer != "" { - toconn.Close() - p.host = sess.routedServer - p.port = uint64(sess.routedPort) - if !p.hostInCertificateProvided { - p.hostInCertificate = sess.routedServer - } - goto initiate_connection - } - return &sess, nil -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/token.go b/vendor/github.com/denisenkom/go-mssqldb/token.go deleted file mode 100644 index 1acac8a5..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/token.go +++ /dev/null @@ -1,804 +0,0 @@ -package mssql - -import ( - "context" - "encoding/binary" - "errors" - "fmt" - "io" - "net" - "strconv" - "strings" -) - -//go:generate stringer -type token - -type token byte - -// token ids -const ( - tokenReturnStatus token = 121 // 0x79 - tokenColMetadata token = 129 // 0x81 - tokenOrder token = 169 // 0xA9 - tokenError token = 170 // 0xAA - tokenInfo token = 171 // 0xAB - tokenReturnValue token = 0xAC - tokenLoginAck token = 173 // 0xad - tokenRow token = 209 // 0xd1 - tokenNbcRow token = 210 // 0xd2 - tokenEnvChange token = 227 // 0xE3 - tokenSSPI token = 237 // 0xED - tokenDone token = 253 // 0xFD - tokenDoneProc token = 254 - tokenDoneInProc token = 255 -) - -// done flags -// https://msdn.microsoft.com/en-us/library/dd340421.aspx -const ( - doneFinal = 0 - doneMore = 1 - doneError = 2 - doneInxact = 4 - doneCount = 0x10 - doneAttn = 0x20 - doneSrvError = 0x100 -) - -// ENVCHANGE types -// http://msdn.microsoft.com/en-us/library/dd303449.aspx -const ( - envTypDatabase = 1 - envTypLanguage = 2 - envTypCharset = 3 - envTypPacketSize = 4 - envSortId = 5 - envSortFlags = 6 - envSqlCollation = 7 - envTypBeginTran = 8 - envTypCommitTran = 9 - envTypRollbackTran = 10 - envEnlistDTC = 11 - envDefectTran = 12 - envDatabaseMirrorPartner = 13 - envPromoteTran = 15 - envTranMgrAddr = 16 - envTranEnded = 17 - envResetConnAck = 18 - envStartedInstanceName = 19 - envRouting = 20 -) - -// COLMETADATA flags -// https://msdn.microsoft.com/en-us/library/dd357363.aspx -const ( - colFlagNullable = 1 - // TODO implement more flags -) - -// interface for all tokens -type tokenStruct interface{} - -type orderStruct struct { - ColIds []uint16 -} - -type doneStruct struct { - Status uint16 - CurCmd uint16 - RowCount uint64 - errors []Error -} - -func (d doneStruct) isError() bool { - return d.Status&doneError != 0 || len(d.errors) > 0 -} - -func (d doneStruct) getError() Error { - if len(d.errors) > 0 { - return d.errors[len(d.errors)-1] - } else { - return Error{Message: "Request failed but didn't provide reason"} - } -} - -type doneInProcStruct doneStruct - -var doneFlags2str = map[uint16]string{ - doneFinal: "final", - doneMore: "more", - doneError: "error", - doneInxact: "inxact", - doneCount: "count", - doneAttn: "attn", - doneSrvError: "srverror", -} - -func doneFlags2Str(flags uint16) string { - strs := make([]string, 0, len(doneFlags2str)) - for flag, tag := range doneFlags2str { - if flags&flag != 0 { - strs = append(strs, tag) - } - } - return strings.Join(strs, "|") -} - -// ENVCHANGE stream -// http://msdn.microsoft.com/en-us/library/dd303449.aspx -func processEnvChg(sess *tdsSession) { - size := sess.buf.uint16() - r := &io.LimitedReader{R: sess.buf, N: int64(size)} - for { - var err error - var envtype uint8 - err = binary.Read(r, binary.LittleEndian, &envtype) - if err == io.EOF { - return - } - if err != nil { - badStreamPanic(err) - } - switch envtype { - case envTypDatabase: - sess.database, err = readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - _, err = readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - case envTypLanguage: - // currently ignored - // new value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envTypCharset: - // currently ignored - // new value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envTypPacketSize: - packetsize, err := readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - _, err = readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - packetsizei, err := strconv.Atoi(packetsize) - if err != nil { - badStreamPanicf("Invalid Packet size value returned from server (%s): %s", packetsize, err.Error()) - } - sess.buf.ResizeBuffer(packetsizei) - case envSortId: - // currently ignored - // new value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envSortFlags: - // currently ignored - // new value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envSqlCollation: - // currently ignored - var collationSize uint8 - err = binary.Read(r, binary.LittleEndian, &collationSize) - if err != nil { - badStreamPanic(err) - } - - // SQL Collation data should contain 5 bytes in length - if collationSize != 5 { - badStreamPanicf("Invalid SQL Collation size value returned from server: %d", collationSize) - } - - // 4 bytes, contains: LCID ColFlags Version - var info uint32 - err = binary.Read(r, binary.LittleEndian, &info) - if err != nil { - badStreamPanic(err) - } - - // 1 byte, contains: sortID - var sortID uint8 - err = binary.Read(r, binary.LittleEndian, &sortID) - if err != nil { - badStreamPanic(err) - } - - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envTypBeginTran: - tranid, err := readBVarByte(r) - if len(tranid) != 8 { - badStreamPanicf("invalid size of transaction identifier: %d", len(tranid)) - } - sess.tranid = binary.LittleEndian.Uint64(tranid) - if err != nil { - badStreamPanic(err) - } - if sess.logFlags&logTransaction != 0 { - sess.log.Printf("BEGIN TRANSACTION %x\n", sess.tranid) - } - _, err = readBVarByte(r) - if err != nil { - badStreamPanic(err) - } - case envTypCommitTran, envTypRollbackTran: - _, err = readBVarByte(r) - if err != nil { - badStreamPanic(err) - } - _, err = readBVarByte(r) - if err != nil { - badStreamPanic(err) - } - if sess.logFlags&logTransaction != 0 { - if envtype == envTypCommitTran { - sess.log.Printf("COMMIT TRANSACTION %x\n", sess.tranid) - } else { - sess.log.Printf("ROLLBACK TRANSACTION %x\n", sess.tranid) - } - } - sess.tranid = 0 - case envEnlistDTC: - // currently ignored - // new value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envDefectTran: - // currently ignored - // new value - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envDatabaseMirrorPartner: - sess.partner, err = readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - _, err = readBVarChar(r) - if err != nil { - badStreamPanic(err) - } - case envPromoteTran: - // currently ignored - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // dtc token - // spec says it should be L_VARBYTE, so this code might be wrong - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envTranMgrAddr: - // currently ignored - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // XACT_MANAGER_ADDRESS = B_VARBYTE - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envTranEnded: - // currently ignored - // old value, B_VARBYTE - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envResetConnAck: - // currently ignored - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envStartedInstanceName: - // currently ignored - // old value, should be 0 - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - // instance name - if _, err = readBVarChar(r); err != nil { - badStreamPanic(err) - } - case envRouting: - // RoutingData message is: - // ValueLength USHORT - // Protocol (TCP = 0) BYTE - // ProtocolProperty (new port) USHORT - // AlternateServer US_VARCHAR - _, err := readUshort(r) - if err != nil { - badStreamPanic(err) - } - protocol, err := readByte(r) - if err != nil || protocol != 0 { - badStreamPanic(err) - } - newPort, err := readUshort(r) - if err != nil { - badStreamPanic(err) - } - newServer, err := readUsVarChar(r) - if err != nil { - badStreamPanic(err) - } - // consume the OLDVALUE = %x00 %x00 - _, err = readUshort(r) - if err != nil { - badStreamPanic(err) - } - sess.routedServer = newServer - sess.routedPort = newPort - default: - // ignore rest of records because we don't know how to skip those - sess.log.Printf("WARN: Unknown ENVCHANGE record detected with type id = %d\n", envtype) - break - } - - } -} - -// http://msdn.microsoft.com/en-us/library/dd358180.aspx -func parseReturnStatus(r *tdsBuffer) ReturnStatus { - return ReturnStatus(r.int32()) -} - -func parseOrder(r *tdsBuffer) (res orderStruct) { - len := int(r.uint16()) - res.ColIds = make([]uint16, len/2) - for i := 0; i < len/2; i++ { - res.ColIds[i] = r.uint16() - } - return res -} - -// https://msdn.microsoft.com/en-us/library/dd340421.aspx -func parseDone(r *tdsBuffer) (res doneStruct) { - res.Status = r.uint16() - res.CurCmd = r.uint16() - res.RowCount = r.uint64() - return res -} - -// https://msdn.microsoft.com/en-us/library/dd340553.aspx -func parseDoneInProc(r *tdsBuffer) (res doneInProcStruct) { - res.Status = r.uint16() - res.CurCmd = r.uint16() - res.RowCount = r.uint64() - return res -} - -type sspiMsg []byte - -func parseSSPIMsg(r *tdsBuffer) sspiMsg { - size := r.uint16() - buf := make([]byte, size) - r.ReadFull(buf) - return sspiMsg(buf) -} - -type loginAckStruct struct { - Interface uint8 - TDSVersion uint32 - ProgName string - ProgVer uint32 -} - -func parseLoginAck(r *tdsBuffer) loginAckStruct { - size := r.uint16() - buf := make([]byte, size) - r.ReadFull(buf) - var res loginAckStruct - res.Interface = buf[0] - res.TDSVersion = binary.BigEndian.Uint32(buf[1:]) - prognamelen := buf[1+4] - var err error - if res.ProgName, err = ucs22str(buf[1+4+1 : 1+4+1+prognamelen*2]); err != nil { - badStreamPanic(err) - } - res.ProgVer = binary.BigEndian.Uint32(buf[size-4:]) - return res -} - -// http://msdn.microsoft.com/en-us/library/dd357363.aspx -func parseColMetadata72(r *tdsBuffer) (columns []columnStruct) { - count := r.uint16() - if count == 0xffff { - // no metadata is sent - return nil - } - columns = make([]columnStruct, count) - for i := range columns { - column := &columns[i] - column.UserType = r.uint32() - column.Flags = r.uint16() - - // parsing TYPE_INFO structure - column.ti = readTypeInfo(r) - column.ColName = r.BVarChar() - } - return columns -} - -// http://msdn.microsoft.com/en-us/library/dd357254.aspx -func parseRow(r *tdsBuffer, columns []columnStruct, row []interface{}) { - for i, column := range columns { - row[i] = column.ti.Reader(&column.ti, r) - } -} - -// http://msdn.microsoft.com/en-us/library/dd304783.aspx -func parseNbcRow(r *tdsBuffer, columns []columnStruct, row []interface{}) { - bitlen := (len(columns) + 7) / 8 - pres := make([]byte, bitlen) - r.ReadFull(pres) - for i, col := range columns { - if pres[i/8]&(1<<(uint(i)%8)) != 0 { - row[i] = nil - continue - } - row[i] = col.ti.Reader(&col.ti, r) - } -} - -// http://msdn.microsoft.com/en-us/library/dd304156.aspx -func parseError72(r *tdsBuffer) (res Error) { - length := r.uint16() - _ = length // ignore length - res.Number = r.int32() - res.State = r.byte() - res.Class = r.byte() - res.Message = r.UsVarChar() - res.ServerName = r.BVarChar() - res.ProcName = r.BVarChar() - res.LineNo = r.int32() - return -} - -// http://msdn.microsoft.com/en-us/library/dd304156.aspx -func parseInfo(r *tdsBuffer) (res Error) { - length := r.uint16() - _ = length // ignore length - res.Number = r.int32() - res.State = r.byte() - res.Class = r.byte() - res.Message = r.UsVarChar() - res.ServerName = r.BVarChar() - res.ProcName = r.BVarChar() - res.LineNo = r.int32() - return -} - -// https://msdn.microsoft.com/en-us/library/dd303881.aspx -func parseReturnValue(r *tdsBuffer) (nv namedValue) { - /* - ParamOrdinal - ParamName - Status - UserType - Flags - TypeInfo - CryptoMetadata - Value - */ - r.uint16() - nv.Name = r.BVarChar() - r.byte() - r.uint32() // UserType (uint16 prior to 7.2) - r.uint16() - ti := readTypeInfo(r) - nv.Value = ti.Reader(&ti, r) - return -} - -func processSingleResponse(sess *tdsSession, ch chan tokenStruct, outs map[string]interface{}) { - defer func() { - if err := recover(); err != nil { - if sess.logFlags&logErrors != 0 { - sess.log.Printf("ERROR: Intercepted panic %v", err) - } - ch <- err - } - close(ch) - }() - - packet_type, err := sess.buf.BeginRead() - if err != nil { - if sess.logFlags&logErrors != 0 { - sess.log.Printf("ERROR: BeginRead failed %v", err) - } - ch <- err - return - } - if packet_type != packReply { - badStreamPanic(fmt.Errorf("unexpected packet type in reply: got %v, expected %v", packet_type, packReply)) - } - var columns []columnStruct - errs := make([]Error, 0, 5) - for { - token := token(sess.buf.byte()) - if sess.logFlags&logDebug != 0 { - sess.log.Printf("got token %v", token) - } - switch token { - case tokenSSPI: - ch <- parseSSPIMsg(sess.buf) - return - case tokenReturnStatus: - returnStatus := parseReturnStatus(sess.buf) - ch <- returnStatus - case tokenLoginAck: - loginAck := parseLoginAck(sess.buf) - ch <- loginAck - case tokenOrder: - order := parseOrder(sess.buf) - ch <- order - case tokenDoneInProc: - done := parseDoneInProc(sess.buf) - if sess.logFlags&logRows != 0 && done.Status&doneCount != 0 { - sess.log.Printf("(%d row(s) affected)\n", done.RowCount) - } - ch <- done - case tokenDone, tokenDoneProc: - done := parseDone(sess.buf) - done.errors = errs - if sess.logFlags&logDebug != 0 { - sess.log.Printf("got DONE or DONEPROC status=%d", done.Status) - } - if done.Status&doneSrvError != 0 { - ch <- errors.New("SQL Server had internal error") - return - } - if sess.logFlags&logRows != 0 && done.Status&doneCount != 0 { - sess.log.Printf("(%d row(s) affected)\n", done.RowCount) - } - ch <- done - if done.Status&doneMore == 0 { - return - } - case tokenColMetadata: - columns = parseColMetadata72(sess.buf) - ch <- columns - case tokenRow: - row := make([]interface{}, len(columns)) - parseRow(sess.buf, columns, row) - ch <- row - case tokenNbcRow: - row := make([]interface{}, len(columns)) - parseNbcRow(sess.buf, columns, row) - ch <- row - case tokenEnvChange: - processEnvChg(sess) - case tokenError: - err := parseError72(sess.buf) - if sess.logFlags&logDebug != 0 { - sess.log.Printf("got ERROR %d %s", err.Number, err.Message) - } - errs = append(errs, err) - if sess.logFlags&logErrors != 0 { - sess.log.Println(err.Message) - } - case tokenInfo: - info := parseInfo(sess.buf) - if sess.logFlags&logDebug != 0 { - sess.log.Printf("got INFO %d %s", info.Number, info.Message) - } - if sess.logFlags&logMessages != 0 { - sess.log.Println(info.Message) - } - case tokenReturnValue: - nv := parseReturnValue(sess.buf) - if len(nv.Name) > 0 { - name := nv.Name[1:] // Remove the leading "@". - if ov, has := outs[name]; has { - err = scanIntoOut(name, nv.Value, ov) - if err != nil { - fmt.Println("scan error", err) - ch <- err - } - } - } - default: - badStreamPanic(fmt.Errorf("unknown token type returned: %v", token)) - } - } -} - -type parseRespIter byte - -const ( - parseRespIterContinue parseRespIter = iota // Continue parsing current token. - parseRespIterNext // Fetch the next token. - parseRespIterDone // Done with parsing the response. -) - -type parseRespState byte - -const ( - parseRespStateNormal parseRespState = iota // Normal response state. - parseRespStateCancel // Query is canceled, wait for server to confirm. - parseRespStateClosing // Waiting for tokens to come through. -) - -type parseResp struct { - sess *tdsSession - ctxDone <-chan struct{} - state parseRespState - cancelError error -} - -func (ts *parseResp) sendAttention(ch chan tokenStruct) parseRespIter { - if err := sendAttention(ts.sess.buf); err != nil { - ts.dlogf("failed to send attention signal %v", err) - ch <- err - return parseRespIterDone - } - ts.state = parseRespStateCancel - return parseRespIterContinue -} - -func (ts *parseResp) dlog(msg string) { - if ts.sess.logFlags&logDebug != 0 { - ts.sess.log.Println(msg) - } -} -func (ts *parseResp) dlogf(f string, v ...interface{}) { - if ts.sess.logFlags&logDebug != 0 { - ts.sess.log.Printf(f, v...) - } -} - -func (ts *parseResp) iter(ctx context.Context, ch chan tokenStruct, tokChan chan tokenStruct) parseRespIter { - switch ts.state { - default: - panic("unknown state") - case parseRespStateNormal: - select { - case tok, ok := <-tokChan: - if !ok { - ts.dlog("response finished") - return parseRespIterDone - } - if err, ok := tok.(net.Error); ok && err.Timeout() { - ts.cancelError = err - ts.dlog("got timeout error, sending attention signal to server") - return ts.sendAttention(ch) - } - // Pass the token along. - ch <- tok - return parseRespIterContinue - - case <-ts.ctxDone: - ts.ctxDone = nil - ts.dlog("got cancel message, sending attention signal to server") - return ts.sendAttention(ch) - } - case parseRespStateCancel: // Read all responses until a DONE or error is received.Auth - select { - case tok, ok := <-tokChan: - if !ok { - ts.dlog("response finished but waiting for attention ack") - return parseRespIterNext - } - switch tok := tok.(type) { - default: - // Ignore all other tokens while waiting. - // The TDS spec says other tokens may arrive after an attention - // signal is sent. Ignore these tokens and continue looking for - // a DONE with attention confirm mark. - case doneStruct: - if tok.Status&doneAttn != 0 { - ts.dlog("got cancellation confirmation from server") - if ts.cancelError != nil { - ch <- ts.cancelError - ts.cancelError = nil - } else { - ch <- ctx.Err() - } - return parseRespIterDone - } - - // If an error happens during cancel, pass it along and just stop. - // We are uncertain to receive more tokens. - case error: - ch <- tok - ts.state = parseRespStateClosing - } - return parseRespIterContinue - case <-ts.ctxDone: - ts.ctxDone = nil - ts.state = parseRespStateClosing - return parseRespIterContinue - } - case parseRespStateClosing: // Wait for current token chan to close. - if _, ok := <-tokChan; !ok { - ts.dlog("response finished") - return parseRespIterDone - } - return parseRespIterContinue - } -} - -func processResponse(ctx context.Context, sess *tdsSession, ch chan tokenStruct, outs map[string]interface{}) { - ts := &parseResp{ - sess: sess, - ctxDone: ctx.Done(), - } - defer func() { - // Ensure any remaining error is piped through - // or the query may look like it executed when it actually failed. - if ts.cancelError != nil { - ch <- ts.cancelError - ts.cancelError = nil - } - close(ch) - }() - - // Loop over multiple responses. - for { - ts.dlog("initiating response reading") - - tokChan := make(chan tokenStruct) - go processSingleResponse(sess, tokChan, outs) - - // Loop over multiple tokens in response. - tokensLoop: - for { - switch ts.iter(ctx, ch, tokChan) { - case parseRespIterContinue: - // Nothing, continue to next token. - case parseRespIterNext: - break tokensLoop - case parseRespIterDone: - return - } - } - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/token_string.go b/vendor/github.com/denisenkom/go-mssqldb/token_string.go deleted file mode 100644 index c075b23b..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/token_string.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by "stringer -type token"; DO NOT EDIT - -package mssql - -import "fmt" - -const ( - _token_name_0 = "tokenReturnStatus" - _token_name_1 = "tokenColMetadata" - _token_name_2 = "tokenOrdertokenErrortokenInfo" - _token_name_3 = "tokenLoginAck" - _token_name_4 = "tokenRowtokenNbcRow" - _token_name_5 = "tokenEnvChange" - _token_name_6 = "tokenSSPI" - _token_name_7 = "tokenDonetokenDoneProctokenDoneInProc" -) - -var ( - _token_index_0 = [...]uint8{0, 17} - _token_index_1 = [...]uint8{0, 16} - _token_index_2 = [...]uint8{0, 10, 20, 29} - _token_index_3 = [...]uint8{0, 13} - _token_index_4 = [...]uint8{0, 8, 19} - _token_index_5 = [...]uint8{0, 14} - _token_index_6 = [...]uint8{0, 9} - _token_index_7 = [...]uint8{0, 9, 22, 37} -) - -func (i token) String() string { - switch { - case i == 121: - return _token_name_0 - case i == 129: - return _token_name_1 - case 169 <= i && i <= 171: - i -= 169 - return _token_name_2[_token_index_2[i]:_token_index_2[i+1]] - case i == 173: - return _token_name_3 - case 209 <= i && i <= 210: - i -= 209 - return _token_name_4[_token_index_4[i]:_token_index_4[i+1]] - case i == 227: - return _token_name_5 - case i == 237: - return _token_name_6 - case 253 <= i && i <= 255: - i -= 253 - return _token_name_7[_token_index_7[i]:_token_index_7[i+1]] - default: - return fmt.Sprintf("token(%d)", i) - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/tran.go b/vendor/github.com/denisenkom/go-mssqldb/tran.go deleted file mode 100644 index cb643681..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/tran.go +++ /dev/null @@ -1,110 +0,0 @@ -package mssql - -// Transaction Manager requests -// http://msdn.microsoft.com/en-us/library/dd339887.aspx - -import ( - "encoding/binary" -) - -const ( - tmGetDtcAddr = 0 - tmPropagateXact = 1 - tmBeginXact = 5 - tmPromoteXact = 6 - tmCommitXact = 7 - tmRollbackXact = 8 - tmSaveXact = 9 -) - -type isoLevel uint8 - -const ( - isolationUseCurrent isoLevel = 0 - isolationReadUncommited = 1 - isolationReadCommited = 2 - isolationRepeatableRead = 3 - isolationSerializable = 4 - isolationSnapshot = 5 -) - -func sendBeginXact(buf *tdsBuffer, headers []headerStruct, isolation isoLevel, name string, resetSession bool) (err error) { - buf.BeginPacket(packTransMgrReq, resetSession) - writeAllHeaders(buf, headers) - var rqtype uint16 = tmBeginXact - err = binary.Write(buf, binary.LittleEndian, &rqtype) - if err != nil { - return - } - err = binary.Write(buf, binary.LittleEndian, &isolation) - if err != nil { - return - } - err = writeBVarChar(buf, name) - if err != nil { - return - } - return buf.FinishPacket() -} - -const ( - fBeginXact = 1 -) - -func sendCommitXact(buf *tdsBuffer, headers []headerStruct, name string, flags uint8, isolation uint8, newname string, resetSession bool) error { - buf.BeginPacket(packTransMgrReq, resetSession) - writeAllHeaders(buf, headers) - var rqtype uint16 = tmCommitXact - err := binary.Write(buf, binary.LittleEndian, &rqtype) - if err != nil { - return err - } - err = writeBVarChar(buf, name) - if err != nil { - return err - } - err = binary.Write(buf, binary.LittleEndian, &flags) - if err != nil { - return err - } - if flags&fBeginXact != 0 { - err = binary.Write(buf, binary.LittleEndian, &isolation) - if err != nil { - return err - } - err = writeBVarChar(buf, name) - if err != nil { - return err - } - } - return buf.FinishPacket() -} - -func sendRollbackXact(buf *tdsBuffer, headers []headerStruct, name string, flags uint8, isolation uint8, newname string, resetSession bool) error { - buf.BeginPacket(packTransMgrReq, resetSession) - writeAllHeaders(buf, headers) - var rqtype uint16 = tmRollbackXact - err := binary.Write(buf, binary.LittleEndian, &rqtype) - if err != nil { - return err - } - err = writeBVarChar(buf, name) - if err != nil { - return err - } - err = binary.Write(buf, binary.LittleEndian, &flags) - if err != nil { - return err - } - if flags&fBeginXact != 0 { - err = binary.Write(buf, binary.LittleEndian, &isolation) - if err != nil { - return err - } - err = writeBVarChar(buf, name) - if err != nil { - return err - } - } - return buf.FinishPacket() -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/tvp_go19.go b/vendor/github.com/denisenkom/go-mssqldb/tvp_go19.go deleted file mode 100644 index 64e5e21f..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/tvp_go19.go +++ /dev/null @@ -1,231 +0,0 @@ -// +build go1.9 - -package mssql - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "reflect" - "strings" - "time" -) - -const ( - jsonTag = "json" - tvpTag = "tvp" - skipTagValue = "-" - sqlSeparator = "." -) - -var ( - ErrorEmptyTVPTypeName = errors.New("TypeName must not be empty") - ErrorTypeSlice = errors.New("TVP must be slice type") - ErrorTypeSliceIsEmpty = errors.New("TVP mustn't be null value") - ErrorSkip = errors.New("all fields mustn't skip") - ErrorObjectName = errors.New("wrong tvp name") - ErrorWrongTyping = errors.New("the number of elements in columnStr and tvpFieldIndexes do not align") -) - -//TVP is driver type, which allows supporting Table Valued Parameters (TVP) in SQL Server -type TVP struct { - //TypeName mustn't be default value - TypeName string - //Value must be the slice, mustn't be nil - Value interface{} -} - -func (tvp TVP) check() error { - if len(tvp.TypeName) == 0 { - return ErrorEmptyTVPTypeName - } - if !isProc(tvp.TypeName) { - return ErrorEmptyTVPTypeName - } - if sepCount := getCountSQLSeparators(tvp.TypeName); sepCount > 1 { - return ErrorObjectName - } - valueOf := reflect.ValueOf(tvp.Value) - if valueOf.Kind() != reflect.Slice { - return ErrorTypeSlice - } - if valueOf.IsNil() { - return ErrorTypeSliceIsEmpty - } - if reflect.TypeOf(tvp.Value).Elem().Kind() != reflect.Struct { - return ErrorTypeSlice - } - return nil -} - -func (tvp TVP) encode(schema, name string, columnStr []columnStruct, tvpFieldIndexes []int) ([]byte, error) { - if len(columnStr) != len(tvpFieldIndexes) { - return nil, ErrorWrongTyping - } - preparedBuffer := make([]byte, 0, 20+(10*len(columnStr))) - buf := bytes.NewBuffer(preparedBuffer) - err := writeBVarChar(buf, "") - if err != nil { - return nil, err - } - - writeBVarChar(buf, schema) - writeBVarChar(buf, name) - binary.Write(buf, binary.LittleEndian, uint16(len(columnStr))) - - for i, column := range columnStr { - binary.Write(buf, binary.LittleEndian, uint32(column.UserType)) - binary.Write(buf, binary.LittleEndian, uint16(column.Flags)) - writeTypeInfo(buf, &columnStr[i].ti) - writeBVarChar(buf, "") - } - // The returned error is always nil - buf.WriteByte(_TVP_END_TOKEN) - - conn := new(Conn) - conn.sess = new(tdsSession) - conn.sess.loginAck = loginAckStruct{TDSVersion: verTDS73} - stmt := &Stmt{ - c: conn, - } - - val := reflect.ValueOf(tvp.Value) - for i := 0; i < val.Len(); i++ { - refStr := reflect.ValueOf(val.Index(i).Interface()) - buf.WriteByte(_TVP_ROW_TOKEN) - for columnStrIdx, fieldIdx := range tvpFieldIndexes { - field := refStr.Field(fieldIdx) - tvpVal := field.Interface() - valOf := reflect.ValueOf(tvpVal) - elemKind := field.Kind() - if elemKind == reflect.Ptr && valOf.IsNil() { - switch tvpVal.(type) { - case *bool, *time.Time, *int8, *int16, *int32, *int64, *float32, *float64, *int: - binary.Write(buf, binary.LittleEndian, uint8(0)) - continue - default: - binary.Write(buf, binary.LittleEndian, uint64(_PLP_NULL)) - continue - } - } - if elemKind == reflect.Slice && valOf.IsNil() { - binary.Write(buf, binary.LittleEndian, uint64(_PLP_NULL)) - continue - } - - cval, err := convertInputParameter(tvpVal) - if err != nil { - return nil, fmt.Errorf("failed to convert tvp parameter row col: %s", err) - } - param, err := stmt.makeParam(cval) - if err != nil { - return nil, fmt.Errorf("failed to make tvp parameter row col: %s", err) - } - columnStr[columnStrIdx].ti.Writer(buf, param.ti, param.buffer) - } - } - buf.WriteByte(_TVP_END_TOKEN) - return buf.Bytes(), nil -} - -func (tvp TVP) columnTypes() ([]columnStruct, []int, error) { - val := reflect.ValueOf(tvp.Value) - var firstRow interface{} - if val.Len() != 0 { - firstRow = val.Index(0).Interface() - } else { - firstRow = reflect.New(reflect.TypeOf(tvp.Value).Elem()).Elem().Interface() - } - - tvpRow := reflect.TypeOf(firstRow) - columnCount := tvpRow.NumField() - defaultValues := make([]interface{}, 0, columnCount) - tvpFieldIndexes := make([]int, 0, columnCount) - for i := 0; i < columnCount; i++ { - field := tvpRow.Field(i) - tvpTagValue, isTvpTag := field.Tag.Lookup(tvpTag) - jsonTagValue, isJsonTag := field.Tag.Lookup(jsonTag) - if IsSkipField(tvpTagValue, isTvpTag, jsonTagValue, isJsonTag) { - continue - } - tvpFieldIndexes = append(tvpFieldIndexes, i) - if field.Type.Kind() == reflect.Ptr { - v := reflect.New(field.Type.Elem()) - defaultValues = append(defaultValues, v.Interface()) - continue - } - defaultValues = append(defaultValues, reflect.Zero(field.Type).Interface()) - } - - if columnCount-len(tvpFieldIndexes) == columnCount { - return nil, nil, ErrorSkip - } - - conn := new(Conn) - conn.sess = new(tdsSession) - conn.sess.loginAck = loginAckStruct{TDSVersion: verTDS73} - stmt := &Stmt{ - c: conn, - } - - columnConfiguration := make([]columnStruct, 0, columnCount) - for index, val := range defaultValues { - cval, err := convertInputParameter(val) - if err != nil { - return nil, nil, fmt.Errorf("failed to convert tvp parameter row %d col %d: %s", index, val, err) - } - param, err := stmt.makeParam(cval) - if err != nil { - return nil, nil, err - } - column := columnStruct{ - ti: param.ti, - } - switch param.ti.TypeId { - case typeNVarChar, typeBigVarBin: - column.ti.Size = 0 - } - columnConfiguration = append(columnConfiguration, column) - } - - return columnConfiguration, tvpFieldIndexes, nil -} - -func IsSkipField(tvpTagValue string, isTvpValue bool, jsonTagValue string, isJsonTagValue bool) bool { - if !isTvpValue && !isJsonTagValue { - return false - } else if isTvpValue && tvpTagValue != skipTagValue { - return false - } else if !isTvpValue && isJsonTagValue && jsonTagValue != skipTagValue { - return false - } - return true -} - -func getSchemeAndName(tvpName string) (string, string, error) { - if len(tvpName) == 0 { - return "", "", ErrorEmptyTVPTypeName - } - splitVal := strings.Split(tvpName, ".") - if len(splitVal) > 2 { - return "", "", errors.New("wrong tvp name") - } - if len(splitVal) == 2 { - res := make([]string, 2) - for key, value := range splitVal { - tmp := strings.Replace(value, "[", "", -1) - tmp = strings.Replace(tmp, "]", "", -1) - res[key] = tmp - } - return res[0], res[1], nil - } - tmp := strings.Replace(splitVal[0], "[", "", -1) - tmp = strings.Replace(tmp, "]", "", -1) - - return "", tmp, nil -} - -func getCountSQLSeparators(str string) int { - return strings.Count(str, sqlSeparator) -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/types.go b/vendor/github.com/denisenkom/go-mssqldb/types.go deleted file mode 100644 index b6e7fb2b..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/types.go +++ /dev/null @@ -1,1580 +0,0 @@ -package mssql - -import ( - "bytes" - "encoding/binary" - "fmt" - "io" - "math" - "reflect" - "strconv" - "time" - - "github.com/denisenkom/go-mssqldb/internal/cp" - "github.com/denisenkom/go-mssqldb/internal/decimal" -) - -// fixed-length data types -// http://msdn.microsoft.com/en-us/library/dd341171.aspx -const ( - typeNull = 0x1f - typeInt1 = 0x30 - typeBit = 0x32 - typeInt2 = 0x34 - typeInt4 = 0x38 - typeDateTim4 = 0x3a - typeFlt4 = 0x3b - typeMoney = 0x3c - typeDateTime = 0x3d - typeFlt8 = 0x3e - typeMoney4 = 0x7a - typeInt8 = 0x7f -) - -// variable-length data types -// http://msdn.microsoft.com/en-us/library/dd358341.aspx -const ( - // byte len types - typeGuid = 0x24 - typeIntN = 0x26 - typeDecimal = 0x37 // legacy - typeNumeric = 0x3f // legacy - typeBitN = 0x68 - typeDecimalN = 0x6a - typeNumericN = 0x6c - typeFltN = 0x6d - typeMoneyN = 0x6e - typeDateTimeN = 0x6f - typeDateN = 0x28 - typeTimeN = 0x29 - typeDateTime2N = 0x2a - typeDateTimeOffsetN = 0x2b - typeChar = 0x2f // legacy - typeVarChar = 0x27 // legacy - typeBinary = 0x2d // legacy - typeVarBinary = 0x25 // legacy - - // short length types - typeBigVarBin = 0xa5 - typeBigVarChar = 0xa7 - typeBigBinary = 0xad - typeBigChar = 0xaf - typeNVarChar = 0xe7 - typeNChar = 0xef - typeXml = 0xf1 - typeUdt = 0xf0 - typeTvp = 0xf3 - - // long length types - typeText = 0x23 - typeImage = 0x22 - typeNText = 0x63 - typeVariant = 0x62 -) -const _PLP_NULL = 0xFFFFFFFFFFFFFFFF -const _UNKNOWN_PLP_LEN = 0xFFFFFFFFFFFFFFFE -const _PLP_TERMINATOR = 0x00000000 - -// TVP COLUMN FLAGS -const _TVP_END_TOKEN = 0x00 -const _TVP_ROW_TOKEN = 0x01 - -// TYPE_INFO rule -// http://msdn.microsoft.com/en-us/library/dd358284.aspx -type typeInfo struct { - TypeId uint8 - Size int - Scale uint8 - Prec uint8 - Buffer []byte - Collation cp.Collation - UdtInfo udtInfo - XmlInfo xmlInfo - Reader func(ti *typeInfo, r *tdsBuffer) (res interface{}) - Writer func(w io.Writer, ti typeInfo, buf []byte) (err error) -} - -// Common Language Runtime (CLR) Instances -// http://msdn.microsoft.com/en-us/library/dd357962.aspx -type udtInfo struct { - //MaxByteSize uint32 - DBName string - SchemaName string - TypeName string - AssemblyQualifiedName string -} - -// XML Values -// http://msdn.microsoft.com/en-us/library/dd304764.aspx -type xmlInfo struct { - SchemaPresent uint8 - DBName string - OwningSchema string - XmlSchemaCollection string -} - -func readTypeInfo(r *tdsBuffer) (res typeInfo) { - res.TypeId = r.byte() - switch res.TypeId { - case typeNull, typeInt1, typeBit, typeInt2, typeInt4, typeDateTim4, - typeFlt4, typeMoney, typeDateTime, typeFlt8, typeMoney4, typeInt8: - // those are fixed length types - switch res.TypeId { - case typeNull: - res.Size = 0 - case typeInt1, typeBit: - res.Size = 1 - case typeInt2: - res.Size = 2 - case typeInt4, typeDateTim4, typeFlt4, typeMoney4: - res.Size = 4 - case typeMoney, typeDateTime, typeFlt8, typeInt8: - res.Size = 8 - } - res.Reader = readFixedType - res.Buffer = make([]byte, res.Size) - default: // all others are VARLENTYPE - readVarLen(&res, r) - } - return -} - -// https://msdn.microsoft.com/en-us/library/dd358284.aspx -func writeTypeInfo(w io.Writer, ti *typeInfo) (err error) { - err = binary.Write(w, binary.LittleEndian, ti.TypeId) - if err != nil { - return - } - switch ti.TypeId { - case typeNull, typeInt1, typeBit, typeInt2, typeInt4, typeDateTim4, - typeFlt4, typeMoney, typeDateTime, typeFlt8, typeMoney4, typeInt8: - // those are fixed length - // https://msdn.microsoft.com/en-us/library/dd341171.aspx - ti.Writer = writeFixedType - case typeTvp: - ti.Writer = writeFixedType - default: // all others are VARLENTYPE - err = writeVarLen(w, ti) - if err != nil { - return - } - } - return -} - -func writeFixedType(w io.Writer, ti typeInfo, buf []byte) (err error) { - _, err = w.Write(buf) - return -} - -// https://msdn.microsoft.com/en-us/library/dd358341.aspx -func writeVarLen(w io.Writer, ti *typeInfo) (err error) { - switch ti.TypeId { - - case typeDateN: - ti.Writer = writeByteLenType - case typeTimeN, typeDateTime2N, typeDateTimeOffsetN: - if err = binary.Write(w, binary.LittleEndian, ti.Scale); err != nil { - return - } - ti.Writer = writeByteLenType - case typeIntN, typeDecimal, typeNumeric, - typeBitN, typeDecimalN, typeNumericN, typeFltN, - typeMoneyN, typeDateTimeN, typeChar, - typeVarChar, typeBinary, typeVarBinary: - - // byle len types - if ti.Size > 0xff { - panic("Invalid size for BYLELEN_TYPE") - } - if err = binary.Write(w, binary.LittleEndian, uint8(ti.Size)); err != nil { - return - } - switch ti.TypeId { - case typeDecimal, typeNumeric, typeDecimalN, typeNumericN: - err = binary.Write(w, binary.LittleEndian, ti.Prec) - if err != nil { - return - } - err = binary.Write(w, binary.LittleEndian, ti.Scale) - if err != nil { - return - } - } - ti.Writer = writeByteLenType - case typeGuid: - if !(ti.Size == 0x10 || ti.Size == 0x00) { - panic("Invalid size for BYLELEN_TYPE") - } - if err = binary.Write(w, binary.LittleEndian, uint8(ti.Size)); err != nil { - return - } - ti.Writer = writeByteLenType - case typeBigVarBin, typeBigVarChar, typeBigBinary, typeBigChar, - typeNVarChar, typeNChar, typeXml, typeUdt: - - // short len types - if ti.Size > 8000 || ti.Size == 0 { - if err = binary.Write(w, binary.LittleEndian, uint16(0xffff)); err != nil { - return - } - ti.Writer = writePLPType - } else { - if err = binary.Write(w, binary.LittleEndian, uint16(ti.Size)); err != nil { - return - } - ti.Writer = writeShortLenType - } - switch ti.TypeId { - case typeBigVarChar, typeBigChar, typeNVarChar, typeNChar: - if err = writeCollation(w, ti.Collation); err != nil { - return - } - case typeXml: - if err = binary.Write(w, binary.LittleEndian, ti.XmlInfo.SchemaPresent); err != nil { - return - } - } - case typeText, typeImage, typeNText, typeVariant: - // LONGLEN_TYPE - if err = binary.Write(w, binary.LittleEndian, uint32(ti.Size)); err != nil { - return - } - if err = writeCollation(w, ti.Collation); err != nil { - return - } - ti.Writer = writeLongLenType - default: - panic("Invalid type") - } - return -} - -// http://msdn.microsoft.com/en-us/library/ee780895.aspx -func decodeDateTim4(buf []byte) time.Time { - days := binary.LittleEndian.Uint16(buf) - mins := binary.LittleEndian.Uint16(buf[2:]) - return time.Date(1900, 1, 1+int(days), - 0, int(mins), 0, 0, time.UTC) -} - -func encodeDateTim4(val time.Time) (buf []byte) { - buf = make([]byte, 4) - - ref := time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC) - dur := val.Sub(ref) - days := dur / (24 * time.Hour) - mins := val.Hour()*60 + val.Minute() - if days < 0 { - days = 0 - mins = 0 - } - - binary.LittleEndian.PutUint16(buf[:2], uint16(days)) - binary.LittleEndian.PutUint16(buf[2:], uint16(mins)) - return -} - -// encodes datetime value -// type identifier is typeDateTimeN -func encodeDateTime(t time.Time) (res []byte) { - // base date in days since Jan 1st 1900 - basedays := gregorianDays(1900, 1) - // days since Jan 1st 1900 (same TZ as t) - days := gregorianDays(t.Year(), t.YearDay()) - basedays - tm := 300*(t.Second()+t.Minute()*60+t.Hour()*60*60) + t.Nanosecond()*300/1e9 - // minimum and maximum possible - mindays := gregorianDays(1753, 1) - basedays - maxdays := gregorianDays(9999, 365) - basedays - if days < mindays { - days = mindays - tm = 0 - } - if days > maxdays { - days = maxdays - tm = (23*60*60+59*60+59)*300 + 299 - } - res = make([]byte, 8) - binary.LittleEndian.PutUint32(res[0:4], uint32(days)) - binary.LittleEndian.PutUint32(res[4:8], uint32(tm)) - return -} - -func decodeDateTime(buf []byte) time.Time { - days := int32(binary.LittleEndian.Uint32(buf)) - tm := binary.LittleEndian.Uint32(buf[4:]) - ns := int(math.Trunc(float64(tm%300)/0.3+0.5)) * 1000000 - secs := int(tm / 300) - return time.Date(1900, 1, 1+int(days), - 0, 0, secs, ns, time.UTC) -} - -func readFixedType(ti *typeInfo, r *tdsBuffer) interface{} { - r.ReadFull(ti.Buffer) - buf := ti.Buffer - switch ti.TypeId { - case typeNull: - return nil - case typeInt1: - return int64(buf[0]) - case typeBit: - return buf[0] != 0 - case typeInt2: - return int64(int16(binary.LittleEndian.Uint16(buf))) - case typeInt4: - return int64(int32(binary.LittleEndian.Uint32(buf))) - case typeDateTim4: - return decodeDateTim4(buf) - case typeFlt4: - return math.Float32frombits(binary.LittleEndian.Uint32(buf)) - case typeMoney4: - return decodeMoney4(buf) - case typeMoney: - return decodeMoney(buf) - case typeDateTime: - return decodeDateTime(buf) - case typeFlt8: - return math.Float64frombits(binary.LittleEndian.Uint64(buf)) - case typeInt8: - return int64(binary.LittleEndian.Uint64(buf)) - default: - badStreamPanicf("Invalid typeid") - } - panic("shoulnd't get here") -} - -func readByteLenType(ti *typeInfo, r *tdsBuffer) interface{} { - size := r.byte() - if size == 0 { - return nil - } - r.ReadFull(ti.Buffer[:size]) - buf := ti.Buffer[:size] - switch ti.TypeId { - case typeDateN: - if len(buf) != 3 { - badStreamPanicf("Invalid size for DATENTYPE") - } - return decodeDate(buf) - case typeTimeN: - return decodeTime(ti.Scale, buf) - case typeDateTime2N: - return decodeDateTime2(ti.Scale, buf) - case typeDateTimeOffsetN: - return decodeDateTimeOffset(ti.Scale, buf) - case typeGuid: - return decodeGuid(buf) - case typeIntN: - switch len(buf) { - case 1: - return int64(buf[0]) - case 2: - return int64(int16((binary.LittleEndian.Uint16(buf)))) - case 4: - return int64(int32(binary.LittleEndian.Uint32(buf))) - case 8: - return int64(binary.LittleEndian.Uint64(buf)) - default: - badStreamPanicf("Invalid size for INTNTYPE: %d", len(buf)) - } - case typeDecimal, typeNumeric, typeDecimalN, typeNumericN: - return decodeDecimal(ti.Prec, ti.Scale, buf) - case typeBitN: - if len(buf) != 1 { - badStreamPanicf("Invalid size for BITNTYPE") - } - return buf[0] != 0 - case typeFltN: - switch len(buf) { - case 4: - return float64(math.Float32frombits(binary.LittleEndian.Uint32(buf))) - case 8: - return math.Float64frombits(binary.LittleEndian.Uint64(buf)) - default: - badStreamPanicf("Invalid size for FLTNTYPE") - } - case typeMoneyN: - switch len(buf) { - case 4: - return decodeMoney4(buf) - case 8: - return decodeMoney(buf) - default: - badStreamPanicf("Invalid size for MONEYNTYPE") - } - case typeDateTim4: - return decodeDateTim4(buf) - case typeDateTime: - return decodeDateTime(buf) - case typeDateTimeN: - switch len(buf) { - case 4: - return decodeDateTim4(buf) - case 8: - return decodeDateTime(buf) - default: - badStreamPanicf("Invalid size for DATETIMENTYPE") - } - case typeChar, typeVarChar: - return decodeChar(ti.Collation, buf) - case typeBinary, typeVarBinary: - // a copy, because the backing array for ti.Buffer is reused - // and can be overwritten by the next row while this row waits - // in a buffered chan - cpy := make([]byte, len(buf)) - copy(cpy, buf) - return cpy - default: - badStreamPanicf("Invalid typeid") - } - panic("shoulnd't get here") -} - -func writeByteLenType(w io.Writer, ti typeInfo, buf []byte) (err error) { - if ti.Size > 0xff { - panic("Invalid size for BYTELEN_TYPE") - } - err = binary.Write(w, binary.LittleEndian, uint8(len(buf))) - if err != nil { - return - } - _, err = w.Write(buf) - return -} - -func readShortLenType(ti *typeInfo, r *tdsBuffer) interface{} { - size := r.uint16() - if size == 0xffff { - return nil - } - r.ReadFull(ti.Buffer[:size]) - buf := ti.Buffer[:size] - switch ti.TypeId { - case typeBigVarChar, typeBigChar: - return decodeChar(ti.Collation, buf) - case typeBigVarBin, typeBigBinary: - // a copy, because the backing array for ti.Buffer is reused - // and can be overwritten by the next row while this row waits - // in a buffered chan - cpy := make([]byte, len(buf)) - copy(cpy, buf) - return cpy - case typeNVarChar, typeNChar: - return decodeNChar(buf) - case typeUdt: - return decodeUdt(*ti, buf) - default: - badStreamPanicf("Invalid typeid") - } - panic("shoulnd't get here") -} - -func writeShortLenType(w io.Writer, ti typeInfo, buf []byte) (err error) { - if buf == nil { - err = binary.Write(w, binary.LittleEndian, uint16(0xffff)) - return - } - if ti.Size > 0xfffe { - panic("Invalid size for USHORTLEN_TYPE") - } - err = binary.Write(w, binary.LittleEndian, uint16(ti.Size)) - if err != nil { - return - } - _, err = w.Write(buf) - return -} - -func readLongLenType(ti *typeInfo, r *tdsBuffer) interface{} { - // information about this format can be found here: - // http://msdn.microsoft.com/en-us/library/dd304783.aspx - // and here: - // http://msdn.microsoft.com/en-us/library/dd357254.aspx - textptrsize := int(r.byte()) - if textptrsize == 0 { - return nil - } - textptr := make([]byte, textptrsize) - r.ReadFull(textptr) - timestamp := r.uint64() - _ = timestamp // ignore timestamp - size := r.int32() - if size == -1 { - return nil - } - buf := make([]byte, size) - r.ReadFull(buf) - switch ti.TypeId { - case typeText: - return decodeChar(ti.Collation, buf) - case typeImage: - return buf - case typeNText: - return decodeNChar(buf) - default: - badStreamPanicf("Invalid typeid") - } - panic("shoulnd't get here") -} -func writeLongLenType(w io.Writer, ti typeInfo, buf []byte) (err error) { - //textptr - err = binary.Write(w, binary.LittleEndian, byte(0x10)) - if err != nil { - return - } - err = binary.Write(w, binary.LittleEndian, uint64(0xFFFFFFFFFFFFFFFF)) - if err != nil { - return - } - err = binary.Write(w, binary.LittleEndian, uint64(0xFFFFFFFFFFFFFFFF)) - if err != nil { - return - } - //timestamp? - err = binary.Write(w, binary.LittleEndian, uint64(0xFFFFFFFFFFFFFFFF)) - if err != nil { - return - } - - err = binary.Write(w, binary.LittleEndian, uint32(ti.Size)) - if err != nil { - return - } - _, err = w.Write(buf) - return -} - -func readCollation(r *tdsBuffer) (res cp.Collation) { - res.LcidAndFlags = r.uint32() - res.SortId = r.byte() - return -} - -func writeCollation(w io.Writer, col cp.Collation) (err error) { - if err = binary.Write(w, binary.LittleEndian, col.LcidAndFlags); err != nil { - return - } - err = binary.Write(w, binary.LittleEndian, col.SortId) - return -} - -// reads variant value -// http://msdn.microsoft.com/en-us/library/dd303302.aspx -func readVariantType(ti *typeInfo, r *tdsBuffer) interface{} { - size := r.int32() - if size == 0 { - return nil - } - vartype := r.byte() - propbytes := int32(r.byte()) - switch vartype { - case typeGuid: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return buf - case typeBit: - return r.byte() != 0 - case typeInt1: - return int64(r.byte()) - case typeInt2: - return int64(int16(r.uint16())) - case typeInt4: - return int64(r.int32()) - case typeInt8: - return int64(r.uint64()) - case typeDateTime: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDateTime(buf) - case typeDateTim4: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDateTim4(buf) - case typeFlt4: - return float64(math.Float32frombits(r.uint32())) - case typeFlt8: - return math.Float64frombits(r.uint64()) - case typeMoney4: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeMoney4(buf) - case typeMoney: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeMoney(buf) - case typeDateN: - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDate(buf) - case typeTimeN: - scale := r.byte() - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeTime(scale, buf) - case typeDateTime2N: - scale := r.byte() - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDateTime2(scale, buf) - case typeDateTimeOffsetN: - scale := r.byte() - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDateTimeOffset(scale, buf) - case typeBigVarBin, typeBigBinary: - r.uint16() // max length, ignoring - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return buf - case typeDecimalN, typeNumericN: - prec := r.byte() - scale := r.byte() - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeDecimal(prec, scale, buf) - case typeBigVarChar, typeBigChar: - col := readCollation(r) - r.uint16() // max length, ignoring - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeChar(col, buf) - case typeNVarChar, typeNChar: - _ = readCollation(r) - r.uint16() // max length, ignoring - buf := make([]byte, size-2-propbytes) - r.ReadFull(buf) - return decodeNChar(buf) - default: - badStreamPanicf("Invalid variant typeid") - } - panic("shoulnd't get here") -} - -// partially length prefixed stream -// http://msdn.microsoft.com/en-us/library/dd340469.aspx -func readPLPType(ti *typeInfo, r *tdsBuffer) interface{} { - size := r.uint64() - var buf *bytes.Buffer - switch size { - case _PLP_NULL: - // null - return nil - case _UNKNOWN_PLP_LEN: - // size unknown - buf = bytes.NewBuffer(make([]byte, 0, 1000)) - default: - buf = bytes.NewBuffer(make([]byte, 0, size)) - } - for true { - chunksize := r.uint32() - if chunksize == 0 { - break - } - if _, err := io.CopyN(buf, r, int64(chunksize)); err != nil { - badStreamPanicf("Reading PLP type failed: %s", err.Error()) - } - } - switch ti.TypeId { - case typeXml: - return decodeXml(*ti, buf.Bytes()) - case typeBigVarChar, typeBigChar, typeText: - return decodeChar(ti.Collation, buf.Bytes()) - case typeBigVarBin, typeBigBinary, typeImage: - return buf.Bytes() - case typeNVarChar, typeNChar, typeNText: - return decodeNChar(buf.Bytes()) - case typeUdt: - return decodeUdt(*ti, buf.Bytes()) - } - panic("shoulnd't get here") -} - -func writePLPType(w io.Writer, ti typeInfo, buf []byte) (err error) { - if err = binary.Write(w, binary.LittleEndian, uint64(_UNKNOWN_PLP_LEN)); err != nil { - return - } - for { - chunksize := uint32(len(buf)) - if chunksize == 0 { - err = binary.Write(w, binary.LittleEndian, uint32(_PLP_TERMINATOR)) - return - } - if err = binary.Write(w, binary.LittleEndian, chunksize); err != nil { - return - } - if _, err = w.Write(buf[:chunksize]); err != nil { - return - } - buf = buf[chunksize:] - } -} - -func readVarLen(ti *typeInfo, r *tdsBuffer) { - switch ti.TypeId { - case typeDateN: - ti.Size = 3 - ti.Reader = readByteLenType - ti.Buffer = make([]byte, ti.Size) - case typeTimeN, typeDateTime2N, typeDateTimeOffsetN: - ti.Scale = r.byte() - switch ti.Scale { - case 0, 1, 2: - ti.Size = 3 - case 3, 4: - ti.Size = 4 - case 5, 6, 7: - ti.Size = 5 - default: - badStreamPanicf("Invalid scale for TIME/DATETIME2/DATETIMEOFFSET type") - } - switch ti.TypeId { - case typeDateTime2N: - ti.Size += 3 - case typeDateTimeOffsetN: - ti.Size += 5 - } - ti.Reader = readByteLenType - ti.Buffer = make([]byte, ti.Size) - case typeGuid, typeIntN, typeDecimal, typeNumeric, - typeBitN, typeDecimalN, typeNumericN, typeFltN, - typeMoneyN, typeDateTimeN, typeChar, - typeVarChar, typeBinary, typeVarBinary: - // byle len types - ti.Size = int(r.byte()) - ti.Buffer = make([]byte, ti.Size) - switch ti.TypeId { - case typeDecimal, typeNumeric, typeDecimalN, typeNumericN: - ti.Prec = r.byte() - ti.Scale = r.byte() - } - ti.Reader = readByteLenType - case typeXml: - ti.XmlInfo.SchemaPresent = r.byte() - if ti.XmlInfo.SchemaPresent != 0 { - // dbname - ti.XmlInfo.DBName = r.BVarChar() - // owning schema - ti.XmlInfo.OwningSchema = r.BVarChar() - // xml schema collection - ti.XmlInfo.XmlSchemaCollection = r.UsVarChar() - } - ti.Reader = readPLPType - case typeUdt: - ti.Size = int(r.uint16()) - ti.UdtInfo.DBName = r.BVarChar() - ti.UdtInfo.SchemaName = r.BVarChar() - ti.UdtInfo.TypeName = r.BVarChar() - ti.UdtInfo.AssemblyQualifiedName = r.UsVarChar() - - ti.Buffer = make([]byte, ti.Size) - ti.Reader = readPLPType - case typeBigVarBin, typeBigVarChar, typeBigBinary, typeBigChar, - typeNVarChar, typeNChar: - // short len types - ti.Size = int(r.uint16()) - switch ti.TypeId { - case typeBigVarChar, typeBigChar, typeNVarChar, typeNChar: - ti.Collation = readCollation(r) - } - if ti.Size == 0xffff { - ti.Reader = readPLPType - } else { - ti.Buffer = make([]byte, ti.Size) - ti.Reader = readShortLenType - } - case typeText, typeImage, typeNText, typeVariant: - // LONGLEN_TYPE - ti.Size = int(r.int32()) - switch ti.TypeId { - case typeText, typeNText: - ti.Collation = readCollation(r) - // ignore tablenames - numparts := int(r.byte()) - for i := 0; i < numparts; i++ { - r.UsVarChar() - } - ti.Reader = readLongLenType - case typeImage: - // ignore tablenames - numparts := int(r.byte()) - for i := 0; i < numparts; i++ { - r.UsVarChar() - } - ti.Reader = readLongLenType - case typeVariant: - ti.Reader = readVariantType - } - default: - badStreamPanicf("Invalid type %d", ti.TypeId) - } - return -} - -func decodeMoney(buf []byte) []byte { - money := int64(uint64(buf[4]) | - uint64(buf[5])<<8 | - uint64(buf[6])<<16 | - uint64(buf[7])<<24 | - uint64(buf[0])<<32 | - uint64(buf[1])<<40 | - uint64(buf[2])<<48 | - uint64(buf[3])<<56) - return decimal.ScaleBytes(strconv.FormatInt(money, 10), 4) -} - -func decodeMoney4(buf []byte) []byte { - money := int32(binary.LittleEndian.Uint32(buf[0:4])) - return decimal.ScaleBytes(strconv.FormatInt(int64(money), 10), 4) -} - -func decodeGuid(buf []byte) []byte { - res := make([]byte, 16) - copy(res, buf) - return res -} - -func decodeDecimal(prec uint8, scale uint8, buf []byte) []byte { - var sign uint8 - sign = buf[0] - var dec decimal.Decimal - dec.SetPositive(sign != 0) - dec.SetPrec(prec) - dec.SetScale(scale) - buf = buf[1:] - l := len(buf) / 4 - for i := 0; i < l; i++ { - dec.SetInteger(binary.LittleEndian.Uint32(buf[0:4]), uint8(i)) - buf = buf[4:] - } - return dec.Bytes() -} - -// http://msdn.microsoft.com/en-us/library/ee780895.aspx -func decodeDateInt(buf []byte) (days int) { - days = int(buf[0]) + int(buf[1])*256 + int(buf[2])*256*256 - return -} - -func decodeDate(buf []byte) time.Time { - return time.Date(1, 1, 1+decodeDateInt(buf), 0, 0, 0, 0, time.UTC) -} - -func encodeDate(val time.Time) (buf []byte) { - days, _, _ := dateTime2(val) - buf = make([]byte, 3) - buf[0] = byte(days) - buf[1] = byte(days >> 8) - buf[2] = byte(days >> 16) - return -} - -func decodeTimeInt(scale uint8, buf []byte) (sec int, ns int) { - var acc uint64 = 0 - for i := len(buf) - 1; i >= 0; i-- { - acc <<= 8 - acc |= uint64(buf[i]) - } - for i := 0; i < 7-int(scale); i++ { - acc *= 10 - } - nsbig := acc * 100 - sec = int(nsbig / 1000000000) - ns = int(nsbig % 1000000000) - return -} - -// calculate size of time field in bytes -func calcTimeSize(scale int) int { - if scale <= 2 { - return 3 - } else if scale <= 4 { - return 4 - } else { - return 5 - } -} - -// writes time value into a field buffer -// buffer should be at least calcTimeSize long -func encodeTimeInt(seconds, ns, scale int, buf []byte) { - ns_total := int64(seconds)*1000*1000*1000 + int64(ns) - t := ns_total / int64(math.Pow10(int(scale)*-1)*1e9) - buf[0] = byte(t) - buf[1] = byte(t >> 8) - buf[2] = byte(t >> 16) - buf[3] = byte(t >> 24) - buf[4] = byte(t >> 32) -} - -func decodeTime(scale uint8, buf []byte) time.Time { - sec, ns := decodeTimeInt(scale, buf) - return time.Date(1, 1, 1, 0, 0, sec, ns, time.UTC) -} - -func encodeTime(hour, minute, second, ns, scale int) (buf []byte) { - seconds := hour*3600 + minute*60 + second - buf = make([]byte, calcTimeSize(scale)) - encodeTimeInt(seconds, ns, scale, buf) - return -} - -func decodeDateTime2(scale uint8, buf []byte) time.Time { - timesize := len(buf) - 3 - sec, ns := decodeTimeInt(scale, buf[:timesize]) - days := decodeDateInt(buf[timesize:]) - return time.Date(1, 1, 1+days, 0, 0, sec, ns, time.UTC) -} - -func encodeDateTime2(val time.Time, scale int) (buf []byte) { - days, seconds, ns := dateTime2(val) - timesize := calcTimeSize(scale) - buf = make([]byte, 3+timesize) - encodeTimeInt(seconds, ns, scale, buf) - buf[timesize] = byte(days) - buf[timesize+1] = byte(days >> 8) - buf[timesize+2] = byte(days >> 16) - return -} - -func decodeDateTimeOffset(scale uint8, buf []byte) time.Time { - timesize := len(buf) - 3 - 2 - sec, ns := decodeTimeInt(scale, buf[:timesize]) - buf = buf[timesize:] - days := decodeDateInt(buf[:3]) - buf = buf[3:] - offset := int(int16(binary.LittleEndian.Uint16(buf))) // in mins - return time.Date(1, 1, 1+days, 0, 0, sec+offset*60, ns, - time.FixedZone("", offset*60)) -} - -func encodeDateTimeOffset(val time.Time, scale int) (buf []byte) { - timesize := calcTimeSize(scale) - buf = make([]byte, timesize+2+3) - days, seconds, ns := dateTime2(val.In(time.UTC)) - encodeTimeInt(seconds, ns, scale, buf) - buf[timesize] = byte(days) - buf[timesize+1] = byte(days >> 8) - buf[timesize+2] = byte(days >> 16) - _, offset := val.Zone() - offset /= 60 - buf[timesize+3] = byte(offset) - buf[timesize+4] = byte(offset >> 8) - return -} - -// returns days since Jan 1st 0001 in Gregorian calendar -func gregorianDays(year, yearday int) int { - year0 := year - 1 - return year0*365 + year0/4 - year0/100 + year0/400 + yearday - 1 -} - -func dateTime2(t time.Time) (days int, seconds int, ns int) { - // days since Jan 1 1 (in same TZ as t) - days = gregorianDays(t.Year(), t.YearDay()) - seconds = t.Second() + t.Minute()*60 + t.Hour()*60*60 - ns = t.Nanosecond() - if days < 0 { - days = 0 - seconds = 0 - ns = 0 - } - max := gregorianDays(9999, 365) - if days > max { - days = max - seconds = 59 + 59*60 + 23*60*60 - ns = 999999900 - } - return -} - -func decodeChar(col cp.Collation, buf []byte) string { - return cp.CharsetToUTF8(col, buf) -} - -func decodeUcs2(buf []byte) string { - res, err := ucs22str(buf) - if err != nil { - badStreamPanicf("Invalid UCS2 encoding: %s", err.Error()) - } - return res -} - -func decodeNChar(buf []byte) string { - return decodeUcs2(buf) -} - -func decodeXml(ti typeInfo, buf []byte) string { - return decodeUcs2(buf) -} - -func decodeUdt(ti typeInfo, buf []byte) []byte { - return buf -} - -// makes go/sql type instance as described below -// It should return -// the value type that can be used to scan types into. For example, the database -// column type "bigint" this should return "reflect.TypeOf(int64(0))". -func makeGoLangScanType(ti typeInfo) reflect.Type { - switch ti.TypeId { - case typeInt1: - return reflect.TypeOf(int64(0)) - case typeInt2: - return reflect.TypeOf(int64(0)) - case typeInt4: - return reflect.TypeOf(int64(0)) - case typeInt8: - return reflect.TypeOf(int64(0)) - case typeFlt4: - return reflect.TypeOf(float64(0)) - case typeIntN: - switch ti.Size { - case 1: - return reflect.TypeOf(int64(0)) - case 2: - return reflect.TypeOf(int64(0)) - case 4: - return reflect.TypeOf(int64(0)) - case 8: - return reflect.TypeOf(int64(0)) - default: - panic("invalid size of INTNTYPE") - } - case typeFlt8: - return reflect.TypeOf(float64(0)) - case typeFltN: - switch ti.Size { - case 4: - return reflect.TypeOf(float64(0)) - case 8: - return reflect.TypeOf(float64(0)) - default: - panic("invalid size of FLNNTYPE") - } - case typeBigVarBin: - return reflect.TypeOf([]byte{}) - case typeVarChar: - return reflect.TypeOf("") - case typeNVarChar: - return reflect.TypeOf("") - case typeBit, typeBitN: - return reflect.TypeOf(true) - case typeDecimalN, typeNumericN: - return reflect.TypeOf([]byte{}) - case typeMoney, typeMoney4, typeMoneyN: - switch ti.Size { - case 4: - return reflect.TypeOf([]byte{}) - case 8: - return reflect.TypeOf([]byte{}) - default: - panic("invalid size of MONEYN") - } - case typeDateTim4: - return reflect.TypeOf(time.Time{}) - case typeDateTime: - return reflect.TypeOf(time.Time{}) - case typeDateTimeN: - switch ti.Size { - case 4: - return reflect.TypeOf(time.Time{}) - case 8: - return reflect.TypeOf(time.Time{}) - default: - panic("invalid size of DATETIMEN") - } - case typeDateTime2N: - return reflect.TypeOf(time.Time{}) - case typeDateN: - return reflect.TypeOf(time.Time{}) - case typeTimeN: - return reflect.TypeOf(time.Time{}) - case typeDateTimeOffsetN: - return reflect.TypeOf(time.Time{}) - case typeBigVarChar: - return reflect.TypeOf("") - case typeBigChar: - return reflect.TypeOf("") - case typeNChar: - return reflect.TypeOf("") - case typeGuid: - return reflect.TypeOf([]byte{}) - case typeXml: - return reflect.TypeOf("") - case typeText: - return reflect.TypeOf("") - case typeNText: - return reflect.TypeOf("") - case typeImage: - return reflect.TypeOf([]byte{}) - case typeBigBinary: - return reflect.TypeOf([]byte{}) - case typeVariant: - return reflect.TypeOf(nil) - default: - panic(fmt.Sprintf("not implemented makeGoLangScanType for type %d", ti.TypeId)) - } -} - -func makeDecl(ti typeInfo) string { - switch ti.TypeId { - case typeNull: - // maybe we should use something else here - // this is tested in TestNull - return "nvarchar(1)" - case typeInt1: - return "tinyint" - case typeBigBinary: - return fmt.Sprintf("binary(%d)", ti.Size) - case typeInt2: - return "smallint" - case typeInt4: - return "int" - case typeInt8: - return "bigint" - case typeFlt4: - return "real" - case typeIntN: - switch ti.Size { - case 1: - return "tinyint" - case 2: - return "smallint" - case 4: - return "int" - case 8: - return "bigint" - default: - panic("invalid size of INTNTYPE") - } - case typeFlt8: - return "float" - case typeFltN: - switch ti.Size { - case 4: - return "real" - case 8: - return "float" - default: - panic("invalid size of FLNNTYPE") - } - case typeDecimal, typeDecimalN: - return fmt.Sprintf("decimal(%d, %d)", ti.Prec, ti.Scale) - case typeNumeric, typeNumericN: - return fmt.Sprintf("numeric(%d, %d)", ti.Prec, ti.Scale) - case typeMoney4: - return "smallmoney" - case typeMoney: - return "money" - case typeMoneyN: - switch ti.Size { - case 4: - return "smallmoney" - case 8: - return "money" - default: - panic("invalid size of MONEYNTYPE") - } - case typeBigVarBin: - if ti.Size > 8000 || ti.Size == 0 { - return "varbinary(max)" - } else { - return fmt.Sprintf("varbinary(%d)", ti.Size) - } - case typeNChar: - return fmt.Sprintf("nchar(%d)", ti.Size/2) - case typeBigChar, typeChar: - return fmt.Sprintf("char(%d)", ti.Size) - case typeBigVarChar, typeVarChar: - if ti.Size > 8000 || ti.Size == 0 { - return fmt.Sprintf("varchar(max)") - } else { - return fmt.Sprintf("varchar(%d)", ti.Size) - } - case typeNVarChar: - if ti.Size > 8000 || ti.Size == 0 { - return "nvarchar(max)" - } else { - return fmt.Sprintf("nvarchar(%d)", ti.Size/2) - } - case typeBit, typeBitN: - return "bit" - case typeDateN: - return "date" - case typeDateTim4: - return "smalldatetime" - case typeDateTime: - return "datetime" - case typeDateTimeN: - switch ti.Size { - case 4: - return "smalldatetime" - case 8: - return "datetime" - default: - panic("invalid size of DATETIMNTYPE") - } - case typeTimeN: - return "time" - case typeDateTime2N: - return fmt.Sprintf("datetime2(%d)", ti.Scale) - case typeDateTimeOffsetN: - return fmt.Sprintf("datetimeoffset(%d)", ti.Scale) - case typeText: - return "text" - case typeNText: - return "ntext" - case typeUdt: - return ti.UdtInfo.TypeName - case typeGuid: - return "uniqueidentifier" - case typeTvp: - if ti.UdtInfo.SchemaName != "" { - return fmt.Sprintf("%s.%s READONLY", ti.UdtInfo.SchemaName, ti.UdtInfo.TypeName) - } - return fmt.Sprintf("%s READONLY", ti.UdtInfo.TypeName) - default: - panic(fmt.Sprintf("not implemented makeDecl for type %#x", ti.TypeId)) - } -} - -// makes go/sql type name as described below -// RowsColumnTypeDatabaseTypeName may be implemented by Rows. It should return the -// database system type name without the length. Type names should be uppercase. -// Examples of returned types: "VARCHAR", "NVARCHAR", "VARCHAR2", "CHAR", "TEXT", -// "DECIMAL", "SMALLINT", "INT", "BIGINT", "BOOL", "[]BIGINT", "JSONB", "XML", -// "TIMESTAMP". -func makeGoLangTypeName(ti typeInfo) string { - switch ti.TypeId { - case typeInt1: - return "TINYINT" - case typeInt2: - return "SMALLINT" - case typeInt4: - return "INT" - case typeInt8: - return "BIGINT" - case typeFlt4: - return "REAL" - case typeIntN: - switch ti.Size { - case 1: - return "TINYINT" - case 2: - return "SMALLINT" - case 4: - return "INT" - case 8: - return "BIGINT" - default: - panic("invalid size of INTNTYPE") - } - case typeFlt8: - return "FLOAT" - case typeFltN: - switch ti.Size { - case 4: - return "REAL" - case 8: - return "FLOAT" - default: - panic("invalid size of FLNNTYPE") - } - case typeBigVarBin: - return "VARBINARY" - case typeVarChar: - return "VARCHAR" - case typeNVarChar: - return "NVARCHAR" - case typeBit, typeBitN: - return "BIT" - case typeDecimalN, typeNumericN: - return "DECIMAL" - case typeMoney, typeMoney4, typeMoneyN: - switch ti.Size { - case 4: - return "SMALLMONEY" - case 8: - return "MONEY" - default: - panic("invalid size of MONEYN") - } - case typeDateTim4: - return "SMALLDATETIME" - case typeDateTime: - return "DATETIME" - case typeDateTimeN: - switch ti.Size { - case 4: - return "SMALLDATETIME" - case 8: - return "DATETIME" - default: - panic("invalid size of DATETIMEN") - } - case typeDateTime2N: - return "DATETIME2" - case typeDateN: - return "DATE" - case typeTimeN: - return "TIME" - case typeDateTimeOffsetN: - return "DATETIMEOFFSET" - case typeBigVarChar: - return "VARCHAR" - case typeBigChar: - return "CHAR" - case typeNChar: - return "NCHAR" - case typeGuid: - return "UNIQUEIDENTIFIER" - case typeXml: - return "XML" - case typeText: - return "TEXT" - case typeNText: - return "NTEXT" - case typeImage: - return "IMAGE" - case typeVariant: - return "SQL_VARIANT" - case typeBigBinary: - return "BINARY" - default: - panic(fmt.Sprintf("not implemented makeGoLangTypeName for type %d", ti.TypeId)) - } -} - -// makes go/sql type length as described below -// It should return the length -// of the column type if the column is a variable length type. If the column is -// not a variable length type ok should return false. -// If length is not limited other than system limits, it should return math.MaxInt64. -// The following are examples of returned values for various types: -// TEXT (math.MaxInt64, true) -// varchar(10) (10, true) -// nvarchar(10) (10, true) -// decimal (0, false) -// int (0, false) -// bytea(30) (30, true) -func makeGoLangTypeLength(ti typeInfo) (int64, bool) { - switch ti.TypeId { - case typeInt1: - return 0, false - case typeInt2: - return 0, false - case typeInt4: - return 0, false - case typeInt8: - return 0, false - case typeFlt4: - return 0, false - case typeIntN: - switch ti.Size { - case 1: - return 0, false - case 2: - return 0, false - case 4: - return 0, false - case 8: - return 0, false - default: - panic("invalid size of INTNTYPE") - } - case typeFlt8: - return 0, false - case typeFltN: - switch ti.Size { - case 4: - return 0, false - case 8: - return 0, false - default: - panic("invalid size of FLNNTYPE") - } - case typeBit, typeBitN: - return 0, false - case typeDecimalN, typeNumericN: - return 0, false - case typeMoney, typeMoney4, typeMoneyN: - switch ti.Size { - case 4: - return 0, false - case 8: - return 0, false - default: - panic("invalid size of MONEYN") - } - case typeDateTim4, typeDateTime: - return 0, false - case typeDateTimeN: - switch ti.Size { - case 4: - return 0, false - case 8: - return 0, false - default: - panic("invalid size of DATETIMEN") - } - case typeDateTime2N: - return 0, false - case typeDateN: - return 0, false - case typeTimeN: - return 0, false - case typeDateTimeOffsetN: - return 0, false - case typeBigVarBin: - if ti.Size == 0xffff { - return 2147483645, true - } else { - return int64(ti.Size), true - } - case typeVarChar: - return int64(ti.Size), true - case typeBigVarChar: - if ti.Size == 0xffff { - return 2147483645, true - } else { - return int64(ti.Size), true - } - case typeBigChar: - return int64(ti.Size), true - case typeNVarChar: - if ti.Size == 0xffff { - return 2147483645 / 2, true - } else { - return int64(ti.Size) / 2, true - } - case typeNChar: - return int64(ti.Size) / 2, true - case typeGuid: - return 0, false - case typeXml: - return 1073741822, true - case typeText: - return 2147483647, true - case typeNText: - return 1073741823, true - case typeImage: - return 2147483647, true - case typeVariant: - return 0, false - case typeBigBinary: - return 0, false - default: - panic(fmt.Sprintf("not implemented makeGoLangTypeLength for type %d", ti.TypeId)) - } -} - -// makes go/sql type precision and scale as described below -// It should return the length -// of the column type if the column is a variable length type. If the column is -// not a variable length type ok should return false. -// If length is not limited other than system limits, it should return math.MaxInt64. -// The following are examples of returned values for various types: -// TEXT (math.MaxInt64, true) -// varchar(10) (10, true) -// nvarchar(10) (10, true) -// decimal (0, false) -// int (0, false) -// bytea(30) (30, true) -func makeGoLangTypePrecisionScale(ti typeInfo) (int64, int64, bool) { - switch ti.TypeId { - case typeInt1: - return 0, 0, false - case typeInt2: - return 0, 0, false - case typeInt4: - return 0, 0, false - case typeInt8: - return 0, 0, false - case typeFlt4: - return 0, 0, false - case typeIntN: - switch ti.Size { - case 1: - return 0, 0, false - case 2: - return 0, 0, false - case 4: - return 0, 0, false - case 8: - return 0, 0, false - default: - panic("invalid size of INTNTYPE") - } - case typeFlt8: - return 0, 0, false - case typeFltN: - switch ti.Size { - case 4: - return 0, 0, false - case 8: - return 0, 0, false - default: - panic("invalid size of FLNNTYPE") - } - case typeBit, typeBitN: - return 0, 0, false - case typeDecimalN, typeNumericN: - return int64(ti.Prec), int64(ti.Scale), true - case typeMoney, typeMoney4, typeMoneyN: - switch ti.Size { - case 4: - return 0, 0, false - case 8: - return 0, 0, false - default: - panic("invalid size of MONEYN") - } - case typeDateTim4, typeDateTime: - return 0, 0, false - case typeDateTimeN: - switch ti.Size { - case 4: - return 0, 0, false - case 8: - return 0, 0, false - default: - panic("invalid size of DATETIMEN") - } - case typeDateTime2N: - return 0, 0, false - case typeDateN: - return 0, 0, false - case typeTimeN: - return 0, 0, false - case typeDateTimeOffsetN: - return 0, 0, false - case typeBigVarBin: - return 0, 0, false - case typeVarChar: - return 0, 0, false - case typeBigVarChar: - return 0, 0, false - case typeBigChar: - return 0, 0, false - case typeNVarChar: - return 0, 0, false - case typeNChar: - return 0, 0, false - case typeGuid: - return 0, 0, false - case typeXml: - return 0, 0, false - case typeText: - return 0, 0, false - case typeNText: - return 0, 0, false - case typeImage: - return 0, 0, false - case typeVariant: - return 0, 0, false - case typeBigBinary: - return 0, 0, false - default: - panic(fmt.Sprintf("not implemented makeGoLangTypePrecisionScale for type %d", ti.TypeId)) - } -} diff --git a/vendor/github.com/denisenkom/go-mssqldb/uniqueidentifier.go b/vendor/github.com/denisenkom/go-mssqldb/uniqueidentifier.go deleted file mode 100644 index 3ad6f863..00000000 --- a/vendor/github.com/denisenkom/go-mssqldb/uniqueidentifier.go +++ /dev/null @@ -1,80 +0,0 @@ -package mssql - -import ( - "database/sql/driver" - "encoding/hex" - "errors" - "fmt" -) - -type UniqueIdentifier [16]byte - -func (u *UniqueIdentifier) Scan(v interface{}) error { - reverse := func(b []byte) { - for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 { - b[i], b[j] = b[j], b[i] - } - } - - switch vt := v.(type) { - case []byte: - if len(vt) != 16 { - return errors.New("mssql: invalid UniqueIdentifier length") - } - - var raw UniqueIdentifier - - copy(raw[:], vt) - - reverse(raw[0:4]) - reverse(raw[4:6]) - reverse(raw[6:8]) - *u = raw - - return nil - case string: - if len(vt) != 36 { - return errors.New("mssql: invalid UniqueIdentifier string length") - } - - b := []byte(vt) - for i, c := range b { - switch c { - case '-': - b = append(b[:i], b[i+1:]...) - } - } - - _, err := hex.Decode(u[:], []byte(b)) - return err - default: - return fmt.Errorf("mssql: cannot convert %T to UniqueIdentifier", v) - } -} - -func (u UniqueIdentifier) Value() (driver.Value, error) { - reverse := func(b []byte) { - for i, j := 0, len(b)-1; i < j; i, j = i+1, j-1 { - b[i], b[j] = b[j], b[i] - } - } - - raw := make([]byte, len(u)) - copy(raw, u[:]) - - reverse(raw[0:4]) - reverse(raw[4:6]) - reverse(raw[6:8]) - - return raw, nil -} - -func (u UniqueIdentifier) String() string { - return fmt.Sprintf("%X-%X-%X-%X-%X", u[0:4], u[4:6], u[6:8], u[8:10], u[10:]) -} - -// MarshalText converts Uniqueidentifier to bytes corresponding to the stringified hexadecimal representation of the Uniqueidentifier -// e.g., "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" -> [65 65 65 65 65 65 65 65 45 65 65 65 65 45 65 65 65 65 45 65 65 65 65 65 65 65 65 65 65 65 65] -func (u UniqueIdentifier) MarshalText() []byte { - return []byte(u.String()) -} diff --git a/vendor/github.com/go-sql-driver/mysql/AUTHORS b/vendor/github.com/go-sql-driver/mysql/AUTHORS deleted file mode 100644 index 9765b534..00000000 --- a/vendor/github.com/go-sql-driver/mysql/AUTHORS +++ /dev/null @@ -1,103 +0,0 @@ -# This is the official list of Go-MySQL-Driver authors for copyright purposes. - -# If you are submitting a patch, please add your name or the name of the -# organization which holds the copyright to this list in alphabetical order. - -# Names should be added to this file as -# Name -# The email address is not required for organizations. -# Please keep the list sorted. - - -# Individual Persons - -Aaron Hopkins -Achille Roussel -Alexey Palazhchenko -Andrew Reid -Arne Hormann -Asta Xie -Bulat Gaifullin -Carlos Nieto -Chris Moos -Craig Wilson -Daniel Montoya -Daniel Nichter -Daniël van Eeden -Dave Protasowski -DisposaBoy -Egor Smolyakov -Erwan Martin -Evan Shaw -Frederick Mayle -Gustavo Kristic -Hajime Nakagami -Hanno Braun -Henri Yandell -Hirotaka Yamamoto -Huyiguang -ICHINOSE Shogo -Ilia Cimpoes -INADA Naoki -Jacek Szwec -James Harr -Jeff Hodges -Jeffrey Charles -Jerome Meyer -Jian Zhen -Joshua Prunier -Julien Lefevre -Julien Schmidt -Justin Li -Justin Nuß -Kamil Dziedzic -Kevin Malachowski -Kieron Woodhouse -Lennart Rudolph -Leonardo YongUk Kim -Linh Tran Tuan -Lion Yang -Luca Looz -Lucas Liu -Luke Scott -Maciej Zimnoch -Michael Woolnough -Nicola Peduzzi -Olivier Mengué -oscarzhao -Paul Bonser -Peter Schultz -Rebecca Chin -Reed Allman -Richard Wilkes -Robert Russell -Runrioter Wung -Shuode Li -Simon J Mudd -Soroush Pour -Stan Putrya -Stanley Gunawan -Steven Hartland -Thomas Wodarek -Tim Ruffles -Tom Jenkinson -Vladimir Kovpak -Xiangyu Hu -Xiaobing Jiang -Xiuming Chen -Zhenye Xie - -# Organizations - -Barracuda Networks, Inc. -Counting Ltd. -DigitalOcean Inc. -Facebook Inc. -GitHub Inc. -Google Inc. -InfoSum Ltd. -Keybase Inc. -Multiplay Ltd. -Percona LLC -Pivotal Inc. -Stripe Inc. diff --git a/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md b/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md deleted file mode 100644 index 2d87d74c..00000000 --- a/vendor/github.com/go-sql-driver/mysql/CHANGELOG.md +++ /dev/null @@ -1,167 +0,0 @@ -## Version 1.4 (2018-06-03) - -Changes: - - - Documentation fixes (#530, #535, #567) - - Refactoring (#575, #579, #580, #581, #603, #615, #704) - - Cache column names (#444) - - Sort the DSN parameters in DSNs generated from a config (#637) - - Allow native password authentication by default (#644) - - Use the default port if it is missing in the DSN (#668) - - Removed the `strict` mode (#676) - - Do not query `max_allowed_packet` by default (#680) - - Dropped support Go 1.6 and lower (#696) - - Updated `ConvertValue()` to match the database/sql/driver implementation (#760) - - Document the usage of `0000-00-00T00:00:00` as the time.Time zero value (#783) - - Improved the compatibility of the authentication system (#807) - -New Features: - - - Multi-Results support (#537) - - `rejectReadOnly` DSN option (#604) - - `context.Context` support (#608, #612, #627, #761) - - Transaction isolation level support (#619, #744) - - Read-Only transactions support (#618, #634) - - `NewConfig` function which initializes a config with default values (#679) - - Implemented the `ColumnType` interfaces (#667, #724) - - Support for custom string types in `ConvertValue` (#623) - - Implemented `NamedValueChecker`, improving support for uint64 with high bit set (#690, #709, #710) - - `caching_sha2_password` authentication plugin support (#794, #800, #801, #802) - - Implemented `driver.SessionResetter` (#779) - - `sha256_password` authentication plugin support (#808) - -Bugfixes: - - - Use the DSN hostname as TLS default ServerName if `tls=true` (#564, #718) - - Fixed LOAD LOCAL DATA INFILE for empty files (#590) - - Removed columns definition cache since it sometimes cached invalid data (#592) - - Don't mutate registered TLS configs (#600) - - Make RegisterTLSConfig concurrency-safe (#613) - - Handle missing auth data in the handshake packet correctly (#646) - - Do not retry queries when data was written to avoid data corruption (#302, #736) - - Cache the connection pointer for error handling before invalidating it (#678) - - Fixed imports for appengine/cloudsql (#700) - - Fix sending STMT_LONG_DATA for 0 byte data (#734) - - Set correct capacity for []bytes read from length-encoded strings (#766) - - Make RegisterDial concurrency-safe (#773) - - -## Version 1.3 (2016-12-01) - -Changes: - - - Go 1.1 is no longer supported - - Use decimals fields in MySQL to format time types (#249) - - Buffer optimizations (#269) - - TLS ServerName defaults to the host (#283) - - Refactoring (#400, #410, #437) - - Adjusted documentation for second generation CloudSQL (#485) - - Documented DSN system var quoting rules (#502) - - Made statement.Close() calls idempotent to avoid errors in Go 1.6+ (#512) - -New Features: - - - Enable microsecond resolution on TIME, DATETIME and TIMESTAMP (#249) - - Support for returning table alias on Columns() (#289, #359, #382) - - Placeholder interpolation, can be actived with the DSN parameter `interpolateParams=true` (#309, #318, #490) - - Support for uint64 parameters with high bit set (#332, #345) - - Cleartext authentication plugin support (#327) - - Exported ParseDSN function and the Config struct (#403, #419, #429) - - Read / Write timeouts (#401) - - Support for JSON field type (#414) - - Support for multi-statements and multi-results (#411, #431) - - DSN parameter to set the driver-side max_allowed_packet value manually (#489) - - Native password authentication plugin support (#494, #524) - -Bugfixes: - - - Fixed handling of queries without columns and rows (#255) - - Fixed a panic when SetKeepAlive() failed (#298) - - Handle ERR packets while reading rows (#321) - - Fixed reading NULL length-encoded integers in MySQL 5.6+ (#349) - - Fixed absolute paths support in LOAD LOCAL DATA INFILE (#356) - - Actually zero out bytes in handshake response (#378) - - Fixed race condition in registering LOAD DATA INFILE handler (#383) - - Fixed tests with MySQL 5.7.9+ (#380) - - QueryUnescape TLS config names (#397) - - Fixed "broken pipe" error by writing to closed socket (#390) - - Fixed LOAD LOCAL DATA INFILE buffering (#424) - - Fixed parsing of floats into float64 when placeholders are used (#434) - - Fixed DSN tests with Go 1.7+ (#459) - - Handle ERR packets while waiting for EOF (#473) - - Invalidate connection on error while discarding additional results (#513) - - Allow terminating packets of length 0 (#516) - - -## Version 1.2 (2014-06-03) - -Changes: - - - We switched back to a "rolling release". `go get` installs the current master branch again - - Version v1 of the driver will not be maintained anymore. Go 1.0 is no longer supported by this driver - - Exported errors to allow easy checking from application code - - Enabled TCP Keepalives on TCP connections - - Optimized INFILE handling (better buffer size calculation, lazy init, ...) - - The DSN parser also checks for a missing separating slash - - Faster binary date / datetime to string formatting - - Also exported the MySQLWarning type - - mysqlConn.Close returns the first error encountered instead of ignoring all errors - - writePacket() automatically writes the packet size to the header - - readPacket() uses an iterative approach instead of the recursive approach to merge splitted packets - -New Features: - - - `RegisterDial` allows the usage of a custom dial function to establish the network connection - - Setting the connection collation is possible with the `collation` DSN parameter. This parameter should be preferred over the `charset` parameter - - Logging of critical errors is configurable with `SetLogger` - - Google CloudSQL support - -Bugfixes: - - - Allow more than 32 parameters in prepared statements - - Various old_password fixes - - Fixed TestConcurrent test to pass Go's race detection - - Fixed appendLengthEncodedInteger for large numbers - - Renamed readLengthEnodedString to readLengthEncodedString and skipLengthEnodedString to skipLengthEncodedString (fixed typo) - - -## Version 1.1 (2013-11-02) - -Changes: - - - Go-MySQL-Driver now requires Go 1.1 - - Connections now use the collation `utf8_general_ci` by default. Adding `&charset=UTF8` to the DSN should not be necessary anymore - - Made closing rows and connections error tolerant. This allows for example deferring rows.Close() without checking for errors - - `[]byte(nil)` is now treated as a NULL value. Before, it was treated like an empty string / `[]byte("")` - - DSN parameter values must now be url.QueryEscape'ed. This allows text values to contain special characters, such as '&'. - - Use the IO buffer also for writing. This results in zero allocations (by the driver) for most queries - - Optimized the buffer for reading - - stmt.Query now caches column metadata - - New Logo - - Changed the copyright header to include all contributors - - Improved the LOAD INFILE documentation - - The driver struct is now exported to make the driver directly accessible - - Refactored the driver tests - - Added more benchmarks and moved all to a separate file - - Other small refactoring - -New Features: - - - Added *old_passwords* support: Required in some cases, but must be enabled by adding `allowOldPasswords=true` to the DSN since it is insecure - - Added a `clientFoundRows` parameter: Return the number of matching rows instead of the number of rows changed on UPDATEs - - Added TLS/SSL support: Use a TLS/SSL encrypted connection to the server. Custom TLS configs can be registered and used - -Bugfixes: - - - Fixed MySQL 4.1 support: MySQL 4.1 sends packets with lengths which differ from the specification - - Convert to DB timezone when inserting `time.Time` - - Splitted packets (more than 16MB) are now merged correctly - - Fixed false positive `io.EOF` errors when the data was fully read - - Avoid panics on reuse of closed connections - - Fixed empty string producing false nil values - - Fixed sign byte for positive TIME fields - - -## Version 1.0 (2013-05-14) - -Initial Release diff --git a/vendor/github.com/go-sql-driver/mysql/LICENSE b/vendor/github.com/go-sql-driver/mysql/LICENSE deleted file mode 100644 index 14e2f777..00000000 --- a/vendor/github.com/go-sql-driver/mysql/LICENSE +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/go-sql-driver/mysql/README.md b/vendor/github.com/go-sql-driver/mysql/README.md deleted file mode 100644 index dce7a532..00000000 --- a/vendor/github.com/go-sql-driver/mysql/README.md +++ /dev/null @@ -1,490 +0,0 @@ -# Go-MySQL-Driver - -A MySQL-Driver for Go's [database/sql](https://golang.org/pkg/database/sql/) package - -![Go-MySQL-Driver logo](https://raw.github.com/wiki/go-sql-driver/mysql/gomysql_m.png "Golang Gopher holding the MySQL Dolphin") - ---------------------------------------- - * [Features](#features) - * [Requirements](#requirements) - * [Installation](#installation) - * [Usage](#usage) - * [DSN (Data Source Name)](#dsn-data-source-name) - * [Password](#password) - * [Protocol](#protocol) - * [Address](#address) - * [Parameters](#parameters) - * [Examples](#examples) - * [Connection pool and timeouts](#connection-pool-and-timeouts) - * [context.Context Support](#contextcontext-support) - * [ColumnType Support](#columntype-support) - * [LOAD DATA LOCAL INFILE support](#load-data-local-infile-support) - * [time.Time support](#timetime-support) - * [Unicode support](#unicode-support) - * [Testing / Development](#testing--development) - * [License](#license) - ---------------------------------------- - -## Features - * Lightweight and [fast](https://github.com/go-sql-driver/sql-benchmark "golang MySQL-Driver performance") - * Native Go implementation. No C-bindings, just pure Go - * Connections over TCP/IPv4, TCP/IPv6, Unix domain sockets or [custom protocols](https://godoc.org/github.com/go-sql-driver/mysql#DialFunc) - * Automatic handling of broken connections - * Automatic Connection Pooling *(by database/sql package)* - * Supports queries larger than 16MB - * Full [`sql.RawBytes`](https://golang.org/pkg/database/sql/#RawBytes) support. - * Intelligent `LONG DATA` handling in prepared statements - * Secure `LOAD DATA LOCAL INFILE` support with file Whitelisting and `io.Reader` support - * Optional `time.Time` parsing - * Optional placeholder interpolation - -## Requirements - * Go 1.9 or higher. We aim to support the 3 latest versions of Go. - * MySQL (4.1+), MariaDB, Percona Server, Google CloudSQL or Sphinx (2.2.3+) - ---------------------------------------- - -## Installation -Simple install the package to your [$GOPATH](https://github.com/golang/go/wiki/GOPATH "GOPATH") with the [go tool](https://golang.org/cmd/go/ "go command") from shell: -```bash -$ go get -u github.com/go-sql-driver/mysql -``` -Make sure [Git is installed](https://git-scm.com/downloads) on your machine and in your system's `PATH`. - -## Usage -_Go MySQL Driver_ is an implementation of Go's `database/sql/driver` interface. You only need to import the driver and can use the full [`database/sql`](https://golang.org/pkg/database/sql/) API then. - -Use `mysql` as `driverName` and a valid [DSN](#dsn-data-source-name) as `dataSourceName`: -```go -import "database/sql" -import _ "github.com/go-sql-driver/mysql" - -db, err := sql.Open("mysql", "user:password@/dbname") -``` - -[Examples are available in our Wiki](https://github.com/go-sql-driver/mysql/wiki/Examples "Go-MySQL-Driver Examples"). - - -### DSN (Data Source Name) - -The Data Source Name has a common format, like e.g. [PEAR DB](http://pear.php.net/manual/en/package.database.db.intro-dsn.php) uses it, but without type-prefix (optional parts marked by squared brackets): -``` -[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN] -``` - -A DSN in its fullest form: -``` -username:password@protocol(address)/dbname?param=value -``` - -Except for the databasename, all values are optional. So the minimal DSN is: -``` -/dbname -``` - -If you do not want to preselect a database, leave `dbname` empty: -``` -/ -``` -This has the same effect as an empty DSN string: -``` - -``` - -Alternatively, [Config.FormatDSN](https://godoc.org/github.com/go-sql-driver/mysql#Config.FormatDSN) can be used to create a DSN string by filling a struct. - -#### Password -Passwords can consist of any character. Escaping is **not** necessary. - -#### Protocol -See [net.Dial](https://golang.org/pkg/net/#Dial) for more information which networks are available. -In general you should use an Unix domain socket if available and TCP otherwise for best performance. - -#### Address -For TCP and UDP networks, addresses have the form `host[:port]`. -If `port` is omitted, the default port will be used. -If `host` is a literal IPv6 address, it must be enclosed in square brackets. -The functions [net.JoinHostPort](https://golang.org/pkg/net/#JoinHostPort) and [net.SplitHostPort](https://golang.org/pkg/net/#SplitHostPort) manipulate addresses in this form. - -For Unix domain sockets the address is the absolute path to the MySQL-Server-socket, e.g. `/var/run/mysqld/mysqld.sock` or `/tmp/mysql.sock`. - -#### Parameters -*Parameters are case-sensitive!* - -Notice that any of `true`, `TRUE`, `True` or `1` is accepted to stand for a true boolean value. Not surprisingly, false can be specified as any of: `false`, `FALSE`, `False` or `0`. - -##### `allowAllFiles` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -`allowAllFiles=true` disables the file Whitelist for `LOAD DATA LOCAL INFILE` and allows *all* files. -[*Might be insecure!*](http://dev.mysql.com/doc/refman/5.7/en/load-data-local.html) - -##### `allowCleartextPasswords` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -`allowCleartextPasswords=true` allows using the [cleartext client side plugin](http://dev.mysql.com/doc/en/cleartext-authentication-plugin.html) if required by an account, such as one defined with the [PAM authentication plugin](http://dev.mysql.com/doc/en/pam-authentication-plugin.html). Sending passwords in clear text may be a security problem in some configurations. To avoid problems if there is any possibility that the password would be intercepted, clients should connect to MySQL Server using a method that protects the password. Possibilities include [TLS / SSL](#tls), IPsec, or a private network. - -##### `allowNativePasswords` - -``` -Type: bool -Valid Values: true, false -Default: true -``` -`allowNativePasswords=false` disallows the usage of MySQL native password method. - -##### `allowOldPasswords` - -``` -Type: bool -Valid Values: true, false -Default: false -``` -`allowOldPasswords=true` allows the usage of the insecure old password method. This should be avoided, but is necessary in some cases. See also [the old_passwords wiki page](https://github.com/go-sql-driver/mysql/wiki/old_passwords). - -##### `charset` - -``` -Type: string -Valid Values: -Default: none -``` - -Sets the charset used for client-server interaction (`"SET NAMES "`). If multiple charsets are set (separated by a comma), the following charset is used if setting the charset failes. This enables for example support for `utf8mb4` ([introduced in MySQL 5.5.3](http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html)) with fallback to `utf8` for older servers (`charset=utf8mb4,utf8`). - -Usage of the `charset` parameter is discouraged because it issues additional queries to the server. -Unless you need the fallback behavior, please use `collation` instead. - -##### `collation` - -``` -Type: string -Valid Values: -Default: utf8mb4_general_ci -``` - -Sets the collation used for client-server interaction on connection. In contrast to `charset`, `collation` does not issue additional queries. If the specified collation is unavailable on the target server, the connection will fail. - -A list of valid charsets for a server is retrievable with `SHOW COLLATION`. - -The default collation (`utf8mb4_general_ci`) is supported from MySQL 5.5. You should use an older collation (e.g. `utf8_general_ci`) for older MySQL. - -Collations for charset "ucs2", "utf16", "utf16le", and "utf32" can not be used ([ref](https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset-connection-impermissible-client-charset)). - - -##### `clientFoundRows` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -`clientFoundRows=true` causes an UPDATE to return the number of matching rows instead of the number of rows changed. - -##### `columnsWithAlias` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -When `columnsWithAlias` is true, calls to `sql.Rows.Columns()` will return the table alias and the column name separated by a dot. For example: - -``` -SELECT u.id FROM users as u -``` - -will return `u.id` instead of just `id` if `columnsWithAlias=true`. - -##### `interpolateParams` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -If `interpolateParams` is true, placeholders (`?`) in calls to `db.Query()` and `db.Exec()` are interpolated into a single query string with given parameters. This reduces the number of roundtrips, since the driver has to prepare a statement, execute it with given parameters and close the statement again with `interpolateParams=false`. - -*This can not be used together with the multibyte encodings BIG5, CP932, GB2312, GBK or SJIS. These are blacklisted as they may [introduce a SQL injection vulnerability](http://stackoverflow.com/a/12118602/3430118)!* - -##### `loc` - -``` -Type: string -Valid Values: -Default: UTC -``` - -Sets the location for time.Time values (when using `parseTime=true`). *"Local"* sets the system's location. See [time.LoadLocation](https://golang.org/pkg/time/#LoadLocation) for details. - -Note that this sets the location for time.Time values but does not change MySQL's [time_zone setting](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html). For that see the [time_zone system variable](#system-variables), which can also be set as a DSN parameter. - -Please keep in mind, that param values must be [url.QueryEscape](https://golang.org/pkg/net/url/#QueryEscape)'ed. Alternatively you can manually replace the `/` with `%2F`. For example `US/Pacific` would be `loc=US%2FPacific`. - -##### `maxAllowedPacket` -``` -Type: decimal number -Default: 4194304 -``` - -Max packet size allowed in bytes. The default value is 4 MiB and should be adjusted to match the server settings. `maxAllowedPacket=0` can be used to automatically fetch the `max_allowed_packet` variable from server *on every connection*. - -##### `multiStatements` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -Allow multiple statements in one query. While this allows batch queries, it also greatly increases the risk of SQL injections. Only the result of the first query is returned, all other results are silently discarded. - -When `multiStatements` is used, `?` parameters must only be used in the first statement. - -##### `parseTime` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - -`parseTime=true` changes the output type of `DATE` and `DATETIME` values to `time.Time` instead of `[]byte` / `string` -The date or datetime like `0000-00-00 00:00:00` is converted into zero value of `time.Time`. - - -##### `readTimeout` - -``` -Type: duration -Default: 0 -``` - -I/O read timeout. The value must be a decimal number with a unit suffix (*"ms"*, *"s"*, *"m"*, *"h"*), such as *"30s"*, *"0.5m"* or *"1m30s"*. - -##### `rejectReadOnly` - -``` -Type: bool -Valid Values: true, false -Default: false -``` - - -`rejectReadOnly=true` causes the driver to reject read-only connections. This -is for a possible race condition during an automatic failover, where the mysql -client gets connected to a read-only replica after the failover. - -Note that this should be a fairly rare case, as an automatic failover normally -happens when the primary is down, and the race condition shouldn't happen -unless it comes back up online as soon as the failover is kicked off. On the -other hand, when this happens, a MySQL application can get stuck on a -read-only connection until restarted. It is however fairly easy to reproduce, -for example, using a manual failover on AWS Aurora's MySQL-compatible cluster. - -If you are not relying on read-only transactions to reject writes that aren't -supposed to happen, setting this on some MySQL providers (such as AWS Aurora) -is safer for failovers. - -Note that ERROR 1290 can be returned for a `read-only` server and this option will -cause a retry for that error. However the same error number is used for some -other cases. You should ensure your application will never cause an ERROR 1290 -except for `read-only` mode when enabling this option. - - -##### `serverPubKey` - -``` -Type: string -Valid Values: -Default: none -``` - -Server public keys can be registered with [`mysql.RegisterServerPubKey`](https://godoc.org/github.com/go-sql-driver/mysql#RegisterServerPubKey), which can then be used by the assigned name in the DSN. -Public keys are used to transmit encrypted data, e.g. for authentication. -If the server's public key is known, it should be set manually to avoid expensive and potentially insecure transmissions of the public key from the server to the client each time it is required. - - -##### `timeout` - -``` -Type: duration -Default: OS default -``` - -Timeout for establishing connections, aka dial timeout. The value must be a decimal number with a unit suffix (*"ms"*, *"s"*, *"m"*, *"h"*), such as *"30s"*, *"0.5m"* or *"1m30s"*. - - -##### `tls` - -``` -Type: bool / string -Valid Values: true, false, skip-verify, preferred, -Default: false -``` - -`tls=true` enables TLS / SSL encrypted connection to the server. Use `skip-verify` if you want to use a self-signed or invalid certificate (server side) or use `preferred` to use TLS only when advertised by the server. This is similar to `skip-verify`, but additionally allows a fallback to a connection which is not encrypted. Neither `skip-verify` nor `preferred` add any reliable security. You can use a custom TLS config after registering it with [`mysql.RegisterTLSConfig`](https://godoc.org/github.com/go-sql-driver/mysql#RegisterTLSConfig). - - -##### `writeTimeout` - -``` -Type: duration -Default: 0 -``` - -I/O write timeout. The value must be a decimal number with a unit suffix (*"ms"*, *"s"*, *"m"*, *"h"*), such as *"30s"*, *"0.5m"* or *"1m30s"*. - - -##### System Variables - -Any other parameters are interpreted as system variables: - * `=`: `SET =` - * `=`: `SET =` - * `=%27%27`: `SET =''` - -Rules: -* The values for string variables must be quoted with `'`. -* The values must also be [url.QueryEscape](http://golang.org/pkg/net/url/#QueryEscape)'ed! - (which implies values of string variables must be wrapped with `%27`). - -Examples: - * `autocommit=1`: `SET autocommit=1` - * [`time_zone=%27Europe%2FParis%27`](https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html): `SET time_zone='Europe/Paris'` - * [`tx_isolation=%27REPEATABLE-READ%27`](https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation): `SET tx_isolation='REPEATABLE-READ'` - - -#### Examples -``` -user@unix(/path/to/socket)/dbname -``` - -``` -root:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Local -``` - -``` -user:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true -``` - -Treat warnings as errors by setting the system variable [`sql_mode`](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html): -``` -user:password@/dbname?sql_mode=TRADITIONAL -``` - -TCP via IPv6: -``` -user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname?timeout=90s&collation=utf8mb4_unicode_ci -``` - -TCP on a remote host, e.g. Amazon RDS: -``` -id:password@tcp(your-amazonaws-uri.com:3306)/dbname -``` - -Google Cloud SQL on App Engine: -``` -user:password@unix(/cloudsql/project-id:region-name:instance-name)/dbname -``` - -TCP using default port (3306) on localhost: -``` -user:password@tcp/dbname?charset=utf8mb4,utf8&sys_var=esc%40ped -``` - -Use the default protocol (tcp) and host (localhost:3306): -``` -user:password@/dbname -``` - -No Database preselected: -``` -user:password@/ -``` - - -### Connection pool and timeouts -The connection pool is managed by Go's database/sql package. For details on how to configure the size of the pool and how long connections stay in the pool see `*DB.SetMaxOpenConns`, `*DB.SetMaxIdleConns`, and `*DB.SetConnMaxLifetime` in the [database/sql documentation](https://golang.org/pkg/database/sql/). The read, write, and dial timeouts for each individual connection are configured with the DSN parameters [`readTimeout`](#readtimeout), [`writeTimeout`](#writetimeout), and [`timeout`](#timeout), respectively. - -## `ColumnType` Support -This driver supports the [`ColumnType` interface](https://golang.org/pkg/database/sql/#ColumnType) introduced in Go 1.8, with the exception of [`ColumnType.Length()`](https://golang.org/pkg/database/sql/#ColumnType.Length), which is currently not supported. - -## `context.Context` Support -Go 1.8 added `database/sql` support for `context.Context`. This driver supports query timeouts and cancellation via contexts. -See [context support in the database/sql package](https://golang.org/doc/go1.8#database_sql) for more details. - - -### `LOAD DATA LOCAL INFILE` support -For this feature you need direct access to the package. Therefore you must change the import path (no `_`): -```go -import "github.com/go-sql-driver/mysql" -``` - -Files must be whitelisted by registering them with `mysql.RegisterLocalFile(filepath)` (recommended) or the Whitelist check must be deactivated by using the DSN parameter `allowAllFiles=true` ([*Might be insecure!*](http://dev.mysql.com/doc/refman/5.7/en/load-data-local.html)). - -To use a `io.Reader` a handler function must be registered with `mysql.RegisterReaderHandler(name, handler)` which returns a `io.Reader` or `io.ReadCloser`. The Reader is available with the filepath `Reader::` then. Choose different names for different handlers and `DeregisterReaderHandler` when you don't need it anymore. - -See the [godoc of Go-MySQL-Driver](https://godoc.org/github.com/go-sql-driver/mysql "golang mysql driver documentation") for details. - - -### `time.Time` support -The default internal output type of MySQL `DATE` and `DATETIME` values is `[]byte` which allows you to scan the value into a `[]byte`, `string` or `sql.RawBytes` variable in your program. - -However, many want to scan MySQL `DATE` and `DATETIME` values into `time.Time` variables, which is the logical equivalent in Go to `DATE` and `DATETIME` in MySQL. You can do that by changing the internal output type from `[]byte` to `time.Time` with the DSN parameter `parseTime=true`. You can set the default [`time.Time` location](https://golang.org/pkg/time/#Location) with the `loc` DSN parameter. - -**Caution:** As of Go 1.1, this makes `time.Time` the only variable type you can scan `DATE` and `DATETIME` values into. This breaks for example [`sql.RawBytes` support](https://github.com/go-sql-driver/mysql/wiki/Examples#rawbytes). - -Alternatively you can use the [`NullTime`](https://godoc.org/github.com/go-sql-driver/mysql#NullTime) type as the scan destination, which works with both `time.Time` and `string` / `[]byte`. - - -### Unicode support -Since version 1.1 Go-MySQL-Driver automatically uses the collation `utf8_general_ci` by default. - -Other collations / charsets can be set using the [`collation`](#collation) DSN parameter. - -Version 1.0 of the driver recommended adding `&charset=utf8` (alias for `SET NAMES utf8`) to the DSN to enable proper UTF-8 support. This is not necessary anymore. The [`collation`](#collation) parameter should be preferred to set another collation / charset than the default. - -See http://dev.mysql.com/doc/refman/5.7/en/charset-unicode.html for more details on MySQL's Unicode support. - -## Testing / Development -To run the driver tests you may need to adjust the configuration. See the [Testing Wiki-Page](https://github.com/go-sql-driver/mysql/wiki/Testing "Testing") for details. - -Go-MySQL-Driver is not feature-complete yet. Your help is very appreciated. -If you want to contribute, you can work on an [open issue](https://github.com/go-sql-driver/mysql/issues?state=open) or review a [pull request](https://github.com/go-sql-driver/mysql/pulls). - -See the [Contribution Guidelines](https://github.com/go-sql-driver/mysql/blob/master/CONTRIBUTING.md) for details. - ---------------------------------------- - -## License -Go-MySQL-Driver is licensed under the [Mozilla Public License Version 2.0](https://raw.github.com/go-sql-driver/mysql/master/LICENSE) - -Mozilla summarizes the license scope as follows: -> MPL: The copyleft applies to any files containing MPLed code. - - -That means: - * You can **use** the **unchanged** source code both in private and commercially. - * When distributing, you **must publish** the source code of any **changed files** licensed under the MPL 2.0 under a) the MPL 2.0 itself or b) a compatible license (e.g. GPL 3.0 or Apache License 2.0). - * You **needn't publish** the source code of your library as long as the files licensed under the MPL 2.0 are **unchanged**. - -Please read the [MPL 2.0 FAQ](https://www.mozilla.org/en-US/MPL/2.0/FAQ/) if you have further questions regarding the license. - -You can read the full terms here: [LICENSE](https://raw.github.com/go-sql-driver/mysql/master/LICENSE). - -![Go Gopher and MySQL Dolphin](https://raw.github.com/wiki/go-sql-driver/mysql/go-mysql-driver_m.jpg "Golang Gopher transporting the MySQL Dolphin in a wheelbarrow") - diff --git a/vendor/github.com/go-sql-driver/mysql/auth.go b/vendor/github.com/go-sql-driver/mysql/auth.go deleted file mode 100644 index fec7040d..00000000 --- a/vendor/github.com/go-sql-driver/mysql/auth.go +++ /dev/null @@ -1,422 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2018 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "crypto/rand" - "crypto/rsa" - "crypto/sha1" - "crypto/sha256" - "crypto/x509" - "encoding/pem" - "sync" -) - -// server pub keys registry -var ( - serverPubKeyLock sync.RWMutex - serverPubKeyRegistry map[string]*rsa.PublicKey -) - -// RegisterServerPubKey registers a server RSA public key which can be used to -// send data in a secure manner to the server without receiving the public key -// in a potentially insecure way from the server first. -// Registered keys can afterwards be used adding serverPubKey= to the DSN. -// -// Note: The provided rsa.PublicKey instance is exclusively owned by the driver -// after registering it and may not be modified. -// -// data, err := ioutil.ReadFile("mykey.pem") -// if err != nil { -// log.Fatal(err) -// } -// -// block, _ := pem.Decode(data) -// if block == nil || block.Type != "PUBLIC KEY" { -// log.Fatal("failed to decode PEM block containing public key") -// } -// -// pub, err := x509.ParsePKIXPublicKey(block.Bytes) -// if err != nil { -// log.Fatal(err) -// } -// -// if rsaPubKey, ok := pub.(*rsa.PublicKey); ok { -// mysql.RegisterServerPubKey("mykey", rsaPubKey) -// } else { -// log.Fatal("not a RSA public key") -// } -// -func RegisterServerPubKey(name string, pubKey *rsa.PublicKey) { - serverPubKeyLock.Lock() - if serverPubKeyRegistry == nil { - serverPubKeyRegistry = make(map[string]*rsa.PublicKey) - } - - serverPubKeyRegistry[name] = pubKey - serverPubKeyLock.Unlock() -} - -// DeregisterServerPubKey removes the public key registered with the given name. -func DeregisterServerPubKey(name string) { - serverPubKeyLock.Lock() - if serverPubKeyRegistry != nil { - delete(serverPubKeyRegistry, name) - } - serverPubKeyLock.Unlock() -} - -func getServerPubKey(name string) (pubKey *rsa.PublicKey) { - serverPubKeyLock.RLock() - if v, ok := serverPubKeyRegistry[name]; ok { - pubKey = v - } - serverPubKeyLock.RUnlock() - return -} - -// Hash password using pre 4.1 (old password) method -// https://github.com/atcurtis/mariadb/blob/master/mysys/my_rnd.c -type myRnd struct { - seed1, seed2 uint32 -} - -const myRndMaxVal = 0x3FFFFFFF - -// Pseudo random number generator -func newMyRnd(seed1, seed2 uint32) *myRnd { - return &myRnd{ - seed1: seed1 % myRndMaxVal, - seed2: seed2 % myRndMaxVal, - } -} - -// Tested to be equivalent to MariaDB's floating point variant -// http://play.golang.org/p/QHvhd4qved -// http://play.golang.org/p/RG0q4ElWDx -func (r *myRnd) NextByte() byte { - r.seed1 = (r.seed1*3 + r.seed2) % myRndMaxVal - r.seed2 = (r.seed1 + r.seed2 + 33) % myRndMaxVal - - return byte(uint64(r.seed1) * 31 / myRndMaxVal) -} - -// Generate binary hash from byte string using insecure pre 4.1 method -func pwHash(password []byte) (result [2]uint32) { - var add uint32 = 7 - var tmp uint32 - - result[0] = 1345345333 - result[1] = 0x12345671 - - for _, c := range password { - // skip spaces and tabs in password - if c == ' ' || c == '\t' { - continue - } - - tmp = uint32(c) - result[0] ^= (((result[0] & 63) + add) * tmp) + (result[0] << 8) - result[1] += (result[1] << 8) ^ result[0] - add += tmp - } - - // Remove sign bit (1<<31)-1) - result[0] &= 0x7FFFFFFF - result[1] &= 0x7FFFFFFF - - return -} - -// Hash password using insecure pre 4.1 method -func scrambleOldPassword(scramble []byte, password string) []byte { - if len(password) == 0 { - return nil - } - - scramble = scramble[:8] - - hashPw := pwHash([]byte(password)) - hashSc := pwHash(scramble) - - r := newMyRnd(hashPw[0]^hashSc[0], hashPw[1]^hashSc[1]) - - var out [8]byte - for i := range out { - out[i] = r.NextByte() + 64 - } - - mask := r.NextByte() - for i := range out { - out[i] ^= mask - } - - return out[:] -} - -// Hash password using 4.1+ method (SHA1) -func scramblePassword(scramble []byte, password string) []byte { - if len(password) == 0 { - return nil - } - - // stage1Hash = SHA1(password) - crypt := sha1.New() - crypt.Write([]byte(password)) - stage1 := crypt.Sum(nil) - - // scrambleHash = SHA1(scramble + SHA1(stage1Hash)) - // inner Hash - crypt.Reset() - crypt.Write(stage1) - hash := crypt.Sum(nil) - - // outer Hash - crypt.Reset() - crypt.Write(scramble) - crypt.Write(hash) - scramble = crypt.Sum(nil) - - // token = scrambleHash XOR stage1Hash - for i := range scramble { - scramble[i] ^= stage1[i] - } - return scramble -} - -// Hash password using MySQL 8+ method (SHA256) -func scrambleSHA256Password(scramble []byte, password string) []byte { - if len(password) == 0 { - return nil - } - - // XOR(SHA256(password), SHA256(SHA256(SHA256(password)), scramble)) - - crypt := sha256.New() - crypt.Write([]byte(password)) - message1 := crypt.Sum(nil) - - crypt.Reset() - crypt.Write(message1) - message1Hash := crypt.Sum(nil) - - crypt.Reset() - crypt.Write(message1Hash) - crypt.Write(scramble) - message2 := crypt.Sum(nil) - - for i := range message1 { - message1[i] ^= message2[i] - } - - return message1 -} - -func encryptPassword(password string, seed []byte, pub *rsa.PublicKey) ([]byte, error) { - plain := make([]byte, len(password)+1) - copy(plain, password) - for i := range plain { - j := i % len(seed) - plain[i] ^= seed[j] - } - sha1 := sha1.New() - return rsa.EncryptOAEP(sha1, rand.Reader, pub, plain, nil) -} - -func (mc *mysqlConn) sendEncryptedPassword(seed []byte, pub *rsa.PublicKey) error { - enc, err := encryptPassword(mc.cfg.Passwd, seed, pub) - if err != nil { - return err - } - return mc.writeAuthSwitchPacket(enc) -} - -func (mc *mysqlConn) auth(authData []byte, plugin string) ([]byte, error) { - switch plugin { - case "caching_sha2_password": - authResp := scrambleSHA256Password(authData, mc.cfg.Passwd) - return authResp, nil - - case "mysql_old_password": - if !mc.cfg.AllowOldPasswords { - return nil, ErrOldPassword - } - // Note: there are edge cases where this should work but doesn't; - // this is currently "wontfix": - // https://github.com/go-sql-driver/mysql/issues/184 - authResp := append(scrambleOldPassword(authData[:8], mc.cfg.Passwd), 0) - return authResp, nil - - case "mysql_clear_password": - if !mc.cfg.AllowCleartextPasswords { - return nil, ErrCleartextPassword - } - // http://dev.mysql.com/doc/refman/5.7/en/cleartext-authentication-plugin.html - // http://dev.mysql.com/doc/refman/5.7/en/pam-authentication-plugin.html - return append([]byte(mc.cfg.Passwd), 0), nil - - case "mysql_native_password": - if !mc.cfg.AllowNativePasswords { - return nil, ErrNativePassword - } - // https://dev.mysql.com/doc/internals/en/secure-password-authentication.html - // Native password authentication only need and will need 20-byte challenge. - authResp := scramblePassword(authData[:20], mc.cfg.Passwd) - return authResp, nil - - case "sha256_password": - if len(mc.cfg.Passwd) == 0 { - return []byte{0}, nil - } - if mc.cfg.tls != nil || mc.cfg.Net == "unix" { - // write cleartext auth packet - return append([]byte(mc.cfg.Passwd), 0), nil - } - - pubKey := mc.cfg.pubKey - if pubKey == nil { - // request public key from server - return []byte{1}, nil - } - - // encrypted password - enc, err := encryptPassword(mc.cfg.Passwd, authData, pubKey) - return enc, err - - default: - errLog.Print("unknown auth plugin:", plugin) - return nil, ErrUnknownPlugin - } -} - -func (mc *mysqlConn) handleAuthResult(oldAuthData []byte, plugin string) error { - // Read Result Packet - authData, newPlugin, err := mc.readAuthResult() - if err != nil { - return err - } - - // handle auth plugin switch, if requested - if newPlugin != "" { - // If CLIENT_PLUGIN_AUTH capability is not supported, no new cipher is - // sent and we have to keep using the cipher sent in the init packet. - if authData == nil { - authData = oldAuthData - } else { - // copy data from read buffer to owned slice - copy(oldAuthData, authData) - } - - plugin = newPlugin - - authResp, err := mc.auth(authData, plugin) - if err != nil { - return err - } - if err = mc.writeAuthSwitchPacket(authResp); err != nil { - return err - } - - // Read Result Packet - authData, newPlugin, err = mc.readAuthResult() - if err != nil { - return err - } - - // Do not allow to change the auth plugin more than once - if newPlugin != "" { - return ErrMalformPkt - } - } - - switch plugin { - - // https://insidemysql.com/preparing-your-community-connector-for-mysql-8-part-2-sha256/ - case "caching_sha2_password": - switch len(authData) { - case 0: - return nil // auth successful - case 1: - switch authData[0] { - case cachingSha2PasswordFastAuthSuccess: - if err = mc.readResultOK(); err == nil { - return nil // auth successful - } - - case cachingSha2PasswordPerformFullAuthentication: - if mc.cfg.tls != nil || mc.cfg.Net == "unix" { - // write cleartext auth packet - err = mc.writeAuthSwitchPacket(append([]byte(mc.cfg.Passwd), 0)) - if err != nil { - return err - } - } else { - pubKey := mc.cfg.pubKey - if pubKey == nil { - // request public key from server - data, err := mc.buf.takeSmallBuffer(4 + 1) - if err != nil { - return err - } - data[4] = cachingSha2PasswordRequestPublicKey - mc.writePacket(data) - - // parse public key - if data, err = mc.readPacket(); err != nil { - return err - } - - block, _ := pem.Decode(data[1:]) - pkix, err := x509.ParsePKIXPublicKey(block.Bytes) - if err != nil { - return err - } - pubKey = pkix.(*rsa.PublicKey) - } - - // send encrypted password - err = mc.sendEncryptedPassword(oldAuthData, pubKey) - if err != nil { - return err - } - } - return mc.readResultOK() - - default: - return ErrMalformPkt - } - default: - return ErrMalformPkt - } - - case "sha256_password": - switch len(authData) { - case 0: - return nil // auth successful - default: - block, _ := pem.Decode(authData) - pub, err := x509.ParsePKIXPublicKey(block.Bytes) - if err != nil { - return err - } - - // send encrypted password - err = mc.sendEncryptedPassword(oldAuthData, pub.(*rsa.PublicKey)) - if err != nil { - return err - } - return mc.readResultOK() - } - - default: - return nil // auth successful - } - - return err -} diff --git a/vendor/github.com/go-sql-driver/mysql/buffer.go b/vendor/github.com/go-sql-driver/mysql/buffer.go deleted file mode 100644 index 0774c5c8..00000000 --- a/vendor/github.com/go-sql-driver/mysql/buffer.go +++ /dev/null @@ -1,182 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "io" - "net" - "time" -) - -const defaultBufSize = 4096 -const maxCachedBufSize = 256 * 1024 - -// A buffer which is used for both reading and writing. -// This is possible since communication on each connection is synchronous. -// In other words, we can't write and read simultaneously on the same connection. -// The buffer is similar to bufio.Reader / Writer but zero-copy-ish -// Also highly optimized for this particular use case. -// This buffer is backed by two byte slices in a double-buffering scheme -type buffer struct { - buf []byte // buf is a byte buffer who's length and capacity are equal. - nc net.Conn - idx int - length int - timeout time.Duration - dbuf [2][]byte // dbuf is an array with the two byte slices that back this buffer - flipcnt uint // flipccnt is the current buffer counter for double-buffering -} - -// newBuffer allocates and returns a new buffer. -func newBuffer(nc net.Conn) buffer { - fg := make([]byte, defaultBufSize) - return buffer{ - buf: fg, - nc: nc, - dbuf: [2][]byte{fg, nil}, - } -} - -// flip replaces the active buffer with the background buffer -// this is a delayed flip that simply increases the buffer counter; -// the actual flip will be performed the next time we call `buffer.fill` -func (b *buffer) flip() { - b.flipcnt += 1 -} - -// fill reads into the buffer until at least _need_ bytes are in it -func (b *buffer) fill(need int) error { - n := b.length - // fill data into its double-buffering target: if we've called - // flip on this buffer, we'll be copying to the background buffer, - // and then filling it with network data; otherwise we'll just move - // the contents of the current buffer to the front before filling it - dest := b.dbuf[b.flipcnt&1] - - // grow buffer if necessary to fit the whole packet. - if need > len(dest) { - // Round up to the next multiple of the default size - dest = make([]byte, ((need/defaultBufSize)+1)*defaultBufSize) - - // if the allocated buffer is not too large, move it to backing storage - // to prevent extra allocations on applications that perform large reads - if len(dest) <= maxCachedBufSize { - b.dbuf[b.flipcnt&1] = dest - } - } - - // if we're filling the fg buffer, move the existing data to the start of it. - // if we're filling the bg buffer, copy over the data - if n > 0 { - copy(dest[:n], b.buf[b.idx:]) - } - - b.buf = dest - b.idx = 0 - - for { - if b.timeout > 0 { - if err := b.nc.SetReadDeadline(time.Now().Add(b.timeout)); err != nil { - return err - } - } - - nn, err := b.nc.Read(b.buf[n:]) - n += nn - - switch err { - case nil: - if n < need { - continue - } - b.length = n - return nil - - case io.EOF: - if n >= need { - b.length = n - return nil - } - return io.ErrUnexpectedEOF - - default: - return err - } - } -} - -// returns next N bytes from buffer. -// The returned slice is only guaranteed to be valid until the next read -func (b *buffer) readNext(need int) ([]byte, error) { - if b.length < need { - // refill - if err := b.fill(need); err != nil { - return nil, err - } - } - - offset := b.idx - b.idx += need - b.length -= need - return b.buf[offset:b.idx], nil -} - -// takeBuffer returns a buffer with the requested size. -// If possible, a slice from the existing buffer is returned. -// Otherwise a bigger buffer is made. -// Only one buffer (total) can be used at a time. -func (b *buffer) takeBuffer(length int) ([]byte, error) { - if b.length > 0 { - return nil, ErrBusyBuffer - } - - // test (cheap) general case first - if length <= cap(b.buf) { - return b.buf[:length], nil - } - - if length < maxPacketSize { - b.buf = make([]byte, length) - return b.buf, nil - } - - // buffer is larger than we want to store. - return make([]byte, length), nil -} - -// takeSmallBuffer is shortcut which can be used if length is -// known to be smaller than defaultBufSize. -// Only one buffer (total) can be used at a time. -func (b *buffer) takeSmallBuffer(length int) ([]byte, error) { - if b.length > 0 { - return nil, ErrBusyBuffer - } - return b.buf[:length], nil -} - -// takeCompleteBuffer returns the complete existing buffer. -// This can be used if the necessary buffer size is unknown. -// cap and len of the returned buffer will be equal. -// Only one buffer (total) can be used at a time. -func (b *buffer) takeCompleteBuffer() ([]byte, error) { - if b.length > 0 { - return nil, ErrBusyBuffer - } - return b.buf, nil -} - -// store stores buf, an updated buffer, if its suitable to do so. -func (b *buffer) store(buf []byte) error { - if b.length > 0 { - return ErrBusyBuffer - } else if cap(buf) <= maxPacketSize && cap(buf) > cap(b.buf) { - b.buf = buf[:cap(buf)] - } - return nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/collations.go b/vendor/github.com/go-sql-driver/mysql/collations.go deleted file mode 100644 index 8d2b5567..00000000 --- a/vendor/github.com/go-sql-driver/mysql/collations.go +++ /dev/null @@ -1,265 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2014 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -const defaultCollation = "utf8mb4_general_ci" -const binaryCollation = "binary" - -// A list of available collations mapped to the internal ID. -// To update this map use the following MySQL query: -// SELECT COLLATION_NAME, ID FROM information_schema.COLLATIONS WHERE ID<256 ORDER BY ID -// -// Handshake packet have only 1 byte for collation_id. So we can't use collations with ID > 255. -// -// ucs2, utf16, and utf32 can't be used for connection charset. -// https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset-connection-impermissible-client-charset -// They are commented out to reduce this map. -var collations = map[string]byte{ - "big5_chinese_ci": 1, - "latin2_czech_cs": 2, - "dec8_swedish_ci": 3, - "cp850_general_ci": 4, - "latin1_german1_ci": 5, - "hp8_english_ci": 6, - "koi8r_general_ci": 7, - "latin1_swedish_ci": 8, - "latin2_general_ci": 9, - "swe7_swedish_ci": 10, - "ascii_general_ci": 11, - "ujis_japanese_ci": 12, - "sjis_japanese_ci": 13, - "cp1251_bulgarian_ci": 14, - "latin1_danish_ci": 15, - "hebrew_general_ci": 16, - "tis620_thai_ci": 18, - "euckr_korean_ci": 19, - "latin7_estonian_cs": 20, - "latin2_hungarian_ci": 21, - "koi8u_general_ci": 22, - "cp1251_ukrainian_ci": 23, - "gb2312_chinese_ci": 24, - "greek_general_ci": 25, - "cp1250_general_ci": 26, - "latin2_croatian_ci": 27, - "gbk_chinese_ci": 28, - "cp1257_lithuanian_ci": 29, - "latin5_turkish_ci": 30, - "latin1_german2_ci": 31, - "armscii8_general_ci": 32, - "utf8_general_ci": 33, - "cp1250_czech_cs": 34, - //"ucs2_general_ci": 35, - "cp866_general_ci": 36, - "keybcs2_general_ci": 37, - "macce_general_ci": 38, - "macroman_general_ci": 39, - "cp852_general_ci": 40, - "latin7_general_ci": 41, - "latin7_general_cs": 42, - "macce_bin": 43, - "cp1250_croatian_ci": 44, - "utf8mb4_general_ci": 45, - "utf8mb4_bin": 46, - "latin1_bin": 47, - "latin1_general_ci": 48, - "latin1_general_cs": 49, - "cp1251_bin": 50, - "cp1251_general_ci": 51, - "cp1251_general_cs": 52, - "macroman_bin": 53, - //"utf16_general_ci": 54, - //"utf16_bin": 55, - //"utf16le_general_ci": 56, - "cp1256_general_ci": 57, - "cp1257_bin": 58, - "cp1257_general_ci": 59, - //"utf32_general_ci": 60, - //"utf32_bin": 61, - //"utf16le_bin": 62, - "binary": 63, - "armscii8_bin": 64, - "ascii_bin": 65, - "cp1250_bin": 66, - "cp1256_bin": 67, - "cp866_bin": 68, - "dec8_bin": 69, - "greek_bin": 70, - "hebrew_bin": 71, - "hp8_bin": 72, - "keybcs2_bin": 73, - "koi8r_bin": 74, - "koi8u_bin": 75, - "utf8_tolower_ci": 76, - "latin2_bin": 77, - "latin5_bin": 78, - "latin7_bin": 79, - "cp850_bin": 80, - "cp852_bin": 81, - "swe7_bin": 82, - "utf8_bin": 83, - "big5_bin": 84, - "euckr_bin": 85, - "gb2312_bin": 86, - "gbk_bin": 87, - "sjis_bin": 88, - "tis620_bin": 89, - //"ucs2_bin": 90, - "ujis_bin": 91, - "geostd8_general_ci": 92, - "geostd8_bin": 93, - "latin1_spanish_ci": 94, - "cp932_japanese_ci": 95, - "cp932_bin": 96, - "eucjpms_japanese_ci": 97, - "eucjpms_bin": 98, - "cp1250_polish_ci": 99, - //"utf16_unicode_ci": 101, - //"utf16_icelandic_ci": 102, - //"utf16_latvian_ci": 103, - //"utf16_romanian_ci": 104, - //"utf16_slovenian_ci": 105, - //"utf16_polish_ci": 106, - //"utf16_estonian_ci": 107, - //"utf16_spanish_ci": 108, - //"utf16_swedish_ci": 109, - //"utf16_turkish_ci": 110, - //"utf16_czech_ci": 111, - //"utf16_danish_ci": 112, - //"utf16_lithuanian_ci": 113, - //"utf16_slovak_ci": 114, - //"utf16_spanish2_ci": 115, - //"utf16_roman_ci": 116, - //"utf16_persian_ci": 117, - //"utf16_esperanto_ci": 118, - //"utf16_hungarian_ci": 119, - //"utf16_sinhala_ci": 120, - //"utf16_german2_ci": 121, - //"utf16_croatian_ci": 122, - //"utf16_unicode_520_ci": 123, - //"utf16_vietnamese_ci": 124, - //"ucs2_unicode_ci": 128, - //"ucs2_icelandic_ci": 129, - //"ucs2_latvian_ci": 130, - //"ucs2_romanian_ci": 131, - //"ucs2_slovenian_ci": 132, - //"ucs2_polish_ci": 133, - //"ucs2_estonian_ci": 134, - //"ucs2_spanish_ci": 135, - //"ucs2_swedish_ci": 136, - //"ucs2_turkish_ci": 137, - //"ucs2_czech_ci": 138, - //"ucs2_danish_ci": 139, - //"ucs2_lithuanian_ci": 140, - //"ucs2_slovak_ci": 141, - //"ucs2_spanish2_ci": 142, - //"ucs2_roman_ci": 143, - //"ucs2_persian_ci": 144, - //"ucs2_esperanto_ci": 145, - //"ucs2_hungarian_ci": 146, - //"ucs2_sinhala_ci": 147, - //"ucs2_german2_ci": 148, - //"ucs2_croatian_ci": 149, - //"ucs2_unicode_520_ci": 150, - //"ucs2_vietnamese_ci": 151, - //"ucs2_general_mysql500_ci": 159, - //"utf32_unicode_ci": 160, - //"utf32_icelandic_ci": 161, - //"utf32_latvian_ci": 162, - //"utf32_romanian_ci": 163, - //"utf32_slovenian_ci": 164, - //"utf32_polish_ci": 165, - //"utf32_estonian_ci": 166, - //"utf32_spanish_ci": 167, - //"utf32_swedish_ci": 168, - //"utf32_turkish_ci": 169, - //"utf32_czech_ci": 170, - //"utf32_danish_ci": 171, - //"utf32_lithuanian_ci": 172, - //"utf32_slovak_ci": 173, - //"utf32_spanish2_ci": 174, - //"utf32_roman_ci": 175, - //"utf32_persian_ci": 176, - //"utf32_esperanto_ci": 177, - //"utf32_hungarian_ci": 178, - //"utf32_sinhala_ci": 179, - //"utf32_german2_ci": 180, - //"utf32_croatian_ci": 181, - //"utf32_unicode_520_ci": 182, - //"utf32_vietnamese_ci": 183, - "utf8_unicode_ci": 192, - "utf8_icelandic_ci": 193, - "utf8_latvian_ci": 194, - "utf8_romanian_ci": 195, - "utf8_slovenian_ci": 196, - "utf8_polish_ci": 197, - "utf8_estonian_ci": 198, - "utf8_spanish_ci": 199, - "utf8_swedish_ci": 200, - "utf8_turkish_ci": 201, - "utf8_czech_ci": 202, - "utf8_danish_ci": 203, - "utf8_lithuanian_ci": 204, - "utf8_slovak_ci": 205, - "utf8_spanish2_ci": 206, - "utf8_roman_ci": 207, - "utf8_persian_ci": 208, - "utf8_esperanto_ci": 209, - "utf8_hungarian_ci": 210, - "utf8_sinhala_ci": 211, - "utf8_german2_ci": 212, - "utf8_croatian_ci": 213, - "utf8_unicode_520_ci": 214, - "utf8_vietnamese_ci": 215, - "utf8_general_mysql500_ci": 223, - "utf8mb4_unicode_ci": 224, - "utf8mb4_icelandic_ci": 225, - "utf8mb4_latvian_ci": 226, - "utf8mb4_romanian_ci": 227, - "utf8mb4_slovenian_ci": 228, - "utf8mb4_polish_ci": 229, - "utf8mb4_estonian_ci": 230, - "utf8mb4_spanish_ci": 231, - "utf8mb4_swedish_ci": 232, - "utf8mb4_turkish_ci": 233, - "utf8mb4_czech_ci": 234, - "utf8mb4_danish_ci": 235, - "utf8mb4_lithuanian_ci": 236, - "utf8mb4_slovak_ci": 237, - "utf8mb4_spanish2_ci": 238, - "utf8mb4_roman_ci": 239, - "utf8mb4_persian_ci": 240, - "utf8mb4_esperanto_ci": 241, - "utf8mb4_hungarian_ci": 242, - "utf8mb4_sinhala_ci": 243, - "utf8mb4_german2_ci": 244, - "utf8mb4_croatian_ci": 245, - "utf8mb4_unicode_520_ci": 246, - "utf8mb4_vietnamese_ci": 247, - "gb18030_chinese_ci": 248, - "gb18030_bin": 249, - "gb18030_unicode_520_ci": 250, - "utf8mb4_0900_ai_ci": 255, -} - -// A blacklist of collations which is unsafe to interpolate parameters. -// These multibyte encodings may contains 0x5c (`\`) in their trailing bytes. -var unsafeCollations = map[string]bool{ - "big5_chinese_ci": true, - "sjis_japanese_ci": true, - "gbk_chinese_ci": true, - "big5_bin": true, - "gb2312_bin": true, - "gbk_bin": true, - "sjis_bin": true, - "cp932_japanese_ci": true, - "cp932_bin": true, - "gb18030_chinese_ci": true, - "gb18030_bin": true, - "gb18030_unicode_520_ci": true, -} diff --git a/vendor/github.com/go-sql-driver/mysql/conncheck.go b/vendor/github.com/go-sql-driver/mysql/conncheck.go deleted file mode 100644 index 70e9925f..00000000 --- a/vendor/github.com/go-sql-driver/mysql/conncheck.go +++ /dev/null @@ -1,54 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// +build !windows,!appengine - -package mysql - -import ( - "errors" - "io" - "net" - "syscall" -) - -var errUnexpectedRead = errors.New("unexpected read from socket") - -func connCheck(conn net.Conn) error { - var sysErr error - - sysConn, ok := conn.(syscall.Conn) - if !ok { - return nil - } - rawConn, err := sysConn.SyscallConn() - if err != nil { - return err - } - - err = rawConn.Read(func(fd uintptr) bool { - var buf [1]byte - n, err := syscall.Read(int(fd), buf[:]) - switch { - case n == 0 && err == nil: - sysErr = io.EOF - case n > 0: - sysErr = errUnexpectedRead - case err == syscall.EAGAIN || err == syscall.EWOULDBLOCK: - sysErr = nil - default: - sysErr = err - } - return true - }) - if err != nil { - return err - } - - return sysErr -} diff --git a/vendor/github.com/go-sql-driver/mysql/conncheck_dummy.go b/vendor/github.com/go-sql-driver/mysql/conncheck_dummy.go deleted file mode 100644 index 4888288a..00000000 --- a/vendor/github.com/go-sql-driver/mysql/conncheck_dummy.go +++ /dev/null @@ -1,17 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// +build windows appengine - -package mysql - -import "net" - -func connCheck(conn net.Conn) error { - return nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/connection.go b/vendor/github.com/go-sql-driver/mysql/connection.go deleted file mode 100644 index e4bb59e6..00000000 --- a/vendor/github.com/go-sql-driver/mysql/connection.go +++ /dev/null @@ -1,651 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "context" - "database/sql" - "database/sql/driver" - "io" - "net" - "strconv" - "strings" - "time" -) - -type mysqlConn struct { - buf buffer - netConn net.Conn - rawConn net.Conn // underlying connection when netConn is TLS connection. - affectedRows uint64 - insertId uint64 - cfg *Config - maxAllowedPacket int - maxWriteSize int - writeTimeout time.Duration - flags clientFlag - status statusFlag - sequence uint8 - parseTime bool - reset bool // set when the Go SQL package calls ResetSession - - // for context support (Go 1.8+) - watching bool - watcher chan<- context.Context - closech chan struct{} - finished chan<- struct{} - canceled atomicError // set non-nil if conn is canceled - closed atomicBool // set when conn is closed, before closech is closed -} - -// Handles parameters set in DSN after the connection is established -func (mc *mysqlConn) handleParams() (err error) { - for param, val := range mc.cfg.Params { - switch param { - // Charset - case "charset": - charsets := strings.Split(val, ",") - for i := range charsets { - // ignore errors here - a charset may not exist - err = mc.exec("SET NAMES " + charsets[i]) - if err == nil { - break - } - } - if err != nil { - return - } - - // System Vars - default: - err = mc.exec("SET " + param + "=" + val + "") - if err != nil { - return - } - } - } - - return -} - -func (mc *mysqlConn) markBadConn(err error) error { - if mc == nil { - return err - } - if err != errBadConnNoWrite { - return err - } - return driver.ErrBadConn -} - -func (mc *mysqlConn) Begin() (driver.Tx, error) { - return mc.begin(false) -} - -func (mc *mysqlConn) begin(readOnly bool) (driver.Tx, error) { - if mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - var q string - if readOnly { - q = "START TRANSACTION READ ONLY" - } else { - q = "START TRANSACTION" - } - err := mc.exec(q) - if err == nil { - return &mysqlTx{mc}, err - } - return nil, mc.markBadConn(err) -} - -func (mc *mysqlConn) Close() (err error) { - // Makes Close idempotent - if !mc.closed.IsSet() { - err = mc.writeCommandPacket(comQuit) - } - - mc.cleanup() - - return -} - -// Closes the network connection and unsets internal variables. Do not call this -// function after successfully authentication, call Close instead. This function -// is called before auth or on auth failure because MySQL will have already -// closed the network connection. -func (mc *mysqlConn) cleanup() { - if !mc.closed.TrySet(true) { - return - } - - // Makes cleanup idempotent - close(mc.closech) - if mc.netConn == nil { - return - } - if err := mc.netConn.Close(); err != nil { - errLog.Print(err) - } -} - -func (mc *mysqlConn) error() error { - if mc.closed.IsSet() { - if err := mc.canceled.Value(); err != nil { - return err - } - return ErrInvalidConn - } - return nil -} - -func (mc *mysqlConn) Prepare(query string) (driver.Stmt, error) { - if mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - // Send command - err := mc.writeCommandPacketStr(comStmtPrepare, query) - if err != nil { - // STMT_PREPARE is safe to retry. So we can return ErrBadConn here. - errLog.Print(err) - return nil, driver.ErrBadConn - } - - stmt := &mysqlStmt{ - mc: mc, - } - - // Read Result - columnCount, err := stmt.readPrepareResultPacket() - if err == nil { - if stmt.paramCount > 0 { - if err = mc.readUntilEOF(); err != nil { - return nil, err - } - } - - if columnCount > 0 { - err = mc.readUntilEOF() - } - } - - return stmt, err -} - -func (mc *mysqlConn) interpolateParams(query string, args []driver.Value) (string, error) { - // Number of ? should be same to len(args) - if strings.Count(query, "?") != len(args) { - return "", driver.ErrSkip - } - - buf, err := mc.buf.takeCompleteBuffer() - if err != nil { - // can not take the buffer. Something must be wrong with the connection - errLog.Print(err) - return "", ErrInvalidConn - } - buf = buf[:0] - argPos := 0 - - for i := 0; i < len(query); i++ { - q := strings.IndexByte(query[i:], '?') - if q == -1 { - buf = append(buf, query[i:]...) - break - } - buf = append(buf, query[i:i+q]...) - i += q - - arg := args[argPos] - argPos++ - - if arg == nil { - buf = append(buf, "NULL"...) - continue - } - - switch v := arg.(type) { - case int64: - buf = strconv.AppendInt(buf, v, 10) - case uint64: - // Handle uint64 explicitly because our custom ConvertValue emits unsigned values - buf = strconv.AppendUint(buf, v, 10) - case float64: - buf = strconv.AppendFloat(buf, v, 'g', -1, 64) - case bool: - if v { - buf = append(buf, '1') - } else { - buf = append(buf, '0') - } - case time.Time: - if v.IsZero() { - buf = append(buf, "'0000-00-00'"...) - } else { - v := v.In(mc.cfg.Loc) - v = v.Add(time.Nanosecond * 500) // To round under microsecond - year := v.Year() - year100 := year / 100 - year1 := year % 100 - month := v.Month() - day := v.Day() - hour := v.Hour() - minute := v.Minute() - second := v.Second() - micro := v.Nanosecond() / 1000 - - buf = append(buf, []byte{ - '\'', - digits10[year100], digits01[year100], - digits10[year1], digits01[year1], - '-', - digits10[month], digits01[month], - '-', - digits10[day], digits01[day], - ' ', - digits10[hour], digits01[hour], - ':', - digits10[minute], digits01[minute], - ':', - digits10[second], digits01[second], - }...) - - if micro != 0 { - micro10000 := micro / 10000 - micro100 := micro / 100 % 100 - micro1 := micro % 100 - buf = append(buf, []byte{ - '.', - digits10[micro10000], digits01[micro10000], - digits10[micro100], digits01[micro100], - digits10[micro1], digits01[micro1], - }...) - } - buf = append(buf, '\'') - } - case []byte: - if v == nil { - buf = append(buf, "NULL"...) - } else { - buf = append(buf, "_binary'"...) - if mc.status&statusNoBackslashEscapes == 0 { - buf = escapeBytesBackslash(buf, v) - } else { - buf = escapeBytesQuotes(buf, v) - } - buf = append(buf, '\'') - } - case string: - buf = append(buf, '\'') - if mc.status&statusNoBackslashEscapes == 0 { - buf = escapeStringBackslash(buf, v) - } else { - buf = escapeStringQuotes(buf, v) - } - buf = append(buf, '\'') - default: - return "", driver.ErrSkip - } - - if len(buf)+4 > mc.maxAllowedPacket { - return "", driver.ErrSkip - } - } - if argPos != len(args) { - return "", driver.ErrSkip - } - return string(buf), nil -} - -func (mc *mysqlConn) Exec(query string, args []driver.Value) (driver.Result, error) { - if mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - if len(args) != 0 { - if !mc.cfg.InterpolateParams { - return nil, driver.ErrSkip - } - // try to interpolate the parameters to save extra roundtrips for preparing and closing a statement - prepared, err := mc.interpolateParams(query, args) - if err != nil { - return nil, err - } - query = prepared - } - mc.affectedRows = 0 - mc.insertId = 0 - - err := mc.exec(query) - if err == nil { - return &mysqlResult{ - affectedRows: int64(mc.affectedRows), - insertId: int64(mc.insertId), - }, err - } - return nil, mc.markBadConn(err) -} - -// Internal function to execute commands -func (mc *mysqlConn) exec(query string) error { - // Send command - if err := mc.writeCommandPacketStr(comQuery, query); err != nil { - return mc.markBadConn(err) - } - - // Read Result - resLen, err := mc.readResultSetHeaderPacket() - if err != nil { - return err - } - - if resLen > 0 { - // columns - if err := mc.readUntilEOF(); err != nil { - return err - } - - // rows - if err := mc.readUntilEOF(); err != nil { - return err - } - } - - return mc.discardResults() -} - -func (mc *mysqlConn) Query(query string, args []driver.Value) (driver.Rows, error) { - return mc.query(query, args) -} - -func (mc *mysqlConn) query(query string, args []driver.Value) (*textRows, error) { - if mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - if len(args) != 0 { - if !mc.cfg.InterpolateParams { - return nil, driver.ErrSkip - } - // try client-side prepare to reduce roundtrip - prepared, err := mc.interpolateParams(query, args) - if err != nil { - return nil, err - } - query = prepared - } - // Send command - err := mc.writeCommandPacketStr(comQuery, query) - if err == nil { - // Read Result - var resLen int - resLen, err = mc.readResultSetHeaderPacket() - if err == nil { - rows := new(textRows) - rows.mc = mc - - if resLen == 0 { - rows.rs.done = true - - switch err := rows.NextResultSet(); err { - case nil, io.EOF: - return rows, nil - default: - return nil, err - } - } - - // Columns - rows.rs.columns, err = mc.readColumns(resLen) - return rows, err - } - } - return nil, mc.markBadConn(err) -} - -// Gets the value of the given MySQL System Variable -// The returned byte slice is only valid until the next read -func (mc *mysqlConn) getSystemVar(name string) ([]byte, error) { - // Send command - if err := mc.writeCommandPacketStr(comQuery, "SELECT @@"+name); err != nil { - return nil, err - } - - // Read Result - resLen, err := mc.readResultSetHeaderPacket() - if err == nil { - rows := new(textRows) - rows.mc = mc - rows.rs.columns = []mysqlField{{fieldType: fieldTypeVarChar}} - - if resLen > 0 { - // Columns - if err := mc.readUntilEOF(); err != nil { - return nil, err - } - } - - dest := make([]driver.Value, resLen) - if err = rows.readRow(dest); err == nil { - return dest[0].([]byte), mc.readUntilEOF() - } - } - return nil, err -} - -// finish is called when the query has canceled. -func (mc *mysqlConn) cancel(err error) { - mc.canceled.Set(err) - mc.cleanup() -} - -// finish is called when the query has succeeded. -func (mc *mysqlConn) finish() { - if !mc.watching || mc.finished == nil { - return - } - select { - case mc.finished <- struct{}{}: - mc.watching = false - case <-mc.closech: - } -} - -// Ping implements driver.Pinger interface -func (mc *mysqlConn) Ping(ctx context.Context) (err error) { - if mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return driver.ErrBadConn - } - - if err = mc.watchCancel(ctx); err != nil { - return - } - defer mc.finish() - - if err = mc.writeCommandPacket(comPing); err != nil { - return mc.markBadConn(err) - } - - return mc.readResultOK() -} - -// BeginTx implements driver.ConnBeginTx interface -func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { - if err := mc.watchCancel(ctx); err != nil { - return nil, err - } - defer mc.finish() - - if sql.IsolationLevel(opts.Isolation) != sql.LevelDefault { - level, err := mapIsolationLevel(opts.Isolation) - if err != nil { - return nil, err - } - err = mc.exec("SET TRANSACTION ISOLATION LEVEL " + level) - if err != nil { - return nil, err - } - } - - return mc.begin(opts.ReadOnly) -} - -func (mc *mysqlConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { - dargs, err := namedValueToValue(args) - if err != nil { - return nil, err - } - - if err := mc.watchCancel(ctx); err != nil { - return nil, err - } - - rows, err := mc.query(query, dargs) - if err != nil { - mc.finish() - return nil, err - } - rows.finish = mc.finish - return rows, err -} - -func (mc *mysqlConn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { - dargs, err := namedValueToValue(args) - if err != nil { - return nil, err - } - - if err := mc.watchCancel(ctx); err != nil { - return nil, err - } - defer mc.finish() - - return mc.Exec(query, dargs) -} - -func (mc *mysqlConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { - if err := mc.watchCancel(ctx); err != nil { - return nil, err - } - - stmt, err := mc.Prepare(query) - mc.finish() - if err != nil { - return nil, err - } - - select { - default: - case <-ctx.Done(): - stmt.Close() - return nil, ctx.Err() - } - return stmt, nil -} - -func (stmt *mysqlStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - dargs, err := namedValueToValue(args) - if err != nil { - return nil, err - } - - if err := stmt.mc.watchCancel(ctx); err != nil { - return nil, err - } - - rows, err := stmt.query(dargs) - if err != nil { - stmt.mc.finish() - return nil, err - } - rows.finish = stmt.mc.finish - return rows, err -} - -func (stmt *mysqlStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { - dargs, err := namedValueToValue(args) - if err != nil { - return nil, err - } - - if err := stmt.mc.watchCancel(ctx); err != nil { - return nil, err - } - defer stmt.mc.finish() - - return stmt.Exec(dargs) -} - -func (mc *mysqlConn) watchCancel(ctx context.Context) error { - if mc.watching { - // Reach here if canceled, - // so the connection is already invalid - mc.cleanup() - return nil - } - // When ctx is already cancelled, don't watch it. - if err := ctx.Err(); err != nil { - return err - } - // When ctx is not cancellable, don't watch it. - if ctx.Done() == nil { - return nil - } - // When watcher is not alive, can't watch it. - if mc.watcher == nil { - return nil - } - - mc.watching = true - mc.watcher <- ctx - return nil -} - -func (mc *mysqlConn) startWatcher() { - watcher := make(chan context.Context, 1) - mc.watcher = watcher - finished := make(chan struct{}) - mc.finished = finished - go func() { - for { - var ctx context.Context - select { - case ctx = <-watcher: - case <-mc.closech: - return - } - - select { - case <-ctx.Done(): - mc.cancel(ctx.Err()) - case <-finished: - case <-mc.closech: - return - } - } - }() -} - -func (mc *mysqlConn) CheckNamedValue(nv *driver.NamedValue) (err error) { - nv.Value, err = converter{}.ConvertValue(nv.Value) - return -} - -// ResetSession implements driver.SessionResetter. -// (From Go 1.10) -func (mc *mysqlConn) ResetSession(ctx context.Context) error { - if mc.closed.IsSet() { - return driver.ErrBadConn - } - mc.reset = true - return nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/connector.go b/vendor/github.com/go-sql-driver/mysql/connector.go deleted file mode 100644 index eac0f01a..00000000 --- a/vendor/github.com/go-sql-driver/mysql/connector.go +++ /dev/null @@ -1,140 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2018 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "context" - "database/sql/driver" - "net" -) - -type connector struct { - cfg *Config // immutable private copy. -} - -// Connect implements driver.Connector interface. -// Connect returns a connection to the database. -func (c *connector) Connect(ctx context.Context) (driver.Conn, error) { - var err error - - // New mysqlConn - mc := &mysqlConn{ - maxAllowedPacket: maxPacketSize, - maxWriteSize: maxPacketSize - 1, - closech: make(chan struct{}), - cfg: c.cfg, - } - mc.parseTime = mc.cfg.ParseTime - - // Connect to Server - dialsLock.RLock() - dial, ok := dials[mc.cfg.Net] - dialsLock.RUnlock() - if ok { - mc.netConn, err = dial(ctx, mc.cfg.Addr) - } else { - nd := net.Dialer{Timeout: mc.cfg.Timeout} - mc.netConn, err = nd.DialContext(ctx, mc.cfg.Net, mc.cfg.Addr) - } - - if err != nil { - return nil, err - } - - // Enable TCP Keepalives on TCP connections - if tc, ok := mc.netConn.(*net.TCPConn); ok { - if err := tc.SetKeepAlive(true); err != nil { - // Don't send COM_QUIT before handshake. - mc.netConn.Close() - mc.netConn = nil - return nil, err - } - } - - // Call startWatcher for context support (From Go 1.8) - mc.startWatcher() - if err := mc.watchCancel(ctx); err != nil { - mc.cleanup() - return nil, err - } - defer mc.finish() - - mc.buf = newBuffer(mc.netConn) - - // Set I/O timeouts - mc.buf.timeout = mc.cfg.ReadTimeout - mc.writeTimeout = mc.cfg.WriteTimeout - - // Reading Handshake Initialization Packet - authData, plugin, err := mc.readHandshakePacket() - if err != nil { - mc.cleanup() - return nil, err - } - - if plugin == "" { - plugin = defaultAuthPlugin - } - - // Send Client Authentication Packet - authResp, err := mc.auth(authData, plugin) - if err != nil { - // try the default auth plugin, if using the requested plugin failed - errLog.Print("could not use requested auth plugin '"+plugin+"': ", err.Error()) - plugin = defaultAuthPlugin - authResp, err = mc.auth(authData, plugin) - if err != nil { - mc.cleanup() - return nil, err - } - } - if err = mc.writeHandshakeResponsePacket(authResp, plugin); err != nil { - mc.cleanup() - return nil, err - } - - // Handle response to auth packet, switch methods if possible - if err = mc.handleAuthResult(authData, plugin); err != nil { - // Authentication failed and MySQL has already closed the connection - // (https://dev.mysql.com/doc/internals/en/authentication-fails.html). - // Do not send COM_QUIT, just cleanup and return the error. - mc.cleanup() - return nil, err - } - - if mc.cfg.MaxAllowedPacket > 0 { - mc.maxAllowedPacket = mc.cfg.MaxAllowedPacket - } else { - // Get max allowed packet size - maxap, err := mc.getSystemVar("max_allowed_packet") - if err != nil { - mc.Close() - return nil, err - } - mc.maxAllowedPacket = stringToInt(maxap) - 1 - } - if mc.maxAllowedPacket < maxPacketSize { - mc.maxWriteSize = mc.maxAllowedPacket - } - - // Handle DSN Params - err = mc.handleParams() - if err != nil { - mc.Close() - return nil, err - } - - return mc, nil -} - -// Driver implements driver.Connector interface. -// Driver returns &MySQLDriver{}. -func (c *connector) Driver() driver.Driver { - return &MySQLDriver{} -} diff --git a/vendor/github.com/go-sql-driver/mysql/const.go b/vendor/github.com/go-sql-driver/mysql/const.go deleted file mode 100644 index b1e6b85e..00000000 --- a/vendor/github.com/go-sql-driver/mysql/const.go +++ /dev/null @@ -1,174 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -const ( - defaultAuthPlugin = "mysql_native_password" - defaultMaxAllowedPacket = 4 << 20 // 4 MiB - minProtocolVersion = 10 - maxPacketSize = 1<<24 - 1 - timeFormat = "2006-01-02 15:04:05.999999" -) - -// MySQL constants documentation: -// http://dev.mysql.com/doc/internals/en/client-server-protocol.html - -const ( - iOK byte = 0x00 - iAuthMoreData byte = 0x01 - iLocalInFile byte = 0xfb - iEOF byte = 0xfe - iERR byte = 0xff -) - -// https://dev.mysql.com/doc/internals/en/capability-flags.html#packet-Protocol::CapabilityFlags -type clientFlag uint32 - -const ( - clientLongPassword clientFlag = 1 << iota - clientFoundRows - clientLongFlag - clientConnectWithDB - clientNoSchema - clientCompress - clientODBC - clientLocalFiles - clientIgnoreSpace - clientProtocol41 - clientInteractive - clientSSL - clientIgnoreSIGPIPE - clientTransactions - clientReserved - clientSecureConn - clientMultiStatements - clientMultiResults - clientPSMultiResults - clientPluginAuth - clientConnectAttrs - clientPluginAuthLenEncClientData - clientCanHandleExpiredPasswords - clientSessionTrack - clientDeprecateEOF -) - -const ( - comQuit byte = iota + 1 - comInitDB - comQuery - comFieldList - comCreateDB - comDropDB - comRefresh - comShutdown - comStatistics - comProcessInfo - comConnect - comProcessKill - comDebug - comPing - comTime - comDelayedInsert - comChangeUser - comBinlogDump - comTableDump - comConnectOut - comRegisterSlave - comStmtPrepare - comStmtExecute - comStmtSendLongData - comStmtClose - comStmtReset - comSetOption - comStmtFetch -) - -// https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnType -type fieldType byte - -const ( - fieldTypeDecimal fieldType = iota - fieldTypeTiny - fieldTypeShort - fieldTypeLong - fieldTypeFloat - fieldTypeDouble - fieldTypeNULL - fieldTypeTimestamp - fieldTypeLongLong - fieldTypeInt24 - fieldTypeDate - fieldTypeTime - fieldTypeDateTime - fieldTypeYear - fieldTypeNewDate - fieldTypeVarChar - fieldTypeBit -) -const ( - fieldTypeJSON fieldType = iota + 0xf5 - fieldTypeNewDecimal - fieldTypeEnum - fieldTypeSet - fieldTypeTinyBLOB - fieldTypeMediumBLOB - fieldTypeLongBLOB - fieldTypeBLOB - fieldTypeVarString - fieldTypeString - fieldTypeGeometry -) - -type fieldFlag uint16 - -const ( - flagNotNULL fieldFlag = 1 << iota - flagPriKey - flagUniqueKey - flagMultipleKey - flagBLOB - flagUnsigned - flagZeroFill - flagBinary - flagEnum - flagAutoIncrement - flagTimestamp - flagSet - flagUnknown1 - flagUnknown2 - flagUnknown3 - flagUnknown4 -) - -// http://dev.mysql.com/doc/internals/en/status-flags.html -type statusFlag uint16 - -const ( - statusInTrans statusFlag = 1 << iota - statusInAutocommit - statusReserved // Not in documentation - statusMoreResultsExists - statusNoGoodIndexUsed - statusNoIndexUsed - statusCursorExists - statusLastRowSent - statusDbDropped - statusNoBackslashEscapes - statusMetadataChanged - statusQueryWasSlow - statusPsOutParams - statusInTransReadonly - statusSessionStateChanged -) - -const ( - cachingSha2PasswordRequestPublicKey = 2 - cachingSha2PasswordFastAuthSuccess = 3 - cachingSha2PasswordPerformFullAuthentication = 4 -) diff --git a/vendor/github.com/go-sql-driver/mysql/driver.go b/vendor/github.com/go-sql-driver/mysql/driver.go deleted file mode 100644 index 1f9decf8..00000000 --- a/vendor/github.com/go-sql-driver/mysql/driver.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// Package mysql provides a MySQL driver for Go's database/sql package. -// -// The driver should be used via the database/sql package: -// -// import "database/sql" -// import _ "github.com/go-sql-driver/mysql" -// -// db, err := sql.Open("mysql", "user:password@/dbname") -// -// See https://github.com/go-sql-driver/mysql#usage for details -package mysql - -import ( - "context" - "database/sql" - "database/sql/driver" - "net" - "sync" -) - -// MySQLDriver is exported to make the driver directly accessible. -// In general the driver is used via the database/sql package. -type MySQLDriver struct{} - -// DialFunc is a function which can be used to establish the network connection. -// Custom dial functions must be registered with RegisterDial -// -// Deprecated: users should register a DialContextFunc instead -type DialFunc func(addr string) (net.Conn, error) - -// DialContextFunc is a function which can be used to establish the network connection. -// Custom dial functions must be registered with RegisterDialContext -type DialContextFunc func(ctx context.Context, addr string) (net.Conn, error) - -var ( - dialsLock sync.RWMutex - dials map[string]DialContextFunc -) - -// RegisterDialContext registers a custom dial function. It can then be used by the -// network address mynet(addr), where mynet is the registered new network. -// The current context for the connection and its address is passed to the dial function. -func RegisterDialContext(net string, dial DialContextFunc) { - dialsLock.Lock() - defer dialsLock.Unlock() - if dials == nil { - dials = make(map[string]DialContextFunc) - } - dials[net] = dial -} - -// RegisterDial registers a custom dial function. It can then be used by the -// network address mynet(addr), where mynet is the registered new network. -// addr is passed as a parameter to the dial function. -// -// Deprecated: users should call RegisterDialContext instead -func RegisterDial(network string, dial DialFunc) { - RegisterDialContext(network, func(_ context.Context, addr string) (net.Conn, error) { - return dial(addr) - }) -} - -// Open new Connection. -// See https://github.com/go-sql-driver/mysql#dsn-data-source-name for how -// the DSN string is formatted -func (d MySQLDriver) Open(dsn string) (driver.Conn, error) { - cfg, err := ParseDSN(dsn) - if err != nil { - return nil, err - } - c := &connector{ - cfg: cfg, - } - return c.Connect(context.Background()) -} - -func init() { - sql.Register("mysql", &MySQLDriver{}) -} diff --git a/vendor/github.com/go-sql-driver/mysql/driver_go110.go b/vendor/github.com/go-sql-driver/mysql/driver_go110.go deleted file mode 100644 index eb5a8fe9..00000000 --- a/vendor/github.com/go-sql-driver/mysql/driver_go110.go +++ /dev/null @@ -1,37 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2018 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// +build go1.10 - -package mysql - -import ( - "database/sql/driver" -) - -// NewConnector returns new driver.Connector. -func NewConnector(cfg *Config) (driver.Connector, error) { - cfg = cfg.Clone() - // normalize the contents of cfg so calls to NewConnector have the same - // behavior as MySQLDriver.OpenConnector - if err := cfg.normalize(); err != nil { - return nil, err - } - return &connector{cfg: cfg}, nil -} - -// OpenConnector implements driver.DriverContext. -func (d MySQLDriver) OpenConnector(dsn string) (driver.Connector, error) { - cfg, err := ParseDSN(dsn) - if err != nil { - return nil, err - } - return &connector{ - cfg: cfg, - }, nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/dsn.go b/vendor/github.com/go-sql-driver/mysql/dsn.go deleted file mode 100644 index 1d9b4ab0..00000000 --- a/vendor/github.com/go-sql-driver/mysql/dsn.go +++ /dev/null @@ -1,636 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "bytes" - "crypto/rsa" - "crypto/tls" - "errors" - "fmt" - "math/big" - "net" - "net/url" - "sort" - "strconv" - "strings" - "time" -) - -var ( - errInvalidDSNUnescaped = errors.New("invalid DSN: did you forget to escape a param value?") - errInvalidDSNAddr = errors.New("invalid DSN: network address not terminated (missing closing brace)") - errInvalidDSNNoSlash = errors.New("invalid DSN: missing the slash separating the database name") - errInvalidDSNUnsafeCollation = errors.New("invalid DSN: interpolateParams can not be used with unsafe collations") -) - -// Config is a configuration parsed from a DSN string. -// If a new Config is created instead of being parsed from a DSN string, -// the NewConfig function should be used, which sets default values. -type Config struct { - User string // Username - Passwd string // Password (requires User) - Net string // Network type - Addr string // Network address (requires Net) - DBName string // Database name - Params map[string]string // Connection parameters - Collation string // Connection collation - Loc *time.Location // Location for time.Time values - MaxAllowedPacket int // Max packet size allowed - ServerPubKey string // Server public key name - pubKey *rsa.PublicKey // Server public key - TLSConfig string // TLS configuration name - tls *tls.Config // TLS configuration - Timeout time.Duration // Dial timeout - ReadTimeout time.Duration // I/O read timeout - WriteTimeout time.Duration // I/O write timeout - - AllowAllFiles bool // Allow all files to be used with LOAD DATA LOCAL INFILE - AllowCleartextPasswords bool // Allows the cleartext client side plugin - AllowNativePasswords bool // Allows the native password authentication method - AllowOldPasswords bool // Allows the old insecure password method - ClientFoundRows bool // Return number of matching rows instead of rows changed - ColumnsWithAlias bool // Prepend table alias to column names - InterpolateParams bool // Interpolate placeholders into query string - MultiStatements bool // Allow multiple statements in one query - ParseTime bool // Parse time values to time.Time - RejectReadOnly bool // Reject read-only connections -} - -// NewConfig creates a new Config and sets default values. -func NewConfig() *Config { - return &Config{ - Collation: defaultCollation, - Loc: time.UTC, - MaxAllowedPacket: defaultMaxAllowedPacket, - AllowNativePasswords: true, - } -} - -func (cfg *Config) Clone() *Config { - cp := *cfg - if cp.tls != nil { - cp.tls = cfg.tls.Clone() - } - if len(cp.Params) > 0 { - cp.Params = make(map[string]string, len(cfg.Params)) - for k, v := range cfg.Params { - cp.Params[k] = v - } - } - if cfg.pubKey != nil { - cp.pubKey = &rsa.PublicKey{ - N: new(big.Int).Set(cfg.pubKey.N), - E: cfg.pubKey.E, - } - } - return &cp -} - -func (cfg *Config) normalize() error { - if cfg.InterpolateParams && unsafeCollations[cfg.Collation] { - return errInvalidDSNUnsafeCollation - } - - // Set default network if empty - if cfg.Net == "" { - cfg.Net = "tcp" - } - - // Set default address if empty - if cfg.Addr == "" { - switch cfg.Net { - case "tcp": - cfg.Addr = "127.0.0.1:3306" - case "unix": - cfg.Addr = "/tmp/mysql.sock" - default: - return errors.New("default addr for network '" + cfg.Net + "' unknown") - } - } else if cfg.Net == "tcp" { - cfg.Addr = ensureHavePort(cfg.Addr) - } - - switch cfg.TLSConfig { - case "false", "": - // don't set anything - case "true": - cfg.tls = &tls.Config{} - case "skip-verify", "preferred": - cfg.tls = &tls.Config{InsecureSkipVerify: true} - default: - cfg.tls = getTLSConfigClone(cfg.TLSConfig) - if cfg.tls == nil { - return errors.New("invalid value / unknown config name: " + cfg.TLSConfig) - } - } - - if cfg.tls != nil && cfg.tls.ServerName == "" && !cfg.tls.InsecureSkipVerify { - host, _, err := net.SplitHostPort(cfg.Addr) - if err == nil { - cfg.tls.ServerName = host - } - } - - if cfg.ServerPubKey != "" { - cfg.pubKey = getServerPubKey(cfg.ServerPubKey) - if cfg.pubKey == nil { - return errors.New("invalid value / unknown server pub key name: " + cfg.ServerPubKey) - } - } - - return nil -} - -// FormatDSN formats the given Config into a DSN string which can be passed to -// the driver. -func (cfg *Config) FormatDSN() string { - var buf bytes.Buffer - - // [username[:password]@] - if len(cfg.User) > 0 { - buf.WriteString(cfg.User) - if len(cfg.Passwd) > 0 { - buf.WriteByte(':') - buf.WriteString(cfg.Passwd) - } - buf.WriteByte('@') - } - - // [protocol[(address)]] - if len(cfg.Net) > 0 { - buf.WriteString(cfg.Net) - if len(cfg.Addr) > 0 { - buf.WriteByte('(') - buf.WriteString(cfg.Addr) - buf.WriteByte(')') - } - } - - // /dbname - buf.WriteByte('/') - buf.WriteString(cfg.DBName) - - // [?param1=value1&...¶mN=valueN] - hasParam := false - - if cfg.AllowAllFiles { - hasParam = true - buf.WriteString("?allowAllFiles=true") - } - - if cfg.AllowCleartextPasswords { - if hasParam { - buf.WriteString("&allowCleartextPasswords=true") - } else { - hasParam = true - buf.WriteString("?allowCleartextPasswords=true") - } - } - - if !cfg.AllowNativePasswords { - if hasParam { - buf.WriteString("&allowNativePasswords=false") - } else { - hasParam = true - buf.WriteString("?allowNativePasswords=false") - } - } - - if cfg.AllowOldPasswords { - if hasParam { - buf.WriteString("&allowOldPasswords=true") - } else { - hasParam = true - buf.WriteString("?allowOldPasswords=true") - } - } - - if cfg.ClientFoundRows { - if hasParam { - buf.WriteString("&clientFoundRows=true") - } else { - hasParam = true - buf.WriteString("?clientFoundRows=true") - } - } - - if col := cfg.Collation; col != defaultCollation && len(col) > 0 { - if hasParam { - buf.WriteString("&collation=") - } else { - hasParam = true - buf.WriteString("?collation=") - } - buf.WriteString(col) - } - - if cfg.ColumnsWithAlias { - if hasParam { - buf.WriteString("&columnsWithAlias=true") - } else { - hasParam = true - buf.WriteString("?columnsWithAlias=true") - } - } - - if cfg.InterpolateParams { - if hasParam { - buf.WriteString("&interpolateParams=true") - } else { - hasParam = true - buf.WriteString("?interpolateParams=true") - } - } - - if cfg.Loc != time.UTC && cfg.Loc != nil { - if hasParam { - buf.WriteString("&loc=") - } else { - hasParam = true - buf.WriteString("?loc=") - } - buf.WriteString(url.QueryEscape(cfg.Loc.String())) - } - - if cfg.MultiStatements { - if hasParam { - buf.WriteString("&multiStatements=true") - } else { - hasParam = true - buf.WriteString("?multiStatements=true") - } - } - - if cfg.ParseTime { - if hasParam { - buf.WriteString("&parseTime=true") - } else { - hasParam = true - buf.WriteString("?parseTime=true") - } - } - - if cfg.ReadTimeout > 0 { - if hasParam { - buf.WriteString("&readTimeout=") - } else { - hasParam = true - buf.WriteString("?readTimeout=") - } - buf.WriteString(cfg.ReadTimeout.String()) - } - - if cfg.RejectReadOnly { - if hasParam { - buf.WriteString("&rejectReadOnly=true") - } else { - hasParam = true - buf.WriteString("?rejectReadOnly=true") - } - } - - if len(cfg.ServerPubKey) > 0 { - if hasParam { - buf.WriteString("&serverPubKey=") - } else { - hasParam = true - buf.WriteString("?serverPubKey=") - } - buf.WriteString(url.QueryEscape(cfg.ServerPubKey)) - } - - if cfg.Timeout > 0 { - if hasParam { - buf.WriteString("&timeout=") - } else { - hasParam = true - buf.WriteString("?timeout=") - } - buf.WriteString(cfg.Timeout.String()) - } - - if len(cfg.TLSConfig) > 0 { - if hasParam { - buf.WriteString("&tls=") - } else { - hasParam = true - buf.WriteString("?tls=") - } - buf.WriteString(url.QueryEscape(cfg.TLSConfig)) - } - - if cfg.WriteTimeout > 0 { - if hasParam { - buf.WriteString("&writeTimeout=") - } else { - hasParam = true - buf.WriteString("?writeTimeout=") - } - buf.WriteString(cfg.WriteTimeout.String()) - } - - if cfg.MaxAllowedPacket != defaultMaxAllowedPacket { - if hasParam { - buf.WriteString("&maxAllowedPacket=") - } else { - hasParam = true - buf.WriteString("?maxAllowedPacket=") - } - buf.WriteString(strconv.Itoa(cfg.MaxAllowedPacket)) - - } - - // other params - if cfg.Params != nil { - var params []string - for param := range cfg.Params { - params = append(params, param) - } - sort.Strings(params) - for _, param := range params { - if hasParam { - buf.WriteByte('&') - } else { - hasParam = true - buf.WriteByte('?') - } - - buf.WriteString(param) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(cfg.Params[param])) - } - } - - return buf.String() -} - -// ParseDSN parses the DSN string to a Config -func ParseDSN(dsn string) (cfg *Config, err error) { - // New config with some default values - cfg = NewConfig() - - // [user[:password]@][net[(addr)]]/dbname[?param1=value1¶mN=valueN] - // Find the last '/' (since the password or the net addr might contain a '/') - foundSlash := false - for i := len(dsn) - 1; i >= 0; i-- { - if dsn[i] == '/' { - foundSlash = true - var j, k int - - // left part is empty if i <= 0 - if i > 0 { - // [username[:password]@][protocol[(address)]] - // Find the last '@' in dsn[:i] - for j = i; j >= 0; j-- { - if dsn[j] == '@' { - // username[:password] - // Find the first ':' in dsn[:j] - for k = 0; k < j; k++ { - if dsn[k] == ':' { - cfg.Passwd = dsn[k+1 : j] - break - } - } - cfg.User = dsn[:k] - - break - } - } - - // [protocol[(address)]] - // Find the first '(' in dsn[j+1:i] - for k = j + 1; k < i; k++ { - if dsn[k] == '(' { - // dsn[i-1] must be == ')' if an address is specified - if dsn[i-1] != ')' { - if strings.ContainsRune(dsn[k+1:i], ')') { - return nil, errInvalidDSNUnescaped - } - return nil, errInvalidDSNAddr - } - cfg.Addr = dsn[k+1 : i-1] - break - } - } - cfg.Net = dsn[j+1 : k] - } - - // dbname[?param1=value1&...¶mN=valueN] - // Find the first '?' in dsn[i+1:] - for j = i + 1; j < len(dsn); j++ { - if dsn[j] == '?' { - if err = parseDSNParams(cfg, dsn[j+1:]); err != nil { - return - } - break - } - } - cfg.DBName = dsn[i+1 : j] - - break - } - } - - if !foundSlash && len(dsn) > 0 { - return nil, errInvalidDSNNoSlash - } - - if err = cfg.normalize(); err != nil { - return nil, err - } - return -} - -// parseDSNParams parses the DSN "query string" -// Values must be url.QueryEscape'ed -func parseDSNParams(cfg *Config, params string) (err error) { - for _, v := range strings.Split(params, "&") { - param := strings.SplitN(v, "=", 2) - if len(param) != 2 { - continue - } - - // cfg params - switch value := param[1]; param[0] { - // Disable INFILE whitelist / enable all files - case "allowAllFiles": - var isBool bool - cfg.AllowAllFiles, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Use cleartext authentication mode (MySQL 5.5.10+) - case "allowCleartextPasswords": - var isBool bool - cfg.AllowCleartextPasswords, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Use native password authentication - case "allowNativePasswords": - var isBool bool - cfg.AllowNativePasswords, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Use old authentication mode (pre MySQL 4.1) - case "allowOldPasswords": - var isBool bool - cfg.AllowOldPasswords, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Switch "rowsAffected" mode - case "clientFoundRows": - var isBool bool - cfg.ClientFoundRows, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Collation - case "collation": - cfg.Collation = value - break - - case "columnsWithAlias": - var isBool bool - cfg.ColumnsWithAlias, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Compression - case "compress": - return errors.New("compression not implemented yet") - - // Enable client side placeholder substitution - case "interpolateParams": - var isBool bool - cfg.InterpolateParams, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Time Location - case "loc": - if value, err = url.QueryUnescape(value); err != nil { - return - } - cfg.Loc, err = time.LoadLocation(value) - if err != nil { - return - } - - // multiple statements in one query - case "multiStatements": - var isBool bool - cfg.MultiStatements, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // time.Time parsing - case "parseTime": - var isBool bool - cfg.ParseTime, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // I/O read Timeout - case "readTimeout": - cfg.ReadTimeout, err = time.ParseDuration(value) - if err != nil { - return - } - - // Reject read-only connections - case "rejectReadOnly": - var isBool bool - cfg.RejectReadOnly, isBool = readBool(value) - if !isBool { - return errors.New("invalid bool value: " + value) - } - - // Server public key - case "serverPubKey": - name, err := url.QueryUnescape(value) - if err != nil { - return fmt.Errorf("invalid value for server pub key name: %v", err) - } - cfg.ServerPubKey = name - - // Strict mode - case "strict": - panic("strict mode has been removed. See https://github.com/go-sql-driver/mysql/wiki/strict-mode") - - // Dial Timeout - case "timeout": - cfg.Timeout, err = time.ParseDuration(value) - if err != nil { - return - } - - // TLS-Encryption - case "tls": - boolValue, isBool := readBool(value) - if isBool { - if boolValue { - cfg.TLSConfig = "true" - } else { - cfg.TLSConfig = "false" - } - } else if vl := strings.ToLower(value); vl == "skip-verify" || vl == "preferred" { - cfg.TLSConfig = vl - } else { - name, err := url.QueryUnescape(value) - if err != nil { - return fmt.Errorf("invalid value for TLS config name: %v", err) - } - cfg.TLSConfig = name - } - - // I/O write Timeout - case "writeTimeout": - cfg.WriteTimeout, err = time.ParseDuration(value) - if err != nil { - return - } - case "maxAllowedPacket": - cfg.MaxAllowedPacket, err = strconv.Atoi(value) - if err != nil { - return - } - default: - // lazy init - if cfg.Params == nil { - cfg.Params = make(map[string]string) - } - - if cfg.Params[param[0]], err = url.QueryUnescape(value); err != nil { - return - } - } - } - - return -} - -func ensureHavePort(addr string) string { - if _, _, err := net.SplitHostPort(addr); err != nil { - return net.JoinHostPort(addr, "3306") - } - return addr -} diff --git a/vendor/github.com/go-sql-driver/mysql/errors.go b/vendor/github.com/go-sql-driver/mysql/errors.go deleted file mode 100644 index 760782ff..00000000 --- a/vendor/github.com/go-sql-driver/mysql/errors.go +++ /dev/null @@ -1,65 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "errors" - "fmt" - "log" - "os" -) - -// Various errors the driver might return. Can change between driver versions. -var ( - ErrInvalidConn = errors.New("invalid connection") - ErrMalformPkt = errors.New("malformed packet") - ErrNoTLS = errors.New("TLS requested but server does not support TLS") - ErrCleartextPassword = errors.New("this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN") - ErrNativePassword = errors.New("this user requires mysql native password authentication.") - ErrOldPassword = errors.New("this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/go-sql-driver/mysql/wiki/old_passwords") - ErrUnknownPlugin = errors.New("this authentication plugin is not supported") - ErrOldProtocol = errors.New("MySQL server does not support required protocol 41+") - ErrPktSync = errors.New("commands out of sync. You can't run this command now") - ErrPktSyncMul = errors.New("commands out of sync. Did you run multiple statements at once?") - ErrPktTooLarge = errors.New("packet for query is too large. Try adjusting the 'max_allowed_packet' variable on the server") - ErrBusyBuffer = errors.New("busy buffer") - - // errBadConnNoWrite is used for connection errors where nothing was sent to the database yet. - // If this happens first in a function starting a database interaction, it should be replaced by driver.ErrBadConn - // to trigger a resend. - // See https://github.com/go-sql-driver/mysql/pull/302 - errBadConnNoWrite = errors.New("bad connection") -) - -var errLog = Logger(log.New(os.Stderr, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile)) - -// Logger is used to log critical error messages. -type Logger interface { - Print(v ...interface{}) -} - -// SetLogger is used to set the logger for critical errors. -// The initial logger is os.Stderr. -func SetLogger(logger Logger) error { - if logger == nil { - return errors.New("logger is nil") - } - errLog = logger - return nil -} - -// MySQLError is an error type which represents a single MySQL error -type MySQLError struct { - Number uint16 - Message string -} - -func (me *MySQLError) Error() string { - return fmt.Sprintf("Error %d: %s", me.Number, me.Message) -} diff --git a/vendor/github.com/go-sql-driver/mysql/fields.go b/vendor/github.com/go-sql-driver/mysql/fields.go deleted file mode 100644 index e1e2ece4..00000000 --- a/vendor/github.com/go-sql-driver/mysql/fields.go +++ /dev/null @@ -1,194 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "database/sql" - "reflect" -) - -func (mf *mysqlField) typeDatabaseName() string { - switch mf.fieldType { - case fieldTypeBit: - return "BIT" - case fieldTypeBLOB: - if mf.charSet != collations[binaryCollation] { - return "TEXT" - } - return "BLOB" - case fieldTypeDate: - return "DATE" - case fieldTypeDateTime: - return "DATETIME" - case fieldTypeDecimal: - return "DECIMAL" - case fieldTypeDouble: - return "DOUBLE" - case fieldTypeEnum: - return "ENUM" - case fieldTypeFloat: - return "FLOAT" - case fieldTypeGeometry: - return "GEOMETRY" - case fieldTypeInt24: - return "MEDIUMINT" - case fieldTypeJSON: - return "JSON" - case fieldTypeLong: - return "INT" - case fieldTypeLongBLOB: - if mf.charSet != collations[binaryCollation] { - return "LONGTEXT" - } - return "LONGBLOB" - case fieldTypeLongLong: - return "BIGINT" - case fieldTypeMediumBLOB: - if mf.charSet != collations[binaryCollation] { - return "MEDIUMTEXT" - } - return "MEDIUMBLOB" - case fieldTypeNewDate: - return "DATE" - case fieldTypeNewDecimal: - return "DECIMAL" - case fieldTypeNULL: - return "NULL" - case fieldTypeSet: - return "SET" - case fieldTypeShort: - return "SMALLINT" - case fieldTypeString: - if mf.charSet == collations[binaryCollation] { - return "BINARY" - } - return "CHAR" - case fieldTypeTime: - return "TIME" - case fieldTypeTimestamp: - return "TIMESTAMP" - case fieldTypeTiny: - return "TINYINT" - case fieldTypeTinyBLOB: - if mf.charSet != collations[binaryCollation] { - return "TINYTEXT" - } - return "TINYBLOB" - case fieldTypeVarChar: - if mf.charSet == collations[binaryCollation] { - return "VARBINARY" - } - return "VARCHAR" - case fieldTypeVarString: - if mf.charSet == collations[binaryCollation] { - return "VARBINARY" - } - return "VARCHAR" - case fieldTypeYear: - return "YEAR" - default: - return "" - } -} - -var ( - scanTypeFloat32 = reflect.TypeOf(float32(0)) - scanTypeFloat64 = reflect.TypeOf(float64(0)) - scanTypeInt8 = reflect.TypeOf(int8(0)) - scanTypeInt16 = reflect.TypeOf(int16(0)) - scanTypeInt32 = reflect.TypeOf(int32(0)) - scanTypeInt64 = reflect.TypeOf(int64(0)) - scanTypeNullFloat = reflect.TypeOf(sql.NullFloat64{}) - scanTypeNullInt = reflect.TypeOf(sql.NullInt64{}) - scanTypeNullTime = reflect.TypeOf(NullTime{}) - scanTypeUint8 = reflect.TypeOf(uint8(0)) - scanTypeUint16 = reflect.TypeOf(uint16(0)) - scanTypeUint32 = reflect.TypeOf(uint32(0)) - scanTypeUint64 = reflect.TypeOf(uint64(0)) - scanTypeRawBytes = reflect.TypeOf(sql.RawBytes{}) - scanTypeUnknown = reflect.TypeOf(new(interface{})) -) - -type mysqlField struct { - tableName string - name string - length uint32 - flags fieldFlag - fieldType fieldType - decimals byte - charSet uint8 -} - -func (mf *mysqlField) scanType() reflect.Type { - switch mf.fieldType { - case fieldTypeTiny: - if mf.flags&flagNotNULL != 0 { - if mf.flags&flagUnsigned != 0 { - return scanTypeUint8 - } - return scanTypeInt8 - } - return scanTypeNullInt - - case fieldTypeShort, fieldTypeYear: - if mf.flags&flagNotNULL != 0 { - if mf.flags&flagUnsigned != 0 { - return scanTypeUint16 - } - return scanTypeInt16 - } - return scanTypeNullInt - - case fieldTypeInt24, fieldTypeLong: - if mf.flags&flagNotNULL != 0 { - if mf.flags&flagUnsigned != 0 { - return scanTypeUint32 - } - return scanTypeInt32 - } - return scanTypeNullInt - - case fieldTypeLongLong: - if mf.flags&flagNotNULL != 0 { - if mf.flags&flagUnsigned != 0 { - return scanTypeUint64 - } - return scanTypeInt64 - } - return scanTypeNullInt - - case fieldTypeFloat: - if mf.flags&flagNotNULL != 0 { - return scanTypeFloat32 - } - return scanTypeNullFloat - - case fieldTypeDouble: - if mf.flags&flagNotNULL != 0 { - return scanTypeFloat64 - } - return scanTypeNullFloat - - case fieldTypeDecimal, fieldTypeNewDecimal, fieldTypeVarChar, - fieldTypeBit, fieldTypeEnum, fieldTypeSet, fieldTypeTinyBLOB, - fieldTypeMediumBLOB, fieldTypeLongBLOB, fieldTypeBLOB, - fieldTypeVarString, fieldTypeString, fieldTypeGeometry, fieldTypeJSON, - fieldTypeTime: - return scanTypeRawBytes - - case fieldTypeDate, fieldTypeNewDate, - fieldTypeTimestamp, fieldTypeDateTime: - // NullTime is always returned for more consistent behavior as it can - // handle both cases of parseTime regardless if the field is nullable. - return scanTypeNullTime - - default: - return scanTypeUnknown - } -} diff --git a/vendor/github.com/go-sql-driver/mysql/go.mod b/vendor/github.com/go-sql-driver/mysql/go.mod deleted file mode 100644 index 29e5d800..00000000 --- a/vendor/github.com/go-sql-driver/mysql/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/go-sql-driver/mysql - -go 1.9 diff --git a/vendor/github.com/go-sql-driver/mysql/infile.go b/vendor/github.com/go-sql-driver/mysql/infile.go deleted file mode 100644 index 273cb0ba..00000000 --- a/vendor/github.com/go-sql-driver/mysql/infile.go +++ /dev/null @@ -1,182 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "fmt" - "io" - "os" - "strings" - "sync" -) - -var ( - fileRegister map[string]bool - fileRegisterLock sync.RWMutex - readerRegister map[string]func() io.Reader - readerRegisterLock sync.RWMutex -) - -// RegisterLocalFile adds the given file to the file whitelist, -// so that it can be used by "LOAD DATA LOCAL INFILE ". -// Alternatively you can allow the use of all local files with -// the DSN parameter 'allowAllFiles=true' -// -// filePath := "/home/gopher/data.csv" -// mysql.RegisterLocalFile(filePath) -// err := db.Exec("LOAD DATA LOCAL INFILE '" + filePath + "' INTO TABLE foo") -// if err != nil { -// ... -// -func RegisterLocalFile(filePath string) { - fileRegisterLock.Lock() - // lazy map init - if fileRegister == nil { - fileRegister = make(map[string]bool) - } - - fileRegister[strings.Trim(filePath, `"`)] = true - fileRegisterLock.Unlock() -} - -// DeregisterLocalFile removes the given filepath from the whitelist. -func DeregisterLocalFile(filePath string) { - fileRegisterLock.Lock() - delete(fileRegister, strings.Trim(filePath, `"`)) - fileRegisterLock.Unlock() -} - -// RegisterReaderHandler registers a handler function which is used -// to receive a io.Reader. -// The Reader can be used by "LOAD DATA LOCAL INFILE Reader::". -// If the handler returns a io.ReadCloser Close() is called when the -// request is finished. -// -// mysql.RegisterReaderHandler("data", func() io.Reader { -// var csvReader io.Reader // Some Reader that returns CSV data -// ... // Open Reader here -// return csvReader -// }) -// err := db.Exec("LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo") -// if err != nil { -// ... -// -func RegisterReaderHandler(name string, handler func() io.Reader) { - readerRegisterLock.Lock() - // lazy map init - if readerRegister == nil { - readerRegister = make(map[string]func() io.Reader) - } - - readerRegister[name] = handler - readerRegisterLock.Unlock() -} - -// DeregisterReaderHandler removes the ReaderHandler function with -// the given name from the registry. -func DeregisterReaderHandler(name string) { - readerRegisterLock.Lock() - delete(readerRegister, name) - readerRegisterLock.Unlock() -} - -func deferredClose(err *error, closer io.Closer) { - closeErr := closer.Close() - if *err == nil { - *err = closeErr - } -} - -func (mc *mysqlConn) handleInFileRequest(name string) (err error) { - var rdr io.Reader - var data []byte - packetSize := 16 * 1024 // 16KB is small enough for disk readahead and large enough for TCP - if mc.maxWriteSize < packetSize { - packetSize = mc.maxWriteSize - } - - if idx := strings.Index(name, "Reader::"); idx == 0 || (idx > 0 && name[idx-1] == '/') { // io.Reader - // The server might return an an absolute path. See issue #355. - name = name[idx+8:] - - readerRegisterLock.RLock() - handler, inMap := readerRegister[name] - readerRegisterLock.RUnlock() - - if inMap { - rdr = handler() - if rdr != nil { - if cl, ok := rdr.(io.Closer); ok { - defer deferredClose(&err, cl) - } - } else { - err = fmt.Errorf("Reader '%s' is ", name) - } - } else { - err = fmt.Errorf("Reader '%s' is not registered", name) - } - } else { // File - name = strings.Trim(name, `"`) - fileRegisterLock.RLock() - fr := fileRegister[name] - fileRegisterLock.RUnlock() - if mc.cfg.AllowAllFiles || fr { - var file *os.File - var fi os.FileInfo - - if file, err = os.Open(name); err == nil { - defer deferredClose(&err, file) - - // get file size - if fi, err = file.Stat(); err == nil { - rdr = file - if fileSize := int(fi.Size()); fileSize < packetSize { - packetSize = fileSize - } - } - } - } else { - err = fmt.Errorf("local file '%s' is not registered", name) - } - } - - // send content packets - // if packetSize == 0, the Reader contains no data - if err == nil && packetSize > 0 { - data := make([]byte, 4+packetSize) - var n int - for err == nil { - n, err = rdr.Read(data[4:]) - if n > 0 { - if ioErr := mc.writePacket(data[:4+n]); ioErr != nil { - return ioErr - } - } - } - if err == io.EOF { - err = nil - } - } - - // send empty packet (termination) - if data == nil { - data = make([]byte, 4) - } - if ioErr := mc.writePacket(data[:4]); ioErr != nil { - return ioErr - } - - // read OK packet - if err == nil { - return mc.readResultOK() - } - - mc.readPacket() - return err -} diff --git a/vendor/github.com/go-sql-driver/mysql/nulltime.go b/vendor/github.com/go-sql-driver/mysql/nulltime.go deleted file mode 100644 index afa8a89e..00000000 --- a/vendor/github.com/go-sql-driver/mysql/nulltime.go +++ /dev/null @@ -1,50 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "database/sql/driver" - "fmt" - "time" -) - -// Scan implements the Scanner interface. -// The value type must be time.Time or string / []byte (formatted time-string), -// otherwise Scan fails. -func (nt *NullTime) Scan(value interface{}) (err error) { - if value == nil { - nt.Time, nt.Valid = time.Time{}, false - return - } - - switch v := value.(type) { - case time.Time: - nt.Time, nt.Valid = v, true - return - case []byte: - nt.Time, err = parseDateTime(string(v), time.UTC) - nt.Valid = (err == nil) - return - case string: - nt.Time, err = parseDateTime(v, time.UTC) - nt.Valid = (err == nil) - return - } - - nt.Valid = false - return fmt.Errorf("Can't convert %T to time.Time", value) -} - -// Value implements the driver Valuer interface. -func (nt NullTime) Value() (driver.Value, error) { - if !nt.Valid { - return nil, nil - } - return nt.Time, nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/nulltime_go113.go b/vendor/github.com/go-sql-driver/mysql/nulltime_go113.go deleted file mode 100644 index c392594d..00000000 --- a/vendor/github.com/go-sql-driver/mysql/nulltime_go113.go +++ /dev/null @@ -1,31 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// +build go1.13 - -package mysql - -import ( - "database/sql" -) - -// NullTime represents a time.Time that may be NULL. -// NullTime implements the Scanner interface so -// it can be used as a scan destination: -// -// var nt NullTime -// err := db.QueryRow("SELECT time FROM foo WHERE id=?", id).Scan(&nt) -// ... -// if nt.Valid { -// // use nt.Time -// } else { -// // NULL value -// } -// -// This NullTime implementation is not driver-specific -type NullTime sql.NullTime diff --git a/vendor/github.com/go-sql-driver/mysql/nulltime_legacy.go b/vendor/github.com/go-sql-driver/mysql/nulltime_legacy.go deleted file mode 100644 index 86d159d4..00000000 --- a/vendor/github.com/go-sql-driver/mysql/nulltime_legacy.go +++ /dev/null @@ -1,34 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -// +build !go1.13 - -package mysql - -import ( - "time" -) - -// NullTime represents a time.Time that may be NULL. -// NullTime implements the Scanner interface so -// it can be used as a scan destination: -// -// var nt NullTime -// err := db.QueryRow("SELECT time FROM foo WHERE id=?", id).Scan(&nt) -// ... -// if nt.Valid { -// // use nt.Time -// } else { -// // NULL value -// } -// -// This NullTime implementation is not driver-specific -type NullTime struct { - Time time.Time - Valid bool // Valid is true if Time is not NULL -} diff --git a/vendor/github.com/go-sql-driver/mysql/packets.go b/vendor/github.com/go-sql-driver/mysql/packets.go deleted file mode 100644 index 30b3352c..00000000 --- a/vendor/github.com/go-sql-driver/mysql/packets.go +++ /dev/null @@ -1,1342 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "bytes" - "crypto/tls" - "database/sql/driver" - "encoding/binary" - "errors" - "fmt" - "io" - "math" - "time" -) - -// Packets documentation: -// http://dev.mysql.com/doc/internals/en/client-server-protocol.html - -// Read packet to buffer 'data' -func (mc *mysqlConn) readPacket() ([]byte, error) { - var prevData []byte - for { - // read packet header - data, err := mc.buf.readNext(4) - if err != nil { - if cerr := mc.canceled.Value(); cerr != nil { - return nil, cerr - } - errLog.Print(err) - mc.Close() - return nil, ErrInvalidConn - } - - // packet length [24 bit] - pktLen := int(uint32(data[0]) | uint32(data[1])<<8 | uint32(data[2])<<16) - - // check packet sync [8 bit] - if data[3] != mc.sequence { - if data[3] > mc.sequence { - return nil, ErrPktSyncMul - } - return nil, ErrPktSync - } - mc.sequence++ - - // packets with length 0 terminate a previous packet which is a - // multiple of (2^24)-1 bytes long - if pktLen == 0 { - // there was no previous packet - if prevData == nil { - errLog.Print(ErrMalformPkt) - mc.Close() - return nil, ErrInvalidConn - } - - return prevData, nil - } - - // read packet body [pktLen bytes] - data, err = mc.buf.readNext(pktLen) - if err != nil { - if cerr := mc.canceled.Value(); cerr != nil { - return nil, cerr - } - errLog.Print(err) - mc.Close() - return nil, ErrInvalidConn - } - - // return data if this was the last packet - if pktLen < maxPacketSize { - // zero allocations for non-split packets - if prevData == nil { - return data, nil - } - - return append(prevData, data...), nil - } - - prevData = append(prevData, data...) - } -} - -// Write packet buffer 'data' -func (mc *mysqlConn) writePacket(data []byte) error { - pktLen := len(data) - 4 - - if pktLen > mc.maxAllowedPacket { - return ErrPktTooLarge - } - - // Perform a stale connection check. We only perform this check for - // the first query on a connection that has been checked out of the - // connection pool: a fresh connection from the pool is more likely - // to be stale, and it has not performed any previous writes that - // could cause data corruption, so it's safe to return ErrBadConn - // if the check fails. - if mc.reset { - mc.reset = false - conn := mc.netConn - if mc.rawConn != nil { - conn = mc.rawConn - } - var err error - // If this connection has a ReadTimeout which we've been setting on - // reads, reset it to its default value before we attempt a non-blocking - // read, otherwise the scheduler will just time us out before we can read - if mc.cfg.ReadTimeout != 0 { - err = conn.SetReadDeadline(time.Time{}) - } - if err == nil { - err = connCheck(conn) - } - if err != nil { - errLog.Print("closing bad idle connection: ", err) - mc.Close() - return driver.ErrBadConn - } - } - - for { - var size int - if pktLen >= maxPacketSize { - data[0] = 0xff - data[1] = 0xff - data[2] = 0xff - size = maxPacketSize - } else { - data[0] = byte(pktLen) - data[1] = byte(pktLen >> 8) - data[2] = byte(pktLen >> 16) - size = pktLen - } - data[3] = mc.sequence - - // Write packet - if mc.writeTimeout > 0 { - if err := mc.netConn.SetWriteDeadline(time.Now().Add(mc.writeTimeout)); err != nil { - return err - } - } - - n, err := mc.netConn.Write(data[:4+size]) - if err == nil && n == 4+size { - mc.sequence++ - if size != maxPacketSize { - return nil - } - pktLen -= size - data = data[size:] - continue - } - - // Handle error - if err == nil { // n != len(data) - mc.cleanup() - errLog.Print(ErrMalformPkt) - } else { - if cerr := mc.canceled.Value(); cerr != nil { - return cerr - } - if n == 0 && pktLen == len(data)-4 { - // only for the first loop iteration when nothing was written yet - return errBadConnNoWrite - } - mc.cleanup() - errLog.Print(err) - } - return ErrInvalidConn - } -} - -/****************************************************************************** -* Initialization Process * -******************************************************************************/ - -// Handshake Initialization Packet -// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake -func (mc *mysqlConn) readHandshakePacket() (data []byte, plugin string, err error) { - data, err = mc.readPacket() - if err != nil { - // for init we can rewrite this to ErrBadConn for sql.Driver to retry, since - // in connection initialization we don't risk retrying non-idempotent actions. - if err == ErrInvalidConn { - return nil, "", driver.ErrBadConn - } - return - } - - if data[0] == iERR { - return nil, "", mc.handleErrorPacket(data) - } - - // protocol version [1 byte] - if data[0] < minProtocolVersion { - return nil, "", fmt.Errorf( - "unsupported protocol version %d. Version %d or higher is required", - data[0], - minProtocolVersion, - ) - } - - // server version [null terminated string] - // connection id [4 bytes] - pos := 1 + bytes.IndexByte(data[1:], 0x00) + 1 + 4 - - // first part of the password cipher [8 bytes] - authData := data[pos : pos+8] - - // (filler) always 0x00 [1 byte] - pos += 8 + 1 - - // capability flags (lower 2 bytes) [2 bytes] - mc.flags = clientFlag(binary.LittleEndian.Uint16(data[pos : pos+2])) - if mc.flags&clientProtocol41 == 0 { - return nil, "", ErrOldProtocol - } - if mc.flags&clientSSL == 0 && mc.cfg.tls != nil { - if mc.cfg.TLSConfig == "preferred" { - mc.cfg.tls = nil - } else { - return nil, "", ErrNoTLS - } - } - pos += 2 - - if len(data) > pos { - // character set [1 byte] - // status flags [2 bytes] - // capability flags (upper 2 bytes) [2 bytes] - // length of auth-plugin-data [1 byte] - // reserved (all [00]) [10 bytes] - pos += 1 + 2 + 2 + 1 + 10 - - // second part of the password cipher [mininum 13 bytes], - // where len=MAX(13, length of auth-plugin-data - 8) - // - // The web documentation is ambiguous about the length. However, - // according to mysql-5.7/sql/auth/sql_authentication.cc line 538, - // the 13th byte is "\0 byte, terminating the second part of - // a scramble". So the second part of the password cipher is - // a NULL terminated string that's at least 13 bytes with the - // last byte being NULL. - // - // The official Python library uses the fixed length 12 - // which seems to work but technically could have a hidden bug. - authData = append(authData, data[pos:pos+12]...) - pos += 13 - - // EOF if version (>= 5.5.7 and < 5.5.10) or (>= 5.6.0 and < 5.6.2) - // \NUL otherwise - if end := bytes.IndexByte(data[pos:], 0x00); end != -1 { - plugin = string(data[pos : pos+end]) - } else { - plugin = string(data[pos:]) - } - - // make a memory safe copy of the cipher slice - var b [20]byte - copy(b[:], authData) - return b[:], plugin, nil - } - - // make a memory safe copy of the cipher slice - var b [8]byte - copy(b[:], authData) - return b[:], plugin, nil -} - -// Client Authentication Packet -// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse -func (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string) error { - // Adjust client flags based on server support - clientFlags := clientProtocol41 | - clientSecureConn | - clientLongPassword | - clientTransactions | - clientLocalFiles | - clientPluginAuth | - clientMultiResults | - mc.flags&clientLongFlag - - if mc.cfg.ClientFoundRows { - clientFlags |= clientFoundRows - } - - // To enable TLS / SSL - if mc.cfg.tls != nil { - clientFlags |= clientSSL - } - - if mc.cfg.MultiStatements { - clientFlags |= clientMultiStatements - } - - // encode length of the auth plugin data - var authRespLEIBuf [9]byte - authRespLen := len(authResp) - authRespLEI := appendLengthEncodedInteger(authRespLEIBuf[:0], uint64(authRespLen)) - if len(authRespLEI) > 1 { - // if the length can not be written in 1 byte, it must be written as a - // length encoded integer - clientFlags |= clientPluginAuthLenEncClientData - } - - pktLen := 4 + 4 + 1 + 23 + len(mc.cfg.User) + 1 + len(authRespLEI) + len(authResp) + 21 + 1 - - // To specify a db name - if n := len(mc.cfg.DBName); n > 0 { - clientFlags |= clientConnectWithDB - pktLen += n + 1 - } - - // Calculate packet length and get buffer with that size - data, err := mc.buf.takeSmallBuffer(pktLen + 4) - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // ClientFlags [32 bit] - data[4] = byte(clientFlags) - data[5] = byte(clientFlags >> 8) - data[6] = byte(clientFlags >> 16) - data[7] = byte(clientFlags >> 24) - - // MaxPacketSize [32 bit] (none) - data[8] = 0x00 - data[9] = 0x00 - data[10] = 0x00 - data[11] = 0x00 - - // Charset [1 byte] - var found bool - data[12], found = collations[mc.cfg.Collation] - if !found { - // Note possibility for false negatives: - // could be triggered although the collation is valid if the - // collations map does not contain entries the server supports. - return errors.New("unknown collation") - } - - // SSL Connection Request Packet - // http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest - if mc.cfg.tls != nil { - // Send TLS / SSL request packet - if err := mc.writePacket(data[:(4+4+1+23)+4]); err != nil { - return err - } - - // Switch to TLS - tlsConn := tls.Client(mc.netConn, mc.cfg.tls) - if err := tlsConn.Handshake(); err != nil { - return err - } - mc.rawConn = mc.netConn - mc.netConn = tlsConn - mc.buf.nc = tlsConn - } - - // Filler [23 bytes] (all 0x00) - pos := 13 - for ; pos < 13+23; pos++ { - data[pos] = 0 - } - - // User [null terminated string] - if len(mc.cfg.User) > 0 { - pos += copy(data[pos:], mc.cfg.User) - } - data[pos] = 0x00 - pos++ - - // Auth Data [length encoded integer] - pos += copy(data[pos:], authRespLEI) - pos += copy(data[pos:], authResp) - - // Databasename [null terminated string] - if len(mc.cfg.DBName) > 0 { - pos += copy(data[pos:], mc.cfg.DBName) - data[pos] = 0x00 - pos++ - } - - pos += copy(data[pos:], plugin) - data[pos] = 0x00 - pos++ - - // Send Auth packet - return mc.writePacket(data[:pos]) -} - -// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse -func (mc *mysqlConn) writeAuthSwitchPacket(authData []byte) error { - pktLen := 4 + len(authData) - data, err := mc.buf.takeSmallBuffer(pktLen) - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // Add the auth data [EOF] - copy(data[4:], authData) - return mc.writePacket(data) -} - -/****************************************************************************** -* Command Packets * -******************************************************************************/ - -func (mc *mysqlConn) writeCommandPacket(command byte) error { - // Reset Packet Sequence - mc.sequence = 0 - - data, err := mc.buf.takeSmallBuffer(4 + 1) - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // Add command byte - data[4] = command - - // Send CMD packet - return mc.writePacket(data) -} - -func (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error { - // Reset Packet Sequence - mc.sequence = 0 - - pktLen := 1 + len(arg) - data, err := mc.buf.takeBuffer(pktLen + 4) - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // Add command byte - data[4] = command - - // Add arg - copy(data[5:], arg) - - // Send CMD packet - return mc.writePacket(data) -} - -func (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error { - // Reset Packet Sequence - mc.sequence = 0 - - data, err := mc.buf.takeSmallBuffer(4 + 1 + 4) - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // Add command byte - data[4] = command - - // Add arg [32 bit] - data[5] = byte(arg) - data[6] = byte(arg >> 8) - data[7] = byte(arg >> 16) - data[8] = byte(arg >> 24) - - // Send CMD packet - return mc.writePacket(data) -} - -/****************************************************************************** -* Result Packets * -******************************************************************************/ - -func (mc *mysqlConn) readAuthResult() ([]byte, string, error) { - data, err := mc.readPacket() - if err != nil { - return nil, "", err - } - - // packet indicator - switch data[0] { - - case iOK: - return nil, "", mc.handleOkPacket(data) - - case iAuthMoreData: - return data[1:], "", err - - case iEOF: - if len(data) == 1 { - // https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::OldAuthSwitchRequest - return nil, "mysql_old_password", nil - } - pluginEndIndex := bytes.IndexByte(data, 0x00) - if pluginEndIndex < 0 { - return nil, "", ErrMalformPkt - } - plugin := string(data[1:pluginEndIndex]) - authData := data[pluginEndIndex+1:] - return authData, plugin, nil - - default: // Error otherwise - return nil, "", mc.handleErrorPacket(data) - } -} - -// Returns error if Packet is not an 'Result OK'-Packet -func (mc *mysqlConn) readResultOK() error { - data, err := mc.readPacket() - if err != nil { - return err - } - - if data[0] == iOK { - return mc.handleOkPacket(data) - } - return mc.handleErrorPacket(data) -} - -// Result Set Header Packet -// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::Resultset -func (mc *mysqlConn) readResultSetHeaderPacket() (int, error) { - data, err := mc.readPacket() - if err == nil { - switch data[0] { - - case iOK: - return 0, mc.handleOkPacket(data) - - case iERR: - return 0, mc.handleErrorPacket(data) - - case iLocalInFile: - return 0, mc.handleInFileRequest(string(data[1:])) - } - - // column count - num, _, n := readLengthEncodedInteger(data) - if n-len(data) == 0 { - return int(num), nil - } - - return 0, ErrMalformPkt - } - return 0, err -} - -// Error Packet -// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-ERR_Packet -func (mc *mysqlConn) handleErrorPacket(data []byte) error { - if data[0] != iERR { - return ErrMalformPkt - } - - // 0xff [1 byte] - - // Error Number [16 bit uint] - errno := binary.LittleEndian.Uint16(data[1:3]) - - // 1792: ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION - // 1290: ER_OPTION_PREVENTS_STATEMENT (returned by Aurora during failover) - if (errno == 1792 || errno == 1290) && mc.cfg.RejectReadOnly { - // Oops; we are connected to a read-only connection, and won't be able - // to issue any write statements. Since RejectReadOnly is configured, - // we throw away this connection hoping this one would have write - // permission. This is specifically for a possible race condition - // during failover (e.g. on AWS Aurora). See README.md for more. - // - // We explicitly close the connection before returning - // driver.ErrBadConn to ensure that `database/sql` purges this - // connection and initiates a new one for next statement next time. - mc.Close() - return driver.ErrBadConn - } - - pos := 3 - - // SQL State [optional: # + 5bytes string] - if data[3] == 0x23 { - //sqlstate := string(data[4 : 4+5]) - pos = 9 - } - - // Error Message [string] - return &MySQLError{ - Number: errno, - Message: string(data[pos:]), - } -} - -func readStatus(b []byte) statusFlag { - return statusFlag(b[0]) | statusFlag(b[1])<<8 -} - -// Ok Packet -// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-OK_Packet -func (mc *mysqlConn) handleOkPacket(data []byte) error { - var n, m int - - // 0x00 [1 byte] - - // Affected rows [Length Coded Binary] - mc.affectedRows, _, n = readLengthEncodedInteger(data[1:]) - - // Insert id [Length Coded Binary] - mc.insertId, _, m = readLengthEncodedInteger(data[1+n:]) - - // server_status [2 bytes] - mc.status = readStatus(data[1+n+m : 1+n+m+2]) - if mc.status&statusMoreResultsExists != 0 { - return nil - } - - // warning count [2 bytes] - - return nil -} - -// Read Packets as Field Packets until EOF-Packet or an Error appears -// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnDefinition41 -func (mc *mysqlConn) readColumns(count int) ([]mysqlField, error) { - columns := make([]mysqlField, count) - - for i := 0; ; i++ { - data, err := mc.readPacket() - if err != nil { - return nil, err - } - - // EOF Packet - if data[0] == iEOF && (len(data) == 5 || len(data) == 1) { - if i == count { - return columns, nil - } - return nil, fmt.Errorf("column count mismatch n:%d len:%d", count, len(columns)) - } - - // Catalog - pos, err := skipLengthEncodedString(data) - if err != nil { - return nil, err - } - - // Database [len coded string] - n, err := skipLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - pos += n - - // Table [len coded string] - if mc.cfg.ColumnsWithAlias { - tableName, _, n, err := readLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - pos += n - columns[i].tableName = string(tableName) - } else { - n, err = skipLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - pos += n - } - - // Original table [len coded string] - n, err = skipLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - pos += n - - // Name [len coded string] - name, _, n, err := readLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - columns[i].name = string(name) - pos += n - - // Original name [len coded string] - n, err = skipLengthEncodedString(data[pos:]) - if err != nil { - return nil, err - } - pos += n - - // Filler [uint8] - pos++ - - // Charset [charset, collation uint8] - columns[i].charSet = data[pos] - pos += 2 - - // Length [uint32] - columns[i].length = binary.LittleEndian.Uint32(data[pos : pos+4]) - pos += 4 - - // Field type [uint8] - columns[i].fieldType = fieldType(data[pos]) - pos++ - - // Flags [uint16] - columns[i].flags = fieldFlag(binary.LittleEndian.Uint16(data[pos : pos+2])) - pos += 2 - - // Decimals [uint8] - columns[i].decimals = data[pos] - //pos++ - - // Default value [len coded binary] - //if pos < len(data) { - // defaultVal, _, err = bytesToLengthCodedBinary(data[pos:]) - //} - } -} - -// Read Packets as Field Packets until EOF-Packet or an Error appears -// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::ResultsetRow -func (rows *textRows) readRow(dest []driver.Value) error { - mc := rows.mc - - if rows.rs.done { - return io.EOF - } - - data, err := mc.readPacket() - if err != nil { - return err - } - - // EOF Packet - if data[0] == iEOF && len(data) == 5 { - // server_status [2 bytes] - rows.mc.status = readStatus(data[3:]) - rows.rs.done = true - if !rows.HasNextResultSet() { - rows.mc = nil - } - return io.EOF - } - if data[0] == iERR { - rows.mc = nil - return mc.handleErrorPacket(data) - } - - // RowSet Packet - var n int - var isNull bool - pos := 0 - - for i := range dest { - // Read bytes and convert to string - dest[i], isNull, n, err = readLengthEncodedString(data[pos:]) - pos += n - if err == nil { - if !isNull { - if !mc.parseTime { - continue - } else { - switch rows.rs.columns[i].fieldType { - case fieldTypeTimestamp, fieldTypeDateTime, - fieldTypeDate, fieldTypeNewDate: - dest[i], err = parseDateTime( - string(dest[i].([]byte)), - mc.cfg.Loc, - ) - if err == nil { - continue - } - default: - continue - } - } - - } else { - dest[i] = nil - continue - } - } - return err // err != nil - } - - return nil -} - -// Reads Packets until EOF-Packet or an Error appears. Returns count of Packets read -func (mc *mysqlConn) readUntilEOF() error { - for { - data, err := mc.readPacket() - if err != nil { - return err - } - - switch data[0] { - case iERR: - return mc.handleErrorPacket(data) - case iEOF: - if len(data) == 5 { - mc.status = readStatus(data[3:]) - } - return nil - } - } -} - -/****************************************************************************** -* Prepared Statements * -******************************************************************************/ - -// Prepare Result Packets -// http://dev.mysql.com/doc/internals/en/com-stmt-prepare-response.html -func (stmt *mysqlStmt) readPrepareResultPacket() (uint16, error) { - data, err := stmt.mc.readPacket() - if err == nil { - // packet indicator [1 byte] - if data[0] != iOK { - return 0, stmt.mc.handleErrorPacket(data) - } - - // statement id [4 bytes] - stmt.id = binary.LittleEndian.Uint32(data[1:5]) - - // Column count [16 bit uint] - columnCount := binary.LittleEndian.Uint16(data[5:7]) - - // Param count [16 bit uint] - stmt.paramCount = int(binary.LittleEndian.Uint16(data[7:9])) - - // Reserved [8 bit] - - // Warning count [16 bit uint] - - return columnCount, nil - } - return 0, err -} - -// http://dev.mysql.com/doc/internals/en/com-stmt-send-long-data.html -func (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error { - maxLen := stmt.mc.maxAllowedPacket - 1 - pktLen := maxLen - - // After the header (bytes 0-3) follows before the data: - // 1 byte command - // 4 bytes stmtID - // 2 bytes paramID - const dataOffset = 1 + 4 + 2 - - // Cannot use the write buffer since - // a) the buffer is too small - // b) it is in use - data := make([]byte, 4+1+4+2+len(arg)) - - copy(data[4+dataOffset:], arg) - - for argLen := len(arg); argLen > 0; argLen -= pktLen - dataOffset { - if dataOffset+argLen < maxLen { - pktLen = dataOffset + argLen - } - - stmt.mc.sequence = 0 - // Add command byte [1 byte] - data[4] = comStmtSendLongData - - // Add stmtID [32 bit] - data[5] = byte(stmt.id) - data[6] = byte(stmt.id >> 8) - data[7] = byte(stmt.id >> 16) - data[8] = byte(stmt.id >> 24) - - // Add paramID [16 bit] - data[9] = byte(paramID) - data[10] = byte(paramID >> 8) - - // Send CMD packet - err := stmt.mc.writePacket(data[:4+pktLen]) - if err == nil { - data = data[pktLen-dataOffset:] - continue - } - return err - - } - - // Reset Packet Sequence - stmt.mc.sequence = 0 - return nil -} - -// Execute Prepared Statement -// http://dev.mysql.com/doc/internals/en/com-stmt-execute.html -func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error { - if len(args) != stmt.paramCount { - return fmt.Errorf( - "argument count mismatch (got: %d; has: %d)", - len(args), - stmt.paramCount, - ) - } - - const minPktLen = 4 + 1 + 4 + 1 + 4 - mc := stmt.mc - - // Determine threshold dynamically to avoid packet size shortage. - longDataSize := mc.maxAllowedPacket / (stmt.paramCount + 1) - if longDataSize < 64 { - longDataSize = 64 - } - - // Reset packet-sequence - mc.sequence = 0 - - var data []byte - var err error - - if len(args) == 0 { - data, err = mc.buf.takeBuffer(minPktLen) - } else { - data, err = mc.buf.takeCompleteBuffer() - // In this case the len(data) == cap(data) which is used to optimise the flow below. - } - if err != nil { - // cannot take the buffer. Something must be wrong with the connection - errLog.Print(err) - return errBadConnNoWrite - } - - // command [1 byte] - data[4] = comStmtExecute - - // statement_id [4 bytes] - data[5] = byte(stmt.id) - data[6] = byte(stmt.id >> 8) - data[7] = byte(stmt.id >> 16) - data[8] = byte(stmt.id >> 24) - - // flags (0: CURSOR_TYPE_NO_CURSOR) [1 byte] - data[9] = 0x00 - - // iteration_count (uint32(1)) [4 bytes] - data[10] = 0x01 - data[11] = 0x00 - data[12] = 0x00 - data[13] = 0x00 - - if len(args) > 0 { - pos := minPktLen - - var nullMask []byte - if maskLen, typesLen := (len(args)+7)/8, 1+2*len(args); pos+maskLen+typesLen >= cap(data) { - // buffer has to be extended but we don't know by how much so - // we depend on append after all data with known sizes fit. - // We stop at that because we deal with a lot of columns here - // which makes the required allocation size hard to guess. - tmp := make([]byte, pos+maskLen+typesLen) - copy(tmp[:pos], data[:pos]) - data = tmp - nullMask = data[pos : pos+maskLen] - // No need to clean nullMask as make ensures that. - pos += maskLen - } else { - nullMask = data[pos : pos+maskLen] - for i := range nullMask { - nullMask[i] = 0 - } - pos += maskLen - } - - // newParameterBoundFlag 1 [1 byte] - data[pos] = 0x01 - pos++ - - // type of each parameter [len(args)*2 bytes] - paramTypes := data[pos:] - pos += len(args) * 2 - - // value of each parameter [n bytes] - paramValues := data[pos:pos] - valuesCap := cap(paramValues) - - for i, arg := range args { - // build NULL-bitmap - if arg == nil { - nullMask[i/8] |= 1 << (uint(i) & 7) - paramTypes[i+i] = byte(fieldTypeNULL) - paramTypes[i+i+1] = 0x00 - continue - } - - // cache types and values - switch v := arg.(type) { - case int64: - paramTypes[i+i] = byte(fieldTypeLongLong) - paramTypes[i+i+1] = 0x00 - - if cap(paramValues)-len(paramValues)-8 >= 0 { - paramValues = paramValues[:len(paramValues)+8] - binary.LittleEndian.PutUint64( - paramValues[len(paramValues)-8:], - uint64(v), - ) - } else { - paramValues = append(paramValues, - uint64ToBytes(uint64(v))..., - ) - } - - case uint64: - paramTypes[i+i] = byte(fieldTypeLongLong) - paramTypes[i+i+1] = 0x80 // type is unsigned - - if cap(paramValues)-len(paramValues)-8 >= 0 { - paramValues = paramValues[:len(paramValues)+8] - binary.LittleEndian.PutUint64( - paramValues[len(paramValues)-8:], - uint64(v), - ) - } else { - paramValues = append(paramValues, - uint64ToBytes(uint64(v))..., - ) - } - - case float64: - paramTypes[i+i] = byte(fieldTypeDouble) - paramTypes[i+i+1] = 0x00 - - if cap(paramValues)-len(paramValues)-8 >= 0 { - paramValues = paramValues[:len(paramValues)+8] - binary.LittleEndian.PutUint64( - paramValues[len(paramValues)-8:], - math.Float64bits(v), - ) - } else { - paramValues = append(paramValues, - uint64ToBytes(math.Float64bits(v))..., - ) - } - - case bool: - paramTypes[i+i] = byte(fieldTypeTiny) - paramTypes[i+i+1] = 0x00 - - if v { - paramValues = append(paramValues, 0x01) - } else { - paramValues = append(paramValues, 0x00) - } - - case []byte: - // Common case (non-nil value) first - if v != nil { - paramTypes[i+i] = byte(fieldTypeString) - paramTypes[i+i+1] = 0x00 - - if len(v) < longDataSize { - paramValues = appendLengthEncodedInteger(paramValues, - uint64(len(v)), - ) - paramValues = append(paramValues, v...) - } else { - if err := stmt.writeCommandLongData(i, v); err != nil { - return err - } - } - continue - } - - // Handle []byte(nil) as a NULL value - nullMask[i/8] |= 1 << (uint(i) & 7) - paramTypes[i+i] = byte(fieldTypeNULL) - paramTypes[i+i+1] = 0x00 - - case string: - paramTypes[i+i] = byte(fieldTypeString) - paramTypes[i+i+1] = 0x00 - - if len(v) < longDataSize { - paramValues = appendLengthEncodedInteger(paramValues, - uint64(len(v)), - ) - paramValues = append(paramValues, v...) - } else { - if err := stmt.writeCommandLongData(i, []byte(v)); err != nil { - return err - } - } - - case time.Time: - paramTypes[i+i] = byte(fieldTypeString) - paramTypes[i+i+1] = 0x00 - - var a [64]byte - var b = a[:0] - - if v.IsZero() { - b = append(b, "0000-00-00"...) - } else { - b = v.In(mc.cfg.Loc).AppendFormat(b, timeFormat) - } - - paramValues = appendLengthEncodedInteger(paramValues, - uint64(len(b)), - ) - paramValues = append(paramValues, b...) - - default: - return fmt.Errorf("cannot convert type: %T", arg) - } - } - - // Check if param values exceeded the available buffer - // In that case we must build the data packet with the new values buffer - if valuesCap != cap(paramValues) { - data = append(data[:pos], paramValues...) - if err = mc.buf.store(data); err != nil { - errLog.Print(err) - return errBadConnNoWrite - } - } - - pos += len(paramValues) - data = data[:pos] - } - - return mc.writePacket(data) -} - -func (mc *mysqlConn) discardResults() error { - for mc.status&statusMoreResultsExists != 0 { - resLen, err := mc.readResultSetHeaderPacket() - if err != nil { - return err - } - if resLen > 0 { - // columns - if err := mc.readUntilEOF(); err != nil { - return err - } - // rows - if err := mc.readUntilEOF(); err != nil { - return err - } - } - } - return nil -} - -// http://dev.mysql.com/doc/internals/en/binary-protocol-resultset-row.html -func (rows *binaryRows) readRow(dest []driver.Value) error { - data, err := rows.mc.readPacket() - if err != nil { - return err - } - - // packet indicator [1 byte] - if data[0] != iOK { - // EOF Packet - if data[0] == iEOF && len(data) == 5 { - rows.mc.status = readStatus(data[3:]) - rows.rs.done = true - if !rows.HasNextResultSet() { - rows.mc = nil - } - return io.EOF - } - mc := rows.mc - rows.mc = nil - - // Error otherwise - return mc.handleErrorPacket(data) - } - - // NULL-bitmap, [(column-count + 7 + 2) / 8 bytes] - pos := 1 + (len(dest)+7+2)>>3 - nullMask := data[1:pos] - - for i := range dest { - // Field is NULL - // (byte >> bit-pos) % 2 == 1 - if ((nullMask[(i+2)>>3] >> uint((i+2)&7)) & 1) == 1 { - dest[i] = nil - continue - } - - // Convert to byte-coded string - switch rows.rs.columns[i].fieldType { - case fieldTypeNULL: - dest[i] = nil - continue - - // Numeric Types - case fieldTypeTiny: - if rows.rs.columns[i].flags&flagUnsigned != 0 { - dest[i] = int64(data[pos]) - } else { - dest[i] = int64(int8(data[pos])) - } - pos++ - continue - - case fieldTypeShort, fieldTypeYear: - if rows.rs.columns[i].flags&flagUnsigned != 0 { - dest[i] = int64(binary.LittleEndian.Uint16(data[pos : pos+2])) - } else { - dest[i] = int64(int16(binary.LittleEndian.Uint16(data[pos : pos+2]))) - } - pos += 2 - continue - - case fieldTypeInt24, fieldTypeLong: - if rows.rs.columns[i].flags&flagUnsigned != 0 { - dest[i] = int64(binary.LittleEndian.Uint32(data[pos : pos+4])) - } else { - dest[i] = int64(int32(binary.LittleEndian.Uint32(data[pos : pos+4]))) - } - pos += 4 - continue - - case fieldTypeLongLong: - if rows.rs.columns[i].flags&flagUnsigned != 0 { - val := binary.LittleEndian.Uint64(data[pos : pos+8]) - if val > math.MaxInt64 { - dest[i] = uint64ToString(val) - } else { - dest[i] = int64(val) - } - } else { - dest[i] = int64(binary.LittleEndian.Uint64(data[pos : pos+8])) - } - pos += 8 - continue - - case fieldTypeFloat: - dest[i] = math.Float32frombits(binary.LittleEndian.Uint32(data[pos : pos+4])) - pos += 4 - continue - - case fieldTypeDouble: - dest[i] = math.Float64frombits(binary.LittleEndian.Uint64(data[pos : pos+8])) - pos += 8 - continue - - // Length coded Binary Strings - case fieldTypeDecimal, fieldTypeNewDecimal, fieldTypeVarChar, - fieldTypeBit, fieldTypeEnum, fieldTypeSet, fieldTypeTinyBLOB, - fieldTypeMediumBLOB, fieldTypeLongBLOB, fieldTypeBLOB, - fieldTypeVarString, fieldTypeString, fieldTypeGeometry, fieldTypeJSON: - var isNull bool - var n int - dest[i], isNull, n, err = readLengthEncodedString(data[pos:]) - pos += n - if err == nil { - if !isNull { - continue - } else { - dest[i] = nil - continue - } - } - return err - - case - fieldTypeDate, fieldTypeNewDate, // Date YYYY-MM-DD - fieldTypeTime, // Time [-][H]HH:MM:SS[.fractal] - fieldTypeTimestamp, fieldTypeDateTime: // Timestamp YYYY-MM-DD HH:MM:SS[.fractal] - - num, isNull, n := readLengthEncodedInteger(data[pos:]) - pos += n - - switch { - case isNull: - dest[i] = nil - continue - case rows.rs.columns[i].fieldType == fieldTypeTime: - // database/sql does not support an equivalent to TIME, return a string - var dstlen uint8 - switch decimals := rows.rs.columns[i].decimals; decimals { - case 0x00, 0x1f: - dstlen = 8 - case 1, 2, 3, 4, 5, 6: - dstlen = 8 + 1 + decimals - default: - return fmt.Errorf( - "protocol error, illegal decimals value %d", - rows.rs.columns[i].decimals, - ) - } - dest[i], err = formatBinaryTime(data[pos:pos+int(num)], dstlen) - case rows.mc.parseTime: - dest[i], err = parseBinaryDateTime(num, data[pos:], rows.mc.cfg.Loc) - default: - var dstlen uint8 - if rows.rs.columns[i].fieldType == fieldTypeDate { - dstlen = 10 - } else { - switch decimals := rows.rs.columns[i].decimals; decimals { - case 0x00, 0x1f: - dstlen = 19 - case 1, 2, 3, 4, 5, 6: - dstlen = 19 + 1 + decimals - default: - return fmt.Errorf( - "protocol error, illegal decimals value %d", - rows.rs.columns[i].decimals, - ) - } - } - dest[i], err = formatBinaryDateTime(data[pos:pos+int(num)], dstlen) - } - - if err == nil { - pos += int(num) - continue - } else { - return err - } - - // Please report if this happens! - default: - return fmt.Errorf("unknown field type %d", rows.rs.columns[i].fieldType) - } - } - - return nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/result.go b/vendor/github.com/go-sql-driver/mysql/result.go deleted file mode 100644 index c6438d03..00000000 --- a/vendor/github.com/go-sql-driver/mysql/result.go +++ /dev/null @@ -1,22 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -type mysqlResult struct { - affectedRows int64 - insertId int64 -} - -func (res *mysqlResult) LastInsertId() (int64, error) { - return res.insertId, nil -} - -func (res *mysqlResult) RowsAffected() (int64, error) { - return res.affectedRows, nil -} diff --git a/vendor/github.com/go-sql-driver/mysql/rows.go b/vendor/github.com/go-sql-driver/mysql/rows.go deleted file mode 100644 index 888bdb5f..00000000 --- a/vendor/github.com/go-sql-driver/mysql/rows.go +++ /dev/null @@ -1,223 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "database/sql/driver" - "io" - "math" - "reflect" -) - -type resultSet struct { - columns []mysqlField - columnNames []string - done bool -} - -type mysqlRows struct { - mc *mysqlConn - rs resultSet - finish func() -} - -type binaryRows struct { - mysqlRows -} - -type textRows struct { - mysqlRows -} - -func (rows *mysqlRows) Columns() []string { - if rows.rs.columnNames != nil { - return rows.rs.columnNames - } - - columns := make([]string, len(rows.rs.columns)) - if rows.mc != nil && rows.mc.cfg.ColumnsWithAlias { - for i := range columns { - if tableName := rows.rs.columns[i].tableName; len(tableName) > 0 { - columns[i] = tableName + "." + rows.rs.columns[i].name - } else { - columns[i] = rows.rs.columns[i].name - } - } - } else { - for i := range columns { - columns[i] = rows.rs.columns[i].name - } - } - - rows.rs.columnNames = columns - return columns -} - -func (rows *mysqlRows) ColumnTypeDatabaseTypeName(i int) string { - return rows.rs.columns[i].typeDatabaseName() -} - -// func (rows *mysqlRows) ColumnTypeLength(i int) (length int64, ok bool) { -// return int64(rows.rs.columns[i].length), true -// } - -func (rows *mysqlRows) ColumnTypeNullable(i int) (nullable, ok bool) { - return rows.rs.columns[i].flags&flagNotNULL == 0, true -} - -func (rows *mysqlRows) ColumnTypePrecisionScale(i int) (int64, int64, bool) { - column := rows.rs.columns[i] - decimals := int64(column.decimals) - - switch column.fieldType { - case fieldTypeDecimal, fieldTypeNewDecimal: - if decimals > 0 { - return int64(column.length) - 2, decimals, true - } - return int64(column.length) - 1, decimals, true - case fieldTypeTimestamp, fieldTypeDateTime, fieldTypeTime: - return decimals, decimals, true - case fieldTypeFloat, fieldTypeDouble: - if decimals == 0x1f { - return math.MaxInt64, math.MaxInt64, true - } - return math.MaxInt64, decimals, true - } - - return 0, 0, false -} - -func (rows *mysqlRows) ColumnTypeScanType(i int) reflect.Type { - return rows.rs.columns[i].scanType() -} - -func (rows *mysqlRows) Close() (err error) { - if f := rows.finish; f != nil { - f() - rows.finish = nil - } - - mc := rows.mc - if mc == nil { - return nil - } - if err := mc.error(); err != nil { - return err - } - - // flip the buffer for this connection if we need to drain it. - // note that for a successful query (i.e. one where rows.next() - // has been called until it returns false), `rows.mc` will be nil - // by the time the user calls `(*Rows).Close`, so we won't reach this - // see: https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47 - mc.buf.flip() - - // Remove unread packets from stream - if !rows.rs.done { - err = mc.readUntilEOF() - } - if err == nil { - if err = mc.discardResults(); err != nil { - return err - } - } - - rows.mc = nil - return err -} - -func (rows *mysqlRows) HasNextResultSet() (b bool) { - if rows.mc == nil { - return false - } - return rows.mc.status&statusMoreResultsExists != 0 -} - -func (rows *mysqlRows) nextResultSet() (int, error) { - if rows.mc == nil { - return 0, io.EOF - } - if err := rows.mc.error(); err != nil { - return 0, err - } - - // Remove unread packets from stream - if !rows.rs.done { - if err := rows.mc.readUntilEOF(); err != nil { - return 0, err - } - rows.rs.done = true - } - - if !rows.HasNextResultSet() { - rows.mc = nil - return 0, io.EOF - } - rows.rs = resultSet{} - return rows.mc.readResultSetHeaderPacket() -} - -func (rows *mysqlRows) nextNotEmptyResultSet() (int, error) { - for { - resLen, err := rows.nextResultSet() - if err != nil { - return 0, err - } - - if resLen > 0 { - return resLen, nil - } - - rows.rs.done = true - } -} - -func (rows *binaryRows) NextResultSet() error { - resLen, err := rows.nextNotEmptyResultSet() - if err != nil { - return err - } - - rows.rs.columns, err = rows.mc.readColumns(resLen) - return err -} - -func (rows *binaryRows) Next(dest []driver.Value) error { - if mc := rows.mc; mc != nil { - if err := mc.error(); err != nil { - return err - } - - // Fetch next row from stream - return rows.readRow(dest) - } - return io.EOF -} - -func (rows *textRows) NextResultSet() (err error) { - resLen, err := rows.nextNotEmptyResultSet() - if err != nil { - return err - } - - rows.rs.columns, err = rows.mc.readColumns(resLen) - return err -} - -func (rows *textRows) Next(dest []driver.Value) error { - if mc := rows.mc; mc != nil { - if err := mc.error(); err != nil { - return err - } - - // Fetch next row from stream - return rows.readRow(dest) - } - return io.EOF -} diff --git a/vendor/github.com/go-sql-driver/mysql/statement.go b/vendor/github.com/go-sql-driver/mysql/statement.go deleted file mode 100644 index f7e37093..00000000 --- a/vendor/github.com/go-sql-driver/mysql/statement.go +++ /dev/null @@ -1,204 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "database/sql/driver" - "fmt" - "io" - "reflect" -) - -type mysqlStmt struct { - mc *mysqlConn - id uint32 - paramCount int -} - -func (stmt *mysqlStmt) Close() error { - if stmt.mc == nil || stmt.mc.closed.IsSet() { - // driver.Stmt.Close can be called more than once, thus this function - // has to be idempotent. - // See also Issue #450 and golang/go#16019. - //errLog.Print(ErrInvalidConn) - return driver.ErrBadConn - } - - err := stmt.mc.writeCommandPacketUint32(comStmtClose, stmt.id) - stmt.mc = nil - return err -} - -func (stmt *mysqlStmt) NumInput() int { - return stmt.paramCount -} - -func (stmt *mysqlStmt) ColumnConverter(idx int) driver.ValueConverter { - return converter{} -} - -func (stmt *mysqlStmt) Exec(args []driver.Value) (driver.Result, error) { - if stmt.mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - // Send command - err := stmt.writeExecutePacket(args) - if err != nil { - return nil, stmt.mc.markBadConn(err) - } - - mc := stmt.mc - - mc.affectedRows = 0 - mc.insertId = 0 - - // Read Result - resLen, err := mc.readResultSetHeaderPacket() - if err != nil { - return nil, err - } - - if resLen > 0 { - // Columns - if err = mc.readUntilEOF(); err != nil { - return nil, err - } - - // Rows - if err := mc.readUntilEOF(); err != nil { - return nil, err - } - } - - if err := mc.discardResults(); err != nil { - return nil, err - } - - return &mysqlResult{ - affectedRows: int64(mc.affectedRows), - insertId: int64(mc.insertId), - }, nil -} - -func (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) { - return stmt.query(args) -} - -func (stmt *mysqlStmt) query(args []driver.Value) (*binaryRows, error) { - if stmt.mc.closed.IsSet() { - errLog.Print(ErrInvalidConn) - return nil, driver.ErrBadConn - } - // Send command - err := stmt.writeExecutePacket(args) - if err != nil { - return nil, stmt.mc.markBadConn(err) - } - - mc := stmt.mc - - // Read Result - resLen, err := mc.readResultSetHeaderPacket() - if err != nil { - return nil, err - } - - rows := new(binaryRows) - - if resLen > 0 { - rows.mc = mc - rows.rs.columns, err = mc.readColumns(resLen) - } else { - rows.rs.done = true - - switch err := rows.NextResultSet(); err { - case nil, io.EOF: - return rows, nil - default: - return nil, err - } - } - - return rows, err -} - -type converter struct{} - -// ConvertValue mirrors the reference/default converter in database/sql/driver -// with _one_ exception. We support uint64 with their high bit and the default -// implementation does not. This function should be kept in sync with -// database/sql/driver defaultConverter.ConvertValue() except for that -// deliberate difference. -func (c converter) ConvertValue(v interface{}) (driver.Value, error) { - if driver.IsValue(v) { - return v, nil - } - - if vr, ok := v.(driver.Valuer); ok { - sv, err := callValuerValue(vr) - if err != nil { - return nil, err - } - if !driver.IsValue(sv) { - return nil, fmt.Errorf("non-Value type %T returned from Value", sv) - } - return sv, nil - } - - rv := reflect.ValueOf(v) - switch rv.Kind() { - case reflect.Ptr: - // indirect pointers - if rv.IsNil() { - return nil, nil - } else { - return c.ConvertValue(rv.Elem().Interface()) - } - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return rv.Int(), nil - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return rv.Uint(), nil - case reflect.Float32, reflect.Float64: - return rv.Float(), nil - case reflect.Bool: - return rv.Bool(), nil - case reflect.Slice: - ek := rv.Type().Elem().Kind() - if ek == reflect.Uint8 { - return rv.Bytes(), nil - } - return nil, fmt.Errorf("unsupported type %T, a slice of %s", v, ek) - case reflect.String: - return rv.String(), nil - } - return nil, fmt.Errorf("unsupported type %T, a %s", v, rv.Kind()) -} - -var valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem() - -// callValuerValue returns vr.Value(), with one exception: -// If vr.Value is an auto-generated method on a pointer type and the -// pointer is nil, it would panic at runtime in the panicwrap -// method. Treat it like nil instead. -// -// This is so people can implement driver.Value on value types and -// still use nil pointers to those types to mean nil/NULL, just like -// string/*string. -// -// This is an exact copy of the same-named unexported function from the -// database/sql package. -func callValuerValue(vr driver.Valuer) (v driver.Value, err error) { - if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Ptr && - rv.IsNil() && - rv.Type().Elem().Implements(valuerReflectType) { - return nil, nil - } - return vr.Value() -} diff --git a/vendor/github.com/go-sql-driver/mysql/transaction.go b/vendor/github.com/go-sql-driver/mysql/transaction.go deleted file mode 100644 index 417d7279..00000000 --- a/vendor/github.com/go-sql-driver/mysql/transaction.go +++ /dev/null @@ -1,31 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -type mysqlTx struct { - mc *mysqlConn -} - -func (tx *mysqlTx) Commit() (err error) { - if tx.mc == nil || tx.mc.closed.IsSet() { - return ErrInvalidConn - } - err = tx.mc.exec("COMMIT") - tx.mc = nil - return -} - -func (tx *mysqlTx) Rollback() (err error) { - if tx.mc == nil || tx.mc.closed.IsSet() { - return ErrInvalidConn - } - err = tx.mc.exec("ROLLBACK") - tx.mc = nil - return -} diff --git a/vendor/github.com/go-sql-driver/mysql/utils.go b/vendor/github.com/go-sql-driver/mysql/utils.go deleted file mode 100644 index 9552e80b..00000000 --- a/vendor/github.com/go-sql-driver/mysql/utils.go +++ /dev/null @@ -1,701 +0,0 @@ -// Go MySQL Driver - A MySQL-Driver for Go's database/sql package -// -// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -package mysql - -import ( - "crypto/tls" - "database/sql" - "database/sql/driver" - "encoding/binary" - "errors" - "fmt" - "io" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" -) - -// Registry for custom tls.Configs -var ( - tlsConfigLock sync.RWMutex - tlsConfigRegistry map[string]*tls.Config -) - -// RegisterTLSConfig registers a custom tls.Config to be used with sql.Open. -// Use the key as a value in the DSN where tls=value. -// -// Note: The provided tls.Config is exclusively owned by the driver after -// registering it. -// -// rootCertPool := x509.NewCertPool() -// pem, err := ioutil.ReadFile("/path/ca-cert.pem") -// if err != nil { -// log.Fatal(err) -// } -// if ok := rootCertPool.AppendCertsFromPEM(pem); !ok { -// log.Fatal("Failed to append PEM.") -// } -// clientCert := make([]tls.Certificate, 0, 1) -// certs, err := tls.LoadX509KeyPair("/path/client-cert.pem", "/path/client-key.pem") -// if err != nil { -// log.Fatal(err) -// } -// clientCert = append(clientCert, certs) -// mysql.RegisterTLSConfig("custom", &tls.Config{ -// RootCAs: rootCertPool, -// Certificates: clientCert, -// }) -// db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom") -// -func RegisterTLSConfig(key string, config *tls.Config) error { - if _, isBool := readBool(key); isBool || strings.ToLower(key) == "skip-verify" || strings.ToLower(key) == "preferred" { - return fmt.Errorf("key '%s' is reserved", key) - } - - tlsConfigLock.Lock() - if tlsConfigRegistry == nil { - tlsConfigRegistry = make(map[string]*tls.Config) - } - - tlsConfigRegistry[key] = config - tlsConfigLock.Unlock() - return nil -} - -// DeregisterTLSConfig removes the tls.Config associated with key. -func DeregisterTLSConfig(key string) { - tlsConfigLock.Lock() - if tlsConfigRegistry != nil { - delete(tlsConfigRegistry, key) - } - tlsConfigLock.Unlock() -} - -func getTLSConfigClone(key string) (config *tls.Config) { - tlsConfigLock.RLock() - if v, ok := tlsConfigRegistry[key]; ok { - config = v.Clone() - } - tlsConfigLock.RUnlock() - return -} - -// Returns the bool value of the input. -// The 2nd return value indicates if the input was a valid bool value -func readBool(input string) (value bool, valid bool) { - switch input { - case "1", "true", "TRUE", "True": - return true, true - case "0", "false", "FALSE", "False": - return false, true - } - - // Not a valid bool value - return -} - -/****************************************************************************** -* Time related utils * -******************************************************************************/ - -func parseDateTime(str string, loc *time.Location) (t time.Time, err error) { - base := "0000-00-00 00:00:00.0000000" - switch len(str) { - case 10, 19, 21, 22, 23, 24, 25, 26: // up to "YYYY-MM-DD HH:MM:SS.MMMMMM" - if str == base[:len(str)] { - return - } - t, err = time.Parse(timeFormat[:len(str)], str) - default: - err = fmt.Errorf("invalid time string: %s", str) - return - } - - // Adjust location - if err == nil && loc != time.UTC { - y, mo, d := t.Date() - h, mi, s := t.Clock() - t, err = time.Date(y, mo, d, h, mi, s, t.Nanosecond(), loc), nil - } - - return -} - -func parseBinaryDateTime(num uint64, data []byte, loc *time.Location) (driver.Value, error) { - switch num { - case 0: - return time.Time{}, nil - case 4: - return time.Date( - int(binary.LittleEndian.Uint16(data[:2])), // year - time.Month(data[2]), // month - int(data[3]), // day - 0, 0, 0, 0, - loc, - ), nil - case 7: - return time.Date( - int(binary.LittleEndian.Uint16(data[:2])), // year - time.Month(data[2]), // month - int(data[3]), // day - int(data[4]), // hour - int(data[5]), // minutes - int(data[6]), // seconds - 0, - loc, - ), nil - case 11: - return time.Date( - int(binary.LittleEndian.Uint16(data[:2])), // year - time.Month(data[2]), // month - int(data[3]), // day - int(data[4]), // hour - int(data[5]), // minutes - int(data[6]), // seconds - int(binary.LittleEndian.Uint32(data[7:11]))*1000, // nanoseconds - loc, - ), nil - } - return nil, fmt.Errorf("invalid DATETIME packet length %d", num) -} - -// zeroDateTime is used in formatBinaryDateTime to avoid an allocation -// if the DATE or DATETIME has the zero value. -// It must never be changed. -// The current behavior depends on database/sql copying the result. -var zeroDateTime = []byte("0000-00-00 00:00:00.000000") - -const digits01 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" -const digits10 = "0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999" - -func appendMicrosecs(dst, src []byte, decimals int) []byte { - if decimals <= 0 { - return dst - } - if len(src) == 0 { - return append(dst, ".000000"[:decimals+1]...) - } - - microsecs := binary.LittleEndian.Uint32(src[:4]) - p1 := byte(microsecs / 10000) - microsecs -= 10000 * uint32(p1) - p2 := byte(microsecs / 100) - microsecs -= 100 * uint32(p2) - p3 := byte(microsecs) - - switch decimals { - default: - return append(dst, '.', - digits10[p1], digits01[p1], - digits10[p2], digits01[p2], - digits10[p3], digits01[p3], - ) - case 1: - return append(dst, '.', - digits10[p1], - ) - case 2: - return append(dst, '.', - digits10[p1], digits01[p1], - ) - case 3: - return append(dst, '.', - digits10[p1], digits01[p1], - digits10[p2], - ) - case 4: - return append(dst, '.', - digits10[p1], digits01[p1], - digits10[p2], digits01[p2], - ) - case 5: - return append(dst, '.', - digits10[p1], digits01[p1], - digits10[p2], digits01[p2], - digits10[p3], - ) - } -} - -func formatBinaryDateTime(src []byte, length uint8) (driver.Value, error) { - // length expects the deterministic length of the zero value, - // negative time and 100+ hours are automatically added if needed - if len(src) == 0 { - return zeroDateTime[:length], nil - } - var dst []byte // return value - var p1, p2, p3 byte // current digit pair - - switch length { - case 10, 19, 21, 22, 23, 24, 25, 26: - default: - t := "DATE" - if length > 10 { - t += "TIME" - } - return nil, fmt.Errorf("illegal %s length %d", t, length) - } - switch len(src) { - case 4, 7, 11: - default: - t := "DATE" - if length > 10 { - t += "TIME" - } - return nil, fmt.Errorf("illegal %s packet length %d", t, len(src)) - } - dst = make([]byte, 0, length) - // start with the date - year := binary.LittleEndian.Uint16(src[:2]) - pt := year / 100 - p1 = byte(year - 100*uint16(pt)) - p2, p3 = src[2], src[3] - dst = append(dst, - digits10[pt], digits01[pt], - digits10[p1], digits01[p1], '-', - digits10[p2], digits01[p2], '-', - digits10[p3], digits01[p3], - ) - if length == 10 { - return dst, nil - } - if len(src) == 4 { - return append(dst, zeroDateTime[10:length]...), nil - } - dst = append(dst, ' ') - p1 = src[4] // hour - src = src[5:] - - // p1 is 2-digit hour, src is after hour - p2, p3 = src[0], src[1] - dst = append(dst, - digits10[p1], digits01[p1], ':', - digits10[p2], digits01[p2], ':', - digits10[p3], digits01[p3], - ) - return appendMicrosecs(dst, src[2:], int(length)-20), nil -} - -func formatBinaryTime(src []byte, length uint8) (driver.Value, error) { - // length expects the deterministic length of the zero value, - // negative time and 100+ hours are automatically added if needed - if len(src) == 0 { - return zeroDateTime[11 : 11+length], nil - } - var dst []byte // return value - - switch length { - case - 8, // time (can be up to 10 when negative and 100+ hours) - 10, 11, 12, 13, 14, 15: // time with fractional seconds - default: - return nil, fmt.Errorf("illegal TIME length %d", length) - } - switch len(src) { - case 8, 12: - default: - return nil, fmt.Errorf("invalid TIME packet length %d", len(src)) - } - // +2 to enable negative time and 100+ hours - dst = make([]byte, 0, length+2) - if src[0] == 1 { - dst = append(dst, '-') - } - days := binary.LittleEndian.Uint32(src[1:5]) - hours := int64(days)*24 + int64(src[5]) - - if hours >= 100 { - dst = strconv.AppendInt(dst, hours, 10) - } else { - dst = append(dst, digits10[hours], digits01[hours]) - } - - min, sec := src[6], src[7] - dst = append(dst, ':', - digits10[min], digits01[min], ':', - digits10[sec], digits01[sec], - ) - return appendMicrosecs(dst, src[8:], int(length)-9), nil -} - -/****************************************************************************** -* Convert from and to bytes * -******************************************************************************/ - -func uint64ToBytes(n uint64) []byte { - return []byte{ - byte(n), - byte(n >> 8), - byte(n >> 16), - byte(n >> 24), - byte(n >> 32), - byte(n >> 40), - byte(n >> 48), - byte(n >> 56), - } -} - -func uint64ToString(n uint64) []byte { - var a [20]byte - i := 20 - - // U+0030 = 0 - // ... - // U+0039 = 9 - - var q uint64 - for n >= 10 { - i-- - q = n / 10 - a[i] = uint8(n-q*10) + 0x30 - n = q - } - - i-- - a[i] = uint8(n) + 0x30 - - return a[i:] -} - -// treats string value as unsigned integer representation -func stringToInt(b []byte) int { - val := 0 - for i := range b { - val *= 10 - val += int(b[i] - 0x30) - } - return val -} - -// returns the string read as a bytes slice, wheter the value is NULL, -// the number of bytes read and an error, in case the string is longer than -// the input slice -func readLengthEncodedString(b []byte) ([]byte, bool, int, error) { - // Get length - num, isNull, n := readLengthEncodedInteger(b) - if num < 1 { - return b[n:n], isNull, n, nil - } - - n += int(num) - - // Check data length - if len(b) >= n { - return b[n-int(num) : n : n], false, n, nil - } - return nil, false, n, io.EOF -} - -// returns the number of bytes skipped and an error, in case the string is -// longer than the input slice -func skipLengthEncodedString(b []byte) (int, error) { - // Get length - num, _, n := readLengthEncodedInteger(b) - if num < 1 { - return n, nil - } - - n += int(num) - - // Check data length - if len(b) >= n { - return n, nil - } - return n, io.EOF -} - -// returns the number read, whether the value is NULL and the number of bytes read -func readLengthEncodedInteger(b []byte) (uint64, bool, int) { - // See issue #349 - if len(b) == 0 { - return 0, true, 1 - } - - switch b[0] { - // 251: NULL - case 0xfb: - return 0, true, 1 - - // 252: value of following 2 - case 0xfc: - return uint64(b[1]) | uint64(b[2])<<8, false, 3 - - // 253: value of following 3 - case 0xfd: - return uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16, false, 4 - - // 254: value of following 8 - case 0xfe: - return uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16 | - uint64(b[4])<<24 | uint64(b[5])<<32 | uint64(b[6])<<40 | - uint64(b[7])<<48 | uint64(b[8])<<56, - false, 9 - } - - // 0-250: value of first byte - return uint64(b[0]), false, 1 -} - -// encodes a uint64 value and appends it to the given bytes slice -func appendLengthEncodedInteger(b []byte, n uint64) []byte { - switch { - case n <= 250: - return append(b, byte(n)) - - case n <= 0xffff: - return append(b, 0xfc, byte(n), byte(n>>8)) - - case n <= 0xffffff: - return append(b, 0xfd, byte(n), byte(n>>8), byte(n>>16)) - } - return append(b, 0xfe, byte(n), byte(n>>8), byte(n>>16), byte(n>>24), - byte(n>>32), byte(n>>40), byte(n>>48), byte(n>>56)) -} - -// reserveBuffer checks cap(buf) and expand buffer to len(buf) + appendSize. -// If cap(buf) is not enough, reallocate new buffer. -func reserveBuffer(buf []byte, appendSize int) []byte { - newSize := len(buf) + appendSize - if cap(buf) < newSize { - // Grow buffer exponentially - newBuf := make([]byte, len(buf)*2+appendSize) - copy(newBuf, buf) - buf = newBuf - } - return buf[:newSize] -} - -// escapeBytesBackslash escapes []byte with backslashes (\) -// This escapes the contents of a string (provided as []byte) by adding backslashes before special -// characters, and turning others into specific escape sequences, such as -// turning newlines into \n and null bytes into \0. -// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L823-L932 -func escapeBytesBackslash(buf, v []byte) []byte { - pos := len(buf) - buf = reserveBuffer(buf, len(v)*2) - - for _, c := range v { - switch c { - case '\x00': - buf[pos] = '\\' - buf[pos+1] = '0' - pos += 2 - case '\n': - buf[pos] = '\\' - buf[pos+1] = 'n' - pos += 2 - case '\r': - buf[pos] = '\\' - buf[pos+1] = 'r' - pos += 2 - case '\x1a': - buf[pos] = '\\' - buf[pos+1] = 'Z' - pos += 2 - case '\'': - buf[pos] = '\\' - buf[pos+1] = '\'' - pos += 2 - case '"': - buf[pos] = '\\' - buf[pos+1] = '"' - pos += 2 - case '\\': - buf[pos] = '\\' - buf[pos+1] = '\\' - pos += 2 - default: - buf[pos] = c - pos++ - } - } - - return buf[:pos] -} - -// escapeStringBackslash is similar to escapeBytesBackslash but for string. -func escapeStringBackslash(buf []byte, v string) []byte { - pos := len(buf) - buf = reserveBuffer(buf, len(v)*2) - - for i := 0; i < len(v); i++ { - c := v[i] - switch c { - case '\x00': - buf[pos] = '\\' - buf[pos+1] = '0' - pos += 2 - case '\n': - buf[pos] = '\\' - buf[pos+1] = 'n' - pos += 2 - case '\r': - buf[pos] = '\\' - buf[pos+1] = 'r' - pos += 2 - case '\x1a': - buf[pos] = '\\' - buf[pos+1] = 'Z' - pos += 2 - case '\'': - buf[pos] = '\\' - buf[pos+1] = '\'' - pos += 2 - case '"': - buf[pos] = '\\' - buf[pos+1] = '"' - pos += 2 - case '\\': - buf[pos] = '\\' - buf[pos+1] = '\\' - pos += 2 - default: - buf[pos] = c - pos++ - } - } - - return buf[:pos] -} - -// escapeBytesQuotes escapes apostrophes in []byte by doubling them up. -// This escapes the contents of a string by doubling up any apostrophes that -// it contains. This is used when the NO_BACKSLASH_ESCAPES SQL_MODE is in -// effect on the server. -// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L963-L1038 -func escapeBytesQuotes(buf, v []byte) []byte { - pos := len(buf) - buf = reserveBuffer(buf, len(v)*2) - - for _, c := range v { - if c == '\'' { - buf[pos] = '\'' - buf[pos+1] = '\'' - pos += 2 - } else { - buf[pos] = c - pos++ - } - } - - return buf[:pos] -} - -// escapeStringQuotes is similar to escapeBytesQuotes but for string. -func escapeStringQuotes(buf []byte, v string) []byte { - pos := len(buf) - buf = reserveBuffer(buf, len(v)*2) - - for i := 0; i < len(v); i++ { - c := v[i] - if c == '\'' { - buf[pos] = '\'' - buf[pos+1] = '\'' - pos += 2 - } else { - buf[pos] = c - pos++ - } - } - - return buf[:pos] -} - -/****************************************************************************** -* Sync utils * -******************************************************************************/ - -// noCopy may be embedded into structs which must not be copied -// after the first use. -// -// See https://github.com/golang/go/issues/8005#issuecomment-190753527 -// for details. -type noCopy struct{} - -// Lock is a no-op used by -copylocks checker from `go vet`. -func (*noCopy) Lock() {} - -// atomicBool is a wrapper around uint32 for usage as a boolean value with -// atomic access. -type atomicBool struct { - _noCopy noCopy - value uint32 -} - -// IsSet returns whether the current boolean value is true -func (ab *atomicBool) IsSet() bool { - return atomic.LoadUint32(&ab.value) > 0 -} - -// Set sets the value of the bool regardless of the previous value -func (ab *atomicBool) Set(value bool) { - if value { - atomic.StoreUint32(&ab.value, 1) - } else { - atomic.StoreUint32(&ab.value, 0) - } -} - -// TrySet sets the value of the bool and returns whether the value changed -func (ab *atomicBool) TrySet(value bool) bool { - if value { - return atomic.SwapUint32(&ab.value, 1) == 0 - } - return atomic.SwapUint32(&ab.value, 0) > 0 -} - -// atomicError is a wrapper for atomically accessed error values -type atomicError struct { - _noCopy noCopy - value atomic.Value -} - -// Set sets the error value regardless of the previous value. -// The value must not be nil -func (ae *atomicError) Set(value error) { - ae.value.Store(value) -} - -// Value returns the current error value -func (ae *atomicError) Value() error { - if v := ae.value.Load(); v != nil { - // this will panic if the value doesn't implement the error interface - return v.(error) - } - return nil -} - -func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) { - dargs := make([]driver.Value, len(named)) - for n, param := range named { - if len(param.Name) > 0 { - // TODO: support the use of Named Parameters #561 - return nil, errors.New("mysql: driver does not support the use of Named Parameters") - } - dargs[n] = param.Value - } - return dargs, nil -} - -func mapIsolationLevel(level driver.IsolationLevel) (string, error) { - switch sql.IsolationLevel(level) { - case sql.LevelRepeatableRead: - return "REPEATABLE READ", nil - case sql.LevelReadCommitted: - return "READ COMMITTED", nil - case sql.LevelReadUncommitted: - return "READ UNCOMMITTED", nil - case sql.LevelSerializable: - return "SERIALIZABLE", nil - default: - return "", fmt.Errorf("mysql: unsupported isolation level: %v", level) - } -} diff --git a/vendor/github.com/golang-sql/civil/CONTRIBUTING.md b/vendor/github.com/golang-sql/civil/CONTRIBUTING.md deleted file mode 100644 index d0635c3a..00000000 --- a/vendor/github.com/golang-sql/civil/CONTRIBUTING.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributing - -1. Sign one of the contributor license agreements below. - -#### Running - -Once you've done the necessary setup, you can run the integration tests by -running: - -``` sh -$ go test -v github.com/golang-sql/civil -``` - -## Contributor License Agreements - -Before we can accept your pull requests you'll need to sign a Contributor -License Agreement (CLA): - -- **If you are an individual writing original source code** and **you own the -intellectual property**, then you'll need to sign an [individual CLA][indvcla]. -- **If you work for a company that wants to allow you to contribute your -work**, then you'll need to sign a [corporate CLA][corpcla]. - -You can sign these electronically (just scroll to the bottom). After that, -we'll be able to accept your pull requests. - -## Contributor Code of Conduct - -As contributors and maintainers of this project, -and in the interest of fostering an open and welcoming community, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. - -We are committed to making participation in this project -a harassment-free experience for everyone, -regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, -such as physical or electronic -addresses, without explicit permission -* Other unethical or unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -By adopting this Code of Conduct, -project maintainers commit themselves to fairly and consistently -applying these principles to every aspect of managing this project. -Project maintainers who do not follow or enforce the Code of Conduct -may be permanently removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue -or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, -available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) - -[gcloudcli]: https://developers.google.com/cloud/sdk/gcloud/ -[indvcla]: https://developers.google.com/open-source/cla/individual -[corpcla]: https://developers.google.com/open-source/cla/corporate \ No newline at end of file diff --git a/vendor/github.com/golang-sql/civil/LICENSE b/vendor/github.com/golang-sql/civil/LICENSE deleted file mode 100644 index 7a4a3ea2..00000000 --- a/vendor/github.com/golang-sql/civil/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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] - - 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. \ No newline at end of file diff --git a/vendor/github.com/golang-sql/civil/README.md b/vendor/github.com/golang-sql/civil/README.md deleted file mode 100644 index 3a7956ec..00000000 --- a/vendor/github.com/golang-sql/civil/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Civil Date and Time - -[![GoDoc](https://godoc.org/github.com/golang-sql/civil?status.svg)](https://godoc.org/github.com/golang-sql/civil) - -Civil provides Date, Time of Day, and DateTime data types. - -While there are many uses, using specific types when working -with databases make is conceptually eaiser to understand what value -is set in the remote system. - -## Source - -This civil package was extracted and forked from `cloud.google.com/go/civil`. -As such the license and contributing requirements remain the same as that -module. diff --git a/vendor/github.com/golang-sql/civil/civil.go b/vendor/github.com/golang-sql/civil/civil.go deleted file mode 100644 index 29272ef2..00000000 --- a/vendor/github.com/golang-sql/civil/civil.go +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2016 Google LLC -// -// 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 civil implements types for civil time, a time-zone-independent -// representation of time that follows the rules of the proleptic -// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second -// minutes. -// -// Because they lack location information, these types do not represent unique -// moments or intervals of time. Use time.Time for that purpose. -package civil - -import ( - "fmt" - "time" -) - -// A Date represents a date (year, month, day). -// -// This type does not include location information, and therefore does not -// describe a unique 24-hour timespan. -type Date struct { - Year int // Year (e.g., 2014). - Month time.Month // Month of the year (January = 1, ...). - Day int // Day of the month, starting at 1. -} - -// DateOf returns the Date in which a time occurs in that time's location. -func DateOf(t time.Time) Date { - var d Date - d.Year, d.Month, d.Day = t.Date() - return d -} - -// ParseDate parses a string in RFC3339 full-date format and returns the date value it represents. -func ParseDate(s string) (Date, error) { - t, err := time.Parse("2006-01-02", s) - if err != nil { - return Date{}, err - } - return DateOf(t), nil -} - -// String returns the date in RFC3339 full-date format. -func (d Date) String() string { - return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day) -} - -// IsValid reports whether the date is valid. -func (d Date) IsValid() bool { - return DateOf(d.In(time.UTC)) == d -} - -// In returns the time corresponding to time 00:00:00 of the date in the location. -// -// In is always consistent with time.Date, even when time.Date returns a time -// on a different day. For example, if loc is America/Indiana/Vincennes, then both -// time.Date(1955, time.May, 1, 0, 0, 0, 0, loc) -// and -// civil.Date{Year: 1955, Month: time.May, Day: 1}.In(loc) -// return 23:00:00 on April 30, 1955. -// -// In panics if loc is nil. -func (d Date) In(loc *time.Location) time.Time { - return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc) -} - -// AddDays returns the date that is n days in the future. -// n can also be negative to go into the past. -func (d Date) AddDays(n int) Date { - return DateOf(d.In(time.UTC).AddDate(0, 0, n)) -} - -// DaysSince returns the signed number of days between the date and s, not including the end day. -// This is the inverse operation to AddDays. -func (d Date) DaysSince(s Date) (days int) { - // We convert to Unix time so we do not have to worry about leap seconds: - // Unix time increases by exactly 86400 seconds per day. - deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix() - return int(deltaUnix / 86400) -} - -// Before reports whether d1 occurs before d2. -func (d1 Date) Before(d2 Date) bool { - if d1.Year != d2.Year { - return d1.Year < d2.Year - } - if d1.Month != d2.Month { - return d1.Month < d2.Month - } - return d1.Day < d2.Day -} - -// After reports whether d1 occurs after d2. -func (d1 Date) After(d2 Date) bool { - return d2.Before(d1) -} - -// MarshalText implements the encoding.TextMarshaler interface. -// The output is the result of d.String(). -func (d Date) MarshalText() ([]byte, error) { - return []byte(d.String()), nil -} - -// UnmarshalText implements the encoding.TextUnmarshaler interface. -// The date is expected to be a string in a format accepted by ParseDate. -func (d *Date) UnmarshalText(data []byte) error { - var err error - *d, err = ParseDate(string(data)) - return err -} - -// A Time represents a time with nanosecond precision. -// -// This type does not include location information, and therefore does not -// describe a unique moment in time. -// -// This type exists to represent the TIME type in storage-based APIs like BigQuery. -// Most operations on Times are unlikely to be meaningful. Prefer the DateTime type. -type Time struct { - Hour int // The hour of the day in 24-hour format; range [0-23] - Minute int // The minute of the hour; range [0-59] - Second int // The second of the minute; range [0-59] - Nanosecond int // The nanosecond of the second; range [0-999999999] -} - -// TimeOf returns the Time representing the time of day in which a time occurs -// in that time's location. It ignores the date. -func TimeOf(t time.Time) Time { - var tm Time - tm.Hour, tm.Minute, tm.Second = t.Clock() - tm.Nanosecond = t.Nanosecond() - return tm -} - -// ParseTime parses a string and returns the time value it represents. -// ParseTime accepts an extended form of the RFC3339 partial-time format. After -// the HH:MM:SS part of the string, an optional fractional part may appear, -// consisting of a decimal point followed by one to nine decimal digits. -// (RFC3339 admits only one digit after the decimal point). -func ParseTime(s string) (Time, error) { - t, err := time.Parse("15:04:05.999999999", s) - if err != nil { - return Time{}, err - } - return TimeOf(t), nil -} - -// String returns the date in the format described in ParseTime. If Nanoseconds -// is zero, no fractional part will be generated. Otherwise, the result will -// end with a fractional part consisting of a decimal point and nine digits. -func (t Time) String() string { - s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second) - if t.Nanosecond == 0 { - return s - } - return s + fmt.Sprintf(".%09d", t.Nanosecond) -} - -// IsValid reports whether the time is valid. -func (t Time) IsValid() bool { - // Construct a non-zero time. - tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC) - return TimeOf(tm) == t -} - -// MarshalText implements the encoding.TextMarshaler interface. -// The output is the result of t.String(). -func (t Time) MarshalText() ([]byte, error) { - return []byte(t.String()), nil -} - -// UnmarshalText implements the encoding.TextUnmarshaler interface. -// The time is expected to be a string in a format accepted by ParseTime. -func (t *Time) UnmarshalText(data []byte) error { - var err error - *t, err = ParseTime(string(data)) - return err -} - -// A DateTime represents a date and time. -// -// This type does not include location information, and therefore does not -// describe a unique moment in time. -type DateTime struct { - Date Date - Time Time -} - -// Note: We deliberately do not embed Date into DateTime, to avoid promoting AddDays and Sub. - -// DateTimeOf returns the DateTime in which a time occurs in that time's location. -func DateTimeOf(t time.Time) DateTime { - return DateTime{ - Date: DateOf(t), - Time: TimeOf(t), - } -} - -// ParseDateTime parses a string and returns the DateTime it represents. -// ParseDateTime accepts a variant of the RFC3339 date-time format that omits -// the time offset but includes an optional fractional time, as described in -// ParseTime. Informally, the accepted format is -// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF] -// where the 'T' may be a lower-case 't'. -func ParseDateTime(s string) (DateTime, error) { - t, err := time.Parse("2006-01-02T15:04:05.999999999", s) - if err != nil { - t, err = time.Parse("2006-01-02t15:04:05.999999999", s) - if err != nil { - return DateTime{}, err - } - } - return DateTimeOf(t), nil -} - -// String returns the date in the format described in ParseDate. -func (dt DateTime) String() string { - return dt.Date.String() + "T" + dt.Time.String() -} - -// IsValid reports whether the datetime is valid. -func (dt DateTime) IsValid() bool { - return dt.Date.IsValid() && dt.Time.IsValid() -} - -// In returns the time corresponding to the DateTime in the given location. -// -// If the time is missing or ambigous at the location, In returns the same -// result as time.Date. For example, if loc is America/Indiana/Vincennes, then -// both -// time.Date(1955, time.May, 1, 0, 30, 0, 0, loc) -// and -// civil.DateTime{ -// civil.Date{Year: 1955, Month: time.May, Day: 1}}, -// civil.Time{Minute: 30}}.In(loc) -// return 23:30:00 on April 30, 1955. -// -// In panics if loc is nil. -func (dt DateTime) In(loc *time.Location) time.Time { - return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc) -} - -// Before reports whether dt1 occurs before dt2. -func (dt1 DateTime) Before(dt2 DateTime) bool { - return dt1.In(time.UTC).Before(dt2.In(time.UTC)) -} - -// After reports whether dt1 occurs after dt2. -func (dt1 DateTime) After(dt2 DateTime) bool { - return dt2.Before(dt1) -} - -// MarshalText implements the encoding.TextMarshaler interface. -// The output is the result of dt.String(). -func (dt DateTime) MarshalText() ([]byte, error) { - return []byte(dt.String()), nil -} - -// UnmarshalText implements the encoding.TextUnmarshaler interface. -// The datetime is expected to be a string in a format accepted by ParseDateTime -func (dt *DateTime) UnmarshalText(data []byte) error { - var err error - *dt, err = ParseDateTime(string(data)) - return err -} diff --git a/vendor/github.com/golang/glog/LICENSE b/vendor/github.com/golang/glog/LICENSE deleted file mode 100644 index 37ec93a1..00000000 --- a/vendor/github.com/golang/glog/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -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] - - 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. diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README deleted file mode 100644 index 387b4eb6..00000000 --- a/vendor/github.com/golang/glog/README +++ /dev/null @@ -1,44 +0,0 @@ -glog -==== - -Leveled execution logs for Go. - -This is an efficient pure Go implementation of leveled logs in the -manner of the open source C++ package - https://github.com/google/glog - -By binding methods to booleans it is possible to use the log package -without paying the expense of evaluating the arguments to the log. -Through the -vmodule flag, the package also provides fine-grained -control over logging at the file level. - -The comment from glog.go introduces the ideas: - - Package glog implements logging analogous to the Google-internal - C++ INFO/ERROR/V setup. It provides functions Info, Warning, - Error, Fatal, plus formatting variants such as Infof. It - also provides V-style logging controlled by the -v and - -vmodule=file=2 flags. - - Basic examples: - - glog.Info("Prepare to repel boarders") - - glog.Fatalf("Initialization failed: %s", err) - - See the documentation for the V function for an explanation - of these examples: - - if glog.V(2) { - glog.Info("Starting transaction...") - } - - glog.V(2).Infoln("Processed", nItems, "elements") - - -The repository contains an open source version of the log package -used inside Google. The master copy of the source lives inside -Google, not here. The code in this repo is for export only and is not itself -under development. Feature requests will be ignored. - -Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/glog/glog.go b/vendor/github.com/golang/glog/glog.go deleted file mode 100644 index 54bd7afd..00000000 --- a/vendor/github.com/golang/glog/glog.go +++ /dev/null @@ -1,1180 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// 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 glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. -// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as -// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. -// -// Basic examples: -// -// glog.Info("Prepare to repel boarders") -// -// glog.Fatalf("Initialization failed: %s", err) -// -// See the documentation for the V function for an explanation of these examples: -// -// if glog.V(2) { -// glog.Info("Starting transaction...") -// } -// -// glog.V(2).Infoln("Processed", nItems, "elements") -// -// Log output is buffered and written periodically using Flush. Programs -// should call Flush before exiting to guarantee all log output is written. -// -// By default, all log statements write to files in a temporary directory. -// This package provides several flags that modify this behavior. -// As a result, flag.Parse must be called before any logging is done. -// -// -logtostderr=false -// Logs are written to standard error instead of to files. -// -alsologtostderr=false -// Logs are written to standard error as well as to files. -// -stderrthreshold=ERROR -// Log events at or above this severity are logged to standard -// error as well as to files. -// -log_dir="" -// Log files will be written to this directory instead of the -// default temporary directory. -// -// Other flags provide aids to debugging. -// -// -log_backtrace_at="" -// When set to a file and line number holding a logging statement, -// such as -// -log_backtrace_at=gopherflakes.go:234 -// a stack trace will be written to the Info log whenever execution -// hits that statement. (Unlike with -vmodule, the ".go" must be -// present.) -// -v=0 -// Enable V-leveled logging at the specified level. -// -vmodule="" -// The syntax of the argument is a comma-separated list of pattern=N, -// where pattern is a literal file name (minus the ".go" suffix) or -// "glob" pattern and N is a V level. For instance, -// -vmodule=gopher*=3 -// sets the V level to 3 in all Go files whose names begin "gopher". -// -package glog - -import ( - "bufio" - "bytes" - "errors" - "flag" - "fmt" - "io" - stdLog "log" - "os" - "path/filepath" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" -) - -// severity identifies the sort of log: info, warning etc. It also implements -// the flag.Value interface. The -stderrthreshold flag is of type severity and -// should be modified only through the flag.Value interface. The values match -// the corresponding constants in C++. -type severity int32 // sync/atomic int32 - -// These constants identify the log levels in order of increasing severity. -// A message written to a high-severity log file is also written to each -// lower-severity log file. -const ( - infoLog severity = iota - warningLog - errorLog - fatalLog - numSeverity = 4 -) - -const severityChar = "IWEF" - -var severityName = []string{ - infoLog: "INFO", - warningLog: "WARNING", - errorLog: "ERROR", - fatalLog: "FATAL", -} - -// get returns the value of the severity. -func (s *severity) get() severity { - return severity(atomic.LoadInt32((*int32)(s))) -} - -// set sets the value of the severity. -func (s *severity) set(val severity) { - atomic.StoreInt32((*int32)(s), int32(val)) -} - -// String is part of the flag.Value interface. -func (s *severity) String() string { - return strconv.FormatInt(int64(*s), 10) -} - -// Get is part of the flag.Value interface. -func (s *severity) Get() interface{} { - return *s -} - -// Set is part of the flag.Value interface. -func (s *severity) Set(value string) error { - var threshold severity - // Is it a known name? - if v, ok := severityByName(value); ok { - threshold = v - } else { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - threshold = severity(v) - } - logging.stderrThreshold.set(threshold) - return nil -} - -func severityByName(s string) (severity, bool) { - s = strings.ToUpper(s) - for i, name := range severityName { - if name == s { - return severity(i), true - } - } - return 0, false -} - -// OutputStats tracks the number of output lines and bytes written. -type OutputStats struct { - lines int64 - bytes int64 -} - -// Lines returns the number of lines written. -func (s *OutputStats) Lines() int64 { - return atomic.LoadInt64(&s.lines) -} - -// Bytes returns the number of bytes written. -func (s *OutputStats) Bytes() int64 { - return atomic.LoadInt64(&s.bytes) -} - -// Stats tracks the number of lines of output and number of bytes -// per severity level. Values must be read with atomic.LoadInt64. -var Stats struct { - Info, Warning, Error OutputStats -} - -var severityStats = [numSeverity]*OutputStats{ - infoLog: &Stats.Info, - warningLog: &Stats.Warning, - errorLog: &Stats.Error, -} - -// Level is exported because it appears in the arguments to V and is -// the type of the v flag, which can be set programmatically. -// It's a distinct type because we want to discriminate it from logType. -// Variables of type level are only changed under logging.mu. -// The -v flag is read only with atomic ops, so the state of the logging -// module is consistent. - -// Level is treated as a sync/atomic int32. - -// Level specifies a level of verbosity for V logs. *Level implements -// flag.Value; the -v flag is of type Level and should be modified -// only through the flag.Value interface. -type Level int32 - -// get returns the value of the Level. -func (l *Level) get() Level { - return Level(atomic.LoadInt32((*int32)(l))) -} - -// set sets the value of the Level. -func (l *Level) set(val Level) { - atomic.StoreInt32((*int32)(l), int32(val)) -} - -// String is part of the flag.Value interface. -func (l *Level) String() string { - return strconv.FormatInt(int64(*l), 10) -} - -// Get is part of the flag.Value interface. -func (l *Level) Get() interface{} { - return *l -} - -// Set is part of the flag.Value interface. -func (l *Level) Set(value string) error { - v, err := strconv.Atoi(value) - if err != nil { - return err - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(Level(v), logging.vmodule.filter, false) - return nil -} - -// moduleSpec represents the setting of the -vmodule flag. -type moduleSpec struct { - filter []modulePat -} - -// modulePat contains a filter for the -vmodule flag. -// It holds a verbosity level and a file pattern to match. -type modulePat struct { - pattern string - literal bool // The pattern is a literal string - level Level -} - -// match reports whether the file matches the pattern. It uses a string -// comparison if the pattern contains no metacharacters. -func (m *modulePat) match(file string) bool { - if m.literal { - return file == m.pattern - } - match, _ := filepath.Match(m.pattern, file) - return match -} - -func (m *moduleSpec) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - var b bytes.Buffer - for i, f := range m.filter { - if i > 0 { - b.WriteRune(',') - } - fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) - } - return b.String() -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported. -func (m *moduleSpec) Get() interface{} { - return nil -} - -var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") - -// Syntax: -vmodule=recordio=2,file=1,gfs*=3 -func (m *moduleSpec) Set(value string) error { - var filter []modulePat - for _, pat := range strings.Split(value, ",") { - if len(pat) == 0 { - // Empty strings such as from a trailing comma can be ignored. - continue - } - patLev := strings.Split(pat, "=") - if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { - return errVmoduleSyntax - } - pattern := patLev[0] - v, err := strconv.Atoi(patLev[1]) - if err != nil { - return errors.New("syntax error: expect comma-separated list of filename=N") - } - if v < 0 { - return errors.New("negative value for vmodule level") - } - if v == 0 { - continue // Ignore. It's harmless but no point in paying the overhead. - } - // TODO: check syntax of filter? - filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) - } - logging.mu.Lock() - defer logging.mu.Unlock() - logging.setVState(logging.verbosity, filter, true) - return nil -} - -// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters -// that require filepath.Match to be called to match the pattern. -func isLiteral(pattern string) bool { - return !strings.ContainsAny(pattern, `\*?[]`) -} - -// traceLocation represents the setting of the -log_backtrace_at flag. -type traceLocation struct { - file string - line int -} - -// isSet reports whether the trace location has been specified. -// logging.mu is held. -func (t *traceLocation) isSet() bool { - return t.line > 0 -} - -// match reports whether the specified file and line matches the trace location. -// The argument file name is the full path, not the basename specified in the flag. -// logging.mu is held. -func (t *traceLocation) match(file string, line int) bool { - if t.line != line { - return false - } - if i := strings.LastIndex(file, "/"); i >= 0 { - file = file[i+1:] - } - return t.file == file -} - -func (t *traceLocation) String() string { - // Lock because the type is not atomic. TODO: clean this up. - logging.mu.Lock() - defer logging.mu.Unlock() - return fmt.Sprintf("%s:%d", t.file, t.line) -} - -// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the -// struct is not exported -func (t *traceLocation) Get() interface{} { - return nil -} - -var errTraceSyntax = errors.New("syntax error: expect file.go:234") - -// Syntax: -log_backtrace_at=gopherflakes.go:234 -// Note that unlike vmodule the file extension is included here. -func (t *traceLocation) Set(value string) error { - if value == "" { - // Unset. - t.line = 0 - t.file = "" - } - fields := strings.Split(value, ":") - if len(fields) != 2 { - return errTraceSyntax - } - file, line := fields[0], fields[1] - if !strings.Contains(file, ".") { - return errTraceSyntax - } - v, err := strconv.Atoi(line) - if err != nil { - return errTraceSyntax - } - if v <= 0 { - return errors.New("negative or zero value for level") - } - logging.mu.Lock() - defer logging.mu.Unlock() - t.line = v - t.file = file - return nil -} - -// flushSyncWriter is the interface satisfied by logging destinations. -type flushSyncWriter interface { - Flush() error - Sync() error - io.Writer -} - -func init() { - flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") - flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") - flag.Var(&logging.verbosity, "v", "log level for V logs") - flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") - flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") - flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") - - // Default stderrThreshold is ERROR. - logging.stderrThreshold = errorLog - - logging.setVState(0, nil, false) - go logging.flushDaemon() -} - -// Flush flushes all pending log I/O. -func Flush() { - logging.lockAndFlushAll() -} - -// loggingT collects all the global state of the logging setup. -type loggingT struct { - // Boolean flags. Not handled atomically because the flag.Value interface - // does not let us avoid the =true, and that shorthand is necessary for - // compatibility. TODO: does this matter enough to fix? Seems unlikely. - toStderr bool // The -logtostderr flag. - alsoToStderr bool // The -alsologtostderr flag. - - // Level flag. Handled atomically. - stderrThreshold severity // The -stderrthreshold flag. - - // freeList is a list of byte buffers, maintained under freeListMu. - freeList *buffer - // freeListMu maintains the free list. It is separate from the main mutex - // so buffers can be grabbed and printed to without holding the main lock, - // for better parallelization. - freeListMu sync.Mutex - - // mu protects the remaining elements of this structure and is - // used to synchronize logging. - mu sync.Mutex - // file holds writer for each of the log types. - file [numSeverity]flushSyncWriter - // pcs is used in V to avoid an allocation when computing the caller's PC. - pcs [1]uintptr - // vmap is a cache of the V Level for each V() call site, identified by PC. - // It is wiped whenever the vmodule flag changes state. - vmap map[uintptr]Level - // filterLength stores the length of the vmodule filter chain. If greater - // than zero, it means vmodule is enabled. It may be read safely - // using sync.LoadInt32, but is only modified under mu. - filterLength int32 - // traceLocation is the state of the -log_backtrace_at flag. - traceLocation traceLocation - // These flags are modified only under lock, although verbosity may be fetched - // safely using atomic.LoadInt32. - vmodule moduleSpec // The state of the -vmodule flag. - verbosity Level // V logging level, the value of the -v flag/ -} - -// buffer holds a byte Buffer for reuse. The zero value is ready for use. -type buffer struct { - bytes.Buffer - tmp [64]byte // temporary byte array for creating headers. - next *buffer -} - -var logging loggingT - -// setVState sets a consistent state for V logging. -// l.mu is held. -func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { - // Turn verbosity off so V will not fire while we are in transition. - logging.verbosity.set(0) - // Ditto for filter length. - atomic.StoreInt32(&logging.filterLength, 0) - - // Set the new filters and wipe the pc->Level map if the filter has changed. - if setFilter { - logging.vmodule.filter = filter - logging.vmap = make(map[uintptr]Level) - } - - // Things are consistent now, so enable filtering and verbosity. - // They are enabled in order opposite to that in V. - atomic.StoreInt32(&logging.filterLength, int32(len(filter))) - logging.verbosity.set(verbosity) -} - -// getBuffer returns a new, ready-to-use buffer. -func (l *loggingT) getBuffer() *buffer { - l.freeListMu.Lock() - b := l.freeList - if b != nil { - l.freeList = b.next - } - l.freeListMu.Unlock() - if b == nil { - b = new(buffer) - } else { - b.next = nil - b.Reset() - } - return b -} - -// putBuffer returns a buffer to the free list. -func (l *loggingT) putBuffer(b *buffer) { - if b.Len() >= 256 { - // Let big buffers die a natural death. - return - } - l.freeListMu.Lock() - b.next = l.freeList - l.freeList = b - l.freeListMu.Unlock() -} - -var timeNow = time.Now // Stubbed out for testing. - -/* -header formats a log header as defined by the C++ implementation. -It returns a buffer containing the formatted header and the user's file and line number. -The depth specifies how many stack frames above lives the source line to be identified in the log message. - -Log lines have this form: - Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... -where the fields are defined as follows: - L A single character, representing the log level (eg 'I' for INFO) - mm The month (zero padded; ie May is '05') - dd The day (zero padded) - hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds - threadid The space-padded thread ID as returned by GetTID() - file The file name - line The line number - msg The user-supplied message -*/ -func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { - _, file, line, ok := runtime.Caller(3 + depth) - if !ok { - file = "???" - line = 1 - } else { - slash := strings.LastIndex(file, "/") - if slash >= 0 { - file = file[slash+1:] - } - } - return l.formatHeader(s, file, line), file, line -} - -// formatHeader formats a log header using the provided file name and line number. -func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { - now := timeNow() - if line < 0 { - line = 0 // not a real line number, but acceptable to someDigits - } - if s > fatalLog { - s = infoLog // for safety. - } - buf := l.getBuffer() - - // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. - // It's worth about 3X. Fprintf is hard. - _, month, day := now.Date() - hour, minute, second := now.Clock() - // Lmmdd hh:mm:ss.uuuuuu threadid file:line] - buf.tmp[0] = severityChar[s] - buf.twoDigits(1, int(month)) - buf.twoDigits(3, day) - buf.tmp[5] = ' ' - buf.twoDigits(6, hour) - buf.tmp[8] = ':' - buf.twoDigits(9, minute) - buf.tmp[11] = ':' - buf.twoDigits(12, second) - buf.tmp[14] = '.' - buf.nDigits(6, 15, now.Nanosecond()/1000, '0') - buf.tmp[21] = ' ' - buf.nDigits(7, 22, pid, ' ') // TODO: should be TID - buf.tmp[29] = ' ' - buf.Write(buf.tmp[:30]) - buf.WriteString(file) - buf.tmp[0] = ':' - n := buf.someDigits(1, line) - buf.tmp[n+1] = ']' - buf.tmp[n+2] = ' ' - buf.Write(buf.tmp[:n+3]) - return buf -} - -// Some custom tiny helper functions to print the log header efficiently. - -const digits = "0123456789" - -// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. -func (buf *buffer) twoDigits(i, d int) { - buf.tmp[i+1] = digits[d%10] - d /= 10 - buf.tmp[i] = digits[d%10] -} - -// nDigits formats an n-digit integer at buf.tmp[i], -// padding with pad on the left. -// It assumes d >= 0. -func (buf *buffer) nDigits(n, i, d int, pad byte) { - j := n - 1 - for ; j >= 0 && d > 0; j-- { - buf.tmp[i+j] = digits[d%10] - d /= 10 - } - for ; j >= 0; j-- { - buf.tmp[i+j] = pad - } -} - -// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. -func (buf *buffer) someDigits(i, d int) int { - // Print into the top, then copy down. We know there's space for at least - // a 10-digit number. - j := len(buf.tmp) - for { - j-- - buf.tmp[j] = digits[d%10] - d /= 10 - if d == 0 { - break - } - } - return copy(buf.tmp[i:], buf.tmp[j:]) -} - -func (l *loggingT) println(s severity, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintln(buf, args...) - l.output(s, buf, file, line, false) -} - -func (l *loggingT) print(s severity, args ...interface{}) { - l.printDepth(s, 1, args...) -} - -func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { - buf, file, line := l.header(s, depth) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -func (l *loggingT) printf(s severity, format string, args ...interface{}) { - buf, file, line := l.header(s, 0) - fmt.Fprintf(buf, format, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, false) -} - -// printWithFileLine behaves like print but uses the provided file and line number. If -// alsoLogToStderr is true, the log message always appears on standard error; it -// will also appear in the log file unless --logtostderr is set. -func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { - buf := l.formatHeader(s, file, line) - fmt.Fprint(buf, args...) - if buf.Bytes()[buf.Len()-1] != '\n' { - buf.WriteByte('\n') - } - l.output(s, buf, file, line, alsoToStderr) -} - -// output writes the data to the log files and releases the buffer. -func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { - l.mu.Lock() - if l.traceLocation.isSet() { - if l.traceLocation.match(file, line) { - buf.Write(stacks(false)) - } - } - data := buf.Bytes() - if !flag.Parsed() { - os.Stderr.Write([]byte("ERROR: logging before flag.Parse: ")) - os.Stderr.Write(data) - } else if l.toStderr { - os.Stderr.Write(data) - } else { - if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { - os.Stderr.Write(data) - } - if l.file[s] == nil { - if err := l.createFiles(s); err != nil { - os.Stderr.Write(data) // Make sure the message appears somewhere. - l.exit(err) - } - } - switch s { - case fatalLog: - l.file[fatalLog].Write(data) - fallthrough - case errorLog: - l.file[errorLog].Write(data) - fallthrough - case warningLog: - l.file[warningLog].Write(data) - fallthrough - case infoLog: - l.file[infoLog].Write(data) - } - } - if s == fatalLog { - // If we got here via Exit rather than Fatal, print no stacks. - if atomic.LoadUint32(&fatalNoStacks) > 0 { - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(1) - } - // Dump all goroutine stacks before exiting. - // First, make sure we see the trace for the current goroutine on standard error. - // If -logtostderr has been specified, the loop below will do that anyway - // as the first stack in the full dump. - if !l.toStderr { - os.Stderr.Write(stacks(false)) - } - // Write the stack trace for all goroutines to the files. - trace := stacks(true) - logExitFunc = func(error) {} // If we get a write error, we'll still exit below. - for log := fatalLog; log >= infoLog; log-- { - if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. - f.Write(trace) - } - } - l.mu.Unlock() - timeoutFlush(10 * time.Second) - os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. - } - l.putBuffer(buf) - l.mu.Unlock() - if stats := severityStats[s]; stats != nil { - atomic.AddInt64(&stats.lines, 1) - atomic.AddInt64(&stats.bytes, int64(len(data))) - } -} - -// timeoutFlush calls Flush and returns when it completes or after timeout -// elapses, whichever happens first. This is needed because the hooks invoked -// by Flush may deadlock when glog.Fatal is called from a hook that holds -// a lock. -func timeoutFlush(timeout time.Duration) { - done := make(chan bool, 1) - go func() { - Flush() // calls logging.lockAndFlushAll() - done <- true - }() - select { - case <-done: - case <-time.After(timeout): - fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) - } -} - -// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. -func stacks(all bool) []byte { - // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. - n := 10000 - if all { - n = 100000 - } - var trace []byte - for i := 0; i < 5; i++ { - trace = make([]byte, n) - nbytes := runtime.Stack(trace, all) - if nbytes < len(trace) { - return trace[:nbytes] - } - n *= 2 - } - return trace -} - -// logExitFunc provides a simple mechanism to override the default behavior -// of exiting on error. Used in testing and to guarantee we reach a required exit -// for fatal logs. Instead, exit could be a function rather than a method but that -// would make its use clumsier. -var logExitFunc func(error) - -// exit is called if there is trouble creating or writing log files. -// It flushes the logs and exits the program; there's no point in hanging around. -// l.mu is held. -func (l *loggingT) exit(err error) { - fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) - // If logExitFunc is set, we do that instead of exiting. - if logExitFunc != nil { - logExitFunc(err) - return - } - l.flushAll() - os.Exit(2) -} - -// syncBuffer joins a bufio.Writer to its underlying file, providing access to the -// file's Sync method and providing a wrapper for the Write method that provides log -// file rotation. There are conflicting methods, so the file cannot be embedded. -// l.mu is held for all its methods. -type syncBuffer struct { - logger *loggingT - *bufio.Writer - file *os.File - sev severity - nbytes uint64 // The number of bytes written to this file -} - -func (sb *syncBuffer) Sync() error { - return sb.file.Sync() -} - -func (sb *syncBuffer) Write(p []byte) (n int, err error) { - if sb.nbytes+uint64(len(p)) >= MaxSize { - if err := sb.rotateFile(time.Now()); err != nil { - sb.logger.exit(err) - } - } - n, err = sb.Writer.Write(p) - sb.nbytes += uint64(n) - if err != nil { - sb.logger.exit(err) - } - return -} - -// rotateFile closes the syncBuffer's file and starts a new one. -func (sb *syncBuffer) rotateFile(now time.Time) error { - if sb.file != nil { - sb.Flush() - sb.file.Close() - } - var err error - sb.file, _, err = create(severityName[sb.sev], now) - sb.nbytes = 0 - if err != nil { - return err - } - - sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) - - // Write header. - var buf bytes.Buffer - fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) - fmt.Fprintf(&buf, "Running on machine: %s\n", host) - fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) - fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") - n, err := sb.file.Write(buf.Bytes()) - sb.nbytes += uint64(n) - return err -} - -// bufferSize sizes the buffer associated with each log file. It's large -// so that log records can accumulate without the logging thread blocking -// on disk I/O. The flushDaemon will block instead. -const bufferSize = 256 * 1024 - -// createFiles creates all the log files for severity from sev down to infoLog. -// l.mu is held. -func (l *loggingT) createFiles(sev severity) error { - now := time.Now() - // Files are created in decreasing severity order, so as soon as we find one - // has already been created, we can stop. - for s := sev; s >= infoLog && l.file[s] == nil; s-- { - sb := &syncBuffer{ - logger: l, - sev: s, - } - if err := sb.rotateFile(now); err != nil { - return err - } - l.file[s] = sb - } - return nil -} - -const flushInterval = 30 * time.Second - -// flushDaemon periodically flushes the log file buffers. -func (l *loggingT) flushDaemon() { - for _ = range time.NewTicker(flushInterval).C { - l.lockAndFlushAll() - } -} - -// lockAndFlushAll is like flushAll but locks l.mu first. -func (l *loggingT) lockAndFlushAll() { - l.mu.Lock() - l.flushAll() - l.mu.Unlock() -} - -// flushAll flushes all the logs and attempts to "sync" their data to disk. -// l.mu is held. -func (l *loggingT) flushAll() { - // Flush from fatal down, in case there's trouble flushing. - for s := fatalLog; s >= infoLog; s-- { - file := l.file[s] - if file != nil { - file.Flush() // ignore error - file.Sync() // ignore error - } - } -} - -// CopyStandardLogTo arranges for messages written to the Go "log" package's -// default logs to also appear in the Google logs for the named and lower -// severities. Subsequent changes to the standard log's default output location -// or format may break this behavior. -// -// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not -// recognized, CopyStandardLogTo panics. -func CopyStandardLogTo(name string) { - sev, ok := severityByName(name) - if !ok { - panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) - } - // Set a log format that captures the user's file and line: - // d.go:23: message - stdLog.SetFlags(stdLog.Lshortfile) - stdLog.SetOutput(logBridge(sev)) -} - -// logBridge provides the Write method that enables CopyStandardLogTo to connect -// Go's standard logs to the logs provided by this package. -type logBridge severity - -// Write parses the standard logging line and passes its components to the -// logger for severity(lb). -func (lb logBridge) Write(b []byte) (n int, err error) { - var ( - file = "???" - line = 1 - text string - ) - // Split "d.go:23: message" into "d.go", "23", and "message". - if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { - text = fmt.Sprintf("bad log format: %s", b) - } else { - file = string(parts[0]) - text = string(parts[2][1:]) // skip leading space - line, err = strconv.Atoi(string(parts[1])) - if err != nil { - text = fmt.Sprintf("bad line number: %s", b) - line = 1 - } - } - // printWithFileLine with alsoToStderr=true, so standard log messages - // always appear on standard error. - logging.printWithFileLine(severity(lb), file, line, true, text) - return len(b), nil -} - -// setV computes and remembers the V level for a given PC -// when vmodule is enabled. -// File pattern matching takes the basename of the file, stripped -// of its .go suffix, and uses filepath.Match, which is a little more -// general than the *? matching used in C++. -// l.mu is held. -func (l *loggingT) setV(pc uintptr) Level { - fn := runtime.FuncForPC(pc) - file, _ := fn.FileLine(pc) - // The file is something like /a/b/c/d.go. We want just the d. - if strings.HasSuffix(file, ".go") { - file = file[:len(file)-3] - } - if slash := strings.LastIndex(file, "/"); slash >= 0 { - file = file[slash+1:] - } - for _, filter := range l.vmodule.filter { - if filter.match(file) { - l.vmap[pc] = filter.level - return filter.level - } - } - l.vmap[pc] = 0 - return 0 -} - -// Verbose is a boolean type that implements Infof (like Printf) etc. -// See the documentation of V for more information. -type Verbose bool - -// V reports whether verbosity at the call site is at least the requested level. -// The returned value is a boolean of type Verbose, which implements Info, Infoln -// and Infof. These methods will write to the Info log if called. -// Thus, one may write either -// if glog.V(2) { glog.Info("log this") } -// or -// glog.V(2).Info("log this") -// The second form is shorter but the first is cheaper if logging is off because it does -// not evaluate its arguments. -// -// Whether an individual call to V generates a log record depends on the setting of -// the -v and --vmodule flags; both are off by default. If the level in the call to -// V is at least the value of -v, or of -vmodule for the source file containing the -// call, the V call will log. -func V(level Level) Verbose { - // This function tries hard to be cheap unless there's work to do. - // The fast path is two atomic loads and compares. - - // Here is a cheap but safe test to see if V logging is enabled globally. - if logging.verbosity.get() >= level { - return Verbose(true) - } - - // It's off globally but it vmodule may still be set. - // Here is another cheap but safe test to see if vmodule is enabled. - if atomic.LoadInt32(&logging.filterLength) > 0 { - // Now we need a proper lock to use the logging structure. The pcs field - // is shared so we must lock before accessing it. This is fairly expensive, - // but if V logging is enabled we're slow anyway. - logging.mu.Lock() - defer logging.mu.Unlock() - if runtime.Callers(2, logging.pcs[:]) == 0 { - return Verbose(false) - } - v, ok := logging.vmap[logging.pcs[0]] - if !ok { - v = logging.setV(logging.pcs[0]) - } - return Verbose(v >= level) - } - return Verbose(false) -} - -// Info is equivalent to the global Info function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Info(args ...interface{}) { - if v { - logging.print(infoLog, args...) - } -} - -// Infoln is equivalent to the global Infoln function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infoln(args ...interface{}) { - if v { - logging.println(infoLog, args...) - } -} - -// Infof is equivalent to the global Infof function, guarded by the value of v. -// See the documentation of V for usage. -func (v Verbose) Infof(format string, args ...interface{}) { - if v { - logging.printf(infoLog, format, args...) - } -} - -// Info logs to the INFO log. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Info(args ...interface{}) { - logging.print(infoLog, args...) -} - -// InfoDepth acts as Info but uses depth to determine which call frame to log. -// InfoDepth(0, "msg") is the same as Info("msg"). -func InfoDepth(depth int, args ...interface{}) { - logging.printDepth(infoLog, depth, args...) -} - -// Infoln logs to the INFO log. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Infoln(args ...interface{}) { - logging.println(infoLog, args...) -} - -// Infof logs to the INFO log. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Infof(format string, args ...interface{}) { - logging.printf(infoLog, format, args...) -} - -// Warning logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Warning(args ...interface{}) { - logging.print(warningLog, args...) -} - -// WarningDepth acts as Warning but uses depth to determine which call frame to log. -// WarningDepth(0, "msg") is the same as Warning("msg"). -func WarningDepth(depth int, args ...interface{}) { - logging.printDepth(warningLog, depth, args...) -} - -// Warningln logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Warningln(args ...interface{}) { - logging.println(warningLog, args...) -} - -// Warningf logs to the WARNING and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Warningf(format string, args ...interface{}) { - logging.printf(warningLog, format, args...) -} - -// Error logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Error(args ...interface{}) { - logging.print(errorLog, args...) -} - -// ErrorDepth acts as Error but uses depth to determine which call frame to log. -// ErrorDepth(0, "msg") is the same as Error("msg"). -func ErrorDepth(depth int, args ...interface{}) { - logging.printDepth(errorLog, depth, args...) -} - -// Errorln logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Errorln(args ...interface{}) { - logging.println(errorLog, args...) -} - -// Errorf logs to the ERROR, WARNING, and INFO logs. -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Errorf(format string, args ...interface{}) { - logging.printf(errorLog, format, args...) -} - -// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Fatal(args ...interface{}) { - logging.print(fatalLog, args...) -} - -// FatalDepth acts as Fatal but uses depth to determine which call frame to log. -// FatalDepth(0, "msg") is the same as Fatal("msg"). -func FatalDepth(depth int, args ...interface{}) { - logging.printDepth(fatalLog, depth, args...) -} - -// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. -func Fatalln(args ...interface{}) { - logging.println(fatalLog, args...) -} - -// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, -// including a stack trace of all running goroutines, then calls os.Exit(255). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Fatalf(format string, args ...interface{}) { - logging.printf(fatalLog, format, args...) -} - -// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. -// It allows Exit and relatives to use the Fatal logs. -var fatalNoStacks uint32 - -// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. -func Exit(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.print(fatalLog, args...) -} - -// ExitDepth acts as Exit but uses depth to determine which call frame to log. -// ExitDepth(0, "msg") is the same as Exit("msg"). -func ExitDepth(depth int, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printDepth(fatalLog, depth, args...) -} - -// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -func Exitln(args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.println(fatalLog, args...) -} - -// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). -// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. -func Exitf(format string, args ...interface{}) { - atomic.StoreUint32(&fatalNoStacks, 1) - logging.printf(fatalLog, format, args...) -} diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go deleted file mode 100644 index 65075d28..00000000 --- a/vendor/github.com/golang/glog/glog_file.go +++ /dev/null @@ -1,124 +0,0 @@ -// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ -// -// Copyright 2013 Google Inc. All Rights Reserved. -// -// 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. - -// File I/O for logs. - -package glog - -import ( - "errors" - "flag" - "fmt" - "os" - "os/user" - "path/filepath" - "strings" - "sync" - "time" -) - -// MaxSize is the maximum size of a log file in bytes. -var MaxSize uint64 = 1024 * 1024 * 1800 - -// logDirs lists the candidate directories for new log files. -var logDirs []string - -// If non-empty, overrides the choice of directory in which to write logs. -// See createLogDirs for the full list of possible destinations. -var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") - -func createLogDirs() { - if *logDir != "" { - logDirs = append(logDirs, *logDir) - } - logDirs = append(logDirs, os.TempDir()) -} - -var ( - pid = os.Getpid() - program = filepath.Base(os.Args[0]) - host = "unknownhost" - userName = "unknownuser" -) - -func init() { - h, err := os.Hostname() - if err == nil { - host = shortHostname(h) - } - - current, err := user.Current() - if err == nil { - userName = current.Username - } - - // Sanitize userName since it may contain filepath separators on Windows. - userName = strings.Replace(userName, `\`, "_", -1) -} - -// shortHostname returns its argument, truncating at the first period. -// For instance, given "www.google.com" it returns "www". -func shortHostname(hostname string) string { - if i := strings.Index(hostname, "."); i >= 0 { - return hostname[:i] - } - return hostname -} - -// logName returns a new log file name containing tag, with start time t, and -// the name for the symlink for tag. -func logName(tag string, t time.Time) (name, link string) { - name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", - program, - host, - userName, - tag, - t.Year(), - t.Month(), - t.Day(), - t.Hour(), - t.Minute(), - t.Second(), - pid) - return name, program + "." + tag -} - -var onceLogDirs sync.Once - -// create creates a new log file and returns the file and its filename, which -// contains tag ("INFO", "FATAL", etc.) and t. If the file is created -// successfully, create also attempts to update the symlink for that tag, ignoring -// errors. -func create(tag string, t time.Time) (f *os.File, filename string, err error) { - onceLogDirs.Do(createLogDirs) - if len(logDirs) == 0 { - return nil, "", errors.New("log: no log dirs") - } - name, link := logName(tag, t) - var lastErr error - for _, dir := range logDirs { - fname := filepath.Join(dir, name) - f, err := os.Create(fname) - if err == nil { - symlink := filepath.Join(dir, link) - os.Remove(symlink) // ignore err - os.Symlink(name, symlink) // ignore err - return f, fname, nil - } - lastErr = err - } - return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) -} diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE deleted file mode 100644 index 0f646931..00000000 --- a/vendor/github.com/golang/protobuf/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright 2010 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/golang/protobuf/proto/clone.go b/vendor/github.com/golang/protobuf/proto/clone.go deleted file mode 100644 index 3cd3249f..00000000 --- a/vendor/github.com/golang/protobuf/proto/clone.go +++ /dev/null @@ -1,253 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Protocol buffer deep copy and merge. -// TODO: RawMessage. - -package proto - -import ( - "fmt" - "log" - "reflect" - "strings" -) - -// Clone returns a deep copy of a protocol buffer. -func Clone(src Message) Message { - in := reflect.ValueOf(src) - if in.IsNil() { - return src - } - out := reflect.New(in.Type().Elem()) - dst := out.Interface().(Message) - Merge(dst, src) - return dst -} - -// Merger is the interface representing objects that can merge messages of the same type. -type Merger interface { - // Merge merges src into this message. - // Required and optional fields that are set in src will be set to that value in dst. - // Elements of repeated fields will be appended. - // - // Merge may panic if called with a different argument type than the receiver. - Merge(src Message) -} - -// generatedMerger is the custom merge method that generated protos will have. -// We must add this method since a generate Merge method will conflict with -// many existing protos that have a Merge data field already defined. -type generatedMerger interface { - XXX_Merge(src Message) -} - -// Merge merges src into dst. -// Required and optional fields that are set in src will be set to that value in dst. -// Elements of repeated fields will be appended. -// Merge panics if src and dst are not the same type, or if dst is nil. -func Merge(dst, src Message) { - if m, ok := dst.(Merger); ok { - m.Merge(src) - return - } - - in := reflect.ValueOf(src) - out := reflect.ValueOf(dst) - if out.IsNil() { - panic("proto: nil destination") - } - if in.Type() != out.Type() { - panic(fmt.Sprintf("proto.Merge(%T, %T) type mismatch", dst, src)) - } - if in.IsNil() { - return // Merge from nil src is a noop - } - if m, ok := dst.(generatedMerger); ok { - m.XXX_Merge(src) - return - } - mergeStruct(out.Elem(), in.Elem()) -} - -func mergeStruct(out, in reflect.Value) { - sprop := GetProperties(in.Type()) - for i := 0; i < in.NumField(); i++ { - f := in.Type().Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i]) - } - - if emIn, err := extendable(in.Addr().Interface()); err == nil { - emOut, _ := extendable(out.Addr().Interface()) - mIn, muIn := emIn.extensionsRead() - if mIn != nil { - mOut := emOut.extensionsWrite() - muIn.Lock() - mergeExtension(mOut, mIn) - muIn.Unlock() - } - } - - uf := in.FieldByName("XXX_unrecognized") - if !uf.IsValid() { - return - } - uin := uf.Bytes() - if len(uin) > 0 { - out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...)) - } -} - -// mergeAny performs a merge between two values of the same type. -// viaPtr indicates whether the values were indirected through a pointer (implying proto2). -// prop is set if this is a struct field (it may be nil). -func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) { - if in.Type() == protoMessageType { - if !in.IsNil() { - if out.IsNil() { - out.Set(reflect.ValueOf(Clone(in.Interface().(Message)))) - } else { - Merge(out.Interface().(Message), in.Interface().(Message)) - } - } - return - } - switch in.Kind() { - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, - reflect.String, reflect.Uint32, reflect.Uint64: - if !viaPtr && isProto3Zero(in) { - return - } - out.Set(in) - case reflect.Interface: - // Probably a oneof field; copy non-nil values. - if in.IsNil() { - return - } - // Allocate destination if it is not set, or set to a different type. - // Otherwise we will merge as normal. - if out.IsNil() || out.Elem().Type() != in.Elem().Type() { - out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T) - } - mergeAny(out.Elem(), in.Elem(), false, nil) - case reflect.Map: - if in.Len() == 0 { - return - } - if out.IsNil() { - out.Set(reflect.MakeMap(in.Type())) - } - // For maps with value types of *T or []byte we need to deep copy each value. - elemKind := in.Type().Elem().Kind() - for _, key := range in.MapKeys() { - var val reflect.Value - switch elemKind { - case reflect.Ptr: - val = reflect.New(in.Type().Elem().Elem()) - mergeAny(val, in.MapIndex(key), false, nil) - case reflect.Slice: - val = in.MapIndex(key) - val = reflect.ValueOf(append([]byte{}, val.Bytes()...)) - default: - val = in.MapIndex(key) - } - out.SetMapIndex(key, val) - } - case reflect.Ptr: - if in.IsNil() { - return - } - if out.IsNil() { - out.Set(reflect.New(in.Elem().Type())) - } - mergeAny(out.Elem(), in.Elem(), true, nil) - case reflect.Slice: - if in.IsNil() { - return - } - if in.Type().Elem().Kind() == reflect.Uint8 { - // []byte is a scalar bytes field, not a repeated field. - - // Edge case: if this is in a proto3 message, a zero length - // bytes field is considered the zero value, and should not - // be merged. - if prop != nil && prop.proto3 && in.Len() == 0 { - return - } - - // Make a deep copy. - // Append to []byte{} instead of []byte(nil) so that we never end up - // with a nil result. - out.SetBytes(append([]byte{}, in.Bytes()...)) - return - } - n := in.Len() - if out.IsNil() { - out.Set(reflect.MakeSlice(in.Type(), 0, n)) - } - switch in.Type().Elem().Kind() { - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, - reflect.String, reflect.Uint32, reflect.Uint64: - out.Set(reflect.AppendSlice(out, in)) - default: - for i := 0; i < n; i++ { - x := reflect.Indirect(reflect.New(in.Type().Elem())) - mergeAny(x, in.Index(i), false, nil) - out.Set(reflect.Append(out, x)) - } - } - case reflect.Struct: - mergeStruct(out, in) - default: - // unknown type, so not a protocol buffer - log.Printf("proto: don't know how to copy %v", in) - } -} - -func mergeExtension(out, in map[int32]Extension) { - for extNum, eIn := range in { - eOut := Extension{desc: eIn.desc} - if eIn.value != nil { - v := reflect.New(reflect.TypeOf(eIn.value)).Elem() - mergeAny(v, reflect.ValueOf(eIn.value), false, nil) - eOut.value = v.Interface() - } - if eIn.enc != nil { - eOut.enc = make([]byte, len(eIn.enc)) - copy(eOut.enc, eIn.enc) - } - - out[extNum] = eOut - } -} diff --git a/vendor/github.com/golang/protobuf/proto/decode.go b/vendor/github.com/golang/protobuf/proto/decode.go deleted file mode 100644 index 63b0f08b..00000000 --- a/vendor/github.com/golang/protobuf/proto/decode.go +++ /dev/null @@ -1,427 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for decoding protocol buffer data to construct in-memory representations. - */ - -import ( - "errors" - "fmt" - "io" -) - -// errOverflow is returned when an integer is too large to be represented. -var errOverflow = errors.New("proto: integer overflow") - -// ErrInternalBadWireType is returned by generated code when an incorrect -// wire type is encountered. It does not get returned to user code. -var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof") - -// DecodeVarint reads a varint-encoded integer from the slice. -// It returns the integer and the number of bytes consumed, or -// zero if there is not enough. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func DecodeVarint(buf []byte) (x uint64, n int) { - for shift := uint(0); shift < 64; shift += 7 { - if n >= len(buf) { - return 0, 0 - } - b := uint64(buf[n]) - n++ - x |= (b & 0x7F) << shift - if (b & 0x80) == 0 { - return x, n - } - } - - // The number is too large to represent in a 64-bit value. - return 0, 0 -} - -func (p *Buffer) decodeVarintSlow() (x uint64, err error) { - i := p.index - l := len(p.buf) - - for shift := uint(0); shift < 64; shift += 7 { - if i >= l { - err = io.ErrUnexpectedEOF - return - } - b := p.buf[i] - i++ - x |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - p.index = i - return - } - } - - // The number is too large to represent in a 64-bit value. - err = errOverflow - return -} - -// DecodeVarint reads a varint-encoded integer from the Buffer. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func (p *Buffer) DecodeVarint() (x uint64, err error) { - i := p.index - buf := p.buf - - if i >= len(buf) { - return 0, io.ErrUnexpectedEOF - } else if buf[i] < 0x80 { - p.index++ - return uint64(buf[i]), nil - } else if len(buf)-i < 10 { - return p.decodeVarintSlow() - } - - var b uint64 - // we already checked the first byte - x = uint64(buf[i]) - 0x80 - i++ - - b = uint64(buf[i]) - i++ - x += b << 7 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 7 - - b = uint64(buf[i]) - i++ - x += b << 14 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 14 - - b = uint64(buf[i]) - i++ - x += b << 21 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 21 - - b = uint64(buf[i]) - i++ - x += b << 28 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 28 - - b = uint64(buf[i]) - i++ - x += b << 35 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 35 - - b = uint64(buf[i]) - i++ - x += b << 42 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 42 - - b = uint64(buf[i]) - i++ - x += b << 49 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 49 - - b = uint64(buf[i]) - i++ - x += b << 56 - if b&0x80 == 0 { - goto done - } - x -= 0x80 << 56 - - b = uint64(buf[i]) - i++ - x += b << 63 - if b&0x80 == 0 { - goto done - } - - return 0, errOverflow - -done: - p.index = i - return x, nil -} - -// DecodeFixed64 reads a 64-bit integer from the Buffer. -// This is the format for the -// fixed64, sfixed64, and double protocol buffer types. -func (p *Buffer) DecodeFixed64() (x uint64, err error) { - // x, err already 0 - i := p.index + 8 - if i < 0 || i > len(p.buf) { - err = io.ErrUnexpectedEOF - return - } - p.index = i - - x = uint64(p.buf[i-8]) - x |= uint64(p.buf[i-7]) << 8 - x |= uint64(p.buf[i-6]) << 16 - x |= uint64(p.buf[i-5]) << 24 - x |= uint64(p.buf[i-4]) << 32 - x |= uint64(p.buf[i-3]) << 40 - x |= uint64(p.buf[i-2]) << 48 - x |= uint64(p.buf[i-1]) << 56 - return -} - -// DecodeFixed32 reads a 32-bit integer from the Buffer. -// This is the format for the -// fixed32, sfixed32, and float protocol buffer types. -func (p *Buffer) DecodeFixed32() (x uint64, err error) { - // x, err already 0 - i := p.index + 4 - if i < 0 || i > len(p.buf) { - err = io.ErrUnexpectedEOF - return - } - p.index = i - - x = uint64(p.buf[i-4]) - x |= uint64(p.buf[i-3]) << 8 - x |= uint64(p.buf[i-2]) << 16 - x |= uint64(p.buf[i-1]) << 24 - return -} - -// DecodeZigzag64 reads a zigzag-encoded 64-bit integer -// from the Buffer. -// This is the format used for the sint64 protocol buffer type. -func (p *Buffer) DecodeZigzag64() (x uint64, err error) { - x, err = p.DecodeVarint() - if err != nil { - return - } - x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63) - return -} - -// DecodeZigzag32 reads a zigzag-encoded 32-bit integer -// from the Buffer. -// This is the format used for the sint32 protocol buffer type. -func (p *Buffer) DecodeZigzag32() (x uint64, err error) { - x, err = p.DecodeVarint() - if err != nil { - return - } - x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31)) - return -} - -// DecodeRawBytes reads a count-delimited byte buffer from the Buffer. -// This is the format used for the bytes protocol buffer -// type and for embedded messages. -func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) { - n, err := p.DecodeVarint() - if err != nil { - return nil, err - } - - nb := int(n) - if nb < 0 { - return nil, fmt.Errorf("proto: bad byte length %d", nb) - } - end := p.index + nb - if end < p.index || end > len(p.buf) { - return nil, io.ErrUnexpectedEOF - } - - if !alloc { - // todo: check if can get more uses of alloc=false - buf = p.buf[p.index:end] - p.index += nb - return - } - - buf = make([]byte, nb) - copy(buf, p.buf[p.index:]) - p.index += nb - return -} - -// DecodeStringBytes reads an encoded string from the Buffer. -// This is the format used for the proto2 string type. -func (p *Buffer) DecodeStringBytes() (s string, err error) { - buf, err := p.DecodeRawBytes(false) - if err != nil { - return - } - return string(buf), nil -} - -// Unmarshaler is the interface representing objects that can -// unmarshal themselves. The argument points to data that may be -// overwritten, so implementations should not keep references to the -// buffer. -// Unmarshal implementations should not clear the receiver. -// Any unmarshaled data should be merged into the receiver. -// Callers of Unmarshal that do not want to retain existing data -// should Reset the receiver before calling Unmarshal. -type Unmarshaler interface { - Unmarshal([]byte) error -} - -// newUnmarshaler is the interface representing objects that can -// unmarshal themselves. The semantics are identical to Unmarshaler. -// -// This exists to support protoc-gen-go generated messages. -// The proto package will stop type-asserting to this interface in the future. -// -// DO NOT DEPEND ON THIS. -type newUnmarshaler interface { - XXX_Unmarshal([]byte) error -} - -// Unmarshal parses the protocol buffer representation in buf and places the -// decoded result in pb. If the struct underlying pb does not match -// the data in buf, the results can be unpredictable. -// -// Unmarshal resets pb before starting to unmarshal, so any -// existing data in pb is always removed. Use UnmarshalMerge -// to preserve and append to existing data. -func Unmarshal(buf []byte, pb Message) error { - pb.Reset() - if u, ok := pb.(newUnmarshaler); ok { - return u.XXX_Unmarshal(buf) - } - if u, ok := pb.(Unmarshaler); ok { - return u.Unmarshal(buf) - } - return NewBuffer(buf).Unmarshal(pb) -} - -// UnmarshalMerge parses the protocol buffer representation in buf and -// writes the decoded result to pb. If the struct underlying pb does not match -// the data in buf, the results can be unpredictable. -// -// UnmarshalMerge merges into existing data in pb. -// Most code should use Unmarshal instead. -func UnmarshalMerge(buf []byte, pb Message) error { - if u, ok := pb.(newUnmarshaler); ok { - return u.XXX_Unmarshal(buf) - } - if u, ok := pb.(Unmarshaler); ok { - // NOTE: The history of proto have unfortunately been inconsistent - // whether Unmarshaler should or should not implicitly clear itself. - // Some implementations do, most do not. - // Thus, calling this here may or may not do what people want. - // - // See https://github.com/golang/protobuf/issues/424 - return u.Unmarshal(buf) - } - return NewBuffer(buf).Unmarshal(pb) -} - -// DecodeMessage reads a count-delimited message from the Buffer. -func (p *Buffer) DecodeMessage(pb Message) error { - enc, err := p.DecodeRawBytes(false) - if err != nil { - return err - } - return NewBuffer(enc).Unmarshal(pb) -} - -// DecodeGroup reads a tag-delimited group from the Buffer. -// StartGroup tag is already consumed. This function consumes -// EndGroup tag. -func (p *Buffer) DecodeGroup(pb Message) error { - b := p.buf[p.index:] - x, y := findEndGroup(b) - if x < 0 { - return io.ErrUnexpectedEOF - } - err := Unmarshal(b[:x], pb) - p.index += y - return err -} - -// Unmarshal parses the protocol buffer representation in the -// Buffer and places the decoded result in pb. If the struct -// underlying pb does not match the data in the buffer, the results can be -// unpredictable. -// -// Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal. -func (p *Buffer) Unmarshal(pb Message) error { - // If the object can unmarshal itself, let it. - if u, ok := pb.(newUnmarshaler); ok { - err := u.XXX_Unmarshal(p.buf[p.index:]) - p.index = len(p.buf) - return err - } - if u, ok := pb.(Unmarshaler); ok { - // NOTE: The history of proto have unfortunately been inconsistent - // whether Unmarshaler should or should not implicitly clear itself. - // Some implementations do, most do not. - // Thus, calling this here may or may not do what people want. - // - // See https://github.com/golang/protobuf/issues/424 - err := u.Unmarshal(p.buf[p.index:]) - p.index = len(p.buf) - return err - } - - // Slow workaround for messages that aren't Unmarshalers. - // This includes some hand-coded .pb.go files and - // bootstrap protos. - // TODO: fix all of those and then add Unmarshal to - // the Message interface. Then: - // The cast above and code below can be deleted. - // The old unmarshaler can be deleted. - // Clients can call Unmarshal directly (can already do that, actually). - var info InternalMessageInfo - err := info.Unmarshal(pb, p.buf[p.index:]) - p.index = len(p.buf) - return err -} diff --git a/vendor/github.com/golang/protobuf/proto/deprecated.go b/vendor/github.com/golang/protobuf/proto/deprecated.go deleted file mode 100644 index 35b882c0..00000000 --- a/vendor/github.com/golang/protobuf/proto/deprecated.go +++ /dev/null @@ -1,63 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2018 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import "errors" - -// Deprecated: do not use. -type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 } - -// Deprecated: do not use. -func GetStats() Stats { return Stats{} } - -// Deprecated: do not use. -func MarshalMessageSet(interface{}) ([]byte, error) { - return nil, errors.New("proto: not implemented") -} - -// Deprecated: do not use. -func UnmarshalMessageSet([]byte, interface{}) error { - return errors.New("proto: not implemented") -} - -// Deprecated: do not use. -func MarshalMessageSetJSON(interface{}) ([]byte, error) { - return nil, errors.New("proto: not implemented") -} - -// Deprecated: do not use. -func UnmarshalMessageSetJSON([]byte, interface{}) error { - return errors.New("proto: not implemented") -} - -// Deprecated: do not use. -func RegisterMessageSetType(Message, int32, string) {} diff --git a/vendor/github.com/golang/protobuf/proto/discard.go b/vendor/github.com/golang/protobuf/proto/discard.go deleted file mode 100644 index dea2617c..00000000 --- a/vendor/github.com/golang/protobuf/proto/discard.go +++ /dev/null @@ -1,350 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2017 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "fmt" - "reflect" - "strings" - "sync" - "sync/atomic" -) - -type generatedDiscarder interface { - XXX_DiscardUnknown() -} - -// DiscardUnknown recursively discards all unknown fields from this message -// and all embedded messages. -// -// When unmarshaling a message with unrecognized fields, the tags and values -// of such fields are preserved in the Message. This allows a later call to -// marshal to be able to produce a message that continues to have those -// unrecognized fields. To avoid this, DiscardUnknown is used to -// explicitly clear the unknown fields after unmarshaling. -// -// For proto2 messages, the unknown fields of message extensions are only -// discarded from messages that have been accessed via GetExtension. -func DiscardUnknown(m Message) { - if m, ok := m.(generatedDiscarder); ok { - m.XXX_DiscardUnknown() - return - } - // TODO: Dynamically populate a InternalMessageInfo for legacy messages, - // but the master branch has no implementation for InternalMessageInfo, - // so it would be more work to replicate that approach. - discardLegacy(m) -} - -// DiscardUnknown recursively discards all unknown fields. -func (a *InternalMessageInfo) DiscardUnknown(m Message) { - di := atomicLoadDiscardInfo(&a.discard) - if di == nil { - di = getDiscardInfo(reflect.TypeOf(m).Elem()) - atomicStoreDiscardInfo(&a.discard, di) - } - di.discard(toPointer(&m)) -} - -type discardInfo struct { - typ reflect.Type - - initialized int32 // 0: only typ is valid, 1: everything is valid - lock sync.Mutex - - fields []discardFieldInfo - unrecognized field -} - -type discardFieldInfo struct { - field field // Offset of field, guaranteed to be valid - discard func(src pointer) -} - -var ( - discardInfoMap = map[reflect.Type]*discardInfo{} - discardInfoLock sync.Mutex -) - -func getDiscardInfo(t reflect.Type) *discardInfo { - discardInfoLock.Lock() - defer discardInfoLock.Unlock() - di := discardInfoMap[t] - if di == nil { - di = &discardInfo{typ: t} - discardInfoMap[t] = di - } - return di -} - -func (di *discardInfo) discard(src pointer) { - if src.isNil() { - return // Nothing to do. - } - - if atomic.LoadInt32(&di.initialized) == 0 { - di.computeDiscardInfo() - } - - for _, fi := range di.fields { - sfp := src.offset(fi.field) - fi.discard(sfp) - } - - // For proto2 messages, only discard unknown fields in message extensions - // that have been accessed via GetExtension. - if em, err := extendable(src.asPointerTo(di.typ).Interface()); err == nil { - // Ignore lock since DiscardUnknown is not concurrency safe. - emm, _ := em.extensionsRead() - for _, mx := range emm { - if m, ok := mx.value.(Message); ok { - DiscardUnknown(m) - } - } - } - - if di.unrecognized.IsValid() { - *src.offset(di.unrecognized).toBytes() = nil - } -} - -func (di *discardInfo) computeDiscardInfo() { - di.lock.Lock() - defer di.lock.Unlock() - if di.initialized != 0 { - return - } - t := di.typ - n := t.NumField() - - for i := 0; i < n; i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - - dfi := discardFieldInfo{field: toField(&f)} - tf := f.Type - - // Unwrap tf to get its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic(fmt.Sprintf("%v.%s cannot be a slice of pointers to primitive types", t, f.Name)) - } - - switch tf.Kind() { - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("%v.%s cannot be a direct struct value", t, f.Name)) - case isSlice: // E.g., []*pb.T - di := getDiscardInfo(tf) - dfi.discard = func(src pointer) { - sps := src.getPointerSlice() - for _, sp := range sps { - if !sp.isNil() { - di.discard(sp) - } - } - } - default: // E.g., *pb.T - di := getDiscardInfo(tf) - dfi.discard = func(src pointer) { - sp := src.getPointer() - if !sp.isNil() { - di.discard(sp) - } - } - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%v.%s cannot be a pointer to a map or a slice of map values", t, f.Name)) - default: // E.g., map[K]V - if tf.Elem().Kind() == reflect.Ptr { // Proto struct (e.g., *T) - dfi.discard = func(src pointer) { - sm := src.asPointerTo(tf).Elem() - if sm.Len() == 0 { - return - } - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - DiscardUnknown(val.Interface().(Message)) - } - } - } else { - dfi.discard = func(pointer) {} // Noop - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%v.%s cannot be a pointer to a interface or a slice of interface values", t, f.Name)) - default: // E.g., interface{} - // TODO: Make this faster? - dfi.discard = func(src pointer) { - su := src.asPointerTo(tf).Elem() - if !su.IsNil() { - sv := su.Elem().Elem().Field(0) - if sv.Kind() == reflect.Ptr && sv.IsNil() { - return - } - switch sv.Type().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - DiscardUnknown(sv.Interface().(Message)) - } - } - } - } - default: - continue - } - di.fields = append(di.fields, dfi) - } - - di.unrecognized = invalidField - if f, ok := t.FieldByName("XXX_unrecognized"); ok { - if f.Type != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - di.unrecognized = toField(&f) - } - - atomic.StoreInt32(&di.initialized, 1) -} - -func discardLegacy(m Message) { - v := reflect.ValueOf(m) - if v.Kind() != reflect.Ptr || v.IsNil() { - return - } - v = v.Elem() - if v.Kind() != reflect.Struct { - return - } - t := v.Type() - - for i := 0; i < v.NumField(); i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - vf := v.Field(i) - tf := f.Type - - // Unwrap tf to get its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic(fmt.Sprintf("%T.%s cannot be a slice of pointers to primitive types", m, f.Name)) - } - - switch tf.Kind() { - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("%T.%s cannot be a direct struct value", m, f.Name)) - case isSlice: // E.g., []*pb.T - for j := 0; j < vf.Len(); j++ { - discardLegacy(vf.Index(j).Interface().(Message)) - } - default: // E.g., *pb.T - discardLegacy(vf.Interface().(Message)) - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%T.%s cannot be a pointer to a map or a slice of map values", m, f.Name)) - default: // E.g., map[K]V - tv := vf.Type().Elem() - if tv.Kind() == reflect.Ptr && tv.Implements(protoMessageType) { // Proto struct (e.g., *T) - for _, key := range vf.MapKeys() { - val := vf.MapIndex(key) - discardLegacy(val.Interface().(Message)) - } - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic(fmt.Sprintf("%T.%s cannot be a pointer to a interface or a slice of interface values", m, f.Name)) - default: // E.g., test_proto.isCommunique_Union interface - if !vf.IsNil() && f.Tag.Get("protobuf_oneof") != "" { - vf = vf.Elem() // E.g., *test_proto.Communique_Msg - if !vf.IsNil() { - vf = vf.Elem() // E.g., test_proto.Communique_Msg - vf = vf.Field(0) // E.g., Proto struct (e.g., *T) or primitive value - if vf.Kind() == reflect.Ptr { - discardLegacy(vf.Interface().(Message)) - } - } - } - } - } - } - - if vf := v.FieldByName("XXX_unrecognized"); vf.IsValid() { - if vf.Type() != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - vf.Set(reflect.ValueOf([]byte(nil))) - } - - // For proto2 messages, only discard unknown fields in message extensions - // that have been accessed via GetExtension. - if em, err := extendable(m); err == nil { - // Ignore lock since discardLegacy is not concurrency safe. - emm, _ := em.extensionsRead() - for _, mx := range emm { - if m, ok := mx.value.(Message); ok { - discardLegacy(m) - } - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go deleted file mode 100644 index 3abfed2c..00000000 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ /dev/null @@ -1,203 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for encoding data into the wire format for protocol buffers. - */ - -import ( - "errors" - "reflect" -) - -var ( - // errRepeatedHasNil is the error returned if Marshal is called with - // a struct with a repeated field containing a nil element. - errRepeatedHasNil = errors.New("proto: repeated field has nil element") - - // errOneofHasNil is the error returned if Marshal is called with - // a struct with a oneof field containing a nil element. - errOneofHasNil = errors.New("proto: oneof field has nil value") - - // ErrNil is the error returned if Marshal is called with nil. - ErrNil = errors.New("proto: Marshal called with nil") - - // ErrTooLarge is the error returned if Marshal is called with a - // message that encodes to >2GB. - ErrTooLarge = errors.New("proto: message encodes to over 2 GB") -) - -// The fundamental encoders that put bytes on the wire. -// Those that take integer types all accept uint64 and are -// therefore of type valueEncoder. - -const maxVarintBytes = 10 // maximum length of a varint - -// EncodeVarint returns the varint encoding of x. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -// Not used by the package itself, but helpful to clients -// wishing to use the same encoding. -func EncodeVarint(x uint64) []byte { - var buf [maxVarintBytes]byte - var n int - for n = 0; x > 127; n++ { - buf[n] = 0x80 | uint8(x&0x7F) - x >>= 7 - } - buf[n] = uint8(x) - n++ - return buf[0:n] -} - -// EncodeVarint writes a varint-encoded integer to the Buffer. -// This is the format for the -// int32, int64, uint32, uint64, bool, and enum -// protocol buffer types. -func (p *Buffer) EncodeVarint(x uint64) error { - for x >= 1<<7 { - p.buf = append(p.buf, uint8(x&0x7f|0x80)) - x >>= 7 - } - p.buf = append(p.buf, uint8(x)) - return nil -} - -// SizeVarint returns the varint encoding size of an integer. -func SizeVarint(x uint64) int { - switch { - case x < 1<<7: - return 1 - case x < 1<<14: - return 2 - case x < 1<<21: - return 3 - case x < 1<<28: - return 4 - case x < 1<<35: - return 5 - case x < 1<<42: - return 6 - case x < 1<<49: - return 7 - case x < 1<<56: - return 8 - case x < 1<<63: - return 9 - } - return 10 -} - -// EncodeFixed64 writes a 64-bit integer to the Buffer. -// This is the format for the -// fixed64, sfixed64, and double protocol buffer types. -func (p *Buffer) EncodeFixed64(x uint64) error { - p.buf = append(p.buf, - uint8(x), - uint8(x>>8), - uint8(x>>16), - uint8(x>>24), - uint8(x>>32), - uint8(x>>40), - uint8(x>>48), - uint8(x>>56)) - return nil -} - -// EncodeFixed32 writes a 32-bit integer to the Buffer. -// This is the format for the -// fixed32, sfixed32, and float protocol buffer types. -func (p *Buffer) EncodeFixed32(x uint64) error { - p.buf = append(p.buf, - uint8(x), - uint8(x>>8), - uint8(x>>16), - uint8(x>>24)) - return nil -} - -// EncodeZigzag64 writes a zigzag-encoded 64-bit integer -// to the Buffer. -// This is the format used for the sint64 protocol buffer type. -func (p *Buffer) EncodeZigzag64(x uint64) error { - // use signed number to get arithmetic right shift. - return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} - -// EncodeZigzag32 writes a zigzag-encoded 32-bit integer -// to the Buffer. -// This is the format used for the sint32 protocol buffer type. -func (p *Buffer) EncodeZigzag32(x uint64) error { - // use signed number to get arithmetic right shift. - return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) -} - -// EncodeRawBytes writes a count-delimited byte buffer to the Buffer. -// This is the format used for the bytes protocol buffer -// type and for embedded messages. -func (p *Buffer) EncodeRawBytes(b []byte) error { - p.EncodeVarint(uint64(len(b))) - p.buf = append(p.buf, b...) - return nil -} - -// EncodeStringBytes writes an encoded string to the Buffer. -// This is the format used for the proto2 string type. -func (p *Buffer) EncodeStringBytes(s string) error { - p.EncodeVarint(uint64(len(s))) - p.buf = append(p.buf, s...) - return nil -} - -// Marshaler is the interface representing objects that can marshal themselves. -type Marshaler interface { - Marshal() ([]byte, error) -} - -// EncodeMessage writes the protocol buffer to the Buffer, -// prefixed by a varint-encoded length. -func (p *Buffer) EncodeMessage(pb Message) error { - siz := Size(pb) - p.EncodeVarint(uint64(siz)) - return p.Marshal(pb) -} - -// All protocol buffer fields are nillable, but be careful. -func isNil(v reflect.Value) bool { - switch v.Kind() { - case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: - return v.IsNil() - } - return false -} diff --git a/vendor/github.com/golang/protobuf/proto/equal.go b/vendor/github.com/golang/protobuf/proto/equal.go deleted file mode 100644 index f9b6e41b..00000000 --- a/vendor/github.com/golang/protobuf/proto/equal.go +++ /dev/null @@ -1,301 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Protocol buffer comparison. - -package proto - -import ( - "bytes" - "log" - "reflect" - "strings" -) - -/* -Equal returns true iff protocol buffers a and b are equal. -The arguments must both be pointers to protocol buffer structs. - -Equality is defined in this way: - - Two messages are equal iff they are the same type, - corresponding fields are equal, unknown field sets - are equal, and extensions sets are equal. - - Two set scalar fields are equal iff their values are equal. - If the fields are of a floating-point type, remember that - NaN != x for all x, including NaN. If the message is defined - in a proto3 .proto file, fields are not "set"; specifically, - zero length proto3 "bytes" fields are equal (nil == {}). - - Two repeated fields are equal iff their lengths are the same, - and their corresponding elements are equal. Note a "bytes" field, - although represented by []byte, is not a repeated field and the - rule for the scalar fields described above applies. - - Two unset fields are equal. - - Two unknown field sets are equal if their current - encoded state is equal. - - Two extension sets are equal iff they have corresponding - elements that are pairwise equal. - - Two map fields are equal iff their lengths are the same, - and they contain the same set of elements. Zero-length map - fields are equal. - - Every other combination of things are not equal. - -The return value is undefined if a and b are not protocol buffers. -*/ -func Equal(a, b Message) bool { - if a == nil || b == nil { - return a == b - } - v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b) - if v1.Type() != v2.Type() { - return false - } - if v1.Kind() == reflect.Ptr { - if v1.IsNil() { - return v2.IsNil() - } - if v2.IsNil() { - return false - } - v1, v2 = v1.Elem(), v2.Elem() - } - if v1.Kind() != reflect.Struct { - return false - } - return equalStruct(v1, v2) -} - -// v1 and v2 are known to have the same type. -func equalStruct(v1, v2 reflect.Value) bool { - sprop := GetProperties(v1.Type()) - for i := 0; i < v1.NumField(); i++ { - f := v1.Type().Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - f1, f2 := v1.Field(i), v2.Field(i) - if f.Type.Kind() == reflect.Ptr { - if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 { - // both unset - continue - } else if n1 != n2 { - // set/unset mismatch - return false - } - f1, f2 = f1.Elem(), f2.Elem() - } - if !equalAny(f1, f2, sprop.Prop[i]) { - return false - } - } - - if em1 := v1.FieldByName("XXX_InternalExtensions"); em1.IsValid() { - em2 := v2.FieldByName("XXX_InternalExtensions") - if !equalExtensions(v1.Type(), em1.Interface().(XXX_InternalExtensions), em2.Interface().(XXX_InternalExtensions)) { - return false - } - } - - if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() { - em2 := v2.FieldByName("XXX_extensions") - if !equalExtMap(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) { - return false - } - } - - uf := v1.FieldByName("XXX_unrecognized") - if !uf.IsValid() { - return true - } - - u1 := uf.Bytes() - u2 := v2.FieldByName("XXX_unrecognized").Bytes() - return bytes.Equal(u1, u2) -} - -// v1 and v2 are known to have the same type. -// prop may be nil. -func equalAny(v1, v2 reflect.Value, prop *Properties) bool { - if v1.Type() == protoMessageType { - m1, _ := v1.Interface().(Message) - m2, _ := v2.Interface().(Message) - return Equal(m1, m2) - } - switch v1.Kind() { - case reflect.Bool: - return v1.Bool() == v2.Bool() - case reflect.Float32, reflect.Float64: - return v1.Float() == v2.Float() - case reflect.Int32, reflect.Int64: - return v1.Int() == v2.Int() - case reflect.Interface: - // Probably a oneof field; compare the inner values. - n1, n2 := v1.IsNil(), v2.IsNil() - if n1 || n2 { - return n1 == n2 - } - e1, e2 := v1.Elem(), v2.Elem() - if e1.Type() != e2.Type() { - return false - } - return equalAny(e1, e2, nil) - case reflect.Map: - if v1.Len() != v2.Len() { - return false - } - for _, key := range v1.MapKeys() { - val2 := v2.MapIndex(key) - if !val2.IsValid() { - // This key was not found in the second map. - return false - } - if !equalAny(v1.MapIndex(key), val2, nil) { - return false - } - } - return true - case reflect.Ptr: - // Maps may have nil values in them, so check for nil. - if v1.IsNil() && v2.IsNil() { - return true - } - if v1.IsNil() != v2.IsNil() { - return false - } - return equalAny(v1.Elem(), v2.Elem(), prop) - case reflect.Slice: - if v1.Type().Elem().Kind() == reflect.Uint8 { - // short circuit: []byte - - // Edge case: if this is in a proto3 message, a zero length - // bytes field is considered the zero value. - if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 { - return true - } - if v1.IsNil() != v2.IsNil() { - return false - } - return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte)) - } - - if v1.Len() != v2.Len() { - return false - } - for i := 0; i < v1.Len(); i++ { - if !equalAny(v1.Index(i), v2.Index(i), prop) { - return false - } - } - return true - case reflect.String: - return v1.Interface().(string) == v2.Interface().(string) - case reflect.Struct: - return equalStruct(v1, v2) - case reflect.Uint32, reflect.Uint64: - return v1.Uint() == v2.Uint() - } - - // unknown type, so not a protocol buffer - log.Printf("proto: don't know how to compare %v", v1) - return false -} - -// base is the struct type that the extensions are based on. -// x1 and x2 are InternalExtensions. -func equalExtensions(base reflect.Type, x1, x2 XXX_InternalExtensions) bool { - em1, _ := x1.extensionsRead() - em2, _ := x2.extensionsRead() - return equalExtMap(base, em1, em2) -} - -func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool { - if len(em1) != len(em2) { - return false - } - - for extNum, e1 := range em1 { - e2, ok := em2[extNum] - if !ok { - return false - } - - m1 := extensionAsLegacyType(e1.value) - m2 := extensionAsLegacyType(e2.value) - - if m1 == nil && m2 == nil { - // Both have only encoded form. - if bytes.Equal(e1.enc, e2.enc) { - continue - } - // The bytes are different, but the extensions might still be - // equal. We need to decode them to compare. - } - - if m1 != nil && m2 != nil { - // Both are unencoded. - if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { - return false - } - continue - } - - // At least one is encoded. To do a semantically correct comparison - // we need to unmarshal them first. - var desc *ExtensionDesc - if m := extensionMaps[base]; m != nil { - desc = m[extNum] - } - if desc == nil { - // If both have only encoded form and the bytes are the same, - // it is handled above. We get here when the bytes are different. - // We don't know how to decode it, so just compare them as byte - // slices. - log.Printf("proto: don't know how to compare extension %d of %v", extNum, base) - return false - } - var err error - if m1 == nil { - m1, err = decodeExtension(e1.enc, desc) - } - if m2 == nil && err == nil { - m2, err = decodeExtension(e2.enc, desc) - } - if err != nil { - // The encoded form is invalid. - log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err) - return false - } - if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { - return false - } - } - - return true -} diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go deleted file mode 100644 index fa88add3..00000000 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ /dev/null @@ -1,607 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Types and routines for supporting protocol buffer extensions. - */ - -import ( - "errors" - "fmt" - "io" - "reflect" - "strconv" - "sync" -) - -// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message. -var ErrMissingExtension = errors.New("proto: missing extension") - -// ExtensionRange represents a range of message extensions for a protocol buffer. -// Used in code generated by the protocol compiler. -type ExtensionRange struct { - Start, End int32 // both inclusive -} - -// extendableProto is an interface implemented by any protocol buffer generated by the current -// proto compiler that may be extended. -type extendableProto interface { - Message - ExtensionRangeArray() []ExtensionRange - extensionsWrite() map[int32]Extension - extensionsRead() (map[int32]Extension, sync.Locker) -} - -// extendableProtoV1 is an interface implemented by a protocol buffer generated by the previous -// version of the proto compiler that may be extended. -type extendableProtoV1 interface { - Message - ExtensionRangeArray() []ExtensionRange - ExtensionMap() map[int32]Extension -} - -// extensionAdapter is a wrapper around extendableProtoV1 that implements extendableProto. -type extensionAdapter struct { - extendableProtoV1 -} - -func (e extensionAdapter) extensionsWrite() map[int32]Extension { - return e.ExtensionMap() -} - -func (e extensionAdapter) extensionsRead() (map[int32]Extension, sync.Locker) { - return e.ExtensionMap(), notLocker{} -} - -// notLocker is a sync.Locker whose Lock and Unlock methods are nops. -type notLocker struct{} - -func (n notLocker) Lock() {} -func (n notLocker) Unlock() {} - -// extendable returns the extendableProto interface for the given generated proto message. -// If the proto message has the old extension format, it returns a wrapper that implements -// the extendableProto interface. -func extendable(p interface{}) (extendableProto, error) { - switch p := p.(type) { - case extendableProto: - if isNilPtr(p) { - return nil, fmt.Errorf("proto: nil %T is not extendable", p) - } - return p, nil - case extendableProtoV1: - if isNilPtr(p) { - return nil, fmt.Errorf("proto: nil %T is not extendable", p) - } - return extensionAdapter{p}, nil - } - // Don't allocate a specific error containing %T: - // this is the hot path for Clone and MarshalText. - return nil, errNotExtendable -} - -var errNotExtendable = errors.New("proto: not an extendable proto.Message") - -func isNilPtr(x interface{}) bool { - v := reflect.ValueOf(x) - return v.Kind() == reflect.Ptr && v.IsNil() -} - -// XXX_InternalExtensions is an internal representation of proto extensions. -// -// Each generated message struct type embeds an anonymous XXX_InternalExtensions field, -// thus gaining the unexported 'extensions' method, which can be called only from the proto package. -// -// The methods of XXX_InternalExtensions are not concurrency safe in general, -// but calls to logically read-only methods such as has and get may be executed concurrently. -type XXX_InternalExtensions struct { - // The struct must be indirect so that if a user inadvertently copies a - // generated message and its embedded XXX_InternalExtensions, they - // avoid the mayhem of a copied mutex. - // - // The mutex serializes all logically read-only operations to p.extensionMap. - // It is up to the client to ensure that write operations to p.extensionMap are - // mutually exclusive with other accesses. - p *struct { - mu sync.Mutex - extensionMap map[int32]Extension - } -} - -// extensionsWrite returns the extension map, creating it on first use. -func (e *XXX_InternalExtensions) extensionsWrite() map[int32]Extension { - if e.p == nil { - e.p = new(struct { - mu sync.Mutex - extensionMap map[int32]Extension - }) - e.p.extensionMap = make(map[int32]Extension) - } - return e.p.extensionMap -} - -// extensionsRead returns the extensions map for read-only use. It may be nil. -// The caller must hold the returned mutex's lock when accessing Elements within the map. -func (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension, sync.Locker) { - if e.p == nil { - return nil, nil - } - return e.p.extensionMap, &e.p.mu -} - -// ExtensionDesc represents an extension specification. -// Used in generated code from the protocol compiler. -type ExtensionDesc struct { - ExtendedType Message // nil pointer to the type that is being extended - ExtensionType interface{} // nil pointer to the extension type - Field int32 // field number - Name string // fully-qualified name of extension, for text formatting - Tag string // protobuf tag style - Filename string // name of the file in which the extension is defined -} - -func (ed *ExtensionDesc) repeated() bool { - t := reflect.TypeOf(ed.ExtensionType) - return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 -} - -// Extension represents an extension in a message. -type Extension struct { - // When an extension is stored in a message using SetExtension - // only desc and value are set. When the message is marshaled - // enc will be set to the encoded form of the message. - // - // When a message is unmarshaled and contains extensions, each - // extension will have only enc set. When such an extension is - // accessed using GetExtension (or GetExtensions) desc and value - // will be set. - desc *ExtensionDesc - - // value is a concrete value for the extension field. Let the type of - // desc.ExtensionType be the "API type" and the type of Extension.value - // be the "storage type". The API type and storage type are the same except: - // * For scalars (except []byte), the API type uses *T, - // while the storage type uses T. - // * For repeated fields, the API type uses []T, while the storage type - // uses *[]T. - // - // The reason for the divergence is so that the storage type more naturally - // matches what is expected of when retrieving the values through the - // protobuf reflection APIs. - // - // The value may only be populated if desc is also populated. - value interface{} - - // enc is the raw bytes for the extension field. - enc []byte -} - -// SetRawExtension is for testing only. -func SetRawExtension(base Message, id int32, b []byte) { - epb, err := extendable(base) - if err != nil { - return - } - extmap := epb.extensionsWrite() - extmap[id] = Extension{enc: b} -} - -// isExtensionField returns true iff the given field number is in an extension range. -func isExtensionField(pb extendableProto, field int32) bool { - for _, er := range pb.ExtensionRangeArray() { - if er.Start <= field && field <= er.End { - return true - } - } - return false -} - -// checkExtensionTypes checks that the given extension is valid for pb. -func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error { - var pbi interface{} = pb - // Check the extended type. - if ea, ok := pbi.(extensionAdapter); ok { - pbi = ea.extendableProtoV1 - } - if a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b { - return fmt.Errorf("proto: bad extended type; %v does not extend %v", b, a) - } - // Check the range. - if !isExtensionField(pb, extension.Field) { - return errors.New("proto: bad extension number; not in declared ranges") - } - return nil -} - -// extPropKey is sufficient to uniquely identify an extension. -type extPropKey struct { - base reflect.Type - field int32 -} - -var extProp = struct { - sync.RWMutex - m map[extPropKey]*Properties -}{ - m: make(map[extPropKey]*Properties), -} - -func extensionProperties(ed *ExtensionDesc) *Properties { - key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field} - - extProp.RLock() - if prop, ok := extProp.m[key]; ok { - extProp.RUnlock() - return prop - } - extProp.RUnlock() - - extProp.Lock() - defer extProp.Unlock() - // Check again. - if prop, ok := extProp.m[key]; ok { - return prop - } - - prop := new(Properties) - prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil) - extProp.m[key] = prop - return prop -} - -// HasExtension returns whether the given extension is present in pb. -func HasExtension(pb Message, extension *ExtensionDesc) bool { - // TODO: Check types, field numbers, etc.? - epb, err := extendable(pb) - if err != nil { - return false - } - extmap, mu := epb.extensionsRead() - if extmap == nil { - return false - } - mu.Lock() - _, ok := extmap[extension.Field] - mu.Unlock() - return ok -} - -// ClearExtension removes the given extension from pb. -func ClearExtension(pb Message, extension *ExtensionDesc) { - epb, err := extendable(pb) - if err != nil { - return - } - // TODO: Check types, field numbers, etc.? - extmap := epb.extensionsWrite() - delete(extmap, extension.Field) -} - -// GetExtension retrieves a proto2 extended field from pb. -// -// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil), -// then GetExtension parses the encoded field and returns a Go value of the specified type. -// If the field is not present, then the default value is returned (if one is specified), -// otherwise ErrMissingExtension is reported. -// -// If the descriptor is not type complete (i.e., ExtensionDesc.ExtensionType is nil), -// then GetExtension returns the raw encoded bytes of the field extension. -func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { - epb, err := extendable(pb) - if err != nil { - return nil, err - } - - if extension.ExtendedType != nil { - // can only check type if this is a complete descriptor - if err := checkExtensionTypes(epb, extension); err != nil { - return nil, err - } - } - - emap, mu := epb.extensionsRead() - if emap == nil { - return defaultExtensionValue(extension) - } - mu.Lock() - defer mu.Unlock() - e, ok := emap[extension.Field] - if !ok { - // defaultExtensionValue returns the default value or - // ErrMissingExtension if there is no default. - return defaultExtensionValue(extension) - } - - if e.value != nil { - // Already decoded. Check the descriptor, though. - if e.desc != extension { - // This shouldn't happen. If it does, it means that - // GetExtension was called twice with two different - // descriptors with the same field number. - return nil, errors.New("proto: descriptor conflict") - } - return extensionAsLegacyType(e.value), nil - } - - if extension.ExtensionType == nil { - // incomplete descriptor - return e.enc, nil - } - - v, err := decodeExtension(e.enc, extension) - if err != nil { - return nil, err - } - - // Remember the decoded version and drop the encoded version. - // That way it is safe to mutate what we return. - e.value = extensionAsStorageType(v) - e.desc = extension - e.enc = nil - emap[extension.Field] = e - return extensionAsLegacyType(e.value), nil -} - -// defaultExtensionValue returns the default value for extension. -// If no default for an extension is defined ErrMissingExtension is returned. -func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) { - if extension.ExtensionType == nil { - // incomplete descriptor, so no default - return nil, ErrMissingExtension - } - - t := reflect.TypeOf(extension.ExtensionType) - props := extensionProperties(extension) - - sf, _, err := fieldDefault(t, props) - if err != nil { - return nil, err - } - - if sf == nil || sf.value == nil { - // There is no default value. - return nil, ErrMissingExtension - } - - if t.Kind() != reflect.Ptr { - // We do not need to return a Ptr, we can directly return sf.value. - return sf.value, nil - } - - // We need to return an interface{} that is a pointer to sf.value. - value := reflect.New(t).Elem() - value.Set(reflect.New(value.Type().Elem())) - if sf.kind == reflect.Int32 { - // We may have an int32 or an enum, but the underlying data is int32. - // Since we can't set an int32 into a non int32 reflect.value directly - // set it as a int32. - value.Elem().SetInt(int64(sf.value.(int32))) - } else { - value.Elem().Set(reflect.ValueOf(sf.value)) - } - return value.Interface(), nil -} - -// decodeExtension decodes an extension encoded in b. -func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) { - t := reflect.TypeOf(extension.ExtensionType) - unmarshal := typeUnmarshaler(t, extension.Tag) - - // t is a pointer to a struct, pointer to basic type or a slice. - // Allocate space to store the pointer/slice. - value := reflect.New(t).Elem() - - var err error - for { - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - wire := int(x) & 7 - - b, err = unmarshal(b, valToPointer(value.Addr()), wire) - if err != nil { - return nil, err - } - - if len(b) == 0 { - break - } - } - return value.Interface(), nil -} - -// GetExtensions returns a slice of the extensions present in pb that are also listed in es. -// The returned slice has the same length as es; missing extensions will appear as nil elements. -func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) { - epb, err := extendable(pb) - if err != nil { - return nil, err - } - extensions = make([]interface{}, len(es)) - for i, e := range es { - extensions[i], err = GetExtension(epb, e) - if err == ErrMissingExtension { - err = nil - } - if err != nil { - return - } - } - return -} - -// ExtensionDescs returns a new slice containing pb's extension descriptors, in undefined order. -// For non-registered extensions, ExtensionDescs returns an incomplete descriptor containing -// just the Field field, which defines the extension's field number. -func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) { - epb, err := extendable(pb) - if err != nil { - return nil, err - } - registeredExtensions := RegisteredExtensions(pb) - - emap, mu := epb.extensionsRead() - if emap == nil { - return nil, nil - } - mu.Lock() - defer mu.Unlock() - extensions := make([]*ExtensionDesc, 0, len(emap)) - for extid, e := range emap { - desc := e.desc - if desc == nil { - desc = registeredExtensions[extid] - if desc == nil { - desc = &ExtensionDesc{Field: extid} - } - } - - extensions = append(extensions, desc) - } - return extensions, nil -} - -// SetExtension sets the specified extension of pb to the specified value. -func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error { - epb, err := extendable(pb) - if err != nil { - return err - } - if err := checkExtensionTypes(epb, extension); err != nil { - return err - } - typ := reflect.TypeOf(extension.ExtensionType) - if typ != reflect.TypeOf(value) { - return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType) - } - // nil extension values need to be caught early, because the - // encoder can't distinguish an ErrNil due to a nil extension - // from an ErrNil due to a missing field. Extensions are - // always optional, so the encoder would just swallow the error - // and drop all the extensions from the encoded message. - if reflect.ValueOf(value).IsNil() { - return fmt.Errorf("proto: SetExtension called with nil value of type %T", value) - } - - extmap := epb.extensionsWrite() - extmap[extension.Field] = Extension{desc: extension, value: extensionAsStorageType(value)} - return nil -} - -// ClearAllExtensions clears all extensions from pb. -func ClearAllExtensions(pb Message) { - epb, err := extendable(pb) - if err != nil { - return - } - m := epb.extensionsWrite() - for k := range m { - delete(m, k) - } -} - -// A global registry of extensions. -// The generated code will register the generated descriptors by calling RegisterExtension. - -var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc) - -// RegisterExtension is called from the generated code. -func RegisterExtension(desc *ExtensionDesc) { - st := reflect.TypeOf(desc.ExtendedType).Elem() - m := extensionMaps[st] - if m == nil { - m = make(map[int32]*ExtensionDesc) - extensionMaps[st] = m - } - if _, ok := m[desc.Field]; ok { - panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field))) - } - m[desc.Field] = desc -} - -// RegisteredExtensions returns a map of the registered extensions of a -// protocol buffer struct, indexed by the extension number. -// The argument pb should be a nil pointer to the struct type. -func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc { - return extensionMaps[reflect.TypeOf(pb).Elem()] -} - -// extensionAsLegacyType converts an value in the storage type as the API type. -// See Extension.value. -func extensionAsLegacyType(v interface{}) interface{} { - switch rv := reflect.ValueOf(v); rv.Kind() { - case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: - // Represent primitive types as a pointer to the value. - rv2 := reflect.New(rv.Type()) - rv2.Elem().Set(rv) - v = rv2.Interface() - case reflect.Ptr: - // Represent slice types as the value itself. - switch rv.Type().Elem().Kind() { - case reflect.Slice: - if rv.IsNil() { - v = reflect.Zero(rv.Type().Elem()).Interface() - } else { - v = rv.Elem().Interface() - } - } - } - return v -} - -// extensionAsStorageType converts an value in the API type as the storage type. -// See Extension.value. -func extensionAsStorageType(v interface{}) interface{} { - switch rv := reflect.ValueOf(v); rv.Kind() { - case reflect.Ptr: - // Represent slice types as the value itself. - switch rv.Type().Elem().Kind() { - case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: - if rv.IsNil() { - v = reflect.Zero(rv.Type().Elem()).Interface() - } else { - v = rv.Elem().Interface() - } - } - case reflect.Slice: - // Represent slice types as a pointer to the value. - if rv.Type().Elem().Kind() != reflect.Uint8 { - rv2 := reflect.New(rv.Type()) - rv2.Elem().Set(rv) - v = rv2.Interface() - } - } - return v -} diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go deleted file mode 100644 index 70fbda53..00000000 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ /dev/null @@ -1,965 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* -Package proto converts data structures to and from the wire format of -protocol buffers. It works in concert with the Go source code generated -for .proto files by the protocol compiler. - -A summary of the properties of the protocol buffer interface -for a protocol buffer variable v: - - - Names are turned from camel_case to CamelCase for export. - - There are no methods on v to set fields; just treat - them as structure fields. - - There are getters that return a field's value if set, - and return the field's default value if unset. - The getters work even if the receiver is a nil message. - - The zero value for a struct is its correct initialization state. - All desired fields must be set before marshaling. - - A Reset() method will restore a protobuf struct to its zero state. - - Non-repeated fields are pointers to the values; nil means unset. - That is, optional or required field int32 f becomes F *int32. - - Repeated fields are slices. - - Helper functions are available to aid the setting of fields. - msg.Foo = proto.String("hello") // set field - - Constants are defined to hold the default values of all fields that - have them. They have the form Default_StructName_FieldName. - Because the getter methods handle defaulted values, - direct use of these constants should be rare. - - Enums are given type names and maps from names to values. - Enum values are prefixed by the enclosing message's name, or by the - enum's type name if it is a top-level enum. Enum types have a String - method, and a Enum method to assist in message construction. - - Nested messages, groups and enums have type names prefixed with the name of - the surrounding message type. - - Extensions are given descriptor names that start with E_, - followed by an underscore-delimited list of the nested messages - that contain it (if any) followed by the CamelCased name of the - extension field itself. HasExtension, ClearExtension, GetExtension - and SetExtension are functions for manipulating extensions. - - Oneof field sets are given a single field in their message, - with distinguished wrapper types for each possible field value. - - Marshal and Unmarshal are functions to encode and decode the wire format. - -When the .proto file specifies `syntax="proto3"`, there are some differences: - - - Non-repeated fields of non-message type are values instead of pointers. - - Enum types do not get an Enum method. - -The simplest way to describe this is to see an example. -Given file test.proto, containing - - package example; - - enum FOO { X = 17; } - - message Test { - required string label = 1; - optional int32 type = 2 [default=77]; - repeated int64 reps = 3; - optional group OptionalGroup = 4 { - required string RequiredField = 5; - } - oneof union { - int32 number = 6; - string name = 7; - } - } - -The resulting file, test.pb.go, is: - - package example - - import proto "github.com/golang/protobuf/proto" - import math "math" - - type FOO int32 - const ( - FOO_X FOO = 17 - ) - var FOO_name = map[int32]string{ - 17: "X", - } - var FOO_value = map[string]int32{ - "X": 17, - } - - func (x FOO) Enum() *FOO { - p := new(FOO) - *p = x - return p - } - func (x FOO) String() string { - return proto.EnumName(FOO_name, int32(x)) - } - func (x *FOO) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FOO_value, data) - if err != nil { - return err - } - *x = FOO(value) - return nil - } - - type Test struct { - Label *string `protobuf:"bytes,1,req,name=label" json:"label,omitempty"` - Type *int32 `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"` - Reps []int64 `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"` - Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"` - // Types that are valid to be assigned to Union: - // *Test_Number - // *Test_Name - Union isTest_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` - } - func (m *Test) Reset() { *m = Test{} } - func (m *Test) String() string { return proto.CompactTextString(m) } - func (*Test) ProtoMessage() {} - - type isTest_Union interface { - isTest_Union() - } - - type Test_Number struct { - Number int32 `protobuf:"varint,6,opt,name=number"` - } - type Test_Name struct { - Name string `protobuf:"bytes,7,opt,name=name"` - } - - func (*Test_Number) isTest_Union() {} - func (*Test_Name) isTest_Union() {} - - func (m *Test) GetUnion() isTest_Union { - if m != nil { - return m.Union - } - return nil - } - const Default_Test_Type int32 = 77 - - func (m *Test) GetLabel() string { - if m != nil && m.Label != nil { - return *m.Label - } - return "" - } - - func (m *Test) GetType() int32 { - if m != nil && m.Type != nil { - return *m.Type - } - return Default_Test_Type - } - - func (m *Test) GetOptionalgroup() *Test_OptionalGroup { - if m != nil { - return m.Optionalgroup - } - return nil - } - - type Test_OptionalGroup struct { - RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"` - } - func (m *Test_OptionalGroup) Reset() { *m = Test_OptionalGroup{} } - func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) } - - func (m *Test_OptionalGroup) GetRequiredField() string { - if m != nil && m.RequiredField != nil { - return *m.RequiredField - } - return "" - } - - func (m *Test) GetNumber() int32 { - if x, ok := m.GetUnion().(*Test_Number); ok { - return x.Number - } - return 0 - } - - func (m *Test) GetName() string { - if x, ok := m.GetUnion().(*Test_Name); ok { - return x.Name - } - return "" - } - - func init() { - proto.RegisterEnum("example.FOO", FOO_name, FOO_value) - } - -To create and play with a Test object: - - package main - - import ( - "log" - - "github.com/golang/protobuf/proto" - pb "./example.pb" - ) - - func main() { - test := &pb.Test{ - Label: proto.String("hello"), - Type: proto.Int32(17), - Reps: []int64{1, 2, 3}, - Optionalgroup: &pb.Test_OptionalGroup{ - RequiredField: proto.String("good bye"), - }, - Union: &pb.Test_Name{"fred"}, - } - data, err := proto.Marshal(test) - if err != nil { - log.Fatal("marshaling error: ", err) - } - newTest := &pb.Test{} - err = proto.Unmarshal(data, newTest) - if err != nil { - log.Fatal("unmarshaling error: ", err) - } - // Now test and newTest contain the same data. - if test.GetLabel() != newTest.GetLabel() { - log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel()) - } - // Use a type switch to determine which oneof was set. - switch u := test.Union.(type) { - case *pb.Test_Number: // u.Number contains the number. - case *pb.Test_Name: // u.Name contains the string. - } - // etc. - } -*/ -package proto - -import ( - "encoding/json" - "fmt" - "log" - "reflect" - "sort" - "strconv" - "sync" -) - -// RequiredNotSetError is an error type returned by either Marshal or Unmarshal. -// Marshal reports this when a required field is not initialized. -// Unmarshal reports this when a required field is missing from the wire data. -type RequiredNotSetError struct{ field string } - -func (e *RequiredNotSetError) Error() string { - if e.field == "" { - return fmt.Sprintf("proto: required field not set") - } - return fmt.Sprintf("proto: required field %q not set", e.field) -} -func (e *RequiredNotSetError) RequiredNotSet() bool { - return true -} - -type invalidUTF8Error struct{ field string } - -func (e *invalidUTF8Error) Error() string { - if e.field == "" { - return "proto: invalid UTF-8 detected" - } - return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field) -} -func (e *invalidUTF8Error) InvalidUTF8() bool { - return true -} - -// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8. -// This error should not be exposed to the external API as such errors should -// be recreated with the field information. -var errInvalidUTF8 = &invalidUTF8Error{} - -// isNonFatal reports whether the error is either a RequiredNotSet error -// or a InvalidUTF8 error. -func isNonFatal(err error) bool { - if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() { - return true - } - if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() { - return true - } - return false -} - -type nonFatal struct{ E error } - -// Merge merges err into nf and reports whether it was successful. -// Otherwise it returns false for any fatal non-nil errors. -func (nf *nonFatal) Merge(err error) (ok bool) { - if err == nil { - return true // not an error - } - if !isNonFatal(err) { - return false // fatal error - } - if nf.E == nil { - nf.E = err // store first instance of non-fatal error - } - return true -} - -// Message is implemented by generated protocol buffer messages. -type Message interface { - Reset() - String() string - ProtoMessage() -} - -// A Buffer is a buffer manager for marshaling and unmarshaling -// protocol buffers. It may be reused between invocations to -// reduce memory usage. It is not necessary to use a Buffer; -// the global functions Marshal and Unmarshal create a -// temporary Buffer and are fine for most applications. -type Buffer struct { - buf []byte // encode/decode byte stream - index int // read point - - deterministic bool -} - -// NewBuffer allocates a new Buffer and initializes its internal data to -// the contents of the argument slice. -func NewBuffer(e []byte) *Buffer { - return &Buffer{buf: e} -} - -// Reset resets the Buffer, ready for marshaling a new protocol buffer. -func (p *Buffer) Reset() { - p.buf = p.buf[0:0] // for reading/writing - p.index = 0 // for reading -} - -// SetBuf replaces the internal buffer with the slice, -// ready for unmarshaling the contents of the slice. -func (p *Buffer) SetBuf(s []byte) { - p.buf = s - p.index = 0 -} - -// Bytes returns the contents of the Buffer. -func (p *Buffer) Bytes() []byte { return p.buf } - -// SetDeterministic sets whether to use deterministic serialization. -// -// Deterministic serialization guarantees that for a given binary, equal -// messages will always be serialized to the same bytes. This implies: -// -// - Repeated serialization of a message will return the same bytes. -// - Different processes of the same binary (which may be executing on -// different machines) will serialize equal messages to the same bytes. -// -// Note that the deterministic serialization is NOT canonical across -// languages. It is not guaranteed to remain stable over time. It is unstable -// across different builds with schema changes due to unknown fields. -// Users who need canonical serialization (e.g., persistent storage in a -// canonical form, fingerprinting, etc.) should define their own -// canonicalization specification and implement their own serializer rather -// than relying on this API. -// -// If deterministic serialization is requested, map entries will be sorted -// by keys in lexicographical order. This is an implementation detail and -// subject to change. -func (p *Buffer) SetDeterministic(deterministic bool) { - p.deterministic = deterministic -} - -/* - * Helper routines for simplifying the creation of optional fields of basic type. - */ - -// Bool is a helper routine that allocates a new bool value -// to store v and returns a pointer to it. -func Bool(v bool) *bool { - return &v -} - -// Int32 is a helper routine that allocates a new int32 value -// to store v and returns a pointer to it. -func Int32(v int32) *int32 { - return &v -} - -// Int is a helper routine that allocates a new int32 value -// to store v and returns a pointer to it, but unlike Int32 -// its argument value is an int. -func Int(v int) *int32 { - p := new(int32) - *p = int32(v) - return p -} - -// Int64 is a helper routine that allocates a new int64 value -// to store v and returns a pointer to it. -func Int64(v int64) *int64 { - return &v -} - -// Float32 is a helper routine that allocates a new float32 value -// to store v and returns a pointer to it. -func Float32(v float32) *float32 { - return &v -} - -// Float64 is a helper routine that allocates a new float64 value -// to store v and returns a pointer to it. -func Float64(v float64) *float64 { - return &v -} - -// Uint32 is a helper routine that allocates a new uint32 value -// to store v and returns a pointer to it. -func Uint32(v uint32) *uint32 { - return &v -} - -// Uint64 is a helper routine that allocates a new uint64 value -// to store v and returns a pointer to it. -func Uint64(v uint64) *uint64 { - return &v -} - -// String is a helper routine that allocates a new string value -// to store v and returns a pointer to it. -func String(v string) *string { - return &v -} - -// EnumName is a helper function to simplify printing protocol buffer enums -// by name. Given an enum map and a value, it returns a useful string. -func EnumName(m map[int32]string, v int32) string { - s, ok := m[v] - if ok { - return s - } - return strconv.Itoa(int(v)) -} - -// UnmarshalJSONEnum is a helper function to simplify recovering enum int values -// from their JSON-encoded representation. Given a map from the enum's symbolic -// names to its int values, and a byte buffer containing the JSON-encoded -// value, it returns an int32 that can be cast to the enum type by the caller. -// -// The function can deal with both JSON representations, numeric and symbolic. -func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) { - if data[0] == '"' { - // New style: enums are strings. - var repr string - if err := json.Unmarshal(data, &repr); err != nil { - return -1, err - } - val, ok := m[repr] - if !ok { - return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr) - } - return val, nil - } - // Old style: enums are ints. - var val int32 - if err := json.Unmarshal(data, &val); err != nil { - return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName) - } - return val, nil -} - -// DebugPrint dumps the encoded data in b in a debugging format with a header -// including the string s. Used in testing but made available for general debugging. -func (p *Buffer) DebugPrint(s string, b []byte) { - var u uint64 - - obuf := p.buf - index := p.index - p.buf = b - p.index = 0 - depth := 0 - - fmt.Printf("\n--- %s ---\n", s) - -out: - for { - for i := 0; i < depth; i++ { - fmt.Print(" ") - } - - index := p.index - if index == len(p.buf) { - break - } - - op, err := p.DecodeVarint() - if err != nil { - fmt.Printf("%3d: fetching op err %v\n", index, err) - break out - } - tag := op >> 3 - wire := op & 7 - - switch wire { - default: - fmt.Printf("%3d: t=%3d unknown wire=%d\n", - index, tag, wire) - break out - - case WireBytes: - var r []byte - - r, err = p.DecodeRawBytes(false) - if err != nil { - break out - } - fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r)) - if len(r) <= 6 { - for i := 0; i < len(r); i++ { - fmt.Printf(" %.2x", r[i]) - } - } else { - for i := 0; i < 3; i++ { - fmt.Printf(" %.2x", r[i]) - } - fmt.Printf(" ..") - for i := len(r) - 3; i < len(r); i++ { - fmt.Printf(" %.2x", r[i]) - } - } - fmt.Printf("\n") - - case WireFixed32: - u, err = p.DecodeFixed32() - if err != nil { - fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u) - - case WireFixed64: - u, err = p.DecodeFixed64() - if err != nil { - fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u) - - case WireVarint: - u, err = p.DecodeVarint() - if err != nil { - fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err) - break out - } - fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u) - - case WireStartGroup: - fmt.Printf("%3d: t=%3d start\n", index, tag) - depth++ - - case WireEndGroup: - depth-- - fmt.Printf("%3d: t=%3d end\n", index, tag) - } - } - - if depth != 0 { - fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth) - } - fmt.Printf("\n") - - p.buf = obuf - p.index = index -} - -// SetDefaults sets unset protocol buffer fields to their default values. -// It only modifies fields that are both unset and have defined defaults. -// It recursively sets default values in any non-nil sub-messages. -func SetDefaults(pb Message) { - setDefaults(reflect.ValueOf(pb), true, false) -} - -// v is a pointer to a struct. -func setDefaults(v reflect.Value, recur, zeros bool) { - v = v.Elem() - - defaultMu.RLock() - dm, ok := defaults[v.Type()] - defaultMu.RUnlock() - if !ok { - dm = buildDefaultMessage(v.Type()) - defaultMu.Lock() - defaults[v.Type()] = dm - defaultMu.Unlock() - } - - for _, sf := range dm.scalars { - f := v.Field(sf.index) - if !f.IsNil() { - // field already set - continue - } - dv := sf.value - if dv == nil && !zeros { - // no explicit default, and don't want to set zeros - continue - } - fptr := f.Addr().Interface() // **T - // TODO: Consider batching the allocations we do here. - switch sf.kind { - case reflect.Bool: - b := new(bool) - if dv != nil { - *b = dv.(bool) - } - *(fptr.(**bool)) = b - case reflect.Float32: - f := new(float32) - if dv != nil { - *f = dv.(float32) - } - *(fptr.(**float32)) = f - case reflect.Float64: - f := new(float64) - if dv != nil { - *f = dv.(float64) - } - *(fptr.(**float64)) = f - case reflect.Int32: - // might be an enum - if ft := f.Type(); ft != int32PtrType { - // enum - f.Set(reflect.New(ft.Elem())) - if dv != nil { - f.Elem().SetInt(int64(dv.(int32))) - } - } else { - // int32 field - i := new(int32) - if dv != nil { - *i = dv.(int32) - } - *(fptr.(**int32)) = i - } - case reflect.Int64: - i := new(int64) - if dv != nil { - *i = dv.(int64) - } - *(fptr.(**int64)) = i - case reflect.String: - s := new(string) - if dv != nil { - *s = dv.(string) - } - *(fptr.(**string)) = s - case reflect.Uint8: - // exceptional case: []byte - var b []byte - if dv != nil { - db := dv.([]byte) - b = make([]byte, len(db)) - copy(b, db) - } else { - b = []byte{} - } - *(fptr.(*[]byte)) = b - case reflect.Uint32: - u := new(uint32) - if dv != nil { - *u = dv.(uint32) - } - *(fptr.(**uint32)) = u - case reflect.Uint64: - u := new(uint64) - if dv != nil { - *u = dv.(uint64) - } - *(fptr.(**uint64)) = u - default: - log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind) - } - } - - for _, ni := range dm.nested { - f := v.Field(ni) - // f is *T or []*T or map[T]*T - switch f.Kind() { - case reflect.Ptr: - if f.IsNil() { - continue - } - setDefaults(f, recur, zeros) - - case reflect.Slice: - for i := 0; i < f.Len(); i++ { - e := f.Index(i) - if e.IsNil() { - continue - } - setDefaults(e, recur, zeros) - } - - case reflect.Map: - for _, k := range f.MapKeys() { - e := f.MapIndex(k) - if e.IsNil() { - continue - } - setDefaults(e, recur, zeros) - } - } - } -} - -var ( - // defaults maps a protocol buffer struct type to a slice of the fields, - // with its scalar fields set to their proto-declared non-zero default values. - defaultMu sync.RWMutex - defaults = make(map[reflect.Type]defaultMessage) - - int32PtrType = reflect.TypeOf((*int32)(nil)) -) - -// defaultMessage represents information about the default values of a message. -type defaultMessage struct { - scalars []scalarField - nested []int // struct field index of nested messages -} - -type scalarField struct { - index int // struct field index - kind reflect.Kind // element type (the T in *T or []T) - value interface{} // the proto-declared default value, or nil -} - -// t is a struct type. -func buildDefaultMessage(t reflect.Type) (dm defaultMessage) { - sprop := GetProperties(t) - for _, prop := range sprop.Prop { - fi, ok := sprop.decoderTags.get(prop.Tag) - if !ok { - // XXX_unrecognized - continue - } - ft := t.Field(fi).Type - - sf, nested, err := fieldDefault(ft, prop) - switch { - case err != nil: - log.Print(err) - case nested: - dm.nested = append(dm.nested, fi) - case sf != nil: - sf.index = fi - dm.scalars = append(dm.scalars, *sf) - } - } - - return dm -} - -// fieldDefault returns the scalarField for field type ft. -// sf will be nil if the field can not have a default. -// nestedMessage will be true if this is a nested message. -// Note that sf.index is not set on return. -func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) { - var canHaveDefault bool - switch ft.Kind() { - case reflect.Ptr: - if ft.Elem().Kind() == reflect.Struct { - nestedMessage = true - } else { - canHaveDefault = true // proto2 scalar field - } - - case reflect.Slice: - switch ft.Elem().Kind() { - case reflect.Ptr: - nestedMessage = true // repeated message - case reflect.Uint8: - canHaveDefault = true // bytes field - } - - case reflect.Map: - if ft.Elem().Kind() == reflect.Ptr { - nestedMessage = true // map with message values - } - } - - if !canHaveDefault { - if nestedMessage { - return nil, true, nil - } - return nil, false, nil - } - - // We now know that ft is a pointer or slice. - sf = &scalarField{kind: ft.Elem().Kind()} - - // scalar fields without defaults - if !prop.HasDefault { - return sf, false, nil - } - - // a scalar field: either *T or []byte - switch ft.Elem().Kind() { - case reflect.Bool: - x, err := strconv.ParseBool(prop.Default) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err) - } - sf.value = x - case reflect.Float32: - x, err := strconv.ParseFloat(prop.Default, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err) - } - sf.value = float32(x) - case reflect.Float64: - x, err := strconv.ParseFloat(prop.Default, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err) - } - sf.value = x - case reflect.Int32: - x, err := strconv.ParseInt(prop.Default, 10, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err) - } - sf.value = int32(x) - case reflect.Int64: - x, err := strconv.ParseInt(prop.Default, 10, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err) - } - sf.value = x - case reflect.String: - sf.value = prop.Default - case reflect.Uint8: - // []byte (not *uint8) - sf.value = []byte(prop.Default) - case reflect.Uint32: - x, err := strconv.ParseUint(prop.Default, 10, 32) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err) - } - sf.value = uint32(x) - case reflect.Uint64: - x, err := strconv.ParseUint(prop.Default, 10, 64) - if err != nil { - return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err) - } - sf.value = x - default: - return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind()) - } - - return sf, false, nil -} - -// mapKeys returns a sort.Interface to be used for sorting the map keys. -// Map fields may have key types of non-float scalars, strings and enums. -func mapKeys(vs []reflect.Value) sort.Interface { - s := mapKeySorter{vs: vs} - - // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps. - if len(vs) == 0 { - return s - } - switch vs[0].Kind() { - case reflect.Int32, reflect.Int64: - s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() } - case reflect.Uint32, reflect.Uint64: - s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() } - case reflect.Bool: - s.less = func(a, b reflect.Value) bool { return !a.Bool() && b.Bool() } // false < true - case reflect.String: - s.less = func(a, b reflect.Value) bool { return a.String() < b.String() } - default: - panic(fmt.Sprintf("unsupported map key type: %v", vs[0].Kind())) - } - - return s -} - -type mapKeySorter struct { - vs []reflect.Value - less func(a, b reflect.Value) bool -} - -func (s mapKeySorter) Len() int { return len(s.vs) } -func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] } -func (s mapKeySorter) Less(i, j int) bool { - return s.less(s.vs[i], s.vs[j]) -} - -// isProto3Zero reports whether v is a zero proto3 value. -func isProto3Zero(v reflect.Value) bool { - switch v.Kind() { - case reflect.Bool: - return !v.Bool() - case reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint32, reflect.Uint64: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.String: - return v.String() == "" - } - return false -} - -const ( - // ProtoPackageIsVersion3 is referenced from generated protocol buffer files - // to assert that that code is compatible with this version of the proto package. - ProtoPackageIsVersion3 = true - - // ProtoPackageIsVersion2 is referenced from generated protocol buffer files - // to assert that that code is compatible with this version of the proto package. - ProtoPackageIsVersion2 = true - - // ProtoPackageIsVersion1 is referenced from generated protocol buffer files - // to assert that that code is compatible with this version of the proto package. - ProtoPackageIsVersion1 = true -) - -// InternalMessageInfo is a type used internally by generated .pb.go files. -// This type is not intended to be used by non-generated code. -// This type is not subject to any compatibility guarantee. -type InternalMessageInfo struct { - marshal *marshalInfo - unmarshal *unmarshalInfo - merge *mergeInfo - discard *discardInfo -} diff --git a/vendor/github.com/golang/protobuf/proto/message_set.go b/vendor/github.com/golang/protobuf/proto/message_set.go deleted file mode 100644 index f48a7567..00000000 --- a/vendor/github.com/golang/protobuf/proto/message_set.go +++ /dev/null @@ -1,181 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Support for message sets. - */ - -import ( - "errors" -) - -// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. -// A message type ID is required for storing a protocol buffer in a message set. -var errNoMessageTypeID = errors.New("proto does not have a message type ID") - -// The first two types (_MessageSet_Item and messageSet) -// model what the protocol compiler produces for the following protocol message: -// message MessageSet { -// repeated group Item = 1 { -// required int32 type_id = 2; -// required string message = 3; -// }; -// } -// That is the MessageSet wire format. We can't use a proto to generate these -// because that would introduce a circular dependency between it and this package. - -type _MessageSet_Item struct { - TypeId *int32 `protobuf:"varint,2,req,name=type_id"` - Message []byte `protobuf:"bytes,3,req,name=message"` -} - -type messageSet struct { - Item []*_MessageSet_Item `protobuf:"group,1,rep"` - XXX_unrecognized []byte - // TODO: caching? -} - -// Make sure messageSet is a Message. -var _ Message = (*messageSet)(nil) - -// messageTypeIder is an interface satisfied by a protocol buffer type -// that may be stored in a MessageSet. -type messageTypeIder interface { - MessageTypeId() int32 -} - -func (ms *messageSet) find(pb Message) *_MessageSet_Item { - mti, ok := pb.(messageTypeIder) - if !ok { - return nil - } - id := mti.MessageTypeId() - for _, item := range ms.Item { - if *item.TypeId == id { - return item - } - } - return nil -} - -func (ms *messageSet) Has(pb Message) bool { - return ms.find(pb) != nil -} - -func (ms *messageSet) Unmarshal(pb Message) error { - if item := ms.find(pb); item != nil { - return Unmarshal(item.Message, pb) - } - if _, ok := pb.(messageTypeIder); !ok { - return errNoMessageTypeID - } - return nil // TODO: return error instead? -} - -func (ms *messageSet) Marshal(pb Message) error { - msg, err := Marshal(pb) - if err != nil { - return err - } - if item := ms.find(pb); item != nil { - // reuse existing item - item.Message = msg - return nil - } - - mti, ok := pb.(messageTypeIder) - if !ok { - return errNoMessageTypeID - } - - mtid := mti.MessageTypeId() - ms.Item = append(ms.Item, &_MessageSet_Item{ - TypeId: &mtid, - Message: msg, - }) - return nil -} - -func (ms *messageSet) Reset() { *ms = messageSet{} } -func (ms *messageSet) String() string { return CompactTextString(ms) } -func (*messageSet) ProtoMessage() {} - -// Support for the message_set_wire_format message option. - -func skipVarint(buf []byte) []byte { - i := 0 - for ; buf[i]&0x80 != 0; i++ { - } - return buf[i+1:] -} - -// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. -// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option. -func unmarshalMessageSet(buf []byte, exts interface{}) error { - var m map[int32]Extension - switch exts := exts.(type) { - case *XXX_InternalExtensions: - m = exts.extensionsWrite() - case map[int32]Extension: - m = exts - default: - return errors.New("proto: not an extension map") - } - - ms := new(messageSet) - if err := Unmarshal(buf, ms); err != nil { - return err - } - for _, item := range ms.Item { - id := *item.TypeId - msg := item.Message - - // Restore wire type and field number varint, plus length varint. - // Be careful to preserve duplicate items. - b := EncodeVarint(uint64(id)<<3 | WireBytes) - if ext, ok := m[id]; ok { - // Existing data; rip off the tag and length varint - // so we join the new data correctly. - // We can assume that ext.enc is set because we are unmarshaling. - o := ext.enc[len(b):] // skip wire type and field number - _, n := DecodeVarint(o) // calculate length of length varint - o = o[n:] // skip length varint - msg = append(o, msg...) // join old data and new data - } - b = append(b, EncodeVarint(uint64(len(msg)))...) - b = append(b, msg...) - - m[id] = Extension{enc: b} - } - return nil -} diff --git a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go deleted file mode 100644 index 94fa9194..00000000 --- a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go +++ /dev/null @@ -1,360 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// +build purego appengine js - -// This file contains an implementation of proto field accesses using package reflect. -// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can -// be used on App Engine. - -package proto - -import ( - "reflect" - "sync" -) - -const unsafeAllowed = false - -// A field identifies a field in a struct, accessible from a pointer. -// In this implementation, a field is identified by the sequence of field indices -// passed to reflect's FieldByIndex. -type field []int - -// toField returns a field equivalent to the given reflect field. -func toField(f *reflect.StructField) field { - return f.Index -} - -// invalidField is an invalid field identifier. -var invalidField = field(nil) - -// zeroField is a noop when calling pointer.offset. -var zeroField = field([]int{}) - -// IsValid reports whether the field identifier is valid. -func (f field) IsValid() bool { return f != nil } - -// The pointer type is for the table-driven decoder. -// The implementation here uses a reflect.Value of pointer type to -// create a generic pointer. In pointer_unsafe.go we use unsafe -// instead of reflect to implement the same (but faster) interface. -type pointer struct { - v reflect.Value -} - -// toPointer converts an interface of pointer type to a pointer -// that points to the same target. -func toPointer(i *Message) pointer { - return pointer{v: reflect.ValueOf(*i)} -} - -// toAddrPointer converts an interface to a pointer that points to -// the interface data. -func toAddrPointer(i *interface{}, isptr, deref bool) pointer { - v := reflect.ValueOf(*i) - u := reflect.New(v.Type()) - u.Elem().Set(v) - if deref { - u = u.Elem() - } - return pointer{v: u} -} - -// valToPointer converts v to a pointer. v must be of pointer type. -func valToPointer(v reflect.Value) pointer { - return pointer{v: v} -} - -// offset converts from a pointer to a structure to a pointer to -// one of its fields. -func (p pointer) offset(f field) pointer { - return pointer{v: p.v.Elem().FieldByIndex(f).Addr()} -} - -func (p pointer) isNil() bool { - return p.v.IsNil() -} - -// grow updates the slice s in place to make it one element longer. -// s must be addressable. -// Returns the (addressable) new element. -func grow(s reflect.Value) reflect.Value { - n, m := s.Len(), s.Cap() - if n < m { - s.SetLen(n + 1) - } else { - s.Set(reflect.Append(s, reflect.Zero(s.Type().Elem()))) - } - return s.Index(n) -} - -func (p pointer) toInt64() *int64 { - return p.v.Interface().(*int64) -} -func (p pointer) toInt64Ptr() **int64 { - return p.v.Interface().(**int64) -} -func (p pointer) toInt64Slice() *[]int64 { - return p.v.Interface().(*[]int64) -} - -var int32ptr = reflect.TypeOf((*int32)(nil)) - -func (p pointer) toInt32() *int32 { - return p.v.Convert(int32ptr).Interface().(*int32) -} - -// The toInt32Ptr/Slice methods don't work because of enums. -// Instead, we must use set/get methods for the int32ptr/slice case. -/* - func (p pointer) toInt32Ptr() **int32 { - return p.v.Interface().(**int32) -} - func (p pointer) toInt32Slice() *[]int32 { - return p.v.Interface().(*[]int32) -} -*/ -func (p pointer) getInt32Ptr() *int32 { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - return p.v.Elem().Interface().(*int32) - } - // an enum - return p.v.Elem().Convert(int32PtrType).Interface().(*int32) -} -func (p pointer) setInt32Ptr(v int32) { - // Allocate value in a *int32. Possibly convert that to a *enum. - // Then assign it to a **int32 or **enum. - // Note: we can convert *int32 to *enum, but we can't convert - // **int32 to **enum! - p.v.Elem().Set(reflect.ValueOf(&v).Convert(p.v.Type().Elem())) -} - -// getInt32Slice copies []int32 from p as a new slice. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) getInt32Slice() []int32 { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - return p.v.Elem().Interface().([]int32) - } - // an enum - // Allocate a []int32, then assign []enum's values into it. - // Note: we can't convert []enum to []int32. - slice := p.v.Elem() - s := make([]int32, slice.Len()) - for i := 0; i < slice.Len(); i++ { - s[i] = int32(slice.Index(i).Int()) - } - return s -} - -// setInt32Slice copies []int32 into p as a new slice. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) setInt32Slice(v []int32) { - if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) { - // raw int32 type - p.v.Elem().Set(reflect.ValueOf(v)) - return - } - // an enum - // Allocate a []enum, then assign []int32's values into it. - // Note: we can't convert []enum to []int32. - slice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v)) - for i, x := range v { - slice.Index(i).SetInt(int64(x)) - } - p.v.Elem().Set(slice) -} -func (p pointer) appendInt32Slice(v int32) { - grow(p.v.Elem()).SetInt(int64(v)) -} - -func (p pointer) toUint64() *uint64 { - return p.v.Interface().(*uint64) -} -func (p pointer) toUint64Ptr() **uint64 { - return p.v.Interface().(**uint64) -} -func (p pointer) toUint64Slice() *[]uint64 { - return p.v.Interface().(*[]uint64) -} -func (p pointer) toUint32() *uint32 { - return p.v.Interface().(*uint32) -} -func (p pointer) toUint32Ptr() **uint32 { - return p.v.Interface().(**uint32) -} -func (p pointer) toUint32Slice() *[]uint32 { - return p.v.Interface().(*[]uint32) -} -func (p pointer) toBool() *bool { - return p.v.Interface().(*bool) -} -func (p pointer) toBoolPtr() **bool { - return p.v.Interface().(**bool) -} -func (p pointer) toBoolSlice() *[]bool { - return p.v.Interface().(*[]bool) -} -func (p pointer) toFloat64() *float64 { - return p.v.Interface().(*float64) -} -func (p pointer) toFloat64Ptr() **float64 { - return p.v.Interface().(**float64) -} -func (p pointer) toFloat64Slice() *[]float64 { - return p.v.Interface().(*[]float64) -} -func (p pointer) toFloat32() *float32 { - return p.v.Interface().(*float32) -} -func (p pointer) toFloat32Ptr() **float32 { - return p.v.Interface().(**float32) -} -func (p pointer) toFloat32Slice() *[]float32 { - return p.v.Interface().(*[]float32) -} -func (p pointer) toString() *string { - return p.v.Interface().(*string) -} -func (p pointer) toStringPtr() **string { - return p.v.Interface().(**string) -} -func (p pointer) toStringSlice() *[]string { - return p.v.Interface().(*[]string) -} -func (p pointer) toBytes() *[]byte { - return p.v.Interface().(*[]byte) -} -func (p pointer) toBytesSlice() *[][]byte { - return p.v.Interface().(*[][]byte) -} -func (p pointer) toExtensions() *XXX_InternalExtensions { - return p.v.Interface().(*XXX_InternalExtensions) -} -func (p pointer) toOldExtensions() *map[int32]Extension { - return p.v.Interface().(*map[int32]Extension) -} -func (p pointer) getPointer() pointer { - return pointer{v: p.v.Elem()} -} -func (p pointer) setPointer(q pointer) { - p.v.Elem().Set(q.v) -} -func (p pointer) appendPointer(q pointer) { - grow(p.v.Elem()).Set(q.v) -} - -// getPointerSlice copies []*T from p as a new []pointer. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) getPointerSlice() []pointer { - if p.v.IsNil() { - return nil - } - n := p.v.Elem().Len() - s := make([]pointer, n) - for i := 0; i < n; i++ { - s[i] = pointer{v: p.v.Elem().Index(i)} - } - return s -} - -// setPointerSlice copies []pointer into p as a new []*T. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) setPointerSlice(v []pointer) { - if v == nil { - p.v.Elem().Set(reflect.New(p.v.Elem().Type()).Elem()) - return - } - s := reflect.MakeSlice(p.v.Elem().Type(), 0, len(v)) - for _, p := range v { - s = reflect.Append(s, p.v) - } - p.v.Elem().Set(s) -} - -// getInterfacePointer returns a pointer that points to the -// interface data of the interface pointed by p. -func (p pointer) getInterfacePointer() pointer { - if p.v.Elem().IsNil() { - return pointer{v: p.v.Elem()} - } - return pointer{v: p.v.Elem().Elem().Elem().Field(0).Addr()} // *interface -> interface -> *struct -> struct -} - -func (p pointer) asPointerTo(t reflect.Type) reflect.Value { - // TODO: check that p.v.Type().Elem() == t? - return p.v -} - -func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} -func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} -func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} -func atomicLoadDiscardInfo(p **discardInfo) *discardInfo { - atomicLock.Lock() - defer atomicLock.Unlock() - return *p -} -func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) { - atomicLock.Lock() - defer atomicLock.Unlock() - *p = v -} - -var atomicLock sync.Mutex diff --git a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go deleted file mode 100644 index dbfffe07..00000000 --- a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go +++ /dev/null @@ -1,313 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// +build !purego,!appengine,!js - -// This file contains the implementation of the proto field accesses using package unsafe. - -package proto - -import ( - "reflect" - "sync/atomic" - "unsafe" -) - -const unsafeAllowed = true - -// A field identifies a field in a struct, accessible from a pointer. -// In this implementation, a field is identified by its byte offset from the start of the struct. -type field uintptr - -// toField returns a field equivalent to the given reflect field. -func toField(f *reflect.StructField) field { - return field(f.Offset) -} - -// invalidField is an invalid field identifier. -const invalidField = ^field(0) - -// zeroField is a noop when calling pointer.offset. -const zeroField = field(0) - -// IsValid reports whether the field identifier is valid. -func (f field) IsValid() bool { - return f != invalidField -} - -// The pointer type below is for the new table-driven encoder/decoder. -// The implementation here uses unsafe.Pointer to create a generic pointer. -// In pointer_reflect.go we use reflect instead of unsafe to implement -// the same (but slower) interface. -type pointer struct { - p unsafe.Pointer -} - -// size of pointer -var ptrSize = unsafe.Sizeof(uintptr(0)) - -// toPointer converts an interface of pointer type to a pointer -// that points to the same target. -func toPointer(i *Message) pointer { - // Super-tricky - read pointer out of data word of interface value. - // Saves ~25ns over the equivalent: - // return valToPointer(reflect.ValueOf(*i)) - return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} -} - -// toAddrPointer converts an interface to a pointer that points to -// the interface data. -func toAddrPointer(i *interface{}, isptr, deref bool) (p pointer) { - // Super-tricky - read or get the address of data word of interface value. - if isptr { - // The interface is of pointer type, thus it is a direct interface. - // The data word is the pointer data itself. We take its address. - p = pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)} - } else { - // The interface is not of pointer type. The data word is the pointer - // to the data. - p = pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} - } - if deref { - p.p = *(*unsafe.Pointer)(p.p) - } - return p -} - -// valToPointer converts v to a pointer. v must be of pointer type. -func valToPointer(v reflect.Value) pointer { - return pointer{p: unsafe.Pointer(v.Pointer())} -} - -// offset converts from a pointer to a structure to a pointer to -// one of its fields. -func (p pointer) offset(f field) pointer { - // For safety, we should panic if !f.IsValid, however calling panic causes - // this to no longer be inlineable, which is a serious performance cost. - /* - if !f.IsValid() { - panic("invalid field") - } - */ - return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))} -} - -func (p pointer) isNil() bool { - return p.p == nil -} - -func (p pointer) toInt64() *int64 { - return (*int64)(p.p) -} -func (p pointer) toInt64Ptr() **int64 { - return (**int64)(p.p) -} -func (p pointer) toInt64Slice() *[]int64 { - return (*[]int64)(p.p) -} -func (p pointer) toInt32() *int32 { - return (*int32)(p.p) -} - -// See pointer_reflect.go for why toInt32Ptr/Slice doesn't exist. -/* - func (p pointer) toInt32Ptr() **int32 { - return (**int32)(p.p) - } - func (p pointer) toInt32Slice() *[]int32 { - return (*[]int32)(p.p) - } -*/ -func (p pointer) getInt32Ptr() *int32 { - return *(**int32)(p.p) -} -func (p pointer) setInt32Ptr(v int32) { - *(**int32)(p.p) = &v -} - -// getInt32Slice loads a []int32 from p. -// The value returned is aliased with the original slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) getInt32Slice() []int32 { - return *(*[]int32)(p.p) -} - -// setInt32Slice stores a []int32 to p. -// The value set is aliased with the input slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) setInt32Slice(v []int32) { - *(*[]int32)(p.p) = v -} - -// TODO: Can we get rid of appendInt32Slice and use setInt32Slice instead? -func (p pointer) appendInt32Slice(v int32) { - s := (*[]int32)(p.p) - *s = append(*s, v) -} - -func (p pointer) toUint64() *uint64 { - return (*uint64)(p.p) -} -func (p pointer) toUint64Ptr() **uint64 { - return (**uint64)(p.p) -} -func (p pointer) toUint64Slice() *[]uint64 { - return (*[]uint64)(p.p) -} -func (p pointer) toUint32() *uint32 { - return (*uint32)(p.p) -} -func (p pointer) toUint32Ptr() **uint32 { - return (**uint32)(p.p) -} -func (p pointer) toUint32Slice() *[]uint32 { - return (*[]uint32)(p.p) -} -func (p pointer) toBool() *bool { - return (*bool)(p.p) -} -func (p pointer) toBoolPtr() **bool { - return (**bool)(p.p) -} -func (p pointer) toBoolSlice() *[]bool { - return (*[]bool)(p.p) -} -func (p pointer) toFloat64() *float64 { - return (*float64)(p.p) -} -func (p pointer) toFloat64Ptr() **float64 { - return (**float64)(p.p) -} -func (p pointer) toFloat64Slice() *[]float64 { - return (*[]float64)(p.p) -} -func (p pointer) toFloat32() *float32 { - return (*float32)(p.p) -} -func (p pointer) toFloat32Ptr() **float32 { - return (**float32)(p.p) -} -func (p pointer) toFloat32Slice() *[]float32 { - return (*[]float32)(p.p) -} -func (p pointer) toString() *string { - return (*string)(p.p) -} -func (p pointer) toStringPtr() **string { - return (**string)(p.p) -} -func (p pointer) toStringSlice() *[]string { - return (*[]string)(p.p) -} -func (p pointer) toBytes() *[]byte { - return (*[]byte)(p.p) -} -func (p pointer) toBytesSlice() *[][]byte { - return (*[][]byte)(p.p) -} -func (p pointer) toExtensions() *XXX_InternalExtensions { - return (*XXX_InternalExtensions)(p.p) -} -func (p pointer) toOldExtensions() *map[int32]Extension { - return (*map[int32]Extension)(p.p) -} - -// getPointerSlice loads []*T from p as a []pointer. -// The value returned is aliased with the original slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) getPointerSlice() []pointer { - // Super-tricky - p should point to a []*T where T is a - // message type. We load it as []pointer. - return *(*[]pointer)(p.p) -} - -// setPointerSlice stores []pointer into p as a []*T. -// The value set is aliased with the input slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) setPointerSlice(v []pointer) { - // Super-tricky - p should point to a []*T where T is a - // message type. We store it as []pointer. - *(*[]pointer)(p.p) = v -} - -// getPointer loads the pointer at p and returns it. -func (p pointer) getPointer() pointer { - return pointer{p: *(*unsafe.Pointer)(p.p)} -} - -// setPointer stores the pointer q at p. -func (p pointer) setPointer(q pointer) { - *(*unsafe.Pointer)(p.p) = q.p -} - -// append q to the slice pointed to by p. -func (p pointer) appendPointer(q pointer) { - s := (*[]unsafe.Pointer)(p.p) - *s = append(*s, q.p) -} - -// getInterfacePointer returns a pointer that points to the -// interface data of the interface pointed by p. -func (p pointer) getInterfacePointer() pointer { - // Super-tricky - read pointer out of data word of interface value. - return pointer{p: (*(*[2]unsafe.Pointer)(p.p))[1]} -} - -// asPointerTo returns a reflect.Value that is a pointer to an -// object of type t stored at p. -func (p pointer) asPointerTo(t reflect.Type) reflect.Value { - return reflect.NewAt(t, p.p) -} - -func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo { - return (*unmarshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) -} -func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) -} -func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo { - return (*marshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) -} -func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) -} -func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo { - return (*mergeInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) -} -func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) -} -func atomicLoadDiscardInfo(p **discardInfo) *discardInfo { - return (*discardInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p)))) -} -func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v)) -} diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go deleted file mode 100644 index a4b8c0cd..00000000 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ /dev/null @@ -1,544 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -/* - * Routines for encoding data into the wire format for protocol buffers. - */ - -import ( - "fmt" - "log" - "reflect" - "sort" - "strconv" - "strings" - "sync" -) - -const debug bool = false - -// Constants that identify the encoding of a value on the wire. -const ( - WireVarint = 0 - WireFixed64 = 1 - WireBytes = 2 - WireStartGroup = 3 - WireEndGroup = 4 - WireFixed32 = 5 -) - -// tagMap is an optimization over map[int]int for typical protocol buffer -// use-cases. Encoded protocol buffers are often in tag order with small tag -// numbers. -type tagMap struct { - fastTags []int - slowTags map[int]int -} - -// tagMapFastLimit is the upper bound on the tag number that will be stored in -// the tagMap slice rather than its map. -const tagMapFastLimit = 1024 - -func (p *tagMap) get(t int) (int, bool) { - if t > 0 && t < tagMapFastLimit { - if t >= len(p.fastTags) { - return 0, false - } - fi := p.fastTags[t] - return fi, fi >= 0 - } - fi, ok := p.slowTags[t] - return fi, ok -} - -func (p *tagMap) put(t int, fi int) { - if t > 0 && t < tagMapFastLimit { - for len(p.fastTags) < t+1 { - p.fastTags = append(p.fastTags, -1) - } - p.fastTags[t] = fi - return - } - if p.slowTags == nil { - p.slowTags = make(map[int]int) - } - p.slowTags[t] = fi -} - -// StructProperties represents properties for all the fields of a struct. -// decoderTags and decoderOrigNames should only be used by the decoder. -type StructProperties struct { - Prop []*Properties // properties for each field - reqCount int // required count - decoderTags tagMap // map from proto tag to struct field number - decoderOrigNames map[string]int // map from original name to struct field number - order []int // list of struct field numbers in tag order - - // OneofTypes contains information about the oneof fields in this message. - // It is keyed by the original name of a field. - OneofTypes map[string]*OneofProperties -} - -// OneofProperties represents information about a specific field in a oneof. -type OneofProperties struct { - Type reflect.Type // pointer to generated struct type for this oneof field - Field int // struct field number of the containing oneof in the message - Prop *Properties -} - -// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec. -// See encode.go, (*Buffer).enc_struct. - -func (sp *StructProperties) Len() int { return len(sp.order) } -func (sp *StructProperties) Less(i, j int) bool { - return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag -} -func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] } - -// Properties represents the protocol-specific behavior of a single struct field. -type Properties struct { - Name string // name of the field, for error messages - OrigName string // original name before protocol compiler (always set) - JSONName string // name to use for JSON; determined by protoc - Wire string - WireType int - Tag int - Required bool - Optional bool - Repeated bool - Packed bool // relevant for repeated primitives only - Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field - oneof bool // whether this is a oneof field - - Default string // default value - HasDefault bool // whether an explicit default was provided - - stype reflect.Type // set for struct types only - sprop *StructProperties // set for struct types only - - mtype reflect.Type // set for map types only - MapKeyProp *Properties // set for map types only - MapValProp *Properties // set for map types only -} - -// String formats the properties in the protobuf struct field tag style. -func (p *Properties) String() string { - s := p.Wire - s += "," - s += strconv.Itoa(p.Tag) - if p.Required { - s += ",req" - } - if p.Optional { - s += ",opt" - } - if p.Repeated { - s += ",rep" - } - if p.Packed { - s += ",packed" - } - s += ",name=" + p.OrigName - if p.JSONName != p.OrigName { - s += ",json=" + p.JSONName - } - if p.proto3 { - s += ",proto3" - } - if p.oneof { - s += ",oneof" - } - if len(p.Enum) > 0 { - s += ",enum=" + p.Enum - } - if p.HasDefault { - s += ",def=" + p.Default - } - return s -} - -// Parse populates p by parsing a string in the protobuf struct field tag style. -func (p *Properties) Parse(s string) { - // "bytes,49,opt,name=foo,def=hello!" - fields := strings.Split(s, ",") // breaks def=, but handled below. - if len(fields) < 2 { - log.Printf("proto: tag has too few fields: %q", s) - return - } - - p.Wire = fields[0] - switch p.Wire { - case "varint": - p.WireType = WireVarint - case "fixed32": - p.WireType = WireFixed32 - case "fixed64": - p.WireType = WireFixed64 - case "zigzag32": - p.WireType = WireVarint - case "zigzag64": - p.WireType = WireVarint - case "bytes", "group": - p.WireType = WireBytes - // no numeric converter for non-numeric types - default: - log.Printf("proto: tag has unknown wire type: %q", s) - return - } - - var err error - p.Tag, err = strconv.Atoi(fields[1]) - if err != nil { - return - } - -outer: - for i := 2; i < len(fields); i++ { - f := fields[i] - switch { - case f == "req": - p.Required = true - case f == "opt": - p.Optional = true - case f == "rep": - p.Repeated = true - case f == "packed": - p.Packed = true - case strings.HasPrefix(f, "name="): - p.OrigName = f[5:] - case strings.HasPrefix(f, "json="): - p.JSONName = f[5:] - case strings.HasPrefix(f, "enum="): - p.Enum = f[5:] - case f == "proto3": - p.proto3 = true - case f == "oneof": - p.oneof = true - case strings.HasPrefix(f, "def="): - p.HasDefault = true - p.Default = f[4:] // rest of string - if i+1 < len(fields) { - // Commas aren't escaped, and def is always last. - p.Default += "," + strings.Join(fields[i+1:], ",") - break outer - } - } - } -} - -var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem() - -// setFieldProps initializes the field properties for submessages and maps. -func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, lockGetProp bool) { - switch t1 := typ; t1.Kind() { - case reflect.Ptr: - if t1.Elem().Kind() == reflect.Struct { - p.stype = t1.Elem() - } - - case reflect.Slice: - if t2 := t1.Elem(); t2.Kind() == reflect.Ptr && t2.Elem().Kind() == reflect.Struct { - p.stype = t2.Elem() - } - - case reflect.Map: - p.mtype = t1 - p.MapKeyProp = &Properties{} - p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.MapValProp = &Properties{} - vtype := p.mtype.Elem() - if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { - // The value type is not a message (*T) or bytes ([]byte), - // so we need encoders for the pointer to this type. - vtype = reflect.PtrTo(vtype) - } - p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) - } - - if p.stype != nil { - if lockGetProp { - p.sprop = GetProperties(p.stype) - } else { - p.sprop = getPropertiesLocked(p.stype) - } - } -} - -var ( - marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() -) - -// Init populates the properties from a protocol buffer struct tag. -func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) { - p.init(typ, name, tag, f, true) -} - -func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) { - // "bytes,49,opt,def=hello!" - p.Name = name - p.OrigName = name - if tag == "" { - return - } - p.Parse(tag) - p.setFieldProps(typ, f, lockGetProp) -} - -var ( - propertiesMu sync.RWMutex - propertiesMap = make(map[reflect.Type]*StructProperties) -) - -// GetProperties returns the list of properties for the type represented by t. -// t must represent a generated struct type of a protocol message. -func GetProperties(t reflect.Type) *StructProperties { - if t.Kind() != reflect.Struct { - panic("proto: type must have kind struct") - } - - // Most calls to GetProperties in a long-running program will be - // retrieving details for types we have seen before. - propertiesMu.RLock() - sprop, ok := propertiesMap[t] - propertiesMu.RUnlock() - if ok { - return sprop - } - - propertiesMu.Lock() - sprop = getPropertiesLocked(t) - propertiesMu.Unlock() - return sprop -} - -type ( - oneofFuncsIface interface { - XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) - } - oneofWrappersIface interface { - XXX_OneofWrappers() []interface{} - } -) - -// getPropertiesLocked requires that propertiesMu is held. -func getPropertiesLocked(t reflect.Type) *StructProperties { - if prop, ok := propertiesMap[t]; ok { - return prop - } - - prop := new(StructProperties) - // in case of recursive protos, fill this in now. - propertiesMap[t] = prop - - // build properties - prop.Prop = make([]*Properties, t.NumField()) - prop.order = make([]int, t.NumField()) - - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - p := new(Properties) - name := f.Name - p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false) - - oneof := f.Tag.Get("protobuf_oneof") // special case - if oneof != "" { - // Oneof fields don't use the traditional protobuf tag. - p.OrigName = oneof - } - prop.Prop[i] = p - prop.order[i] = i - if debug { - print(i, " ", f.Name, " ", t.String(), " ") - if p.Tag > 0 { - print(p.String()) - } - print("\n") - } - } - - // Re-order prop.order. - sort.Sort(prop) - - var oots []interface{} - switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { - case oneofFuncsIface: - _, _, _, oots = m.XXX_OneofFuncs() - case oneofWrappersIface: - oots = m.XXX_OneofWrappers() - } - if len(oots) > 0 { - // Interpret oneof metadata. - prop.OneofTypes = make(map[string]*OneofProperties) - for _, oot := range oots { - oop := &OneofProperties{ - Type: reflect.ValueOf(oot).Type(), // *T - Prop: new(Properties), - } - sft := oop.Type.Elem().Field(0) - oop.Prop.Name = sft.Name - oop.Prop.Parse(sft.Tag.Get("protobuf")) - // There will be exactly one interface field that - // this new value is assignable to. - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - if f.Type.Kind() != reflect.Interface { - continue - } - if !oop.Type.AssignableTo(f.Type) { - continue - } - oop.Field = i - break - } - prop.OneofTypes[oop.Prop.OrigName] = oop - } - } - - // build required counts - // build tags - reqCount := 0 - prop.decoderOrigNames = make(map[string]int) - for i, p := range prop.Prop { - if strings.HasPrefix(p.Name, "XXX_") { - // Internal fields should not appear in tags/origNames maps. - // They are handled specially when encoding and decoding. - continue - } - if p.Required { - reqCount++ - } - prop.decoderTags.put(p.Tag, i) - prop.decoderOrigNames[p.OrigName] = i - } - prop.reqCount = reqCount - - return prop -} - -// A global registry of enum types. -// The generated code will register the generated maps by calling RegisterEnum. - -var enumValueMaps = make(map[string]map[string]int32) - -// RegisterEnum is called from the generated code to install the enum descriptor -// maps into the global table to aid parsing text format protocol buffers. -func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) { - if _, ok := enumValueMaps[typeName]; ok { - panic("proto: duplicate enum registered: " + typeName) - } - enumValueMaps[typeName] = valueMap -} - -// EnumValueMap returns the mapping from names to integers of the -// enum type enumType, or a nil if not found. -func EnumValueMap(enumType string) map[string]int32 { - return enumValueMaps[enumType] -} - -// A registry of all linked message types. -// The string is a fully-qualified proto name ("pkg.Message"). -var ( - protoTypedNils = make(map[string]Message) // a map from proto names to typed nil pointers - protoMapTypes = make(map[string]reflect.Type) // a map from proto names to map types - revProtoTypes = make(map[reflect.Type]string) -) - -// RegisterType is called from generated code and maps from the fully qualified -// proto name to the type (pointer to struct) of the protocol buffer. -func RegisterType(x Message, name string) { - if _, ok := protoTypedNils[name]; ok { - // TODO: Some day, make this a panic. - log.Printf("proto: duplicate proto type registered: %s", name) - return - } - t := reflect.TypeOf(x) - if v := reflect.ValueOf(x); v.Kind() == reflect.Ptr && v.Pointer() == 0 { - // Generated code always calls RegisterType with nil x. - // This check is just for extra safety. - protoTypedNils[name] = x - } else { - protoTypedNils[name] = reflect.Zero(t).Interface().(Message) - } - revProtoTypes[t] = name -} - -// RegisterMapType is called from generated code and maps from the fully qualified -// proto name to the native map type of the proto map definition. -func RegisterMapType(x interface{}, name string) { - if reflect.TypeOf(x).Kind() != reflect.Map { - panic(fmt.Sprintf("RegisterMapType(%T, %q); want map", x, name)) - } - if _, ok := protoMapTypes[name]; ok { - log.Printf("proto: duplicate proto type registered: %s", name) - return - } - t := reflect.TypeOf(x) - protoMapTypes[name] = t - revProtoTypes[t] = name -} - -// MessageName returns the fully-qualified proto name for the given message type. -func MessageName(x Message) string { - type xname interface { - XXX_MessageName() string - } - if m, ok := x.(xname); ok { - return m.XXX_MessageName() - } - return revProtoTypes[reflect.TypeOf(x)] -} - -// MessageType returns the message type (pointer to struct) for a named message. -// The type is not guaranteed to implement proto.Message if the name refers to a -// map entry. -func MessageType(name string) reflect.Type { - if t, ok := protoTypedNils[name]; ok { - return reflect.TypeOf(t) - } - return protoMapTypes[name] -} - -// A registry of all linked proto files. -var ( - protoFiles = make(map[string][]byte) // file name => fileDescriptor -) - -// RegisterFile is called from generated code and maps from the -// full file name of a .proto file to its compressed FileDescriptorProto. -func RegisterFile(filename string, fileDescriptor []byte) { - protoFiles[filename] = fileDescriptor -} - -// FileDescriptor returns the compressed FileDescriptorProto for a .proto file. -func FileDescriptor(filename string) []byte { return protoFiles[filename] } diff --git a/vendor/github.com/golang/protobuf/proto/table_marshal.go b/vendor/github.com/golang/protobuf/proto/table_marshal.go deleted file mode 100644 index 5cb11fa9..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_marshal.go +++ /dev/null @@ -1,2776 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "errors" - "fmt" - "math" - "reflect" - "sort" - "strconv" - "strings" - "sync" - "sync/atomic" - "unicode/utf8" -) - -// a sizer takes a pointer to a field and the size of its tag, computes the size of -// the encoded data. -type sizer func(pointer, int) int - -// a marshaler takes a byte slice, a pointer to a field, and its tag (in wire format), -// marshals the field to the end of the slice, returns the slice and error (if any). -type marshaler func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) - -// marshalInfo is the information used for marshaling a message. -type marshalInfo struct { - typ reflect.Type - fields []*marshalFieldInfo - unrecognized field // offset of XXX_unrecognized - extensions field // offset of XXX_InternalExtensions - v1extensions field // offset of XXX_extensions - sizecache field // offset of XXX_sizecache - initialized int32 // 0 -- only typ is set, 1 -- fully initialized - messageset bool // uses message set wire format - hasmarshaler bool // has custom marshaler - sync.RWMutex // protect extElems map, also for initialization - extElems map[int32]*marshalElemInfo // info of extension elements -} - -// marshalFieldInfo is the information used for marshaling a field of a message. -type marshalFieldInfo struct { - field field - wiretag uint64 // tag in wire format - tagsize int // size of tag in wire format - sizer sizer - marshaler marshaler - isPointer bool - required bool // field is required - name string // name of the field, for error reporting - oneofElems map[reflect.Type]*marshalElemInfo // info of oneof elements -} - -// marshalElemInfo is the information used for marshaling an extension or oneof element. -type marshalElemInfo struct { - wiretag uint64 // tag in wire format - tagsize int // size of tag in wire format - sizer sizer - marshaler marshaler - isptr bool // elem is pointer typed, thus interface of this type is a direct interface (extension only) - deref bool // dereference the pointer before operating on it; implies isptr -} - -var ( - marshalInfoMap = map[reflect.Type]*marshalInfo{} - marshalInfoLock sync.Mutex -) - -// getMarshalInfo returns the information to marshal a given type of message. -// The info it returns may not necessarily initialized. -// t is the type of the message (NOT the pointer to it). -func getMarshalInfo(t reflect.Type) *marshalInfo { - marshalInfoLock.Lock() - u, ok := marshalInfoMap[t] - if !ok { - u = &marshalInfo{typ: t} - marshalInfoMap[t] = u - } - marshalInfoLock.Unlock() - return u -} - -// Size is the entry point from generated code, -// and should be ONLY called by generated code. -// It computes the size of encoded data of msg. -// a is a pointer to a place to store cached marshal info. -func (a *InternalMessageInfo) Size(msg Message) int { - u := getMessageMarshalInfo(msg, a) - ptr := toPointer(&msg) - if ptr.isNil() { - // We get here if msg is a typed nil ((*SomeMessage)(nil)), - // so it satisfies the interface, and msg == nil wouldn't - // catch it. We don't want crash in this case. - return 0 - } - return u.size(ptr) -} - -// Marshal is the entry point from generated code, -// and should be ONLY called by generated code. -// It marshals msg to the end of b. -// a is a pointer to a place to store cached marshal info. -func (a *InternalMessageInfo) Marshal(b []byte, msg Message, deterministic bool) ([]byte, error) { - u := getMessageMarshalInfo(msg, a) - ptr := toPointer(&msg) - if ptr.isNil() { - // We get here if msg is a typed nil ((*SomeMessage)(nil)), - // so it satisfies the interface, and msg == nil wouldn't - // catch it. We don't want crash in this case. - return b, ErrNil - } - return u.marshal(b, ptr, deterministic) -} - -func getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *marshalInfo { - // u := a.marshal, but atomically. - // We use an atomic here to ensure memory consistency. - u := atomicLoadMarshalInfo(&a.marshal) - if u == nil { - // Get marshal information from type of message. - t := reflect.ValueOf(msg).Type() - if t.Kind() != reflect.Ptr { - panic(fmt.Sprintf("cannot handle non-pointer message type %v", t)) - } - u = getMarshalInfo(t.Elem()) - // Store it in the cache for later users. - // a.marshal = u, but atomically. - atomicStoreMarshalInfo(&a.marshal, u) - } - return u -} - -// size is the main function to compute the size of the encoded data of a message. -// ptr is the pointer to the message. -func (u *marshalInfo) size(ptr pointer) int { - if atomic.LoadInt32(&u.initialized) == 0 { - u.computeMarshalInfo() - } - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if u.hasmarshaler { - m := ptr.asPointerTo(u.typ).Interface().(Marshaler) - b, _ := m.Marshal() - return len(b) - } - - n := 0 - for _, f := range u.fields { - if f.isPointer && ptr.offset(f.field).getPointer().isNil() { - // nil pointer always marshals to nothing - continue - } - n += f.sizer(ptr.offset(f.field), f.tagsize) - } - if u.extensions.IsValid() { - e := ptr.offset(u.extensions).toExtensions() - if u.messageset { - n += u.sizeMessageSet(e) - } else { - n += u.sizeExtensions(e) - } - } - if u.v1extensions.IsValid() { - m := *ptr.offset(u.v1extensions).toOldExtensions() - n += u.sizeV1Extensions(m) - } - if u.unrecognized.IsValid() { - s := *ptr.offset(u.unrecognized).toBytes() - n += len(s) - } - // cache the result for use in marshal - if u.sizecache.IsValid() { - atomic.StoreInt32(ptr.offset(u.sizecache).toInt32(), int32(n)) - } - return n -} - -// cachedsize gets the size from cache. If there is no cache (i.e. message is not generated), -// fall back to compute the size. -func (u *marshalInfo) cachedsize(ptr pointer) int { - if u.sizecache.IsValid() { - return int(atomic.LoadInt32(ptr.offset(u.sizecache).toInt32())) - } - return u.size(ptr) -} - -// marshal is the main function to marshal a message. It takes a byte slice and appends -// the encoded data to the end of the slice, returns the slice and error (if any). -// ptr is the pointer to the message. -// If deterministic is true, map is marshaled in deterministic order. -func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte, error) { - if atomic.LoadInt32(&u.initialized) == 0 { - u.computeMarshalInfo() - } - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if u.hasmarshaler { - m := ptr.asPointerTo(u.typ).Interface().(Marshaler) - b1, err := m.Marshal() - b = append(b, b1...) - return b, err - } - - var err, errLater error - // The old marshaler encodes extensions at beginning. - if u.extensions.IsValid() { - e := ptr.offset(u.extensions).toExtensions() - if u.messageset { - b, err = u.appendMessageSet(b, e, deterministic) - } else { - b, err = u.appendExtensions(b, e, deterministic) - } - if err != nil { - return b, err - } - } - if u.v1extensions.IsValid() { - m := *ptr.offset(u.v1extensions).toOldExtensions() - b, err = u.appendV1Extensions(b, m, deterministic) - if err != nil { - return b, err - } - } - for _, f := range u.fields { - if f.required { - if ptr.offset(f.field).getPointer().isNil() { - // Required field is not set. - // We record the error but keep going, to give a complete marshaling. - if errLater == nil { - errLater = &RequiredNotSetError{f.name} - } - continue - } - } - if f.isPointer && ptr.offset(f.field).getPointer().isNil() { - // nil pointer always marshals to nothing - continue - } - b, err = f.marshaler(b, ptr.offset(f.field), f.wiretag, deterministic) - if err != nil { - if err1, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errLater == nil { - errLater = &RequiredNotSetError{f.name + "." + err1.field} - } - continue - } - if err == errRepeatedHasNil { - err = errors.New("proto: repeated field " + f.name + " has nil element") - } - if err == errInvalidUTF8 { - if errLater == nil { - fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name - errLater = &invalidUTF8Error{fullName} - } - continue - } - return b, err - } - } - if u.unrecognized.IsValid() { - s := *ptr.offset(u.unrecognized).toBytes() - b = append(b, s...) - } - return b, errLater -} - -// computeMarshalInfo initializes the marshal info. -func (u *marshalInfo) computeMarshalInfo() { - u.Lock() - defer u.Unlock() - if u.initialized != 0 { // non-atomic read is ok as it is protected by the lock - return - } - - t := u.typ - u.unrecognized = invalidField - u.extensions = invalidField - u.v1extensions = invalidField - u.sizecache = invalidField - - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - if reflect.PtrTo(t).Implements(marshalerType) { - u.hasmarshaler = true - atomic.StoreInt32(&u.initialized, 1) - return - } - - // get oneof implementers - var oneofImplementers []interface{} - switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { - case oneofFuncsIface: - _, _, _, oneofImplementers = m.XXX_OneofFuncs() - case oneofWrappersIface: - oneofImplementers = m.XXX_OneofWrappers() - } - - n := t.NumField() - - // deal with XXX fields first - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - if !strings.HasPrefix(f.Name, "XXX_") { - continue - } - switch f.Name { - case "XXX_sizecache": - u.sizecache = toField(&f) - case "XXX_unrecognized": - u.unrecognized = toField(&f) - case "XXX_InternalExtensions": - u.extensions = toField(&f) - u.messageset = f.Tag.Get("protobuf_messageset") == "1" - case "XXX_extensions": - u.v1extensions = toField(&f) - case "XXX_NoUnkeyedLiteral": - // nothing to do - default: - panic("unknown XXX field: " + f.Name) - } - n-- - } - - // normal fields - fields := make([]marshalFieldInfo, n) // batch allocation - u.fields = make([]*marshalFieldInfo, 0, n) - for i, j := 0, 0; i < t.NumField(); i++ { - f := t.Field(i) - - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - field := &fields[j] - j++ - field.name = f.Name - u.fields = append(u.fields, field) - if f.Tag.Get("protobuf_oneof") != "" { - field.computeOneofFieldInfo(&f, oneofImplementers) - continue - } - if f.Tag.Get("protobuf") == "" { - // field has no tag (not in generated message), ignore it - u.fields = u.fields[:len(u.fields)-1] - j-- - continue - } - field.computeMarshalFieldInfo(&f) - } - - // fields are marshaled in tag order on the wire. - sort.Sort(byTag(u.fields)) - - atomic.StoreInt32(&u.initialized, 1) -} - -// helper for sorting fields by tag -type byTag []*marshalFieldInfo - -func (a byTag) Len() int { return len(a) } -func (a byTag) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag } - -// getExtElemInfo returns the information to marshal an extension element. -// The info it returns is initialized. -func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo { - // get from cache first - u.RLock() - e, ok := u.extElems[desc.Field] - u.RUnlock() - if ok { - return e - } - - t := reflect.TypeOf(desc.ExtensionType) // pointer or slice to basic type or struct - tags := strings.Split(desc.Tag, ",") - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - if t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct { - t = t.Elem() - } - sizer, marshaler := typeMarshaler(t, tags, false, false) - var deref bool - if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { - t = reflect.PtrTo(t) - deref = true - } - e = &marshalElemInfo{ - wiretag: uint64(tag)<<3 | wt, - tagsize: SizeVarint(uint64(tag) << 3), - sizer: sizer, - marshaler: marshaler, - isptr: t.Kind() == reflect.Ptr, - deref: deref, - } - - // update cache - u.Lock() - if u.extElems == nil { - u.extElems = make(map[int32]*marshalElemInfo) - } - u.extElems[desc.Field] = e - u.Unlock() - return e -} - -// computeMarshalFieldInfo fills up the information to marshal a field. -func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) { - // parse protobuf tag of the field. - // tag has format of "bytes,49,opt,name=foo,def=hello!" - tags := strings.Split(f.Tag.Get("protobuf"), ",") - if tags[0] == "" { - return - } - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - if tags[2] == "req" { - fi.required = true - } - fi.setTag(f, tag, wt) - fi.setMarshaler(f, tags) -} - -func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) { - fi.field = toField(f) - fi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. - fi.isPointer = true - fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f) - fi.oneofElems = make(map[reflect.Type]*marshalElemInfo) - - ityp := f.Type // interface type - for _, o := range oneofImplementers { - t := reflect.TypeOf(o) - if !t.Implements(ityp) { - continue - } - sf := t.Elem().Field(0) // oneof implementer is a struct with a single field - tags := strings.Split(sf.Tag.Get("protobuf"), ",") - tag, err := strconv.Atoi(tags[1]) - if err != nil { - panic("tag is not an integer") - } - wt := wiretype(tags[0]) - sizer, marshaler := typeMarshaler(sf.Type, tags, false, true) // oneof should not omit any zero value - fi.oneofElems[t.Elem()] = &marshalElemInfo{ - wiretag: uint64(tag)<<3 | wt, - tagsize: SizeVarint(uint64(tag) << 3), - sizer: sizer, - marshaler: marshaler, - } - } -} - -// wiretype returns the wire encoding of the type. -func wiretype(encoding string) uint64 { - switch encoding { - case "fixed32": - return WireFixed32 - case "fixed64": - return WireFixed64 - case "varint", "zigzag32", "zigzag64": - return WireVarint - case "bytes": - return WireBytes - case "group": - return WireStartGroup - } - panic("unknown wire type " + encoding) -} - -// setTag fills up the tag (in wire format) and its size in the info of a field. -func (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt uint64) { - fi.field = toField(f) - fi.wiretag = uint64(tag)<<3 | wt - fi.tagsize = SizeVarint(uint64(tag) << 3) -} - -// setMarshaler fills up the sizer and marshaler in the info of a field. -func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) { - switch f.Type.Kind() { - case reflect.Map: - // map field - fi.isPointer = true - fi.sizer, fi.marshaler = makeMapMarshaler(f) - return - case reflect.Ptr, reflect.Slice: - fi.isPointer = true - } - fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false) -} - -// typeMarshaler returns the sizer and marshaler of a given field. -// t is the type of the field. -// tags is the generated "protobuf" tag of the field. -// If nozero is true, zero value is not marshaled to the wire. -// If oneof is true, it is a oneof field. -func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, marshaler) { - encoding := tags[0] - - pointer := false - slice := false - if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { - slice = true - t = t.Elem() - } - if t.Kind() == reflect.Ptr { - pointer = true - t = t.Elem() - } - - packed := false - proto3 := false - validateUTF8 := true - for i := 2; i < len(tags); i++ { - if tags[i] == "packed" { - packed = true - } - if tags[i] == "proto3" { - proto3 = true - } - } - validateUTF8 = validateUTF8 && proto3 - - switch t.Kind() { - case reflect.Bool: - if pointer { - return sizeBoolPtr, appendBoolPtr - } - if slice { - if packed { - return sizeBoolPackedSlice, appendBoolPackedSlice - } - return sizeBoolSlice, appendBoolSlice - } - if nozero { - return sizeBoolValueNoZero, appendBoolValueNoZero - } - return sizeBoolValue, appendBoolValue - case reflect.Uint32: - switch encoding { - case "fixed32": - if pointer { - return sizeFixed32Ptr, appendFixed32Ptr - } - if slice { - if packed { - return sizeFixed32PackedSlice, appendFixed32PackedSlice - } - return sizeFixed32Slice, appendFixed32Slice - } - if nozero { - return sizeFixed32ValueNoZero, appendFixed32ValueNoZero - } - return sizeFixed32Value, appendFixed32Value - case "varint": - if pointer { - return sizeVarint32Ptr, appendVarint32Ptr - } - if slice { - if packed { - return sizeVarint32PackedSlice, appendVarint32PackedSlice - } - return sizeVarint32Slice, appendVarint32Slice - } - if nozero { - return sizeVarint32ValueNoZero, appendVarint32ValueNoZero - } - return sizeVarint32Value, appendVarint32Value - } - case reflect.Int32: - switch encoding { - case "fixed32": - if pointer { - return sizeFixedS32Ptr, appendFixedS32Ptr - } - if slice { - if packed { - return sizeFixedS32PackedSlice, appendFixedS32PackedSlice - } - return sizeFixedS32Slice, appendFixedS32Slice - } - if nozero { - return sizeFixedS32ValueNoZero, appendFixedS32ValueNoZero - } - return sizeFixedS32Value, appendFixedS32Value - case "varint": - if pointer { - return sizeVarintS32Ptr, appendVarintS32Ptr - } - if slice { - if packed { - return sizeVarintS32PackedSlice, appendVarintS32PackedSlice - } - return sizeVarintS32Slice, appendVarintS32Slice - } - if nozero { - return sizeVarintS32ValueNoZero, appendVarintS32ValueNoZero - } - return sizeVarintS32Value, appendVarintS32Value - case "zigzag32": - if pointer { - return sizeZigzag32Ptr, appendZigzag32Ptr - } - if slice { - if packed { - return sizeZigzag32PackedSlice, appendZigzag32PackedSlice - } - return sizeZigzag32Slice, appendZigzag32Slice - } - if nozero { - return sizeZigzag32ValueNoZero, appendZigzag32ValueNoZero - } - return sizeZigzag32Value, appendZigzag32Value - } - case reflect.Uint64: - switch encoding { - case "fixed64": - if pointer { - return sizeFixed64Ptr, appendFixed64Ptr - } - if slice { - if packed { - return sizeFixed64PackedSlice, appendFixed64PackedSlice - } - return sizeFixed64Slice, appendFixed64Slice - } - if nozero { - return sizeFixed64ValueNoZero, appendFixed64ValueNoZero - } - return sizeFixed64Value, appendFixed64Value - case "varint": - if pointer { - return sizeVarint64Ptr, appendVarint64Ptr - } - if slice { - if packed { - return sizeVarint64PackedSlice, appendVarint64PackedSlice - } - return sizeVarint64Slice, appendVarint64Slice - } - if nozero { - return sizeVarint64ValueNoZero, appendVarint64ValueNoZero - } - return sizeVarint64Value, appendVarint64Value - } - case reflect.Int64: - switch encoding { - case "fixed64": - if pointer { - return sizeFixedS64Ptr, appendFixedS64Ptr - } - if slice { - if packed { - return sizeFixedS64PackedSlice, appendFixedS64PackedSlice - } - return sizeFixedS64Slice, appendFixedS64Slice - } - if nozero { - return sizeFixedS64ValueNoZero, appendFixedS64ValueNoZero - } - return sizeFixedS64Value, appendFixedS64Value - case "varint": - if pointer { - return sizeVarintS64Ptr, appendVarintS64Ptr - } - if slice { - if packed { - return sizeVarintS64PackedSlice, appendVarintS64PackedSlice - } - return sizeVarintS64Slice, appendVarintS64Slice - } - if nozero { - return sizeVarintS64ValueNoZero, appendVarintS64ValueNoZero - } - return sizeVarintS64Value, appendVarintS64Value - case "zigzag64": - if pointer { - return sizeZigzag64Ptr, appendZigzag64Ptr - } - if slice { - if packed { - return sizeZigzag64PackedSlice, appendZigzag64PackedSlice - } - return sizeZigzag64Slice, appendZigzag64Slice - } - if nozero { - return sizeZigzag64ValueNoZero, appendZigzag64ValueNoZero - } - return sizeZigzag64Value, appendZigzag64Value - } - case reflect.Float32: - if pointer { - return sizeFloat32Ptr, appendFloat32Ptr - } - if slice { - if packed { - return sizeFloat32PackedSlice, appendFloat32PackedSlice - } - return sizeFloat32Slice, appendFloat32Slice - } - if nozero { - return sizeFloat32ValueNoZero, appendFloat32ValueNoZero - } - return sizeFloat32Value, appendFloat32Value - case reflect.Float64: - if pointer { - return sizeFloat64Ptr, appendFloat64Ptr - } - if slice { - if packed { - return sizeFloat64PackedSlice, appendFloat64PackedSlice - } - return sizeFloat64Slice, appendFloat64Slice - } - if nozero { - return sizeFloat64ValueNoZero, appendFloat64ValueNoZero - } - return sizeFloat64Value, appendFloat64Value - case reflect.String: - if validateUTF8 { - if pointer { - return sizeStringPtr, appendUTF8StringPtr - } - if slice { - return sizeStringSlice, appendUTF8StringSlice - } - if nozero { - return sizeStringValueNoZero, appendUTF8StringValueNoZero - } - return sizeStringValue, appendUTF8StringValue - } - if pointer { - return sizeStringPtr, appendStringPtr - } - if slice { - return sizeStringSlice, appendStringSlice - } - if nozero { - return sizeStringValueNoZero, appendStringValueNoZero - } - return sizeStringValue, appendStringValue - case reflect.Slice: - if slice { - return sizeBytesSlice, appendBytesSlice - } - if oneof { - // Oneof bytes field may also have "proto3" tag. - // We want to marshal it as a oneof field. Do this - // check before the proto3 check. - return sizeBytesOneof, appendBytesOneof - } - if proto3 { - return sizeBytes3, appendBytes3 - } - return sizeBytes, appendBytes - case reflect.Struct: - switch encoding { - case "group": - if slice { - return makeGroupSliceMarshaler(getMarshalInfo(t)) - } - return makeGroupMarshaler(getMarshalInfo(t)) - case "bytes": - if slice { - return makeMessageSliceMarshaler(getMarshalInfo(t)) - } - return makeMessageMarshaler(getMarshalInfo(t)) - } - } - panic(fmt.Sprintf("unknown or mismatched type: type: %v, wire type: %v", t, encoding)) -} - -// Below are functions to size/marshal a specific type of a field. -// They are stored in the field's info, and called by function pointers. -// They have type sizer or marshaler. - -func sizeFixed32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFixed32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFixed32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFixed32Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - return (4 + tagsize) * len(s) -} -func sizeFixed32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFixedS32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFixedS32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFixedS32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - return (4 + tagsize) * len(s) -} -func sizeFixedS32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFloat32Value(_ pointer, tagsize int) int { - return 4 + tagsize -} -func sizeFloat32ValueNoZero(ptr pointer, tagsize int) int { - v := math.Float32bits(*ptr.toFloat32()) - if v == 0 { - return 0 - } - return 4 + tagsize -} -func sizeFloat32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toFloat32Ptr() - if p == nil { - return 0 - } - return 4 + tagsize -} -func sizeFloat32Slice(ptr pointer, tagsize int) int { - s := *ptr.toFloat32Slice() - return (4 + tagsize) * len(s) -} -func sizeFloat32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toFloat32Slice() - if len(s) == 0 { - return 0 - } - return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize -} -func sizeFixed64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFixed64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFixed64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFixed64Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - return (8 + tagsize) * len(s) -} -func sizeFixed64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeFixedS64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFixedS64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFixedS64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - return (8 + tagsize) * len(s) -} -func sizeFixedS64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeFloat64Value(_ pointer, tagsize int) int { - return 8 + tagsize -} -func sizeFloat64ValueNoZero(ptr pointer, tagsize int) int { - v := math.Float64bits(*ptr.toFloat64()) - if v == 0 { - return 0 - } - return 8 + tagsize -} -func sizeFloat64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toFloat64Ptr() - if p == nil { - return 0 - } - return 8 + tagsize -} -func sizeFloat64Slice(ptr pointer, tagsize int) int { - s := *ptr.toFloat64Slice() - return (8 + tagsize) * len(s) -} -func sizeFloat64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toFloat64Slice() - if len(s) == 0 { - return 0 - } - return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize -} -func sizeVarint32Value(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarint32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint32() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarint32Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint32Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarint32Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarint32PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarintS32Value(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarintS32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarintS32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarint64Value(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - return SizeVarint(v) + tagsize -} -func sizeVarint64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toUint64() - if v == 0 { - return 0 - } - return SizeVarint(v) + tagsize -} -func sizeVarint64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toUint64Ptr() - if p == nil { - return 0 - } - return SizeVarint(*p) + tagsize -} -func sizeVarint64Slice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(v) + tagsize - } - return n -} -func sizeVarint64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(v) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeVarintS64Value(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v)) + tagsize -} -func sizeVarintS64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - return SizeVarint(uint64(*p)) + tagsize -} -func sizeVarintS64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) + tagsize - } - return n -} -func sizeVarintS64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeZigzag32Value(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt32() - if v == 0 { - return 0 - } - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32Ptr(ptr pointer, tagsize int) int { - p := ptr.getInt32Ptr() - if p == nil { - return 0 - } - v := *p - return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize -} -func sizeZigzag32Slice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize - } - return n -} -func sizeZigzag32PackedSlice(ptr pointer, tagsize int) int { - s := ptr.getInt32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31)))) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeZigzag64Value(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toInt64() - if v == 0 { - return 0 - } - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64Ptr(ptr pointer, tagsize int) int { - p := *ptr.toInt64Ptr() - if p == nil { - return 0 - } - v := *p - return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize -} -func sizeZigzag64Slice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize - } - return n -} -func sizeZigzag64PackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63))) - } - return n + SizeVarint(uint64(n)) + tagsize -} -func sizeBoolValue(_ pointer, tagsize int) int { - return 1 + tagsize -} -func sizeBoolValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toBool() - if !v { - return 0 - } - return 1 + tagsize -} -func sizeBoolPtr(ptr pointer, tagsize int) int { - p := *ptr.toBoolPtr() - if p == nil { - return 0 - } - return 1 + tagsize -} -func sizeBoolSlice(ptr pointer, tagsize int) int { - s := *ptr.toBoolSlice() - return (1 + tagsize) * len(s) -} -func sizeBoolPackedSlice(ptr pointer, tagsize int) int { - s := *ptr.toBoolSlice() - if len(s) == 0 { - return 0 - } - return len(s) + SizeVarint(uint64(len(s))) + tagsize -} -func sizeStringValue(ptr pointer, tagsize int) int { - v := *ptr.toString() - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringValueNoZero(ptr pointer, tagsize int) int { - v := *ptr.toString() - if v == "" { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringPtr(ptr pointer, tagsize int) int { - p := *ptr.toStringPtr() - if p == nil { - return 0 - } - v := *p - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeStringSlice(ptr pointer, tagsize int) int { - s := *ptr.toStringSlice() - n := 0 - for _, v := range s { - n += len(v) + SizeVarint(uint64(len(v))) + tagsize - } - return n -} -func sizeBytes(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - if v == nil { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytes3(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - if len(v) == 0 { - return 0 - } - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytesOneof(ptr pointer, tagsize int) int { - v := *ptr.toBytes() - return len(v) + SizeVarint(uint64(len(v))) + tagsize -} -func sizeBytesSlice(ptr pointer, tagsize int) int { - s := *ptr.toBytesSlice() - n := 0 - for _, v := range s { - n += len(v) + SizeVarint(uint64(len(v))) + tagsize - } - return n -} - -// appendFixed32 appends an encoded fixed32 to b. -func appendFixed32(b []byte, v uint32) []byte { - b = append(b, - byte(v), - byte(v>>8), - byte(v>>16), - byte(v>>24)) - return b -} - -// appendFixed64 appends an encoded fixed64 to b. -func appendFixed64(b []byte, v uint64) []byte { - b = append(b, - byte(v), - byte(v>>8), - byte(v>>16), - byte(v>>24), - byte(v>>32), - byte(v>>40), - byte(v>>48), - byte(v>>56)) - return b -} - -// appendVarint appends an encoded varint to b. -func appendVarint(b []byte, v uint64) []byte { - // TODO: make 1-byte (maybe 2-byte) case inline-able, once we - // have non-leaf inliner. - switch { - case v < 1<<7: - b = append(b, byte(v)) - case v < 1<<14: - b = append(b, - byte(v&0x7f|0x80), - byte(v>>7)) - case v < 1<<21: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte(v>>14)) - case v < 1<<28: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte(v>>21)) - case v < 1<<35: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte(v>>28)) - case v < 1<<42: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte(v>>35)) - case v < 1<<49: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte(v>>42)) - case v < 1<<56: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte(v>>49)) - case v < 1<<63: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte(v>>56)) - default: - b = append(b, - byte(v&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte((v>>56)&0x7f|0x80), - 1) - } - return b -} - -func appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, *p) - return b, nil -} -func appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - } - return b, nil -} -func appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, v) - } - return b, nil -} -func appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - return b, nil -} -func appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - return b, nil -} -func appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(*p)) - return b, nil -} -func appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, uint32(v)) - } - return b, nil -} -func appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, uint32(v)) - } - return b, nil -} -func appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float32bits(*ptr.toFloat32()) - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float32bits(*ptr.toFloat32()) - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, v) - return b, nil -} -func appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toFloat32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed32(b, math.Float32bits(*p)) - return b, nil -} -func appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed32(b, math.Float32bits(v)) - } - return b, nil -} -func appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(4*len(s))) - for _, v := range s { - b = appendFixed32(b, math.Float32bits(v)) - } - return b, nil -} -func appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, *p) - return b, nil -} -func appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - } - return b, nil -} -func appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, v) - } - return b, nil -} -func appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - return b, nil -} -func appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - return b, nil -} -func appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(*p)) - return b, nil -} -func appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, uint64(v)) - } - return b, nil -} -func appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, uint64(v)) - } - return b, nil -} -func appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float64bits(*ptr.toFloat64()) - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := math.Float64bits(*ptr.toFloat64()) - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, v) - return b, nil -} -func appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toFloat64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendFixed64(b, math.Float64bits(*p)) - return b, nil -} -func appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendFixed64(b, math.Float64bits(v)) - } - return b, nil -} -func appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toFloat64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(8*len(s))) - for _, v := range s { - b = appendFixed64(b, math.Float64bits(v)) - } - return b, nil -} -func appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - return b, nil -} -func appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toUint64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - return b, nil -} -func appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toUint64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, *p) - return b, nil -} -func appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, v) - } - return b, nil -} -func appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toUint64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(v) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, v) - } - return b, nil -} -func appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - return b, nil -} -func appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(*p)) - return b, nil -} -func appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v)) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v)) - } - return b, nil -} -func appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt32() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := ptr.getInt32Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - v := *p - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - return b, nil -} -func appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - } - return b, nil -} -func appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := ptr.getInt32Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31)))) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) - } - return b, nil -} -func appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toInt64() - if v == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toInt64Ptr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - v := *p - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - return b, nil -} -func appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - } - return b, nil -} -func appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toInt64Slice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - // compute size - n := 0 - for _, v := range s { - n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63))) - } - b = appendVarint(b, uint64(n)) - for _, v := range s { - b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63))) - } - return b, nil -} -func appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBool() - b = appendVarint(b, wiretag) - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - return b, nil -} -func appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBool() - if !v { - return b, nil - } - b = appendVarint(b, wiretag) - b = append(b, 1) - return b, nil -} - -func appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toBoolPtr() - if p == nil { - return b, nil - } - b = appendVarint(b, wiretag) - if *p { - b = append(b, 1) - } else { - b = append(b, 0) - } - return b, nil -} -func appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBoolSlice() - for _, v := range s { - b = appendVarint(b, wiretag) - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - } - return b, nil -} -func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBoolSlice() - if len(s) == 0 { - return b, nil - } - b = appendVarint(b, wiretag&^7|WireBytes) - b = appendVarint(b, uint64(len(s))) - for _, v := range s { - if v { - b = append(b, 1) - } else { - b = append(b, 0) - } - } - return b, nil -} -func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toString() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toString() - if v == "" { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - p := *ptr.toStringPtr() - if p == nil { - return b, nil - } - v := *p - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toStringSlice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - } - return b, nil -} -func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - var invalidUTF8 bool - v := *ptr.toString() - if !utf8.ValidString(v) { - invalidUTF8 = true - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - if invalidUTF8 { - return b, errInvalidUTF8 - } - return b, nil -} -func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - var invalidUTF8 bool - v := *ptr.toString() - if v == "" { - return b, nil - } - if !utf8.ValidString(v) { - invalidUTF8 = true - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - if invalidUTF8 { - return b, errInvalidUTF8 - } - return b, nil -} -func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - var invalidUTF8 bool - p := *ptr.toStringPtr() - if p == nil { - return b, nil - } - v := *p - if !utf8.ValidString(v) { - invalidUTF8 = true - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - if invalidUTF8 { - return b, errInvalidUTF8 - } - return b, nil -} -func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - var invalidUTF8 bool - s := *ptr.toStringSlice() - for _, v := range s { - if !utf8.ValidString(v) { - invalidUTF8 = true - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - } - if invalidUTF8 { - return b, errInvalidUTF8 - } - return b, nil -} -func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - if v == nil { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - if len(v) == 0 { - return b, nil - } - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - v := *ptr.toBytes() - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - return b, nil -} -func appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { - s := *ptr.toBytesSlice() - for _, v := range s { - b = appendVarint(b, wiretag) - b = appendVarint(b, uint64(len(v))) - b = append(b, v...) - } - return b, nil -} - -// makeGroupMarshaler returns the sizer and marshaler for a group. -// u is the marshal info of the underlying message. -func makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - p := ptr.getPointer() - if p.isNil() { - return 0 - } - return u.size(p) + 2*tagsize - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - p := ptr.getPointer() - if p.isNil() { - return b, nil - } - var err error - b = appendVarint(b, wiretag) // start group - b, err = u.marshal(b, p, deterministic) - b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - return b, err - } -} - -// makeGroupSliceMarshaler returns the sizer and marshaler for a group slice. -// u is the marshal info of the underlying message. -func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - s := ptr.getPointerSlice() - n := 0 - for _, v := range s { - if v.isNil() { - continue - } - n += u.size(v) + 2*tagsize - } - return n - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - s := ptr.getPointerSlice() - var err error - var nerr nonFatal - for _, v := range s { - if v.isNil() { - return b, errRepeatedHasNil - } - b = appendVarint(b, wiretag) // start group - b, err = u.marshal(b, v, deterministic) - b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if !nerr.Merge(err) { - if err == ErrNil { - err = errRepeatedHasNil - } - return b, err - } - } - return b, nerr.E - } -} - -// makeMessageMarshaler returns the sizer and marshaler for a message field. -// u is the marshal info of the message. -func makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - p := ptr.getPointer() - if p.isNil() { - return 0 - } - siz := u.size(p) - return siz + SizeVarint(uint64(siz)) + tagsize - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - p := ptr.getPointer() - if p.isNil() { - return b, nil - } - b = appendVarint(b, wiretag) - siz := u.cachedsize(p) - b = appendVarint(b, uint64(siz)) - return u.marshal(b, p, deterministic) - } -} - -// makeMessageSliceMarshaler returns the sizer and marshaler for a message slice. -// u is the marshal info of the message. -func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { - return func(ptr pointer, tagsize int) int { - s := ptr.getPointerSlice() - n := 0 - for _, v := range s { - if v.isNil() { - continue - } - siz := u.size(v) - n += siz + SizeVarint(uint64(siz)) + tagsize - } - return n - }, - func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { - s := ptr.getPointerSlice() - var err error - var nerr nonFatal - for _, v := range s { - if v.isNil() { - return b, errRepeatedHasNil - } - b = appendVarint(b, wiretag) - siz := u.cachedsize(v) - b = appendVarint(b, uint64(siz)) - b, err = u.marshal(b, v, deterministic) - - if !nerr.Merge(err) { - if err == ErrNil { - err = errRepeatedHasNil - } - return b, err - } - } - return b, nerr.E - } -} - -// makeMapMarshaler returns the sizer and marshaler for a map field. -// f is the pointer to the reflect data structure of the field. -func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { - // figure out key and value type - t := f.Type - keyType := t.Key() - valType := t.Elem() - keyTags := strings.Split(f.Tag.Get("protobuf_key"), ",") - valTags := strings.Split(f.Tag.Get("protobuf_val"), ",") - keySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map - valSizer, valMarshaler := typeMarshaler(valType, valTags, false, false) // don't omit zero value in map - keyWireTag := 1<<3 | wiretype(keyTags[0]) - valWireTag := 2<<3 | wiretype(valTags[0]) - - // We create an interface to get the addresses of the map key and value. - // If value is pointer-typed, the interface is a direct interface, the - // idata itself is the value. Otherwise, the idata is the pointer to the - // value. - // Key cannot be pointer-typed. - valIsPtr := valType.Kind() == reflect.Ptr - - // If value is a message with nested maps, calling - // valSizer in marshal may be quadratic. We should use - // cached version in marshal (but not in size). - // If value is not message type, we don't have size cache, - // but it cannot be nested either. Just use valSizer. - valCachedSizer := valSizer - if valIsPtr && valType.Elem().Kind() == reflect.Struct { - u := getMarshalInfo(valType.Elem()) - valCachedSizer = func(ptr pointer, tagsize int) int { - // Same as message sizer, but use cache. - p := ptr.getPointer() - if p.isNil() { - return 0 - } - siz := u.cachedsize(p) - return siz + SizeVarint(uint64(siz)) + tagsize - } - } - return func(ptr pointer, tagsize int) int { - m := ptr.asPointerTo(t).Elem() // the map - n := 0 - for _, k := range m.MapKeys() { - ki := k.Interface() - vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) - n += siz + SizeVarint(uint64(siz)) + tagsize - } - return n - }, - func(b []byte, ptr pointer, tag uint64, deterministic bool) ([]byte, error) { - m := ptr.asPointerTo(t).Elem() // the map - var err error - keys := m.MapKeys() - if len(keys) > 1 && deterministic { - sort.Sort(mapKeys(keys)) - } - - var nerr nonFatal - for _, k := range keys { - ki := k.Interface() - vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value - b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) - b = appendVarint(b, uint64(siz)) - b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if !nerr.Merge(err) { - return b, err - } - b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != ErrNil && !nerr.Merge(err) { // allow nil value in map - return b, err - } - } - return b, nerr.E - } -} - -// makeOneOfMarshaler returns the sizer and marshaler for a oneof field. -// fi is the marshal info of the field. -// f is the pointer to the reflect data structure of the field. -func makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (sizer, marshaler) { - // Oneof field is an interface. We need to get the actual data type on the fly. - t := f.Type - return func(ptr pointer, _ int) int { - p := ptr.getInterfacePointer() - if p.isNil() { - return 0 - } - v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct - telem := v.Type() - e := fi.oneofElems[telem] - return e.sizer(p, e.tagsize) - }, - func(b []byte, ptr pointer, _ uint64, deterministic bool) ([]byte, error) { - p := ptr.getInterfacePointer() - if p.isNil() { - return b, nil - } - v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct - telem := v.Type() - if telem.Field(0).Type.Kind() == reflect.Ptr && p.getPointer().isNil() { - return b, errOneofHasNil - } - e := fi.oneofElems[telem] - return e.marshaler(b, p, e.wiretag, deterministic) - } -} - -// sizeExtensions computes the size of encoded data for a XXX_InternalExtensions field. -func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int { - m, mu := ext.extensionsRead() - if m == nil { - return 0 - } - mu.Lock() - - n := 0 - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - n += len(e.enc) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - n += ei.sizer(p, ei.tagsize) - } - mu.Unlock() - return n -} - -// appendExtensions marshals a XXX_InternalExtensions field to the end of byte slice b. -func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) { - m, mu := ext.extensionsRead() - if m == nil { - return b, nil - } - mu.Lock() - defer mu.Unlock() - - var err error - var nerr nonFatal - - // Fast-path for common cases: zero or one extensions. - // Don't bother sorting the keys. - if len(m) <= 1 { - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if !nerr.Merge(err) { - return b, err - } - } - return b, nerr.E - } - - // Sort the keys to provide a deterministic encoding. - // Not sure this is required, but the old code does it. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - for _, k := range keys { - e := m[int32(k)] - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if !nerr.Merge(err) { - return b, err - } - } - return b, nerr.E -} - -// message set format is: -// message MessageSet { -// repeated group Item = 1 { -// required int32 type_id = 2; -// required string message = 3; -// }; -// } - -// sizeMessageSet computes the size of encoded data for a XXX_InternalExtensions field -// in message set format (above). -func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int { - m, mu := ext.extensionsRead() - if m == nil { - return 0 - } - mu.Lock() - - n := 0 - for id, e := range m { - n += 2 // start group, end group. tag = 1 (size=1) - n += SizeVarint(uint64(id)) + 1 // type_id, tag = 2 (size=1) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - siz := len(msgWithLen) - n += siz + 1 // message, tag = 3 (size=1) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - n += ei.sizer(p, 1) // message, tag = 3 (size=1) - } - mu.Unlock() - return n -} - -// appendMessageSet marshals a XXX_InternalExtensions field in message set format (above) -// to the end of byte slice b. -func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) { - m, mu := ext.extensionsRead() - if m == nil { - return b, nil - } - mu.Lock() - defer mu.Unlock() - - var err error - var nerr nonFatal - - // Fast-path for common cases: zero or one extensions. - // Don't bother sorting the keys. - if len(m) <= 1 { - for id, e := range m { - b = append(b, 1<<3|WireStartGroup) - b = append(b, 2<<3|WireVarint) - b = appendVarint(b, uint64(id)) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - b = append(b, 3<<3|WireBytes) - b = append(b, msgWithLen...) - b = append(b, 1<<3|WireEndGroup) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if !nerr.Merge(err) { - return b, err - } - b = append(b, 1<<3|WireEndGroup) - } - return b, nerr.E - } - - // Sort the keys to provide a deterministic encoding. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - for _, id := range keys { - e := m[int32(id)] - b = append(b, 1<<3|WireStartGroup) - b = append(b, 2<<3|WireVarint) - b = appendVarint(b, uint64(id)) - - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint - b = append(b, 3<<3|WireBytes) - b = append(b, msgWithLen...) - b = append(b, 1<<3|WireEndGroup) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - b = append(b, 1<<3|WireEndGroup) - if !nerr.Merge(err) { - return b, err - } - } - return b, nerr.E -} - -// sizeV1Extensions computes the size of encoded data for a V1-API extension field. -func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int { - if m == nil { - return 0 - } - - n := 0 - for _, e := range m { - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - n += len(e.enc) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - n += ei.sizer(p, ei.tagsize) - } - return n -} - -// appendV1Extensions marshals a V1-API extension field to the end of byte slice b. -func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, deterministic bool) ([]byte, error) { - if m == nil { - return b, nil - } - - // Sort the keys to provide a deterministic encoding. - keys := make([]int, 0, len(m)) - for k := range m { - keys = append(keys, int(k)) - } - sort.Ints(keys) - - var err error - var nerr nonFatal - for _, k := range keys { - e := m[int32(k)] - if e.value == nil || e.desc == nil { - // Extension is only in its encoded form. - b = append(b, e.enc...) - continue - } - - // We don't skip extensions that have an encoded form set, - // because the extension value may have been mutated after - // the last time this function was called. - - ei := u.getExtElemInfo(e.desc) - v := e.value - p := toAddrPointer(&v, ei.isptr, ei.deref) - b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if !nerr.Merge(err) { - return b, err - } - } - return b, nerr.E -} - -// newMarshaler is the interface representing objects that can marshal themselves. -// -// This exists to support protoc-gen-go generated messages. -// The proto package will stop type-asserting to this interface in the future. -// -// DO NOT DEPEND ON THIS. -type newMarshaler interface { - XXX_Size() int - XXX_Marshal(b []byte, deterministic bool) ([]byte, error) -} - -// Size returns the encoded size of a protocol buffer message. -// This is the main entry point. -func Size(pb Message) int { - if m, ok := pb.(newMarshaler); ok { - return m.XXX_Size() - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - b, _ := m.Marshal() - return len(b) - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return 0 - } - var info InternalMessageInfo - return info.Size(pb) -} - -// Marshal takes a protocol buffer message -// and encodes it into the wire format, returning the data. -// This is the main entry point. -func Marshal(pb Message) ([]byte, error) { - if m, ok := pb.(newMarshaler); ok { - siz := m.XXX_Size() - b := make([]byte, 0, siz) - return m.XXX_Marshal(b, false) - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - return m.Marshal() - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return nil, ErrNil - } - var info InternalMessageInfo - siz := info.Size(pb) - b := make([]byte, 0, siz) - return info.Marshal(b, pb, false) -} - -// Marshal takes a protocol buffer message -// and encodes it into the wire format, writing the result to the -// Buffer. -// This is an alternative entry point. It is not necessary to use -// a Buffer for most applications. -func (p *Buffer) Marshal(pb Message) error { - var err error - if m, ok := pb.(newMarshaler); ok { - siz := m.XXX_Size() - p.grow(siz) // make sure buf has enough capacity - p.buf, err = m.XXX_Marshal(p.buf, p.deterministic) - return err - } - if m, ok := pb.(Marshaler); ok { - // If the message can marshal itself, let it do it, for compatibility. - // NOTE: This is not efficient. - b, err := m.Marshal() - p.buf = append(p.buf, b...) - return err - } - // in case somehow we didn't generate the wrapper - if pb == nil { - return ErrNil - } - var info InternalMessageInfo - siz := info.Size(pb) - p.grow(siz) // make sure buf has enough capacity - p.buf, err = info.Marshal(p.buf, pb, p.deterministic) - return err -} - -// grow grows the buffer's capacity, if necessary, to guarantee space for -// another n bytes. After grow(n), at least n bytes can be written to the -// buffer without another allocation. -func (p *Buffer) grow(n int) { - need := len(p.buf) + n - if need <= cap(p.buf) { - return - } - newCap := len(p.buf) * 2 - if newCap < need { - newCap = need - } - p.buf = append(make([]byte, 0, newCap), p.buf...) -} diff --git a/vendor/github.com/golang/protobuf/proto/table_merge.go b/vendor/github.com/golang/protobuf/proto/table_merge.go deleted file mode 100644 index 5525def6..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_merge.go +++ /dev/null @@ -1,654 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "fmt" - "reflect" - "strings" - "sync" - "sync/atomic" -) - -// Merge merges the src message into dst. -// This assumes that dst and src of the same type and are non-nil. -func (a *InternalMessageInfo) Merge(dst, src Message) { - mi := atomicLoadMergeInfo(&a.merge) - if mi == nil { - mi = getMergeInfo(reflect.TypeOf(dst).Elem()) - atomicStoreMergeInfo(&a.merge, mi) - } - mi.merge(toPointer(&dst), toPointer(&src)) -} - -type mergeInfo struct { - typ reflect.Type - - initialized int32 // 0: only typ is valid, 1: everything is valid - lock sync.Mutex - - fields []mergeFieldInfo - unrecognized field // Offset of XXX_unrecognized -} - -type mergeFieldInfo struct { - field field // Offset of field, guaranteed to be valid - - // isPointer reports whether the value in the field is a pointer. - // This is true for the following situations: - // * Pointer to struct - // * Pointer to basic type (proto2 only) - // * Slice (first value in slice header is a pointer) - // * String (first value in string header is a pointer) - isPointer bool - - // basicWidth reports the width of the field assuming that it is directly - // embedded in the struct (as is the case for basic types in proto3). - // The possible values are: - // 0: invalid - // 1: bool - // 4: int32, uint32, float32 - // 8: int64, uint64, float64 - basicWidth int - - // Where dst and src are pointers to the types being merged. - merge func(dst, src pointer) -} - -var ( - mergeInfoMap = map[reflect.Type]*mergeInfo{} - mergeInfoLock sync.Mutex -) - -func getMergeInfo(t reflect.Type) *mergeInfo { - mergeInfoLock.Lock() - defer mergeInfoLock.Unlock() - mi := mergeInfoMap[t] - if mi == nil { - mi = &mergeInfo{typ: t} - mergeInfoMap[t] = mi - } - return mi -} - -// merge merges src into dst assuming they are both of type *mi.typ. -func (mi *mergeInfo) merge(dst, src pointer) { - if dst.isNil() { - panic("proto: nil destination") - } - if src.isNil() { - return // Nothing to do. - } - - if atomic.LoadInt32(&mi.initialized) == 0 { - mi.computeMergeInfo() - } - - for _, fi := range mi.fields { - sfp := src.offset(fi.field) - - // As an optimization, we can avoid the merge function call cost - // if we know for sure that the source will have no effect - // by checking if it is the zero value. - if unsafeAllowed { - if fi.isPointer && sfp.getPointer().isNil() { // Could be slice or string - continue - } - if fi.basicWidth > 0 { - switch { - case fi.basicWidth == 1 && !*sfp.toBool(): - continue - case fi.basicWidth == 4 && *sfp.toUint32() == 0: - continue - case fi.basicWidth == 8 && *sfp.toUint64() == 0: - continue - } - } - } - - dfp := dst.offset(fi.field) - fi.merge(dfp, sfp) - } - - // TODO: Make this faster? - out := dst.asPointerTo(mi.typ).Elem() - in := src.asPointerTo(mi.typ).Elem() - if emIn, err := extendable(in.Addr().Interface()); err == nil { - emOut, _ := extendable(out.Addr().Interface()) - mIn, muIn := emIn.extensionsRead() - if mIn != nil { - mOut := emOut.extensionsWrite() - muIn.Lock() - mergeExtension(mOut, mIn) - muIn.Unlock() - } - } - - if mi.unrecognized.IsValid() { - if b := *src.offset(mi.unrecognized).toBytes(); len(b) > 0 { - *dst.offset(mi.unrecognized).toBytes() = append([]byte(nil), b...) - } - } -} - -func (mi *mergeInfo) computeMergeInfo() { - mi.lock.Lock() - defer mi.lock.Unlock() - if mi.initialized != 0 { - return - } - t := mi.typ - n := t.NumField() - - props := GetProperties(t) - for i := 0; i < n; i++ { - f := t.Field(i) - if strings.HasPrefix(f.Name, "XXX_") { - continue - } - - mfi := mergeFieldInfo{field: toField(&f)} - tf := f.Type - - // As an optimization, we can avoid the merge function call cost - // if we know for sure that the source will have no effect - // by checking if it is the zero value. - if unsafeAllowed { - switch tf.Kind() { - case reflect.Ptr, reflect.Slice, reflect.String: - // As a special case, we assume slices and strings are pointers - // since we know that the first field in the SliceSlice or - // StringHeader is a data pointer. - mfi.isPointer = true - case reflect.Bool: - mfi.basicWidth = 1 - case reflect.Int32, reflect.Uint32, reflect.Float32: - mfi.basicWidth = 4 - case reflect.Int64, reflect.Uint64, reflect.Float64: - mfi.basicWidth = 8 - } - } - - // Unwrap tf to get at its most basic type. - var isPointer, isSlice bool - if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 { - isSlice = true - tf = tf.Elem() - } - if tf.Kind() == reflect.Ptr { - isPointer = true - tf = tf.Elem() - } - if isPointer && isSlice && tf.Kind() != reflect.Struct { - panic("both pointer and slice for basic type in " + tf.Name()) - } - - switch tf.Kind() { - case reflect.Int32: - switch { - case isSlice: // E.g., []int32 - mfi.merge = func(dst, src pointer) { - // NOTE: toInt32Slice is not defined (see pointer_reflect.go). - /* - sfsp := src.toInt32Slice() - if *sfsp != nil { - dfsp := dst.toInt32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []int64{} - } - } - */ - sfs := src.getInt32Slice() - if sfs != nil { - dfs := dst.getInt32Slice() - dfs = append(dfs, sfs...) - if dfs == nil { - dfs = []int32{} - } - dst.setInt32Slice(dfs) - } - } - case isPointer: // E.g., *int32 - mfi.merge = func(dst, src pointer) { - // NOTE: toInt32Ptr is not defined (see pointer_reflect.go). - /* - sfpp := src.toInt32Ptr() - if *sfpp != nil { - dfpp := dst.toInt32Ptr() - if *dfpp == nil { - *dfpp = Int32(**sfpp) - } else { - **dfpp = **sfpp - } - } - */ - sfp := src.getInt32Ptr() - if sfp != nil { - dfp := dst.getInt32Ptr() - if dfp == nil { - dst.setInt32Ptr(*sfp) - } else { - *dfp = *sfp - } - } - } - default: // E.g., int32 - mfi.merge = func(dst, src pointer) { - if v := *src.toInt32(); v != 0 { - *dst.toInt32() = v - } - } - } - case reflect.Int64: - switch { - case isSlice: // E.g., []int64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toInt64Slice() - if *sfsp != nil { - dfsp := dst.toInt64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []int64{} - } - } - } - case isPointer: // E.g., *int64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toInt64Ptr() - if *sfpp != nil { - dfpp := dst.toInt64Ptr() - if *dfpp == nil { - *dfpp = Int64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., int64 - mfi.merge = func(dst, src pointer) { - if v := *src.toInt64(); v != 0 { - *dst.toInt64() = v - } - } - } - case reflect.Uint32: - switch { - case isSlice: // E.g., []uint32 - mfi.merge = func(dst, src pointer) { - sfsp := src.toUint32Slice() - if *sfsp != nil { - dfsp := dst.toUint32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []uint32{} - } - } - } - case isPointer: // E.g., *uint32 - mfi.merge = func(dst, src pointer) { - sfpp := src.toUint32Ptr() - if *sfpp != nil { - dfpp := dst.toUint32Ptr() - if *dfpp == nil { - *dfpp = Uint32(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., uint32 - mfi.merge = func(dst, src pointer) { - if v := *src.toUint32(); v != 0 { - *dst.toUint32() = v - } - } - } - case reflect.Uint64: - switch { - case isSlice: // E.g., []uint64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toUint64Slice() - if *sfsp != nil { - dfsp := dst.toUint64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []uint64{} - } - } - } - case isPointer: // E.g., *uint64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toUint64Ptr() - if *sfpp != nil { - dfpp := dst.toUint64Ptr() - if *dfpp == nil { - *dfpp = Uint64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., uint64 - mfi.merge = func(dst, src pointer) { - if v := *src.toUint64(); v != 0 { - *dst.toUint64() = v - } - } - } - case reflect.Float32: - switch { - case isSlice: // E.g., []float32 - mfi.merge = func(dst, src pointer) { - sfsp := src.toFloat32Slice() - if *sfsp != nil { - dfsp := dst.toFloat32Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []float32{} - } - } - } - case isPointer: // E.g., *float32 - mfi.merge = func(dst, src pointer) { - sfpp := src.toFloat32Ptr() - if *sfpp != nil { - dfpp := dst.toFloat32Ptr() - if *dfpp == nil { - *dfpp = Float32(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., float32 - mfi.merge = func(dst, src pointer) { - if v := *src.toFloat32(); v != 0 { - *dst.toFloat32() = v - } - } - } - case reflect.Float64: - switch { - case isSlice: // E.g., []float64 - mfi.merge = func(dst, src pointer) { - sfsp := src.toFloat64Slice() - if *sfsp != nil { - dfsp := dst.toFloat64Slice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []float64{} - } - } - } - case isPointer: // E.g., *float64 - mfi.merge = func(dst, src pointer) { - sfpp := src.toFloat64Ptr() - if *sfpp != nil { - dfpp := dst.toFloat64Ptr() - if *dfpp == nil { - *dfpp = Float64(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., float64 - mfi.merge = func(dst, src pointer) { - if v := *src.toFloat64(); v != 0 { - *dst.toFloat64() = v - } - } - } - case reflect.Bool: - switch { - case isSlice: // E.g., []bool - mfi.merge = func(dst, src pointer) { - sfsp := src.toBoolSlice() - if *sfsp != nil { - dfsp := dst.toBoolSlice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []bool{} - } - } - } - case isPointer: // E.g., *bool - mfi.merge = func(dst, src pointer) { - sfpp := src.toBoolPtr() - if *sfpp != nil { - dfpp := dst.toBoolPtr() - if *dfpp == nil { - *dfpp = Bool(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., bool - mfi.merge = func(dst, src pointer) { - if v := *src.toBool(); v { - *dst.toBool() = v - } - } - } - case reflect.String: - switch { - case isSlice: // E.g., []string - mfi.merge = func(dst, src pointer) { - sfsp := src.toStringSlice() - if *sfsp != nil { - dfsp := dst.toStringSlice() - *dfsp = append(*dfsp, *sfsp...) - if *dfsp == nil { - *dfsp = []string{} - } - } - } - case isPointer: // E.g., *string - mfi.merge = func(dst, src pointer) { - sfpp := src.toStringPtr() - if *sfpp != nil { - dfpp := dst.toStringPtr() - if *dfpp == nil { - *dfpp = String(**sfpp) - } else { - **dfpp = **sfpp - } - } - } - default: // E.g., string - mfi.merge = func(dst, src pointer) { - if v := *src.toString(); v != "" { - *dst.toString() = v - } - } - } - case reflect.Slice: - isProto3 := props.Prop[i].proto3 - switch { - case isPointer: - panic("bad pointer in byte slice case in " + tf.Name()) - case tf.Elem().Kind() != reflect.Uint8: - panic("bad element kind in byte slice case in " + tf.Name()) - case isSlice: // E.g., [][]byte - mfi.merge = func(dst, src pointer) { - sbsp := src.toBytesSlice() - if *sbsp != nil { - dbsp := dst.toBytesSlice() - for _, sb := range *sbsp { - if sb == nil { - *dbsp = append(*dbsp, nil) - } else { - *dbsp = append(*dbsp, append([]byte{}, sb...)) - } - } - if *dbsp == nil { - *dbsp = [][]byte{} - } - } - } - default: // E.g., []byte - mfi.merge = func(dst, src pointer) { - sbp := src.toBytes() - if *sbp != nil { - dbp := dst.toBytes() - if !isProto3 || len(*sbp) > 0 { - *dbp = append([]byte{}, *sbp...) - } - } - } - } - case reflect.Struct: - switch { - case !isPointer: - panic(fmt.Sprintf("message field %s without pointer", tf)) - case isSlice: // E.g., []*pb.T - mi := getMergeInfo(tf) - mfi.merge = func(dst, src pointer) { - sps := src.getPointerSlice() - if sps != nil { - dps := dst.getPointerSlice() - for _, sp := range sps { - var dp pointer - if !sp.isNil() { - dp = valToPointer(reflect.New(tf)) - mi.merge(dp, sp) - } - dps = append(dps, dp) - } - if dps == nil { - dps = []pointer{} - } - dst.setPointerSlice(dps) - } - } - default: // E.g., *pb.T - mi := getMergeInfo(tf) - mfi.merge = func(dst, src pointer) { - sp := src.getPointer() - if !sp.isNil() { - dp := dst.getPointer() - if dp.isNil() { - dp = valToPointer(reflect.New(tf)) - dst.setPointer(dp) - } - mi.merge(dp, sp) - } - } - } - case reflect.Map: - switch { - case isPointer || isSlice: - panic("bad pointer or slice in map case in " + tf.Name()) - default: // E.g., map[K]V - mfi.merge = func(dst, src pointer) { - sm := src.asPointerTo(tf).Elem() - if sm.Len() == 0 { - return - } - dm := dst.asPointerTo(tf).Elem() - if dm.IsNil() { - dm.Set(reflect.MakeMap(tf)) - } - - switch tf.Elem().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - val = reflect.ValueOf(Clone(val.Interface().(Message))) - dm.SetMapIndex(key, val) - } - case reflect.Slice: // E.g. Bytes type (e.g., []byte) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - val = reflect.ValueOf(append([]byte{}, val.Bytes()...)) - dm.SetMapIndex(key, val) - } - default: // Basic type (e.g., string) - for _, key := range sm.MapKeys() { - val := sm.MapIndex(key) - dm.SetMapIndex(key, val) - } - } - } - } - case reflect.Interface: - // Must be oneof field. - switch { - case isPointer || isSlice: - panic("bad pointer or slice in interface case in " + tf.Name()) - default: // E.g., interface{} - // TODO: Make this faster? - mfi.merge = func(dst, src pointer) { - su := src.asPointerTo(tf).Elem() - if !su.IsNil() { - du := dst.asPointerTo(tf).Elem() - typ := su.Elem().Type() - if du.IsNil() || du.Elem().Type() != typ { - du.Set(reflect.New(typ.Elem())) // Initialize interface if empty - } - sv := su.Elem().Elem().Field(0) - if sv.Kind() == reflect.Ptr && sv.IsNil() { - return - } - dv := du.Elem().Elem().Field(0) - if dv.Kind() == reflect.Ptr && dv.IsNil() { - dv.Set(reflect.New(sv.Type().Elem())) // Initialize proto message if empty - } - switch sv.Type().Kind() { - case reflect.Ptr: // Proto struct (e.g., *T) - Merge(dv.Interface().(Message), sv.Interface().(Message)) - case reflect.Slice: // E.g. Bytes type (e.g., []byte) - dv.Set(reflect.ValueOf(append([]byte{}, sv.Bytes()...))) - default: // Basic type (e.g., string) - dv.Set(sv) - } - } - } - } - default: - panic(fmt.Sprintf("merger not found for type:%s", tf)) - } - mi.fields = append(mi.fields, mfi) - } - - mi.unrecognized = invalidField - if f, ok := t.FieldByName("XXX_unrecognized"); ok { - if f.Type != reflect.TypeOf([]byte{}) { - panic("expected XXX_unrecognized to be of type []byte") - } - mi.unrecognized = toField(&f) - } - - atomic.StoreInt32(&mi.initialized, 1) -} diff --git a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go deleted file mode 100644 index acee2fc5..00000000 --- a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go +++ /dev/null @@ -1,2053 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "errors" - "fmt" - "io" - "math" - "reflect" - "strconv" - "strings" - "sync" - "sync/atomic" - "unicode/utf8" -) - -// Unmarshal is the entry point from the generated .pb.go files. -// This function is not intended to be used by non-generated code. -// This function is not subject to any compatibility guarantee. -// msg contains a pointer to a protocol buffer struct. -// b is the data to be unmarshaled into the protocol buffer. -// a is a pointer to a place to store cached unmarshal information. -func (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error { - // Load the unmarshal information for this message type. - // The atomic load ensures memory consistency. - u := atomicLoadUnmarshalInfo(&a.unmarshal) - if u == nil { - // Slow path: find unmarshal info for msg, update a with it. - u = getUnmarshalInfo(reflect.TypeOf(msg).Elem()) - atomicStoreUnmarshalInfo(&a.unmarshal, u) - } - // Then do the unmarshaling. - err := u.unmarshal(toPointer(&msg), b) - return err -} - -type unmarshalInfo struct { - typ reflect.Type // type of the protobuf struct - - // 0 = only typ field is initialized - // 1 = completely initialized - initialized int32 - lock sync.Mutex // prevents double initialization - dense []unmarshalFieldInfo // fields indexed by tag # - sparse map[uint64]unmarshalFieldInfo // fields indexed by tag # - reqFields []string // names of required fields - reqMask uint64 // 1< 0 { - // Read tag and wire type. - // Special case 1 and 2 byte varints. - var x uint64 - if b[0] < 128 { - x = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - x = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - x, n = decodeVarint(b) - if n == 0 { - return io.ErrUnexpectedEOF - } - b = b[n:] - } - tag := x >> 3 - wire := int(x) & 7 - - // Dispatch on the tag to one of the unmarshal* functions below. - var f unmarshalFieldInfo - if tag < uint64(len(u.dense)) { - f = u.dense[tag] - } else { - f = u.sparse[tag] - } - if fn := f.unmarshal; fn != nil { - var err error - b, err = fn(b, m.offset(f.field), wire) - if err == nil { - reqMask |= f.reqMask - continue - } - if r, ok := err.(*RequiredNotSetError); ok { - // Remember this error, but keep parsing. We need to produce - // a full parse even if a required field is missing. - if errLater == nil { - errLater = r - } - reqMask |= f.reqMask - continue - } - if err != errInternalBadWireType { - if err == errInvalidUTF8 { - if errLater == nil { - fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name - errLater = &invalidUTF8Error{fullName} - } - continue - } - return err - } - // Fragments with bad wire type are treated as unknown fields. - } - - // Unknown tag. - if !u.unrecognized.IsValid() { - // Don't keep unrecognized data; just skip it. - var err error - b, err = skipField(b, wire) - if err != nil { - return err - } - continue - } - // Keep unrecognized data around. - // maybe in extensions, maybe in the unrecognized field. - z := m.offset(u.unrecognized).toBytes() - var emap map[int32]Extension - var e Extension - for _, r := range u.extensionRanges { - if uint64(r.Start) <= tag && tag <= uint64(r.End) { - if u.extensions.IsValid() { - mp := m.offset(u.extensions).toExtensions() - emap = mp.extensionsWrite() - e = emap[int32(tag)] - z = &e.enc - break - } - if u.oldExtensions.IsValid() { - p := m.offset(u.oldExtensions).toOldExtensions() - emap = *p - if emap == nil { - emap = map[int32]Extension{} - *p = emap - } - e = emap[int32(tag)] - z = &e.enc - break - } - panic("no extensions field available") - } - } - - // Use wire type to skip data. - var err error - b0 := b - b, err = skipField(b, wire) - if err != nil { - return err - } - *z = encodeVarint(*z, tag<<3|uint64(wire)) - *z = append(*z, b0[:len(b0)-len(b)]...) - - if emap != nil { - emap[int32(tag)] = e - } - } - if reqMask != u.reqMask && errLater == nil { - // A required field of this message is missing. - for _, n := range u.reqFields { - if reqMask&1 == 0 { - errLater = &RequiredNotSetError{n} - } - reqMask >>= 1 - } - } - return errLater -} - -// computeUnmarshalInfo fills in u with information for use -// in unmarshaling protocol buffers of type u.typ. -func (u *unmarshalInfo) computeUnmarshalInfo() { - u.lock.Lock() - defer u.lock.Unlock() - if u.initialized != 0 { - return - } - t := u.typ - n := t.NumField() - - // Set up the "not found" value for the unrecognized byte buffer. - // This is the default for proto3. - u.unrecognized = invalidField - u.extensions = invalidField - u.oldExtensions = invalidField - - // List of the generated type and offset for each oneof field. - type oneofField struct { - ityp reflect.Type // interface type of oneof field - field field // offset in containing message - } - var oneofFields []oneofField - - for i := 0; i < n; i++ { - f := t.Field(i) - if f.Name == "XXX_unrecognized" { - // The byte slice used to hold unrecognized input is special. - if f.Type != reflect.TypeOf(([]byte)(nil)) { - panic("bad type for XXX_unrecognized field: " + f.Type.Name()) - } - u.unrecognized = toField(&f) - continue - } - if f.Name == "XXX_InternalExtensions" { - // Ditto here. - if f.Type != reflect.TypeOf(XXX_InternalExtensions{}) { - panic("bad type for XXX_InternalExtensions field: " + f.Type.Name()) - } - u.extensions = toField(&f) - if f.Tag.Get("protobuf_messageset") == "1" { - u.isMessageSet = true - } - continue - } - if f.Name == "XXX_extensions" { - // An older form of the extensions field. - if f.Type != reflect.TypeOf((map[int32]Extension)(nil)) { - panic("bad type for XXX_extensions field: " + f.Type.Name()) - } - u.oldExtensions = toField(&f) - continue - } - if f.Name == "XXX_NoUnkeyedLiteral" || f.Name == "XXX_sizecache" { - continue - } - - oneof := f.Tag.Get("protobuf_oneof") - if oneof != "" { - oneofFields = append(oneofFields, oneofField{f.Type, toField(&f)}) - // The rest of oneof processing happens below. - continue - } - - tags := f.Tag.Get("protobuf") - tagArray := strings.Split(tags, ",") - if len(tagArray) < 2 { - panic("protobuf tag not enough fields in " + t.Name() + "." + f.Name + ": " + tags) - } - tag, err := strconv.Atoi(tagArray[1]) - if err != nil { - panic("protobuf tag field not an integer: " + tagArray[1]) - } - - name := "" - for _, tag := range tagArray[3:] { - if strings.HasPrefix(tag, "name=") { - name = tag[5:] - } - } - - // Extract unmarshaling function from the field (its type and tags). - unmarshal := fieldUnmarshaler(&f) - - // Required field? - var reqMask uint64 - if tagArray[2] == "req" { - bit := len(u.reqFields) - u.reqFields = append(u.reqFields, name) - reqMask = uint64(1) << uint(bit) - // TODO: if we have more than 64 required fields, we end up - // not verifying that all required fields are present. - // Fix this, perhaps using a count of required fields? - } - - // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask, name) - } - - // Find any types associated with oneof fields. - var oneofImplementers []interface{} - switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { - case oneofFuncsIface: - _, _, _, oneofImplementers = m.XXX_OneofFuncs() - case oneofWrappersIface: - oneofImplementers = m.XXX_OneofWrappers() - } - for _, v := range oneofImplementers { - tptr := reflect.TypeOf(v) // *Msg_X - typ := tptr.Elem() // Msg_X - - f := typ.Field(0) // oneof implementers have one field - baseUnmarshal := fieldUnmarshaler(&f) - tags := strings.Split(f.Tag.Get("protobuf"), ",") - fieldNum, err := strconv.Atoi(tags[1]) - if err != nil { - panic("protobuf tag field not an integer: " + tags[1]) - } - var name string - for _, tag := range tags { - if strings.HasPrefix(tag, "name=") { - name = strings.TrimPrefix(tag, "name=") - break - } - } - - // Find the oneof field that this struct implements. - // Might take O(n^2) to process all of the oneofs, but who cares. - for _, of := range oneofFields { - if tptr.Implements(of.ityp) { - // We have found the corresponding interface for this struct. - // That lets us know where this struct should be stored - // when we encounter it during unmarshaling. - unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(fieldNum, of.field, unmarshal, 0, name) - } - } - - } - - // Get extension ranges, if any. - fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray") - if fn.IsValid() { - if !u.extensions.IsValid() && !u.oldExtensions.IsValid() { - panic("a message with extensions, but no extensions field in " + t.Name()) - } - u.extensionRanges = fn.Call(nil)[0].Interface().([]ExtensionRange) - } - - // Explicitly disallow tag 0. This will ensure we flag an error - // when decoding a buffer of all zeros. Without this code, we - // would decode and skip an all-zero buffer of even length. - // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. - u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { - return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0, "") - - // Set mask for required field check. - u.reqMask = uint64(1)<= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? - for len(u.dense) <= tag { - u.dense = append(u.dense, unmarshalFieldInfo{}) - } - u.dense[tag] = i - return - } - if u.sparse == nil { - u.sparse = map[uint64]unmarshalFieldInfo{} - } - u.sparse[uint64(tag)] = i -} - -// fieldUnmarshaler returns an unmarshaler for the given field. -func fieldUnmarshaler(f *reflect.StructField) unmarshaler { - if f.Type.Kind() == reflect.Map { - return makeUnmarshalMap(f) - } - return typeUnmarshaler(f.Type, f.Tag.Get("protobuf")) -} - -// typeUnmarshaler returns an unmarshaler for the given field type / field tag pair. -func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { - tagArray := strings.Split(tags, ",") - encoding := tagArray[0] - name := "unknown" - proto3 := false - validateUTF8 := true - for _, tag := range tagArray[3:] { - if strings.HasPrefix(tag, "name=") { - name = tag[5:] - } - if tag == "proto3" { - proto3 = true - } - } - validateUTF8 = validateUTF8 && proto3 - - // Figure out packaging (pointer, slice, or both) - slice := false - pointer := false - if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { - slice = true - t = t.Elem() - } - if t.Kind() == reflect.Ptr { - pointer = true - t = t.Elem() - } - - // We'll never have both pointer and slice for basic types. - if pointer && slice && t.Kind() != reflect.Struct { - panic("both pointer and slice for basic type in " + t.Name()) - } - - switch t.Kind() { - case reflect.Bool: - if pointer { - return unmarshalBoolPtr - } - if slice { - return unmarshalBoolSlice - } - return unmarshalBoolValue - case reflect.Int32: - switch encoding { - case "fixed32": - if pointer { - return unmarshalFixedS32Ptr - } - if slice { - return unmarshalFixedS32Slice - } - return unmarshalFixedS32Value - case "varint": - // this could be int32 or enum - if pointer { - return unmarshalInt32Ptr - } - if slice { - return unmarshalInt32Slice - } - return unmarshalInt32Value - case "zigzag32": - if pointer { - return unmarshalSint32Ptr - } - if slice { - return unmarshalSint32Slice - } - return unmarshalSint32Value - } - case reflect.Int64: - switch encoding { - case "fixed64": - if pointer { - return unmarshalFixedS64Ptr - } - if slice { - return unmarshalFixedS64Slice - } - return unmarshalFixedS64Value - case "varint": - if pointer { - return unmarshalInt64Ptr - } - if slice { - return unmarshalInt64Slice - } - return unmarshalInt64Value - case "zigzag64": - if pointer { - return unmarshalSint64Ptr - } - if slice { - return unmarshalSint64Slice - } - return unmarshalSint64Value - } - case reflect.Uint32: - switch encoding { - case "fixed32": - if pointer { - return unmarshalFixed32Ptr - } - if slice { - return unmarshalFixed32Slice - } - return unmarshalFixed32Value - case "varint": - if pointer { - return unmarshalUint32Ptr - } - if slice { - return unmarshalUint32Slice - } - return unmarshalUint32Value - } - case reflect.Uint64: - switch encoding { - case "fixed64": - if pointer { - return unmarshalFixed64Ptr - } - if slice { - return unmarshalFixed64Slice - } - return unmarshalFixed64Value - case "varint": - if pointer { - return unmarshalUint64Ptr - } - if slice { - return unmarshalUint64Slice - } - return unmarshalUint64Value - } - case reflect.Float32: - if pointer { - return unmarshalFloat32Ptr - } - if slice { - return unmarshalFloat32Slice - } - return unmarshalFloat32Value - case reflect.Float64: - if pointer { - return unmarshalFloat64Ptr - } - if slice { - return unmarshalFloat64Slice - } - return unmarshalFloat64Value - case reflect.Map: - panic("map type in typeUnmarshaler in " + t.Name()) - case reflect.Slice: - if pointer { - panic("bad pointer in slice case in " + t.Name()) - } - if slice { - return unmarshalBytesSlice - } - return unmarshalBytesValue - case reflect.String: - if validateUTF8 { - if pointer { - return unmarshalUTF8StringPtr - } - if slice { - return unmarshalUTF8StringSlice - } - return unmarshalUTF8StringValue - } - if pointer { - return unmarshalStringPtr - } - if slice { - return unmarshalStringSlice - } - return unmarshalStringValue - case reflect.Struct: - // message or group field - if !pointer { - panic(fmt.Sprintf("message/group field %s:%s without pointer", t, encoding)) - } - switch encoding { - case "bytes": - if slice { - return makeUnmarshalMessageSlicePtr(getUnmarshalInfo(t), name) - } - return makeUnmarshalMessagePtr(getUnmarshalInfo(t), name) - case "group": - if slice { - return makeUnmarshalGroupSlicePtr(getUnmarshalInfo(t), name) - } - return makeUnmarshalGroupPtr(getUnmarshalInfo(t), name) - } - } - panic(fmt.Sprintf("unmarshaler not found type:%s encoding:%s", t, encoding)) -} - -// Below are all the unmarshalers for individual fields of various types. - -func unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - *f.toInt64() = v - return b, nil -} - -func unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - *f.toInt64Ptr() = &v - return b, nil -} - -func unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - s := f.toInt64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x) - s := f.toInt64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - *f.toInt64() = v - return b, nil -} - -func unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - *f.toInt64Ptr() = &v - return b, nil -} - -func unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - s := f.toInt64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int64(x>>1) ^ int64(x)<<63>>63 - s := f.toInt64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - *f.toUint64() = v - return b, nil -} - -func unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - *f.toUint64Ptr() = &v - return b, nil -} - -func unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - s := f.toUint64Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint64(x) - s := f.toUint64Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - *f.toInt32() = v - return b, nil -} - -func unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.setInt32Ptr(v) - return b, nil -} - -func unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.appendInt32Slice(v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x) - f.appendInt32Slice(v) - return b, nil -} - -func unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - *f.toInt32() = v - return b, nil -} - -func unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.setInt32Ptr(v) - return b, nil -} - -func unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.appendInt32Slice(v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := int32(x>>1) ^ int32(x)<<31>>31 - f.appendInt32Slice(v) - return b, nil -} - -func unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - *f.toUint32() = v - return b, nil -} - -func unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - *f.toUint32Ptr() = &v - return b, nil -} - -func unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - s := f.toUint32Slice() - *s = append(*s, v) - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - v := uint32(x) - s := f.toUint32Slice() - *s = append(*s, v) - return b, nil -} - -func unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - *f.toUint64() = v - return b[8:], nil -} - -func unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - *f.toUint64Ptr() = &v - return b[8:], nil -} - -func unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - s := f.toUint64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - s := f.toUint64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - *f.toInt64() = v - return b[8:], nil -} - -func unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - *f.toInt64Ptr() = &v - return b[8:], nil -} - -func unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - s := f.toInt64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56 - s := f.toInt64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - *f.toUint32() = v - return b[4:], nil -} - -func unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - *f.toUint32Ptr() = &v - return b[4:], nil -} - -func unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - s := f.toUint32Slice() - *s = append(*s, v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - s := f.toUint32Slice() - *s = append(*s, v) - return b[4:], nil -} - -func unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - *f.toInt32() = v - return b[4:], nil -} - -func unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.setInt32Ptr(v) - return b[4:], nil -} - -func unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.appendInt32Slice(v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24 - f.appendInt32Slice(v) - return b[4:], nil -} - -func unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - // Note: any length varint is allowed, even though any sane - // encoder will use one byte. - // See https://github.com/golang/protobuf/issues/76 - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - // TODO: check if x>1? Tests seem to indicate no. - v := x != 0 - *f.toBool() = v - return b[n:], nil -} - -func unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - *f.toBoolPtr() = &v - return b[n:], nil -} - -func unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - x, n = decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - s := f.toBoolSlice() - *s = append(*s, v) - b = b[n:] - } - return res, nil - } - if w != WireVarint { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - v := x != 0 - s := f.toBoolSlice() - *s = append(*s, v) - return b[n:], nil -} - -func unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - *f.toFloat64() = v - return b[8:], nil -} - -func unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - *f.toFloat64Ptr() = &v - return b[8:], nil -} - -func unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - s := f.toFloat64Slice() - *s = append(*s, v) - b = b[8:] - } - return res, nil - } - if w != WireFixed64 { - return b, errInternalBadWireType - } - if len(b) < 8 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56) - s := f.toFloat64Slice() - *s = append(*s, v) - return b[8:], nil -} - -func unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - *f.toFloat32() = v - return b[4:], nil -} - -func unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - *f.toFloat32Ptr() = &v - return b[4:], nil -} - -func unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) { - if w == WireBytes { // packed - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - res := b[x:] - b = b[:x] - for len(b) > 0 { - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - s := f.toFloat32Slice() - *s = append(*s, v) - b = b[4:] - } - return res, nil - } - if w != WireFixed32 { - return b, errInternalBadWireType - } - if len(b) < 4 { - return nil, io.ErrUnexpectedEOF - } - v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24) - s := f.toFloat32Slice() - *s = append(*s, v) - return b[4:], nil -} - -func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - *f.toString() = v - return b[x:], nil -} - -func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - *f.toStringPtr() = &v - return b[x:], nil -} - -func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - s := f.toStringSlice() - *s = append(*s, v) - return b[x:], nil -} - -func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - *f.toString() = v - if !utf8.ValidString(v) { - return b[x:], errInvalidUTF8 - } - return b[x:], nil -} - -func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - *f.toStringPtr() = &v - if !utf8.ValidString(v) { - return b[x:], errInvalidUTF8 - } - return b[x:], nil -} - -func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := string(b[:x]) - s := f.toStringSlice() - *s = append(*s, v) - if !utf8.ValidString(v) { - return b[x:], errInvalidUTF8 - } - return b[x:], nil -} - -var emptyBuf [0]byte - -func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - // The use of append here is a trick which avoids the zeroing - // that would be required if we used a make/copy pair. - // We append to emptyBuf instead of nil because we want - // a non-nil result even when the length is 0. - v := append(emptyBuf[:], b[:x]...) - *f.toBytes() = v - return b[x:], nil -} - -func unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := append(emptyBuf[:], b[:x]...) - s := f.toBytesSlice() - *s = append(*s, v) - return b[x:], nil -} - -func makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - // First read the message field to see if something is there. - // The semantics of multiple submessages are weird. Instead of - // the last one winning (as it is for all other fields), multiple - // submessages are merged. - v := f.getPointer() - if v.isNil() { - v = valToPointer(reflect.New(sub.typ)) - f.setPointer(v) - } - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - return b[x:], err - } -} - -func makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireBytes { - return b, errInternalBadWireType - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - v := valToPointer(reflect.New(sub.typ)) - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - f.appendPointer(v) - return b[x:], err - } -} - -func makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireStartGroup { - return b, errInternalBadWireType - } - x, y := findEndGroup(b) - if x < 0 { - return nil, io.ErrUnexpectedEOF - } - v := f.getPointer() - if v.isNil() { - v = valToPointer(reflect.New(sub.typ)) - f.setPointer(v) - } - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - return b[y:], err - } -} - -func makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarshaler { - return func(b []byte, f pointer, w int) ([]byte, error) { - if w != WireStartGroup { - return b, errInternalBadWireType - } - x, y := findEndGroup(b) - if x < 0 { - return nil, io.ErrUnexpectedEOF - } - v := valToPointer(reflect.New(sub.typ)) - err := sub.unmarshal(v, b[:x]) - if err != nil { - if r, ok := err.(*RequiredNotSetError); ok { - r.field = name + "." + r.field - } else { - return nil, err - } - } - f.appendPointer(v) - return b[y:], err - } -} - -func makeUnmarshalMap(f *reflect.StructField) unmarshaler { - t := f.Type - kt := t.Key() - vt := t.Elem() - unmarshalKey := typeUnmarshaler(kt, f.Tag.Get("protobuf_key")) - unmarshalVal := typeUnmarshaler(vt, f.Tag.Get("protobuf_val")) - return func(b []byte, f pointer, w int) ([]byte, error) { - // The map entry is a submessage. Figure out how big it is. - if w != WireBytes { - return nil, fmt.Errorf("proto: bad wiretype for map field: got %d want %d", w, WireBytes) - } - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - b = b[n:] - if x > uint64(len(b)) { - return nil, io.ErrUnexpectedEOF - } - r := b[x:] // unused data to return - b = b[:x] // data for map entry - - // Note: we could use #keys * #values ~= 200 functions - // to do map decoding without reflection. Probably not worth it. - // Maps will be somewhat slow. Oh well. - - // Read key and value from data. - var nerr nonFatal - k := reflect.New(kt) - v := reflect.New(vt) - for len(b) > 0 { - x, n := decodeVarint(b) - if n == 0 { - return nil, io.ErrUnexpectedEOF - } - wire := int(x) & 7 - b = b[n:] - - var err error - switch x >> 3 { - case 1: - b, err = unmarshalKey(b, valToPointer(k), wire) - case 2: - b, err = unmarshalVal(b, valToPointer(v), wire) - default: - err = errInternalBadWireType // skip unknown tag - } - - if nerr.Merge(err) { - continue - } - if err != errInternalBadWireType { - return nil, err - } - - // Skip past unknown fields. - b, err = skipField(b, wire) - if err != nil { - return nil, err - } - } - - // Get map, allocate if needed. - m := f.asPointerTo(t).Elem() // an addressable map[K]T - if m.IsNil() { - m.Set(reflect.MakeMap(t)) - } - - // Insert into map. - m.SetMapIndex(k.Elem(), v.Elem()) - - return r, nerr.E - } -} - -// makeUnmarshalOneof makes an unmarshaler for oneof fields. -// for: -// message Msg { -// oneof F { -// int64 X = 1; -// float64 Y = 2; -// } -// } -// typ is the type of the concrete entry for a oneof case (e.g. Msg_X). -// ityp is the interface type of the oneof field (e.g. isMsg_F). -// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64). -// Note that this function will be called once for each case in the oneof. -func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshaler { - sf := typ.Field(0) - field0 := toField(&sf) - return func(b []byte, f pointer, w int) ([]byte, error) { - // Allocate holder for value. - v := reflect.New(typ) - - // Unmarshal data into holder. - // We unmarshal into the first field of the holder object. - var err error - var nerr nonFatal - b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if !nerr.Merge(err) { - return nil, err - } - - // Write pointer to holder into target field. - f.asPointerTo(ityp).Elem().Set(v) - - return b, nerr.E - } -} - -// Error used by decode internally. -var errInternalBadWireType = errors.New("proto: internal error: bad wiretype") - -// skipField skips past a field of type wire and returns the remaining bytes. -func skipField(b []byte, wire int) ([]byte, error) { - switch wire { - case WireVarint: - _, k := decodeVarint(b) - if k == 0 { - return b, io.ErrUnexpectedEOF - } - b = b[k:] - case WireFixed32: - if len(b) < 4 { - return b, io.ErrUnexpectedEOF - } - b = b[4:] - case WireFixed64: - if len(b) < 8 { - return b, io.ErrUnexpectedEOF - } - b = b[8:] - case WireBytes: - m, k := decodeVarint(b) - if k == 0 || uint64(len(b)-k) < m { - return b, io.ErrUnexpectedEOF - } - b = b[uint64(k)+m:] - case WireStartGroup: - _, i := findEndGroup(b) - if i == -1 { - return b, io.ErrUnexpectedEOF - } - b = b[i:] - default: - return b, fmt.Errorf("proto: can't skip unknown wire type %d", wire) - } - return b, nil -} - -// findEndGroup finds the index of the next EndGroup tag. -// Groups may be nested, so the "next" EndGroup tag is the first -// unpaired EndGroup. -// findEndGroup returns the indexes of the start and end of the EndGroup tag. -// Returns (-1,-1) if it can't find one. -func findEndGroup(b []byte) (int, int) { - depth := 1 - i := 0 - for { - x, n := decodeVarint(b[i:]) - if n == 0 { - return -1, -1 - } - j := i - i += n - switch x & 7 { - case WireVarint: - _, k := decodeVarint(b[i:]) - if k == 0 { - return -1, -1 - } - i += k - case WireFixed32: - if len(b)-4 < i { - return -1, -1 - } - i += 4 - case WireFixed64: - if len(b)-8 < i { - return -1, -1 - } - i += 8 - case WireBytes: - m, k := decodeVarint(b[i:]) - if k == 0 { - return -1, -1 - } - i += k - if uint64(len(b)-i) < m { - return -1, -1 - } - i += int(m) - case WireStartGroup: - depth++ - case WireEndGroup: - depth-- - if depth == 0 { - return j, i - } - default: - return -1, -1 - } - } -} - -// encodeVarint appends a varint-encoded integer to b and returns the result. -func encodeVarint(b []byte, x uint64) []byte { - for x >= 1<<7 { - b = append(b, byte(x&0x7f|0x80)) - x >>= 7 - } - return append(b, byte(x)) -} - -// decodeVarint reads a varint-encoded integer from b. -// Returns the decoded integer and the number of bytes read. -// If there is an error, it returns 0,0. -func decodeVarint(b []byte) (uint64, int) { - var x, y uint64 - if len(b) == 0 { - goto bad - } - x = uint64(b[0]) - if x < 0x80 { - return x, 1 - } - x -= 0x80 - - if len(b) <= 1 { - goto bad - } - y = uint64(b[1]) - x += y << 7 - if y < 0x80 { - return x, 2 - } - x -= 0x80 << 7 - - if len(b) <= 2 { - goto bad - } - y = uint64(b[2]) - x += y << 14 - if y < 0x80 { - return x, 3 - } - x -= 0x80 << 14 - - if len(b) <= 3 { - goto bad - } - y = uint64(b[3]) - x += y << 21 - if y < 0x80 { - return x, 4 - } - x -= 0x80 << 21 - - if len(b) <= 4 { - goto bad - } - y = uint64(b[4]) - x += y << 28 - if y < 0x80 { - return x, 5 - } - x -= 0x80 << 28 - - if len(b) <= 5 { - goto bad - } - y = uint64(b[5]) - x += y << 35 - if y < 0x80 { - return x, 6 - } - x -= 0x80 << 35 - - if len(b) <= 6 { - goto bad - } - y = uint64(b[6]) - x += y << 42 - if y < 0x80 { - return x, 7 - } - x -= 0x80 << 42 - - if len(b) <= 7 { - goto bad - } - y = uint64(b[7]) - x += y << 49 - if y < 0x80 { - return x, 8 - } - x -= 0x80 << 49 - - if len(b) <= 8 { - goto bad - } - y = uint64(b[8]) - x += y << 56 - if y < 0x80 { - return x, 9 - } - x -= 0x80 << 56 - - if len(b) <= 9 { - goto bad - } - y = uint64(b[9]) - x += y << 63 - if y < 2 { - return x, 10 - } - -bad: - return 0, 0 -} diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go deleted file mode 100644 index d97f9b35..00000000 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ /dev/null @@ -1,845 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -// Functions for writing the text protocol buffer format. - -import ( - "bufio" - "bytes" - "encoding" - "errors" - "fmt" - "io" - "log" - "math" - "reflect" - "sort" - "strings" -) - -var ( - newline = []byte("\n") - spaces = []byte(" ") - endBraceNewline = []byte("}\n") - backslashN = []byte{'\\', 'n'} - backslashR = []byte{'\\', 'r'} - backslashT = []byte{'\\', 't'} - backslashDQ = []byte{'\\', '"'} - backslashBS = []byte{'\\', '\\'} - posInf = []byte("inf") - negInf = []byte("-inf") - nan = []byte("nan") -) - -type writer interface { - io.Writer - WriteByte(byte) error -} - -// textWriter is an io.Writer that tracks its indentation level. -type textWriter struct { - ind int - complete bool // if the current position is a complete line - compact bool // whether to write out as a one-liner - w writer -} - -func (w *textWriter) WriteString(s string) (n int, err error) { - if !strings.Contains(s, "\n") { - if !w.compact && w.complete { - w.writeIndent() - } - w.complete = false - return io.WriteString(w.w, s) - } - // WriteString is typically called without newlines, so this - // codepath and its copy are rare. We copy to avoid - // duplicating all of Write's logic here. - return w.Write([]byte(s)) -} - -func (w *textWriter) Write(p []byte) (n int, err error) { - newlines := bytes.Count(p, newline) - if newlines == 0 { - if !w.compact && w.complete { - w.writeIndent() - } - n, err = w.w.Write(p) - w.complete = false - return n, err - } - - frags := bytes.SplitN(p, newline, newlines+1) - if w.compact { - for i, frag := range frags { - if i > 0 { - if err := w.w.WriteByte(' '); err != nil { - return n, err - } - n++ - } - nn, err := w.w.Write(frag) - n += nn - if err != nil { - return n, err - } - } - return n, nil - } - - for i, frag := range frags { - if w.complete { - w.writeIndent() - } - nn, err := w.w.Write(frag) - n += nn - if err != nil { - return n, err - } - if i+1 < len(frags) { - if err := w.w.WriteByte('\n'); err != nil { - return n, err - } - n++ - } - } - w.complete = len(frags[len(frags)-1]) == 0 - return n, nil -} - -func (w *textWriter) WriteByte(c byte) error { - if w.compact && c == '\n' { - c = ' ' - } - if !w.compact && w.complete { - w.writeIndent() - } - err := w.w.WriteByte(c) - w.complete = c == '\n' - return err -} - -func (w *textWriter) indent() { w.ind++ } - -func (w *textWriter) unindent() { - if w.ind == 0 { - log.Print("proto: textWriter unindented too far") - return - } - w.ind-- -} - -func writeName(w *textWriter, props *Properties) error { - if _, err := w.WriteString(props.OrigName); err != nil { - return err - } - if props.Wire != "group" { - return w.WriteByte(':') - } - return nil -} - -func requiresQuotes(u string) bool { - // When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted. - for _, ch := range u { - switch { - case ch == '.' || ch == '/' || ch == '_': - continue - case '0' <= ch && ch <= '9': - continue - case 'A' <= ch && ch <= 'Z': - continue - case 'a' <= ch && ch <= 'z': - continue - default: - return true - } - } - return false -} - -// isAny reports whether sv is a google.protobuf.Any message -func isAny(sv reflect.Value) bool { - type wkt interface { - XXX_WellKnownType() string - } - t, ok := sv.Addr().Interface().(wkt) - return ok && t.XXX_WellKnownType() == "Any" -} - -// writeProto3Any writes an expanded google.protobuf.Any message. -// -// It returns (false, nil) if sv value can't be unmarshaled (e.g. because -// required messages are not linked in). -// -// It returns (true, error) when sv was written in expanded format or an error -// was encountered. -func (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Value) (bool, error) { - turl := sv.FieldByName("TypeUrl") - val := sv.FieldByName("Value") - if !turl.IsValid() || !val.IsValid() { - return true, errors.New("proto: invalid google.protobuf.Any message") - } - - b, ok := val.Interface().([]byte) - if !ok { - return true, errors.New("proto: invalid google.protobuf.Any message") - } - - parts := strings.Split(turl.String(), "/") - mt := MessageType(parts[len(parts)-1]) - if mt == nil { - return false, nil - } - m := reflect.New(mt.Elem()) - if err := Unmarshal(b, m.Interface().(Message)); err != nil { - return false, nil - } - w.Write([]byte("[")) - u := turl.String() - if requiresQuotes(u) { - writeString(w, u) - } else { - w.Write([]byte(u)) - } - if w.compact { - w.Write([]byte("]:<")) - } else { - w.Write([]byte("]: <\n")) - w.ind++ - } - if err := tm.writeStruct(w, m.Elem()); err != nil { - return true, err - } - if w.compact { - w.Write([]byte("> ")) - } else { - w.ind-- - w.Write([]byte(">\n")) - } - return true, nil -} - -func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { - if tm.ExpandAny && isAny(sv) { - if canExpand, err := tm.writeProto3Any(w, sv); canExpand { - return err - } - } - st := sv.Type() - sprops := GetProperties(st) - for i := 0; i < sv.NumField(); i++ { - fv := sv.Field(i) - props := sprops.Prop[i] - name := st.Field(i).Name - - if name == "XXX_NoUnkeyedLiteral" { - continue - } - - if strings.HasPrefix(name, "XXX_") { - // There are two XXX_ fields: - // XXX_unrecognized []byte - // XXX_extensions map[int32]proto.Extension - // The first is handled here; - // the second is handled at the bottom of this function. - if name == "XXX_unrecognized" && !fv.IsNil() { - if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil { - return err - } - } - continue - } - if fv.Kind() == reflect.Ptr && fv.IsNil() { - // Field not filled in. This could be an optional field or - // a required field that wasn't filled in. Either way, there - // isn't anything we can show for it. - continue - } - if fv.Kind() == reflect.Slice && fv.IsNil() { - // Repeated field that is empty, or a bytes field that is unused. - continue - } - - if props.Repeated && fv.Kind() == reflect.Slice { - // Repeated field. - for j := 0; j < fv.Len(); j++ { - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - v := fv.Index(j) - if v.Kind() == reflect.Ptr && v.IsNil() { - // A nil message in a repeated field is not valid, - // but we can handle that more gracefully than panicking. - if _, err := w.Write([]byte("\n")); err != nil { - return err - } - continue - } - if err := tm.writeAny(w, v, props); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - continue - } - if fv.Kind() == reflect.Map { - // Map fields are rendered as a repeated struct with key/value fields. - keys := fv.MapKeys() - sort.Sort(mapKeys(keys)) - for _, key := range keys { - val := fv.MapIndex(key) - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - // open struct - if err := w.WriteByte('<'); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte('\n'); err != nil { - return err - } - } - w.indent() - // key - if _, err := w.WriteString("key:"); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := tm.writeAny(w, key, props.MapKeyProp); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - // nil values aren't legal, but we can avoid panicking because of them. - if val.Kind() != reflect.Ptr || !val.IsNil() { - // value - if _, err := w.WriteString("value:"); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := tm.writeAny(w, val, props.MapValProp); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - // close struct - w.unindent() - if err := w.WriteByte('>'); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - } - continue - } - if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 { - // empty bytes field - continue - } - if fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice { - // proto3 non-repeated scalar field; skip if zero value - if isProto3Zero(fv) { - continue - } - } - - if fv.Kind() == reflect.Interface { - // Check if it is a oneof. - if st.Field(i).Tag.Get("protobuf_oneof") != "" { - // fv is nil, or holds a pointer to generated struct. - // That generated struct has exactly one field, - // which has a protobuf struct tag. - if fv.IsNil() { - continue - } - inner := fv.Elem().Elem() // interface -> *T -> T - tag := inner.Type().Field(0).Tag.Get("protobuf") - props = new(Properties) // Overwrite the outer props var, but not its pointee. - props.Parse(tag) - // Write the value in the oneof, not the oneof itself. - fv = inner.Field(0) - - // Special case to cope with malformed messages gracefully: - // If the value in the oneof is a nil pointer, don't panic - // in writeAny. - if fv.Kind() == reflect.Ptr && fv.IsNil() { - // Use errors.New so writeAny won't render quotes. - msg := errors.New("/* nil */") - fv = reflect.ValueOf(&msg).Elem() - } - } - } - - if err := writeName(w, props); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - - // Enums have a String method, so writeAny will work fine. - if err := tm.writeAny(w, fv, props); err != nil { - return err - } - - if err := w.WriteByte('\n'); err != nil { - return err - } - } - - // Extensions (the XXX_extensions field). - pv := sv.Addr() - if _, err := extendable(pv.Interface()); err == nil { - if err := tm.writeExtensions(w, pv); err != nil { - return err - } - } - - return nil -} - -var textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() - -// writeAny writes an arbitrary field. -func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error { - v = reflect.Indirect(v) - - // Floats have special cases. - if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { - x := v.Float() - var b []byte - switch { - case math.IsInf(x, 1): - b = posInf - case math.IsInf(x, -1): - b = negInf - case math.IsNaN(x): - b = nan - } - if b != nil { - _, err := w.Write(b) - return err - } - // Other values are handled below. - } - - // We don't attempt to serialise every possible value type; only those - // that can occur in protocol buffers. - switch v.Kind() { - case reflect.Slice: - // Should only be a []byte; repeated fields are handled in writeStruct. - if err := writeString(w, string(v.Bytes())); err != nil { - return err - } - case reflect.String: - if err := writeString(w, v.String()); err != nil { - return err - } - case reflect.Struct: - // Required/optional group/message. - var bra, ket byte = '<', '>' - if props != nil && props.Wire == "group" { - bra, ket = '{', '}' - } - if err := w.WriteByte(bra); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte('\n'); err != nil { - return err - } - } - w.indent() - if v.CanAddr() { - // Calling v.Interface on a struct causes the reflect package to - // copy the entire struct. This is racy with the new Marshaler - // since we atomically update the XXX_sizecache. - // - // Thus, we retrieve a pointer to the struct if possible to avoid - // a race since v.Interface on the pointer doesn't copy the struct. - // - // If v is not addressable, then we are not worried about a race - // since it implies that the binary Marshaler cannot possibly be - // mutating this value. - v = v.Addr() - } - if v.Type().Implements(textMarshalerType) { - text, err := v.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - if _, err = w.Write(text); err != nil { - return err - } - } else { - if v.Kind() == reflect.Ptr { - v = v.Elem() - } - if err := tm.writeStruct(w, v); err != nil { - return err - } - } - w.unindent() - if err := w.WriteByte(ket); err != nil { - return err - } - default: - _, err := fmt.Fprint(w, v.Interface()) - return err - } - return nil -} - -// equivalent to C's isprint. -func isprint(c byte) bool { - return c >= 0x20 && c < 0x7f -} - -// writeString writes a string in the protocol buffer text format. -// It is similar to strconv.Quote except we don't use Go escape sequences, -// we treat the string as a byte sequence, and we use octal escapes. -// These differences are to maintain interoperability with the other -// languages' implementations of the text format. -func writeString(w *textWriter, s string) error { - // use WriteByte here to get any needed indent - if err := w.WriteByte('"'); err != nil { - return err - } - // Loop over the bytes, not the runes. - for i := 0; i < len(s); i++ { - var err error - // Divergence from C++: we don't escape apostrophes. - // There's no need to escape them, and the C++ parser - // copes with a naked apostrophe. - switch c := s[i]; c { - case '\n': - _, err = w.w.Write(backslashN) - case '\r': - _, err = w.w.Write(backslashR) - case '\t': - _, err = w.w.Write(backslashT) - case '"': - _, err = w.w.Write(backslashDQ) - case '\\': - _, err = w.w.Write(backslashBS) - default: - if isprint(c) { - err = w.w.WriteByte(c) - } else { - _, err = fmt.Fprintf(w.w, "\\%03o", c) - } - } - if err != nil { - return err - } - } - return w.WriteByte('"') -} - -func writeUnknownStruct(w *textWriter, data []byte) (err error) { - if !w.compact { - if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil { - return err - } - } - b := NewBuffer(data) - for b.index < len(b.buf) { - x, err := b.DecodeVarint() - if err != nil { - _, err := fmt.Fprintf(w, "/* %v */\n", err) - return err - } - wire, tag := x&7, x>>3 - if wire == WireEndGroup { - w.unindent() - if _, err := w.Write(endBraceNewline); err != nil { - return err - } - continue - } - if _, err := fmt.Fprint(w, tag); err != nil { - return err - } - if wire != WireStartGroup { - if err := w.WriteByte(':'); err != nil { - return err - } - } - if !w.compact || wire == WireStartGroup { - if err := w.WriteByte(' '); err != nil { - return err - } - } - switch wire { - case WireBytes: - buf, e := b.DecodeRawBytes(false) - if e == nil { - _, err = fmt.Fprintf(w, "%q", buf) - } else { - _, err = fmt.Fprintf(w, "/* %v */", e) - } - case WireFixed32: - x, err = b.DecodeFixed32() - err = writeUnknownInt(w, x, err) - case WireFixed64: - x, err = b.DecodeFixed64() - err = writeUnknownInt(w, x, err) - case WireStartGroup: - err = w.WriteByte('{') - w.indent() - case WireVarint: - x, err = b.DecodeVarint() - err = writeUnknownInt(w, x, err) - default: - _, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire) - } - if err != nil { - return err - } - if err = w.WriteByte('\n'); err != nil { - return err - } - } - return nil -} - -func writeUnknownInt(w *textWriter, x uint64, err error) error { - if err == nil { - _, err = fmt.Fprint(w, x) - } else { - _, err = fmt.Fprintf(w, "/* %v */", err) - } - return err -} - -type int32Slice []int32 - -func (s int32Slice) Len() int { return len(s) } -func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } -func (s int32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } - -// writeExtensions writes all the extensions in pv. -// pv is assumed to be a pointer to a protocol message struct that is extendable. -func (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Value) error { - emap := extensionMaps[pv.Type().Elem()] - ep, _ := extendable(pv.Interface()) - - // Order the extensions by ID. - // This isn't strictly necessary, but it will give us - // canonical output, which will also make testing easier. - m, mu := ep.extensionsRead() - if m == nil { - return nil - } - mu.Lock() - ids := make([]int32, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) - mu.Unlock() - - for _, extNum := range ids { - ext := m[extNum] - var desc *ExtensionDesc - if emap != nil { - desc = emap[extNum] - } - if desc == nil { - // Unknown extension. - if err := writeUnknownStruct(w, ext.enc); err != nil { - return err - } - continue - } - - pb, err := GetExtension(ep, desc) - if err != nil { - return fmt.Errorf("failed getting extension: %v", err) - } - - // Repeated extensions will appear as a slice. - if !desc.repeated() { - if err := tm.writeExtension(w, desc.Name, pb); err != nil { - return err - } - } else { - v := reflect.ValueOf(pb) - for i := 0; i < v.Len(); i++ { - if err := tm.writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil { - return err - } - } - } - } - return nil -} - -func (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb interface{}) error { - if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil { - return err - } - if !w.compact { - if err := w.WriteByte(' '); err != nil { - return err - } - } - if err := tm.writeAny(w, reflect.ValueOf(pb), nil); err != nil { - return err - } - if err := w.WriteByte('\n'); err != nil { - return err - } - return nil -} - -func (w *textWriter) writeIndent() { - if !w.complete { - return - } - remain := w.ind * 2 - for remain > 0 { - n := remain - if n > len(spaces) { - n = len(spaces) - } - w.w.Write(spaces[:n]) - remain -= n - } - w.complete = false -} - -// TextMarshaler is a configurable text format marshaler. -type TextMarshaler struct { - Compact bool // use compact text format (one line). - ExpandAny bool // expand google.protobuf.Any messages of known types -} - -// Marshal writes a given protocol buffer in text format. -// The only errors returned are from w. -func (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error { - val := reflect.ValueOf(pb) - if pb == nil || val.IsNil() { - w.Write([]byte("")) - return nil - } - var bw *bufio.Writer - ww, ok := w.(writer) - if !ok { - bw = bufio.NewWriter(w) - ww = bw - } - aw := &textWriter{ - w: ww, - complete: true, - compact: tm.Compact, - } - - if etm, ok := pb.(encoding.TextMarshaler); ok { - text, err := etm.MarshalText() - if err != nil { - return err - } - if _, err = aw.Write(text); err != nil { - return err - } - if bw != nil { - return bw.Flush() - } - return nil - } - // Dereference the received pointer so we don't have outer < and >. - v := reflect.Indirect(val) - if err := tm.writeStruct(aw, v); err != nil { - return err - } - if bw != nil { - return bw.Flush() - } - return nil -} - -// Text is the same as Marshal, but returns the string directly. -func (tm *TextMarshaler) Text(pb Message) string { - var buf bytes.Buffer - tm.Marshal(&buf, pb) - return buf.String() -} - -var ( - defaultTextMarshaler = TextMarshaler{} - compactTextMarshaler = TextMarshaler{Compact: true} -) - -// TODO: consider removing some of the Marshal functions below. - -// MarshalText writes a given protocol buffer in text format. -// The only errors returned are from w. -func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) } - -// MarshalTextString is the same as MarshalText, but returns the string directly. -func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) } - -// CompactText writes a given protocol buffer in compact text format (one line). -func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) } - -// CompactTextString is the same as CompactText, but returns the string directly. -func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) } diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go deleted file mode 100644 index bb55a3af..00000000 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ /dev/null @@ -1,880 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -// Functions for parsing the Text protocol buffer format. -// TODO: message sets. - -import ( - "encoding" - "errors" - "fmt" - "reflect" - "strconv" - "strings" - "unicode/utf8" -) - -// Error string emitted when deserializing Any and fields are already set -const anyRepeatedlyUnpacked = "Any message unpacked multiple times, or %q already set" - -type ParseError struct { - Message string - Line int // 1-based line number - Offset int // 0-based byte offset from start of input -} - -func (p *ParseError) Error() string { - if p.Line == 1 { - // show offset only for first line - return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message) - } - return fmt.Sprintf("line %d: %v", p.Line, p.Message) -} - -type token struct { - value string - err *ParseError - line int // line number - offset int // byte number from start of input, not start of line - unquoted string // the unquoted version of value, if it was a quoted string -} - -func (t *token) String() string { - if t.err == nil { - return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset) - } - return fmt.Sprintf("parse error: %v", t.err) -} - -type textParser struct { - s string // remaining input - done bool // whether the parsing is finished (success or error) - backed bool // whether back() was called - offset, line int - cur token -} - -func newTextParser(s string) *textParser { - p := new(textParser) - p.s = s - p.line = 1 - p.cur.line = 1 - return p -} - -func (p *textParser) errorf(format string, a ...interface{}) *ParseError { - pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset} - p.cur.err = pe - p.done = true - return pe -} - -// Numbers and identifiers are matched by [-+._A-Za-z0-9] -func isIdentOrNumberChar(c byte) bool { - switch { - case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z': - return true - case '0' <= c && c <= '9': - return true - } - switch c { - case '-', '+', '.', '_': - return true - } - return false -} - -func isWhitespace(c byte) bool { - switch c { - case ' ', '\t', '\n', '\r': - return true - } - return false -} - -func isQuote(c byte) bool { - switch c { - case '"', '\'': - return true - } - return false -} - -func (p *textParser) skipWhitespace() { - i := 0 - for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') { - if p.s[i] == '#' { - // comment; skip to end of line or input - for i < len(p.s) && p.s[i] != '\n' { - i++ - } - if i == len(p.s) { - break - } - } - if p.s[i] == '\n' { - p.line++ - } - i++ - } - p.offset += i - p.s = p.s[i:len(p.s)] - if len(p.s) == 0 { - p.done = true - } -} - -func (p *textParser) advance() { - // Skip whitespace - p.skipWhitespace() - if p.done { - return - } - - // Start of non-whitespace - p.cur.err = nil - p.cur.offset, p.cur.line = p.offset, p.line - p.cur.unquoted = "" - switch p.s[0] { - case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/': - // Single symbol - p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)] - case '"', '\'': - // Quoted string - i := 1 - for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' { - if p.s[i] == '\\' && i+1 < len(p.s) { - // skip escaped char - i++ - } - i++ - } - if i >= len(p.s) || p.s[i] != p.s[0] { - p.errorf("unmatched quote") - return - } - unq, err := unquoteC(p.s[1:i], rune(p.s[0])) - if err != nil { - p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err) - return - } - p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)] - p.cur.unquoted = unq - default: - i := 0 - for i < len(p.s) && isIdentOrNumberChar(p.s[i]) { - i++ - } - if i == 0 { - p.errorf("unexpected byte %#x", p.s[0]) - return - } - p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)] - } - p.offset += len(p.cur.value) -} - -var ( - errBadUTF8 = errors.New("proto: bad UTF-8") -) - -func unquoteC(s string, quote rune) (string, error) { - // This is based on C++'s tokenizer.cc. - // Despite its name, this is *not* parsing C syntax. - // For instance, "\0" is an invalid quoted string. - - // Avoid allocation in trivial cases. - simple := true - for _, r := range s { - if r == '\\' || r == quote { - simple = false - break - } - } - if simple { - return s, nil - } - - buf := make([]byte, 0, 3*len(s)/2) - for len(s) > 0 { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", errBadUTF8 - } - s = s[n:] - if r != '\\' { - if r < utf8.RuneSelf { - buf = append(buf, byte(r)) - } else { - buf = append(buf, string(r)...) - } - continue - } - - ch, tail, err := unescape(s) - if err != nil { - return "", err - } - buf = append(buf, ch...) - s = tail - } - return string(buf), nil -} - -func unescape(s string) (ch string, tail string, err error) { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", "", errBadUTF8 - } - s = s[n:] - switch r { - case 'a': - return "\a", s, nil - case 'b': - return "\b", s, nil - case 'f': - return "\f", s, nil - case 'n': - return "\n", s, nil - case 'r': - return "\r", s, nil - case 't': - return "\t", s, nil - case 'v': - return "\v", s, nil - case '?': - return "?", s, nil // trigraph workaround - case '\'', '"', '\\': - return string(r), s, nil - case '0', '1', '2', '3', '4', '5', '6', '7': - if len(s) < 2 { - return "", "", fmt.Errorf(`\%c requires 2 following digits`, r) - } - ss := string(r) + s[:2] - s = s[2:] - i, err := strconv.ParseUint(ss, 8, 8) - if err != nil { - return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss) - } - return string([]byte{byte(i)}), s, nil - case 'x', 'X', 'u', 'U': - var n int - switch r { - case 'x', 'X': - n = 2 - case 'u': - n = 4 - case 'U': - n = 8 - } - if len(s) < n { - return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n) - } - ss := s[:n] - s = s[n:] - i, err := strconv.ParseUint(ss, 16, 64) - if err != nil { - return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss) - } - if r == 'x' || r == 'X' { - return string([]byte{byte(i)}), s, nil - } - if i > utf8.MaxRune { - return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss) - } - return string(i), s, nil - } - return "", "", fmt.Errorf(`unknown escape \%c`, r) -} - -// Back off the parser by one token. Can only be done between calls to next(). -// It makes the next advance() a no-op. -func (p *textParser) back() { p.backed = true } - -// Advances the parser and returns the new current token. -func (p *textParser) next() *token { - if p.backed || p.done { - p.backed = false - return &p.cur - } - p.advance() - if p.done { - p.cur.value = "" - } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) { - // Look for multiple quoted strings separated by whitespace, - // and concatenate them. - cat := p.cur - for { - p.skipWhitespace() - if p.done || !isQuote(p.s[0]) { - break - } - p.advance() - if p.cur.err != nil { - return &p.cur - } - cat.value += " " + p.cur.value - cat.unquoted += p.cur.unquoted - } - p.done = false // parser may have seen EOF, but we want to return cat - p.cur = cat - } - return &p.cur -} - -func (p *textParser) consumeToken(s string) error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != s { - p.back() - return p.errorf("expected %q, found %q", s, tok.value) - } - return nil -} - -// Return a RequiredNotSetError indicating which required field was not set. -func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError { - st := sv.Type() - sprops := GetProperties(st) - for i := 0; i < st.NumField(); i++ { - if !isNil(sv.Field(i)) { - continue - } - - props := sprops.Prop[i] - if props.Required { - return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)} - } - } - return &RequiredNotSetError{fmt.Sprintf("%v.", st)} // should not happen -} - -// Returns the index in the struct for the named field, as well as the parsed tag properties. -func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) { - i, ok := sprops.decoderOrigNames[name] - if ok { - return i, sprops.Prop[i], true - } - return -1, nil, false -} - -// Consume a ':' from the input stream (if the next token is a colon), -// returning an error if a colon is needed but not present. -func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ":" { - // Colon is optional when the field is a group or message. - needColon := true - switch props.Wire { - case "group": - needColon = false - case "bytes": - // A "bytes" field is either a message, a string, or a repeated field; - // those three become *T, *string and []T respectively, so we can check for - // this field being a pointer to a non-string. - if typ.Kind() == reflect.Ptr { - // *T or *string - if typ.Elem().Kind() == reflect.String { - break - } - } else if typ.Kind() == reflect.Slice { - // []T or []*T - if typ.Elem().Kind() != reflect.Ptr { - break - } - } else if typ.Kind() == reflect.String { - // The proto3 exception is for a string field, - // which requires a colon. - break - } - needColon = false - } - if needColon { - return p.errorf("expected ':', found %q", tok.value) - } - p.back() - } - return nil -} - -func (p *textParser) readStruct(sv reflect.Value, terminator string) error { - st := sv.Type() - sprops := GetProperties(st) - reqCount := sprops.reqCount - var reqFieldErr error - fieldSet := make(map[string]bool) - // A struct is a sequence of "name: value", terminated by one of - // '>' or '}', or the end of the input. A name may also be - // "[extension]" or "[type/url]". - // - // The whole struct can also be an expanded Any message, like: - // [type/url] < ... struct contents ... > - for { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == terminator { - break - } - if tok.value == "[" { - // Looks like an extension or an Any. - // - // TODO: Check whether we need to handle - // namespace rooted names (e.g. ".something.Foo"). - extName, err := p.consumeExtName() - if err != nil { - return err - } - - if s := strings.LastIndex(extName, "/"); s >= 0 { - // If it contains a slash, it's an Any type URL. - messageName := extName[s+1:] - mt := MessageType(messageName) - if mt == nil { - return p.errorf("unrecognized message %q in google.protobuf.Any", messageName) - } - tok = p.next() - if tok.err != nil { - return tok.err - } - // consume an optional colon - if tok.value == ":" { - tok = p.next() - if tok.err != nil { - return tok.err - } - } - var terminator string - switch tok.value { - case "<": - terminator = ">" - case "{": - terminator = "}" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - v := reflect.New(mt.Elem()) - if pe := p.readStruct(v.Elem(), terminator); pe != nil { - return pe - } - b, err := Marshal(v.Interface().(Message)) - if err != nil { - return p.errorf("failed to marshal message of type %q: %v", messageName, err) - } - if fieldSet["type_url"] { - return p.errorf(anyRepeatedlyUnpacked, "type_url") - } - if fieldSet["value"] { - return p.errorf(anyRepeatedlyUnpacked, "value") - } - sv.FieldByName("TypeUrl").SetString(extName) - sv.FieldByName("Value").SetBytes(b) - fieldSet["type_url"] = true - fieldSet["value"] = true - continue - } - - var desc *ExtensionDesc - // This could be faster, but it's functional. - // TODO: Do something smarter than a linear scan. - for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) { - if d.Name == extName { - desc = d - break - } - } - if desc == nil { - return p.errorf("unrecognized extension %q", extName) - } - - props := &Properties{} - props.Parse(desc.Tag) - - typ := reflect.TypeOf(desc.ExtensionType) - if err := p.checkForColon(props, typ); err != nil { - return err - } - - rep := desc.repeated() - - // Read the extension structure, and set it in - // the value we're constructing. - var ext reflect.Value - if !rep { - ext = reflect.New(typ).Elem() - } else { - ext = reflect.New(typ.Elem()).Elem() - } - if err := p.readAny(ext, props); err != nil { - if _, ok := err.(*RequiredNotSetError); !ok { - return err - } - reqFieldErr = err - } - ep := sv.Addr().Interface().(Message) - if !rep { - SetExtension(ep, desc, ext.Interface()) - } else { - old, err := GetExtension(ep, desc) - var sl reflect.Value - if err == nil { - sl = reflect.ValueOf(old) // existing slice - } else { - sl = reflect.MakeSlice(typ, 0, 1) - } - sl = reflect.Append(sl, ext) - SetExtension(ep, desc, sl.Interface()) - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - continue - } - - // This is a normal, non-extension field. - name := tok.value - var dst reflect.Value - fi, props, ok := structFieldByName(sprops, name) - if ok { - dst = sv.Field(fi) - } else if oop, ok := sprops.OneofTypes[name]; ok { - // It is a oneof. - props = oop.Prop - nv := reflect.New(oop.Type.Elem()) - dst = nv.Elem().Field(0) - field := sv.Field(oop.Field) - if !field.IsNil() { - return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, sv.Type().Field(oop.Field).Name) - } - field.Set(nv) - } - if !dst.IsValid() { - return p.errorf("unknown field name %q in %v", name, st) - } - - if dst.Kind() == reflect.Map { - // Consume any colon. - if err := p.checkForColon(props, dst.Type()); err != nil { - return err - } - - // Construct the map if it doesn't already exist. - if dst.IsNil() { - dst.Set(reflect.MakeMap(dst.Type())) - } - key := reflect.New(dst.Type().Key()).Elem() - val := reflect.New(dst.Type().Elem()).Elem() - - // The map entry should be this sequence of tokens: - // < key : KEY value : VALUE > - // However, implementations may omit key or value, and technically - // we should support them in any order. See b/28924776 for a time - // this went wrong. - - tok := p.next() - var terminator string - switch tok.value { - case "<": - terminator = ">" - case "{": - terminator = "}" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - for { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == terminator { - break - } - switch tok.value { - case "key": - if err := p.consumeToken(":"); err != nil { - return err - } - if err := p.readAny(key, props.MapKeyProp); err != nil { - return err - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - case "value": - if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil { - return err - } - if err := p.readAny(val, props.MapValProp); err != nil { - return err - } - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - default: - p.back() - return p.errorf(`expected "key", "value", or %q, found %q`, terminator, tok.value) - } - } - - dst.SetMapIndex(key, val) - continue - } - - // Check that it's not already set if it's not a repeated field. - if !props.Repeated && fieldSet[name] { - return p.errorf("non-repeated field %q was repeated", name) - } - - if err := p.checkForColon(props, dst.Type()); err != nil { - return err - } - - // Parse into the field. - fieldSet[name] = true - if err := p.readAny(dst, props); err != nil { - if _, ok := err.(*RequiredNotSetError); !ok { - return err - } - reqFieldErr = err - } - if props.Required { - reqCount-- - } - - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - - } - - if reqCount > 0 { - return p.missingRequiredFieldError(sv) - } - return reqFieldErr -} - -// consumeExtName consumes extension name or expanded Any type URL and the -// following ']'. It returns the name or URL consumed. -func (p *textParser) consumeExtName() (string, error) { - tok := p.next() - if tok.err != nil { - return "", tok.err - } - - // If extension name or type url is quoted, it's a single token. - if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] { - name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0])) - if err != nil { - return "", err - } - return name, p.consumeToken("]") - } - - // Consume everything up to "]" - var parts []string - for tok.value != "]" { - parts = append(parts, tok.value) - tok = p.next() - if tok.err != nil { - return "", p.errorf("unrecognized type_url or extension name: %s", tok.err) - } - if p.done && tok.value != "]" { - return "", p.errorf("unclosed type_url or extension name") - } - } - return strings.Join(parts, ""), nil -} - -// consumeOptionalSeparator consumes an optional semicolon or comma. -// It is used in readStruct to provide backward compatibility. -func (p *textParser) consumeOptionalSeparator() error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ";" && tok.value != "," { - p.back() - } - return nil -} - -func (p *textParser) readAny(v reflect.Value, props *Properties) error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == "" { - return p.errorf("unexpected EOF") - } - - switch fv := v; fv.Kind() { - case reflect.Slice: - at := v.Type() - if at.Elem().Kind() == reflect.Uint8 { - // Special case for []byte - if tok.value[0] != '"' && tok.value[0] != '\'' { - // Deliberately written out here, as the error after - // this switch statement would write "invalid []byte: ...", - // which is not as user-friendly. - return p.errorf("invalid string: %v", tok.value) - } - bytes := []byte(tok.unquoted) - fv.Set(reflect.ValueOf(bytes)) - return nil - } - // Repeated field. - if tok.value == "[" { - // Repeated field with list notation, like [1,2,3]. - for { - fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) - err := p.readAny(fv.Index(fv.Len()-1), props) - if err != nil { - return err - } - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == "]" { - break - } - if tok.value != "," { - return p.errorf("Expected ']' or ',' found %q", tok.value) - } - } - return nil - } - // One value of the repeated field. - p.back() - fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) - return p.readAny(fv.Index(fv.Len()-1), props) - case reflect.Bool: - // true/1/t/True or false/f/0/False. - switch tok.value { - case "true", "1", "t", "True": - fv.SetBool(true) - return nil - case "false", "0", "f", "False": - fv.SetBool(false) - return nil - } - case reflect.Float32, reflect.Float64: - v := tok.value - // Ignore 'f' for compatibility with output generated by C++, but don't - // remove 'f' when the value is "-inf" or "inf". - if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" { - v = v[:len(v)-1] - } - if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil { - fv.SetFloat(f) - return nil - } - case reflect.Int32: - if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { - fv.SetInt(x) - return nil - } - - if len(props.Enum) == 0 { - break - } - m, ok := enumValueMaps[props.Enum] - if !ok { - break - } - x, ok := m[tok.value] - if !ok { - break - } - fv.SetInt(int64(x)) - return nil - case reflect.Int64: - if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil { - fv.SetInt(x) - return nil - } - - case reflect.Ptr: - // A basic field (indirected through pointer), or a repeated message/group - p.back() - fv.Set(reflect.New(fv.Type().Elem())) - return p.readAny(fv.Elem(), props) - case reflect.String: - if tok.value[0] == '"' || tok.value[0] == '\'' { - fv.SetString(tok.unquoted) - return nil - } - case reflect.Struct: - var terminator string - switch tok.value { - case "{": - terminator = "}" - case "<": - terminator = ">" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - // TODO: Handle nested messages which implement encoding.TextUnmarshaler. - return p.readStruct(fv, terminator) - case reflect.Uint32: - if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - fv.SetUint(uint64(x)) - return nil - } - case reflect.Uint64: - if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil { - fv.SetUint(x) - return nil - } - } - return p.errorf("invalid %v: %v", v.Type(), tok.value) -} - -// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb -// before starting to unmarshal, so any existing data in pb is always removed. -// If a required field is not set and no other error occurs, -// UnmarshalText returns *RequiredNotSetError. -func UnmarshalText(s string, pb Message) error { - if um, ok := pb.(encoding.TextUnmarshaler); ok { - return um.UnmarshalText([]byte(s)) - } - pb.Reset() - v := reflect.ValueOf(pb) - return newTextParser(s).readStruct(v.Elem(), "") -} diff --git a/vendor/github.com/lib/pq/CONTRIBUTING.md b/vendor/github.com/lib/pq/CONTRIBUTING.md deleted file mode 100644 index 84c937f1..00000000 --- a/vendor/github.com/lib/pq/CONTRIBUTING.md +++ /dev/null @@ -1,29 +0,0 @@ -## Contributing to pq - -`pq` has a backlog of pull requests, but contributions are still very -much welcome. You can help with patch review, submitting bug reports, -or adding new functionality. There is no formal style guide, but -please conform to the style of existing code and general Go formatting -conventions when submitting patches. - -### Patch review - -Help review existing open pull requests by commenting on the code or -proposed functionality. - -### Bug reports - -We appreciate any bug reports, but especially ones with self-contained -(doesn't depend on code outside of pq), minimal (can't be simplified -further) test cases. It's especially helpful if you can submit a pull -request with just the failing test case (you'll probably want to -pattern it after the tests in -[conn_test.go](https://github.com/lib/pq/blob/master/conn_test.go). - -### New functionality - -There are a number of pending patches for new functionality, so -additional feature patches will take a while to merge. Still, patches -are generally reviewed based on usefulness and complexity in addition -to time-in-queue, so if you have a knockout idea, take a shot. Feel -free to open an issue discussion your proposed patch beforehand. diff --git a/vendor/github.com/lib/pq/LICENSE.md b/vendor/github.com/lib/pq/LICENSE.md deleted file mode 100644 index 5773904a..00000000 --- a/vendor/github.com/lib/pq/LICENSE.md +++ /dev/null @@ -1,8 +0,0 @@ -Copyright (c) 2011-2013, 'pq' Contributors -Portions Copyright (C) 2011 Blake Mizerany - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/lib/pq/README.md b/vendor/github.com/lib/pq/README.md deleted file mode 100644 index 385fe735..00000000 --- a/vendor/github.com/lib/pq/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# pq - A pure Go postgres driver for Go's database/sql package - -[![GoDoc](https://godoc.org/github.com/lib/pq?status.svg)](https://godoc.org/github.com/lib/pq) -[![Build Status](https://travis-ci.org/lib/pq.svg?branch=master)](https://travis-ci.org/lib/pq) - -## Install - - go get github.com/lib/pq - -## Docs - -For detailed documentation and basic usage examples, please see the package -documentation at . - -## Tests - -`go test` is used for testing. See [TESTS.md](TESTS.md) for more details. - -## Features - -* SSL -* Handles bad connections for `database/sql` -* Scan `time.Time` correctly (i.e. `timestamp[tz]`, `time[tz]`, `date`) -* Scan binary blobs correctly (i.e. `bytea`) -* Package for `hstore` support -* COPY FROM support -* pq.ParseURL for converting urls to connection strings for sql.Open. -* Many libpq compatible environment variables -* Unix socket support -* Notifications: `LISTEN`/`NOTIFY` -* pgpass support - -## Future / Things you can help with - -* Better COPY FROM / COPY TO (see discussion in #181) - -## Thank you (alphabetical) - -Some of these contributors are from the original library `bmizerany/pq.go` whose -code still exists in here. - -* Andy Balholm (andybalholm) -* Ben Berkert (benburkert) -* Benjamin Heatwole (bheatwole) -* Bill Mill (llimllib) -* Bjørn Madsen (aeons) -* Blake Gentry (bgentry) -* Brad Fitzpatrick (bradfitz) -* Charlie Melbye (cmelbye) -* Chris Bandy (cbandy) -* Chris Gilling (cgilling) -* Chris Walsh (cwds) -* Dan Sosedoff (sosedoff) -* Daniel Farina (fdr) -* Eric Chlebek (echlebek) -* Eric Garrido (minusnine) -* Eric Urban (hydrogen18) -* Everyone at The Go Team -* Evan Shaw (edsrzf) -* Ewan Chou (coocood) -* Fazal Majid (fazalmajid) -* Federico Romero (federomero) -* Fumin (fumin) -* Gary Burd (garyburd) -* Heroku (heroku) -* James Pozdena (jpoz) -* Jason McVetta (jmcvetta) -* Jeremy Jay (pbnjay) -* Joakim Sernbrant (serbaut) -* John Gallagher (jgallagher) -* Jonathan Rudenberg (titanous) -* Joël Stemmer (jstemmer) -* Kamil Kisiel (kisielk) -* Kelly Dunn (kellydunn) -* Keith Rarick (kr) -* Kir Shatrov (kirs) -* Lann Martin (lann) -* Maciek Sakrejda (uhoh-itsmaciek) -* Marc Brinkmann (mbr) -* Marko Tiikkaja (johto) -* Matt Newberry (MattNewberry) -* Matt Robenolt (mattrobenolt) -* Martin Olsen (martinolsen) -* Mike Lewis (mikelikespie) -* Nicolas Patry (Narsil) -* Oliver Tonnhofer (olt) -* Patrick Hayes (phayes) -* Paul Hammond (paulhammond) -* Ryan Smith (ryandotsmith) -* Samuel Stauffer (samuel) -* Timothée Peignier (cyberdelia) -* Travis Cline (tmc) -* TruongSinh Tran-Nguyen (truongsinh) -* Yaismel Miranda (ympons) -* notedit (notedit) diff --git a/vendor/github.com/lib/pq/TESTS.md b/vendor/github.com/lib/pq/TESTS.md deleted file mode 100644 index f0502111..00000000 --- a/vendor/github.com/lib/pq/TESTS.md +++ /dev/null @@ -1,33 +0,0 @@ -# Tests - -## Running Tests - -`go test` is used for testing. A running PostgreSQL -server is required, with the ability to log in. The -database to connect to test with is "pqgotest," on -"localhost" but these can be overridden using [environment -variables](https://www.postgresql.org/docs/9.3/static/libpq-envars.html). - -Example: - - PGHOST=/run/postgresql go test - -## Benchmarks - -A benchmark suite can be run as part of the tests: - - go test -bench . - -## Example setup (Docker) - -Run a postgres container: - -``` -docker run --expose 5432:5432 postgres -``` - -Run tests: - -``` -PGHOST=localhost PGPORT=5432 PGUSER=postgres PGSSLMODE=disable PGDATABASE=postgres go test -``` diff --git a/vendor/github.com/lib/pq/array.go b/vendor/github.com/lib/pq/array.go deleted file mode 100644 index e4933e22..00000000 --- a/vendor/github.com/lib/pq/array.go +++ /dev/null @@ -1,756 +0,0 @@ -package pq - -import ( - "bytes" - "database/sql" - "database/sql/driver" - "encoding/hex" - "fmt" - "reflect" - "strconv" - "strings" -) - -var typeByteSlice = reflect.TypeOf([]byte{}) -var typeDriverValuer = reflect.TypeOf((*driver.Valuer)(nil)).Elem() -var typeSQLScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem() - -// Array returns the optimal driver.Valuer and sql.Scanner for an array or -// slice of any dimension. -// -// For example: -// db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401})) -// -// var x []sql.NullInt64 -// db.QueryRow('SELECT ARRAY[235, 401]').Scan(pq.Array(&x)) -// -// Scanning multi-dimensional arrays is not supported. Arrays where the lower -// bound is not one (such as `[0:0]={1}') are not supported. -func Array(a interface{}) interface { - driver.Valuer - sql.Scanner -} { - switch a := a.(type) { - case []bool: - return (*BoolArray)(&a) - case []float64: - return (*Float64Array)(&a) - case []int64: - return (*Int64Array)(&a) - case []string: - return (*StringArray)(&a) - - case *[]bool: - return (*BoolArray)(a) - case *[]float64: - return (*Float64Array)(a) - case *[]int64: - return (*Int64Array)(a) - case *[]string: - return (*StringArray)(a) - } - - return GenericArray{a} -} - -// ArrayDelimiter may be optionally implemented by driver.Valuer or sql.Scanner -// to override the array delimiter used by GenericArray. -type ArrayDelimiter interface { - // ArrayDelimiter returns the delimiter character(s) for this element's type. - ArrayDelimiter() string -} - -// BoolArray represents a one-dimensional array of the PostgreSQL boolean type. -type BoolArray []bool - -// Scan implements the sql.Scanner interface. -func (a *BoolArray) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - return a.scanBytes(src) - case string: - return a.scanBytes([]byte(src)) - case nil: - *a = nil - return nil - } - - return fmt.Errorf("pq: cannot convert %T to BoolArray", src) -} - -func (a *BoolArray) scanBytes(src []byte) error { - elems, err := scanLinearArray(src, []byte{','}, "BoolArray") - if err != nil { - return err - } - if *a != nil && len(elems) == 0 { - *a = (*a)[:0] - } else { - b := make(BoolArray, len(elems)) - for i, v := range elems { - if len(v) != 1 { - return fmt.Errorf("pq: could not parse boolean array index %d: invalid boolean %q", i, v) - } - switch v[0] { - case 't': - b[i] = true - case 'f': - b[i] = false - default: - return fmt.Errorf("pq: could not parse boolean array index %d: invalid boolean %q", i, v) - } - } - *a = b - } - return nil -} - -// Value implements the driver.Valuer interface. -func (a BoolArray) Value() (driver.Value, error) { - if a == nil { - return nil, nil - } - - if n := len(a); n > 0 { - // There will be exactly two curly brackets, N bytes of values, - // and N-1 bytes of delimiters. - b := make([]byte, 1+2*n) - - for i := 0; i < n; i++ { - b[2*i] = ',' - if a[i] { - b[1+2*i] = 't' - } else { - b[1+2*i] = 'f' - } - } - - b[0] = '{' - b[2*n] = '}' - - return string(b), nil - } - - return "{}", nil -} - -// ByteaArray represents a one-dimensional array of the PostgreSQL bytea type. -type ByteaArray [][]byte - -// Scan implements the sql.Scanner interface. -func (a *ByteaArray) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - return a.scanBytes(src) - case string: - return a.scanBytes([]byte(src)) - case nil: - *a = nil - return nil - } - - return fmt.Errorf("pq: cannot convert %T to ByteaArray", src) -} - -func (a *ByteaArray) scanBytes(src []byte) error { - elems, err := scanLinearArray(src, []byte{','}, "ByteaArray") - if err != nil { - return err - } - if *a != nil && len(elems) == 0 { - *a = (*a)[:0] - } else { - b := make(ByteaArray, len(elems)) - for i, v := range elems { - b[i], err = parseBytea(v) - if err != nil { - return fmt.Errorf("could not parse bytea array index %d: %s", i, err.Error()) - } - } - *a = b - } - return nil -} - -// Value implements the driver.Valuer interface. It uses the "hex" format which -// is only supported on PostgreSQL 9.0 or newer. -func (a ByteaArray) Value() (driver.Value, error) { - if a == nil { - return nil, nil - } - - if n := len(a); n > 0 { - // There will be at least two curly brackets, 2*N bytes of quotes, - // 3*N bytes of hex formatting, and N-1 bytes of delimiters. - size := 1 + 6*n - for _, x := range a { - size += hex.EncodedLen(len(x)) - } - - b := make([]byte, size) - - for i, s := 0, b; i < n; i++ { - o := copy(s, `,"\\x`) - o += hex.Encode(s[o:], a[i]) - s[o] = '"' - s = s[o+1:] - } - - b[0] = '{' - b[size-1] = '}' - - return string(b), nil - } - - return "{}", nil -} - -// Float64Array represents a one-dimensional array of the PostgreSQL double -// precision type. -type Float64Array []float64 - -// Scan implements the sql.Scanner interface. -func (a *Float64Array) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - return a.scanBytes(src) - case string: - return a.scanBytes([]byte(src)) - case nil: - *a = nil - return nil - } - - return fmt.Errorf("pq: cannot convert %T to Float64Array", src) -} - -func (a *Float64Array) scanBytes(src []byte) error { - elems, err := scanLinearArray(src, []byte{','}, "Float64Array") - if err != nil { - return err - } - if *a != nil && len(elems) == 0 { - *a = (*a)[:0] - } else { - b := make(Float64Array, len(elems)) - for i, v := range elems { - if b[i], err = strconv.ParseFloat(string(v), 64); err != nil { - return fmt.Errorf("pq: parsing array element index %d: %v", i, err) - } - } - *a = b - } - return nil -} - -// Value implements the driver.Valuer interface. -func (a Float64Array) Value() (driver.Value, error) { - if a == nil { - return nil, nil - } - - if n := len(a); n > 0 { - // There will be at least two curly brackets, N bytes of values, - // and N-1 bytes of delimiters. - b := make([]byte, 1, 1+2*n) - b[0] = '{' - - b = strconv.AppendFloat(b, a[0], 'f', -1, 64) - for i := 1; i < n; i++ { - b = append(b, ',') - b = strconv.AppendFloat(b, a[i], 'f', -1, 64) - } - - return string(append(b, '}')), nil - } - - return "{}", nil -} - -// GenericArray implements the driver.Valuer and sql.Scanner interfaces for -// an array or slice of any dimension. -type GenericArray struct{ A interface{} } - -func (GenericArray) evaluateDestination(rt reflect.Type) (reflect.Type, func([]byte, reflect.Value) error, string) { - var assign func([]byte, reflect.Value) error - var del = "," - - // TODO calculate the assign function for other types - // TODO repeat this section on the element type of arrays or slices (multidimensional) - { - if reflect.PtrTo(rt).Implements(typeSQLScanner) { - // dest is always addressable because it is an element of a slice. - assign = func(src []byte, dest reflect.Value) (err error) { - ss := dest.Addr().Interface().(sql.Scanner) - if src == nil { - err = ss.Scan(nil) - } else { - err = ss.Scan(src) - } - return - } - goto FoundType - } - - assign = func([]byte, reflect.Value) error { - return fmt.Errorf("pq: scanning to %s is not implemented; only sql.Scanner", rt) - } - } - -FoundType: - - if ad, ok := reflect.Zero(rt).Interface().(ArrayDelimiter); ok { - del = ad.ArrayDelimiter() - } - - return rt, assign, del -} - -// Scan implements the sql.Scanner interface. -func (a GenericArray) Scan(src interface{}) error { - dpv := reflect.ValueOf(a.A) - switch { - case dpv.Kind() != reflect.Ptr: - return fmt.Errorf("pq: destination %T is not a pointer to array or slice", a.A) - case dpv.IsNil(): - return fmt.Errorf("pq: destination %T is nil", a.A) - } - - dv := dpv.Elem() - switch dv.Kind() { - case reflect.Slice: - case reflect.Array: - default: - return fmt.Errorf("pq: destination %T is not a pointer to array or slice", a.A) - } - - switch src := src.(type) { - case []byte: - return a.scanBytes(src, dv) - case string: - return a.scanBytes([]byte(src), dv) - case nil: - if dv.Kind() == reflect.Slice { - dv.Set(reflect.Zero(dv.Type())) - return nil - } - } - - return fmt.Errorf("pq: cannot convert %T to %s", src, dv.Type()) -} - -func (a GenericArray) scanBytes(src []byte, dv reflect.Value) error { - dtype, assign, del := a.evaluateDestination(dv.Type().Elem()) - dims, elems, err := parseArray(src, []byte(del)) - if err != nil { - return err - } - - // TODO allow multidimensional - - if len(dims) > 1 { - return fmt.Errorf("pq: scanning from multidimensional ARRAY%s is not implemented", - strings.Replace(fmt.Sprint(dims), " ", "][", -1)) - } - - // Treat a zero-dimensional array like an array with a single dimension of zero. - if len(dims) == 0 { - dims = append(dims, 0) - } - - for i, rt := 0, dv.Type(); i < len(dims); i, rt = i+1, rt.Elem() { - switch rt.Kind() { - case reflect.Slice: - case reflect.Array: - if rt.Len() != dims[i] { - return fmt.Errorf("pq: cannot convert ARRAY%s to %s", - strings.Replace(fmt.Sprint(dims), " ", "][", -1), dv.Type()) - } - default: - // TODO handle multidimensional - } - } - - values := reflect.MakeSlice(reflect.SliceOf(dtype), len(elems), len(elems)) - for i, e := range elems { - if err := assign(e, values.Index(i)); err != nil { - return fmt.Errorf("pq: parsing array element index %d: %v", i, err) - } - } - - // TODO handle multidimensional - - switch dv.Kind() { - case reflect.Slice: - dv.Set(values.Slice(0, dims[0])) - case reflect.Array: - for i := 0; i < dims[0]; i++ { - dv.Index(i).Set(values.Index(i)) - } - } - - return nil -} - -// Value implements the driver.Valuer interface. -func (a GenericArray) Value() (driver.Value, error) { - if a.A == nil { - return nil, nil - } - - rv := reflect.ValueOf(a.A) - - switch rv.Kind() { - case reflect.Slice: - if rv.IsNil() { - return nil, nil - } - case reflect.Array: - default: - return nil, fmt.Errorf("pq: Unable to convert %T to array", a.A) - } - - if n := rv.Len(); n > 0 { - // There will be at least two curly brackets, N bytes of values, - // and N-1 bytes of delimiters. - b := make([]byte, 0, 1+2*n) - - b, _, err := appendArray(b, rv, n) - return string(b), err - } - - return "{}", nil -} - -// Int64Array represents a one-dimensional array of the PostgreSQL integer types. -type Int64Array []int64 - -// Scan implements the sql.Scanner interface. -func (a *Int64Array) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - return a.scanBytes(src) - case string: - return a.scanBytes([]byte(src)) - case nil: - *a = nil - return nil - } - - return fmt.Errorf("pq: cannot convert %T to Int64Array", src) -} - -func (a *Int64Array) scanBytes(src []byte) error { - elems, err := scanLinearArray(src, []byte{','}, "Int64Array") - if err != nil { - return err - } - if *a != nil && len(elems) == 0 { - *a = (*a)[:0] - } else { - b := make(Int64Array, len(elems)) - for i, v := range elems { - if b[i], err = strconv.ParseInt(string(v), 10, 64); err != nil { - return fmt.Errorf("pq: parsing array element index %d: %v", i, err) - } - } - *a = b - } - return nil -} - -// Value implements the driver.Valuer interface. -func (a Int64Array) Value() (driver.Value, error) { - if a == nil { - return nil, nil - } - - if n := len(a); n > 0 { - // There will be at least two curly brackets, N bytes of values, - // and N-1 bytes of delimiters. - b := make([]byte, 1, 1+2*n) - b[0] = '{' - - b = strconv.AppendInt(b, a[0], 10) - for i := 1; i < n; i++ { - b = append(b, ',') - b = strconv.AppendInt(b, a[i], 10) - } - - return string(append(b, '}')), nil - } - - return "{}", nil -} - -// StringArray represents a one-dimensional array of the PostgreSQL character types. -type StringArray []string - -// Scan implements the sql.Scanner interface. -func (a *StringArray) Scan(src interface{}) error { - switch src := src.(type) { - case []byte: - return a.scanBytes(src) - case string: - return a.scanBytes([]byte(src)) - case nil: - *a = nil - return nil - } - - return fmt.Errorf("pq: cannot convert %T to StringArray", src) -} - -func (a *StringArray) scanBytes(src []byte) error { - elems, err := scanLinearArray(src, []byte{','}, "StringArray") - if err != nil { - return err - } - if *a != nil && len(elems) == 0 { - *a = (*a)[:0] - } else { - b := make(StringArray, len(elems)) - for i, v := range elems { - if b[i] = string(v); v == nil { - return fmt.Errorf("pq: parsing array element index %d: cannot convert nil to string", i) - } - } - *a = b - } - return nil -} - -// Value implements the driver.Valuer interface. -func (a StringArray) Value() (driver.Value, error) { - if a == nil { - return nil, nil - } - - if n := len(a); n > 0 { - // There will be at least two curly brackets, 2*N bytes of quotes, - // and N-1 bytes of delimiters. - b := make([]byte, 1, 1+3*n) - b[0] = '{' - - b = appendArrayQuotedBytes(b, []byte(a[0])) - for i := 1; i < n; i++ { - b = append(b, ',') - b = appendArrayQuotedBytes(b, []byte(a[i])) - } - - return string(append(b, '}')), nil - } - - return "{}", nil -} - -// appendArray appends rv to the buffer, returning the extended buffer and -// the delimiter used between elements. -// -// It panics when n <= 0 or rv's Kind is not reflect.Array nor reflect.Slice. -func appendArray(b []byte, rv reflect.Value, n int) ([]byte, string, error) { - var del string - var err error - - b = append(b, '{') - - if b, del, err = appendArrayElement(b, rv.Index(0)); err != nil { - return b, del, err - } - - for i := 1; i < n; i++ { - b = append(b, del...) - if b, del, err = appendArrayElement(b, rv.Index(i)); err != nil { - return b, del, err - } - } - - return append(b, '}'), del, nil -} - -// appendArrayElement appends rv to the buffer, returning the extended buffer -// and the delimiter to use before the next element. -// -// When rv's Kind is neither reflect.Array nor reflect.Slice, it is converted -// using driver.DefaultParameterConverter and the resulting []byte or string -// is double-quoted. -// -// See http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO -func appendArrayElement(b []byte, rv reflect.Value) ([]byte, string, error) { - if k := rv.Kind(); k == reflect.Array || k == reflect.Slice { - if t := rv.Type(); t != typeByteSlice && !t.Implements(typeDriverValuer) { - if n := rv.Len(); n > 0 { - return appendArray(b, rv, n) - } - - return b, "", nil - } - } - - var del = "," - var err error - var iv interface{} = rv.Interface() - - if ad, ok := iv.(ArrayDelimiter); ok { - del = ad.ArrayDelimiter() - } - - if iv, err = driver.DefaultParameterConverter.ConvertValue(iv); err != nil { - return b, del, err - } - - switch v := iv.(type) { - case nil: - return append(b, "NULL"...), del, nil - case []byte: - return appendArrayQuotedBytes(b, v), del, nil - case string: - return appendArrayQuotedBytes(b, []byte(v)), del, nil - } - - b, err = appendValue(b, iv) - return b, del, err -} - -func appendArrayQuotedBytes(b, v []byte) []byte { - b = append(b, '"') - for { - i := bytes.IndexAny(v, `"\`) - if i < 0 { - b = append(b, v...) - break - } - if i > 0 { - b = append(b, v[:i]...) - } - b = append(b, '\\', v[i]) - v = v[i+1:] - } - return append(b, '"') -} - -func appendValue(b []byte, v driver.Value) ([]byte, error) { - return append(b, encode(nil, v, 0)...), nil -} - -// parseArray extracts the dimensions and elements of an array represented in -// text format. Only representations emitted by the backend are supported. -// Notably, whitespace around brackets and delimiters is significant, and NULL -// is case-sensitive. -// -// See http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO -func parseArray(src, del []byte) (dims []int, elems [][]byte, err error) { - var depth, i int - - if len(src) < 1 || src[0] != '{' { - return nil, nil, fmt.Errorf("pq: unable to parse array; expected %q at offset %d", '{', 0) - } - -Open: - for i < len(src) { - switch src[i] { - case '{': - depth++ - i++ - case '}': - elems = make([][]byte, 0) - goto Close - default: - break Open - } - } - dims = make([]int, i) - -Element: - for i < len(src) { - switch src[i] { - case '{': - if depth == len(dims) { - break Element - } - depth++ - dims[depth-1] = 0 - i++ - case '"': - var elem = []byte{} - var escape bool - for i++; i < len(src); i++ { - if escape { - elem = append(elem, src[i]) - escape = false - } else { - switch src[i] { - default: - elem = append(elem, src[i]) - case '\\': - escape = true - case '"': - elems = append(elems, elem) - i++ - break Element - } - } - } - default: - for start := i; i < len(src); i++ { - if bytes.HasPrefix(src[i:], del) || src[i] == '}' { - elem := src[start:i] - if len(elem) == 0 { - return nil, nil, fmt.Errorf("pq: unable to parse array; unexpected %q at offset %d", src[i], i) - } - if bytes.Equal(elem, []byte("NULL")) { - elem = nil - } - elems = append(elems, elem) - break Element - } - } - } - } - - for i < len(src) { - if bytes.HasPrefix(src[i:], del) && depth > 0 { - dims[depth-1]++ - i += len(del) - goto Element - } else if src[i] == '}' && depth > 0 { - dims[depth-1]++ - depth-- - i++ - } else { - return nil, nil, fmt.Errorf("pq: unable to parse array; unexpected %q at offset %d", src[i], i) - } - } - -Close: - for i < len(src) { - if src[i] == '}' && depth > 0 { - depth-- - i++ - } else { - return nil, nil, fmt.Errorf("pq: unable to parse array; unexpected %q at offset %d", src[i], i) - } - } - if depth > 0 { - err = fmt.Errorf("pq: unable to parse array; expected %q at offset %d", '}', i) - } - if err == nil { - for _, d := range dims { - if (len(elems) % d) != 0 { - err = fmt.Errorf("pq: multidimensional arrays must have elements with matching dimensions") - } - } - } - return -} - -func scanLinearArray(src, del []byte, typ string) (elems [][]byte, err error) { - dims, elems, err := parseArray(src, del) - if err != nil { - return nil, err - } - if len(dims) > 1 { - return nil, fmt.Errorf("pq: cannot convert ARRAY%s to %s", strings.Replace(fmt.Sprint(dims), " ", "][", -1), typ) - } - return elems, err -} diff --git a/vendor/github.com/lib/pq/buf.go b/vendor/github.com/lib/pq/buf.go deleted file mode 100644 index 4b0a0a8f..00000000 --- a/vendor/github.com/lib/pq/buf.go +++ /dev/null @@ -1,91 +0,0 @@ -package pq - -import ( - "bytes" - "encoding/binary" - - "github.com/lib/pq/oid" -) - -type readBuf []byte - -func (b *readBuf) int32() (n int) { - n = int(int32(binary.BigEndian.Uint32(*b))) - *b = (*b)[4:] - return -} - -func (b *readBuf) oid() (n oid.Oid) { - n = oid.Oid(binary.BigEndian.Uint32(*b)) - *b = (*b)[4:] - return -} - -// N.B: this is actually an unsigned 16-bit integer, unlike int32 -func (b *readBuf) int16() (n int) { - n = int(binary.BigEndian.Uint16(*b)) - *b = (*b)[2:] - return -} - -func (b *readBuf) string() string { - i := bytes.IndexByte(*b, 0) - if i < 0 { - errorf("invalid message format; expected string terminator") - } - s := (*b)[:i] - *b = (*b)[i+1:] - return string(s) -} - -func (b *readBuf) next(n int) (v []byte) { - v = (*b)[:n] - *b = (*b)[n:] - return -} - -func (b *readBuf) byte() byte { - return b.next(1)[0] -} - -type writeBuf struct { - buf []byte - pos int -} - -func (b *writeBuf) int32(n int) { - x := make([]byte, 4) - binary.BigEndian.PutUint32(x, uint32(n)) - b.buf = append(b.buf, x...) -} - -func (b *writeBuf) int16(n int) { - x := make([]byte, 2) - binary.BigEndian.PutUint16(x, uint16(n)) - b.buf = append(b.buf, x...) -} - -func (b *writeBuf) string(s string) { - b.buf = append(append(b.buf, s...), '\000') -} - -func (b *writeBuf) byte(c byte) { - b.buf = append(b.buf, c) -} - -func (b *writeBuf) bytes(v []byte) { - b.buf = append(b.buf, v...) -} - -func (b *writeBuf) wrap() []byte { - p := b.buf[b.pos:] - binary.BigEndian.PutUint32(p, uint32(len(p))) - return b.buf -} - -func (b *writeBuf) next(c byte) { - p := b.buf[b.pos:] - binary.BigEndian.PutUint32(p, uint32(len(p))) - b.pos = len(b.buf) + 1 - b.buf = append(b.buf, c, 0, 0, 0, 0) -} diff --git a/vendor/github.com/lib/pq/conn.go b/vendor/github.com/lib/pq/conn.go deleted file mode 100644 index 55152b12..00000000 --- a/vendor/github.com/lib/pq/conn.go +++ /dev/null @@ -1,1923 +0,0 @@ -package pq - -import ( - "bufio" - "context" - "crypto/md5" - "crypto/sha256" - "database/sql" - "database/sql/driver" - "encoding/binary" - "errors" - "fmt" - "io" - "net" - "os" - "os/user" - "path" - "path/filepath" - "strconv" - "strings" - "time" - "unicode" - - "github.com/lib/pq/oid" - "github.com/lib/pq/scram" -) - -// Common error types -var ( - ErrNotSupported = errors.New("pq: Unsupported command") - ErrInFailedTransaction = errors.New("pq: Could not complete operation in a failed transaction") - ErrSSLNotSupported = errors.New("pq: SSL is not enabled on the server") - ErrSSLKeyHasWorldPermissions = errors.New("pq: Private key file has group or world access. Permissions should be u=rw (0600) or less") - ErrCouldNotDetectUsername = errors.New("pq: Could not detect default username. Please provide one explicitly") - - errUnexpectedReady = errors.New("unexpected ReadyForQuery") - errNoRowsAffected = errors.New("no RowsAffected available after the empty statement") - errNoLastInsertID = errors.New("no LastInsertId available after the empty statement") -) - -// Driver is the Postgres database driver. -type Driver struct{} - -// Open opens a new connection to the database. name is a connection string. -// Most users should only use it through database/sql package from the standard -// library. -func (d *Driver) Open(name string) (driver.Conn, error) { - return Open(name) -} - -func init() { - sql.Register("postgres", &Driver{}) -} - -type parameterStatus struct { - // server version in the same format as server_version_num, or 0 if - // unavailable - serverVersion int - - // the current location based on the TimeZone value of the session, if - // available - currentLocation *time.Location -} - -type transactionStatus byte - -const ( - txnStatusIdle transactionStatus = 'I' - txnStatusIdleInTransaction transactionStatus = 'T' - txnStatusInFailedTransaction transactionStatus = 'E' -) - -func (s transactionStatus) String() string { - switch s { - case txnStatusIdle: - return "idle" - case txnStatusIdleInTransaction: - return "idle in transaction" - case txnStatusInFailedTransaction: - return "in a failed transaction" - default: - errorf("unknown transactionStatus %d", s) - } - - panic("not reached") -} - -// Dialer is the dialer interface. It can be used to obtain more control over -// how pq creates network connections. -type Dialer interface { - Dial(network, address string) (net.Conn, error) - DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) -} - -// DialerContext is the context-aware dialer interface. -type DialerContext interface { - DialContext(ctx context.Context, network, address string) (net.Conn, error) -} - -type defaultDialer struct { - d net.Dialer -} - -func (d defaultDialer) Dial(network, address string) (net.Conn, error) { - return d.d.Dial(network, address) -} -func (d defaultDialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) { - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - return d.DialContext(ctx, network, address) -} -func (d defaultDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) { - return d.d.DialContext(ctx, network, address) -} - -type conn struct { - c net.Conn - buf *bufio.Reader - namei int - scratch [512]byte - txnStatus transactionStatus - txnFinish func() - - // Save connection arguments to use during CancelRequest. - dialer Dialer - opts values - - // Cancellation key data for use with CancelRequest messages. - processID int - secretKey int - - parameterStatus parameterStatus - - saveMessageType byte - saveMessageBuffer []byte - - // If true, this connection is bad and all public-facing functions should - // return ErrBadConn. - bad bool - - // If set, this connection should never use the binary format when - // receiving query results from prepared statements. Only provided for - // debugging. - disablePreparedBinaryResult bool - - // Whether to always send []byte parameters over as binary. Enables single - // round-trip mode for non-prepared Query calls. - binaryParameters bool - - // If true this connection is in the middle of a COPY - inCopy bool -} - -// Handle driver-side settings in parsed connection string. -func (cn *conn) handleDriverSettings(o values) (err error) { - boolSetting := func(key string, val *bool) error { - if value, ok := o[key]; ok { - if value == "yes" { - *val = true - } else if value == "no" { - *val = false - } else { - return fmt.Errorf("unrecognized value %q for %s", value, key) - } - } - return nil - } - - err = boolSetting("disable_prepared_binary_result", &cn.disablePreparedBinaryResult) - if err != nil { - return err - } - return boolSetting("binary_parameters", &cn.binaryParameters) -} - -func (cn *conn) handlePgpass(o values) { - // if a password was supplied, do not process .pgpass - if _, ok := o["password"]; ok { - return - } - filename := os.Getenv("PGPASSFILE") - if filename == "" { - // XXX this code doesn't work on Windows where the default filename is - // XXX %APPDATA%\postgresql\pgpass.conf - // Prefer $HOME over user.Current due to glibc bug: golang.org/issue/13470 - userHome := os.Getenv("HOME") - if userHome == "" { - user, err := user.Current() - if err != nil { - return - } - userHome = user.HomeDir - } - filename = filepath.Join(userHome, ".pgpass") - } - fileinfo, err := os.Stat(filename) - if err != nil { - return - } - mode := fileinfo.Mode() - if mode&(0x77) != 0 { - // XXX should warn about incorrect .pgpass permissions as psql does - return - } - file, err := os.Open(filename) - if err != nil { - return - } - defer file.Close() - scanner := bufio.NewScanner(io.Reader(file)) - hostname := o["host"] - ntw, _ := network(o) - port := o["port"] - db := o["dbname"] - username := o["user"] - // From: https://github.com/tg/pgpass/blob/master/reader.go - getFields := func(s string) []string { - fs := make([]string, 0, 5) - f := make([]rune, 0, len(s)) - - var esc bool - for _, c := range s { - switch { - case esc: - f = append(f, c) - esc = false - case c == '\\': - esc = true - case c == ':': - fs = append(fs, string(f)) - f = f[:0] - default: - f = append(f, c) - } - } - return append(fs, string(f)) - } - for scanner.Scan() { - line := scanner.Text() - if len(line) == 0 || line[0] == '#' { - continue - } - split := getFields(line) - if len(split) != 5 { - continue - } - if (split[0] == "*" || split[0] == hostname || (split[0] == "localhost" && (hostname == "" || ntw == "unix"))) && (split[1] == "*" || split[1] == port) && (split[2] == "*" || split[2] == db) && (split[3] == "*" || split[3] == username) { - o["password"] = split[4] - return - } - } -} - -func (cn *conn) writeBuf(b byte) *writeBuf { - cn.scratch[0] = b - return &writeBuf{ - buf: cn.scratch[:5], - pos: 1, - } -} - -// Open opens a new connection to the database. dsn is a connection string. -// Most users should only use it through database/sql package from the standard -// library. -func Open(dsn string) (_ driver.Conn, err error) { - return DialOpen(defaultDialer{}, dsn) -} - -// DialOpen opens a new connection to the database using a dialer. -func DialOpen(d Dialer, dsn string) (_ driver.Conn, err error) { - c, err := NewConnector(dsn) - if err != nil { - return nil, err - } - c.dialer = d - return c.open(context.Background()) -} - -func (c *Connector) open(ctx context.Context) (cn *conn, err error) { - // Handle any panics during connection initialization. Note that we - // specifically do *not* want to use errRecover(), as that would turn any - // connection errors into ErrBadConns, hiding the real error message from - // the user. - defer errRecoverNoErrBadConn(&err) - - o := c.opts - - cn = &conn{ - opts: o, - dialer: c.dialer, - } - err = cn.handleDriverSettings(o) - if err != nil { - return nil, err - } - cn.handlePgpass(o) - - cn.c, err = dial(ctx, c.dialer, o) - if err != nil { - return nil, err - } - - err = cn.ssl(o) - if err != nil { - if cn.c != nil { - cn.c.Close() - } - return nil, err - } - - // cn.startup panics on error. Make sure we don't leak cn.c. - panicking := true - defer func() { - if panicking { - cn.c.Close() - } - }() - - cn.buf = bufio.NewReader(cn.c) - cn.startup(o) - - // reset the deadline, in case one was set (see dial) - if timeout, ok := o["connect_timeout"]; ok && timeout != "0" { - err = cn.c.SetDeadline(time.Time{}) - } - panicking = false - return cn, err -} - -func dial(ctx context.Context, d Dialer, o values) (net.Conn, error) { - network, address := network(o) - // SSL is not necessary or supported over UNIX domain sockets - if network == "unix" { - o["sslmode"] = "disable" - } - - // Zero or not specified means wait indefinitely. - if timeout, ok := o["connect_timeout"]; ok && timeout != "0" { - seconds, err := strconv.ParseInt(timeout, 10, 0) - if err != nil { - return nil, fmt.Errorf("invalid value for parameter connect_timeout: %s", err) - } - duration := time.Duration(seconds) * time.Second - - // connect_timeout should apply to the entire connection establishment - // procedure, so we both use a timeout for the TCP connection - // establishment and set a deadline for doing the initial handshake. - // The deadline is then reset after startup() is done. - deadline := time.Now().Add(duration) - var conn net.Conn - if dctx, ok := d.(DialerContext); ok { - ctx, cancel := context.WithTimeout(ctx, duration) - defer cancel() - conn, err = dctx.DialContext(ctx, network, address) - } else { - conn, err = d.DialTimeout(network, address, duration) - } - if err != nil { - return nil, err - } - err = conn.SetDeadline(deadline) - return conn, err - } - if dctx, ok := d.(DialerContext); ok { - return dctx.DialContext(ctx, network, address) - } - return d.Dial(network, address) -} - -func network(o values) (string, string) { - host := o["host"] - - if strings.HasPrefix(host, "/") { - sockPath := path.Join(host, ".s.PGSQL."+o["port"]) - return "unix", sockPath - } - - return "tcp", net.JoinHostPort(host, o["port"]) -} - -type values map[string]string - -// scanner implements a tokenizer for libpq-style option strings. -type scanner struct { - s []rune - i int -} - -// newScanner returns a new scanner initialized with the option string s. -func newScanner(s string) *scanner { - return &scanner{[]rune(s), 0} -} - -// Next returns the next rune. -// It returns 0, false if the end of the text has been reached. -func (s *scanner) Next() (rune, bool) { - if s.i >= len(s.s) { - return 0, false - } - r := s.s[s.i] - s.i++ - return r, true -} - -// SkipSpaces returns the next non-whitespace rune. -// It returns 0, false if the end of the text has been reached. -func (s *scanner) SkipSpaces() (rune, bool) { - r, ok := s.Next() - for unicode.IsSpace(r) && ok { - r, ok = s.Next() - } - return r, ok -} - -// parseOpts parses the options from name and adds them to the values. -// -// The parsing code is based on conninfo_parse from libpq's fe-connect.c -func parseOpts(name string, o values) error { - s := newScanner(name) - - for { - var ( - keyRunes, valRunes []rune - r rune - ok bool - ) - - if r, ok = s.SkipSpaces(); !ok { - break - } - - // Scan the key - for !unicode.IsSpace(r) && r != '=' { - keyRunes = append(keyRunes, r) - if r, ok = s.Next(); !ok { - break - } - } - - // Skip any whitespace if we're not at the = yet - if r != '=' { - r, ok = s.SkipSpaces() - } - - // The current character should be = - if r != '=' || !ok { - return fmt.Errorf(`missing "=" after %q in connection info string"`, string(keyRunes)) - } - - // Skip any whitespace after the = - if r, ok = s.SkipSpaces(); !ok { - // If we reach the end here, the last value is just an empty string as per libpq. - o[string(keyRunes)] = "" - break - } - - if r != '\'' { - for !unicode.IsSpace(r) { - if r == '\\' { - if r, ok = s.Next(); !ok { - return fmt.Errorf(`missing character after backslash`) - } - } - valRunes = append(valRunes, r) - - if r, ok = s.Next(); !ok { - break - } - } - } else { - quote: - for { - if r, ok = s.Next(); !ok { - return fmt.Errorf(`unterminated quoted string literal in connection string`) - } - switch r { - case '\'': - break quote - case '\\': - r, _ = s.Next() - fallthrough - default: - valRunes = append(valRunes, r) - } - } - } - - o[string(keyRunes)] = string(valRunes) - } - - return nil -} - -func (cn *conn) isInTransaction() bool { - return cn.txnStatus == txnStatusIdleInTransaction || - cn.txnStatus == txnStatusInFailedTransaction -} - -func (cn *conn) checkIsInTransaction(intxn bool) { - if cn.isInTransaction() != intxn { - cn.bad = true - errorf("unexpected transaction status %v", cn.txnStatus) - } -} - -func (cn *conn) Begin() (_ driver.Tx, err error) { - return cn.begin("") -} - -func (cn *conn) begin(mode string) (_ driver.Tx, err error) { - if cn.bad { - return nil, driver.ErrBadConn - } - defer cn.errRecover(&err) - - cn.checkIsInTransaction(false) - _, commandTag, err := cn.simpleExec("BEGIN" + mode) - if err != nil { - return nil, err - } - if commandTag != "BEGIN" { - cn.bad = true - return nil, fmt.Errorf("unexpected command tag %s", commandTag) - } - if cn.txnStatus != txnStatusIdleInTransaction { - cn.bad = true - return nil, fmt.Errorf("unexpected transaction status %v", cn.txnStatus) - } - return cn, nil -} - -func (cn *conn) closeTxn() { - if finish := cn.txnFinish; finish != nil { - finish() - } -} - -func (cn *conn) Commit() (err error) { - defer cn.closeTxn() - if cn.bad { - return driver.ErrBadConn - } - defer cn.errRecover(&err) - - cn.checkIsInTransaction(true) - // We don't want the client to think that everything is okay if it tries - // to commit a failed transaction. However, no matter what we return, - // database/sql will release this connection back into the free connection - // pool so we have to abort the current transaction here. Note that you - // would get the same behaviour if you issued a COMMIT in a failed - // transaction, so it's also the least surprising thing to do here. - if cn.txnStatus == txnStatusInFailedTransaction { - if err := cn.rollback(); err != nil { - return err - } - return ErrInFailedTransaction - } - - _, commandTag, err := cn.simpleExec("COMMIT") - if err != nil { - if cn.isInTransaction() { - cn.bad = true - } - return err - } - if commandTag != "COMMIT" { - cn.bad = true - return fmt.Errorf("unexpected command tag %s", commandTag) - } - cn.checkIsInTransaction(false) - return nil -} - -func (cn *conn) Rollback() (err error) { - defer cn.closeTxn() - if cn.bad { - return driver.ErrBadConn - } - defer cn.errRecover(&err) - return cn.rollback() -} - -func (cn *conn) rollback() (err error) { - cn.checkIsInTransaction(true) - _, commandTag, err := cn.simpleExec("ROLLBACK") - if err != nil { - if cn.isInTransaction() { - cn.bad = true - } - return err - } - if commandTag != "ROLLBACK" { - return fmt.Errorf("unexpected command tag %s", commandTag) - } - cn.checkIsInTransaction(false) - return nil -} - -func (cn *conn) gname() string { - cn.namei++ - return strconv.FormatInt(int64(cn.namei), 10) -} - -func (cn *conn) simpleExec(q string) (res driver.Result, commandTag string, err error) { - b := cn.writeBuf('Q') - b.string(q) - cn.send(b) - - for { - t, r := cn.recv1() - switch t { - case 'C': - res, commandTag = cn.parseComplete(r.string()) - case 'Z': - cn.processReadyForQuery(r) - if res == nil && err == nil { - err = errUnexpectedReady - } - // done - return - case 'E': - err = parseError(r) - case 'I': - res = emptyRows - case 'T', 'D': - // ignore any results - default: - cn.bad = true - errorf("unknown response for simple query: %q", t) - } - } -} - -func (cn *conn) simpleQuery(q string) (res *rows, err error) { - defer cn.errRecover(&err) - - b := cn.writeBuf('Q') - b.string(q) - cn.send(b) - - for { - t, r := cn.recv1() - switch t { - case 'C', 'I': - // We allow queries which don't return any results through Query as - // well as Exec. We still have to give database/sql a rows object - // the user can close, though, to avoid connections from being - // leaked. A "rows" with done=true works fine for that purpose. - if err != nil { - cn.bad = true - errorf("unexpected message %q in simple query execution", t) - } - if res == nil { - res = &rows{ - cn: cn, - } - } - // Set the result and tag to the last command complete if there wasn't a - // query already run. Although queries usually return from here and cede - // control to Next, a query with zero results does not. - if t == 'C' && res.colNames == nil { - res.result, res.tag = cn.parseComplete(r.string()) - } - res.done = true - case 'Z': - cn.processReadyForQuery(r) - // done - return - case 'E': - res = nil - err = parseError(r) - case 'D': - if res == nil { - cn.bad = true - errorf("unexpected DataRow in simple query execution") - } - // the query didn't fail; kick off to Next - cn.saveMessage(t, r) - return - case 'T': - // res might be non-nil here if we received a previous - // CommandComplete, but that's fine; just overwrite it - res = &rows{cn: cn} - res.rowsHeader = parsePortalRowDescribe(r) - - // To work around a bug in QueryRow in Go 1.2 and earlier, wait - // until the first DataRow has been received. - default: - cn.bad = true - errorf("unknown response for simple query: %q", t) - } - } -} - -type noRows struct{} - -var emptyRows noRows - -var _ driver.Result = noRows{} - -func (noRows) LastInsertId() (int64, error) { - return 0, errNoLastInsertID -} - -func (noRows) RowsAffected() (int64, error) { - return 0, errNoRowsAffected -} - -// Decides which column formats to use for a prepared statement. The input is -// an array of type oids, one element per result column. -func decideColumnFormats(colTyps []fieldDesc, forceText bool) (colFmts []format, colFmtData []byte) { - if len(colTyps) == 0 { - return nil, colFmtDataAllText - } - - colFmts = make([]format, len(colTyps)) - if forceText { - return colFmts, colFmtDataAllText - } - - allBinary := true - allText := true - for i, t := range colTyps { - switch t.OID { - // This is the list of types to use binary mode for when receiving them - // through a prepared statement. If a type appears in this list, it - // must also be implemented in binaryDecode in encode.go. - case oid.T_bytea: - fallthrough - case oid.T_int8: - fallthrough - case oid.T_int4: - fallthrough - case oid.T_int2: - fallthrough - case oid.T_uuid: - colFmts[i] = formatBinary - allText = false - - default: - allBinary = false - } - } - - if allBinary { - return colFmts, colFmtDataAllBinary - } else if allText { - return colFmts, colFmtDataAllText - } else { - colFmtData = make([]byte, 2+len(colFmts)*2) - binary.BigEndian.PutUint16(colFmtData, uint16(len(colFmts))) - for i, v := range colFmts { - binary.BigEndian.PutUint16(colFmtData[2+i*2:], uint16(v)) - } - return colFmts, colFmtData - } -} - -func (cn *conn) prepareTo(q, stmtName string) *stmt { - st := &stmt{cn: cn, name: stmtName} - - b := cn.writeBuf('P') - b.string(st.name) - b.string(q) - b.int16(0) - - b.next('D') - b.byte('S') - b.string(st.name) - - b.next('S') - cn.send(b) - - cn.readParseResponse() - st.paramTyps, st.colNames, st.colTyps = cn.readStatementDescribeResponse() - st.colFmts, st.colFmtData = decideColumnFormats(st.colTyps, cn.disablePreparedBinaryResult) - cn.readReadyForQuery() - return st -} - -func (cn *conn) Prepare(q string) (_ driver.Stmt, err error) { - if cn.bad { - return nil, driver.ErrBadConn - } - defer cn.errRecover(&err) - - if len(q) >= 4 && strings.EqualFold(q[:4], "COPY") { - s, err := cn.prepareCopyIn(q) - if err == nil { - cn.inCopy = true - } - return s, err - } - return cn.prepareTo(q, cn.gname()), nil -} - -func (cn *conn) Close() (err error) { - // Skip cn.bad return here because we always want to close a connection. - defer cn.errRecover(&err) - - // Ensure that cn.c.Close is always run. Since error handling is done with - // panics and cn.errRecover, the Close must be in a defer. - defer func() { - cerr := cn.c.Close() - if err == nil { - err = cerr - } - }() - - // Don't go through send(); ListenerConn relies on us not scribbling on the - // scratch buffer of this connection. - return cn.sendSimpleMessage('X') -} - -// Implement the "Queryer" interface -func (cn *conn) Query(query string, args []driver.Value) (driver.Rows, error) { - return cn.query(query, args) -} - -func (cn *conn) query(query string, args []driver.Value) (_ *rows, err error) { - if cn.bad { - return nil, driver.ErrBadConn - } - if cn.inCopy { - return nil, errCopyInProgress - } - defer cn.errRecover(&err) - - // Check to see if we can use the "simpleQuery" interface, which is - // *much* faster than going through prepare/exec - if len(args) == 0 { - return cn.simpleQuery(query) - } - - if cn.binaryParameters { - cn.sendBinaryModeQuery(query, args) - - cn.readParseResponse() - cn.readBindResponse() - rows := &rows{cn: cn} - rows.rowsHeader = cn.readPortalDescribeResponse() - cn.postExecuteWorkaround() - return rows, nil - } - st := cn.prepareTo(query, "") - st.exec(args) - return &rows{ - cn: cn, - rowsHeader: st.rowsHeader, - }, nil -} - -// Implement the optional "Execer" interface for one-shot queries -func (cn *conn) Exec(query string, args []driver.Value) (res driver.Result, err error) { - if cn.bad { - return nil, driver.ErrBadConn - } - defer cn.errRecover(&err) - - // Check to see if we can use the "simpleExec" interface, which is - // *much* faster than going through prepare/exec - if len(args) == 0 { - // ignore commandTag, our caller doesn't care - r, _, err := cn.simpleExec(query) - return r, err - } - - if cn.binaryParameters { - cn.sendBinaryModeQuery(query, args) - - cn.readParseResponse() - cn.readBindResponse() - cn.readPortalDescribeResponse() - cn.postExecuteWorkaround() - res, _, err = cn.readExecuteResponse("Execute") - return res, err - } - // Use the unnamed statement to defer planning until bind - // time, or else value-based selectivity estimates cannot be - // used. - st := cn.prepareTo(query, "") - r, err := st.Exec(args) - if err != nil { - panic(err) - } - return r, err -} - -func (cn *conn) send(m *writeBuf) { - _, err := cn.c.Write(m.wrap()) - if err != nil { - panic(err) - } -} - -func (cn *conn) sendStartupPacket(m *writeBuf) error { - _, err := cn.c.Write((m.wrap())[1:]) - return err -} - -// Send a message of type typ to the server on the other end of cn. The -// message should have no payload. This method does not use the scratch -// buffer. -func (cn *conn) sendSimpleMessage(typ byte) (err error) { - _, err = cn.c.Write([]byte{typ, '\x00', '\x00', '\x00', '\x04'}) - return err -} - -// saveMessage memorizes a message and its buffer in the conn struct. -// recvMessage will then return these values on the next call to it. This -// method is useful in cases where you have to see what the next message is -// going to be (e.g. to see whether it's an error or not) but you can't handle -// the message yourself. -func (cn *conn) saveMessage(typ byte, buf *readBuf) { - if cn.saveMessageType != 0 { - cn.bad = true - errorf("unexpected saveMessageType %d", cn.saveMessageType) - } - cn.saveMessageType = typ - cn.saveMessageBuffer = *buf -} - -// recvMessage receives any message from the backend, or returns an error if -// a problem occurred while reading the message. -func (cn *conn) recvMessage(r *readBuf) (byte, error) { - // workaround for a QueryRow bug, see exec - if cn.saveMessageType != 0 { - t := cn.saveMessageType - *r = cn.saveMessageBuffer - cn.saveMessageType = 0 - cn.saveMessageBuffer = nil - return t, nil - } - - x := cn.scratch[:5] - _, err := io.ReadFull(cn.buf, x) - if err != nil { - return 0, err - } - - // read the type and length of the message that follows - t := x[0] - n := int(binary.BigEndian.Uint32(x[1:])) - 4 - var y []byte - if n <= len(cn.scratch) { - y = cn.scratch[:n] - } else { - y = make([]byte, n) - } - _, err = io.ReadFull(cn.buf, y) - if err != nil { - return 0, err - } - *r = y - return t, nil -} - -// recv receives a message from the backend, but if an error happened while -// reading the message or the received message was an ErrorResponse, it panics. -// NoticeResponses are ignored. This function should generally be used only -// during the startup sequence. -func (cn *conn) recv() (t byte, r *readBuf) { - for { - var err error - r = &readBuf{} - t, err = cn.recvMessage(r) - if err != nil { - panic(err) - } - switch t { - case 'E': - panic(parseError(r)) - case 'N': - // ignore - default: - return - } - } -} - -// recv1Buf is exactly equivalent to recv1, except it uses a buffer supplied by -// the caller to avoid an allocation. -func (cn *conn) recv1Buf(r *readBuf) byte { - for { - t, err := cn.recvMessage(r) - if err != nil { - panic(err) - } - - switch t { - case 'A', 'N': - // ignore - case 'S': - cn.processParameterStatus(r) - default: - return t - } - } -} - -// recv1 receives a message from the backend, panicking if an error occurs -// while attempting to read it. All asynchronous messages are ignored, with -// the exception of ErrorResponse. -func (cn *conn) recv1() (t byte, r *readBuf) { - r = &readBuf{} - t = cn.recv1Buf(r) - return t, r -} - -func (cn *conn) ssl(o values) error { - upgrade, err := ssl(o) - if err != nil { - return err - } - - if upgrade == nil { - // Nothing to do - return nil - } - - w := cn.writeBuf(0) - w.int32(80877103) - if err = cn.sendStartupPacket(w); err != nil { - return err - } - - b := cn.scratch[:1] - _, err = io.ReadFull(cn.c, b) - if err != nil { - return err - } - - if b[0] != 'S' { - return ErrSSLNotSupported - } - - cn.c, err = upgrade(cn.c) - return err -} - -// isDriverSetting returns true iff a setting is purely for configuring the -// driver's options and should not be sent to the server in the connection -// startup packet. -func isDriverSetting(key string) bool { - switch key { - case "host", "port": - return true - case "password": - return true - case "sslmode", "sslcert", "sslkey", "sslrootcert": - return true - case "fallback_application_name": - return true - case "connect_timeout": - return true - case "disable_prepared_binary_result": - return true - case "binary_parameters": - return true - - default: - return false - } -} - -func (cn *conn) startup(o values) { - w := cn.writeBuf(0) - w.int32(196608) - // Send the backend the name of the database we want to connect to, and the - // user we want to connect as. Additionally, we send over any run-time - // parameters potentially included in the connection string. If the server - // doesn't recognize any of them, it will reply with an error. - for k, v := range o { - if isDriverSetting(k) { - // skip options which can't be run-time parameters - continue - } - // The protocol requires us to supply the database name as "database" - // instead of "dbname". - if k == "dbname" { - k = "database" - } - w.string(k) - w.string(v) - } - w.string("") - if err := cn.sendStartupPacket(w); err != nil { - panic(err) - } - - for { - t, r := cn.recv() - switch t { - case 'K': - cn.processBackendKeyData(r) - case 'S': - cn.processParameterStatus(r) - case 'R': - cn.auth(r, o) - case 'Z': - cn.processReadyForQuery(r) - return - default: - errorf("unknown response for startup: %q", t) - } - } -} - -func (cn *conn) auth(r *readBuf, o values) { - switch code := r.int32(); code { - case 0: - // OK - case 3: - w := cn.writeBuf('p') - w.string(o["password"]) - cn.send(w) - - t, r := cn.recv() - if t != 'R' { - errorf("unexpected password response: %q", t) - } - - if r.int32() != 0 { - errorf("unexpected authentication response: %q", t) - } - case 5: - s := string(r.next(4)) - w := cn.writeBuf('p') - w.string("md5" + md5s(md5s(o["password"]+o["user"])+s)) - cn.send(w) - - t, r := cn.recv() - if t != 'R' { - errorf("unexpected password response: %q", t) - } - - if r.int32() != 0 { - errorf("unexpected authentication response: %q", t) - } - case 10: - sc := scram.NewClient(sha256.New, o["user"], o["password"]) - sc.Step(nil) - if sc.Err() != nil { - errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) - } - scOut := sc.Out() - - w := cn.writeBuf('p') - w.string("SCRAM-SHA-256") - w.int32(len(scOut)) - w.bytes(scOut) - cn.send(w) - - t, r := cn.recv() - if t != 'R' { - errorf("unexpected password response: %q", t) - } - - if r.int32() != 11 { - errorf("unexpected authentication response: %q", t) - } - - nextStep := r.next(len(*r)) - sc.Step(nextStep) - if sc.Err() != nil { - errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) - } - - scOut = sc.Out() - w = cn.writeBuf('p') - w.bytes(scOut) - cn.send(w) - - t, r = cn.recv() - if t != 'R' { - errorf("unexpected password response: %q", t) - } - - if r.int32() != 12 { - errorf("unexpected authentication response: %q", t) - } - - nextStep = r.next(len(*r)) - sc.Step(nextStep) - if sc.Err() != nil { - errorf("SCRAM-SHA-256 error: %s", sc.Err().Error()) - } - - default: - errorf("unknown authentication response: %d", code) - } -} - -type format int - -const formatText format = 0 -const formatBinary format = 1 - -// One result-column format code with the value 1 (i.e. all binary). -var colFmtDataAllBinary = []byte{0, 1, 0, 1} - -// No result-column format codes (i.e. all text). -var colFmtDataAllText = []byte{0, 0} - -type stmt struct { - cn *conn - name string - rowsHeader - colFmtData []byte - paramTyps []oid.Oid - closed bool -} - -func (st *stmt) Close() (err error) { - if st.closed { - return nil - } - if st.cn.bad { - return driver.ErrBadConn - } - defer st.cn.errRecover(&err) - - w := st.cn.writeBuf('C') - w.byte('S') - w.string(st.name) - st.cn.send(w) - - st.cn.send(st.cn.writeBuf('S')) - - t, _ := st.cn.recv1() - if t != '3' { - st.cn.bad = true - errorf("unexpected close response: %q", t) - } - st.closed = true - - t, r := st.cn.recv1() - if t != 'Z' { - st.cn.bad = true - errorf("expected ready for query, but got: %q", t) - } - st.cn.processReadyForQuery(r) - - return nil -} - -func (st *stmt) Query(v []driver.Value) (r driver.Rows, err error) { - if st.cn.bad { - return nil, driver.ErrBadConn - } - defer st.cn.errRecover(&err) - - st.exec(v) - return &rows{ - cn: st.cn, - rowsHeader: st.rowsHeader, - }, nil -} - -func (st *stmt) Exec(v []driver.Value) (res driver.Result, err error) { - if st.cn.bad { - return nil, driver.ErrBadConn - } - defer st.cn.errRecover(&err) - - st.exec(v) - res, _, err = st.cn.readExecuteResponse("simple query") - return res, err -} - -func (st *stmt) exec(v []driver.Value) { - if len(v) >= 65536 { - errorf("got %d parameters but PostgreSQL only supports 65535 parameters", len(v)) - } - if len(v) != len(st.paramTyps) { - errorf("got %d parameters but the statement requires %d", len(v), len(st.paramTyps)) - } - - cn := st.cn - w := cn.writeBuf('B') - w.byte(0) // unnamed portal - w.string(st.name) - - if cn.binaryParameters { - cn.sendBinaryParameters(w, v) - } else { - w.int16(0) - w.int16(len(v)) - for i, x := range v { - if x == nil { - w.int32(-1) - } else { - b := encode(&cn.parameterStatus, x, st.paramTyps[i]) - w.int32(len(b)) - w.bytes(b) - } - } - } - w.bytes(st.colFmtData) - - w.next('E') - w.byte(0) - w.int32(0) - - w.next('S') - cn.send(w) - - cn.readBindResponse() - cn.postExecuteWorkaround() - -} - -func (st *stmt) NumInput() int { - return len(st.paramTyps) -} - -// parseComplete parses the "command tag" from a CommandComplete message, and -// returns the number of rows affected (if applicable) and a string -// identifying only the command that was executed, e.g. "ALTER TABLE". If the -// command tag could not be parsed, parseComplete panics. -func (cn *conn) parseComplete(commandTag string) (driver.Result, string) { - commandsWithAffectedRows := []string{ - "SELECT ", - // INSERT is handled below - "UPDATE ", - "DELETE ", - "FETCH ", - "MOVE ", - "COPY ", - } - - var affectedRows *string - for _, tag := range commandsWithAffectedRows { - if strings.HasPrefix(commandTag, tag) { - t := commandTag[len(tag):] - affectedRows = &t - commandTag = tag[:len(tag)-1] - break - } - } - // INSERT also includes the oid of the inserted row in its command tag. - // Oids in user tables are deprecated, and the oid is only returned when - // exactly one row is inserted, so it's unlikely to be of value to any - // real-world application and we can ignore it. - if affectedRows == nil && strings.HasPrefix(commandTag, "INSERT ") { - parts := strings.Split(commandTag, " ") - if len(parts) != 3 { - cn.bad = true - errorf("unexpected INSERT command tag %s", commandTag) - } - affectedRows = &parts[len(parts)-1] - commandTag = "INSERT" - } - // There should be no affected rows attached to the tag, just return it - if affectedRows == nil { - return driver.RowsAffected(0), commandTag - } - n, err := strconv.ParseInt(*affectedRows, 10, 64) - if err != nil { - cn.bad = true - errorf("could not parse commandTag: %s", err) - } - return driver.RowsAffected(n), commandTag -} - -type rowsHeader struct { - colNames []string - colTyps []fieldDesc - colFmts []format -} - -type rows struct { - cn *conn - finish func() - rowsHeader - done bool - rb readBuf - result driver.Result - tag string - - next *rowsHeader -} - -func (rs *rows) Close() error { - if finish := rs.finish; finish != nil { - defer finish() - } - // no need to look at cn.bad as Next() will - for { - err := rs.Next(nil) - switch err { - case nil: - case io.EOF: - // rs.Next can return io.EOF on both 'Z' (ready for query) and 'T' (row - // description, used with HasNextResultSet). We need to fetch messages until - // we hit a 'Z', which is done by waiting for done to be set. - if rs.done { - return nil - } - default: - return err - } - } -} - -func (rs *rows) Columns() []string { - return rs.colNames -} - -func (rs *rows) Result() driver.Result { - if rs.result == nil { - return emptyRows - } - return rs.result -} - -func (rs *rows) Tag() string { - return rs.tag -} - -func (rs *rows) Next(dest []driver.Value) (err error) { - if rs.done { - return io.EOF - } - - conn := rs.cn - if conn.bad { - return driver.ErrBadConn - } - defer conn.errRecover(&err) - - for { - t := conn.recv1Buf(&rs.rb) - switch t { - case 'E': - err = parseError(&rs.rb) - case 'C', 'I': - if t == 'C' { - rs.result, rs.tag = conn.parseComplete(rs.rb.string()) - } - continue - case 'Z': - conn.processReadyForQuery(&rs.rb) - rs.done = true - if err != nil { - return err - } - return io.EOF - case 'D': - n := rs.rb.int16() - if err != nil { - conn.bad = true - errorf("unexpected DataRow after error %s", err) - } - if n < len(dest) { - dest = dest[:n] - } - for i := range dest { - l := rs.rb.int32() - if l == -1 { - dest[i] = nil - continue - } - dest[i] = decode(&conn.parameterStatus, rs.rb.next(l), rs.colTyps[i].OID, rs.colFmts[i]) - } - return - case 'T': - next := parsePortalRowDescribe(&rs.rb) - rs.next = &next - return io.EOF - default: - errorf("unexpected message after execute: %q", t) - } - } -} - -func (rs *rows) HasNextResultSet() bool { - hasNext := rs.next != nil && !rs.done - return hasNext -} - -func (rs *rows) NextResultSet() error { - if rs.next == nil { - return io.EOF - } - rs.rowsHeader = *rs.next - rs.next = nil - return nil -} - -// QuoteIdentifier quotes an "identifier" (e.g. a table or a column name) to be -// used as part of an SQL statement. For example: -// -// tblname := "my_table" -// data := "my_data" -// quoted := pq.QuoteIdentifier(tblname) -// err := db.Exec(fmt.Sprintf("INSERT INTO %s VALUES ($1)", quoted), data) -// -// Any double quotes in name will be escaped. The quoted identifier will be -// case sensitive when used in a query. If the input string contains a zero -// byte, the result will be truncated immediately before it. -func QuoteIdentifier(name string) string { - end := strings.IndexRune(name, 0) - if end > -1 { - name = name[:end] - } - return `"` + strings.Replace(name, `"`, `""`, -1) + `"` -} - -// QuoteLiteral quotes a 'literal' (e.g. a parameter, often used to pass literal -// to DDL and other statements that do not accept parameters) to be used as part -// of an SQL statement. For example: -// -// exp_date := pq.QuoteLiteral("2023-01-05 15:00:00Z") -// err := db.Exec(fmt.Sprintf("CREATE ROLE my_user VALID UNTIL %s", exp_date)) -// -// Any single quotes in name will be escaped. Any backslashes (i.e. "\") will be -// replaced by two backslashes (i.e. "\\") and the C-style escape identifier -// that PostgreSQL provides ('E') will be prepended to the string. -func QuoteLiteral(literal string) string { - // This follows the PostgreSQL internal algorithm for handling quoted literals - // from libpq, which can be found in the "PQEscapeStringInternal" function, - // which is found in the libpq/fe-exec.c source file: - // https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/interfaces/libpq/fe-exec.c - // - // substitute any single-quotes (') with two single-quotes ('') - literal = strings.Replace(literal, `'`, `''`, -1) - // determine if the string has any backslashes (\) in it. - // if it does, replace any backslashes (\) with two backslashes (\\) - // then, we need to wrap the entire string with a PostgreSQL - // C-style escape. Per how "PQEscapeStringInternal" handles this case, we - // also add a space before the "E" - if strings.Contains(literal, `\`) { - literal = strings.Replace(literal, `\`, `\\`, -1) - literal = ` E'` + literal + `'` - } else { - // otherwise, we can just wrap the literal with a pair of single quotes - literal = `'` + literal + `'` - } - return literal -} - -func md5s(s string) string { - h := md5.New() - h.Write([]byte(s)) - return fmt.Sprintf("%x", h.Sum(nil)) -} - -func (cn *conn) sendBinaryParameters(b *writeBuf, args []driver.Value) { - // Do one pass over the parameters to see if we're going to send any of - // them over in binary. If we are, create a paramFormats array at the - // same time. - var paramFormats []int - for i, x := range args { - _, ok := x.([]byte) - if ok { - if paramFormats == nil { - paramFormats = make([]int, len(args)) - } - paramFormats[i] = 1 - } - } - if paramFormats == nil { - b.int16(0) - } else { - b.int16(len(paramFormats)) - for _, x := range paramFormats { - b.int16(x) - } - } - - b.int16(len(args)) - for _, x := range args { - if x == nil { - b.int32(-1) - } else { - datum := binaryEncode(&cn.parameterStatus, x) - b.int32(len(datum)) - b.bytes(datum) - } - } -} - -func (cn *conn) sendBinaryModeQuery(query string, args []driver.Value) { - if len(args) >= 65536 { - errorf("got %d parameters but PostgreSQL only supports 65535 parameters", len(args)) - } - - b := cn.writeBuf('P') - b.byte(0) // unnamed statement - b.string(query) - b.int16(0) - - b.next('B') - b.int16(0) // unnamed portal and statement - cn.sendBinaryParameters(b, args) - b.bytes(colFmtDataAllText) - - b.next('D') - b.byte('P') - b.byte(0) // unnamed portal - - b.next('E') - b.byte(0) - b.int32(0) - - b.next('S') - cn.send(b) -} - -func (cn *conn) processParameterStatus(r *readBuf) { - var err error - - param := r.string() - switch param { - case "server_version": - var major1 int - var major2 int - var minor int - _, err = fmt.Sscanf(r.string(), "%d.%d.%d", &major1, &major2, &minor) - if err == nil { - cn.parameterStatus.serverVersion = major1*10000 + major2*100 + minor - } - - case "TimeZone": - cn.parameterStatus.currentLocation, err = time.LoadLocation(r.string()) - if err != nil { - cn.parameterStatus.currentLocation = nil - } - - default: - // ignore - } -} - -func (cn *conn) processReadyForQuery(r *readBuf) { - cn.txnStatus = transactionStatus(r.byte()) -} - -func (cn *conn) readReadyForQuery() { - t, r := cn.recv1() - switch t { - case 'Z': - cn.processReadyForQuery(r) - return - default: - cn.bad = true - errorf("unexpected message %q; expected ReadyForQuery", t) - } -} - -func (cn *conn) processBackendKeyData(r *readBuf) { - cn.processID = r.int32() - cn.secretKey = r.int32() -} - -func (cn *conn) readParseResponse() { - t, r := cn.recv1() - switch t { - case '1': - return - case 'E': - err := parseError(r) - cn.readReadyForQuery() - panic(err) - default: - cn.bad = true - errorf("unexpected Parse response %q", t) - } -} - -func (cn *conn) readStatementDescribeResponse() (paramTyps []oid.Oid, colNames []string, colTyps []fieldDesc) { - for { - t, r := cn.recv1() - switch t { - case 't': - nparams := r.int16() - paramTyps = make([]oid.Oid, nparams) - for i := range paramTyps { - paramTyps[i] = r.oid() - } - case 'n': - return paramTyps, nil, nil - case 'T': - colNames, colTyps = parseStatementRowDescribe(r) - return paramTyps, colNames, colTyps - case 'E': - err := parseError(r) - cn.readReadyForQuery() - panic(err) - default: - cn.bad = true - errorf("unexpected Describe statement response %q", t) - } - } -} - -func (cn *conn) readPortalDescribeResponse() rowsHeader { - t, r := cn.recv1() - switch t { - case 'T': - return parsePortalRowDescribe(r) - case 'n': - return rowsHeader{} - case 'E': - err := parseError(r) - cn.readReadyForQuery() - panic(err) - default: - cn.bad = true - errorf("unexpected Describe response %q", t) - } - panic("not reached") -} - -func (cn *conn) readBindResponse() { - t, r := cn.recv1() - switch t { - case '2': - return - case 'E': - err := parseError(r) - cn.readReadyForQuery() - panic(err) - default: - cn.bad = true - errorf("unexpected Bind response %q", t) - } -} - -func (cn *conn) postExecuteWorkaround() { - // Work around a bug in sql.DB.QueryRow: in Go 1.2 and earlier it ignores - // any errors from rows.Next, which masks errors that happened during the - // execution of the query. To avoid the problem in common cases, we wait - // here for one more message from the database. If it's not an error the - // query will likely succeed (or perhaps has already, if it's a - // CommandComplete), so we push the message into the conn struct; recv1 - // will return it as the next message for rows.Next or rows.Close. - // However, if it's an error, we wait until ReadyForQuery and then return - // the error to our caller. - for { - t, r := cn.recv1() - switch t { - case 'E': - err := parseError(r) - cn.readReadyForQuery() - panic(err) - case 'C', 'D', 'I': - // the query didn't fail, but we can't process this message - cn.saveMessage(t, r) - return - default: - cn.bad = true - errorf("unexpected message during extended query execution: %q", t) - } - } -} - -// Only for Exec(), since we ignore the returned data -func (cn *conn) readExecuteResponse(protocolState string) (res driver.Result, commandTag string, err error) { - for { - t, r := cn.recv1() - switch t { - case 'C': - if err != nil { - cn.bad = true - errorf("unexpected CommandComplete after error %s", err) - } - res, commandTag = cn.parseComplete(r.string()) - case 'Z': - cn.processReadyForQuery(r) - if res == nil && err == nil { - err = errUnexpectedReady - } - return res, commandTag, err - case 'E': - err = parseError(r) - case 'T', 'D', 'I': - if err != nil { - cn.bad = true - errorf("unexpected %q after error %s", t, err) - } - if t == 'I' { - res = emptyRows - } - // ignore any results - default: - cn.bad = true - errorf("unknown %s response: %q", protocolState, t) - } - } -} - -func parseStatementRowDescribe(r *readBuf) (colNames []string, colTyps []fieldDesc) { - n := r.int16() - colNames = make([]string, n) - colTyps = make([]fieldDesc, n) - for i := range colNames { - colNames[i] = r.string() - r.next(6) - colTyps[i].OID = r.oid() - colTyps[i].Len = r.int16() - colTyps[i].Mod = r.int32() - // format code not known when describing a statement; always 0 - r.next(2) - } - return -} - -func parsePortalRowDescribe(r *readBuf) rowsHeader { - n := r.int16() - colNames := make([]string, n) - colFmts := make([]format, n) - colTyps := make([]fieldDesc, n) - for i := range colNames { - colNames[i] = r.string() - r.next(6) - colTyps[i].OID = r.oid() - colTyps[i].Len = r.int16() - colTyps[i].Mod = r.int32() - colFmts[i] = format(r.int16()) - } - return rowsHeader{ - colNames: colNames, - colFmts: colFmts, - colTyps: colTyps, - } -} - -// parseEnviron tries to mimic some of libpq's environment handling -// -// To ease testing, it does not directly reference os.Environ, but is -// designed to accept its output. -// -// Environment-set connection information is intended to have a higher -// precedence than a library default but lower than any explicitly -// passed information (such as in the URL or connection string). -func parseEnviron(env []string) (out map[string]string) { - out = make(map[string]string) - - for _, v := range env { - parts := strings.SplitN(v, "=", 2) - - accrue := func(keyname string) { - out[keyname] = parts[1] - } - unsupported := func() { - panic(fmt.Sprintf("setting %v not supported", parts[0])) - } - - // The order of these is the same as is seen in the - // PostgreSQL 9.1 manual. Unsupported but well-defined - // keys cause a panic; these should be unset prior to - // execution. Options which pq expects to be set to a - // certain value are allowed, but must be set to that - // value if present (they can, of course, be absent). - switch parts[0] { - case "PGHOST": - accrue("host") - case "PGHOSTADDR": - unsupported() - case "PGPORT": - accrue("port") - case "PGDATABASE": - accrue("dbname") - case "PGUSER": - accrue("user") - case "PGPASSWORD": - accrue("password") - case "PGSERVICE", "PGSERVICEFILE", "PGREALM": - unsupported() - case "PGOPTIONS": - accrue("options") - case "PGAPPNAME": - accrue("application_name") - case "PGSSLMODE": - accrue("sslmode") - case "PGSSLCERT": - accrue("sslcert") - case "PGSSLKEY": - accrue("sslkey") - case "PGSSLROOTCERT": - accrue("sslrootcert") - case "PGREQUIRESSL", "PGSSLCRL": - unsupported() - case "PGREQUIREPEER": - unsupported() - case "PGKRBSRVNAME", "PGGSSLIB": - unsupported() - case "PGCONNECT_TIMEOUT": - accrue("connect_timeout") - case "PGCLIENTENCODING": - accrue("client_encoding") - case "PGDATESTYLE": - accrue("datestyle") - case "PGTZ": - accrue("timezone") - case "PGGEQO": - accrue("geqo") - case "PGSYSCONFDIR", "PGLOCALEDIR": - unsupported() - } - } - - return out -} - -// isUTF8 returns whether name is a fuzzy variation of the string "UTF-8". -func isUTF8(name string) bool { - // Recognize all sorts of silly things as "UTF-8", like Postgres does - s := strings.Map(alnumLowerASCII, name) - return s == "utf8" || s == "unicode" -} - -func alnumLowerASCII(ch rune) rune { - if 'A' <= ch && ch <= 'Z' { - return ch + ('a' - 'A') - } - if 'a' <= ch && ch <= 'z' || '0' <= ch && ch <= '9' { - return ch - } - return -1 // discard -} diff --git a/vendor/github.com/lib/pq/conn_go18.go b/vendor/github.com/lib/pq/conn_go18.go deleted file mode 100644 index 0fdd06a6..00000000 --- a/vendor/github.com/lib/pq/conn_go18.go +++ /dev/null @@ -1,149 +0,0 @@ -package pq - -import ( - "context" - "database/sql" - "database/sql/driver" - "fmt" - "io" - "io/ioutil" - "time" -) - -// Implement the "QueryerContext" interface -func (cn *conn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { - list := make([]driver.Value, len(args)) - for i, nv := range args { - list[i] = nv.Value - } - finish := cn.watchCancel(ctx) - r, err := cn.query(query, list) - if err != nil { - if finish != nil { - finish() - } - return nil, err - } - r.finish = finish - return r, nil -} - -// Implement the "ExecerContext" interface -func (cn *conn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { - list := make([]driver.Value, len(args)) - for i, nv := range args { - list[i] = nv.Value - } - - if finish := cn.watchCancel(ctx); finish != nil { - defer finish() - } - - return cn.Exec(query, list) -} - -// Implement the "ConnBeginTx" interface -func (cn *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { - var mode string - - switch sql.IsolationLevel(opts.Isolation) { - case sql.LevelDefault: - // Don't touch mode: use the server's default - case sql.LevelReadUncommitted: - mode = " ISOLATION LEVEL READ UNCOMMITTED" - case sql.LevelReadCommitted: - mode = " ISOLATION LEVEL READ COMMITTED" - case sql.LevelRepeatableRead: - mode = " ISOLATION LEVEL REPEATABLE READ" - case sql.LevelSerializable: - mode = " ISOLATION LEVEL SERIALIZABLE" - default: - return nil, fmt.Errorf("pq: isolation level not supported: %d", opts.Isolation) - } - - if opts.ReadOnly { - mode += " READ ONLY" - } else { - mode += " READ WRITE" - } - - tx, err := cn.begin(mode) - if err != nil { - return nil, err - } - cn.txnFinish = cn.watchCancel(ctx) - return tx, nil -} - -func (cn *conn) Ping(ctx context.Context) error { - if finish := cn.watchCancel(ctx); finish != nil { - defer finish() - } - rows, err := cn.simpleQuery("SELECT 'lib/pq ping test';") - if err != nil { - return driver.ErrBadConn // https://golang.org/pkg/database/sql/driver/#Pinger - } - rows.Close() - return nil -} - -func (cn *conn) watchCancel(ctx context.Context) func() { - if done := ctx.Done(); done != nil { - finished := make(chan struct{}) - go func() { - select { - case <-done: - // At this point the function level context is canceled, - // so it must not be used for the additional network - // request to cancel the query. - // Create a new context to pass into the dial. - ctxCancel, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - _ = cn.cancel(ctxCancel) - finished <- struct{}{} - case <-finished: - } - }() - return func() { - select { - case <-finished: - case finished <- struct{}{}: - } - } - } - return nil -} - -func (cn *conn) cancel(ctx context.Context) error { - c, err := dial(ctx, cn.dialer, cn.opts) - if err != nil { - return err - } - defer c.Close() - - { - can := conn{ - c: c, - } - err = can.ssl(cn.opts) - if err != nil { - return err - } - - w := can.writeBuf(0) - w.int32(80877102) // cancel request code - w.int32(cn.processID) - w.int32(cn.secretKey) - - if err := can.sendStartupPacket(w); err != nil { - return err - } - } - - // Read until EOF to ensure that the server received the cancel. - { - _, err := io.Copy(ioutil.Discard, c) - return err - } -} diff --git a/vendor/github.com/lib/pq/connector.go b/vendor/github.com/lib/pq/connector.go deleted file mode 100644 index 2f8ced67..00000000 --- a/vendor/github.com/lib/pq/connector.go +++ /dev/null @@ -1,110 +0,0 @@ -package pq - -import ( - "context" - "database/sql/driver" - "errors" - "fmt" - "os" - "strings" -) - -// Connector represents a fixed configuration for the pq driver with a given -// name. Connector satisfies the database/sql/driver Connector interface and -// can be used to create any number of DB Conn's via the database/sql OpenDB -// function. -// -// See https://golang.org/pkg/database/sql/driver/#Connector. -// See https://golang.org/pkg/database/sql/#OpenDB. -type Connector struct { - opts values - dialer Dialer -} - -// Connect returns a connection to the database using the fixed configuration -// of this Connector. Context is not used. -func (c *Connector) Connect(ctx context.Context) (driver.Conn, error) { - return c.open(ctx) -} - -// Driver returnst the underlying driver of this Connector. -func (c *Connector) Driver() driver.Driver { - return &Driver{} -} - -// NewConnector returns a connector for the pq driver in a fixed configuration -// with the given dsn. The returned connector can be used to create any number -// of equivalent Conn's. The returned connector is intended to be used with -// database/sql.OpenDB. -// -// See https://golang.org/pkg/database/sql/driver/#Connector. -// See https://golang.org/pkg/database/sql/#OpenDB. -func NewConnector(dsn string) (*Connector, error) { - var err error - o := make(values) - - // A number of defaults are applied here, in this order: - // - // * Very low precedence defaults applied in every situation - // * Environment variables - // * Explicitly passed connection information - o["host"] = "localhost" - o["port"] = "5432" - // N.B.: Extra float digits should be set to 3, but that breaks - // Postgres 8.4 and older, where the max is 2. - o["extra_float_digits"] = "2" - for k, v := range parseEnviron(os.Environ()) { - o[k] = v - } - - if strings.HasPrefix(dsn, "postgres://") || strings.HasPrefix(dsn, "postgresql://") { - dsn, err = ParseURL(dsn) - if err != nil { - return nil, err - } - } - - if err := parseOpts(dsn, o); err != nil { - return nil, err - } - - // Use the "fallback" application name if necessary - if fallback, ok := o["fallback_application_name"]; ok { - if _, ok := o["application_name"]; !ok { - o["application_name"] = fallback - } - } - - // We can't work with any client_encoding other than UTF-8 currently. - // However, we have historically allowed the user to set it to UTF-8 - // explicitly, and there's no reason to break such programs, so allow that. - // Note that the "options" setting could also set client_encoding, but - // parsing its value is not worth it. Instead, we always explicitly send - // client_encoding as a separate run-time parameter, which should override - // anything set in options. - if enc, ok := o["client_encoding"]; ok && !isUTF8(enc) { - return nil, errors.New("client_encoding must be absent or 'UTF8'") - } - o["client_encoding"] = "UTF8" - // DateStyle needs a similar treatment. - if datestyle, ok := o["datestyle"]; ok { - if datestyle != "ISO, MDY" { - return nil, fmt.Errorf("setting datestyle must be absent or %v; got %v", "ISO, MDY", datestyle) - } - } else { - o["datestyle"] = "ISO, MDY" - } - - // If a user is not provided by any other means, the last - // resort is to use the current operating system provided user - // name. - if _, ok := o["user"]; !ok { - u, err := userCurrent() - if err != nil { - return nil, err - } - o["user"] = u - } - - return &Connector{opts: o, dialer: defaultDialer{}}, nil -} diff --git a/vendor/github.com/lib/pq/copy.go b/vendor/github.com/lib/pq/copy.go deleted file mode 100644 index 55378d5b..00000000 --- a/vendor/github.com/lib/pq/copy.go +++ /dev/null @@ -1,282 +0,0 @@ -package pq - -import ( - "database/sql/driver" - "encoding/binary" - "errors" - "fmt" - "sync" -) - -var ( - errCopyInClosed = errors.New("pq: copyin statement has already been closed") - errBinaryCopyNotSupported = errors.New("pq: only text format supported for COPY") - errCopyToNotSupported = errors.New("pq: COPY TO is not supported") - errCopyNotSupportedOutsideTxn = errors.New("pq: COPY is only allowed inside a transaction") - errCopyInProgress = errors.New("pq: COPY in progress") -) - -// CopyIn creates a COPY FROM statement which can be prepared with -// Tx.Prepare(). The target table should be visible in search_path. -func CopyIn(table string, columns ...string) string { - stmt := "COPY " + QuoteIdentifier(table) + " (" - for i, col := range columns { - if i != 0 { - stmt += ", " - } - stmt += QuoteIdentifier(col) - } - stmt += ") FROM STDIN" - return stmt -} - -// CopyInSchema creates a COPY FROM statement which can be prepared with -// Tx.Prepare(). -func CopyInSchema(schema, table string, columns ...string) string { - stmt := "COPY " + QuoteIdentifier(schema) + "." + QuoteIdentifier(table) + " (" - for i, col := range columns { - if i != 0 { - stmt += ", " - } - stmt += QuoteIdentifier(col) - } - stmt += ") FROM STDIN" - return stmt -} - -type copyin struct { - cn *conn - buffer []byte - rowData chan []byte - done chan bool - - closed bool - - sync.Mutex // guards err - err error -} - -const ciBufferSize = 64 * 1024 - -// flush buffer before the buffer is filled up and needs reallocation -const ciBufferFlushSize = 63 * 1024 - -func (cn *conn) prepareCopyIn(q string) (_ driver.Stmt, err error) { - if !cn.isInTransaction() { - return nil, errCopyNotSupportedOutsideTxn - } - - ci := ©in{ - cn: cn, - buffer: make([]byte, 0, ciBufferSize), - rowData: make(chan []byte), - done: make(chan bool, 1), - } - // add CopyData identifier + 4 bytes for message length - ci.buffer = append(ci.buffer, 'd', 0, 0, 0, 0) - - b := cn.writeBuf('Q') - b.string(q) - cn.send(b) - -awaitCopyInResponse: - for { - t, r := cn.recv1() - switch t { - case 'G': - if r.byte() != 0 { - err = errBinaryCopyNotSupported - break awaitCopyInResponse - } - go ci.resploop() - return ci, nil - case 'H': - err = errCopyToNotSupported - break awaitCopyInResponse - case 'E': - err = parseError(r) - case 'Z': - if err == nil { - ci.setBad() - errorf("unexpected ReadyForQuery in response to COPY") - } - cn.processReadyForQuery(r) - return nil, err - default: - ci.setBad() - errorf("unknown response for copy query: %q", t) - } - } - - // something went wrong, abort COPY before we return - b = cn.writeBuf('f') - b.string(err.Error()) - cn.send(b) - - for { - t, r := cn.recv1() - switch t { - case 'c', 'C', 'E': - case 'Z': - // correctly aborted, we're done - cn.processReadyForQuery(r) - return nil, err - default: - ci.setBad() - errorf("unknown response for CopyFail: %q", t) - } - } -} - -func (ci *copyin) flush(buf []byte) { - // set message length (without message identifier) - binary.BigEndian.PutUint32(buf[1:], uint32(len(buf)-1)) - - _, err := ci.cn.c.Write(buf) - if err != nil { - panic(err) - } -} - -func (ci *copyin) resploop() { - for { - var r readBuf - t, err := ci.cn.recvMessage(&r) - if err != nil { - ci.setBad() - ci.setError(err) - ci.done <- true - return - } - switch t { - case 'C': - // complete - case 'N': - // NoticeResponse - case 'Z': - ci.cn.processReadyForQuery(&r) - ci.done <- true - return - case 'E': - err := parseError(&r) - ci.setError(err) - default: - ci.setBad() - ci.setError(fmt.Errorf("unknown response during CopyIn: %q", t)) - ci.done <- true - return - } - } -} - -func (ci *copyin) setBad() { - ci.Lock() - ci.cn.bad = true - ci.Unlock() -} - -func (ci *copyin) isBad() bool { - ci.Lock() - b := ci.cn.bad - ci.Unlock() - return b -} - -func (ci *copyin) isErrorSet() bool { - ci.Lock() - isSet := (ci.err != nil) - ci.Unlock() - return isSet -} - -// setError() sets ci.err if one has not been set already. Caller must not be -// holding ci.Mutex. -func (ci *copyin) setError(err error) { - ci.Lock() - if ci.err == nil { - ci.err = err - } - ci.Unlock() -} - -func (ci *copyin) NumInput() int { - return -1 -} - -func (ci *copyin) Query(v []driver.Value) (r driver.Rows, err error) { - return nil, ErrNotSupported -} - -// Exec inserts values into the COPY stream. The insert is asynchronous -// and Exec can return errors from previous Exec calls to the same -// COPY stmt. -// -// You need to call Exec(nil) to sync the COPY stream and to get any -// errors from pending data, since Stmt.Close() doesn't return errors -// to the user. -func (ci *copyin) Exec(v []driver.Value) (r driver.Result, err error) { - if ci.closed { - return nil, errCopyInClosed - } - - if ci.isBad() { - return nil, driver.ErrBadConn - } - defer ci.cn.errRecover(&err) - - if ci.isErrorSet() { - return nil, ci.err - } - - if len(v) == 0 { - return driver.RowsAffected(0), ci.Close() - } - - numValues := len(v) - for i, value := range v { - ci.buffer = appendEncodedText(&ci.cn.parameterStatus, ci.buffer, value) - if i < numValues-1 { - ci.buffer = append(ci.buffer, '\t') - } - } - - ci.buffer = append(ci.buffer, '\n') - - if len(ci.buffer) > ciBufferFlushSize { - ci.flush(ci.buffer) - // reset buffer, keep bytes for message identifier and length - ci.buffer = ci.buffer[:5] - } - - return driver.RowsAffected(0), nil -} - -func (ci *copyin) Close() (err error) { - if ci.closed { // Don't do anything, we're already closed - return nil - } - ci.closed = true - - if ci.isBad() { - return driver.ErrBadConn - } - defer ci.cn.errRecover(&err) - - if len(ci.buffer) > 0 { - ci.flush(ci.buffer) - } - // Avoid touching the scratch buffer as resploop could be using it. - err = ci.cn.sendSimpleMessage('c') - if err != nil { - return err - } - - <-ci.done - ci.cn.inCopy = false - - if ci.isErrorSet() { - err = ci.err - return err - } - return nil -} diff --git a/vendor/github.com/lib/pq/doc.go b/vendor/github.com/lib/pq/doc.go deleted file mode 100644 index 2a60054e..00000000 --- a/vendor/github.com/lib/pq/doc.go +++ /dev/null @@ -1,245 +0,0 @@ -/* -Package pq is a pure Go Postgres driver for the database/sql package. - -In most cases clients will use the database/sql package instead of -using this package directly. For example: - - import ( - "database/sql" - - _ "github.com/lib/pq" - ) - - func main() { - connStr := "user=pqgotest dbname=pqgotest sslmode=verify-full" - db, err := sql.Open("postgres", connStr) - if err != nil { - log.Fatal(err) - } - - age := 21 - rows, err := db.Query("SELECT name FROM users WHERE age = $1", age) - … - } - -You can also connect to a database using a URL. For example: - - connStr := "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full" - db, err := sql.Open("postgres", connStr) - - -Connection String Parameters - - -Similarly to libpq, when establishing a connection using pq you are expected to -supply a connection string containing zero or more parameters. -A subset of the connection parameters supported by libpq are also supported by pq. -Additionally, pq also lets you specify run-time parameters (such as search_path or work_mem) -directly in the connection string. This is different from libpq, which does not allow -run-time parameters in the connection string, instead requiring you to supply -them in the options parameter. - -For compatibility with libpq, the following special connection parameters are -supported: - - * dbname - The name of the database to connect to - * user - The user to sign in as - * password - The user's password - * host - The host to connect to. Values that start with / are for unix - domain sockets. (default is localhost) - * port - The port to bind to. (default is 5432) - * sslmode - Whether or not to use SSL (default is require, this is not - the default for libpq) - * fallback_application_name - An application_name to fall back to if one isn't provided. - * connect_timeout - Maximum wait for connection, in seconds. Zero or - not specified means wait indefinitely. - * sslcert - Cert file location. The file must contain PEM encoded data. - * sslkey - Key file location. The file must contain PEM encoded data. - * sslrootcert - The location of the root certificate file. The file - must contain PEM encoded data. - -Valid values for sslmode are: - - * disable - No SSL - * require - Always SSL (skip verification) - * verify-ca - Always SSL (verify that the certificate presented by the - server was signed by a trusted CA) - * verify-full - Always SSL (verify that the certification presented by - the server was signed by a trusted CA and the server host name - matches the one in the certificate) - -See http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING -for more information about connection string parameters. - -Use single quotes for values that contain whitespace: - - "user=pqgotest password='with spaces'" - -A backslash will escape the next character in values: - - "user=space\ man password='it\'s valid'" - -Note that the connection parameter client_encoding (which sets the -text encoding for the connection) may be set but must be "UTF8", -matching with the same rules as Postgres. It is an error to provide -any other value. - -In addition to the parameters listed above, any run-time parameter that can be -set at backend start time can be set in the connection string. For more -information, see -http://www.postgresql.org/docs/current/static/runtime-config.html. - -Most environment variables as specified at http://www.postgresql.org/docs/current/static/libpq-envars.html -supported by libpq are also supported by pq. If any of the environment -variables not supported by pq are set, pq will panic during connection -establishment. Environment variables have a lower precedence than explicitly -provided connection parameters. - -The pgpass mechanism as described in http://www.postgresql.org/docs/current/static/libpq-pgpass.html -is supported, but on Windows PGPASSFILE must be specified explicitly. - - -Queries - - -database/sql does not dictate any specific format for parameter -markers in query strings, and pq uses the Postgres-native ordinal markers, -as shown above. The same marker can be reused for the same parameter: - - rows, err := db.Query(`SELECT name FROM users WHERE favorite_fruit = $1 - OR age BETWEEN $2 AND $2 + 3`, "orange", 64) - -pq does not support the LastInsertId() method of the Result type in database/sql. -To return the identifier of an INSERT (or UPDATE or DELETE), use the Postgres -RETURNING clause with a standard Query or QueryRow call: - - var userid int - err := db.QueryRow(`INSERT INTO users(name, favorite_fruit, age) - VALUES('beatrice', 'starfruit', 93) RETURNING id`).Scan(&userid) - -For more details on RETURNING, see the Postgres documentation: - - http://www.postgresql.org/docs/current/static/sql-insert.html - http://www.postgresql.org/docs/current/static/sql-update.html - http://www.postgresql.org/docs/current/static/sql-delete.html - -For additional instructions on querying see the documentation for the database/sql package. - - -Data Types - - -Parameters pass through driver.DefaultParameterConverter before they are handled -by this package. When the binary_parameters connection option is enabled, -[]byte values are sent directly to the backend as data in binary format. - -This package returns the following types for values from the PostgreSQL backend: - - - integer types smallint, integer, and bigint are returned as int64 - - floating-point types real and double precision are returned as float64 - - character types char, varchar, and text are returned as string - - temporal types date, time, timetz, timestamp, and timestamptz are - returned as time.Time - - the boolean type is returned as bool - - the bytea type is returned as []byte - -All other types are returned directly from the backend as []byte values in text format. - - -Errors - - -pq may return errors of type *pq.Error which can be interrogated for error details: - - if err, ok := err.(*pq.Error); ok { - fmt.Println("pq error:", err.Code.Name()) - } - -See the pq.Error type for details. - - -Bulk imports - -You can perform bulk imports by preparing a statement returned by pq.CopyIn (or -pq.CopyInSchema) in an explicit transaction (sql.Tx). The returned statement -handle can then be repeatedly "executed" to copy data into the target table. -After all data has been processed you should call Exec() once with no arguments -to flush all buffered data. Any call to Exec() might return an error which -should be handled appropriately, but because of the internal buffering an error -returned by Exec() might not be related to the data passed in the call that -failed. - -CopyIn uses COPY FROM internally. It is not possible to COPY outside of an -explicit transaction in pq. - -Usage example: - - txn, err := db.Begin() - if err != nil { - log.Fatal(err) - } - - stmt, err := txn.Prepare(pq.CopyIn("users", "name", "age")) - if err != nil { - log.Fatal(err) - } - - for _, user := range users { - _, err = stmt.Exec(user.Name, int64(user.Age)) - if err != nil { - log.Fatal(err) - } - } - - _, err = stmt.Exec() - if err != nil { - log.Fatal(err) - } - - err = stmt.Close() - if err != nil { - log.Fatal(err) - } - - err = txn.Commit() - if err != nil { - log.Fatal(err) - } - - -Notifications - - -PostgreSQL supports a simple publish/subscribe model over database -connections. See http://www.postgresql.org/docs/current/static/sql-notify.html -for more information about the general mechanism. - -To start listening for notifications, you first have to open a new connection -to the database by calling NewListener. This connection can not be used for -anything other than LISTEN / NOTIFY. Calling Listen will open a "notification -channel"; once a notification channel is open, a notification generated on that -channel will effect a send on the Listener.Notify channel. A notification -channel will remain open until Unlisten is called, though connection loss might -result in some notifications being lost. To solve this problem, Listener sends -a nil pointer over the Notify channel any time the connection is re-established -following a connection loss. The application can get information about the -state of the underlying connection by setting an event callback in the call to -NewListener. - -A single Listener can safely be used from concurrent goroutines, which means -that there is often no need to create more than one Listener in your -application. However, a Listener is always connected to a single database, so -you will need to create a new Listener instance for every database you want to -receive notifications in. - -The channel name in both Listen and Unlisten is case sensitive, and can contain -any characters legal in an identifier (see -http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS -for more information). Note that the channel name will be truncated to 63 -bytes by the PostgreSQL server. - -You can find a complete, working example of Listener usage at -https://godoc.org/github.com/lib/pq/example/listen. - -*/ -package pq diff --git a/vendor/github.com/lib/pq/encode.go b/vendor/github.com/lib/pq/encode.go deleted file mode 100644 index 73cafb89..00000000 --- a/vendor/github.com/lib/pq/encode.go +++ /dev/null @@ -1,602 +0,0 @@ -package pq - -import ( - "bytes" - "database/sql/driver" - "encoding/binary" - "encoding/hex" - "errors" - "fmt" - "math" - "strconv" - "strings" - "sync" - "time" - - "github.com/lib/pq/oid" -) - -func binaryEncode(parameterStatus *parameterStatus, x interface{}) []byte { - switch v := x.(type) { - case []byte: - return v - default: - return encode(parameterStatus, x, oid.T_unknown) - } -} - -func encode(parameterStatus *parameterStatus, x interface{}, pgtypOid oid.Oid) []byte { - switch v := x.(type) { - case int64: - return strconv.AppendInt(nil, v, 10) - case float64: - return strconv.AppendFloat(nil, v, 'f', -1, 64) - case []byte: - if pgtypOid == oid.T_bytea { - return encodeBytea(parameterStatus.serverVersion, v) - } - - return v - case string: - if pgtypOid == oid.T_bytea { - return encodeBytea(parameterStatus.serverVersion, []byte(v)) - } - - return []byte(v) - case bool: - return strconv.AppendBool(nil, v) - case time.Time: - return formatTs(v) - - default: - errorf("encode: unknown type for %T", v) - } - - panic("not reached") -} - -func decode(parameterStatus *parameterStatus, s []byte, typ oid.Oid, f format) interface{} { - switch f { - case formatBinary: - return binaryDecode(parameterStatus, s, typ) - case formatText: - return textDecode(parameterStatus, s, typ) - default: - panic("not reached") - } -} - -func binaryDecode(parameterStatus *parameterStatus, s []byte, typ oid.Oid) interface{} { - switch typ { - case oid.T_bytea: - return s - case oid.T_int8: - return int64(binary.BigEndian.Uint64(s)) - case oid.T_int4: - return int64(int32(binary.BigEndian.Uint32(s))) - case oid.T_int2: - return int64(int16(binary.BigEndian.Uint16(s))) - case oid.T_uuid: - b, err := decodeUUIDBinary(s) - if err != nil { - panic(err) - } - return b - - default: - errorf("don't know how to decode binary parameter of type %d", uint32(typ)) - } - - panic("not reached") -} - -func textDecode(parameterStatus *parameterStatus, s []byte, typ oid.Oid) interface{} { - switch typ { - case oid.T_char, oid.T_varchar, oid.T_text: - return string(s) - case oid.T_bytea: - b, err := parseBytea(s) - if err != nil { - errorf("%s", err) - } - return b - case oid.T_timestamptz: - return parseTs(parameterStatus.currentLocation, string(s)) - case oid.T_timestamp, oid.T_date: - return parseTs(nil, string(s)) - case oid.T_time: - return mustParse("15:04:05", typ, s) - case oid.T_timetz: - return mustParse("15:04:05-07", typ, s) - case oid.T_bool: - return s[0] == 't' - case oid.T_int8, oid.T_int4, oid.T_int2: - i, err := strconv.ParseInt(string(s), 10, 64) - if err != nil { - errorf("%s", err) - } - return i - case oid.T_float4, oid.T_float8: - // We always use 64 bit parsing, regardless of whether the input text is for - // a float4 or float8, because clients expect float64s for all float datatypes - // and returning a 32-bit parsed float64 produces lossy results. - f, err := strconv.ParseFloat(string(s), 64) - if err != nil { - errorf("%s", err) - } - return f - } - - return s -} - -// appendEncodedText encodes item in text format as required by COPY -// and appends to buf -func appendEncodedText(parameterStatus *parameterStatus, buf []byte, x interface{}) []byte { - switch v := x.(type) { - case int64: - return strconv.AppendInt(buf, v, 10) - case float64: - return strconv.AppendFloat(buf, v, 'f', -1, 64) - case []byte: - encodedBytea := encodeBytea(parameterStatus.serverVersion, v) - return appendEscapedText(buf, string(encodedBytea)) - case string: - return appendEscapedText(buf, v) - case bool: - return strconv.AppendBool(buf, v) - case time.Time: - return append(buf, formatTs(v)...) - case nil: - return append(buf, "\\N"...) - default: - errorf("encode: unknown type for %T", v) - } - - panic("not reached") -} - -func appendEscapedText(buf []byte, text string) []byte { - escapeNeeded := false - startPos := 0 - var c byte - - // check if we need to escape - for i := 0; i < len(text); i++ { - c = text[i] - if c == '\\' || c == '\n' || c == '\r' || c == '\t' { - escapeNeeded = true - startPos = i - break - } - } - if !escapeNeeded { - return append(buf, text...) - } - - // copy till first char to escape, iterate the rest - result := append(buf, text[:startPos]...) - for i := startPos; i < len(text); i++ { - c = text[i] - switch c { - case '\\': - result = append(result, '\\', '\\') - case '\n': - result = append(result, '\\', 'n') - case '\r': - result = append(result, '\\', 'r') - case '\t': - result = append(result, '\\', 't') - default: - result = append(result, c) - } - } - return result -} - -func mustParse(f string, typ oid.Oid, s []byte) time.Time { - str := string(s) - - // check for a 30-minute-offset timezone - if (typ == oid.T_timestamptz || typ == oid.T_timetz) && - str[len(str)-3] == ':' { - f += ":00" - } - t, err := time.Parse(f, str) - if err != nil { - errorf("decode: %s", err) - } - return t -} - -var errInvalidTimestamp = errors.New("invalid timestamp") - -type timestampParser struct { - err error -} - -func (p *timestampParser) expect(str string, char byte, pos int) { - if p.err != nil { - return - } - if pos+1 > len(str) { - p.err = errInvalidTimestamp - return - } - if c := str[pos]; c != char && p.err == nil { - p.err = fmt.Errorf("expected '%v' at position %v; got '%v'", char, pos, c) - } -} - -func (p *timestampParser) mustAtoi(str string, begin int, end int) int { - if p.err != nil { - return 0 - } - if begin < 0 || end < 0 || begin > end || end > len(str) { - p.err = errInvalidTimestamp - return 0 - } - result, err := strconv.Atoi(str[begin:end]) - if err != nil { - if p.err == nil { - p.err = fmt.Errorf("expected number; got '%v'", str) - } - return 0 - } - return result -} - -// The location cache caches the time zones typically used by the client. -type locationCache struct { - cache map[int]*time.Location - lock sync.Mutex -} - -// All connections share the same list of timezones. Benchmarking shows that -// about 5% speed could be gained by putting the cache in the connection and -// losing the mutex, at the cost of a small amount of memory and a somewhat -// significant increase in code complexity. -var globalLocationCache = newLocationCache() - -func newLocationCache() *locationCache { - return &locationCache{cache: make(map[int]*time.Location)} -} - -// Returns the cached timezone for the specified offset, creating and caching -// it if necessary. -func (c *locationCache) getLocation(offset int) *time.Location { - c.lock.Lock() - defer c.lock.Unlock() - - location, ok := c.cache[offset] - if !ok { - location = time.FixedZone("", offset) - c.cache[offset] = location - } - - return location -} - -var infinityTsEnabled = false -var infinityTsNegative time.Time -var infinityTsPositive time.Time - -const ( - infinityTsEnabledAlready = "pq: infinity timestamp enabled already" - infinityTsNegativeMustBeSmaller = "pq: infinity timestamp: negative value must be smaller (before) than positive" -) - -// EnableInfinityTs controls the handling of Postgres' "-infinity" and -// "infinity" "timestamp"s. -// -// If EnableInfinityTs is not called, "-infinity" and "infinity" will return -// []byte("-infinity") and []byte("infinity") respectively, and potentially -// cause error "sql: Scan error on column index 0: unsupported driver -> Scan -// pair: []uint8 -> *time.Time", when scanning into a time.Time value. -// -// Once EnableInfinityTs has been called, all connections created using this -// driver will decode Postgres' "-infinity" and "infinity" for "timestamp", -// "timestamp with time zone" and "date" types to the predefined minimum and -// maximum times, respectively. When encoding time.Time values, any time which -// equals or precedes the predefined minimum time will be encoded to -// "-infinity". Any values at or past the maximum time will similarly be -// encoded to "infinity". -// -// If EnableInfinityTs is called with negative >= positive, it will panic. -// Calling EnableInfinityTs after a connection has been established results in -// undefined behavior. If EnableInfinityTs is called more than once, it will -// panic. -func EnableInfinityTs(negative time.Time, positive time.Time) { - if infinityTsEnabled { - panic(infinityTsEnabledAlready) - } - if !negative.Before(positive) { - panic(infinityTsNegativeMustBeSmaller) - } - infinityTsEnabled = true - infinityTsNegative = negative - infinityTsPositive = positive -} - -/* - * Testing might want to toggle infinityTsEnabled - */ -func disableInfinityTs() { - infinityTsEnabled = false -} - -// This is a time function specific to the Postgres default DateStyle -// setting ("ISO, MDY"), the only one we currently support. This -// accounts for the discrepancies between the parsing available with -// time.Parse and the Postgres date formatting quirks. -func parseTs(currentLocation *time.Location, str string) interface{} { - switch str { - case "-infinity": - if infinityTsEnabled { - return infinityTsNegative - } - return []byte(str) - case "infinity": - if infinityTsEnabled { - return infinityTsPositive - } - return []byte(str) - } - t, err := ParseTimestamp(currentLocation, str) - if err != nil { - panic(err) - } - return t -} - -// ParseTimestamp parses Postgres' text format. It returns a time.Time in -// currentLocation iff that time's offset agrees with the offset sent from the -// Postgres server. Otherwise, ParseTimestamp returns a time.Time with the -// fixed offset offset provided by the Postgres server. -func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, error) { - p := timestampParser{} - - monSep := strings.IndexRune(str, '-') - // this is Gregorian year, not ISO Year - // In Gregorian system, the year 1 BC is followed by AD 1 - year := p.mustAtoi(str, 0, monSep) - daySep := monSep + 3 - month := p.mustAtoi(str, monSep+1, daySep) - p.expect(str, '-', daySep) - timeSep := daySep + 3 - day := p.mustAtoi(str, daySep+1, timeSep) - - minLen := monSep + len("01-01") + 1 - - isBC := strings.HasSuffix(str, " BC") - if isBC { - minLen += 3 - } - - var hour, minute, second int - if len(str) > minLen { - p.expect(str, ' ', timeSep) - minSep := timeSep + 3 - p.expect(str, ':', minSep) - hour = p.mustAtoi(str, timeSep+1, minSep) - secSep := minSep + 3 - p.expect(str, ':', secSep) - minute = p.mustAtoi(str, minSep+1, secSep) - secEnd := secSep + 3 - second = p.mustAtoi(str, secSep+1, secEnd) - } - remainderIdx := monSep + len("01-01 00:00:00") + 1 - // Three optional (but ordered) sections follow: the - // fractional seconds, the time zone offset, and the BC - // designation. We set them up here and adjust the other - // offsets if the preceding sections exist. - - nanoSec := 0 - tzOff := 0 - - if remainderIdx < len(str) && str[remainderIdx] == '.' { - fracStart := remainderIdx + 1 - fracOff := strings.IndexAny(str[fracStart:], "-+ ") - if fracOff < 0 { - fracOff = len(str) - fracStart - } - fracSec := p.mustAtoi(str, fracStart, fracStart+fracOff) - nanoSec = fracSec * (1000000000 / int(math.Pow(10, float64(fracOff)))) - - remainderIdx += fracOff + 1 - } - if tzStart := remainderIdx; tzStart < len(str) && (str[tzStart] == '-' || str[tzStart] == '+') { - // time zone separator is always '-' or '+' (UTC is +00) - var tzSign int - switch c := str[tzStart]; c { - case '-': - tzSign = -1 - case '+': - tzSign = +1 - default: - return time.Time{}, fmt.Errorf("expected '-' or '+' at position %v; got %v", tzStart, c) - } - tzHours := p.mustAtoi(str, tzStart+1, tzStart+3) - remainderIdx += 3 - var tzMin, tzSec int - if remainderIdx < len(str) && str[remainderIdx] == ':' { - tzMin = p.mustAtoi(str, remainderIdx+1, remainderIdx+3) - remainderIdx += 3 - } - if remainderIdx < len(str) && str[remainderIdx] == ':' { - tzSec = p.mustAtoi(str, remainderIdx+1, remainderIdx+3) - remainderIdx += 3 - } - tzOff = tzSign * ((tzHours * 60 * 60) + (tzMin * 60) + tzSec) - } - var isoYear int - - if isBC { - isoYear = 1 - year - remainderIdx += 3 - } else { - isoYear = year - } - if remainderIdx < len(str) { - return time.Time{}, fmt.Errorf("expected end of input, got %v", str[remainderIdx:]) - } - t := time.Date(isoYear, time.Month(month), day, - hour, minute, second, nanoSec, - globalLocationCache.getLocation(tzOff)) - - if currentLocation != nil { - // Set the location of the returned Time based on the session's - // TimeZone value, but only if the local time zone database agrees with - // the remote database on the offset. - lt := t.In(currentLocation) - _, newOff := lt.Zone() - if newOff == tzOff { - t = lt - } - } - - return t, p.err -} - -// formatTs formats t into a format postgres understands. -func formatTs(t time.Time) []byte { - if infinityTsEnabled { - // t <= -infinity : ! (t > -infinity) - if !t.After(infinityTsNegative) { - return []byte("-infinity") - } - // t >= infinity : ! (!t < infinity) - if !t.Before(infinityTsPositive) { - return []byte("infinity") - } - } - return FormatTimestamp(t) -} - -// FormatTimestamp formats t into Postgres' text format for timestamps. -func FormatTimestamp(t time.Time) []byte { - // Need to send dates before 0001 A.D. with " BC" suffix, instead of the - // minus sign preferred by Go. - // Beware, "0000" in ISO is "1 BC", "-0001" is "2 BC" and so on - bc := false - if t.Year() <= 0 { - // flip year sign, and add 1, e.g: "0" will be "1", and "-10" will be "11" - t = t.AddDate((-t.Year())*2+1, 0, 0) - bc = true - } - b := []byte(t.Format("2006-01-02 15:04:05.999999999Z07:00")) - - _, offset := t.Zone() - offset %= 60 - if offset != 0 { - // RFC3339Nano already printed the minus sign - if offset < 0 { - offset = -offset - } - - b = append(b, ':') - if offset < 10 { - b = append(b, '0') - } - b = strconv.AppendInt(b, int64(offset), 10) - } - - if bc { - b = append(b, " BC"...) - } - return b -} - -// Parse a bytea value received from the server. Both "hex" and the legacy -// "escape" format are supported. -func parseBytea(s []byte) (result []byte, err error) { - if len(s) >= 2 && bytes.Equal(s[:2], []byte("\\x")) { - // bytea_output = hex - s = s[2:] // trim off leading "\\x" - result = make([]byte, hex.DecodedLen(len(s))) - _, err := hex.Decode(result, s) - if err != nil { - return nil, err - } - } else { - // bytea_output = escape - for len(s) > 0 { - if s[0] == '\\' { - // escaped '\\' - if len(s) >= 2 && s[1] == '\\' { - result = append(result, '\\') - s = s[2:] - continue - } - - // '\\' followed by an octal number - if len(s) < 4 { - return nil, fmt.Errorf("invalid bytea sequence %v", s) - } - r, err := strconv.ParseInt(string(s[1:4]), 8, 9) - if err != nil { - return nil, fmt.Errorf("could not parse bytea value: %s", err.Error()) - } - result = append(result, byte(r)) - s = s[4:] - } else { - // We hit an unescaped, raw byte. Try to read in as many as - // possible in one go. - i := bytes.IndexByte(s, '\\') - if i == -1 { - result = append(result, s...) - break - } - result = append(result, s[:i]...) - s = s[i:] - } - } - } - - return result, nil -} - -func encodeBytea(serverVersion int, v []byte) (result []byte) { - if serverVersion >= 90000 { - // Use the hex format if we know that the server supports it - result = make([]byte, 2+hex.EncodedLen(len(v))) - result[0] = '\\' - result[1] = 'x' - hex.Encode(result[2:], v) - } else { - // .. or resort to "escape" - for _, b := range v { - if b == '\\' { - result = append(result, '\\', '\\') - } else if b < 0x20 || b > 0x7e { - result = append(result, []byte(fmt.Sprintf("\\%03o", b))...) - } else { - result = append(result, b) - } - } - } - - return result -} - -// NullTime represents a time.Time that may be null. NullTime implements the -// sql.Scanner interface so it can be used as a scan destination, similar to -// sql.NullString. -type NullTime struct { - Time time.Time - Valid bool // Valid is true if Time is not NULL -} - -// Scan implements the Scanner interface. -func (nt *NullTime) Scan(value interface{}) error { - nt.Time, nt.Valid = value.(time.Time) - return nil -} - -// Value implements the driver Valuer interface. -func (nt NullTime) Value() (driver.Value, error) { - if !nt.Valid { - return nil, nil - } - return nt.Time, nil -} diff --git a/vendor/github.com/lib/pq/error.go b/vendor/github.com/lib/pq/error.go deleted file mode 100644 index 3d66ba7c..00000000 --- a/vendor/github.com/lib/pq/error.go +++ /dev/null @@ -1,515 +0,0 @@ -package pq - -import ( - "database/sql/driver" - "fmt" - "io" - "net" - "runtime" -) - -// Error severities -const ( - Efatal = "FATAL" - Epanic = "PANIC" - Ewarning = "WARNING" - Enotice = "NOTICE" - Edebug = "DEBUG" - Einfo = "INFO" - Elog = "LOG" -) - -// Error represents an error communicating with the server. -// -// See http://www.postgresql.org/docs/current/static/protocol-error-fields.html for details of the fields -type Error struct { - Severity string - Code ErrorCode - Message string - Detail string - Hint string - Position string - InternalPosition string - InternalQuery string - Where string - Schema string - Table string - Column string - DataTypeName string - Constraint string - File string - Line string - Routine string -} - -// ErrorCode is a five-character error code. -type ErrorCode string - -// Name returns a more human friendly rendering of the error code, namely the -// "condition name". -// -// See http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html for -// details. -func (ec ErrorCode) Name() string { - return errorCodeNames[ec] -} - -// ErrorClass is only the class part of an error code. -type ErrorClass string - -// Name returns the condition name of an error class. It is equivalent to the -// condition name of the "standard" error code (i.e. the one having the last -// three characters "000"). -func (ec ErrorClass) Name() string { - return errorCodeNames[ErrorCode(ec+"000")] -} - -// Class returns the error class, e.g. "28". -// -// See http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html for -// details. -func (ec ErrorCode) Class() ErrorClass { - return ErrorClass(ec[0:2]) -} - -// errorCodeNames is a mapping between the five-character error codes and the -// human readable "condition names". It is derived from the list at -// http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html -var errorCodeNames = map[ErrorCode]string{ - // Class 00 - Successful Completion - "00000": "successful_completion", - // Class 01 - Warning - "01000": "warning", - "0100C": "dynamic_result_sets_returned", - "01008": "implicit_zero_bit_padding", - "01003": "null_value_eliminated_in_set_function", - "01007": "privilege_not_granted", - "01006": "privilege_not_revoked", - "01004": "string_data_right_truncation", - "01P01": "deprecated_feature", - // Class 02 - No Data (this is also a warning class per the SQL standard) - "02000": "no_data", - "02001": "no_additional_dynamic_result_sets_returned", - // Class 03 - SQL Statement Not Yet Complete - "03000": "sql_statement_not_yet_complete", - // Class 08 - Connection Exception - "08000": "connection_exception", - "08003": "connection_does_not_exist", - "08006": "connection_failure", - "08001": "sqlclient_unable_to_establish_sqlconnection", - "08004": "sqlserver_rejected_establishment_of_sqlconnection", - "08007": "transaction_resolution_unknown", - "08P01": "protocol_violation", - // Class 09 - Triggered Action Exception - "09000": "triggered_action_exception", - // Class 0A - Feature Not Supported - "0A000": "feature_not_supported", - // Class 0B - Invalid Transaction Initiation - "0B000": "invalid_transaction_initiation", - // Class 0F - Locator Exception - "0F000": "locator_exception", - "0F001": "invalid_locator_specification", - // Class 0L - Invalid Grantor - "0L000": "invalid_grantor", - "0LP01": "invalid_grant_operation", - // Class 0P - Invalid Role Specification - "0P000": "invalid_role_specification", - // Class 0Z - Diagnostics Exception - "0Z000": "diagnostics_exception", - "0Z002": "stacked_diagnostics_accessed_without_active_handler", - // Class 20 - Case Not Found - "20000": "case_not_found", - // Class 21 - Cardinality Violation - "21000": "cardinality_violation", - // Class 22 - Data Exception - "22000": "data_exception", - "2202E": "array_subscript_error", - "22021": "character_not_in_repertoire", - "22008": "datetime_field_overflow", - "22012": "division_by_zero", - "22005": "error_in_assignment", - "2200B": "escape_character_conflict", - "22022": "indicator_overflow", - "22015": "interval_field_overflow", - "2201E": "invalid_argument_for_logarithm", - "22014": "invalid_argument_for_ntile_function", - "22016": "invalid_argument_for_nth_value_function", - "2201F": "invalid_argument_for_power_function", - "2201G": "invalid_argument_for_width_bucket_function", - "22018": "invalid_character_value_for_cast", - "22007": "invalid_datetime_format", - "22019": "invalid_escape_character", - "2200D": "invalid_escape_octet", - "22025": "invalid_escape_sequence", - "22P06": "nonstandard_use_of_escape_character", - "22010": "invalid_indicator_parameter_value", - "22023": "invalid_parameter_value", - "2201B": "invalid_regular_expression", - "2201W": "invalid_row_count_in_limit_clause", - "2201X": "invalid_row_count_in_result_offset_clause", - "22009": "invalid_time_zone_displacement_value", - "2200C": "invalid_use_of_escape_character", - "2200G": "most_specific_type_mismatch", - "22004": "null_value_not_allowed", - "22002": "null_value_no_indicator_parameter", - "22003": "numeric_value_out_of_range", - "2200H": "sequence_generator_limit_exceeded", - "22026": "string_data_length_mismatch", - "22001": "string_data_right_truncation", - "22011": "substring_error", - "22027": "trim_error", - "22024": "unterminated_c_string", - "2200F": "zero_length_character_string", - "22P01": "floating_point_exception", - "22P02": "invalid_text_representation", - "22P03": "invalid_binary_representation", - "22P04": "bad_copy_file_format", - "22P05": "untranslatable_character", - "2200L": "not_an_xml_document", - "2200M": "invalid_xml_document", - "2200N": "invalid_xml_content", - "2200S": "invalid_xml_comment", - "2200T": "invalid_xml_processing_instruction", - // Class 23 - Integrity Constraint Violation - "23000": "integrity_constraint_violation", - "23001": "restrict_violation", - "23502": "not_null_violation", - "23503": "foreign_key_violation", - "23505": "unique_violation", - "23514": "check_violation", - "23P01": "exclusion_violation", - // Class 24 - Invalid Cursor State - "24000": "invalid_cursor_state", - // Class 25 - Invalid Transaction State - "25000": "invalid_transaction_state", - "25001": "active_sql_transaction", - "25002": "branch_transaction_already_active", - "25008": "held_cursor_requires_same_isolation_level", - "25003": "inappropriate_access_mode_for_branch_transaction", - "25004": "inappropriate_isolation_level_for_branch_transaction", - "25005": "no_active_sql_transaction_for_branch_transaction", - "25006": "read_only_sql_transaction", - "25007": "schema_and_data_statement_mixing_not_supported", - "25P01": "no_active_sql_transaction", - "25P02": "in_failed_sql_transaction", - // Class 26 - Invalid SQL Statement Name - "26000": "invalid_sql_statement_name", - // Class 27 - Triggered Data Change Violation - "27000": "triggered_data_change_violation", - // Class 28 - Invalid Authorization Specification - "28000": "invalid_authorization_specification", - "28P01": "invalid_password", - // Class 2B - Dependent Privilege Descriptors Still Exist - "2B000": "dependent_privilege_descriptors_still_exist", - "2BP01": "dependent_objects_still_exist", - // Class 2D - Invalid Transaction Termination - "2D000": "invalid_transaction_termination", - // Class 2F - SQL Routine Exception - "2F000": "sql_routine_exception", - "2F005": "function_executed_no_return_statement", - "2F002": "modifying_sql_data_not_permitted", - "2F003": "prohibited_sql_statement_attempted", - "2F004": "reading_sql_data_not_permitted", - // Class 34 - Invalid Cursor Name - "34000": "invalid_cursor_name", - // Class 38 - External Routine Exception - "38000": "external_routine_exception", - "38001": "containing_sql_not_permitted", - "38002": "modifying_sql_data_not_permitted", - "38003": "prohibited_sql_statement_attempted", - "38004": "reading_sql_data_not_permitted", - // Class 39 - External Routine Invocation Exception - "39000": "external_routine_invocation_exception", - "39001": "invalid_sqlstate_returned", - "39004": "null_value_not_allowed", - "39P01": "trigger_protocol_violated", - "39P02": "srf_protocol_violated", - // Class 3B - Savepoint Exception - "3B000": "savepoint_exception", - "3B001": "invalid_savepoint_specification", - // Class 3D - Invalid Catalog Name - "3D000": "invalid_catalog_name", - // Class 3F - Invalid Schema Name - "3F000": "invalid_schema_name", - // Class 40 - Transaction Rollback - "40000": "transaction_rollback", - "40002": "transaction_integrity_constraint_violation", - "40001": "serialization_failure", - "40003": "statement_completion_unknown", - "40P01": "deadlock_detected", - // Class 42 - Syntax Error or Access Rule Violation - "42000": "syntax_error_or_access_rule_violation", - "42601": "syntax_error", - "42501": "insufficient_privilege", - "42846": "cannot_coerce", - "42803": "grouping_error", - "42P20": "windowing_error", - "42P19": "invalid_recursion", - "42830": "invalid_foreign_key", - "42602": "invalid_name", - "42622": "name_too_long", - "42939": "reserved_name", - "42804": "datatype_mismatch", - "42P18": "indeterminate_datatype", - "42P21": "collation_mismatch", - "42P22": "indeterminate_collation", - "42809": "wrong_object_type", - "42703": "undefined_column", - "42883": "undefined_function", - "42P01": "undefined_table", - "42P02": "undefined_parameter", - "42704": "undefined_object", - "42701": "duplicate_column", - "42P03": "duplicate_cursor", - "42P04": "duplicate_database", - "42723": "duplicate_function", - "42P05": "duplicate_prepared_statement", - "42P06": "duplicate_schema", - "42P07": "duplicate_table", - "42712": "duplicate_alias", - "42710": "duplicate_object", - "42702": "ambiguous_column", - "42725": "ambiguous_function", - "42P08": "ambiguous_parameter", - "42P09": "ambiguous_alias", - "42P10": "invalid_column_reference", - "42611": "invalid_column_definition", - "42P11": "invalid_cursor_definition", - "42P12": "invalid_database_definition", - "42P13": "invalid_function_definition", - "42P14": "invalid_prepared_statement_definition", - "42P15": "invalid_schema_definition", - "42P16": "invalid_table_definition", - "42P17": "invalid_object_definition", - // Class 44 - WITH CHECK OPTION Violation - "44000": "with_check_option_violation", - // Class 53 - Insufficient Resources - "53000": "insufficient_resources", - "53100": "disk_full", - "53200": "out_of_memory", - "53300": "too_many_connections", - "53400": "configuration_limit_exceeded", - // Class 54 - Program Limit Exceeded - "54000": "program_limit_exceeded", - "54001": "statement_too_complex", - "54011": "too_many_columns", - "54023": "too_many_arguments", - // Class 55 - Object Not In Prerequisite State - "55000": "object_not_in_prerequisite_state", - "55006": "object_in_use", - "55P02": "cant_change_runtime_param", - "55P03": "lock_not_available", - // Class 57 - Operator Intervention - "57000": "operator_intervention", - "57014": "query_canceled", - "57P01": "admin_shutdown", - "57P02": "crash_shutdown", - "57P03": "cannot_connect_now", - "57P04": "database_dropped", - // Class 58 - System Error (errors external to PostgreSQL itself) - "58000": "system_error", - "58030": "io_error", - "58P01": "undefined_file", - "58P02": "duplicate_file", - // Class F0 - Configuration File Error - "F0000": "config_file_error", - "F0001": "lock_file_exists", - // Class HV - Foreign Data Wrapper Error (SQL/MED) - "HV000": "fdw_error", - "HV005": "fdw_column_name_not_found", - "HV002": "fdw_dynamic_parameter_value_needed", - "HV010": "fdw_function_sequence_error", - "HV021": "fdw_inconsistent_descriptor_information", - "HV024": "fdw_invalid_attribute_value", - "HV007": "fdw_invalid_column_name", - "HV008": "fdw_invalid_column_number", - "HV004": "fdw_invalid_data_type", - "HV006": "fdw_invalid_data_type_descriptors", - "HV091": "fdw_invalid_descriptor_field_identifier", - "HV00B": "fdw_invalid_handle", - "HV00C": "fdw_invalid_option_index", - "HV00D": "fdw_invalid_option_name", - "HV090": "fdw_invalid_string_length_or_buffer_length", - "HV00A": "fdw_invalid_string_format", - "HV009": "fdw_invalid_use_of_null_pointer", - "HV014": "fdw_too_many_handles", - "HV001": "fdw_out_of_memory", - "HV00P": "fdw_no_schemas", - "HV00J": "fdw_option_name_not_found", - "HV00K": "fdw_reply_handle", - "HV00Q": "fdw_schema_not_found", - "HV00R": "fdw_table_not_found", - "HV00L": "fdw_unable_to_create_execution", - "HV00M": "fdw_unable_to_create_reply", - "HV00N": "fdw_unable_to_establish_connection", - // Class P0 - PL/pgSQL Error - "P0000": "plpgsql_error", - "P0001": "raise_exception", - "P0002": "no_data_found", - "P0003": "too_many_rows", - // Class XX - Internal Error - "XX000": "internal_error", - "XX001": "data_corrupted", - "XX002": "index_corrupted", -} - -func parseError(r *readBuf) *Error { - err := new(Error) - for t := r.byte(); t != 0; t = r.byte() { - msg := r.string() - switch t { - case 'S': - err.Severity = msg - case 'C': - err.Code = ErrorCode(msg) - case 'M': - err.Message = msg - case 'D': - err.Detail = msg - case 'H': - err.Hint = msg - case 'P': - err.Position = msg - case 'p': - err.InternalPosition = msg - case 'q': - err.InternalQuery = msg - case 'W': - err.Where = msg - case 's': - err.Schema = msg - case 't': - err.Table = msg - case 'c': - err.Column = msg - case 'd': - err.DataTypeName = msg - case 'n': - err.Constraint = msg - case 'F': - err.File = msg - case 'L': - err.Line = msg - case 'R': - err.Routine = msg - } - } - return err -} - -// Fatal returns true if the Error Severity is fatal. -func (err *Error) Fatal() bool { - return err.Severity == Efatal -} - -// Get implements the legacy PGError interface. New code should use the fields -// of the Error struct directly. -func (err *Error) Get(k byte) (v string) { - switch k { - case 'S': - return err.Severity - case 'C': - return string(err.Code) - case 'M': - return err.Message - case 'D': - return err.Detail - case 'H': - return err.Hint - case 'P': - return err.Position - case 'p': - return err.InternalPosition - case 'q': - return err.InternalQuery - case 'W': - return err.Where - case 's': - return err.Schema - case 't': - return err.Table - case 'c': - return err.Column - case 'd': - return err.DataTypeName - case 'n': - return err.Constraint - case 'F': - return err.File - case 'L': - return err.Line - case 'R': - return err.Routine - } - return "" -} - -func (err Error) Error() string { - return "pq: " + err.Message -} - -// PGError is an interface used by previous versions of pq. It is provided -// only to support legacy code. New code should use the Error type. -type PGError interface { - Error() string - Fatal() bool - Get(k byte) (v string) -} - -func errorf(s string, args ...interface{}) { - panic(fmt.Errorf("pq: %s", fmt.Sprintf(s, args...))) -} - -// TODO(ainar-g) Rename to errorf after removing panics. -func fmterrorf(s string, args ...interface{}) error { - return fmt.Errorf("pq: %s", fmt.Sprintf(s, args...)) -} - -func errRecoverNoErrBadConn(err *error) { - e := recover() - if e == nil { - // Do nothing - return - } - var ok bool - *err, ok = e.(error) - if !ok { - *err = fmt.Errorf("pq: unexpected error: %#v", e) - } -} - -func (cn *conn) errRecover(err *error) { - e := recover() - switch v := e.(type) { - case nil: - // Do nothing - case runtime.Error: - cn.bad = true - panic(v) - case *Error: - if v.Fatal() { - *err = driver.ErrBadConn - } else { - *err = v - } - case *net.OpError: - cn.bad = true - *err = v - case error: - if v == io.EOF || v.(error).Error() == "remote error: handshake failure" { - *err = driver.ErrBadConn - } else { - *err = v - } - - default: - cn.bad = true - panic(fmt.Sprintf("unknown error: %#v", e)) - } - - // Any time we return ErrBadConn, we need to remember it since *Tx doesn't - // mark the connection bad in database/sql. - if *err == driver.ErrBadConn { - cn.bad = true - } -} diff --git a/vendor/github.com/lib/pq/go.mod b/vendor/github.com/lib/pq/go.mod deleted file mode 100644 index edf0b343..00000000 --- a/vendor/github.com/lib/pq/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/lib/pq diff --git a/vendor/github.com/lib/pq/notify.go b/vendor/github.com/lib/pq/notify.go deleted file mode 100644 index 850bb904..00000000 --- a/vendor/github.com/lib/pq/notify.go +++ /dev/null @@ -1,797 +0,0 @@ -package pq - -// Package pq is a pure Go Postgres driver for the database/sql package. -// This module contains support for Postgres LISTEN/NOTIFY. - -import ( - "errors" - "fmt" - "sync" - "sync/atomic" - "time" -) - -// Notification represents a single notification from the database. -type Notification struct { - // Process ID (PID) of the notifying postgres backend. - BePid int - // Name of the channel the notification was sent on. - Channel string - // Payload, or the empty string if unspecified. - Extra string -} - -func recvNotification(r *readBuf) *Notification { - bePid := r.int32() - channel := r.string() - extra := r.string() - - return &Notification{bePid, channel, extra} -} - -const ( - connStateIdle int32 = iota - connStateExpectResponse - connStateExpectReadyForQuery -) - -type message struct { - typ byte - err error -} - -var errListenerConnClosed = errors.New("pq: ListenerConn has been closed") - -// ListenerConn is a low-level interface for waiting for notifications. You -// should use Listener instead. -type ListenerConn struct { - // guards cn and err - connectionLock sync.Mutex - cn *conn - err error - - connState int32 - - // the sending goroutine will be holding this lock - senderLock sync.Mutex - - notificationChan chan<- *Notification - - replyChan chan message -} - -// NewListenerConn creates a new ListenerConn. Use NewListener instead. -func NewListenerConn(name string, notificationChan chan<- *Notification) (*ListenerConn, error) { - return newDialListenerConn(defaultDialer{}, name, notificationChan) -} - -func newDialListenerConn(d Dialer, name string, c chan<- *Notification) (*ListenerConn, error) { - cn, err := DialOpen(d, name) - if err != nil { - return nil, err - } - - l := &ListenerConn{ - cn: cn.(*conn), - notificationChan: c, - connState: connStateIdle, - replyChan: make(chan message, 2), - } - - go l.listenerConnMain() - - return l, nil -} - -// We can only allow one goroutine at a time to be running a query on the -// connection for various reasons, so the goroutine sending on the connection -// must be holding senderLock. -// -// Returns an error if an unrecoverable error has occurred and the ListenerConn -// should be abandoned. -func (l *ListenerConn) acquireSenderLock() error { - // we must acquire senderLock first to avoid deadlocks; see ExecSimpleQuery - l.senderLock.Lock() - - l.connectionLock.Lock() - err := l.err - l.connectionLock.Unlock() - if err != nil { - l.senderLock.Unlock() - return err - } - return nil -} - -func (l *ListenerConn) releaseSenderLock() { - l.senderLock.Unlock() -} - -// setState advances the protocol state to newState. Returns false if moving -// to that state from the current state is not allowed. -func (l *ListenerConn) setState(newState int32) bool { - var expectedState int32 - - switch newState { - case connStateIdle: - expectedState = connStateExpectReadyForQuery - case connStateExpectResponse: - expectedState = connStateIdle - case connStateExpectReadyForQuery: - expectedState = connStateExpectResponse - default: - panic(fmt.Sprintf("unexpected listenerConnState %d", newState)) - } - - return atomic.CompareAndSwapInt32(&l.connState, expectedState, newState) -} - -// Main logic is here: receive messages from the postgres backend, forward -// notifications and query replies and keep the internal state in sync with the -// protocol state. Returns when the connection has been lost, is about to go -// away or should be discarded because we couldn't agree on the state with the -// server backend. -func (l *ListenerConn) listenerConnLoop() (err error) { - defer errRecoverNoErrBadConn(&err) - - r := &readBuf{} - for { - t, err := l.cn.recvMessage(r) - if err != nil { - return err - } - - switch t { - case 'A': - // recvNotification copies all the data so we don't need to worry - // about the scratch buffer being overwritten. - l.notificationChan <- recvNotification(r) - - case 'T', 'D': - // only used by tests; ignore - - case 'E': - // We might receive an ErrorResponse even when not in a query; it - // is expected that the server will close the connection after - // that, but we should make sure that the error we display is the - // one from the stray ErrorResponse, not io.ErrUnexpectedEOF. - if !l.setState(connStateExpectReadyForQuery) { - return parseError(r) - } - l.replyChan <- message{t, parseError(r)} - - case 'C', 'I': - if !l.setState(connStateExpectReadyForQuery) { - // protocol out of sync - return fmt.Errorf("unexpected CommandComplete") - } - // ExecSimpleQuery doesn't need to know about this message - - case 'Z': - if !l.setState(connStateIdle) { - // protocol out of sync - return fmt.Errorf("unexpected ReadyForQuery") - } - l.replyChan <- message{t, nil} - - case 'N', 'S': - // ignore - default: - return fmt.Errorf("unexpected message %q from server in listenerConnLoop", t) - } - } -} - -// This is the main routine for the goroutine receiving on the database -// connection. Most of the main logic is in listenerConnLoop. -func (l *ListenerConn) listenerConnMain() { - err := l.listenerConnLoop() - - // listenerConnLoop terminated; we're done, but we still have to clean up. - // Make sure nobody tries to start any new queries by making sure the err - // pointer is set. It is important that we do not overwrite its value; a - // connection could be closed by either this goroutine or one sending on - // the connection -- whoever closes the connection is assumed to have the - // more meaningful error message (as the other one will probably get - // net.errClosed), so that goroutine sets the error we expose while the - // other error is discarded. If the connection is lost while two - // goroutines are operating on the socket, it probably doesn't matter which - // error we expose so we don't try to do anything more complex. - l.connectionLock.Lock() - if l.err == nil { - l.err = err - } - l.cn.Close() - l.connectionLock.Unlock() - - // There might be a query in-flight; make sure nobody's waiting for a - // response to it, since there's not going to be one. - close(l.replyChan) - - // let the listener know we're done - close(l.notificationChan) - - // this ListenerConn is done -} - -// Listen sends a LISTEN query to the server. See ExecSimpleQuery. -func (l *ListenerConn) Listen(channel string) (bool, error) { - return l.ExecSimpleQuery("LISTEN " + QuoteIdentifier(channel)) -} - -// Unlisten sends an UNLISTEN query to the server. See ExecSimpleQuery. -func (l *ListenerConn) Unlisten(channel string) (bool, error) { - return l.ExecSimpleQuery("UNLISTEN " + QuoteIdentifier(channel)) -} - -// UnlistenAll sends an `UNLISTEN *` query to the server. See ExecSimpleQuery. -func (l *ListenerConn) UnlistenAll() (bool, error) { - return l.ExecSimpleQuery("UNLISTEN *") -} - -// Ping the remote server to make sure it's alive. Non-nil error means the -// connection has failed and should be abandoned. -func (l *ListenerConn) Ping() error { - sent, err := l.ExecSimpleQuery("") - if !sent { - return err - } - if err != nil { - // shouldn't happen - panic(err) - } - return nil -} - -// Attempt to send a query on the connection. Returns an error if sending the -// query failed, and the caller should initiate closure of this connection. -// The caller must be holding senderLock (see acquireSenderLock and -// releaseSenderLock). -func (l *ListenerConn) sendSimpleQuery(q string) (err error) { - defer errRecoverNoErrBadConn(&err) - - // must set connection state before sending the query - if !l.setState(connStateExpectResponse) { - panic("two queries running at the same time") - } - - // Can't use l.cn.writeBuf here because it uses the scratch buffer which - // might get overwritten by listenerConnLoop. - b := &writeBuf{ - buf: []byte("Q\x00\x00\x00\x00"), - pos: 1, - } - b.string(q) - l.cn.send(b) - - return nil -} - -// ExecSimpleQuery executes a "simple query" (i.e. one with no bindable -// parameters) on the connection. The possible return values are: -// 1) "executed" is true; the query was executed to completion on the -// database server. If the query failed, err will be set to the error -// returned by the database, otherwise err will be nil. -// 2) If "executed" is false, the query could not be executed on the remote -// server. err will be non-nil. -// -// After a call to ExecSimpleQuery has returned an executed=false value, the -// connection has either been closed or will be closed shortly thereafter, and -// all subsequently executed queries will return an error. -func (l *ListenerConn) ExecSimpleQuery(q string) (executed bool, err error) { - if err = l.acquireSenderLock(); err != nil { - return false, err - } - defer l.releaseSenderLock() - - err = l.sendSimpleQuery(q) - if err != nil { - // We can't know what state the protocol is in, so we need to abandon - // this connection. - l.connectionLock.Lock() - // Set the error pointer if it hasn't been set already; see - // listenerConnMain. - if l.err == nil { - l.err = err - } - l.connectionLock.Unlock() - l.cn.c.Close() - return false, err - } - - // now we just wait for a reply.. - for { - m, ok := <-l.replyChan - if !ok { - // We lost the connection to server, don't bother waiting for a - // a response. err should have been set already. - l.connectionLock.Lock() - err := l.err - l.connectionLock.Unlock() - return false, err - } - switch m.typ { - case 'Z': - // sanity check - if m.err != nil { - panic("m.err != nil") - } - // done; err might or might not be set - return true, err - - case 'E': - // sanity check - if m.err == nil { - panic("m.err == nil") - } - // server responded with an error; ReadyForQuery to follow - err = m.err - - default: - return false, fmt.Errorf("unknown response for simple query: %q", m.typ) - } - } -} - -// Close closes the connection. -func (l *ListenerConn) Close() error { - l.connectionLock.Lock() - if l.err != nil { - l.connectionLock.Unlock() - return errListenerConnClosed - } - l.err = errListenerConnClosed - l.connectionLock.Unlock() - // We can't send anything on the connection without holding senderLock. - // Simply close the net.Conn to wake up everyone operating on it. - return l.cn.c.Close() -} - -// Err returns the reason the connection was closed. It is not safe to call -// this function until l.Notify has been closed. -func (l *ListenerConn) Err() error { - return l.err -} - -var errListenerClosed = errors.New("pq: Listener has been closed") - -// ErrChannelAlreadyOpen is returned from Listen when a channel is already -// open. -var ErrChannelAlreadyOpen = errors.New("pq: channel is already open") - -// ErrChannelNotOpen is returned from Unlisten when a channel is not open. -var ErrChannelNotOpen = errors.New("pq: channel is not open") - -// ListenerEventType is an enumeration of listener event types. -type ListenerEventType int - -const ( - // ListenerEventConnected is emitted only when the database connection - // has been initially initialized. The err argument of the callback - // will always be nil. - ListenerEventConnected ListenerEventType = iota - - // ListenerEventDisconnected is emitted after a database connection has - // been lost, either because of an error or because Close has been - // called. The err argument will be set to the reason the database - // connection was lost. - ListenerEventDisconnected - - // ListenerEventReconnected is emitted after a database connection has - // been re-established after connection loss. The err argument of the - // callback will always be nil. After this event has been emitted, a - // nil pq.Notification is sent on the Listener.Notify channel. - ListenerEventReconnected - - // ListenerEventConnectionAttemptFailed is emitted after a connection - // to the database was attempted, but failed. The err argument will be - // set to an error describing why the connection attempt did not - // succeed. - ListenerEventConnectionAttemptFailed -) - -// EventCallbackType is the event callback type. See also ListenerEventType -// constants' documentation. -type EventCallbackType func(event ListenerEventType, err error) - -// Listener provides an interface for listening to notifications from a -// PostgreSQL database. For general usage information, see section -// "Notifications". -// -// Listener can safely be used from concurrently running goroutines. -type Listener struct { - // Channel for receiving notifications from the database. In some cases a - // nil value will be sent. See section "Notifications" above. - Notify chan *Notification - - name string - minReconnectInterval time.Duration - maxReconnectInterval time.Duration - dialer Dialer - eventCallback EventCallbackType - - lock sync.Mutex - isClosed bool - reconnectCond *sync.Cond - cn *ListenerConn - connNotificationChan <-chan *Notification - channels map[string]struct{} -} - -// NewListener creates a new database connection dedicated to LISTEN / NOTIFY. -// -// name should be set to a connection string to be used to establish the -// database connection (see section "Connection String Parameters" above). -// -// minReconnectInterval controls the duration to wait before trying to -// re-establish the database connection after connection loss. After each -// consecutive failure this interval is doubled, until maxReconnectInterval is -// reached. Successfully completing the connection establishment procedure -// resets the interval back to minReconnectInterval. -// -// The last parameter eventCallback can be set to a function which will be -// called by the Listener when the state of the underlying database connection -// changes. This callback will be called by the goroutine which dispatches the -// notifications over the Notify channel, so you should try to avoid doing -// potentially time-consuming operations from the callback. -func NewListener(name string, - minReconnectInterval time.Duration, - maxReconnectInterval time.Duration, - eventCallback EventCallbackType) *Listener { - return NewDialListener(defaultDialer{}, name, minReconnectInterval, maxReconnectInterval, eventCallback) -} - -// NewDialListener is like NewListener but it takes a Dialer. -func NewDialListener(d Dialer, - name string, - minReconnectInterval time.Duration, - maxReconnectInterval time.Duration, - eventCallback EventCallbackType) *Listener { - - l := &Listener{ - name: name, - minReconnectInterval: minReconnectInterval, - maxReconnectInterval: maxReconnectInterval, - dialer: d, - eventCallback: eventCallback, - - channels: make(map[string]struct{}), - - Notify: make(chan *Notification, 32), - } - l.reconnectCond = sync.NewCond(&l.lock) - - go l.listenerMain() - - return l -} - -// NotificationChannel returns the notification channel for this listener. -// This is the same channel as Notify, and will not be recreated during the -// life time of the Listener. -func (l *Listener) NotificationChannel() <-chan *Notification { - return l.Notify -} - -// Listen starts listening for notifications on a channel. Calls to this -// function will block until an acknowledgement has been received from the -// server. Note that Listener automatically re-establishes the connection -// after connection loss, so this function may block indefinitely if the -// connection can not be re-established. -// -// Listen will only fail in three conditions: -// 1) The channel is already open. The returned error will be -// ErrChannelAlreadyOpen. -// 2) The query was executed on the remote server, but PostgreSQL returned an -// error message in response to the query. The returned error will be a -// pq.Error containing the information the server supplied. -// 3) Close is called on the Listener before the request could be completed. -// -// The channel name is case-sensitive. -func (l *Listener) Listen(channel string) error { - l.lock.Lock() - defer l.lock.Unlock() - - if l.isClosed { - return errListenerClosed - } - - // The server allows you to issue a LISTEN on a channel which is already - // open, but it seems useful to be able to detect this case to spot for - // mistakes in application logic. If the application genuinely does't - // care, it can check the exported error and ignore it. - _, exists := l.channels[channel] - if exists { - return ErrChannelAlreadyOpen - } - - if l.cn != nil { - // If gotResponse is true but error is set, the query was executed on - // the remote server, but resulted in an error. This should be - // relatively rare, so it's fine if we just pass the error to our - // caller. However, if gotResponse is false, we could not complete the - // query on the remote server and our underlying connection is about - // to go away, so we only add relname to l.channels, and wait for - // resync() to take care of the rest. - gotResponse, err := l.cn.Listen(channel) - if gotResponse && err != nil { - return err - } - } - - l.channels[channel] = struct{}{} - for l.cn == nil { - l.reconnectCond.Wait() - // we let go of the mutex for a while - if l.isClosed { - return errListenerClosed - } - } - - return nil -} - -// Unlisten removes a channel from the Listener's channel list. Returns -// ErrChannelNotOpen if the Listener is not listening on the specified channel. -// Returns immediately with no error if there is no connection. Note that you -// might still get notifications for this channel even after Unlisten has -// returned. -// -// The channel name is case-sensitive. -func (l *Listener) Unlisten(channel string) error { - l.lock.Lock() - defer l.lock.Unlock() - - if l.isClosed { - return errListenerClosed - } - - // Similarly to LISTEN, this is not an error in Postgres, but it seems - // useful to distinguish from the normal conditions. - _, exists := l.channels[channel] - if !exists { - return ErrChannelNotOpen - } - - if l.cn != nil { - // Similarly to Listen (see comment in that function), the caller - // should only be bothered with an error if it came from the backend as - // a response to our query. - gotResponse, err := l.cn.Unlisten(channel) - if gotResponse && err != nil { - return err - } - } - - // Don't bother waiting for resync if there's no connection. - delete(l.channels, channel) - return nil -} - -// UnlistenAll removes all channels from the Listener's channel list. Returns -// immediately with no error if there is no connection. Note that you might -// still get notifications for any of the deleted channels even after -// UnlistenAll has returned. -func (l *Listener) UnlistenAll() error { - l.lock.Lock() - defer l.lock.Unlock() - - if l.isClosed { - return errListenerClosed - } - - if l.cn != nil { - // Similarly to Listen (see comment in that function), the caller - // should only be bothered with an error if it came from the backend as - // a response to our query. - gotResponse, err := l.cn.UnlistenAll() - if gotResponse && err != nil { - return err - } - } - - // Don't bother waiting for resync if there's no connection. - l.channels = make(map[string]struct{}) - return nil -} - -// Ping the remote server to make sure it's alive. Non-nil return value means -// that there is no active connection. -func (l *Listener) Ping() error { - l.lock.Lock() - defer l.lock.Unlock() - - if l.isClosed { - return errListenerClosed - } - if l.cn == nil { - return errors.New("no connection") - } - - return l.cn.Ping() -} - -// Clean up after losing the server connection. Returns l.cn.Err(), which -// should have the reason the connection was lost. -func (l *Listener) disconnectCleanup() error { - l.lock.Lock() - defer l.lock.Unlock() - - // sanity check; can't look at Err() until the channel has been closed - select { - case _, ok := <-l.connNotificationChan: - if ok { - panic("connNotificationChan not closed") - } - default: - panic("connNotificationChan not closed") - } - - err := l.cn.Err() - l.cn.Close() - l.cn = nil - return err -} - -// Synchronize the list of channels we want to be listening on with the server -// after the connection has been established. -func (l *Listener) resync(cn *ListenerConn, notificationChan <-chan *Notification) error { - doneChan := make(chan error) - go func(notificationChan <-chan *Notification) { - for channel := range l.channels { - // If we got a response, return that error to our caller as it's - // going to be more descriptive than cn.Err(). - gotResponse, err := cn.Listen(channel) - if gotResponse && err != nil { - doneChan <- err - return - } - - // If we couldn't reach the server, wait for notificationChan to - // close and then return the error message from the connection, as - // per ListenerConn's interface. - if err != nil { - for range notificationChan { - } - doneChan <- cn.Err() - return - } - } - doneChan <- nil - }(notificationChan) - - // Ignore notifications while synchronization is going on to avoid - // deadlocks. We have to send a nil notification over Notify anyway as - // we can't possibly know which notifications (if any) were lost while - // the connection was down, so there's no reason to try and process - // these messages at all. - for { - select { - case _, ok := <-notificationChan: - if !ok { - notificationChan = nil - } - - case err := <-doneChan: - return err - } - } -} - -// caller should NOT be holding l.lock -func (l *Listener) closed() bool { - l.lock.Lock() - defer l.lock.Unlock() - - return l.isClosed -} - -func (l *Listener) connect() error { - notificationChan := make(chan *Notification, 32) - cn, err := newDialListenerConn(l.dialer, l.name, notificationChan) - if err != nil { - return err - } - - l.lock.Lock() - defer l.lock.Unlock() - - err = l.resync(cn, notificationChan) - if err != nil { - cn.Close() - return err - } - - l.cn = cn - l.connNotificationChan = notificationChan - l.reconnectCond.Broadcast() - - return nil -} - -// Close disconnects the Listener from the database and shuts it down. -// Subsequent calls to its methods will return an error. Close returns an -// error if the connection has already been closed. -func (l *Listener) Close() error { - l.lock.Lock() - defer l.lock.Unlock() - - if l.isClosed { - return errListenerClosed - } - - if l.cn != nil { - l.cn.Close() - } - l.isClosed = true - - // Unblock calls to Listen() - l.reconnectCond.Broadcast() - - return nil -} - -func (l *Listener) emitEvent(event ListenerEventType, err error) { - if l.eventCallback != nil { - l.eventCallback(event, err) - } -} - -// Main logic here: maintain a connection to the server when possible, wait -// for notifications and emit events. -func (l *Listener) listenerConnLoop() { - var nextReconnect time.Time - - reconnectInterval := l.minReconnectInterval - for { - for { - err := l.connect() - if err == nil { - break - } - - if l.closed() { - return - } - l.emitEvent(ListenerEventConnectionAttemptFailed, err) - - time.Sleep(reconnectInterval) - reconnectInterval *= 2 - if reconnectInterval > l.maxReconnectInterval { - reconnectInterval = l.maxReconnectInterval - } - } - - if nextReconnect.IsZero() { - l.emitEvent(ListenerEventConnected, nil) - } else { - l.emitEvent(ListenerEventReconnected, nil) - l.Notify <- nil - } - - reconnectInterval = l.minReconnectInterval - nextReconnect = time.Now().Add(reconnectInterval) - - for { - notification, ok := <-l.connNotificationChan - if !ok { - // lost connection, loop again - break - } - l.Notify <- notification - } - - err := l.disconnectCleanup() - if l.closed() { - return - } - l.emitEvent(ListenerEventDisconnected, err) - - time.Sleep(time.Until(nextReconnect)) - } -} - -func (l *Listener) listenerMain() { - l.listenerConnLoop() - close(l.Notify) -} diff --git a/vendor/github.com/lib/pq/oid/doc.go b/vendor/github.com/lib/pq/oid/doc.go deleted file mode 100644 index caaede24..00000000 --- a/vendor/github.com/lib/pq/oid/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Package oid contains OID constants -// as defined by the Postgres server. -package oid - -// Oid is a Postgres Object ID. -type Oid uint32 diff --git a/vendor/github.com/lib/pq/oid/types.go b/vendor/github.com/lib/pq/oid/types.go deleted file mode 100644 index ecc84c2c..00000000 --- a/vendor/github.com/lib/pq/oid/types.go +++ /dev/null @@ -1,343 +0,0 @@ -// Code generated by gen.go. DO NOT EDIT. - -package oid - -const ( - T_bool Oid = 16 - T_bytea Oid = 17 - T_char Oid = 18 - T_name Oid = 19 - T_int8 Oid = 20 - T_int2 Oid = 21 - T_int2vector Oid = 22 - T_int4 Oid = 23 - T_regproc Oid = 24 - T_text Oid = 25 - T_oid Oid = 26 - T_tid Oid = 27 - T_xid Oid = 28 - T_cid Oid = 29 - T_oidvector Oid = 30 - T_pg_ddl_command Oid = 32 - T_pg_type Oid = 71 - T_pg_attribute Oid = 75 - T_pg_proc Oid = 81 - T_pg_class Oid = 83 - T_json Oid = 114 - T_xml Oid = 142 - T__xml Oid = 143 - T_pg_node_tree Oid = 194 - T__json Oid = 199 - T_smgr Oid = 210 - T_index_am_handler Oid = 325 - T_point Oid = 600 - T_lseg Oid = 601 - T_path Oid = 602 - T_box Oid = 603 - T_polygon Oid = 604 - T_line Oid = 628 - T__line Oid = 629 - T_cidr Oid = 650 - T__cidr Oid = 651 - T_float4 Oid = 700 - T_float8 Oid = 701 - T_abstime Oid = 702 - T_reltime Oid = 703 - T_tinterval Oid = 704 - T_unknown Oid = 705 - T_circle Oid = 718 - T__circle Oid = 719 - T_money Oid = 790 - T__money Oid = 791 - T_macaddr Oid = 829 - T_inet Oid = 869 - T__bool Oid = 1000 - T__bytea Oid = 1001 - T__char Oid = 1002 - T__name Oid = 1003 - T__int2 Oid = 1005 - T__int2vector Oid = 1006 - T__int4 Oid = 1007 - T__regproc Oid = 1008 - T__text Oid = 1009 - T__tid Oid = 1010 - T__xid Oid = 1011 - T__cid Oid = 1012 - T__oidvector Oid = 1013 - T__bpchar Oid = 1014 - T__varchar Oid = 1015 - T__int8 Oid = 1016 - T__point Oid = 1017 - T__lseg Oid = 1018 - T__path Oid = 1019 - T__box Oid = 1020 - T__float4 Oid = 1021 - T__float8 Oid = 1022 - T__abstime Oid = 1023 - T__reltime Oid = 1024 - T__tinterval Oid = 1025 - T__polygon Oid = 1027 - T__oid Oid = 1028 - T_aclitem Oid = 1033 - T__aclitem Oid = 1034 - T__macaddr Oid = 1040 - T__inet Oid = 1041 - T_bpchar Oid = 1042 - T_varchar Oid = 1043 - T_date Oid = 1082 - T_time Oid = 1083 - T_timestamp Oid = 1114 - T__timestamp Oid = 1115 - T__date Oid = 1182 - T__time Oid = 1183 - T_timestamptz Oid = 1184 - T__timestamptz Oid = 1185 - T_interval Oid = 1186 - T__interval Oid = 1187 - T__numeric Oid = 1231 - T_pg_database Oid = 1248 - T__cstring Oid = 1263 - T_timetz Oid = 1266 - T__timetz Oid = 1270 - T_bit Oid = 1560 - T__bit Oid = 1561 - T_varbit Oid = 1562 - T__varbit Oid = 1563 - T_numeric Oid = 1700 - T_refcursor Oid = 1790 - T__refcursor Oid = 2201 - T_regprocedure Oid = 2202 - T_regoper Oid = 2203 - T_regoperator Oid = 2204 - T_regclass Oid = 2205 - T_regtype Oid = 2206 - T__regprocedure Oid = 2207 - T__regoper Oid = 2208 - T__regoperator Oid = 2209 - T__regclass Oid = 2210 - T__regtype Oid = 2211 - T_record Oid = 2249 - T_cstring Oid = 2275 - T_any Oid = 2276 - T_anyarray Oid = 2277 - T_void Oid = 2278 - T_trigger Oid = 2279 - T_language_handler Oid = 2280 - T_internal Oid = 2281 - T_opaque Oid = 2282 - T_anyelement Oid = 2283 - T__record Oid = 2287 - T_anynonarray Oid = 2776 - T_pg_authid Oid = 2842 - T_pg_auth_members Oid = 2843 - T__txid_snapshot Oid = 2949 - T_uuid Oid = 2950 - T__uuid Oid = 2951 - T_txid_snapshot Oid = 2970 - T_fdw_handler Oid = 3115 - T_pg_lsn Oid = 3220 - T__pg_lsn Oid = 3221 - T_tsm_handler Oid = 3310 - T_anyenum Oid = 3500 - T_tsvector Oid = 3614 - T_tsquery Oid = 3615 - T_gtsvector Oid = 3642 - T__tsvector Oid = 3643 - T__gtsvector Oid = 3644 - T__tsquery Oid = 3645 - T_regconfig Oid = 3734 - T__regconfig Oid = 3735 - T_regdictionary Oid = 3769 - T__regdictionary Oid = 3770 - T_jsonb Oid = 3802 - T__jsonb Oid = 3807 - T_anyrange Oid = 3831 - T_event_trigger Oid = 3838 - T_int4range Oid = 3904 - T__int4range Oid = 3905 - T_numrange Oid = 3906 - T__numrange Oid = 3907 - T_tsrange Oid = 3908 - T__tsrange Oid = 3909 - T_tstzrange Oid = 3910 - T__tstzrange Oid = 3911 - T_daterange Oid = 3912 - T__daterange Oid = 3913 - T_int8range Oid = 3926 - T__int8range Oid = 3927 - T_pg_shseclabel Oid = 4066 - T_regnamespace Oid = 4089 - T__regnamespace Oid = 4090 - T_regrole Oid = 4096 - T__regrole Oid = 4097 -) - -var TypeName = map[Oid]string{ - T_bool: "BOOL", - T_bytea: "BYTEA", - T_char: "CHAR", - T_name: "NAME", - T_int8: "INT8", - T_int2: "INT2", - T_int2vector: "INT2VECTOR", - T_int4: "INT4", - T_regproc: "REGPROC", - T_text: "TEXT", - T_oid: "OID", - T_tid: "TID", - T_xid: "XID", - T_cid: "CID", - T_oidvector: "OIDVECTOR", - T_pg_ddl_command: "PG_DDL_COMMAND", - T_pg_type: "PG_TYPE", - T_pg_attribute: "PG_ATTRIBUTE", - T_pg_proc: "PG_PROC", - T_pg_class: "PG_CLASS", - T_json: "JSON", - T_xml: "XML", - T__xml: "_XML", - T_pg_node_tree: "PG_NODE_TREE", - T__json: "_JSON", - T_smgr: "SMGR", - T_index_am_handler: "INDEX_AM_HANDLER", - T_point: "POINT", - T_lseg: "LSEG", - T_path: "PATH", - T_box: "BOX", - T_polygon: "POLYGON", - T_line: "LINE", - T__line: "_LINE", - T_cidr: "CIDR", - T__cidr: "_CIDR", - T_float4: "FLOAT4", - T_float8: "FLOAT8", - T_abstime: "ABSTIME", - T_reltime: "RELTIME", - T_tinterval: "TINTERVAL", - T_unknown: "UNKNOWN", - T_circle: "CIRCLE", - T__circle: "_CIRCLE", - T_money: "MONEY", - T__money: "_MONEY", - T_macaddr: "MACADDR", - T_inet: "INET", - T__bool: "_BOOL", - T__bytea: "_BYTEA", - T__char: "_CHAR", - T__name: "_NAME", - T__int2: "_INT2", - T__int2vector: "_INT2VECTOR", - T__int4: "_INT4", - T__regproc: "_REGPROC", - T__text: "_TEXT", - T__tid: "_TID", - T__xid: "_XID", - T__cid: "_CID", - T__oidvector: "_OIDVECTOR", - T__bpchar: "_BPCHAR", - T__varchar: "_VARCHAR", - T__int8: "_INT8", - T__point: "_POINT", - T__lseg: "_LSEG", - T__path: "_PATH", - T__box: "_BOX", - T__float4: "_FLOAT4", - T__float8: "_FLOAT8", - T__abstime: "_ABSTIME", - T__reltime: "_RELTIME", - T__tinterval: "_TINTERVAL", - T__polygon: "_POLYGON", - T__oid: "_OID", - T_aclitem: "ACLITEM", - T__aclitem: "_ACLITEM", - T__macaddr: "_MACADDR", - T__inet: "_INET", - T_bpchar: "BPCHAR", - T_varchar: "VARCHAR", - T_date: "DATE", - T_time: "TIME", - T_timestamp: "TIMESTAMP", - T__timestamp: "_TIMESTAMP", - T__date: "_DATE", - T__time: "_TIME", - T_timestamptz: "TIMESTAMPTZ", - T__timestamptz: "_TIMESTAMPTZ", - T_interval: "INTERVAL", - T__interval: "_INTERVAL", - T__numeric: "_NUMERIC", - T_pg_database: "PG_DATABASE", - T__cstring: "_CSTRING", - T_timetz: "TIMETZ", - T__timetz: "_TIMETZ", - T_bit: "BIT", - T__bit: "_BIT", - T_varbit: "VARBIT", - T__varbit: "_VARBIT", - T_numeric: "NUMERIC", - T_refcursor: "REFCURSOR", - T__refcursor: "_REFCURSOR", - T_regprocedure: "REGPROCEDURE", - T_regoper: "REGOPER", - T_regoperator: "REGOPERATOR", - T_regclass: "REGCLASS", - T_regtype: "REGTYPE", - T__regprocedure: "_REGPROCEDURE", - T__regoper: "_REGOPER", - T__regoperator: "_REGOPERATOR", - T__regclass: "_REGCLASS", - T__regtype: "_REGTYPE", - T_record: "RECORD", - T_cstring: "CSTRING", - T_any: "ANY", - T_anyarray: "ANYARRAY", - T_void: "VOID", - T_trigger: "TRIGGER", - T_language_handler: "LANGUAGE_HANDLER", - T_internal: "INTERNAL", - T_opaque: "OPAQUE", - T_anyelement: "ANYELEMENT", - T__record: "_RECORD", - T_anynonarray: "ANYNONARRAY", - T_pg_authid: "PG_AUTHID", - T_pg_auth_members: "PG_AUTH_MEMBERS", - T__txid_snapshot: "_TXID_SNAPSHOT", - T_uuid: "UUID", - T__uuid: "_UUID", - T_txid_snapshot: "TXID_SNAPSHOT", - T_fdw_handler: "FDW_HANDLER", - T_pg_lsn: "PG_LSN", - T__pg_lsn: "_PG_LSN", - T_tsm_handler: "TSM_HANDLER", - T_anyenum: "ANYENUM", - T_tsvector: "TSVECTOR", - T_tsquery: "TSQUERY", - T_gtsvector: "GTSVECTOR", - T__tsvector: "_TSVECTOR", - T__gtsvector: "_GTSVECTOR", - T__tsquery: "_TSQUERY", - T_regconfig: "REGCONFIG", - T__regconfig: "_REGCONFIG", - T_regdictionary: "REGDICTIONARY", - T__regdictionary: "_REGDICTIONARY", - T_jsonb: "JSONB", - T__jsonb: "_JSONB", - T_anyrange: "ANYRANGE", - T_event_trigger: "EVENT_TRIGGER", - T_int4range: "INT4RANGE", - T__int4range: "_INT4RANGE", - T_numrange: "NUMRANGE", - T__numrange: "_NUMRANGE", - T_tsrange: "TSRANGE", - T__tsrange: "_TSRANGE", - T_tstzrange: "TSTZRANGE", - T__tstzrange: "_TSTZRANGE", - T_daterange: "DATERANGE", - T__daterange: "_DATERANGE", - T_int8range: "INT8RANGE", - T__int8range: "_INT8RANGE", - T_pg_shseclabel: "PG_SHSECLABEL", - T_regnamespace: "REGNAMESPACE", - T__regnamespace: "_REGNAMESPACE", - T_regrole: "REGROLE", - T__regrole: "_REGROLE", -} diff --git a/vendor/github.com/lib/pq/rows.go b/vendor/github.com/lib/pq/rows.go deleted file mode 100644 index c6aa5b9a..00000000 --- a/vendor/github.com/lib/pq/rows.go +++ /dev/null @@ -1,93 +0,0 @@ -package pq - -import ( - "math" - "reflect" - "time" - - "github.com/lib/pq/oid" -) - -const headerSize = 4 - -type fieldDesc struct { - // The object ID of the data type. - OID oid.Oid - // The data type size (see pg_type.typlen). - // Note that negative values denote variable-width types. - Len int - // The type modifier (see pg_attribute.atttypmod). - // The meaning of the modifier is type-specific. - Mod int -} - -func (fd fieldDesc) Type() reflect.Type { - switch fd.OID { - case oid.T_int8: - return reflect.TypeOf(int64(0)) - case oid.T_int4: - return reflect.TypeOf(int32(0)) - case oid.T_int2: - return reflect.TypeOf(int16(0)) - case oid.T_varchar, oid.T_text: - return reflect.TypeOf("") - case oid.T_bool: - return reflect.TypeOf(false) - case oid.T_date, oid.T_time, oid.T_timetz, oid.T_timestamp, oid.T_timestamptz: - return reflect.TypeOf(time.Time{}) - case oid.T_bytea: - return reflect.TypeOf([]byte(nil)) - default: - return reflect.TypeOf(new(interface{})).Elem() - } -} - -func (fd fieldDesc) Name() string { - return oid.TypeName[fd.OID] -} - -func (fd fieldDesc) Length() (length int64, ok bool) { - switch fd.OID { - case oid.T_text, oid.T_bytea: - return math.MaxInt64, true - case oid.T_varchar, oid.T_bpchar: - return int64(fd.Mod - headerSize), true - default: - return 0, false - } -} - -func (fd fieldDesc) PrecisionScale() (precision, scale int64, ok bool) { - switch fd.OID { - case oid.T_numeric, oid.T__numeric: - mod := fd.Mod - headerSize - precision = int64((mod >> 16) & 0xffff) - scale = int64(mod & 0xffff) - return precision, scale, true - default: - return 0, 0, false - } -} - -// ColumnTypeScanType returns the value type that can be used to scan types into. -func (rs *rows) ColumnTypeScanType(index int) reflect.Type { - return rs.colTyps[index].Type() -} - -// ColumnTypeDatabaseTypeName return the database system type name. -func (rs *rows) ColumnTypeDatabaseTypeName(index int) string { - return rs.colTyps[index].Name() -} - -// ColumnTypeLength returns the length of the column type if the column is a -// variable length type. If the column is not a variable length type ok -// should return false. -func (rs *rows) ColumnTypeLength(index int) (length int64, ok bool) { - return rs.colTyps[index].Length() -} - -// ColumnTypePrecisionScale should return the precision and scale for decimal -// types. If not applicable, ok should be false. -func (rs *rows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) { - return rs.colTyps[index].PrecisionScale() -} diff --git a/vendor/github.com/lib/pq/scram/scram.go b/vendor/github.com/lib/pq/scram/scram.go deleted file mode 100644 index 477216b6..00000000 --- a/vendor/github.com/lib/pq/scram/scram.go +++ /dev/null @@ -1,264 +0,0 @@ -// Copyright (c) 2014 - Gustavo Niemeyer -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Package scram implements a SCRAM-{SHA-1,etc} client per RFC5802. -// -// http://tools.ietf.org/html/rfc5802 -// -package scram - -import ( - "bytes" - "crypto/hmac" - "crypto/rand" - "encoding/base64" - "fmt" - "hash" - "strconv" - "strings" -) - -// Client implements a SCRAM-* client (SCRAM-SHA-1, SCRAM-SHA-256, etc). -// -// A Client may be used within a SASL conversation with logic resembling: -// -// var in []byte -// var client = scram.NewClient(sha1.New, user, pass) -// for client.Step(in) { -// out := client.Out() -// // send out to server -// in := serverOut -// } -// if client.Err() != nil { -// // auth failed -// } -// -type Client struct { - newHash func() hash.Hash - - user string - pass string - step int - out bytes.Buffer - err error - - clientNonce []byte - serverNonce []byte - saltedPass []byte - authMsg bytes.Buffer -} - -// NewClient returns a new SCRAM-* client with the provided hash algorithm. -// -// For SCRAM-SHA-256, for example, use: -// -// client := scram.NewClient(sha256.New, user, pass) -// -func NewClient(newHash func() hash.Hash, user, pass string) *Client { - c := &Client{ - newHash: newHash, - user: user, - pass: pass, - } - c.out.Grow(256) - c.authMsg.Grow(256) - return c -} - -// Out returns the data to be sent to the server in the current step. -func (c *Client) Out() []byte { - if c.out.Len() == 0 { - return nil - } - return c.out.Bytes() -} - -// Err returns the error that occurred, or nil if there were no errors. -func (c *Client) Err() error { - return c.err -} - -// SetNonce sets the client nonce to the provided value. -// If not set, the nonce is generated automatically out of crypto/rand on the first step. -func (c *Client) SetNonce(nonce []byte) { - c.clientNonce = nonce -} - -var escaper = strings.NewReplacer("=", "=3D", ",", "=2C") - -// Step processes the incoming data from the server and makes the -// next round of data for the server available via Client.Out. -// Step returns false if there are no errors and more data is -// still expected. -func (c *Client) Step(in []byte) bool { - c.out.Reset() - if c.step > 2 || c.err != nil { - return false - } - c.step++ - switch c.step { - case 1: - c.err = c.step1(in) - case 2: - c.err = c.step2(in) - case 3: - c.err = c.step3(in) - } - return c.step > 2 || c.err != nil -} - -func (c *Client) step1(in []byte) error { - if len(c.clientNonce) == 0 { - const nonceLen = 16 - buf := make([]byte, nonceLen+b64.EncodedLen(nonceLen)) - if _, err := rand.Read(buf[:nonceLen]); err != nil { - return fmt.Errorf("cannot read random SCRAM-SHA-256 nonce from operating system: %v", err) - } - c.clientNonce = buf[nonceLen:] - b64.Encode(c.clientNonce, buf[:nonceLen]) - } - c.authMsg.WriteString("n=") - escaper.WriteString(&c.authMsg, c.user) - c.authMsg.WriteString(",r=") - c.authMsg.Write(c.clientNonce) - - c.out.WriteString("n,,") - c.out.Write(c.authMsg.Bytes()) - return nil -} - -var b64 = base64.StdEncoding - -func (c *Client) step2(in []byte) error { - c.authMsg.WriteByte(',') - c.authMsg.Write(in) - - fields := bytes.Split(in, []byte(",")) - if len(fields) != 3 { - return fmt.Errorf("expected 3 fields in first SCRAM-SHA-256 server message, got %d: %q", len(fields), in) - } - if !bytes.HasPrefix(fields[0], []byte("r=")) || len(fields[0]) < 2 { - return fmt.Errorf("server sent an invalid SCRAM-SHA-256 nonce: %q", fields[0]) - } - if !bytes.HasPrefix(fields[1], []byte("s=")) || len(fields[1]) < 6 { - return fmt.Errorf("server sent an invalid SCRAM-SHA-256 salt: %q", fields[1]) - } - if !bytes.HasPrefix(fields[2], []byte("i=")) || len(fields[2]) < 6 { - return fmt.Errorf("server sent an invalid SCRAM-SHA-256 iteration count: %q", fields[2]) - } - - c.serverNonce = fields[0][2:] - if !bytes.HasPrefix(c.serverNonce, c.clientNonce) { - return fmt.Errorf("server SCRAM-SHA-256 nonce is not prefixed by client nonce: got %q, want %q+\"...\"", c.serverNonce, c.clientNonce) - } - - salt := make([]byte, b64.DecodedLen(len(fields[1][2:]))) - n, err := b64.Decode(salt, fields[1][2:]) - if err != nil { - return fmt.Errorf("cannot decode SCRAM-SHA-256 salt sent by server: %q", fields[1]) - } - salt = salt[:n] - iterCount, err := strconv.Atoi(string(fields[2][2:])) - if err != nil { - return fmt.Errorf("server sent an invalid SCRAM-SHA-256 iteration count: %q", fields[2]) - } - c.saltPassword(salt, iterCount) - - c.authMsg.WriteString(",c=biws,r=") - c.authMsg.Write(c.serverNonce) - - c.out.WriteString("c=biws,r=") - c.out.Write(c.serverNonce) - c.out.WriteString(",p=") - c.out.Write(c.clientProof()) - return nil -} - -func (c *Client) step3(in []byte) error { - var isv, ise bool - var fields = bytes.Split(in, []byte(",")) - if len(fields) == 1 { - isv = bytes.HasPrefix(fields[0], []byte("v=")) - ise = bytes.HasPrefix(fields[0], []byte("e=")) - } - if ise { - return fmt.Errorf("SCRAM-SHA-256 authentication error: %s", fields[0][2:]) - } else if !isv { - return fmt.Errorf("unsupported SCRAM-SHA-256 final message from server: %q", in) - } - if !bytes.Equal(c.serverSignature(), fields[0][2:]) { - return fmt.Errorf("cannot authenticate SCRAM-SHA-256 server signature: %q", fields[0][2:]) - } - return nil -} - -func (c *Client) saltPassword(salt []byte, iterCount int) { - mac := hmac.New(c.newHash, []byte(c.pass)) - mac.Write(salt) - mac.Write([]byte{0, 0, 0, 1}) - ui := mac.Sum(nil) - hi := make([]byte, len(ui)) - copy(hi, ui) - for i := 1; i < iterCount; i++ { - mac.Reset() - mac.Write(ui) - mac.Sum(ui[:0]) - for j, b := range ui { - hi[j] ^= b - } - } - c.saltedPass = hi -} - -func (c *Client) clientProof() []byte { - mac := hmac.New(c.newHash, c.saltedPass) - mac.Write([]byte("Client Key")) - clientKey := mac.Sum(nil) - hash := c.newHash() - hash.Write(clientKey) - storedKey := hash.Sum(nil) - mac = hmac.New(c.newHash, storedKey) - mac.Write(c.authMsg.Bytes()) - clientProof := mac.Sum(nil) - for i, b := range clientKey { - clientProof[i] ^= b - } - clientProof64 := make([]byte, b64.EncodedLen(len(clientProof))) - b64.Encode(clientProof64, clientProof) - return clientProof64 -} - -func (c *Client) serverSignature() []byte { - mac := hmac.New(c.newHash, c.saltedPass) - mac.Write([]byte("Server Key")) - serverKey := mac.Sum(nil) - - mac = hmac.New(c.newHash, serverKey) - mac.Write(c.authMsg.Bytes()) - serverSignature := mac.Sum(nil) - - encoded := make([]byte, b64.EncodedLen(len(serverSignature))) - b64.Encode(encoded, serverSignature) - return encoded -} diff --git a/vendor/github.com/lib/pq/ssl.go b/vendor/github.com/lib/pq/ssl.go deleted file mode 100644 index d9020845..00000000 --- a/vendor/github.com/lib/pq/ssl.go +++ /dev/null @@ -1,175 +0,0 @@ -package pq - -import ( - "crypto/tls" - "crypto/x509" - "io/ioutil" - "net" - "os" - "os/user" - "path/filepath" -) - -// ssl generates a function to upgrade a net.Conn based on the "sslmode" and -// related settings. The function is nil when no upgrade should take place. -func ssl(o values) (func(net.Conn) (net.Conn, error), error) { - verifyCaOnly := false - tlsConf := tls.Config{} - switch mode := o["sslmode"]; mode { - // "require" is the default. - case "", "require": - // We must skip TLS's own verification since it requires full - // verification since Go 1.3. - tlsConf.InsecureSkipVerify = true - - // From http://www.postgresql.org/docs/current/static/libpq-ssl.html: - // - // Note: For backwards compatibility with earlier versions of - // PostgreSQL, if a root CA file exists, the behavior of - // sslmode=require will be the same as that of verify-ca, meaning the - // server certificate is validated against the CA. Relying on this - // behavior is discouraged, and applications that need certificate - // validation should always use verify-ca or verify-full. - if sslrootcert, ok := o["sslrootcert"]; ok { - if _, err := os.Stat(sslrootcert); err == nil { - verifyCaOnly = true - } else { - delete(o, "sslrootcert") - } - } - case "verify-ca": - // We must skip TLS's own verification since it requires full - // verification since Go 1.3. - tlsConf.InsecureSkipVerify = true - verifyCaOnly = true - case "verify-full": - tlsConf.ServerName = o["host"] - case "disable": - return nil, nil - default: - return nil, fmterrorf(`unsupported sslmode %q; only "require" (default), "verify-full", "verify-ca", and "disable" supported`, mode) - } - - err := sslClientCertificates(&tlsConf, o) - if err != nil { - return nil, err - } - err = sslCertificateAuthority(&tlsConf, o) - if err != nil { - return nil, err - } - - // Accept renegotiation requests initiated by the backend. - // - // Renegotiation was deprecated then removed from PostgreSQL 9.5, but - // the default configuration of older versions has it enabled. Redshift - // also initiates renegotiations and cannot be reconfigured. - tlsConf.Renegotiation = tls.RenegotiateFreelyAsClient - - return func(conn net.Conn) (net.Conn, error) { - client := tls.Client(conn, &tlsConf) - if verifyCaOnly { - err := sslVerifyCertificateAuthority(client, &tlsConf) - if err != nil { - return nil, err - } - } - return client, nil - }, nil -} - -// sslClientCertificates adds the certificate specified in the "sslcert" and -// "sslkey" settings, or if they aren't set, from the .postgresql directory -// in the user's home directory. The configured files must exist and have -// the correct permissions. -func sslClientCertificates(tlsConf *tls.Config, o values) error { - // user.Current() might fail when cross-compiling. We have to ignore the - // error and continue without home directory defaults, since we wouldn't - // know from where to load them. - user, _ := user.Current() - - // In libpq, the client certificate is only loaded if the setting is not blank. - // - // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1036-L1037 - sslcert := o["sslcert"] - if len(sslcert) == 0 && user != nil { - sslcert = filepath.Join(user.HomeDir, ".postgresql", "postgresql.crt") - } - // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1045 - if len(sslcert) == 0 { - return nil - } - // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1050:L1054 - if _, err := os.Stat(sslcert); os.IsNotExist(err) { - return nil - } else if err != nil { - return err - } - - // In libpq, the ssl key is only loaded if the setting is not blank. - // - // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1123-L1222 - sslkey := o["sslkey"] - if len(sslkey) == 0 && user != nil { - sslkey = filepath.Join(user.HomeDir, ".postgresql", "postgresql.key") - } - - if len(sslkey) > 0 { - if err := sslKeyPermissions(sslkey); err != nil { - return err - } - } - - cert, err := tls.LoadX509KeyPair(sslcert, sslkey) - if err != nil { - return err - } - - tlsConf.Certificates = []tls.Certificate{cert} - return nil -} - -// sslCertificateAuthority adds the RootCA specified in the "sslrootcert" setting. -func sslCertificateAuthority(tlsConf *tls.Config, o values) error { - // In libpq, the root certificate is only loaded if the setting is not blank. - // - // https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L950-L951 - if sslrootcert := o["sslrootcert"]; len(sslrootcert) > 0 { - tlsConf.RootCAs = x509.NewCertPool() - - cert, err := ioutil.ReadFile(sslrootcert) - if err != nil { - return err - } - - if !tlsConf.RootCAs.AppendCertsFromPEM(cert) { - return fmterrorf("couldn't parse pem in sslrootcert") - } - } - - return nil -} - -// sslVerifyCertificateAuthority carries out a TLS handshake to the server and -// verifies the presented certificate against the CA, i.e. the one specified in -// sslrootcert or the system CA if sslrootcert was not specified. -func sslVerifyCertificateAuthority(client *tls.Conn, tlsConf *tls.Config) error { - err := client.Handshake() - if err != nil { - return err - } - certs := client.ConnectionState().PeerCertificates - opts := x509.VerifyOptions{ - DNSName: client.ConnectionState().ServerName, - Intermediates: x509.NewCertPool(), - Roots: tlsConf.RootCAs, - } - for i, cert := range certs { - if i == 0 { - continue - } - opts.Intermediates.AddCert(cert) - } - _, err = certs[0].Verify(opts) - return err -} diff --git a/vendor/github.com/lib/pq/ssl_permissions.go b/vendor/github.com/lib/pq/ssl_permissions.go deleted file mode 100644 index 3b7c3a2a..00000000 --- a/vendor/github.com/lib/pq/ssl_permissions.go +++ /dev/null @@ -1,20 +0,0 @@ -// +build !windows - -package pq - -import "os" - -// sslKeyPermissions checks the permissions on user-supplied ssl key files. -// The key file should have very little access. -// -// libpq does not check key file permissions on Windows. -func sslKeyPermissions(sslkey string) error { - info, err := os.Stat(sslkey) - if err != nil { - return err - } - if info.Mode().Perm()&0077 != 0 { - return ErrSSLKeyHasWorldPermissions - } - return nil -} diff --git a/vendor/github.com/lib/pq/ssl_windows.go b/vendor/github.com/lib/pq/ssl_windows.go deleted file mode 100644 index 5d2c763c..00000000 --- a/vendor/github.com/lib/pq/ssl_windows.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build windows - -package pq - -// sslKeyPermissions checks the permissions on user-supplied ssl key files. -// The key file should have very little access. -// -// libpq does not check key file permissions on Windows. -func sslKeyPermissions(string) error { return nil } diff --git a/vendor/github.com/lib/pq/url.go b/vendor/github.com/lib/pq/url.go deleted file mode 100644 index f4d8a7c2..00000000 --- a/vendor/github.com/lib/pq/url.go +++ /dev/null @@ -1,76 +0,0 @@ -package pq - -import ( - "fmt" - "net" - nurl "net/url" - "sort" - "strings" -) - -// ParseURL no longer needs to be used by clients of this library since supplying a URL as a -// connection string to sql.Open() is now supported: -// -// sql.Open("postgres", "postgres://bob:secret@1.2.3.4:5432/mydb?sslmode=verify-full") -// -// It remains exported here for backwards-compatibility. -// -// ParseURL converts a url to a connection string for driver.Open. -// Example: -// -// "postgres://bob:secret@1.2.3.4:5432/mydb?sslmode=verify-full" -// -// converts to: -// -// "user=bob password=secret host=1.2.3.4 port=5432 dbname=mydb sslmode=verify-full" -// -// A minimal example: -// -// "postgres://" -// -// This will be blank, causing driver.Open to use all of the defaults -func ParseURL(url string) (string, error) { - u, err := nurl.Parse(url) - if err != nil { - return "", err - } - - if u.Scheme != "postgres" && u.Scheme != "postgresql" { - return "", fmt.Errorf("invalid connection protocol: %s", u.Scheme) - } - - var kvs []string - escaper := strings.NewReplacer(` `, `\ `, `'`, `\'`, `\`, `\\`) - accrue := func(k, v string) { - if v != "" { - kvs = append(kvs, k+"="+escaper.Replace(v)) - } - } - - if u.User != nil { - v := u.User.Username() - accrue("user", v) - - v, _ = u.User.Password() - accrue("password", v) - } - - if host, port, err := net.SplitHostPort(u.Host); err != nil { - accrue("host", u.Host) - } else { - accrue("host", host) - accrue("port", port) - } - - if u.Path != "" { - accrue("dbname", u.Path[1:]) - } - - q := u.Query() - for k := range q { - accrue(k, q.Get(k)) - } - - sort.Strings(kvs) // Makes testing easier (not a performance concern) - return strings.Join(kvs, " "), nil -} diff --git a/vendor/github.com/lib/pq/user_posix.go b/vendor/github.com/lib/pq/user_posix.go deleted file mode 100644 index bf982524..00000000 --- a/vendor/github.com/lib/pq/user_posix.go +++ /dev/null @@ -1,24 +0,0 @@ -// Package pq is a pure Go Postgres driver for the database/sql package. - -// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris rumprun - -package pq - -import ( - "os" - "os/user" -) - -func userCurrent() (string, error) { - u, err := user.Current() - if err == nil { - return u.Username, nil - } - - name := os.Getenv("USER") - if name != "" { - return name, nil - } - - return "", ErrCouldNotDetectUsername -} diff --git a/vendor/github.com/lib/pq/user_windows.go b/vendor/github.com/lib/pq/user_windows.go deleted file mode 100644 index 2b691267..00000000 --- a/vendor/github.com/lib/pq/user_windows.go +++ /dev/null @@ -1,27 +0,0 @@ -// Package pq is a pure Go Postgres driver for the database/sql package. -package pq - -import ( - "path/filepath" - "syscall" -) - -// Perform Windows user name lookup identically to libpq. -// -// The PostgreSQL code makes use of the legacy Win32 function -// GetUserName, and that function has not been imported into stock Go. -// GetUserNameEx is available though, the difference being that a -// wider range of names are available. To get the output to be the -// same as GetUserName, only the base (or last) component of the -// result is returned. -func userCurrent() (string, error) { - pw_name := make([]uint16, 128) - pwname_size := uint32(len(pw_name)) - 1 - err := syscall.GetUserNameEx(syscall.NameSamCompatible, &pw_name[0], &pwname_size) - if err != nil { - return "", ErrCouldNotDetectUsername - } - s := syscall.UTF16ToString(pw_name) - u := filepath.Base(s) - return u, nil -} diff --git a/vendor/github.com/lib/pq/uuid.go b/vendor/github.com/lib/pq/uuid.go deleted file mode 100644 index 9a1b9e07..00000000 --- a/vendor/github.com/lib/pq/uuid.go +++ /dev/null @@ -1,23 +0,0 @@ -package pq - -import ( - "encoding/hex" - "fmt" -) - -// decodeUUIDBinary interprets the binary format of a uuid, returning it in text format. -func decodeUUIDBinary(src []byte) ([]byte, error) { - if len(src) != 16 { - return nil, fmt.Errorf("pq: unable to decode uuid; bad length: %d", len(src)) - } - - dst := make([]byte, 36) - dst[8], dst[13], dst[18], dst[23] = '-', '-', '-', '-' - hex.Encode(dst[0:], src[0:4]) - hex.Encode(dst[9:], src[4:6]) - hex.Encode(dst[14:], src[6:8]) - hex.Encode(dst[19:], src[8:10]) - hex.Encode(dst[24:], src[10:16]) - - return dst, nil -} diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE b/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE deleted file mode 100644 index 8dada3ed..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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} - - 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. diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE b/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE deleted file mode 100644 index 5d8cb5b7..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE +++ /dev/null @@ -1 +0,0 @@ -Copyright 2012 Matt T. Proud (matt.proud@gmail.com) diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile deleted file mode 100644 index 81be2143..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - -cover: - go test -cover -v -coverprofile=cover.dat ./... - go tool cover -func cover.dat - -.PHONY: cover diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go deleted file mode 100644 index 258c0636..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2013 Matt T. Proud -// -// 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 pbutil - -import ( - "encoding/binary" - "errors" - "io" - - "github.com/golang/protobuf/proto" -) - -var errInvalidVarint = errors.New("invalid varint32 encountered") - -// ReadDelimited decodes a message from the provided length-delimited stream, -// where the length is encoded as 32-bit varint prefix to the message body. -// It returns the total number of bytes read and any applicable error. This is -// roughly equivalent to the companion Java API's -// MessageLite#parseDelimitedFrom. As per the reader contract, this function -// calls r.Read repeatedly as required until exactly one message including its -// prefix is read and decoded (or an error has occurred). The function never -// reads more bytes from the stream than required. The function never returns -// an error if a message has been read and decoded correctly, even if the end -// of the stream has been reached in doing so. In that case, any subsequent -// calls return (0, io.EOF). -func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) { - // Per AbstractParser#parsePartialDelimitedFrom with - // CodedInputStream#readRawVarint32. - var headerBuf [binary.MaxVarintLen32]byte - var bytesRead, varIntBytes int - var messageLength uint64 - for varIntBytes == 0 { // i.e. no varint has been decoded yet. - if bytesRead >= len(headerBuf) { - return bytesRead, errInvalidVarint - } - // We have to read byte by byte here to avoid reading more bytes - // than required. Each read byte is appended to what we have - // read before. - newBytesRead, err := r.Read(headerBuf[bytesRead : bytesRead+1]) - if newBytesRead == 0 { - if err != nil { - return bytesRead, err - } - // A Reader should not return (0, nil), but if it does, - // it should be treated as no-op (according to the - // Reader contract). So let's go on... - continue - } - bytesRead += newBytesRead - // Now present everything read so far to the varint decoder and - // see if a varint can be decoded already. - messageLength, varIntBytes = proto.DecodeVarint(headerBuf[:bytesRead]) - } - - messageBuf := make([]byte, messageLength) - newBytesRead, err := io.ReadFull(r, messageBuf) - bytesRead += newBytesRead - if err != nil { - return bytesRead, err - } - - return bytesRead, proto.Unmarshal(messageBuf, m) -} diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go deleted file mode 100644 index c318385c..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2013 Matt T. Proud -// -// 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 pbutil provides record length-delimited Protocol Buffer streaming. -package pbutil diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go deleted file mode 100644 index 8fb59ad2..00000000 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 Matt T. Proud -// -// 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 pbutil - -import ( - "encoding/binary" - "io" - - "github.com/golang/protobuf/proto" -) - -// WriteDelimited encodes and dumps a message to the provided writer prefixed -// with a 32-bit varint indicating the length of the encoded message, producing -// a length-delimited record stream, which can be used to chain together -// encoded messages of the same type together in a file. It returns the total -// number of bytes written and any applicable error. This is roughly -// equivalent to the companion Java API's MessageLite#writeDelimitedTo. -func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) { - buffer, err := proto.Marshal(m) - if err != nil { - return 0, err - } - - var buf [binary.MaxVarintLen32]byte - encodedLength := binary.PutUvarint(buf[:], uint64(len(buffer))) - - sync, err := w.Write(buf[:encodedLength]) - if err != nil { - return sync, err - } - - n, err = w.Write(buffer) - return n + sync, err -} diff --git a/vendor/github.com/prometheus/client_golang/LICENSE b/vendor/github.com/prometheus/client_golang/LICENSE deleted file mode 100644 index 261eeb9e..00000000 --- a/vendor/github.com/prometheus/client_golang/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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] - - 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. diff --git a/vendor/github.com/prometheus/client_golang/NOTICE b/vendor/github.com/prometheus/client_golang/NOTICE deleted file mode 100644 index dd878a30..00000000 --- a/vendor/github.com/prometheus/client_golang/NOTICE +++ /dev/null @@ -1,23 +0,0 @@ -Prometheus instrumentation library for Go applications -Copyright 2012-2015 The Prometheus Authors - -This product includes software developed at -SoundCloud Ltd. (http://soundcloud.com/). - - -The following components are included in this product: - -perks - a fork of https://github.com/bmizerany/perks -https://github.com/beorn7/perks -Copyright 2013-2015 Blake Mizerany, Björn Rabenstein -See https://github.com/beorn7/perks/blob/master/README.md for license details. - -Go support for Protocol Buffers - Google's data interchange format -http://github.com/golang/protobuf/ -Copyright 2010 The Go Authors -See source code for license details. - -Support for streaming Protocol Buffer messages for the Go language (golang). -https://github.com/matttproud/golang_protobuf_extensions -Copyright 2013 Matt T. Proud -Licensed under the Apache License, Version 2.0 diff --git a/vendor/github.com/prometheus/client_golang/prometheus/README.md b/vendor/github.com/prometheus/client_golang/prometheus/README.md deleted file mode 100644 index 44986bff..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/README.md +++ /dev/null @@ -1 +0,0 @@ -See [![go-doc](https://godoc.org/github.com/prometheus/client_golang/prometheus?status.svg)](https://godoc.org/github.com/prometheus/client_golang/prometheus). diff --git a/vendor/github.com/prometheus/client_golang/prometheus/build_info.go b/vendor/github.com/prometheus/client_golang/prometheus/build_info.go deleted file mode 100644 index 288f0e85..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/build_info.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build go1.12 - -package prometheus - -import "runtime/debug" - -// readBuildInfo is a wrapper around debug.ReadBuildInfo for Go 1.12+. -func readBuildInfo() (path, version, sum string) { - path, version, sum = "unknown", "unknown", "unknown" - if bi, ok := debug.ReadBuildInfo(); ok { - path = bi.Main.Path - version = bi.Main.Version - sum = bi.Main.Sum - } - return -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go b/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go deleted file mode 100644 index 6609e287..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/build_info_pre_1.12.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build !go1.12 - -package prometheus - -// readBuildInfo is a wrapper around debug.ReadBuildInfo for Go versions before -// 1.12. Remove this whole file once the minimum supported Go version is 1.12. -func readBuildInfo() (path, version, sum string) { - return "unknown", "unknown", "unknown" -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collector.go b/vendor/github.com/prometheus/client_golang/prometheus/collector.go deleted file mode 100644 index 1e839650..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/collector.go +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -// Collector is the interface implemented by anything that can be used by -// Prometheus to collect metrics. A Collector has to be registered for -// collection. See Registerer.Register. -// -// The stock metrics provided by this package (Gauge, Counter, Summary, -// Histogram, Untyped) are also Collectors (which only ever collect one metric, -// namely itself). An implementer of Collector may, however, collect multiple -// metrics in a coordinated fashion and/or create metrics on the fly. Examples -// for collectors already implemented in this library are the metric vectors -// (i.e. collection of multiple instances of the same Metric but with different -// label values) like GaugeVec or SummaryVec, and the ExpvarCollector. -type Collector interface { - // Describe sends the super-set of all possible descriptors of metrics - // collected by this Collector to the provided channel and returns once - // the last descriptor has been sent. The sent descriptors fulfill the - // consistency and uniqueness requirements described in the Desc - // documentation. - // - // It is valid if one and the same Collector sends duplicate - // descriptors. Those duplicates are simply ignored. However, two - // different Collectors must not send duplicate descriptors. - // - // Sending no descriptor at all marks the Collector as “unchecked”, - // i.e. no checks will be performed at registration time, and the - // Collector may yield any Metric it sees fit in its Collect method. - // - // This method idempotently sends the same descriptors throughout the - // lifetime of the Collector. It may be called concurrently and - // therefore must be implemented in a concurrency safe way. - // - // If a Collector encounters an error while executing this method, it - // must send an invalid descriptor (created with NewInvalidDesc) to - // signal the error to the registry. - Describe(chan<- *Desc) - // Collect is called by the Prometheus registry when collecting - // metrics. The implementation sends each collected metric via the - // provided channel and returns once the last metric has been sent. The - // descriptor of each sent metric is one of those returned by Describe - // (unless the Collector is unchecked, see above). Returned metrics that - // share the same descriptor must differ in their variable label - // values. - // - // This method may be called concurrently and must therefore be - // implemented in a concurrency safe way. Blocking occurs at the expense - // of total performance of rendering all registered metrics. Ideally, - // Collector implementations support concurrent readers. - Collect(chan<- Metric) -} - -// DescribeByCollect is a helper to implement the Describe method of a custom -// Collector. It collects the metrics from the provided Collector and sends -// their descriptors to the provided channel. -// -// If a Collector collects the same metrics throughout its lifetime, its -// Describe method can simply be implemented as: -// -// func (c customCollector) Describe(ch chan<- *Desc) { -// DescribeByCollect(c, ch) -// } -// -// However, this will not work if the metrics collected change dynamically over -// the lifetime of the Collector in a way that their combined set of descriptors -// changes as well. The shortcut implementation will then violate the contract -// of the Describe method. If a Collector sometimes collects no metrics at all -// (for example vectors like CounterVec, GaugeVec, etc., which only collect -// metrics after a metric with a fully specified label set has been accessed), -// it might even get registered as an unchecked Collector (cf. the Register -// method of the Registerer interface). Hence, only use this shortcut -// implementation of Describe if you are certain to fulfill the contract. -// -// The Collector example demonstrates a use of DescribeByCollect. -func DescribeByCollect(c Collector, descs chan<- *Desc) { - metrics := make(chan Metric) - go func() { - c.Collect(metrics) - close(metrics) - }() - for m := range metrics { - descs <- m.Desc() - } -} - -// selfCollector implements Collector for a single Metric so that the Metric -// collects itself. Add it as an anonymous field to a struct that implements -// Metric, and call init with the Metric itself as an argument. -type selfCollector struct { - self Metric -} - -// init provides the selfCollector with a reference to the metric it is supposed -// to collect. It is usually called within the factory function to create a -// metric. See example. -func (c *selfCollector) init(self Metric) { - c.self = self -} - -// Describe implements Collector. -func (c *selfCollector) Describe(ch chan<- *Desc) { - ch <- c.self.Desc() -} - -// Collect implements Collector. -func (c *selfCollector) Collect(ch chan<- Metric) { - ch <- c.self -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/vendor/github.com/prometheus/client_golang/prometheus/counter.go deleted file mode 100644 index d463e36d..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/counter.go +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "errors" - "math" - "sync/atomic" - - dto "github.com/prometheus/client_model/go" -) - -// Counter is a Metric that represents a single numerical value that only ever -// goes up. That implies that it cannot be used to count items whose number can -// also go down, e.g. the number of currently running goroutines. Those -// "counters" are represented by Gauges. -// -// A Counter is typically used to count requests served, tasks completed, errors -// occurred, etc. -// -// To create Counter instances, use NewCounter. -type Counter interface { - Metric - Collector - - // Inc increments the counter by 1. Use Add to increment it by arbitrary - // non-negative values. - Inc() - // Add adds the given value to the counter. It panics if the value is < - // 0. - Add(float64) -} - -// CounterOpts is an alias for Opts. See there for doc comments. -type CounterOpts Opts - -// NewCounter creates a new Counter based on the provided CounterOpts. -// -// The returned implementation tracks the counter value in two separate -// variables, a float64 and a uint64. The latter is used to track calls of the -// Inc method and calls of the Add method with a value that can be represented -// as a uint64. This allows atomic increments of the counter with optimal -// performance. (It is common to have an Inc call in very hot execution paths.) -// Both internal tracking values are added up in the Write method. This has to -// be taken into account when it comes to precision and overflow behavior. -func NewCounter(opts CounterOpts) Counter { - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ) - result := &counter{desc: desc, labelPairs: desc.constLabelPairs} - result.init(result) // Init self-collection. - return result -} - -type counter struct { - // valBits contains the bits of the represented float64 value, while - // valInt stores values that are exact integers. Both have to go first - // in the struct to guarantee alignment for atomic operations. - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG - valBits uint64 - valInt uint64 - - selfCollector - desc *Desc - - labelPairs []*dto.LabelPair -} - -func (c *counter) Desc() *Desc { - return c.desc -} - -func (c *counter) Add(v float64) { - if v < 0 { - panic(errors.New("counter cannot decrease in value")) - } - ival := uint64(v) - if float64(ival) == v { - atomic.AddUint64(&c.valInt, ival) - return - } - - for { - oldBits := atomic.LoadUint64(&c.valBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + v) - if atomic.CompareAndSwapUint64(&c.valBits, oldBits, newBits) { - return - } - } -} - -func (c *counter) Inc() { - atomic.AddUint64(&c.valInt, 1) -} - -func (c *counter) Write(out *dto.Metric) error { - fval := math.Float64frombits(atomic.LoadUint64(&c.valBits)) - ival := atomic.LoadUint64(&c.valInt) - val := fval + float64(ival) - - return populateMetric(CounterValue, val, c.labelPairs, out) -} - -// CounterVec is a Collector that bundles a set of Counters that all share the -// same Desc, but have different values for their variable labels. This is used -// if you want to count the same thing partitioned by various dimensions -// (e.g. number of HTTP requests, partitioned by response code and -// method). Create instances with NewCounterVec. -type CounterVec struct { - *metricVec -} - -// NewCounterVec creates a new CounterVec based on the provided CounterOpts and -// partitioned by the given label names. -func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - labelNames, - opts.ConstLabels, - ) - return &CounterVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { - if len(lvs) != len(desc.variableLabels) { - panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) - } - result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs)} - result.init(result) // Init self-collection. - return result - }), - } -} - -// GetMetricWithLabelValues returns the Counter for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of -// label values is accessed for the first time, a new Counter is created. -// -// It is possible to call this method without using the returned Counter to only -// create the new Counter but leave it at its starting value 0. See also the -// SummaryVec example. -// -// Keeping the Counter for later use is possible (and should be considered if -// performance is critical), but keep in mind that Reset, DeleteLabelValues and -// Delete can be used to delete the Counter from the CounterVec. In that case, -// the Counter will still exist, but it will not be exported anymore, even if a -// Counter with the same label values is created later. -// -// An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). -// -// Note that for more than one label value, this method is prone to mistakes -// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -// an alternative to avoid that type of mistake. For higher label numbers, the -// latter has a much more readable (albeit more verbose) syntax, but it comes -// with a performance overhead (for creating and processing the Labels map). -// See also the GaugeVec example. -func (v *CounterVec) GetMetricWithLabelValues(lvs ...string) (Counter, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) - if metric != nil { - return metric.(Counter), err - } - return nil, err -} - -// GetMetricWith returns the Counter for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is -// accessed for the first time, a new Counter is created. Implications of -// creating a Counter without using it and keeping the Counter for later use are -// the same as for GetMetricWithLabelValues. -// -// An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). -// -// This method is used for the same purpose as -// GetMetricWithLabelValues(...string). See there for pros and cons of the two -// methods. -func (v *CounterVec) GetMetricWith(labels Labels) (Counter, error) { - metric, err := v.metricVec.getMetricWith(labels) - if metric != nil { - return metric.(Counter), err - } - return nil, err -} - -// WithLabelValues works as GetMetricWithLabelValues, but panics where -// GetMetricWithLabelValues would have returned an error. Not returning an -// error allows shortcuts like -// myVec.WithLabelValues("404", "GET").Add(42) -func (v *CounterVec) WithLabelValues(lvs ...string) Counter { - c, err := v.GetMetricWithLabelValues(lvs...) - if err != nil { - panic(err) - } - return c -} - -// With works as GetMetricWith, but panics where GetMetricWithLabels would have -// returned an error. Not returning an error allows shortcuts like -// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Add(42) -func (v *CounterVec) With(labels Labels) Counter { - c, err := v.GetMetricWith(labels) - if err != nil { - panic(err) - } - return c -} - -// CurryWith returns a vector curried with the provided labels, i.e. the -// returned vector has those labels pre-set for all labeled operations performed -// on it. The cardinality of the curried vector is reduced accordingly. The -// order of the remaining labels stays the same (just with the curried labels -// taken out of the sequence – which is relevant for the -// (GetMetric)WithLabelValues methods). It is possible to curry a curried -// vector, but only with labels not yet used for currying before. -// -// The metrics contained in the CounterVec are shared between the curried and -// uncurried vectors. They are just accessed differently. Curried and uncurried -// vectors behave identically in terms of collection. Only one must be -// registered with a given registry (usually the uncurried version). The Reset -// method deletes all metrics, even if called on a curried vector. -func (v *CounterVec) CurryWith(labels Labels) (*CounterVec, error) { - vec, err := v.curryWith(labels) - if vec != nil { - return &CounterVec{vec}, err - } - return nil, err -} - -// MustCurryWith works as CurryWith but panics where CurryWith would have -// returned an error. -func (v *CounterVec) MustCurryWith(labels Labels) *CounterVec { - vec, err := v.CurryWith(labels) - if err != nil { - panic(err) - } - return vec -} - -// CounterFunc is a Counter whose value is determined at collect time by calling a -// provided function. -// -// To create CounterFunc instances, use NewCounterFunc. -type CounterFunc interface { - Metric - Collector -} - -// NewCounterFunc creates a new CounterFunc based on the provided -// CounterOpts. The value reported is determined by calling the given function -// from within the Write method. Take into account that metric collection may -// happen concurrently. If that results in concurrent calls to Write, like in -// the case where a CounterFunc is directly registered with Prometheus, the -// provided function must be concurrency-safe. The function should also honor -// the contract for a Counter (values only go up, not down), but compliance will -// not be checked. -func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc { - return newValueFunc(NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ), CounterValue, function) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/vendor/github.com/prometheus/client_golang/prometheus/desc.go deleted file mode 100644 index e3232d79..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/desc.go +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright 2016 The Prometheus Authors -// 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 prometheus - -import ( - "errors" - "fmt" - "sort" - "strings" - - "github.com/cespare/xxhash/v2" - "github.com/golang/protobuf/proto" - "github.com/prometheus/common/model" - - dto "github.com/prometheus/client_model/go" -) - -// Desc is the descriptor used by every Prometheus Metric. It is essentially -// the immutable meta-data of a Metric. The normal Metric implementations -// included in this package manage their Desc under the hood. Users only have to -// deal with Desc if they use advanced features like the ExpvarCollector or -// custom Collectors and Metrics. -// -// Descriptors registered with the same registry have to fulfill certain -// consistency and uniqueness criteria if they share the same fully-qualified -// name: They must have the same help string and the same label names (aka label -// dimensions) in each, constLabels and variableLabels, but they must differ in -// the values of the constLabels. -// -// Descriptors that share the same fully-qualified names and the same label -// values of their constLabels are considered equal. -// -// Use NewDesc to create new Desc instances. -type Desc struct { - // fqName has been built from Namespace, Subsystem, and Name. - fqName string - // help provides some helpful information about this metric. - help string - // constLabelPairs contains precalculated DTO label pairs based on - // the constant labels. - constLabelPairs []*dto.LabelPair - // VariableLabels contains names of labels for which the metric - // maintains variable values. - variableLabels []string - // id is a hash of the values of the ConstLabels and fqName. This - // must be unique among all registered descriptors and can therefore be - // used as an identifier of the descriptor. - id uint64 - // dimHash is a hash of the label names (preset and variable) and the - // Help string. Each Desc with the same fqName must have the same - // dimHash. - dimHash uint64 - // err is an error that occurred during construction. It is reported on - // registration time. - err error -} - -// NewDesc allocates and initializes a new Desc. Errors are recorded in the Desc -// and will be reported on registration time. variableLabels and constLabels can -// be nil if no such labels should be set. fqName must not be empty. -// -// variableLabels only contain the label names. Their label values are variable -// and therefore not part of the Desc. (They are managed within the Metric.) -// -// For constLabels, the label values are constant. Therefore, they are fully -// specified in the Desc. See the Collector example for a usage pattern. -func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) *Desc { - d := &Desc{ - fqName: fqName, - help: help, - variableLabels: variableLabels, - } - if !model.IsValidMetricName(model.LabelValue(fqName)) { - d.err = fmt.Errorf("%q is not a valid metric name", fqName) - return d - } - // labelValues contains the label values of const labels (in order of - // their sorted label names) plus the fqName (at position 0). - labelValues := make([]string, 1, len(constLabels)+1) - labelValues[0] = fqName - labelNames := make([]string, 0, len(constLabels)+len(variableLabels)) - labelNameSet := map[string]struct{}{} - // First add only the const label names and sort them... - for labelName := range constLabels { - if !checkLabelName(labelName) { - d.err = fmt.Errorf("%q is not a valid label name for metric %q", labelName, fqName) - return d - } - labelNames = append(labelNames, labelName) - labelNameSet[labelName] = struct{}{} - } - sort.Strings(labelNames) - // ... so that we can now add const label values in the order of their names. - for _, labelName := range labelNames { - labelValues = append(labelValues, constLabels[labelName]) - } - // Validate the const label values. They can't have a wrong cardinality, so - // use in len(labelValues) as expectedNumberOfValues. - if err := validateLabelValues(labelValues, len(labelValues)); err != nil { - d.err = err - return d - } - // Now add the variable label names, but prefix them with something that - // cannot be in a regular label name. That prevents matching the label - // dimension with a different mix between preset and variable labels. - for _, labelName := range variableLabels { - if !checkLabelName(labelName) { - d.err = fmt.Errorf("%q is not a valid label name for metric %q", labelName, fqName) - return d - } - labelNames = append(labelNames, "$"+labelName) - labelNameSet[labelName] = struct{}{} - } - if len(labelNames) != len(labelNameSet) { - d.err = errors.New("duplicate label names") - return d - } - - xxh := xxhash.New() - for _, val := range labelValues { - xxh.WriteString(val) - xxh.Write(separatorByteSlice) - } - d.id = xxh.Sum64() - // Sort labelNames so that order doesn't matter for the hash. - sort.Strings(labelNames) - // Now hash together (in this order) the help string and the sorted - // label names. - xxh.Reset() - xxh.WriteString(help) - xxh.Write(separatorByteSlice) - for _, labelName := range labelNames { - xxh.WriteString(labelName) - xxh.Write(separatorByteSlice) - } - d.dimHash = xxh.Sum64() - - d.constLabelPairs = make([]*dto.LabelPair, 0, len(constLabels)) - for n, v := range constLabels { - d.constLabelPairs = append(d.constLabelPairs, &dto.LabelPair{ - Name: proto.String(n), - Value: proto.String(v), - }) - } - sort.Sort(labelPairSorter(d.constLabelPairs)) - return d -} - -// NewInvalidDesc returns an invalid descriptor, i.e. a descriptor with the -// provided error set. If a collector returning such a descriptor is registered, -// registration will fail with the provided error. NewInvalidDesc can be used by -// a Collector to signal inability to describe itself. -func NewInvalidDesc(err error) *Desc { - return &Desc{ - err: err, - } -} - -func (d *Desc) String() string { - lpStrings := make([]string, 0, len(d.constLabelPairs)) - for _, lp := range d.constLabelPairs { - lpStrings = append( - lpStrings, - fmt.Sprintf("%s=%q", lp.GetName(), lp.GetValue()), - ) - } - return fmt.Sprintf( - "Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: %v}", - d.fqName, - d.help, - strings.Join(lpStrings, ","), - d.variableLabels, - ) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/doc.go b/vendor/github.com/prometheus/client_golang/prometheus/doc.go deleted file mode 100644 index 01977de6..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/doc.go +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus is the core instrumentation package. It provides metrics -// primitives to instrument code for monitoring. It also offers a registry for -// metrics. Sub-packages allow to expose the registered metrics via HTTP -// (package promhttp) or push them to a Pushgateway (package push). There is -// also a sub-package promauto, which provides metrics constructors with -// automatic registration. -// -// All exported functions and methods are safe to be used concurrently unless -// specified otherwise. -// -// A Basic Example -// -// As a starting point, a very basic usage example: -// -// package main -// -// import ( -// "log" -// "net/http" -// -// "github.com/prometheus/client_golang/prometheus" -// "github.com/prometheus/client_golang/prometheus/promhttp" -// ) -// -// var ( -// cpuTemp = prometheus.NewGauge(prometheus.GaugeOpts{ -// Name: "cpu_temperature_celsius", -// Help: "Current temperature of the CPU.", -// }) -// hdFailures = prometheus.NewCounterVec( -// prometheus.CounterOpts{ -// Name: "hd_errors_total", -// Help: "Number of hard-disk errors.", -// }, -// []string{"device"}, -// ) -// ) -// -// func init() { -// // Metrics have to be registered to be exposed: -// prometheus.MustRegister(cpuTemp) -// prometheus.MustRegister(hdFailures) -// } -// -// func main() { -// cpuTemp.Set(65.3) -// hdFailures.With(prometheus.Labels{"device":"/dev/sda"}).Inc() -// -// // The Handler function provides a default handler to expose metrics -// // via an HTTP server. "/metrics" is the usual endpoint for that. -// http.Handle("/metrics", promhttp.Handler()) -// log.Fatal(http.ListenAndServe(":8080", nil)) -// } -// -// -// This is a complete program that exports two metrics, a Gauge and a Counter, -// the latter with a label attached to turn it into a (one-dimensional) vector. -// -// Metrics -// -// The number of exported identifiers in this package might appear a bit -// overwhelming. However, in addition to the basic plumbing shown in the example -// above, you only need to understand the different metric types and their -// vector versions for basic usage. Furthermore, if you are not concerned with -// fine-grained control of when and how to register metrics with the registry, -// have a look at the promauto package, which will effectively allow you to -// ignore registration altogether in simple cases. -// -// Above, you have already touched the Counter and the Gauge. There are two more -// advanced metric types: the Summary and Histogram. A more thorough description -// of those four metric types can be found in the Prometheus docs: -// https://prometheus.io/docs/concepts/metric_types/ -// -// A fifth "type" of metric is Untyped. It behaves like a Gauge, but signals the -// Prometheus server not to assume anything about its type. -// -// In addition to the fundamental metric types Gauge, Counter, Summary, -// Histogram, and Untyped, a very important part of the Prometheus data model is -// the partitioning of samples along dimensions called labels, which results in -// metric vectors. The fundamental types are GaugeVec, CounterVec, SummaryVec, -// HistogramVec, and UntypedVec. -// -// While only the fundamental metric types implement the Metric interface, both -// the metrics and their vector versions implement the Collector interface. A -// Collector manages the collection of a number of Metrics, but for convenience, -// a Metric can also “collect itself”. Note that Gauge, Counter, Summary, -// Histogram, and Untyped are interfaces themselves while GaugeVec, CounterVec, -// SummaryVec, HistogramVec, and UntypedVec are not. -// -// To create instances of Metrics and their vector versions, you need a suitable -// …Opts struct, i.e. GaugeOpts, CounterOpts, SummaryOpts, HistogramOpts, or -// UntypedOpts. -// -// Custom Collectors and constant Metrics -// -// While you could create your own implementations of Metric, most likely you -// will only ever implement the Collector interface on your own. At a first -// glance, a custom Collector seems handy to bundle Metrics for common -// registration (with the prime example of the different metric vectors above, -// which bundle all the metrics of the same name but with different labels). -// -// There is a more involved use case, too: If you already have metrics -// available, created outside of the Prometheus context, you don't need the -// interface of the various Metric types. You essentially want to mirror the -// existing numbers into Prometheus Metrics during collection. An own -// implementation of the Collector interface is perfect for that. You can create -// Metric instances “on the fly” using NewConstMetric, NewConstHistogram, and -// NewConstSummary (and their respective Must… versions). That will happen in -// the Collect method. The Describe method has to return separate Desc -// instances, representative of the “throw-away” metrics to be created later. -// NewDesc comes in handy to create those Desc instances. Alternatively, you -// could return no Desc at all, which will mark the Collector “unchecked”. No -// checks are performed at registration time, but metric consistency will still -// be ensured at scrape time, i.e. any inconsistencies will lead to scrape -// errors. Thus, with unchecked Collectors, the responsibility to not collect -// metrics that lead to inconsistencies in the total scrape result lies with the -// implementer of the Collector. While this is not a desirable state, it is -// sometimes necessary. The typical use case is a situation where the exact -// metrics to be returned by a Collector cannot be predicted at registration -// time, but the implementer has sufficient knowledge of the whole system to -// guarantee metric consistency. -// -// The Collector example illustrates the use case. You can also look at the -// source code of the processCollector (mirroring process metrics), the -// goCollector (mirroring Go metrics), or the expvarCollector (mirroring expvar -// metrics) as examples that are used in this package itself. -// -// If you just need to call a function to get a single float value to collect as -// a metric, GaugeFunc, CounterFunc, or UntypedFunc might be interesting -// shortcuts. -// -// Advanced Uses of the Registry -// -// While MustRegister is the by far most common way of registering a Collector, -// sometimes you might want to handle the errors the registration might cause. -// As suggested by the name, MustRegister panics if an error occurs. With the -// Register function, the error is returned and can be handled. -// -// An error is returned if the registered Collector is incompatible or -// inconsistent with already registered metrics. The registry aims for -// consistency of the collected metrics according to the Prometheus data model. -// Inconsistencies are ideally detected at registration time, not at collect -// time. The former will usually be detected at start-up time of a program, -// while the latter will only happen at scrape time, possibly not even on the -// first scrape if the inconsistency only becomes relevant later. That is the -// main reason why a Collector and a Metric have to describe themselves to the -// registry. -// -// So far, everything we did operated on the so-called default registry, as it -// can be found in the global DefaultRegisterer variable. With NewRegistry, you -// can create a custom registry, or you can even implement the Registerer or -// Gatherer interfaces yourself. The methods Register and Unregister work in the -// same way on a custom registry as the global functions Register and Unregister -// on the default registry. -// -// There are a number of uses for custom registries: You can use registries with -// special properties, see NewPedanticRegistry. You can avoid global state, as -// it is imposed by the DefaultRegisterer. You can use multiple registries at -// the same time to expose different metrics in different ways. You can use -// separate registries for testing purposes. -// -// Also note that the DefaultRegisterer comes registered with a Collector for Go -// runtime metrics (via NewGoCollector) and a Collector for process metrics (via -// NewProcessCollector). With a custom registry, you are in control and decide -// yourself about the Collectors to register. -// -// HTTP Exposition -// -// The Registry implements the Gatherer interface. The caller of the Gather -// method can then expose the gathered metrics in some way. Usually, the metrics -// are served via HTTP on the /metrics endpoint. That's happening in the example -// above. The tools to expose metrics via HTTP are in the promhttp sub-package. -// -// Pushing to the Pushgateway -// -// Function for pushing to the Pushgateway can be found in the push sub-package. -// -// Graphite Bridge -// -// Functions and examples to push metrics from a Gatherer to Graphite can be -// found in the graphite sub-package. -// -// Other Means of Exposition -// -// More ways of exposing metrics can easily be added by following the approaches -// of the existing implementations. -package prometheus diff --git a/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go deleted file mode 100644 index 18a99d5f..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "encoding/json" - "expvar" -) - -type expvarCollector struct { - exports map[string]*Desc -} - -// NewExpvarCollector returns a newly allocated expvar Collector that still has -// to be registered with a Prometheus registry. -// -// An expvar Collector collects metrics from the expvar interface. It provides a -// quick way to expose numeric values that are already exported via expvar as -// Prometheus metrics. Note that the data models of expvar and Prometheus are -// fundamentally different, and that the expvar Collector is inherently slower -// than native Prometheus metrics. Thus, the expvar Collector is probably great -// for experiments and prototying, but you should seriously consider a more -// direct implementation of Prometheus metrics for monitoring production -// systems. -// -// The exports map has the following meaning: -// -// The keys in the map correspond to expvar keys, i.e. for every expvar key you -// want to export as Prometheus metric, you need an entry in the exports -// map. The descriptor mapped to each key describes how to export the expvar -// value. It defines the name and the help string of the Prometheus metric -// proxying the expvar value. The type will always be Untyped. -// -// For descriptors without variable labels, the expvar value must be a number or -// a bool. The number is then directly exported as the Prometheus sample -// value. (For a bool, 'false' translates to 0 and 'true' to 1). Expvar values -// that are not numbers or bools are silently ignored. -// -// If the descriptor has one variable label, the expvar value must be an expvar -// map. The keys in the expvar map become the various values of the one -// Prometheus label. The values in the expvar map must be numbers or bools again -// as above. -// -// For descriptors with more than one variable label, the expvar must be a -// nested expvar map, i.e. where the values of the topmost map are maps again -// etc. until a depth is reached that corresponds to the number of labels. The -// leaves of that structure must be numbers or bools as above to serve as the -// sample values. -// -// Anything that does not fit into the scheme above is silently ignored. -func NewExpvarCollector(exports map[string]*Desc) Collector { - return &expvarCollector{ - exports: exports, - } -} - -// Describe implements Collector. -func (e *expvarCollector) Describe(ch chan<- *Desc) { - for _, desc := range e.exports { - ch <- desc - } -} - -// Collect implements Collector. -func (e *expvarCollector) Collect(ch chan<- Metric) { - for name, desc := range e.exports { - var m Metric - expVar := expvar.Get(name) - if expVar == nil { - continue - } - var v interface{} - labels := make([]string, len(desc.variableLabels)) - if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil { - ch <- NewInvalidMetric(desc, err) - continue - } - var processValue func(v interface{}, i int) - processValue = func(v interface{}, i int) { - if i >= len(labels) { - copiedLabels := append(make([]string, 0, len(labels)), labels...) - switch v := v.(type) { - case float64: - m = MustNewConstMetric(desc, UntypedValue, v, copiedLabels...) - case bool: - if v { - m = MustNewConstMetric(desc, UntypedValue, 1, copiedLabels...) - } else { - m = MustNewConstMetric(desc, UntypedValue, 0, copiedLabels...) - } - default: - return - } - ch <- m - return - } - vm, ok := v.(map[string]interface{}) - if !ok { - return - } - for lv, val := range vm { - labels[i] = lv - processValue(val, i+1) - } - } - processValue(v, 0) - } -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go deleted file mode 100644 index 3d383a73..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 prometheus - -// Inline and byte-free variant of hash/fnv's fnv64a. - -const ( - offset64 = 14695981039346656037 - prime64 = 1099511628211 -) - -// hashNew initializies a new fnv64a hash value. -func hashNew() uint64 { - return offset64 -} - -// hashAdd adds a string to a fnv64a hash value, returning the updated hash. -func hashAdd(h uint64, s string) uint64 { - for i := 0; i < len(s); i++ { - h ^= uint64(s[i]) - h *= prime64 - } - return h -} - -// hashAddByte adds a byte to a fnv64a hash value, returning the updated hash. -func hashAddByte(h uint64, b byte) uint64 { - h ^= uint64(b) - h *= prime64 - return h -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go deleted file mode 100644 index 71d406bd..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go +++ /dev/null @@ -1,286 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "math" - "sync/atomic" - "time" - - dto "github.com/prometheus/client_model/go" -) - -// Gauge is a Metric that represents a single numerical value that can -// arbitrarily go up and down. -// -// A Gauge is typically used for measured values like temperatures or current -// memory usage, but also "counts" that can go up and down, like the number of -// running goroutines. -// -// To create Gauge instances, use NewGauge. -type Gauge interface { - Metric - Collector - - // Set sets the Gauge to an arbitrary value. - Set(float64) - // Inc increments the Gauge by 1. Use Add to increment it by arbitrary - // values. - Inc() - // Dec decrements the Gauge by 1. Use Sub to decrement it by arbitrary - // values. - Dec() - // Add adds the given value to the Gauge. (The value can be negative, - // resulting in a decrease of the Gauge.) - Add(float64) - // Sub subtracts the given value from the Gauge. (The value can be - // negative, resulting in an increase of the Gauge.) - Sub(float64) - - // SetToCurrentTime sets the Gauge to the current Unix time in seconds. - SetToCurrentTime() -} - -// GaugeOpts is an alias for Opts. See there for doc comments. -type GaugeOpts Opts - -// NewGauge creates a new Gauge based on the provided GaugeOpts. -// -// The returned implementation is optimized for a fast Set method. If you have a -// choice for managing the value of a Gauge via Set vs. Inc/Dec/Add/Sub, pick -// the former. For example, the Inc method of the returned Gauge is slower than -// the Inc method of a Counter returned by NewCounter. This matches the typical -// scenarios for Gauges and Counters, where the former tends to be Set-heavy and -// the latter Inc-heavy. -func NewGauge(opts GaugeOpts) Gauge { - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ) - result := &gauge{desc: desc, labelPairs: desc.constLabelPairs} - result.init(result) // Init self-collection. - return result -} - -type gauge struct { - // valBits contains the bits of the represented float64 value. It has - // to go first in the struct to guarantee alignment for atomic - // operations. http://golang.org/pkg/sync/atomic/#pkg-note-BUG - valBits uint64 - - selfCollector - - desc *Desc - labelPairs []*dto.LabelPair -} - -func (g *gauge) Desc() *Desc { - return g.desc -} - -func (g *gauge) Set(val float64) { - atomic.StoreUint64(&g.valBits, math.Float64bits(val)) -} - -func (g *gauge) SetToCurrentTime() { - g.Set(float64(time.Now().UnixNano()) / 1e9) -} - -func (g *gauge) Inc() { - g.Add(1) -} - -func (g *gauge) Dec() { - g.Add(-1) -} - -func (g *gauge) Add(val float64) { - for { - oldBits := atomic.LoadUint64(&g.valBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + val) - if atomic.CompareAndSwapUint64(&g.valBits, oldBits, newBits) { - return - } - } -} - -func (g *gauge) Sub(val float64) { - g.Add(val * -1) -} - -func (g *gauge) Write(out *dto.Metric) error { - val := math.Float64frombits(atomic.LoadUint64(&g.valBits)) - return populateMetric(GaugeValue, val, g.labelPairs, out) -} - -// GaugeVec is a Collector that bundles a set of Gauges that all share the same -// Desc, but have different values for their variable labels. This is used if -// you want to count the same thing partitioned by various dimensions -// (e.g. number of operations queued, partitioned by user and operation -// type). Create instances with NewGaugeVec. -type GaugeVec struct { - *metricVec -} - -// NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and -// partitioned by the given label names. -func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec { - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - labelNames, - opts.ConstLabels, - ) - return &GaugeVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { - if len(lvs) != len(desc.variableLabels) { - panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) - } - result := &gauge{desc: desc, labelPairs: makeLabelPairs(desc, lvs)} - result.init(result) // Init self-collection. - return result - }), - } -} - -// GetMetricWithLabelValues returns the Gauge for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of -// label values is accessed for the first time, a new Gauge is created. -// -// It is possible to call this method without using the returned Gauge to only -// create the new Gauge but leave it at its starting value 0. See also the -// SummaryVec example. -// -// Keeping the Gauge for later use is possible (and should be considered if -// performance is critical), but keep in mind that Reset, DeleteLabelValues and -// Delete can be used to delete the Gauge from the GaugeVec. In that case, the -// Gauge will still exist, but it will not be exported anymore, even if a -// Gauge with the same label values is created later. See also the CounterVec -// example. -// -// An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). -// -// Note that for more than one label value, this method is prone to mistakes -// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -// an alternative to avoid that type of mistake. For higher label numbers, the -// latter has a much more readable (albeit more verbose) syntax, but it comes -// with a performance overhead (for creating and processing the Labels map). -func (v *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) - if metric != nil { - return metric.(Gauge), err - } - return nil, err -} - -// GetMetricWith returns the Gauge for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is -// accessed for the first time, a new Gauge is created. Implications of -// creating a Gauge without using it and keeping the Gauge for later use are -// the same as for GetMetricWithLabelValues. -// -// An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). -// -// This method is used for the same purpose as -// GetMetricWithLabelValues(...string). See there for pros and cons of the two -// methods. -func (v *GaugeVec) GetMetricWith(labels Labels) (Gauge, error) { - metric, err := v.metricVec.getMetricWith(labels) - if metric != nil { - return metric.(Gauge), err - } - return nil, err -} - -// WithLabelValues works as GetMetricWithLabelValues, but panics where -// GetMetricWithLabelValues would have returned an error. Not returning an -// error allows shortcuts like -// myVec.WithLabelValues("404", "GET").Add(42) -func (v *GaugeVec) WithLabelValues(lvs ...string) Gauge { - g, err := v.GetMetricWithLabelValues(lvs...) - if err != nil { - panic(err) - } - return g -} - -// With works as GetMetricWith, but panics where GetMetricWithLabels would have -// returned an error. Not returning an error allows shortcuts like -// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Add(42) -func (v *GaugeVec) With(labels Labels) Gauge { - g, err := v.GetMetricWith(labels) - if err != nil { - panic(err) - } - return g -} - -// CurryWith returns a vector curried with the provided labels, i.e. the -// returned vector has those labels pre-set for all labeled operations performed -// on it. The cardinality of the curried vector is reduced accordingly. The -// order of the remaining labels stays the same (just with the curried labels -// taken out of the sequence – which is relevant for the -// (GetMetric)WithLabelValues methods). It is possible to curry a curried -// vector, but only with labels not yet used for currying before. -// -// The metrics contained in the GaugeVec are shared between the curried and -// uncurried vectors. They are just accessed differently. Curried and uncurried -// vectors behave identically in terms of collection. Only one must be -// registered with a given registry (usually the uncurried version). The Reset -// method deletes all metrics, even if called on a curried vector. -func (v *GaugeVec) CurryWith(labels Labels) (*GaugeVec, error) { - vec, err := v.curryWith(labels) - if vec != nil { - return &GaugeVec{vec}, err - } - return nil, err -} - -// MustCurryWith works as CurryWith but panics where CurryWith would have -// returned an error. -func (v *GaugeVec) MustCurryWith(labels Labels) *GaugeVec { - vec, err := v.CurryWith(labels) - if err != nil { - panic(err) - } - return vec -} - -// GaugeFunc is a Gauge whose value is determined at collect time by calling a -// provided function. -// -// To create GaugeFunc instances, use NewGaugeFunc. -type GaugeFunc interface { - Metric - Collector -} - -// NewGaugeFunc creates a new GaugeFunc based on the provided GaugeOpts. The -// value reported is determined by calling the given function from within the -// Write method. Take into account that metric collection may happen -// concurrently. If that results in concurrent calls to Write, like in the case -// where a GaugeFunc is directly registered with Prometheus, the provided -// function must be concurrency-safe. -func NewGaugeFunc(opts GaugeOpts, function func() float64) GaugeFunc { - return newValueFunc(NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ), GaugeValue, function) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go deleted file mode 100644 index dc9247fe..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go +++ /dev/null @@ -1,396 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 prometheus - -import ( - "runtime" - "runtime/debug" - "sync" - "time" -) - -type goCollector struct { - goroutinesDesc *Desc - threadsDesc *Desc - gcDesc *Desc - goInfoDesc *Desc - - // ms... are memstats related. - msLast *runtime.MemStats // Previously collected memstats. - msLastTimestamp time.Time - msMtx sync.Mutex // Protects msLast and msLastTimestamp. - msMetrics memStatsMetrics - msRead func(*runtime.MemStats) // For mocking in tests. - msMaxWait time.Duration // Wait time for fresh memstats. - msMaxAge time.Duration // Maximum allowed age of old memstats. -} - -// NewGoCollector returns a collector that exports metrics about the current Go -// process. This includes memory stats. To collect those, runtime.ReadMemStats -// is called. This requires to “stop the world”, which usually only happens for -// garbage collection (GC). Take the following implications into account when -// deciding whether to use the Go collector: -// -// 1. The performance impact of stopping the world is the more relevant the more -// frequently metrics are collected. However, with Go1.9 or later the -// stop-the-world time per metrics collection is very short (~25µs) so that the -// performance impact will only matter in rare cases. However, with older Go -// versions, the stop-the-world duration depends on the heap size and can be -// quite significant (~1.7 ms/GiB as per -// https://go-review.googlesource.com/c/go/+/34937). -// -// 2. During an ongoing GC, nothing else can stop the world. Therefore, if the -// metrics collection happens to coincide with GC, it will only complete after -// GC has finished. Usually, GC is fast enough to not cause problems. However, -// with a very large heap, GC might take multiple seconds, which is enough to -// cause scrape timeouts in common setups. To avoid this problem, the Go -// collector will use the memstats from a previous collection if -// runtime.ReadMemStats takes more than 1s. However, if there are no previously -// collected memstats, or their collection is more than 5m ago, the collection -// will block until runtime.ReadMemStats succeeds. (The problem might be solved -// in Go1.13, see https://github.com/golang/go/issues/19812 for the related Go -// issue.) -func NewGoCollector() Collector { - return &goCollector{ - goroutinesDesc: NewDesc( - "go_goroutines", - "Number of goroutines that currently exist.", - nil, nil), - threadsDesc: NewDesc( - "go_threads", - "Number of OS threads created.", - nil, nil), - gcDesc: NewDesc( - "go_gc_duration_seconds", - "A summary of the GC invocation durations.", - nil, nil), - goInfoDesc: NewDesc( - "go_info", - "Information about the Go environment.", - nil, Labels{"version": runtime.Version()}), - msLast: &runtime.MemStats{}, - msRead: runtime.ReadMemStats, - msMaxWait: time.Second, - msMaxAge: 5 * time.Minute, - msMetrics: memStatsMetrics{ - { - desc: NewDesc( - memstatNamespace("alloc_bytes"), - "Number of bytes allocated and still in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("alloc_bytes_total"), - "Total number of bytes allocated, even if freed.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("sys_bytes"), - "Number of bytes obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Sys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("lookups_total"), - "Total number of pointer lookups.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("mallocs_total"), - "Total number of mallocs.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("frees_total"), - "Total number of frees.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.Frees) }, - valType: CounterValue, - }, { - desc: NewDesc( - memstatNamespace("heap_alloc_bytes"), - "Number of heap bytes allocated and still in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_sys_bytes"), - "Number of heap bytes obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_idle_bytes"), - "Number of heap bytes waiting to be used.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_inuse_bytes"), - "Number of heap bytes that are in use.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_released_bytes"), - "Number of heap bytes released to OS.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("heap_objects"), - "Number of allocated objects.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("stack_inuse_bytes"), - "Number of bytes in use by the stack allocator.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("stack_sys_bytes"), - "Number of bytes obtained from system for stack allocator.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mspan_inuse_bytes"), - "Number of bytes in use by mspan structures.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mspan_sys_bytes"), - "Number of bytes used for mspan structures obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mcache_inuse_bytes"), - "Number of bytes in use by mcache structures.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("mcache_sys_bytes"), - "Number of bytes used for mcache structures obtained from system.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("buck_hash_sys_bytes"), - "Number of bytes used by the profiling bucket hash table.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("gc_sys_bytes"), - "Number of bytes used for garbage collection system metadata.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("other_sys_bytes"), - "Number of bytes used for other system allocations.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("next_gc_bytes"), - "Number of heap bytes when next garbage collection will take place.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("last_gc_time_seconds"), - "Number of seconds since 1970 of last garbage collection.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return float64(ms.LastGC) / 1e9 }, - valType: GaugeValue, - }, { - desc: NewDesc( - memstatNamespace("gc_cpu_fraction"), - "The fraction of this program's available CPU time used by the GC since the program started.", - nil, nil, - ), - eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction }, - valType: GaugeValue, - }, - }, - } -} - -func memstatNamespace(s string) string { - return "go_memstats_" + s -} - -// Describe returns all descriptions of the collector. -func (c *goCollector) Describe(ch chan<- *Desc) { - ch <- c.goroutinesDesc - ch <- c.threadsDesc - ch <- c.gcDesc - ch <- c.goInfoDesc - for _, i := range c.msMetrics { - ch <- i.desc - } -} - -// Collect returns the current state of all metrics of the collector. -func (c *goCollector) Collect(ch chan<- Metric) { - var ( - ms = &runtime.MemStats{} - done = make(chan struct{}) - ) - // Start reading memstats first as it might take a while. - go func() { - c.msRead(ms) - c.msMtx.Lock() - c.msLast = ms - c.msLastTimestamp = time.Now() - c.msMtx.Unlock() - close(done) - }() - - ch <- MustNewConstMetric(c.goroutinesDesc, GaugeValue, float64(runtime.NumGoroutine())) - n, _ := runtime.ThreadCreateProfile(nil) - ch <- MustNewConstMetric(c.threadsDesc, GaugeValue, float64(n)) - - var stats debug.GCStats - stats.PauseQuantiles = make([]time.Duration, 5) - debug.ReadGCStats(&stats) - - quantiles := make(map[float64]float64) - for idx, pq := range stats.PauseQuantiles[1:] { - quantiles[float64(idx+1)/float64(len(stats.PauseQuantiles)-1)] = pq.Seconds() - } - quantiles[0.0] = stats.PauseQuantiles[0].Seconds() - ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), stats.PauseTotal.Seconds(), quantiles) - - ch <- MustNewConstMetric(c.goInfoDesc, GaugeValue, 1) - - timer := time.NewTimer(c.msMaxWait) - select { - case <-done: // Our own ReadMemStats succeeded in time. Use it. - timer.Stop() // Important for high collection frequencies to not pile up timers. - c.msCollect(ch, ms) - return - case <-timer.C: // Time out, use last memstats if possible. Continue below. - } - c.msMtx.Lock() - if time.Since(c.msLastTimestamp) < c.msMaxAge { - // Last memstats are recent enough. Collect from them under the lock. - c.msCollect(ch, c.msLast) - c.msMtx.Unlock() - return - } - // If we are here, the last memstats are too old or don't exist. We have - // to wait until our own ReadMemStats finally completes. For that to - // happen, we have to release the lock. - c.msMtx.Unlock() - <-done - c.msCollect(ch, ms) -} - -func (c *goCollector) msCollect(ch chan<- Metric, ms *runtime.MemStats) { - for _, i := range c.msMetrics { - ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms)) - } -} - -// memStatsMetrics provide description, value, and value type for memstat metrics. -type memStatsMetrics []struct { - desc *Desc - eval func(*runtime.MemStats) float64 - valType ValueType -} - -// NewBuildInfoCollector returns a collector collecting a single metric -// "go_build_info" with the constant value 1 and three labels "path", "version", -// and "checksum". Their label values contain the main module path, version, and -// checksum, respectively. The labels will only have meaningful values if the -// binary is built with Go module support and from source code retrieved from -// the source repository (rather than the local file system). This is usually -// accomplished by building from outside of GOPATH, specifying the full address -// of the main package, e.g. "GO111MODULE=on go run -// github.com/prometheus/client_golang/examples/random". If built without Go -// module support, all label values will be "unknown". If built with Go module -// support but using the source code from the local file system, the "path" will -// be set appropriately, but "checksum" will be empty and "version" will be -// "(devel)". -// -// This collector uses only the build information for the main module. See -// https://github.com/povilasv/prommod for an example of a collector for the -// module dependencies. -func NewBuildInfoCollector() Collector { - path, version, sum := readBuildInfo() - c := &selfCollector{MustNewConstMetric( - NewDesc( - "go_build_info", - "Build information about the main Go module.", - nil, Labels{"path": path, "version": version, "checksum": sum}, - ), - GaugeValue, 1)} - c.init(c.self) - return c -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go deleted file mode 100644 index fd6ab7be..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ /dev/null @@ -1,586 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 prometheus - -import ( - "fmt" - "math" - "runtime" - "sort" - "sync" - "sync/atomic" - - "github.com/golang/protobuf/proto" - - dto "github.com/prometheus/client_model/go" -) - -// A Histogram counts individual observations from an event or sample stream in -// configurable buckets. Similar to a summary, it also provides a sum of -// observations and an observation count. -// -// On the Prometheus server, quantiles can be calculated from a Histogram using -// the histogram_quantile function in the query language. -// -// Note that Histograms, in contrast to Summaries, can be aggregated with the -// Prometheus query language (see the documentation for detailed -// procedures). However, Histograms require the user to pre-define suitable -// buckets, and they are in general less accurate. The Observe method of a -// Histogram has a very low performance overhead in comparison with the Observe -// method of a Summary. -// -// To create Histogram instances, use NewHistogram. -type Histogram interface { - Metric - Collector - - // Observe adds a single observation to the histogram. - Observe(float64) -} - -// bucketLabel is used for the label that defines the upper bound of a -// bucket of a histogram ("le" -> "less or equal"). -const bucketLabel = "le" - -// DefBuckets are the default Histogram buckets. The default buckets are -// tailored to broadly measure the response time (in seconds) of a network -// service. Most likely, however, you will be required to define buckets -// customized to your use case. -var ( - DefBuckets = []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10} - - errBucketLabelNotAllowed = fmt.Errorf( - "%q is not allowed as label name in histograms", bucketLabel, - ) -) - -// LinearBuckets creates 'count' buckets, each 'width' wide, where the lowest -// bucket has an upper bound of 'start'. The final +Inf bucket is not counted -// and not included in the returned slice. The returned slice is meant to be -// used for the Buckets field of HistogramOpts. -// -// The function panics if 'count' is zero or negative. -func LinearBuckets(start, width float64, count int) []float64 { - if count < 1 { - panic("LinearBuckets needs a positive count") - } - buckets := make([]float64, count) - for i := range buckets { - buckets[i] = start - start += width - } - return buckets -} - -// ExponentialBuckets creates 'count' buckets, where the lowest bucket has an -// upper bound of 'start' and each following bucket's upper bound is 'factor' -// times the previous bucket's upper bound. The final +Inf bucket is not counted -// and not included in the returned slice. The returned slice is meant to be -// used for the Buckets field of HistogramOpts. -// -// The function panics if 'count' is 0 or negative, if 'start' is 0 or negative, -// or if 'factor' is less than or equal 1. -func ExponentialBuckets(start, factor float64, count int) []float64 { - if count < 1 { - panic("ExponentialBuckets needs a positive count") - } - if start <= 0 { - panic("ExponentialBuckets needs a positive start value") - } - if factor <= 1 { - panic("ExponentialBuckets needs a factor greater than 1") - } - buckets := make([]float64, count) - for i := range buckets { - buckets[i] = start - start *= factor - } - return buckets -} - -// HistogramOpts bundles the options for creating a Histogram metric. It is -// mandatory to set Name to a non-empty string. All other fields are optional -// and can safely be left at their zero value, although it is strongly -// encouraged to set a Help string. -type HistogramOpts struct { - // Namespace, Subsystem, and Name are components of the fully-qualified - // name of the Histogram (created by joining these components with - // "_"). Only Name is mandatory, the others merely help structuring the - // name. Note that the fully-qualified name of the Histogram must be a - // valid Prometheus metric name. - Namespace string - Subsystem string - Name string - - // Help provides information about this Histogram. - // - // Metrics with the same fully-qualified name must have the same Help - // string. - Help string - - // ConstLabels are used to attach fixed labels to this metric. Metrics - // with the same fully-qualified name must have the same label names in - // their ConstLabels. - // - // ConstLabels are only used rarely. In particular, do not use them to - // attach the same labels to all your metrics. Those use cases are - // better covered by target labels set by the scraping Prometheus - // server, or by one specific metric (e.g. a build_info or a - // machine_role metric). See also - // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels - ConstLabels Labels - - // Buckets defines the buckets into which observations are counted. Each - // element in the slice is the upper inclusive bound of a bucket. The - // values must be sorted in strictly increasing order. There is no need - // to add a highest bucket with +Inf bound, it will be added - // implicitly. The default value is DefBuckets. - Buckets []float64 -} - -// NewHistogram creates a new Histogram based on the provided HistogramOpts. It -// panics if the buckets in HistogramOpts are not in strictly increasing order. -func NewHistogram(opts HistogramOpts) Histogram { - return newHistogram( - NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ), - opts, - ) -} - -func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram { - if len(desc.variableLabels) != len(labelValues) { - panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, labelValues)) - } - - for _, n := range desc.variableLabels { - if n == bucketLabel { - panic(errBucketLabelNotAllowed) - } - } - for _, lp := range desc.constLabelPairs { - if lp.GetName() == bucketLabel { - panic(errBucketLabelNotAllowed) - } - } - - if len(opts.Buckets) == 0 { - opts.Buckets = DefBuckets - } - - h := &histogram{ - desc: desc, - upperBounds: opts.Buckets, - labelPairs: makeLabelPairs(desc, labelValues), - counts: [2]*histogramCounts{{}, {}}, - } - for i, upperBound := range h.upperBounds { - if i < len(h.upperBounds)-1 { - if upperBound >= h.upperBounds[i+1] { - panic(fmt.Errorf( - "histogram buckets must be in increasing order: %f >= %f", - upperBound, h.upperBounds[i+1], - )) - } - } else { - if math.IsInf(upperBound, +1) { - // The +Inf bucket is implicit. Remove it here. - h.upperBounds = h.upperBounds[:i] - } - } - } - // Finally we know the final length of h.upperBounds and can make buckets - // for both counts: - h.counts[0].buckets = make([]uint64, len(h.upperBounds)) - h.counts[1].buckets = make([]uint64, len(h.upperBounds)) - - h.init(h) // Init self-collection. - return h -} - -type histogramCounts struct { - // sumBits contains the bits of the float64 representing the sum of all - // observations. sumBits and count have to go first in the struct to - // guarantee alignment for atomic operations. - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG - sumBits uint64 - count uint64 - buckets []uint64 -} - -type histogram struct { - // countAndHotIdx enables lock-free writes with use of atomic updates. - // The most significant bit is the hot index [0 or 1] of the count field - // below. Observe calls update the hot one. All remaining bits count the - // number of Observe calls. Observe starts by incrementing this counter, - // and finish by incrementing the count field in the respective - // histogramCounts, as a marker for completion. - // - // Calls of the Write method (which are non-mutating reads from the - // perspective of the histogram) swap the hot–cold under the writeMtx - // lock. A cooldown is awaited (while locked) by comparing the number of - // observations with the initiation count. Once they match, then the - // last observation on the now cool one has completed. All cool fields must - // be merged into the new hot before releasing writeMtx. - // - // Fields with atomic access first! See alignment constraint: - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG - countAndHotIdx uint64 - - selfCollector - desc *Desc - writeMtx sync.Mutex // Only used in the Write method. - - // Two counts, one is "hot" for lock-free observations, the other is - // "cold" for writing out a dto.Metric. It has to be an array of - // pointers to guarantee 64bit alignment of the histogramCounts, see - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG. - counts [2]*histogramCounts - - upperBounds []float64 - labelPairs []*dto.LabelPair -} - -func (h *histogram) Desc() *Desc { - return h.desc -} - -func (h *histogram) Observe(v float64) { - // TODO(beorn7): For small numbers of buckets (<30), a linear search is - // slightly faster than the binary search. If we really care, we could - // switch from one search strategy to the other depending on the number - // of buckets. - // - // Microbenchmarks (BenchmarkHistogramNoLabels): - // 11 buckets: 38.3 ns/op linear - binary 48.7 ns/op - // 100 buckets: 78.1 ns/op linear - binary 54.9 ns/op - // 300 buckets: 154 ns/op linear - binary 61.6 ns/op - i := sort.SearchFloat64s(h.upperBounds, v) - - // We increment h.countAndHotIdx so that the counter in the lower - // 63 bits gets incremented. At the same time, we get the new value - // back, which we can use to find the currently-hot counts. - n := atomic.AddUint64(&h.countAndHotIdx, 1) - hotCounts := h.counts[n>>63] - - if i < len(h.upperBounds) { - atomic.AddUint64(&hotCounts.buckets[i], 1) - } - for { - oldBits := atomic.LoadUint64(&hotCounts.sumBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + v) - if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { - break - } - } - // Increment count last as we take it as a signal that the observation - // is complete. - atomic.AddUint64(&hotCounts.count, 1) -} - -func (h *histogram) Write(out *dto.Metric) error { - // For simplicity, we protect this whole method by a mutex. It is not in - // the hot path, i.e. Observe is called much more often than Write. The - // complication of making Write lock-free isn't worth it, if possible at - // all. - h.writeMtx.Lock() - defer h.writeMtx.Unlock() - - // Adding 1<<63 switches the hot index (from 0 to 1 or from 1 to 0) - // without touching the count bits. See the struct comments for a full - // description of the algorithm. - n := atomic.AddUint64(&h.countAndHotIdx, 1<<63) - // count is contained unchanged in the lower 63 bits. - count := n & ((1 << 63) - 1) - // The most significant bit tells us which counts is hot. The complement - // is thus the cold one. - hotCounts := h.counts[n>>63] - coldCounts := h.counts[(^n)>>63] - - // Await cooldown. - for count != atomic.LoadUint64(&coldCounts.count) { - runtime.Gosched() // Let observations get work done. - } - - his := &dto.Histogram{ - Bucket: make([]*dto.Bucket, len(h.upperBounds)), - SampleCount: proto.Uint64(count), - SampleSum: proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))), - } - var cumCount uint64 - for i, upperBound := range h.upperBounds { - cumCount += atomic.LoadUint64(&coldCounts.buckets[i]) - his.Bucket[i] = &dto.Bucket{ - CumulativeCount: proto.Uint64(cumCount), - UpperBound: proto.Float64(upperBound), - } - } - - out.Histogram = his - out.Label = h.labelPairs - - // Finally add all the cold counts to the new hot counts and reset the cold counts. - atomic.AddUint64(&hotCounts.count, count) - atomic.StoreUint64(&coldCounts.count, 0) - for { - oldBits := atomic.LoadUint64(&hotCounts.sumBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + his.GetSampleSum()) - if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { - atomic.StoreUint64(&coldCounts.sumBits, 0) - break - } - } - for i := range h.upperBounds { - atomic.AddUint64(&hotCounts.buckets[i], atomic.LoadUint64(&coldCounts.buckets[i])) - atomic.StoreUint64(&coldCounts.buckets[i], 0) - } - return nil -} - -// HistogramVec is a Collector that bundles a set of Histograms that all share the -// same Desc, but have different values for their variable labels. This is used -// if you want to count the same thing partitioned by various dimensions -// (e.g. HTTP request latencies, partitioned by status code and method). Create -// instances with NewHistogramVec. -type HistogramVec struct { - *metricVec -} - -// NewHistogramVec creates a new HistogramVec based on the provided HistogramOpts and -// partitioned by the given label names. -func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec { - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - labelNames, - opts.ConstLabels, - ) - return &HistogramVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { - return newHistogram(desc, opts, lvs...) - }), - } -} - -// GetMetricWithLabelValues returns the Histogram for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of -// label values is accessed for the first time, a new Histogram is created. -// -// It is possible to call this method without using the returned Histogram to only -// create the new Histogram but leave it at its starting value, a Histogram without -// any observations. -// -// Keeping the Histogram for later use is possible (and should be considered if -// performance is critical), but keep in mind that Reset, DeleteLabelValues and -// Delete can be used to delete the Histogram from the HistogramVec. In that case, the -// Histogram will still exist, but it will not be exported anymore, even if a -// Histogram with the same label values is created later. See also the CounterVec -// example. -// -// An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). -// -// Note that for more than one label value, this method is prone to mistakes -// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -// an alternative to avoid that type of mistake. For higher label numbers, the -// latter has a much more readable (albeit more verbose) syntax, but it comes -// with a performance overhead (for creating and processing the Labels map). -// See also the GaugeVec example. -func (v *HistogramVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) - if metric != nil { - return metric.(Observer), err - } - return nil, err -} - -// GetMetricWith returns the Histogram for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is -// accessed for the first time, a new Histogram is created. Implications of -// creating a Histogram without using it and keeping the Histogram for later use -// are the same as for GetMetricWithLabelValues. -// -// An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). -// -// This method is used for the same purpose as -// GetMetricWithLabelValues(...string). See there for pros and cons of the two -// methods. -func (v *HistogramVec) GetMetricWith(labels Labels) (Observer, error) { - metric, err := v.metricVec.getMetricWith(labels) - if metric != nil { - return metric.(Observer), err - } - return nil, err -} - -// WithLabelValues works as GetMetricWithLabelValues, but panics where -// GetMetricWithLabelValues would have returned an error. Not returning an -// error allows shortcuts like -// myVec.WithLabelValues("404", "GET").Observe(42.21) -func (v *HistogramVec) WithLabelValues(lvs ...string) Observer { - h, err := v.GetMetricWithLabelValues(lvs...) - if err != nil { - panic(err) - } - return h -} - -// With works as GetMetricWith but panics where GetMetricWithLabels would have -// returned an error. Not returning an error allows shortcuts like -// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Observe(42.21) -func (v *HistogramVec) With(labels Labels) Observer { - h, err := v.GetMetricWith(labels) - if err != nil { - panic(err) - } - return h -} - -// CurryWith returns a vector curried with the provided labels, i.e. the -// returned vector has those labels pre-set for all labeled operations performed -// on it. The cardinality of the curried vector is reduced accordingly. The -// order of the remaining labels stays the same (just with the curried labels -// taken out of the sequence – which is relevant for the -// (GetMetric)WithLabelValues methods). It is possible to curry a curried -// vector, but only with labels not yet used for currying before. -// -// The metrics contained in the HistogramVec are shared between the curried and -// uncurried vectors. They are just accessed differently. Curried and uncurried -// vectors behave identically in terms of collection. Only one must be -// registered with a given registry (usually the uncurried version). The Reset -// method deletes all metrics, even if called on a curried vector. -func (v *HistogramVec) CurryWith(labels Labels) (ObserverVec, error) { - vec, err := v.curryWith(labels) - if vec != nil { - return &HistogramVec{vec}, err - } - return nil, err -} - -// MustCurryWith works as CurryWith but panics where CurryWith would have -// returned an error. -func (v *HistogramVec) MustCurryWith(labels Labels) ObserverVec { - vec, err := v.CurryWith(labels) - if err != nil { - panic(err) - } - return vec -} - -type constHistogram struct { - desc *Desc - count uint64 - sum float64 - buckets map[float64]uint64 - labelPairs []*dto.LabelPair -} - -func (h *constHistogram) Desc() *Desc { - return h.desc -} - -func (h *constHistogram) Write(out *dto.Metric) error { - his := &dto.Histogram{} - buckets := make([]*dto.Bucket, 0, len(h.buckets)) - - his.SampleCount = proto.Uint64(h.count) - his.SampleSum = proto.Float64(h.sum) - - for upperBound, count := range h.buckets { - buckets = append(buckets, &dto.Bucket{ - CumulativeCount: proto.Uint64(count), - UpperBound: proto.Float64(upperBound), - }) - } - - if len(buckets) > 0 { - sort.Sort(buckSort(buckets)) - } - his.Bucket = buckets - - out.Histogram = his - out.Label = h.labelPairs - - return nil -} - -// NewConstHistogram returns a metric representing a Prometheus histogram with -// fixed values for the count, sum, and bucket counts. As those parameters -// cannot be changed, the returned value does not implement the Histogram -// interface (but only the Metric interface). Users of this package will not -// have much use for it in regular operations. However, when implementing custom -// Collectors, it is useful as a throw-away metric that is generated on the fly -// to send it to Prometheus in the Collect method. -// -// buckets is a map of upper bounds to cumulative counts, excluding the +Inf -// bucket. -// -// NewConstHistogram returns an error if the length of labelValues is not -// consistent with the variable labels in Desc or if Desc is invalid. -func NewConstHistogram( - desc *Desc, - count uint64, - sum float64, - buckets map[float64]uint64, - labelValues ...string, -) (Metric, error) { - if desc.err != nil { - return nil, desc.err - } - if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { - return nil, err - } - return &constHistogram{ - desc: desc, - count: count, - sum: sum, - buckets: buckets, - labelPairs: makeLabelPairs(desc, labelValues), - }, nil -} - -// MustNewConstHistogram is a version of NewConstHistogram that panics where -// NewConstMetric would have returned an error. -func MustNewConstHistogram( - desc *Desc, - count uint64, - sum float64, - buckets map[float64]uint64, - labelValues ...string, -) Metric { - m, err := NewConstHistogram(desc, count, sum, buckets, labelValues...) - if err != nil { - panic(err) - } - return m -} - -type buckSort []*dto.Bucket - -func (s buckSort) Len() int { - return len(s) -} - -func (s buckSort) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s buckSort) Less(i, j int) bool { - return s[i].GetUpperBound() < s[j].GetUpperBound() -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go deleted file mode 100644 index 351c26e1..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 internal - -import ( - "sort" - - dto "github.com/prometheus/client_model/go" -) - -// metricSorter is a sortable slice of *dto.Metric. -type metricSorter []*dto.Metric - -func (s metricSorter) Len() int { - return len(s) -} - -func (s metricSorter) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s metricSorter) Less(i, j int) bool { - if len(s[i].Label) != len(s[j].Label) { - // This should not happen. The metrics are - // inconsistent. However, we have to deal with the fact, as - // people might use custom collectors or metric family injection - // to create inconsistent metrics. So let's simply compare the - // number of labels in this case. That will still yield - // reproducible sorting. - return len(s[i].Label) < len(s[j].Label) - } - for n, lp := range s[i].Label { - vi := lp.GetValue() - vj := s[j].Label[n].GetValue() - if vi != vj { - return vi < vj - } - } - - // We should never arrive here. Multiple metrics with the same - // label set in the same scrape will lead to undefined ingestion - // behavior. However, as above, we have to provide stable sorting - // here, even for inconsistent metrics. So sort equal metrics - // by their timestamp, with missing timestamps (implying "now") - // coming last. - if s[i].TimestampMs == nil { - return false - } - if s[j].TimestampMs == nil { - return true - } - return s[i].GetTimestampMs() < s[j].GetTimestampMs() -} - -// NormalizeMetricFamilies returns a MetricFamily slice with empty -// MetricFamilies pruned and the remaining MetricFamilies sorted by name within -// the slice, with the contained Metrics sorted within each MetricFamily. -func NormalizeMetricFamilies(metricFamiliesByName map[string]*dto.MetricFamily) []*dto.MetricFamily { - for _, mf := range metricFamiliesByName { - sort.Sort(metricSorter(mf.Metric)) - } - names := make([]string, 0, len(metricFamiliesByName)) - for name, mf := range metricFamiliesByName { - if len(mf.Metric) > 0 { - names = append(names, name) - } - } - sort.Strings(names) - result := make([]*dto.MetricFamily, 0, len(names)) - for _, name := range names { - result = append(result, metricFamiliesByName[name]) - } - return result -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/labels.go b/vendor/github.com/prometheus/client_golang/prometheus/labels.go deleted file mode 100644 index 2744443a..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/labels.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 prometheus - -import ( - "errors" - "fmt" - "strings" - "unicode/utf8" - - "github.com/prometheus/common/model" -) - -// Labels represents a collection of label name -> value mappings. This type is -// commonly used with the With(Labels) and GetMetricWith(Labels) methods of -// metric vector Collectors, e.g.: -// myVec.With(Labels{"code": "404", "method": "GET"}).Add(42) -// -// The other use-case is the specification of constant label pairs in Opts or to -// create a Desc. -type Labels map[string]string - -// reservedLabelPrefix is a prefix which is not legal in user-supplied -// label names. -const reservedLabelPrefix = "__" - -var errInconsistentCardinality = errors.New("inconsistent label cardinality") - -func makeInconsistentCardinalityError(fqName string, labels, labelValues []string) error { - return fmt.Errorf( - "%s: %q has %d variable labels named %q but %d values %q were provided", - errInconsistentCardinality, fqName, - len(labels), labels, - len(labelValues), labelValues, - ) -} - -func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error { - if len(labels) != expectedNumberOfValues { - return fmt.Errorf( - "%s: expected %d label values but got %d in %#v", - errInconsistentCardinality, expectedNumberOfValues, - len(labels), labels, - ) - } - - for name, val := range labels { - if !utf8.ValidString(val) { - return fmt.Errorf("label %s: value %q is not valid UTF-8", name, val) - } - } - - return nil -} - -func validateLabelValues(vals []string, expectedNumberOfValues int) error { - if len(vals) != expectedNumberOfValues { - return fmt.Errorf( - "%s: expected %d label values but got %d in %#v", - errInconsistentCardinality, expectedNumberOfValues, - len(vals), vals, - ) - } - - for _, val := range vals { - if !utf8.ValidString(val) { - return fmt.Errorf("label value %q is not valid UTF-8", val) - } - } - - return nil -} - -func checkLabelName(l string) bool { - return model.LabelName(l).IsValid() && !strings.HasPrefix(l, reservedLabelPrefix) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go deleted file mode 100644 index 0df1eff8..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/metric.go +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "strings" - "time" - - "github.com/golang/protobuf/proto" - "github.com/prometheus/common/model" - - dto "github.com/prometheus/client_model/go" -) - -var separatorByteSlice = []byte{model.SeparatorByte} // For convenient use with xxhash. - -// A Metric models a single sample value with its meta data being exported to -// Prometheus. Implementations of Metric in this package are Gauge, Counter, -// Histogram, Summary, and Untyped. -type Metric interface { - // Desc returns the descriptor for the Metric. This method idempotently - // returns the same descriptor throughout the lifetime of the - // Metric. The returned descriptor is immutable by contract. A Metric - // unable to describe itself must return an invalid descriptor (created - // with NewInvalidDesc). - Desc() *Desc - // Write encodes the Metric into a "Metric" Protocol Buffer data - // transmission object. - // - // Metric implementations must observe concurrency safety as reads of - // this metric may occur at any time, and any blocking occurs at the - // expense of total performance of rendering all registered - // metrics. Ideally, Metric implementations should support concurrent - // readers. - // - // While populating dto.Metric, it is the responsibility of the - // implementation to ensure validity of the Metric protobuf (like valid - // UTF-8 strings or syntactically valid metric and label names). It is - // recommended to sort labels lexicographically. Callers of Write should - // still make sure of sorting if they depend on it. - Write(*dto.Metric) error - // TODO(beorn7): The original rationale of passing in a pre-allocated - // dto.Metric protobuf to save allocations has disappeared. The - // signature of this method should be changed to "Write() (*dto.Metric, - // error)". -} - -// Opts bundles the options for creating most Metric types. Each metric -// implementation XXX has its own XXXOpts type, but in most cases, it is just be -// an alias of this type (which might change when the requirement arises.) -// -// It is mandatory to set Name to a non-empty string. All other fields are -// optional and can safely be left at their zero value, although it is strongly -// encouraged to set a Help string. -type Opts struct { - // Namespace, Subsystem, and Name are components of the fully-qualified - // name of the Metric (created by joining these components with - // "_"). Only Name is mandatory, the others merely help structuring the - // name. Note that the fully-qualified name of the metric must be a - // valid Prometheus metric name. - Namespace string - Subsystem string - Name string - - // Help provides information about this metric. - // - // Metrics with the same fully-qualified name must have the same Help - // string. - Help string - - // ConstLabels are used to attach fixed labels to this metric. Metrics - // with the same fully-qualified name must have the same label names in - // their ConstLabels. - // - // ConstLabels are only used rarely. In particular, do not use them to - // attach the same labels to all your metrics. Those use cases are - // better covered by target labels set by the scraping Prometheus - // server, or by one specific metric (e.g. a build_info or a - // machine_role metric). See also - // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels - ConstLabels Labels -} - -// BuildFQName joins the given three name components by "_". Empty name -// components are ignored. If the name parameter itself is empty, an empty -// string is returned, no matter what. Metric implementations included in this -// library use this function internally to generate the fully-qualified metric -// name from the name component in their Opts. Users of the library will only -// need this function if they implement their own Metric or instantiate a Desc -// (with NewDesc) directly. -func BuildFQName(namespace, subsystem, name string) string { - if name == "" { - return "" - } - switch { - case namespace != "" && subsystem != "": - return strings.Join([]string{namespace, subsystem, name}, "_") - case namespace != "": - return strings.Join([]string{namespace, name}, "_") - case subsystem != "": - return strings.Join([]string{subsystem, name}, "_") - } - return name -} - -// labelPairSorter implements sort.Interface. It is used to sort a slice of -// dto.LabelPair pointers. -type labelPairSorter []*dto.LabelPair - -func (s labelPairSorter) Len() int { - return len(s) -} - -func (s labelPairSorter) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s labelPairSorter) Less(i, j int) bool { - return s[i].GetName() < s[j].GetName() -} - -type invalidMetric struct { - desc *Desc - err error -} - -// NewInvalidMetric returns a metric whose Write method always returns the -// provided error. It is useful if a Collector finds itself unable to collect -// a metric and wishes to report an error to the registry. -func NewInvalidMetric(desc *Desc, err error) Metric { - return &invalidMetric{desc, err} -} - -func (m *invalidMetric) Desc() *Desc { return m.desc } - -func (m *invalidMetric) Write(*dto.Metric) error { return m.err } - -type timestampedMetric struct { - Metric - t time.Time -} - -func (m timestampedMetric) Write(pb *dto.Metric) error { - e := m.Metric.Write(pb) - pb.TimestampMs = proto.Int64(m.t.Unix()*1000 + int64(m.t.Nanosecond()/1000000)) - return e -} - -// NewMetricWithTimestamp returns a new Metric wrapping the provided Metric in a -// way that it has an explicit timestamp set to the provided Time. This is only -// useful in rare cases as the timestamp of a Prometheus metric should usually -// be set by the Prometheus server during scraping. Exceptions include mirroring -// metrics with given timestamps from other metric -// sources. -// -// NewMetricWithTimestamp works best with MustNewConstMetric, -// MustNewConstHistogram, and MustNewConstSummary, see example. -// -// Currently, the exposition formats used by Prometheus are limited to -// millisecond resolution. Thus, the provided time will be rounded down to the -// next full millisecond value. -func NewMetricWithTimestamp(t time.Time, m Metric) Metric { - return timestampedMetric{Metric: m, t: t} -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/observer.go b/vendor/github.com/prometheus/client_golang/prometheus/observer.go deleted file mode 100644 index 5806cd09..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/observer.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// 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 prometheus - -// Observer is the interface that wraps the Observe method, which is used by -// Histogram and Summary to add observations. -type Observer interface { - Observe(float64) -} - -// The ObserverFunc type is an adapter to allow the use of ordinary -// functions as Observers. If f is a function with the appropriate -// signature, ObserverFunc(f) is an Observer that calls f. -// -// This adapter is usually used in connection with the Timer type, and there are -// two general use cases: -// -// The most common one is to use a Gauge as the Observer for a Timer. -// See the "Gauge" Timer example. -// -// The more advanced use case is to create a function that dynamically decides -// which Observer to use for observing the duration. See the "Complex" Timer -// example. -type ObserverFunc func(float64) - -// Observe calls f(value). It implements Observer. -func (f ObserverFunc) Observe(value float64) { - f(value) -} - -// ObserverVec is an interface implemented by `HistogramVec` and `SummaryVec`. -type ObserverVec interface { - GetMetricWith(Labels) (Observer, error) - GetMetricWithLabelValues(lvs ...string) (Observer, error) - With(Labels) Observer - WithLabelValues(...string) Observer - CurryWith(Labels) (ObserverVec, error) - MustCurryWith(Labels) ObserverVec - - Collector -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go deleted file mode 100644 index 9b809794..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 prometheus - -import ( - "errors" - "os" -) - -type processCollector struct { - collectFn func(chan<- Metric) - pidFn func() (int, error) - reportErrors bool - cpuTotal *Desc - openFDs, maxFDs *Desc - vsize, maxVsize *Desc - rss *Desc - startTime *Desc -} - -// ProcessCollectorOpts defines the behavior of a process metrics collector -// created with NewProcessCollector. -type ProcessCollectorOpts struct { - // PidFn returns the PID of the process the collector collects metrics - // for. It is called upon each collection. By default, the PID of the - // current process is used, as determined on construction time by - // calling os.Getpid(). - PidFn func() (int, error) - // If non-empty, each of the collected metrics is prefixed by the - // provided string and an underscore ("_"). - Namespace string - // If true, any error encountered during collection is reported as an - // invalid metric (see NewInvalidMetric). Otherwise, errors are ignored - // and the collected metrics will be incomplete. (Possibly, no metrics - // will be collected at all.) While that's usually not desired, it is - // appropriate for the common "mix-in" of process metrics, where process - // metrics are nice to have, but failing to collect them should not - // disrupt the collection of the remaining metrics. - ReportErrors bool -} - -// NewProcessCollector returns a collector which exports the current state of -// process metrics including CPU, memory and file descriptor usage as well as -// the process start time. The detailed behavior is defined by the provided -// ProcessCollectorOpts. The zero value of ProcessCollectorOpts creates a -// collector for the current process with an empty namespace string and no error -// reporting. -// -// The collector only works on operating systems with a Linux-style proc -// filesystem and on Microsoft Windows. On other operating systems, it will not -// collect any metrics. -func NewProcessCollector(opts ProcessCollectorOpts) Collector { - ns := "" - if len(opts.Namespace) > 0 { - ns = opts.Namespace + "_" - } - - c := &processCollector{ - reportErrors: opts.ReportErrors, - cpuTotal: NewDesc( - ns+"process_cpu_seconds_total", - "Total user and system CPU time spent in seconds.", - nil, nil, - ), - openFDs: NewDesc( - ns+"process_open_fds", - "Number of open file descriptors.", - nil, nil, - ), - maxFDs: NewDesc( - ns+"process_max_fds", - "Maximum number of open file descriptors.", - nil, nil, - ), - vsize: NewDesc( - ns+"process_virtual_memory_bytes", - "Virtual memory size in bytes.", - nil, nil, - ), - maxVsize: NewDesc( - ns+"process_virtual_memory_max_bytes", - "Maximum amount of virtual memory available in bytes.", - nil, nil, - ), - rss: NewDesc( - ns+"process_resident_memory_bytes", - "Resident memory size in bytes.", - nil, nil, - ), - startTime: NewDesc( - ns+"process_start_time_seconds", - "Start time of the process since unix epoch in seconds.", - nil, nil, - ), - } - - if opts.PidFn == nil { - pid := os.Getpid() - c.pidFn = func() (int, error) { return pid, nil } - } else { - c.pidFn = opts.PidFn - } - - // Set up process metric collection if supported by the runtime. - if canCollectProcess() { - c.collectFn = c.processCollect - } else { - c.collectFn = func(ch chan<- Metric) { - c.reportError(ch, nil, errors.New("process metrics not supported on this platform")) - } - } - - return c -} - -// Describe returns all descriptions of the collector. -func (c *processCollector) Describe(ch chan<- *Desc) { - ch <- c.cpuTotal - ch <- c.openFDs - ch <- c.maxFDs - ch <- c.vsize - ch <- c.maxVsize - ch <- c.rss - ch <- c.startTime -} - -// Collect returns the current state of all metrics of the collector. -func (c *processCollector) Collect(ch chan<- Metric) { - c.collectFn(ch) -} - -func (c *processCollector) reportError(ch chan<- Metric, desc *Desc, err error) { - if !c.reportErrors { - return - } - if desc == nil { - desc = NewInvalidDesc(err) - } - ch <- NewInvalidMetric(desc, err) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go deleted file mode 100644 index 3117461c..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build !windows - -package prometheus - -import ( - "github.com/prometheus/procfs" -) - -func canCollectProcess() bool { - _, err := procfs.NewDefaultFS() - return err == nil -} - -func (c *processCollector) processCollect(ch chan<- Metric) { - pid, err := c.pidFn() - if err != nil { - c.reportError(ch, nil, err) - return - } - - p, err := procfs.NewProc(pid) - if err != nil { - c.reportError(ch, nil, err) - return - } - - if stat, err := p.Stat(); err == nil { - ch <- MustNewConstMetric(c.cpuTotal, CounterValue, stat.CPUTime()) - ch <- MustNewConstMetric(c.vsize, GaugeValue, float64(stat.VirtualMemory())) - ch <- MustNewConstMetric(c.rss, GaugeValue, float64(stat.ResidentMemory())) - if startTime, err := stat.StartTime(); err == nil { - ch <- MustNewConstMetric(c.startTime, GaugeValue, startTime) - } else { - c.reportError(ch, c.startTime, err) - } - } else { - c.reportError(ch, nil, err) - } - - if fds, err := p.FileDescriptorsLen(); err == nil { - ch <- MustNewConstMetric(c.openFDs, GaugeValue, float64(fds)) - } else { - c.reportError(ch, c.openFDs, err) - } - - if limits, err := p.Limits(); err == nil { - ch <- MustNewConstMetric(c.maxFDs, GaugeValue, float64(limits.OpenFiles)) - ch <- MustNewConstMetric(c.maxVsize, GaugeValue, float64(limits.AddressSpace)) - } else { - c.reportError(ch, nil, err) - } -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go deleted file mode 100644 index e0b935d1..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 prometheus - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -func canCollectProcess() bool { - return true -} - -var ( - modpsapi = syscall.NewLazyDLL("psapi.dll") - modkernel32 = syscall.NewLazyDLL("kernel32.dll") - - procGetProcessMemoryInfo = modpsapi.NewProc("GetProcessMemoryInfo") - procGetProcessHandleCount = modkernel32.NewProc("GetProcessHandleCount") -) - -type processMemoryCounters struct { - // https://docs.microsoft.com/en-us/windows/desktop/api/psapi/ns-psapi-_process_memory_counters_ex - _ uint32 - PageFaultCount uint32 - PeakWorkingSetSize uint64 - WorkingSetSize uint64 - QuotaPeakPagedPoolUsage uint64 - QuotaPagedPoolUsage uint64 - QuotaPeakNonPagedPoolUsage uint64 - QuotaNonPagedPoolUsage uint64 - PagefileUsage uint64 - PeakPagefileUsage uint64 - PrivateUsage uint64 -} - -func getProcessMemoryInfo(handle windows.Handle) (processMemoryCounters, error) { - mem := processMemoryCounters{} - r1, _, err := procGetProcessMemoryInfo.Call( - uintptr(handle), - uintptr(unsafe.Pointer(&mem)), - uintptr(unsafe.Sizeof(mem)), - ) - if r1 != 1 { - return mem, err - } else { - return mem, nil - } -} - -func getProcessHandleCount(handle windows.Handle) (uint32, error) { - var count uint32 - r1, _, err := procGetProcessHandleCount.Call( - uintptr(handle), - uintptr(unsafe.Pointer(&count)), - ) - if r1 != 1 { - return 0, err - } else { - return count, nil - } -} - -func (c *processCollector) processCollect(ch chan<- Metric) { - h, err := windows.GetCurrentProcess() - if err != nil { - c.reportError(ch, nil, err) - return - } - - var startTime, exitTime, kernelTime, userTime windows.Filetime - err = windows.GetProcessTimes(h, &startTime, &exitTime, &kernelTime, &userTime) - if err != nil { - c.reportError(ch, nil, err) - return - } - ch <- MustNewConstMetric(c.startTime, GaugeValue, float64(startTime.Nanoseconds()/1e9)) - ch <- MustNewConstMetric(c.cpuTotal, CounterValue, fileTimeToSeconds(kernelTime)+fileTimeToSeconds(userTime)) - - mem, err := getProcessMemoryInfo(h) - if err != nil { - c.reportError(ch, nil, err) - return - } - ch <- MustNewConstMetric(c.vsize, GaugeValue, float64(mem.PrivateUsage)) - ch <- MustNewConstMetric(c.rss, GaugeValue, float64(mem.WorkingSetSize)) - - handles, err := getProcessHandleCount(h) - if err != nil { - c.reportError(ch, nil, err) - return - } - ch <- MustNewConstMetric(c.openFDs, GaugeValue, float64(handles)) - ch <- MustNewConstMetric(c.maxFDs, GaugeValue, float64(16*1024*1024)) // Windows has a hard-coded max limit, not per-process. -} - -func fileTimeToSeconds(ft windows.Filetime) float64 { - return float64(uint64(ft.HighDateTime)<<32+uint64(ft.LowDateTime)) / 1e7 -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go deleted file mode 100644 index d1354b10..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go +++ /dev/null @@ -1,366 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// 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 promhttp - -import ( - "bufio" - "io" - "net" - "net/http" -) - -const ( - closeNotifier = 1 << iota - flusher - hijacker - readerFrom - pusher -) - -type delegator interface { - http.ResponseWriter - - Status() int - Written() int64 -} - -type responseWriterDelegator struct { - http.ResponseWriter - - status int - written int64 - wroteHeader bool - observeWriteHeader func(int) -} - -func (r *responseWriterDelegator) Status() int { - return r.status -} - -func (r *responseWriterDelegator) Written() int64 { - return r.written -} - -func (r *responseWriterDelegator) WriteHeader(code int) { - r.status = code - r.wroteHeader = true - r.ResponseWriter.WriteHeader(code) - if r.observeWriteHeader != nil { - r.observeWriteHeader(code) - } -} - -func (r *responseWriterDelegator) Write(b []byte) (int, error) { - // If applicable, call WriteHeader here so that observeWriteHeader is - // handled appropriately. - if !r.wroteHeader { - r.WriteHeader(http.StatusOK) - } - n, err := r.ResponseWriter.Write(b) - r.written += int64(n) - return n, err -} - -type closeNotifierDelegator struct{ *responseWriterDelegator } -type flusherDelegator struct{ *responseWriterDelegator } -type hijackerDelegator struct{ *responseWriterDelegator } -type readerFromDelegator struct{ *responseWriterDelegator } -type pusherDelegator struct{ *responseWriterDelegator } - -func (d closeNotifierDelegator) CloseNotify() <-chan bool { - //lint:ignore SA1019 http.CloseNotifier is deprecated but we don't want to - //remove support from client_golang yet. - return d.ResponseWriter.(http.CloseNotifier).CloseNotify() -} -func (d flusherDelegator) Flush() { - // If applicable, call WriteHeader here so that observeWriteHeader is - // handled appropriately. - if !d.wroteHeader { - d.WriteHeader(http.StatusOK) - } - d.ResponseWriter.(http.Flusher).Flush() -} -func (d hijackerDelegator) Hijack() (net.Conn, *bufio.ReadWriter, error) { - return d.ResponseWriter.(http.Hijacker).Hijack() -} -func (d readerFromDelegator) ReadFrom(re io.Reader) (int64, error) { - // If applicable, call WriteHeader here so that observeWriteHeader is - // handled appropriately. - if !d.wroteHeader { - d.WriteHeader(http.StatusOK) - } - n, err := d.ResponseWriter.(io.ReaderFrom).ReadFrom(re) - d.written += n - return n, err -} -func (d pusherDelegator) Push(target string, opts *http.PushOptions) error { - return d.ResponseWriter.(http.Pusher).Push(target, opts) -} - -var pickDelegator = make([]func(*responseWriterDelegator) delegator, 32) - -func init() { - // TODO(beorn7): Code generation would help here. - pickDelegator[0] = func(d *responseWriterDelegator) delegator { // 0 - return d - } - pickDelegator[closeNotifier] = func(d *responseWriterDelegator) delegator { // 1 - return closeNotifierDelegator{d} - } - pickDelegator[flusher] = func(d *responseWriterDelegator) delegator { // 2 - return flusherDelegator{d} - } - pickDelegator[flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 3 - return struct { - *responseWriterDelegator - http.Flusher - http.CloseNotifier - }{d, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[hijacker] = func(d *responseWriterDelegator) delegator { // 4 - return hijackerDelegator{d} - } - pickDelegator[hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 5 - return struct { - *responseWriterDelegator - http.Hijacker - http.CloseNotifier - }{d, hijackerDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 6 - return struct { - *responseWriterDelegator - http.Hijacker - http.Flusher - }{d, hijackerDelegator{d}, flusherDelegator{d}} - } - pickDelegator[hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 7 - return struct { - *responseWriterDelegator - http.Hijacker - http.Flusher - http.CloseNotifier - }{d, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[readerFrom] = func(d *responseWriterDelegator) delegator { // 8 - return readerFromDelegator{d} - } - pickDelegator[readerFrom+closeNotifier] = func(d *responseWriterDelegator) delegator { // 9 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.CloseNotifier - }{d, readerFromDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[readerFrom+flusher] = func(d *responseWriterDelegator) delegator { // 10 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Flusher - }{d, readerFromDelegator{d}, flusherDelegator{d}} - } - pickDelegator[readerFrom+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 11 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Flusher - http.CloseNotifier - }{d, readerFromDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[readerFrom+hijacker] = func(d *responseWriterDelegator) delegator { // 12 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Hijacker - }{d, readerFromDelegator{d}, hijackerDelegator{d}} - } - pickDelegator[readerFrom+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 13 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Hijacker - http.CloseNotifier - }{d, readerFromDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[readerFrom+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 14 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Hijacker - http.Flusher - }{d, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} - } - pickDelegator[readerFrom+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 15 - return struct { - *responseWriterDelegator - io.ReaderFrom - http.Hijacker - http.Flusher - http.CloseNotifier - }{d, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher] = func(d *responseWriterDelegator) delegator { // 16 - return pusherDelegator{d} - } - pickDelegator[pusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 17 - return struct { - *responseWriterDelegator - http.Pusher - http.CloseNotifier - }{d, pusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+flusher] = func(d *responseWriterDelegator) delegator { // 18 - return struct { - *responseWriterDelegator - http.Pusher - http.Flusher - }{d, pusherDelegator{d}, flusherDelegator{d}} - } - pickDelegator[pusher+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 19 - return struct { - *responseWriterDelegator - http.Pusher - http.Flusher - http.CloseNotifier - }{d, pusherDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+hijacker] = func(d *responseWriterDelegator) delegator { // 20 - return struct { - *responseWriterDelegator - http.Pusher - http.Hijacker - }{d, pusherDelegator{d}, hijackerDelegator{d}} - } - pickDelegator[pusher+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 21 - return struct { - *responseWriterDelegator - http.Pusher - http.Hijacker - http.CloseNotifier - }{d, pusherDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 22 - return struct { - *responseWriterDelegator - http.Pusher - http.Hijacker - http.Flusher - }{d, pusherDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} - } - pickDelegator[pusher+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { //23 - return struct { - *responseWriterDelegator - http.Pusher - http.Hijacker - http.Flusher - http.CloseNotifier - }{d, pusherDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+readerFrom] = func(d *responseWriterDelegator) delegator { // 24 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - }{d, pusherDelegator{d}, readerFromDelegator{d}} - } - pickDelegator[pusher+readerFrom+closeNotifier] = func(d *responseWriterDelegator) delegator { // 25 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.CloseNotifier - }{d, pusherDelegator{d}, readerFromDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+readerFrom+flusher] = func(d *responseWriterDelegator) delegator { // 26 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Flusher - }{d, pusherDelegator{d}, readerFromDelegator{d}, flusherDelegator{d}} - } - pickDelegator[pusher+readerFrom+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 27 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Flusher - http.CloseNotifier - }{d, pusherDelegator{d}, readerFromDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+readerFrom+hijacker] = func(d *responseWriterDelegator) delegator { // 28 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Hijacker - }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}} - } - pickDelegator[pusher+readerFrom+hijacker+closeNotifier] = func(d *responseWriterDelegator) delegator { // 29 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Hijacker - http.CloseNotifier - }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, closeNotifierDelegator{d}} - } - pickDelegator[pusher+readerFrom+hijacker+flusher] = func(d *responseWriterDelegator) delegator { // 30 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Hijacker - http.Flusher - }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}} - } - pickDelegator[pusher+readerFrom+hijacker+flusher+closeNotifier] = func(d *responseWriterDelegator) delegator { // 31 - return struct { - *responseWriterDelegator - http.Pusher - io.ReaderFrom - http.Hijacker - http.Flusher - http.CloseNotifier - }{d, pusherDelegator{d}, readerFromDelegator{d}, hijackerDelegator{d}, flusherDelegator{d}, closeNotifierDelegator{d}} - } -} - -func newDelegator(w http.ResponseWriter, observeWriteHeaderFunc func(int)) delegator { - d := &responseWriterDelegator{ - ResponseWriter: w, - observeWriteHeader: observeWriteHeaderFunc, - } - - id := 0 - //lint:ignore SA1019 http.CloseNotifier is deprecated but we don't want to - //remove support from client_golang yet. - if _, ok := w.(http.CloseNotifier); ok { - id += closeNotifier - } - if _, ok := w.(http.Flusher); ok { - id += flusher - } - if _, ok := w.(http.Hijacker); ok { - id += hijacker - } - if _, ok := w.(io.ReaderFrom); ok { - id += readerFrom - } - if _, ok := w.(http.Pusher); ok { - id += pusher - } - - return pickDelegator[id](d) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go deleted file mode 100644 index cea5a90f..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go +++ /dev/null @@ -1,349 +0,0 @@ -// Copyright 2016 The Prometheus Authors -// 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 promhttp provides tooling around HTTP servers and clients. -// -// First, the package allows the creation of http.Handler instances to expose -// Prometheus metrics via HTTP. promhttp.Handler acts on the -// prometheus.DefaultGatherer. With HandlerFor, you can create a handler for a -// custom registry or anything that implements the Gatherer interface. It also -// allows the creation of handlers that act differently on errors or allow to -// log errors. -// -// Second, the package provides tooling to instrument instances of http.Handler -// via middleware. Middleware wrappers follow the naming scheme -// InstrumentHandlerX, where X describes the intended use of the middleware. -// See each function's doc comment for specific details. -// -// Finally, the package allows for an http.RoundTripper to be instrumented via -// middleware. Middleware wrappers follow the naming scheme -// InstrumentRoundTripperX, where X describes the intended use of the -// middleware. See each function's doc comment for specific details. -package promhttp - -import ( - "compress/gzip" - "fmt" - "io" - "net/http" - "strings" - "sync" - "time" - - "github.com/prometheus/common/expfmt" - - "github.com/prometheus/client_golang/prometheus" -) - -const ( - contentTypeHeader = "Content-Type" - contentEncodingHeader = "Content-Encoding" - acceptEncodingHeader = "Accept-Encoding" -) - -var gzipPool = sync.Pool{ - New: func() interface{} { - return gzip.NewWriter(nil) - }, -} - -// Handler returns an http.Handler for the prometheus.DefaultGatherer, using -// default HandlerOpts, i.e. it reports the first error as an HTTP error, it has -// no error logging, and it applies compression if requested by the client. -// -// The returned http.Handler is already instrumented using the -// InstrumentMetricHandler function and the prometheus.DefaultRegisterer. If you -// create multiple http.Handlers by separate calls of the Handler function, the -// metrics used for instrumentation will be shared between them, providing -// global scrape counts. -// -// This function is meant to cover the bulk of basic use cases. If you are doing -// anything that requires more customization (including using a non-default -// Gatherer, different instrumentation, and non-default HandlerOpts), use the -// HandlerFor function. See there for details. -func Handler() http.Handler { - return InstrumentMetricHandler( - prometheus.DefaultRegisterer, HandlerFor(prometheus.DefaultGatherer, HandlerOpts{}), - ) -} - -// HandlerFor returns an uninstrumented http.Handler for the provided -// Gatherer. The behavior of the Handler is defined by the provided -// HandlerOpts. Thus, HandlerFor is useful to create http.Handlers for custom -// Gatherers, with non-default HandlerOpts, and/or with custom (or no) -// instrumentation. Use the InstrumentMetricHandler function to apply the same -// kind of instrumentation as it is used by the Handler function. -func HandlerFor(reg prometheus.Gatherer, opts HandlerOpts) http.Handler { - var ( - inFlightSem chan struct{} - errCnt = prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "promhttp_metric_handler_errors_total", - Help: "Total number of internal errors encountered by the promhttp metric handler.", - }, - []string{"cause"}, - ) - ) - - if opts.MaxRequestsInFlight > 0 { - inFlightSem = make(chan struct{}, opts.MaxRequestsInFlight) - } - if opts.Registry != nil { - // Initialize all possibilites that can occur below. - errCnt.WithLabelValues("gathering") - errCnt.WithLabelValues("encoding") - if err := opts.Registry.Register(errCnt); err != nil { - if are, ok := err.(prometheus.AlreadyRegisteredError); ok { - errCnt = are.ExistingCollector.(*prometheus.CounterVec) - } else { - panic(err) - } - } - } - - h := http.HandlerFunc(func(rsp http.ResponseWriter, req *http.Request) { - if inFlightSem != nil { - select { - case inFlightSem <- struct{}{}: // All good, carry on. - defer func() { <-inFlightSem }() - default: - http.Error(rsp, fmt.Sprintf( - "Limit of concurrent requests reached (%d), try again later.", opts.MaxRequestsInFlight, - ), http.StatusServiceUnavailable) - return - } - } - mfs, err := reg.Gather() - if err != nil { - if opts.ErrorLog != nil { - opts.ErrorLog.Println("error gathering metrics:", err) - } - errCnt.WithLabelValues("gathering").Inc() - switch opts.ErrorHandling { - case PanicOnError: - panic(err) - case ContinueOnError: - if len(mfs) == 0 { - // Still report the error if no metrics have been gathered. - httpError(rsp, err) - return - } - case HTTPErrorOnError: - httpError(rsp, err) - return - } - } - - contentType := expfmt.Negotiate(req.Header) - header := rsp.Header() - header.Set(contentTypeHeader, string(contentType)) - - w := io.Writer(rsp) - if !opts.DisableCompression && gzipAccepted(req.Header) { - header.Set(contentEncodingHeader, "gzip") - gz := gzipPool.Get().(*gzip.Writer) - defer gzipPool.Put(gz) - - gz.Reset(w) - defer gz.Close() - - w = gz - } - - enc := expfmt.NewEncoder(w, contentType) - - var lastErr error - for _, mf := range mfs { - if err := enc.Encode(mf); err != nil { - lastErr = err - if opts.ErrorLog != nil { - opts.ErrorLog.Println("error encoding and sending metric family:", err) - } - errCnt.WithLabelValues("encoding").Inc() - switch opts.ErrorHandling { - case PanicOnError: - panic(err) - case ContinueOnError: - // Handled later. - case HTTPErrorOnError: - httpError(rsp, err) - return - } - } - } - - if lastErr != nil { - httpError(rsp, lastErr) - } - }) - - if opts.Timeout <= 0 { - return h - } - return http.TimeoutHandler(h, opts.Timeout, fmt.Sprintf( - "Exceeded configured timeout of %v.\n", - opts.Timeout, - )) -} - -// InstrumentMetricHandler is usually used with an http.Handler returned by the -// HandlerFor function. It instruments the provided http.Handler with two -// metrics: A counter vector "promhttp_metric_handler_requests_total" to count -// scrapes partitioned by HTTP status code, and a gauge -// "promhttp_metric_handler_requests_in_flight" to track the number of -// simultaneous scrapes. This function idempotently registers collectors for -// both metrics with the provided Registerer. It panics if the registration -// fails. The provided metrics are useful to see how many scrapes hit the -// monitored target (which could be from different Prometheus servers or other -// scrapers), and how often they overlap (which would result in more than one -// scrape in flight at the same time). Note that the scrapes-in-flight gauge -// will contain the scrape by which it is exposed, while the scrape counter will -// only get incremented after the scrape is complete (as only then the status -// code is known). For tracking scrape durations, use the -// "scrape_duration_seconds" gauge created by the Prometheus server upon each -// scrape. -func InstrumentMetricHandler(reg prometheus.Registerer, handler http.Handler) http.Handler { - cnt := prometheus.NewCounterVec( - prometheus.CounterOpts{ - Name: "promhttp_metric_handler_requests_total", - Help: "Total number of scrapes by HTTP status code.", - }, - []string{"code"}, - ) - // Initialize the most likely HTTP status codes. - cnt.WithLabelValues("200") - cnt.WithLabelValues("500") - cnt.WithLabelValues("503") - if err := reg.Register(cnt); err != nil { - if are, ok := err.(prometheus.AlreadyRegisteredError); ok { - cnt = are.ExistingCollector.(*prometheus.CounterVec) - } else { - panic(err) - } - } - - gge := prometheus.NewGauge(prometheus.GaugeOpts{ - Name: "promhttp_metric_handler_requests_in_flight", - Help: "Current number of scrapes being served.", - }) - if err := reg.Register(gge); err != nil { - if are, ok := err.(prometheus.AlreadyRegisteredError); ok { - gge = are.ExistingCollector.(prometheus.Gauge) - } else { - panic(err) - } - } - - return InstrumentHandlerCounter(cnt, InstrumentHandlerInFlight(gge, handler)) -} - -// HandlerErrorHandling defines how a Handler serving metrics will handle -// errors. -type HandlerErrorHandling int - -// These constants cause handlers serving metrics to behave as described if -// errors are encountered. -const ( - // Serve an HTTP status code 500 upon the first error - // encountered. Report the error message in the body. - HTTPErrorOnError HandlerErrorHandling = iota - // Ignore errors and try to serve as many metrics as possible. However, - // if no metrics can be served, serve an HTTP status code 500 and the - // last error message in the body. Only use this in deliberate "best - // effort" metrics collection scenarios. In this case, it is highly - // recommended to provide other means of detecting errors: By setting an - // ErrorLog in HandlerOpts, the errors are logged. By providing a - // Registry in HandlerOpts, the exposed metrics include an error counter - // "promhttp_metric_handler_errors_total", which can be used for - // alerts. - ContinueOnError - // Panic upon the first error encountered (useful for "crash only" apps). - PanicOnError -) - -// Logger is the minimal interface HandlerOpts needs for logging. Note that -// log.Logger from the standard library implements this interface, and it is -// easy to implement by custom loggers, if they don't do so already anyway. -type Logger interface { - Println(v ...interface{}) -} - -// HandlerOpts specifies options how to serve metrics via an http.Handler. The -// zero value of HandlerOpts is a reasonable default. -type HandlerOpts struct { - // ErrorLog specifies an optional logger for errors collecting and - // serving metrics. If nil, errors are not logged at all. - ErrorLog Logger - // ErrorHandling defines how errors are handled. Note that errors are - // logged regardless of the configured ErrorHandling provided ErrorLog - // is not nil. - ErrorHandling HandlerErrorHandling - // If Registry is not nil, it is used to register a metric - // "promhttp_metric_handler_errors_total", partitioned by "cause". A - // failed registration causes a panic. Note that this error counter is - // different from the instrumentation you get from the various - // InstrumentHandler... helpers. It counts errors that don't necessarily - // result in a non-2xx HTTP status code. There are two typical cases: - // (1) Encoding errors that only happen after streaming of the HTTP body - // has already started (and the status code 200 has been sent). This - // should only happen with custom collectors. (2) Collection errors with - // no effect on the HTTP status code because ErrorHandling is set to - // ContinueOnError. - Registry prometheus.Registerer - // If DisableCompression is true, the handler will never compress the - // response, even if requested by the client. - DisableCompression bool - // The number of concurrent HTTP requests is limited to - // MaxRequestsInFlight. Additional requests are responded to with 503 - // Service Unavailable and a suitable message in the body. If - // MaxRequestsInFlight is 0 or negative, no limit is applied. - MaxRequestsInFlight int - // If handling a request takes longer than Timeout, it is responded to - // with 503 ServiceUnavailable and a suitable Message. No timeout is - // applied if Timeout is 0 or negative. Note that with the current - // implementation, reaching the timeout simply ends the HTTP requests as - // described above (and even that only if sending of the body hasn't - // started yet), while the bulk work of gathering all the metrics keeps - // running in the background (with the eventual result to be thrown - // away). Until the implementation is improved, it is recommended to - // implement a separate timeout in potentially slow Collectors. - Timeout time.Duration -} - -// gzipAccepted returns whether the client will accept gzip-encoded content. -func gzipAccepted(header http.Header) bool { - a := header.Get(acceptEncodingHeader) - parts := strings.Split(a, ",") - for _, part := range parts { - part = strings.TrimSpace(part) - if part == "gzip" || strings.HasPrefix(part, "gzip;") { - return true - } - } - return false -} - -// httpError removes any content-encoding header and then calls http.Error with -// the provided error and http.StatusInternalServerErrer. Error contents is -// supposed to be uncompressed plain text. However, same as with a plain -// http.Error, any header settings will be void if the header has already been -// sent. The error message will still be written to the writer, but it will -// probably be of limited use. -func httpError(rsp http.ResponseWriter, err error) { - rsp.Header().Del(contentEncodingHeader) - http.Error( - rsp, - "An error has occurred while serving metrics:\n\n"+err.Error(), - http.StatusInternalServerError, - ) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go deleted file mode 100644 index 83c49b66..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// 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 promhttp - -import ( - "crypto/tls" - "net/http" - "net/http/httptrace" - "time" - - "github.com/prometheus/client_golang/prometheus" -) - -// The RoundTripperFunc type is an adapter to allow the use of ordinary -// functions as RoundTrippers. If f is a function with the appropriate -// signature, RountTripperFunc(f) is a RoundTripper that calls f. -type RoundTripperFunc func(req *http.Request) (*http.Response, error) - -// RoundTrip implements the RoundTripper interface. -func (rt RoundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) { - return rt(r) -} - -// InstrumentRoundTripperInFlight is a middleware that wraps the provided -// http.RoundTripper. It sets the provided prometheus.Gauge to the number of -// requests currently handled by the wrapped http.RoundTripper. -// -// See the example for ExampleInstrumentRoundTripperDuration for example usage. -func InstrumentRoundTripperInFlight(gauge prometheus.Gauge, next http.RoundTripper) RoundTripperFunc { - return RoundTripperFunc(func(r *http.Request) (*http.Response, error) { - gauge.Inc() - defer gauge.Dec() - return next.RoundTrip(r) - }) -} - -// InstrumentRoundTripperCounter is a middleware that wraps the provided -// http.RoundTripper to observe the request result with the provided CounterVec. -// The CounterVec must have zero, one, or two non-const non-curried labels. For -// those, the only allowed label names are "code" and "method". The function -// panics otherwise. Partitioning of the CounterVec happens by HTTP status code -// and/or HTTP method if the respective instance label names are present in the -// CounterVec. For unpartitioned counting, use a CounterVec with zero labels. -// -// If the wrapped RoundTripper panics or returns a non-nil error, the Counter -// is not incremented. -// -// See the example for ExampleInstrumentRoundTripperDuration for example usage. -func InstrumentRoundTripperCounter(counter *prometheus.CounterVec, next http.RoundTripper) RoundTripperFunc { - code, method := checkLabels(counter) - - return RoundTripperFunc(func(r *http.Request) (*http.Response, error) { - resp, err := next.RoundTrip(r) - if err == nil { - counter.With(labels(code, method, r.Method, resp.StatusCode)).Inc() - } - return resp, err - }) -} - -// InstrumentRoundTripperDuration is a middleware that wraps the provided -// http.RoundTripper to observe the request duration with the provided -// ObserverVec. The ObserverVec must have zero, one, or two non-const -// non-curried labels. For those, the only allowed label names are "code" and -// "method". The function panics otherwise. The Observe method of the Observer -// in the ObserverVec is called with the request duration in -// seconds. Partitioning happens by HTTP status code and/or HTTP method if the -// respective instance label names are present in the ObserverVec. For -// unpartitioned observations, use an ObserverVec with zero labels. Note that -// partitioning of Histograms is expensive and should be used judiciously. -// -// If the wrapped RoundTripper panics or returns a non-nil error, no values are -// reported. -// -// Note that this method is only guaranteed to never observe negative durations -// if used with Go1.9+. -func InstrumentRoundTripperDuration(obs prometheus.ObserverVec, next http.RoundTripper) RoundTripperFunc { - code, method := checkLabels(obs) - - return RoundTripperFunc(func(r *http.Request) (*http.Response, error) { - start := time.Now() - resp, err := next.RoundTrip(r) - if err == nil { - obs.With(labels(code, method, r.Method, resp.StatusCode)).Observe(time.Since(start).Seconds()) - } - return resp, err - }) -} - -// InstrumentTrace is used to offer flexibility in instrumenting the available -// httptrace.ClientTrace hook functions. Each function is passed a float64 -// representing the time in seconds since the start of the http request. A user -// may choose to use separately buckets Histograms, or implement custom -// instance labels on a per function basis. -type InstrumentTrace struct { - GotConn func(float64) - PutIdleConn func(float64) - GotFirstResponseByte func(float64) - Got100Continue func(float64) - DNSStart func(float64) - DNSDone func(float64) - ConnectStart func(float64) - ConnectDone func(float64) - TLSHandshakeStart func(float64) - TLSHandshakeDone func(float64) - WroteHeaders func(float64) - Wait100Continue func(float64) - WroteRequest func(float64) -} - -// InstrumentRoundTripperTrace is a middleware that wraps the provided -// RoundTripper and reports times to hook functions provided in the -// InstrumentTrace struct. Hook functions that are not present in the provided -// InstrumentTrace struct are ignored. Times reported to the hook functions are -// time since the start of the request. Only with Go1.9+, those times are -// guaranteed to never be negative. (Earlier Go versions are not using a -// monotonic clock.) Note that partitioning of Histograms is expensive and -// should be used judiciously. -// -// For hook functions that receive an error as an argument, no observations are -// made in the event of a non-nil error value. -// -// See the example for ExampleInstrumentRoundTripperDuration for example usage. -func InstrumentRoundTripperTrace(it *InstrumentTrace, next http.RoundTripper) RoundTripperFunc { - return RoundTripperFunc(func(r *http.Request) (*http.Response, error) { - start := time.Now() - - trace := &httptrace.ClientTrace{ - GotConn: func(_ httptrace.GotConnInfo) { - if it.GotConn != nil { - it.GotConn(time.Since(start).Seconds()) - } - }, - PutIdleConn: func(err error) { - if err != nil { - return - } - if it.PutIdleConn != nil { - it.PutIdleConn(time.Since(start).Seconds()) - } - }, - DNSStart: func(_ httptrace.DNSStartInfo) { - if it.DNSStart != nil { - it.DNSStart(time.Since(start).Seconds()) - } - }, - DNSDone: func(_ httptrace.DNSDoneInfo) { - if it.DNSDone != nil { - it.DNSDone(time.Since(start).Seconds()) - } - }, - ConnectStart: func(_, _ string) { - if it.ConnectStart != nil { - it.ConnectStart(time.Since(start).Seconds()) - } - }, - ConnectDone: func(_, _ string, err error) { - if err != nil { - return - } - if it.ConnectDone != nil { - it.ConnectDone(time.Since(start).Seconds()) - } - }, - GotFirstResponseByte: func() { - if it.GotFirstResponseByte != nil { - it.GotFirstResponseByte(time.Since(start).Seconds()) - } - }, - Got100Continue: func() { - if it.Got100Continue != nil { - it.Got100Continue(time.Since(start).Seconds()) - } - }, - TLSHandshakeStart: func() { - if it.TLSHandshakeStart != nil { - it.TLSHandshakeStart(time.Since(start).Seconds()) - } - }, - TLSHandshakeDone: func(_ tls.ConnectionState, err error) { - if err != nil { - return - } - if it.TLSHandshakeDone != nil { - it.TLSHandshakeDone(time.Since(start).Seconds()) - } - }, - WroteHeaders: func() { - if it.WroteHeaders != nil { - it.WroteHeaders(time.Since(start).Seconds()) - } - }, - Wait100Continue: func() { - if it.Wait100Continue != nil { - it.Wait100Continue(time.Since(start).Seconds()) - } - }, - WroteRequest: func(_ httptrace.WroteRequestInfo) { - if it.WroteRequest != nil { - it.WroteRequest(time.Since(start).Seconds()) - } - }, - } - r = r.WithContext(httptrace.WithClientTrace(r.Context(), trace)) - - return next.RoundTrip(r) - }) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go deleted file mode 100644 index 9db24380..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go +++ /dev/null @@ -1,447 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// 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 promhttp - -import ( - "errors" - "net/http" - "strconv" - "strings" - "time" - - dto "github.com/prometheus/client_model/go" - - "github.com/prometheus/client_golang/prometheus" -) - -// magicString is used for the hacky label test in checkLabels. Remove once fixed. -const magicString = "zZgWfBxLqvG8kc8IMv3POi2Bb0tZI3vAnBx+gBaFi9FyPzB/CzKUer1yufDa" - -// InstrumentHandlerInFlight is a middleware that wraps the provided -// http.Handler. It sets the provided prometheus.Gauge to the number of -// requests currently handled by the wrapped http.Handler. -// -// See the example for InstrumentHandlerDuration for example usage. -func InstrumentHandlerInFlight(g prometheus.Gauge, next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - g.Inc() - defer g.Dec() - next.ServeHTTP(w, r) - }) -} - -// InstrumentHandlerDuration is a middleware that wraps the provided -// http.Handler to observe the request duration with the provided ObserverVec. -// The ObserverVec must have zero, one, or two non-const non-curried labels. For -// those, the only allowed label names are "code" and "method". The function -// panics otherwise. The Observe method of the Observer in the ObserverVec is -// called with the request duration in seconds. Partitioning happens by HTTP -// status code and/or HTTP method if the respective instance label names are -// present in the ObserverVec. For unpartitioned observations, use an -// ObserverVec with zero labels. Note that partitioning of Histograms is -// expensive and should be used judiciously. -// -// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -// -// If the wrapped Handler panics, no values are reported. -// -// Note that this method is only guaranteed to never observe negative durations -// if used with Go1.9+. -func InstrumentHandlerDuration(obs prometheus.ObserverVec, next http.Handler) http.HandlerFunc { - code, method := checkLabels(obs) - - if code { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - now := time.Now() - d := newDelegator(w, nil) - next.ServeHTTP(d, r) - - obs.With(labels(code, method, r.Method, d.Status())).Observe(time.Since(now).Seconds()) - }) - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - now := time.Now() - next.ServeHTTP(w, r) - obs.With(labels(code, method, r.Method, 0)).Observe(time.Since(now).Seconds()) - }) -} - -// InstrumentHandlerCounter is a middleware that wraps the provided http.Handler -// to observe the request result with the provided CounterVec. The CounterVec -// must have zero, one, or two non-const non-curried labels. For those, the only -// allowed label names are "code" and "method". The function panics -// otherwise. Partitioning of the CounterVec happens by HTTP status code and/or -// HTTP method if the respective instance label names are present in the -// CounterVec. For unpartitioned counting, use a CounterVec with zero labels. -// -// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -// -// If the wrapped Handler panics, the Counter is not incremented. -// -// See the example for InstrumentHandlerDuration for example usage. -func InstrumentHandlerCounter(counter *prometheus.CounterVec, next http.Handler) http.HandlerFunc { - code, method := checkLabels(counter) - - if code { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - d := newDelegator(w, nil) - next.ServeHTTP(d, r) - counter.With(labels(code, method, r.Method, d.Status())).Inc() - }) - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - next.ServeHTTP(w, r) - counter.With(labels(code, method, r.Method, 0)).Inc() - }) -} - -// InstrumentHandlerTimeToWriteHeader is a middleware that wraps the provided -// http.Handler to observe with the provided ObserverVec the request duration -// until the response headers are written. The ObserverVec must have zero, one, -// or two non-const non-curried labels. For those, the only allowed label names -// are "code" and "method". The function panics otherwise. The Observe method of -// the Observer in the ObserverVec is called with the request duration in -// seconds. Partitioning happens by HTTP status code and/or HTTP method if the -// respective instance label names are present in the ObserverVec. For -// unpartitioned observations, use an ObserverVec with zero labels. Note that -// partitioning of Histograms is expensive and should be used judiciously. -// -// If the wrapped Handler panics before calling WriteHeader, no value is -// reported. -// -// Note that this method is only guaranteed to never observe negative durations -// if used with Go1.9+. -// -// See the example for InstrumentHandlerDuration for example usage. -func InstrumentHandlerTimeToWriteHeader(obs prometheus.ObserverVec, next http.Handler) http.HandlerFunc { - code, method := checkLabels(obs) - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - now := time.Now() - d := newDelegator(w, func(status int) { - obs.With(labels(code, method, r.Method, status)).Observe(time.Since(now).Seconds()) - }) - next.ServeHTTP(d, r) - }) -} - -// InstrumentHandlerRequestSize is a middleware that wraps the provided -// http.Handler to observe the request size with the provided ObserverVec. The -// ObserverVec must have zero, one, or two non-const non-curried labels. For -// those, the only allowed label names are "code" and "method". The function -// panics otherwise. The Observe method of the Observer in the ObserverVec is -// called with the request size in bytes. Partitioning happens by HTTP status -// code and/or HTTP method if the respective instance label names are present in -// the ObserverVec. For unpartitioned observations, use an ObserverVec with zero -// labels. Note that partitioning of Histograms is expensive and should be used -// judiciously. -// -// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -// -// If the wrapped Handler panics, no values are reported. -// -// See the example for InstrumentHandlerDuration for example usage. -func InstrumentHandlerRequestSize(obs prometheus.ObserverVec, next http.Handler) http.HandlerFunc { - code, method := checkLabels(obs) - - if code { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - d := newDelegator(w, nil) - next.ServeHTTP(d, r) - size := computeApproximateRequestSize(r) - obs.With(labels(code, method, r.Method, d.Status())).Observe(float64(size)) - }) - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - next.ServeHTTP(w, r) - size := computeApproximateRequestSize(r) - obs.With(labels(code, method, r.Method, 0)).Observe(float64(size)) - }) -} - -// InstrumentHandlerResponseSize is a middleware that wraps the provided -// http.Handler to observe the response size with the provided ObserverVec. The -// ObserverVec must have zero, one, or two non-const non-curried labels. For -// those, the only allowed label names are "code" and "method". The function -// panics otherwise. The Observe method of the Observer in the ObserverVec is -// called with the response size in bytes. Partitioning happens by HTTP status -// code and/or HTTP method if the respective instance label names are present in -// the ObserverVec. For unpartitioned observations, use an ObserverVec with zero -// labels. Note that partitioning of Histograms is expensive and should be used -// judiciously. -// -// If the wrapped Handler does not set a status code, a status code of 200 is assumed. -// -// If the wrapped Handler panics, no values are reported. -// -// See the example for InstrumentHandlerDuration for example usage. -func InstrumentHandlerResponseSize(obs prometheus.ObserverVec, next http.Handler) http.Handler { - code, method := checkLabels(obs) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - d := newDelegator(w, nil) - next.ServeHTTP(d, r) - obs.With(labels(code, method, r.Method, d.Status())).Observe(float64(d.Written())) - }) -} - -func checkLabels(c prometheus.Collector) (code bool, method bool) { - // TODO(beorn7): Remove this hacky way to check for instance labels - // once Descriptors can have their dimensionality queried. - var ( - desc *prometheus.Desc - m prometheus.Metric - pm dto.Metric - lvs []string - ) - - // Get the Desc from the Collector. - descc := make(chan *prometheus.Desc, 1) - c.Describe(descc) - - select { - case desc = <-descc: - default: - panic("no description provided by collector") - } - select { - case <-descc: - panic("more than one description provided by collector") - default: - } - - close(descc) - - // Create a ConstMetric with the Desc. Since we don't know how many - // variable labels there are, try for as long as it needs. - for err := errors.New("dummy"); err != nil; lvs = append(lvs, magicString) { - m, err = prometheus.NewConstMetric(desc, prometheus.UntypedValue, 0, lvs...) - } - - // Write out the metric into a proto message and look at the labels. - // If the value is not the magicString, it is a constLabel, which doesn't interest us. - // If the label is curried, it doesn't interest us. - // In all other cases, only "code" or "method" is allowed. - if err := m.Write(&pm); err != nil { - panic("error checking metric for labels") - } - for _, label := range pm.Label { - name, value := label.GetName(), label.GetValue() - if value != magicString || isLabelCurried(c, name) { - continue - } - switch name { - case "code": - code = true - case "method": - method = true - default: - panic("metric partitioned with non-supported labels") - } - } - return -} - -func isLabelCurried(c prometheus.Collector, label string) bool { - // This is even hackier than the label test above. - // We essentially try to curry again and see if it works. - // But for that, we need to type-convert to the two - // types we use here, ObserverVec or *CounterVec. - switch v := c.(type) { - case *prometheus.CounterVec: - if _, err := v.CurryWith(prometheus.Labels{label: "dummy"}); err == nil { - return false - } - case prometheus.ObserverVec: - if _, err := v.CurryWith(prometheus.Labels{label: "dummy"}); err == nil { - return false - } - default: - panic("unsupported metric vec type") - } - return true -} - -// emptyLabels is a one-time allocation for non-partitioned metrics to avoid -// unnecessary allocations on each request. -var emptyLabels = prometheus.Labels{} - -func labels(code, method bool, reqMethod string, status int) prometheus.Labels { - if !(code || method) { - return emptyLabels - } - labels := prometheus.Labels{} - - if code { - labels["code"] = sanitizeCode(status) - } - if method { - labels["method"] = sanitizeMethod(reqMethod) - } - - return labels -} - -func computeApproximateRequestSize(r *http.Request) int { - s := 0 - if r.URL != nil { - s += len(r.URL.String()) - } - - s += len(r.Method) - s += len(r.Proto) - for name, values := range r.Header { - s += len(name) - for _, value := range values { - s += len(value) - } - } - s += len(r.Host) - - // N.B. r.Form and r.MultipartForm are assumed to be included in r.URL. - - if r.ContentLength != -1 { - s += int(r.ContentLength) - } - return s -} - -func sanitizeMethod(m string) string { - switch m { - case "GET", "get": - return "get" - case "PUT", "put": - return "put" - case "HEAD", "head": - return "head" - case "POST", "post": - return "post" - case "DELETE", "delete": - return "delete" - case "CONNECT", "connect": - return "connect" - case "OPTIONS", "options": - return "options" - case "NOTIFY", "notify": - return "notify" - default: - return strings.ToLower(m) - } -} - -// If the wrapped http.Handler has not set a status code, i.e. the value is -// currently 0, santizeCode will return 200, for consistency with behavior in -// the stdlib. -func sanitizeCode(s int) string { - switch s { - case 100: - return "100" - case 101: - return "101" - - case 200, 0: - return "200" - case 201: - return "201" - case 202: - return "202" - case 203: - return "203" - case 204: - return "204" - case 205: - return "205" - case 206: - return "206" - - case 300: - return "300" - case 301: - return "301" - case 302: - return "302" - case 304: - return "304" - case 305: - return "305" - case 307: - return "307" - - case 400: - return "400" - case 401: - return "401" - case 402: - return "402" - case 403: - return "403" - case 404: - return "404" - case 405: - return "405" - case 406: - return "406" - case 407: - return "407" - case 408: - return "408" - case 409: - return "409" - case 410: - return "410" - case 411: - return "411" - case 412: - return "412" - case 413: - return "413" - case 414: - return "414" - case 415: - return "415" - case 416: - return "416" - case 417: - return "417" - case 418: - return "418" - - case 500: - return "500" - case 501: - return "501" - case 502: - return "502" - case 503: - return "503" - case 504: - return "504" - case 505: - return "505" - - case 428: - return "428" - case 429: - return "429" - case 431: - return "431" - case 511: - return "511" - - default: - return strconv.Itoa(s) - } -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go deleted file mode 100644 index c05d6ee1..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/registry.go +++ /dev/null @@ -1,947 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "runtime" - "sort" - "strings" - "sync" - "unicode/utf8" - - "github.com/cespare/xxhash/v2" - "github.com/golang/protobuf/proto" - "github.com/prometheus/common/expfmt" - - dto "github.com/prometheus/client_model/go" - - "github.com/prometheus/client_golang/prometheus/internal" -) - -const ( - // Capacity for the channel to collect metrics and descriptors. - capMetricChan = 1000 - capDescChan = 10 -) - -// DefaultRegisterer and DefaultGatherer are the implementations of the -// Registerer and Gatherer interface a number of convenience functions in this -// package act on. Initially, both variables point to the same Registry, which -// has a process collector (currently on Linux only, see NewProcessCollector) -// and a Go collector (see NewGoCollector, in particular the note about -// stop-the-world implication with Go versions older than 1.9) already -// registered. This approach to keep default instances as global state mirrors -// the approach of other packages in the Go standard library. Note that there -// are caveats. Change the variables with caution and only if you understand the -// consequences. Users who want to avoid global state altogether should not use -// the convenience functions and act on custom instances instead. -var ( - defaultRegistry = NewRegistry() - DefaultRegisterer Registerer = defaultRegistry - DefaultGatherer Gatherer = defaultRegistry -) - -func init() { - MustRegister(NewProcessCollector(ProcessCollectorOpts{})) - MustRegister(NewGoCollector()) -} - -// NewRegistry creates a new vanilla Registry without any Collectors -// pre-registered. -func NewRegistry() *Registry { - return &Registry{ - collectorsByID: map[uint64]Collector{}, - descIDs: map[uint64]struct{}{}, - dimHashesByName: map[string]uint64{}, - } -} - -// NewPedanticRegistry returns a registry that checks during collection if each -// collected Metric is consistent with its reported Desc, and if the Desc has -// actually been registered with the registry. Unchecked Collectors (those whose -// Describe method does not yield any descriptors) are excluded from the check. -// -// Usually, a Registry will be happy as long as the union of all collected -// Metrics is consistent and valid even if some metrics are not consistent with -// their own Desc or a Desc provided by their registered Collector. Well-behaved -// Collectors and Metrics will only provide consistent Descs. This Registry is -// useful to test the implementation of Collectors and Metrics. -func NewPedanticRegistry() *Registry { - r := NewRegistry() - r.pedanticChecksEnabled = true - return r -} - -// Registerer is the interface for the part of a registry in charge of -// registering and unregistering. Users of custom registries should use -// Registerer as type for registration purposes (rather than the Registry type -// directly). In that way, they are free to use custom Registerer implementation -// (e.g. for testing purposes). -type Registerer interface { - // Register registers a new Collector to be included in metrics - // collection. It returns an error if the descriptors provided by the - // Collector are invalid or if they — in combination with descriptors of - // already registered Collectors — do not fulfill the consistency and - // uniqueness criteria described in the documentation of metric.Desc. - // - // If the provided Collector is equal to a Collector already registered - // (which includes the case of re-registering the same Collector), the - // returned error is an instance of AlreadyRegisteredError, which - // contains the previously registered Collector. - // - // A Collector whose Describe method does not yield any Desc is treated - // as unchecked. Registration will always succeed. No check for - // re-registering (see previous paragraph) is performed. Thus, the - // caller is responsible for not double-registering the same unchecked - // Collector, and for providing a Collector that will not cause - // inconsistent metrics on collection. (This would lead to scrape - // errors.) - Register(Collector) error - // MustRegister works like Register but registers any number of - // Collectors and panics upon the first registration that causes an - // error. - MustRegister(...Collector) - // Unregister unregisters the Collector that equals the Collector passed - // in as an argument. (Two Collectors are considered equal if their - // Describe method yields the same set of descriptors.) The function - // returns whether a Collector was unregistered. Note that an unchecked - // Collector cannot be unregistered (as its Describe method does not - // yield any descriptor). - // - // Note that even after unregistering, it will not be possible to - // register a new Collector that is inconsistent with the unregistered - // Collector, e.g. a Collector collecting metrics with the same name but - // a different help string. The rationale here is that the same registry - // instance must only collect consistent metrics throughout its - // lifetime. - Unregister(Collector) bool -} - -// Gatherer is the interface for the part of a registry in charge of gathering -// the collected metrics into a number of MetricFamilies. The Gatherer interface -// comes with the same general implication as described for the Registerer -// interface. -type Gatherer interface { - // Gather calls the Collect method of the registered Collectors and then - // gathers the collected metrics into a lexicographically sorted slice - // of uniquely named MetricFamily protobufs. Gather ensures that the - // returned slice is valid and self-consistent so that it can be used - // for valid exposition. As an exception to the strict consistency - // requirements described for metric.Desc, Gather will tolerate - // different sets of label names for metrics of the same metric family. - // - // Even if an error occurs, Gather attempts to gather as many metrics as - // possible. Hence, if a non-nil error is returned, the returned - // MetricFamily slice could be nil (in case of a fatal error that - // prevented any meaningful metric collection) or contain a number of - // MetricFamily protobufs, some of which might be incomplete, and some - // might be missing altogether. The returned error (which might be a - // MultiError) explains the details. Note that this is mostly useful for - // debugging purposes. If the gathered protobufs are to be used for - // exposition in actual monitoring, it is almost always better to not - // expose an incomplete result and instead disregard the returned - // MetricFamily protobufs in case the returned error is non-nil. - Gather() ([]*dto.MetricFamily, error) -} - -// Register registers the provided Collector with the DefaultRegisterer. -// -// Register is a shortcut for DefaultRegisterer.Register(c). See there for more -// details. -func Register(c Collector) error { - return DefaultRegisterer.Register(c) -} - -// MustRegister registers the provided Collectors with the DefaultRegisterer and -// panics if any error occurs. -// -// MustRegister is a shortcut for DefaultRegisterer.MustRegister(cs...). See -// there for more details. -func MustRegister(cs ...Collector) { - DefaultRegisterer.MustRegister(cs...) -} - -// Unregister removes the registration of the provided Collector from the -// DefaultRegisterer. -// -// Unregister is a shortcut for DefaultRegisterer.Unregister(c). See there for -// more details. -func Unregister(c Collector) bool { - return DefaultRegisterer.Unregister(c) -} - -// GathererFunc turns a function into a Gatherer. -type GathererFunc func() ([]*dto.MetricFamily, error) - -// Gather implements Gatherer. -func (gf GathererFunc) Gather() ([]*dto.MetricFamily, error) { - return gf() -} - -// AlreadyRegisteredError is returned by the Register method if the Collector to -// be registered has already been registered before, or a different Collector -// that collects the same metrics has been registered before. Registration fails -// in that case, but you can detect from the kind of error what has -// happened. The error contains fields for the existing Collector and the -// (rejected) new Collector that equals the existing one. This can be used to -// find out if an equal Collector has been registered before and switch over to -// using the old one, as demonstrated in the example. -type AlreadyRegisteredError struct { - ExistingCollector, NewCollector Collector -} - -func (err AlreadyRegisteredError) Error() string { - return "duplicate metrics collector registration attempted" -} - -// MultiError is a slice of errors implementing the error interface. It is used -// by a Gatherer to report multiple errors during MetricFamily gathering. -type MultiError []error - -func (errs MultiError) Error() string { - if len(errs) == 0 { - return "" - } - buf := &bytes.Buffer{} - fmt.Fprintf(buf, "%d error(s) occurred:", len(errs)) - for _, err := range errs { - fmt.Fprintf(buf, "\n* %s", err) - } - return buf.String() -} - -// Append appends the provided error if it is not nil. -func (errs *MultiError) Append(err error) { - if err != nil { - *errs = append(*errs, err) - } -} - -// MaybeUnwrap returns nil if len(errs) is 0. It returns the first and only -// contained error as error if len(errs is 1). In all other cases, it returns -// the MultiError directly. This is helpful for returning a MultiError in a way -// that only uses the MultiError if needed. -func (errs MultiError) MaybeUnwrap() error { - switch len(errs) { - case 0: - return nil - case 1: - return errs[0] - default: - return errs - } -} - -// Registry registers Prometheus collectors, collects their metrics, and gathers -// them into MetricFamilies for exposition. It implements both Registerer and -// Gatherer. The zero value is not usable. Create instances with NewRegistry or -// NewPedanticRegistry. -type Registry struct { - mtx sync.RWMutex - collectorsByID map[uint64]Collector // ID is a hash of the descIDs. - descIDs map[uint64]struct{} - dimHashesByName map[string]uint64 - uncheckedCollectors []Collector - pedanticChecksEnabled bool -} - -// Register implements Registerer. -func (r *Registry) Register(c Collector) error { - var ( - descChan = make(chan *Desc, capDescChan) - newDescIDs = map[uint64]struct{}{} - newDimHashesByName = map[string]uint64{} - collectorID uint64 // All desc IDs XOR'd together. - duplicateDescErr error - ) - go func() { - c.Describe(descChan) - close(descChan) - }() - r.mtx.Lock() - defer func() { - // Drain channel in case of premature return to not leak a goroutine. - for range descChan { - } - r.mtx.Unlock() - }() - // Conduct various tests... - for desc := range descChan { - - // Is the descriptor valid at all? - if desc.err != nil { - return fmt.Errorf("descriptor %s is invalid: %s", desc, desc.err) - } - - // Is the descID unique? - // (In other words: Is the fqName + constLabel combination unique?) - if _, exists := r.descIDs[desc.id]; exists { - duplicateDescErr = fmt.Errorf("descriptor %s already exists with the same fully-qualified name and const label values", desc) - } - // If it is not a duplicate desc in this collector, XOR it to - // the collectorID. (We allow duplicate descs within the same - // collector, but their existence must be a no-op.) - if _, exists := newDescIDs[desc.id]; !exists { - newDescIDs[desc.id] = struct{}{} - collectorID ^= desc.id - } - - // Are all the label names and the help string consistent with - // previous descriptors of the same name? - // First check existing descriptors... - if dimHash, exists := r.dimHashesByName[desc.fqName]; exists { - if dimHash != desc.dimHash { - return fmt.Errorf("a previously registered descriptor with the same fully-qualified name as %s has different label names or a different help string", desc) - } - } else { - // ...then check the new descriptors already seen. - if dimHash, exists := newDimHashesByName[desc.fqName]; exists { - if dimHash != desc.dimHash { - return fmt.Errorf("descriptors reported by collector have inconsistent label names or help strings for the same fully-qualified name, offender is %s", desc) - } - } else { - newDimHashesByName[desc.fqName] = desc.dimHash - } - } - } - // A Collector yielding no Desc at all is considered unchecked. - if len(newDescIDs) == 0 { - r.uncheckedCollectors = append(r.uncheckedCollectors, c) - return nil - } - if existing, exists := r.collectorsByID[collectorID]; exists { - switch e := existing.(type) { - case *wrappingCollector: - return AlreadyRegisteredError{ - ExistingCollector: e.unwrapRecursively(), - NewCollector: c, - } - default: - return AlreadyRegisteredError{ - ExistingCollector: e, - NewCollector: c, - } - } - } - // If the collectorID is new, but at least one of the descs existed - // before, we are in trouble. - if duplicateDescErr != nil { - return duplicateDescErr - } - - // Only after all tests have passed, actually register. - r.collectorsByID[collectorID] = c - for hash := range newDescIDs { - r.descIDs[hash] = struct{}{} - } - for name, dimHash := range newDimHashesByName { - r.dimHashesByName[name] = dimHash - } - return nil -} - -// Unregister implements Registerer. -func (r *Registry) Unregister(c Collector) bool { - var ( - descChan = make(chan *Desc, capDescChan) - descIDs = map[uint64]struct{}{} - collectorID uint64 // All desc IDs XOR'd together. - ) - go func() { - c.Describe(descChan) - close(descChan) - }() - for desc := range descChan { - if _, exists := descIDs[desc.id]; !exists { - collectorID ^= desc.id - descIDs[desc.id] = struct{}{} - } - } - - r.mtx.RLock() - if _, exists := r.collectorsByID[collectorID]; !exists { - r.mtx.RUnlock() - return false - } - r.mtx.RUnlock() - - r.mtx.Lock() - defer r.mtx.Unlock() - - delete(r.collectorsByID, collectorID) - for id := range descIDs { - delete(r.descIDs, id) - } - // dimHashesByName is left untouched as those must be consistent - // throughout the lifetime of a program. - return true -} - -// MustRegister implements Registerer. -func (r *Registry) MustRegister(cs ...Collector) { - for _, c := range cs { - if err := r.Register(c); err != nil { - panic(err) - } - } -} - -// Gather implements Gatherer. -func (r *Registry) Gather() ([]*dto.MetricFamily, error) { - var ( - checkedMetricChan = make(chan Metric, capMetricChan) - uncheckedMetricChan = make(chan Metric, capMetricChan) - metricHashes = map[uint64]struct{}{} - wg sync.WaitGroup - errs MultiError // The collected errors to return in the end. - registeredDescIDs map[uint64]struct{} // Only used for pedantic checks - ) - - r.mtx.RLock() - goroutineBudget := len(r.collectorsByID) + len(r.uncheckedCollectors) - metricFamiliesByName := make(map[string]*dto.MetricFamily, len(r.dimHashesByName)) - checkedCollectors := make(chan Collector, len(r.collectorsByID)) - uncheckedCollectors := make(chan Collector, len(r.uncheckedCollectors)) - for _, collector := range r.collectorsByID { - checkedCollectors <- collector - } - for _, collector := range r.uncheckedCollectors { - uncheckedCollectors <- collector - } - // In case pedantic checks are enabled, we have to copy the map before - // giving up the RLock. - if r.pedanticChecksEnabled { - registeredDescIDs = make(map[uint64]struct{}, len(r.descIDs)) - for id := range r.descIDs { - registeredDescIDs[id] = struct{}{} - } - } - r.mtx.RUnlock() - - wg.Add(goroutineBudget) - - collectWorker := func() { - for { - select { - case collector := <-checkedCollectors: - collector.Collect(checkedMetricChan) - case collector := <-uncheckedCollectors: - collector.Collect(uncheckedMetricChan) - default: - return - } - wg.Done() - } - } - - // Start the first worker now to make sure at least one is running. - go collectWorker() - goroutineBudget-- - - // Close checkedMetricChan and uncheckedMetricChan once all collectors - // are collected. - go func() { - wg.Wait() - close(checkedMetricChan) - close(uncheckedMetricChan) - }() - - // Drain checkedMetricChan and uncheckedMetricChan in case of premature return. - defer func() { - if checkedMetricChan != nil { - for range checkedMetricChan { - } - } - if uncheckedMetricChan != nil { - for range uncheckedMetricChan { - } - } - }() - - // Copy the channel references so we can nil them out later to remove - // them from the select statements below. - cmc := checkedMetricChan - umc := uncheckedMetricChan - - for { - select { - case metric, ok := <-cmc: - if !ok { - cmc = nil - break - } - errs.Append(processMetric( - metric, metricFamiliesByName, - metricHashes, - registeredDescIDs, - )) - case metric, ok := <-umc: - if !ok { - umc = nil - break - } - errs.Append(processMetric( - metric, metricFamiliesByName, - metricHashes, - nil, - )) - default: - if goroutineBudget <= 0 || len(checkedCollectors)+len(uncheckedCollectors) == 0 { - // All collectors are already being worked on or - // we have already as many goroutines started as - // there are collectors. Do the same as above, - // just without the default. - select { - case metric, ok := <-cmc: - if !ok { - cmc = nil - break - } - errs.Append(processMetric( - metric, metricFamiliesByName, - metricHashes, - registeredDescIDs, - )) - case metric, ok := <-umc: - if !ok { - umc = nil - break - } - errs.Append(processMetric( - metric, metricFamiliesByName, - metricHashes, - nil, - )) - } - break - } - // Start more workers. - go collectWorker() - goroutineBudget-- - runtime.Gosched() - } - // Once both checkedMetricChan and uncheckdMetricChan are closed - // and drained, the contraption above will nil out cmc and umc, - // and then we can leave the collect loop here. - if cmc == nil && umc == nil { - break - } - } - return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() -} - -// WriteToTextfile calls Gather on the provided Gatherer, encodes the result in the -// Prometheus text format, and writes it to a temporary file. Upon success, the -// temporary file is renamed to the provided filename. -// -// This is intended for use with the textfile collector of the node exporter. -// Note that the node exporter expects the filename to be suffixed with ".prom". -func WriteToTextfile(filename string, g Gatherer) error { - tmp, err := ioutil.TempFile(filepath.Dir(filename), filepath.Base(filename)) - if err != nil { - return err - } - defer os.Remove(tmp.Name()) - - mfs, err := g.Gather() - if err != nil { - return err - } - for _, mf := range mfs { - if _, err := expfmt.MetricFamilyToText(tmp, mf); err != nil { - return err - } - } - if err := tmp.Close(); err != nil { - return err - } - - if err := os.Chmod(tmp.Name(), 0644); err != nil { - return err - } - return os.Rename(tmp.Name(), filename) -} - -// processMetric is an internal helper method only used by the Gather method. -func processMetric( - metric Metric, - metricFamiliesByName map[string]*dto.MetricFamily, - metricHashes map[uint64]struct{}, - registeredDescIDs map[uint64]struct{}, -) error { - desc := metric.Desc() - // Wrapped metrics collected by an unchecked Collector can have an - // invalid Desc. - if desc.err != nil { - return desc.err - } - dtoMetric := &dto.Metric{} - if err := metric.Write(dtoMetric); err != nil { - return fmt.Errorf("error collecting metric %v: %s", desc, err) - } - metricFamily, ok := metricFamiliesByName[desc.fqName] - if ok { // Existing name. - if metricFamily.GetHelp() != desc.help { - return fmt.Errorf( - "collected metric %s %s has help %q but should have %q", - desc.fqName, dtoMetric, desc.help, metricFamily.GetHelp(), - ) - } - // TODO(beorn7): Simplify switch once Desc has type. - switch metricFamily.GetType() { - case dto.MetricType_COUNTER: - if dtoMetric.Counter == nil { - return fmt.Errorf( - "collected metric %s %s should be a Counter", - desc.fqName, dtoMetric, - ) - } - case dto.MetricType_GAUGE: - if dtoMetric.Gauge == nil { - return fmt.Errorf( - "collected metric %s %s should be a Gauge", - desc.fqName, dtoMetric, - ) - } - case dto.MetricType_SUMMARY: - if dtoMetric.Summary == nil { - return fmt.Errorf( - "collected metric %s %s should be a Summary", - desc.fqName, dtoMetric, - ) - } - case dto.MetricType_UNTYPED: - if dtoMetric.Untyped == nil { - return fmt.Errorf( - "collected metric %s %s should be Untyped", - desc.fqName, dtoMetric, - ) - } - case dto.MetricType_HISTOGRAM: - if dtoMetric.Histogram == nil { - return fmt.Errorf( - "collected metric %s %s should be a Histogram", - desc.fqName, dtoMetric, - ) - } - default: - panic("encountered MetricFamily with invalid type") - } - } else { // New name. - metricFamily = &dto.MetricFamily{} - metricFamily.Name = proto.String(desc.fqName) - metricFamily.Help = proto.String(desc.help) - // TODO(beorn7): Simplify switch once Desc has type. - switch { - case dtoMetric.Gauge != nil: - metricFamily.Type = dto.MetricType_GAUGE.Enum() - case dtoMetric.Counter != nil: - metricFamily.Type = dto.MetricType_COUNTER.Enum() - case dtoMetric.Summary != nil: - metricFamily.Type = dto.MetricType_SUMMARY.Enum() - case dtoMetric.Untyped != nil: - metricFamily.Type = dto.MetricType_UNTYPED.Enum() - case dtoMetric.Histogram != nil: - metricFamily.Type = dto.MetricType_HISTOGRAM.Enum() - default: - return fmt.Errorf("empty metric collected: %s", dtoMetric) - } - if err := checkSuffixCollisions(metricFamily, metricFamiliesByName); err != nil { - return err - } - metricFamiliesByName[desc.fqName] = metricFamily - } - if err := checkMetricConsistency(metricFamily, dtoMetric, metricHashes); err != nil { - return err - } - if registeredDescIDs != nil { - // Is the desc registered at all? - if _, exist := registeredDescIDs[desc.id]; !exist { - return fmt.Errorf( - "collected metric %s %s with unregistered descriptor %s", - metricFamily.GetName(), dtoMetric, desc, - ) - } - if err := checkDescConsistency(metricFamily, dtoMetric, desc); err != nil { - return err - } - } - metricFamily.Metric = append(metricFamily.Metric, dtoMetric) - return nil -} - -// Gatherers is a slice of Gatherer instances that implements the Gatherer -// interface itself. Its Gather method calls Gather on all Gatherers in the -// slice in order and returns the merged results. Errors returned from the -// Gather calls are all returned in a flattened MultiError. Duplicate and -// inconsistent Metrics are skipped (first occurrence in slice order wins) and -// reported in the returned error. -// -// Gatherers can be used to merge the Gather results from multiple -// Registries. It also provides a way to directly inject existing MetricFamily -// protobufs into the gathering by creating a custom Gatherer with a Gather -// method that simply returns the existing MetricFamily protobufs. Note that no -// registration is involved (in contrast to Collector registration), so -// obviously registration-time checks cannot happen. Any inconsistencies between -// the gathered MetricFamilies are reported as errors by the Gather method, and -// inconsistent Metrics are dropped. Invalid parts of the MetricFamilies -// (e.g. syntactically invalid metric or label names) will go undetected. -type Gatherers []Gatherer - -// Gather implements Gatherer. -func (gs Gatherers) Gather() ([]*dto.MetricFamily, error) { - var ( - metricFamiliesByName = map[string]*dto.MetricFamily{} - metricHashes = map[uint64]struct{}{} - errs MultiError // The collected errors to return in the end. - ) - - for i, g := range gs { - mfs, err := g.Gather() - if err != nil { - if multiErr, ok := err.(MultiError); ok { - for _, err := range multiErr { - errs = append(errs, fmt.Errorf("[from Gatherer #%d] %s", i+1, err)) - } - } else { - errs = append(errs, fmt.Errorf("[from Gatherer #%d] %s", i+1, err)) - } - } - for _, mf := range mfs { - existingMF, exists := metricFamiliesByName[mf.GetName()] - if exists { - if existingMF.GetHelp() != mf.GetHelp() { - errs = append(errs, fmt.Errorf( - "gathered metric family %s has help %q but should have %q", - mf.GetName(), mf.GetHelp(), existingMF.GetHelp(), - )) - continue - } - if existingMF.GetType() != mf.GetType() { - errs = append(errs, fmt.Errorf( - "gathered metric family %s has type %s but should have %s", - mf.GetName(), mf.GetType(), existingMF.GetType(), - )) - continue - } - } else { - existingMF = &dto.MetricFamily{} - existingMF.Name = mf.Name - existingMF.Help = mf.Help - existingMF.Type = mf.Type - if err := checkSuffixCollisions(existingMF, metricFamiliesByName); err != nil { - errs = append(errs, err) - continue - } - metricFamiliesByName[mf.GetName()] = existingMF - } - for _, m := range mf.Metric { - if err := checkMetricConsistency(existingMF, m, metricHashes); err != nil { - errs = append(errs, err) - continue - } - existingMF.Metric = append(existingMF.Metric, m) - } - } - } - return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() -} - -// checkSuffixCollisions checks for collisions with the “magic” suffixes the -// Prometheus text format and the internal metric representation of the -// Prometheus server add while flattening Summaries and Histograms. -func checkSuffixCollisions(mf *dto.MetricFamily, mfs map[string]*dto.MetricFamily) error { - var ( - newName = mf.GetName() - newType = mf.GetType() - newNameWithoutSuffix = "" - ) - switch { - case strings.HasSuffix(newName, "_count"): - newNameWithoutSuffix = newName[:len(newName)-6] - case strings.HasSuffix(newName, "_sum"): - newNameWithoutSuffix = newName[:len(newName)-4] - case strings.HasSuffix(newName, "_bucket"): - newNameWithoutSuffix = newName[:len(newName)-7] - } - if newNameWithoutSuffix != "" { - if existingMF, ok := mfs[newNameWithoutSuffix]; ok { - switch existingMF.GetType() { - case dto.MetricType_SUMMARY: - if !strings.HasSuffix(newName, "_bucket") { - return fmt.Errorf( - "collected metric named %q collides with previously collected summary named %q", - newName, newNameWithoutSuffix, - ) - } - case dto.MetricType_HISTOGRAM: - return fmt.Errorf( - "collected metric named %q collides with previously collected histogram named %q", - newName, newNameWithoutSuffix, - ) - } - } - } - if newType == dto.MetricType_SUMMARY || newType == dto.MetricType_HISTOGRAM { - if _, ok := mfs[newName+"_count"]; ok { - return fmt.Errorf( - "collected histogram or summary named %q collides with previously collected metric named %q", - newName, newName+"_count", - ) - } - if _, ok := mfs[newName+"_sum"]; ok { - return fmt.Errorf( - "collected histogram or summary named %q collides with previously collected metric named %q", - newName, newName+"_sum", - ) - } - } - if newType == dto.MetricType_HISTOGRAM { - if _, ok := mfs[newName+"_bucket"]; ok { - return fmt.Errorf( - "collected histogram named %q collides with previously collected metric named %q", - newName, newName+"_bucket", - ) - } - } - return nil -} - -// checkMetricConsistency checks if the provided Metric is consistent with the -// provided MetricFamily. It also hashes the Metric labels and the MetricFamily -// name. If the resulting hash is already in the provided metricHashes, an error -// is returned. If not, it is added to metricHashes. -func checkMetricConsistency( - metricFamily *dto.MetricFamily, - dtoMetric *dto.Metric, - metricHashes map[uint64]struct{}, -) error { - name := metricFamily.GetName() - - // Type consistency with metric family. - if metricFamily.GetType() == dto.MetricType_GAUGE && dtoMetric.Gauge == nil || - metricFamily.GetType() == dto.MetricType_COUNTER && dtoMetric.Counter == nil || - metricFamily.GetType() == dto.MetricType_SUMMARY && dtoMetric.Summary == nil || - metricFamily.GetType() == dto.MetricType_HISTOGRAM && dtoMetric.Histogram == nil || - metricFamily.GetType() == dto.MetricType_UNTYPED && dtoMetric.Untyped == nil { - return fmt.Errorf( - "collected metric %q { %s} is not a %s", - name, dtoMetric, metricFamily.GetType(), - ) - } - - previousLabelName := "" - for _, labelPair := range dtoMetric.GetLabel() { - labelName := labelPair.GetName() - if labelName == previousLabelName { - return fmt.Errorf( - "collected metric %q { %s} has two or more labels with the same name: %s", - name, dtoMetric, labelName, - ) - } - if !checkLabelName(labelName) { - return fmt.Errorf( - "collected metric %q { %s} has a label with an invalid name: %s", - name, dtoMetric, labelName, - ) - } - if dtoMetric.Summary != nil && labelName == quantileLabel { - return fmt.Errorf( - "collected metric %q { %s} must not have an explicit %q label", - name, dtoMetric, quantileLabel, - ) - } - if !utf8.ValidString(labelPair.GetValue()) { - return fmt.Errorf( - "collected metric %q { %s} has a label named %q whose value is not utf8: %#v", - name, dtoMetric, labelName, labelPair.GetValue()) - } - previousLabelName = labelName - } - - // Is the metric unique (i.e. no other metric with the same name and the same labels)? - h := xxhash.New() - h.WriteString(name) - h.Write(separatorByteSlice) - // Make sure label pairs are sorted. We depend on it for the consistency - // check. - if !sort.IsSorted(labelPairSorter(dtoMetric.Label)) { - // We cannot sort dtoMetric.Label in place as it is immutable by contract. - copiedLabels := make([]*dto.LabelPair, len(dtoMetric.Label)) - copy(copiedLabels, dtoMetric.Label) - sort.Sort(labelPairSorter(copiedLabels)) - dtoMetric.Label = copiedLabels - } - for _, lp := range dtoMetric.Label { - h.WriteString(lp.GetName()) - h.Write(separatorByteSlice) - h.WriteString(lp.GetValue()) - h.Write(separatorByteSlice) - } - hSum := h.Sum64() - if _, exists := metricHashes[hSum]; exists { - return fmt.Errorf( - "collected metric %q { %s} was collected before with the same name and label values", - name, dtoMetric, - ) - } - metricHashes[hSum] = struct{}{} - return nil -} - -func checkDescConsistency( - metricFamily *dto.MetricFamily, - dtoMetric *dto.Metric, - desc *Desc, -) error { - // Desc help consistency with metric family help. - if metricFamily.GetHelp() != desc.help { - return fmt.Errorf( - "collected metric %s %s has help %q but should have %q", - metricFamily.GetName(), dtoMetric, metricFamily.GetHelp(), desc.help, - ) - } - - // Is the desc consistent with the content of the metric? - lpsFromDesc := make([]*dto.LabelPair, len(desc.constLabelPairs), len(dtoMetric.Label)) - copy(lpsFromDesc, desc.constLabelPairs) - for _, l := range desc.variableLabels { - lpsFromDesc = append(lpsFromDesc, &dto.LabelPair{ - Name: proto.String(l), - }) - } - if len(lpsFromDesc) != len(dtoMetric.Label) { - return fmt.Errorf( - "labels in collected metric %s %s are inconsistent with descriptor %s", - metricFamily.GetName(), dtoMetric, desc, - ) - } - sort.Sort(labelPairSorter(lpsFromDesc)) - for i, lpFromDesc := range lpsFromDesc { - lpFromMetric := dtoMetric.Label[i] - if lpFromDesc.GetName() != lpFromMetric.GetName() || - lpFromDesc.Value != nil && lpFromDesc.GetValue() != lpFromMetric.GetValue() { - return fmt.Errorf( - "labels in collected metric %s %s are inconsistent with descriptor %s", - metricFamily.GetName(), dtoMetric, desc, - ) - } - } - return nil -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go deleted file mode 100644 index ae42e761..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/summary.go +++ /dev/null @@ -1,736 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "fmt" - "math" - "runtime" - "sort" - "sync" - "sync/atomic" - "time" - - "github.com/beorn7/perks/quantile" - "github.com/golang/protobuf/proto" - - dto "github.com/prometheus/client_model/go" -) - -// quantileLabel is used for the label that defines the quantile in a -// summary. -const quantileLabel = "quantile" - -// A Summary captures individual observations from an event or sample stream and -// summarizes them in a manner similar to traditional summary statistics: 1. sum -// of observations, 2. observation count, 3. rank estimations. -// -// A typical use-case is the observation of request latencies. By default, a -// Summary provides the median, the 90th and the 99th percentile of the latency -// as rank estimations. However, the default behavior will change in the -// upcoming v1.0.0 of the library. There will be no rank estimations at all by -// default. For a sane transition, it is recommended to set the desired rank -// estimations explicitly. -// -// Note that the rank estimations cannot be aggregated in a meaningful way with -// the Prometheus query language (i.e. you cannot average or add them). If you -// need aggregatable quantiles (e.g. you want the 99th percentile latency of all -// queries served across all instances of a service), consider the Histogram -// metric type. See the Prometheus documentation for more details. -// -// To create Summary instances, use NewSummary. -type Summary interface { - Metric - Collector - - // Observe adds a single observation to the summary. - Observe(float64) -} - -var errQuantileLabelNotAllowed = fmt.Errorf( - "%q is not allowed as label name in summaries", quantileLabel, -) - -// Default values for SummaryOpts. -const ( - // DefMaxAge is the default duration for which observations stay - // relevant. - DefMaxAge time.Duration = 10 * time.Minute - // DefAgeBuckets is the default number of buckets used to calculate the - // age of observations. - DefAgeBuckets = 5 - // DefBufCap is the standard buffer size for collecting Summary observations. - DefBufCap = 500 -) - -// SummaryOpts bundles the options for creating a Summary metric. It is -// mandatory to set Name to a non-empty string. While all other fields are -// optional and can safely be left at their zero value, it is recommended to set -// a help string and to explicitly set the Objectives field to the desired value -// as the default value will change in the upcoming v1.0.0 of the library. -type SummaryOpts struct { - // Namespace, Subsystem, and Name are components of the fully-qualified - // name of the Summary (created by joining these components with - // "_"). Only Name is mandatory, the others merely help structuring the - // name. Note that the fully-qualified name of the Summary must be a - // valid Prometheus metric name. - Namespace string - Subsystem string - Name string - - // Help provides information about this Summary. - // - // Metrics with the same fully-qualified name must have the same Help - // string. - Help string - - // ConstLabels are used to attach fixed labels to this metric. Metrics - // with the same fully-qualified name must have the same label names in - // their ConstLabels. - // - // Due to the way a Summary is represented in the Prometheus text format - // and how it is handled by the Prometheus server internally, “quantile” - // is an illegal label name. Construction of a Summary or SummaryVec - // will panic if this label name is used in ConstLabels. - // - // ConstLabels are only used rarely. In particular, do not use them to - // attach the same labels to all your metrics. Those use cases are - // better covered by target labels set by the scraping Prometheus - // server, or by one specific metric (e.g. a build_info or a - // machine_role metric). See also - // https://prometheus.io/docs/instrumenting/writing_exporters/#target-labels,-not-static-scraped-labels - ConstLabels Labels - - // Objectives defines the quantile rank estimates with their respective - // absolute error. If Objectives[q] = e, then the value reported for q - // will be the φ-quantile value for some φ between q-e and q+e. The - // default value is an empty map, resulting in a summary without - // quantiles. - Objectives map[float64]float64 - - // MaxAge defines the duration for which an observation stays relevant - // for the summary. Must be positive. The default value is DefMaxAge. - MaxAge time.Duration - - // AgeBuckets is the number of buckets used to exclude observations that - // are older than MaxAge from the summary. A higher number has a - // resource penalty, so only increase it if the higher resolution is - // really required. For very high observation rates, you might want to - // reduce the number of age buckets. With only one age bucket, you will - // effectively see a complete reset of the summary each time MaxAge has - // passed. The default value is DefAgeBuckets. - AgeBuckets uint32 - - // BufCap defines the default sample stream buffer size. The default - // value of DefBufCap should suffice for most uses. If there is a need - // to increase the value, a multiple of 500 is recommended (because that - // is the internal buffer size of the underlying package - // "github.com/bmizerany/perks/quantile"). - BufCap uint32 -} - -// Problem with the sliding-window decay algorithm... The Merge method of -// perk/quantile is actually not working as advertised - and it might be -// unfixable, as the underlying algorithm is apparently not capable of merging -// summaries in the first place. To avoid using Merge, we are currently adding -// observations to _each_ age bucket, i.e. the effort to add a sample is -// essentially multiplied by the number of age buckets. When rotating age -// buckets, we empty the previous head stream. On scrape time, we simply take -// the quantiles from the head stream (no merging required). Result: More effort -// on observation time, less effort on scrape time, which is exactly the -// opposite of what we try to accomplish, but at least the results are correct. -// -// The quite elegant previous contraption to merge the age buckets efficiently -// on scrape time (see code up commit 6b9530d72ea715f0ba612c0120e6e09fbf1d49d0) -// can't be used anymore. - -// NewSummary creates a new Summary based on the provided SummaryOpts. -func NewSummary(opts SummaryOpts) Summary { - return newSummary( - NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ), - opts, - ) -} - -func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary { - if len(desc.variableLabels) != len(labelValues) { - panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, labelValues)) - } - - for _, n := range desc.variableLabels { - if n == quantileLabel { - panic(errQuantileLabelNotAllowed) - } - } - for _, lp := range desc.constLabelPairs { - if lp.GetName() == quantileLabel { - panic(errQuantileLabelNotAllowed) - } - } - - if opts.Objectives == nil { - opts.Objectives = map[float64]float64{} - } - - if opts.MaxAge < 0 { - panic(fmt.Errorf("illegal max age MaxAge=%v", opts.MaxAge)) - } - if opts.MaxAge == 0 { - opts.MaxAge = DefMaxAge - } - - if opts.AgeBuckets == 0 { - opts.AgeBuckets = DefAgeBuckets - } - - if opts.BufCap == 0 { - opts.BufCap = DefBufCap - } - - if len(opts.Objectives) == 0 { - // Use the lock-free implementation of a Summary without objectives. - s := &noObjectivesSummary{ - desc: desc, - labelPairs: makeLabelPairs(desc, labelValues), - counts: [2]*summaryCounts{{}, {}}, - } - s.init(s) // Init self-collection. - return s - } - - s := &summary{ - desc: desc, - - objectives: opts.Objectives, - sortedObjectives: make([]float64, 0, len(opts.Objectives)), - - labelPairs: makeLabelPairs(desc, labelValues), - - hotBuf: make([]float64, 0, opts.BufCap), - coldBuf: make([]float64, 0, opts.BufCap), - streamDuration: opts.MaxAge / time.Duration(opts.AgeBuckets), - } - s.headStreamExpTime = time.Now().Add(s.streamDuration) - s.hotBufExpTime = s.headStreamExpTime - - for i := uint32(0); i < opts.AgeBuckets; i++ { - s.streams = append(s.streams, s.newStream()) - } - s.headStream = s.streams[0] - - for qu := range s.objectives { - s.sortedObjectives = append(s.sortedObjectives, qu) - } - sort.Float64s(s.sortedObjectives) - - s.init(s) // Init self-collection. - return s -} - -type summary struct { - selfCollector - - bufMtx sync.Mutex // Protects hotBuf and hotBufExpTime. - mtx sync.Mutex // Protects every other moving part. - // Lock bufMtx before mtx if both are needed. - - desc *Desc - - objectives map[float64]float64 - sortedObjectives []float64 - - labelPairs []*dto.LabelPair - - sum float64 - cnt uint64 - - hotBuf, coldBuf []float64 - - streams []*quantile.Stream - streamDuration time.Duration - headStream *quantile.Stream - headStreamIdx int - headStreamExpTime, hotBufExpTime time.Time -} - -func (s *summary) Desc() *Desc { - return s.desc -} - -func (s *summary) Observe(v float64) { - s.bufMtx.Lock() - defer s.bufMtx.Unlock() - - now := time.Now() - if now.After(s.hotBufExpTime) { - s.asyncFlush(now) - } - s.hotBuf = append(s.hotBuf, v) - if len(s.hotBuf) == cap(s.hotBuf) { - s.asyncFlush(now) - } -} - -func (s *summary) Write(out *dto.Metric) error { - sum := &dto.Summary{} - qs := make([]*dto.Quantile, 0, len(s.objectives)) - - s.bufMtx.Lock() - s.mtx.Lock() - // Swap bufs even if hotBuf is empty to set new hotBufExpTime. - s.swapBufs(time.Now()) - s.bufMtx.Unlock() - - s.flushColdBuf() - sum.SampleCount = proto.Uint64(s.cnt) - sum.SampleSum = proto.Float64(s.sum) - - for _, rank := range s.sortedObjectives { - var q float64 - if s.headStream.Count() == 0 { - q = math.NaN() - } else { - q = s.headStream.Query(rank) - } - qs = append(qs, &dto.Quantile{ - Quantile: proto.Float64(rank), - Value: proto.Float64(q), - }) - } - - s.mtx.Unlock() - - if len(qs) > 0 { - sort.Sort(quantSort(qs)) - } - sum.Quantile = qs - - out.Summary = sum - out.Label = s.labelPairs - return nil -} - -func (s *summary) newStream() *quantile.Stream { - return quantile.NewTargeted(s.objectives) -} - -// asyncFlush needs bufMtx locked. -func (s *summary) asyncFlush(now time.Time) { - s.mtx.Lock() - s.swapBufs(now) - - // Unblock the original goroutine that was responsible for the mutation - // that triggered the compaction. But hold onto the global non-buffer - // state mutex until the operation finishes. - go func() { - s.flushColdBuf() - s.mtx.Unlock() - }() -} - -// rotateStreams needs mtx AND bufMtx locked. -func (s *summary) maybeRotateStreams() { - for !s.hotBufExpTime.Equal(s.headStreamExpTime) { - s.headStream.Reset() - s.headStreamIdx++ - if s.headStreamIdx >= len(s.streams) { - s.headStreamIdx = 0 - } - s.headStream = s.streams[s.headStreamIdx] - s.headStreamExpTime = s.headStreamExpTime.Add(s.streamDuration) - } -} - -// flushColdBuf needs mtx locked. -func (s *summary) flushColdBuf() { - for _, v := range s.coldBuf { - for _, stream := range s.streams { - stream.Insert(v) - } - s.cnt++ - s.sum += v - } - s.coldBuf = s.coldBuf[0:0] - s.maybeRotateStreams() -} - -// swapBufs needs mtx AND bufMtx locked, coldBuf must be empty. -func (s *summary) swapBufs(now time.Time) { - if len(s.coldBuf) != 0 { - panic("coldBuf is not empty") - } - s.hotBuf, s.coldBuf = s.coldBuf, s.hotBuf - // hotBuf is now empty and gets new expiration set. - for now.After(s.hotBufExpTime) { - s.hotBufExpTime = s.hotBufExpTime.Add(s.streamDuration) - } -} - -type summaryCounts struct { - // sumBits contains the bits of the float64 representing the sum of all - // observations. sumBits and count have to go first in the struct to - // guarantee alignment for atomic operations. - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG - sumBits uint64 - count uint64 -} - -type noObjectivesSummary struct { - // countAndHotIdx enables lock-free writes with use of atomic updates. - // The most significant bit is the hot index [0 or 1] of the count field - // below. Observe calls update the hot one. All remaining bits count the - // number of Observe calls. Observe starts by incrementing this counter, - // and finish by incrementing the count field in the respective - // summaryCounts, as a marker for completion. - // - // Calls of the Write method (which are non-mutating reads from the - // perspective of the summary) swap the hot–cold under the writeMtx - // lock. A cooldown is awaited (while locked) by comparing the number of - // observations with the initiation count. Once they match, then the - // last observation on the now cool one has completed. All cool fields must - // be merged into the new hot before releasing writeMtx. - - // Fields with atomic access first! See alignment constraint: - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG - countAndHotIdx uint64 - - selfCollector - desc *Desc - writeMtx sync.Mutex // Only used in the Write method. - - // Two counts, one is "hot" for lock-free observations, the other is - // "cold" for writing out a dto.Metric. It has to be an array of - // pointers to guarantee 64bit alignment of the histogramCounts, see - // http://golang.org/pkg/sync/atomic/#pkg-note-BUG. - counts [2]*summaryCounts - - labelPairs []*dto.LabelPair -} - -func (s *noObjectivesSummary) Desc() *Desc { - return s.desc -} - -func (s *noObjectivesSummary) Observe(v float64) { - // We increment h.countAndHotIdx so that the counter in the lower - // 63 bits gets incremented. At the same time, we get the new value - // back, which we can use to find the currently-hot counts. - n := atomic.AddUint64(&s.countAndHotIdx, 1) - hotCounts := s.counts[n>>63] - - for { - oldBits := atomic.LoadUint64(&hotCounts.sumBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + v) - if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { - break - } - } - // Increment count last as we take it as a signal that the observation - // is complete. - atomic.AddUint64(&hotCounts.count, 1) -} - -func (s *noObjectivesSummary) Write(out *dto.Metric) error { - // For simplicity, we protect this whole method by a mutex. It is not in - // the hot path, i.e. Observe is called much more often than Write. The - // complication of making Write lock-free isn't worth it, if possible at - // all. - s.writeMtx.Lock() - defer s.writeMtx.Unlock() - - // Adding 1<<63 switches the hot index (from 0 to 1 or from 1 to 0) - // without touching the count bits. See the struct comments for a full - // description of the algorithm. - n := atomic.AddUint64(&s.countAndHotIdx, 1<<63) - // count is contained unchanged in the lower 63 bits. - count := n & ((1 << 63) - 1) - // The most significant bit tells us which counts is hot. The complement - // is thus the cold one. - hotCounts := s.counts[n>>63] - coldCounts := s.counts[(^n)>>63] - - // Await cooldown. - for count != atomic.LoadUint64(&coldCounts.count) { - runtime.Gosched() // Let observations get work done. - } - - sum := &dto.Summary{ - SampleCount: proto.Uint64(count), - SampleSum: proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))), - } - - out.Summary = sum - out.Label = s.labelPairs - - // Finally add all the cold counts to the new hot counts and reset the cold counts. - atomic.AddUint64(&hotCounts.count, count) - atomic.StoreUint64(&coldCounts.count, 0) - for { - oldBits := atomic.LoadUint64(&hotCounts.sumBits) - newBits := math.Float64bits(math.Float64frombits(oldBits) + sum.GetSampleSum()) - if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { - atomic.StoreUint64(&coldCounts.sumBits, 0) - break - } - } - return nil -} - -type quantSort []*dto.Quantile - -func (s quantSort) Len() int { - return len(s) -} - -func (s quantSort) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s quantSort) Less(i, j int) bool { - return s[i].GetQuantile() < s[j].GetQuantile() -} - -// SummaryVec is a Collector that bundles a set of Summaries that all share the -// same Desc, but have different values for their variable labels. This is used -// if you want to count the same thing partitioned by various dimensions -// (e.g. HTTP request latencies, partitioned by status code and method). Create -// instances with NewSummaryVec. -type SummaryVec struct { - *metricVec -} - -// NewSummaryVec creates a new SummaryVec based on the provided SummaryOpts and -// partitioned by the given label names. -// -// Due to the way a Summary is represented in the Prometheus text format and how -// it is handled by the Prometheus server internally, “quantile” is an illegal -// label name. NewSummaryVec will panic if this label name is used. -func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec { - for _, ln := range labelNames { - if ln == quantileLabel { - panic(errQuantileLabelNotAllowed) - } - } - desc := NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - labelNames, - opts.ConstLabels, - ) - return &SummaryVec{ - metricVec: newMetricVec(desc, func(lvs ...string) Metric { - return newSummary(desc, opts, lvs...) - }), - } -} - -// GetMetricWithLabelValues returns the Summary for the given slice of label -// values (same order as the VariableLabels in Desc). If that combination of -// label values is accessed for the first time, a new Summary is created. -// -// It is possible to call this method without using the returned Summary to only -// create the new Summary but leave it at its starting value, a Summary without -// any observations. -// -// Keeping the Summary for later use is possible (and should be considered if -// performance is critical), but keep in mind that Reset, DeleteLabelValues and -// Delete can be used to delete the Summary from the SummaryVec. In that case, -// the Summary will still exist, but it will not be exported anymore, even if a -// Summary with the same label values is created later. See also the CounterVec -// example. -// -// An error is returned if the number of label values is not the same as the -// number of VariableLabels in Desc (minus any curried labels). -// -// Note that for more than one label value, this method is prone to mistakes -// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as -// an alternative to avoid that type of mistake. For higher label numbers, the -// latter has a much more readable (albeit more verbose) syntax, but it comes -// with a performance overhead (for creating and processing the Labels map). -// See also the GaugeVec example. -func (v *SummaryVec) GetMetricWithLabelValues(lvs ...string) (Observer, error) { - metric, err := v.metricVec.getMetricWithLabelValues(lvs...) - if metric != nil { - return metric.(Observer), err - } - return nil, err -} - -// GetMetricWith returns the Summary for the given Labels map (the label names -// must match those of the VariableLabels in Desc). If that label map is -// accessed for the first time, a new Summary is created. Implications of -// creating a Summary without using it and keeping the Summary for later use are -// the same as for GetMetricWithLabelValues. -// -// An error is returned if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc (minus any curried labels). -// -// This method is used for the same purpose as -// GetMetricWithLabelValues(...string). See there for pros and cons of the two -// methods. -func (v *SummaryVec) GetMetricWith(labels Labels) (Observer, error) { - metric, err := v.metricVec.getMetricWith(labels) - if metric != nil { - return metric.(Observer), err - } - return nil, err -} - -// WithLabelValues works as GetMetricWithLabelValues, but panics where -// GetMetricWithLabelValues would have returned an error. Not returning an -// error allows shortcuts like -// myVec.WithLabelValues("404", "GET").Observe(42.21) -func (v *SummaryVec) WithLabelValues(lvs ...string) Observer { - s, err := v.GetMetricWithLabelValues(lvs...) - if err != nil { - panic(err) - } - return s -} - -// With works as GetMetricWith, but panics where GetMetricWithLabels would have -// returned an error. Not returning an error allows shortcuts like -// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Observe(42.21) -func (v *SummaryVec) With(labels Labels) Observer { - s, err := v.GetMetricWith(labels) - if err != nil { - panic(err) - } - return s -} - -// CurryWith returns a vector curried with the provided labels, i.e. the -// returned vector has those labels pre-set for all labeled operations performed -// on it. The cardinality of the curried vector is reduced accordingly. The -// order of the remaining labels stays the same (just with the curried labels -// taken out of the sequence – which is relevant for the -// (GetMetric)WithLabelValues methods). It is possible to curry a curried -// vector, but only with labels not yet used for currying before. -// -// The metrics contained in the SummaryVec are shared between the curried and -// uncurried vectors. They are just accessed differently. Curried and uncurried -// vectors behave identically in terms of collection. Only one must be -// registered with a given registry (usually the uncurried version). The Reset -// method deletes all metrics, even if called on a curried vector. -func (v *SummaryVec) CurryWith(labels Labels) (ObserverVec, error) { - vec, err := v.curryWith(labels) - if vec != nil { - return &SummaryVec{vec}, err - } - return nil, err -} - -// MustCurryWith works as CurryWith but panics where CurryWith would have -// returned an error. -func (v *SummaryVec) MustCurryWith(labels Labels) ObserverVec { - vec, err := v.CurryWith(labels) - if err != nil { - panic(err) - } - return vec -} - -type constSummary struct { - desc *Desc - count uint64 - sum float64 - quantiles map[float64]float64 - labelPairs []*dto.LabelPair -} - -func (s *constSummary) Desc() *Desc { - return s.desc -} - -func (s *constSummary) Write(out *dto.Metric) error { - sum := &dto.Summary{} - qs := make([]*dto.Quantile, 0, len(s.quantiles)) - - sum.SampleCount = proto.Uint64(s.count) - sum.SampleSum = proto.Float64(s.sum) - - for rank, q := range s.quantiles { - qs = append(qs, &dto.Quantile{ - Quantile: proto.Float64(rank), - Value: proto.Float64(q), - }) - } - - if len(qs) > 0 { - sort.Sort(quantSort(qs)) - } - sum.Quantile = qs - - out.Summary = sum - out.Label = s.labelPairs - - return nil -} - -// NewConstSummary returns a metric representing a Prometheus summary with fixed -// values for the count, sum, and quantiles. As those parameters cannot be -// changed, the returned value does not implement the Summary interface (but -// only the Metric interface). Users of this package will not have much use for -// it in regular operations. However, when implementing custom Collectors, it is -// useful as a throw-away metric that is generated on the fly to send it to -// Prometheus in the Collect method. -// -// quantiles maps ranks to quantile values. For example, a median latency of -// 0.23s and a 99th percentile latency of 0.56s would be expressed as: -// map[float64]float64{0.5: 0.23, 0.99: 0.56} -// -// NewConstSummary returns an error if the length of labelValues is not -// consistent with the variable labels in Desc or if Desc is invalid. -func NewConstSummary( - desc *Desc, - count uint64, - sum float64, - quantiles map[float64]float64, - labelValues ...string, -) (Metric, error) { - if desc.err != nil { - return nil, desc.err - } - if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { - return nil, err - } - return &constSummary{ - desc: desc, - count: count, - sum: sum, - quantiles: quantiles, - labelPairs: makeLabelPairs(desc, labelValues), - }, nil -} - -// MustNewConstSummary is a version of NewConstSummary that panics where -// NewConstMetric would have returned an error. -func MustNewConstSummary( - desc *Desc, - count uint64, - sum float64, - quantiles map[float64]float64, - labelValues ...string, -) Metric { - m, err := NewConstSummary(desc, count, sum, quantiles, labelValues...) - if err != nil { - panic(err) - } - return m -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/timer.go b/vendor/github.com/prometheus/client_golang/prometheus/timer.go deleted file mode 100644 index 8d5f1052..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/timer.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 The Prometheus Authors -// 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 prometheus - -import "time" - -// Timer is a helper type to time functions. Use NewTimer to create new -// instances. -type Timer struct { - begin time.Time - observer Observer -} - -// NewTimer creates a new Timer. The provided Observer is used to observe a -// duration in seconds. Timer is usually used to time a function call in the -// following way: -// func TimeMe() { -// timer := NewTimer(myHistogram) -// defer timer.ObserveDuration() -// // Do actual work. -// } -func NewTimer(o Observer) *Timer { - return &Timer{ - begin: time.Now(), - observer: o, - } -} - -// ObserveDuration records the duration passed since the Timer was created with -// NewTimer. It calls the Observe method of the Observer provided during -// construction with the duration in seconds as an argument. The observed -// duration is also returned. ObserveDuration is usually called with a defer -// statement. -// -// Note that this method is only guaranteed to never observe negative durations -// if used with Go1.9+. -func (t *Timer) ObserveDuration() time.Duration { - d := time.Since(t.begin) - if t.observer != nil { - t.observer.Observe(d.Seconds()) - } - return d -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/untyped.go b/vendor/github.com/prometheus/client_golang/prometheus/untyped.go deleted file mode 100644 index 0f9ce63f..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/untyped.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -// UntypedOpts is an alias for Opts. See there for doc comments. -type UntypedOpts Opts - -// UntypedFunc works like GaugeFunc but the collected metric is of type -// "Untyped". UntypedFunc is useful to mirror an external metric of unknown -// type. -// -// To create UntypedFunc instances, use NewUntypedFunc. -type UntypedFunc interface { - Metric - Collector -} - -// NewUntypedFunc creates a new UntypedFunc based on the provided -// UntypedOpts. The value reported is determined by calling the given function -// from within the Write method. Take into account that metric collection may -// happen concurrently. If that results in concurrent calls to Write, like in -// the case where an UntypedFunc is directly registered with Prometheus, the -// provided function must be concurrency-safe. -func NewUntypedFunc(opts UntypedOpts, function func() float64) UntypedFunc { - return newValueFunc(NewDesc( - BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), - opts.Help, - nil, - opts.ConstLabels, - ), UntypedValue, function) -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/value.go b/vendor/github.com/prometheus/client_golang/prometheus/value.go deleted file mode 100644 index eb248f10..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/value.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "fmt" - "sort" - - "github.com/golang/protobuf/proto" - - dto "github.com/prometheus/client_model/go" -) - -// ValueType is an enumeration of metric types that represent a simple value. -type ValueType int - -// Possible values for the ValueType enum. -const ( - _ ValueType = iota - CounterValue - GaugeValue - UntypedValue -) - -// valueFunc is a generic metric for simple values retrieved on collect time -// from a function. It implements Metric and Collector. Its effective type is -// determined by ValueType. This is a low-level building block used by the -// library to back the implementations of CounterFunc, GaugeFunc, and -// UntypedFunc. -type valueFunc struct { - selfCollector - - desc *Desc - valType ValueType - function func() float64 - labelPairs []*dto.LabelPair -} - -// newValueFunc returns a newly allocated valueFunc with the given Desc and -// ValueType. The value reported is determined by calling the given function -// from within the Write method. Take into account that metric collection may -// happen concurrently. If that results in concurrent calls to Write, like in -// the case where a valueFunc is directly registered with Prometheus, the -// provided function must be concurrency-safe. -func newValueFunc(desc *Desc, valueType ValueType, function func() float64) *valueFunc { - result := &valueFunc{ - desc: desc, - valType: valueType, - function: function, - labelPairs: makeLabelPairs(desc, nil), - } - result.init(result) - return result -} - -func (v *valueFunc) Desc() *Desc { - return v.desc -} - -func (v *valueFunc) Write(out *dto.Metric) error { - return populateMetric(v.valType, v.function(), v.labelPairs, out) -} - -// NewConstMetric returns a metric with one fixed value that cannot be -// changed. Users of this package will not have much use for it in regular -// operations. However, when implementing custom Collectors, it is useful as a -// throw-away metric that is generated on the fly to send it to Prometheus in -// the Collect method. NewConstMetric returns an error if the length of -// labelValues is not consistent with the variable labels in Desc or if Desc is -// invalid. -func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error) { - if desc.err != nil { - return nil, desc.err - } - if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { - return nil, err - } - return &constMetric{ - desc: desc, - valType: valueType, - val: value, - labelPairs: makeLabelPairs(desc, labelValues), - }, nil -} - -// MustNewConstMetric is a version of NewConstMetric that panics where -// NewConstMetric would have returned an error. -func MustNewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) Metric { - m, err := NewConstMetric(desc, valueType, value, labelValues...) - if err != nil { - panic(err) - } - return m -} - -type constMetric struct { - desc *Desc - valType ValueType - val float64 - labelPairs []*dto.LabelPair -} - -func (m *constMetric) Desc() *Desc { - return m.desc -} - -func (m *constMetric) Write(out *dto.Metric) error { - return populateMetric(m.valType, m.val, m.labelPairs, out) -} - -func populateMetric( - t ValueType, - v float64, - labelPairs []*dto.LabelPair, - m *dto.Metric, -) error { - m.Label = labelPairs - switch t { - case CounterValue: - m.Counter = &dto.Counter{Value: proto.Float64(v)} - case GaugeValue: - m.Gauge = &dto.Gauge{Value: proto.Float64(v)} - case UntypedValue: - m.Untyped = &dto.Untyped{Value: proto.Float64(v)} - default: - return fmt.Errorf("encountered unknown type %v", t) - } - return nil -} - -func makeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair { - totalLen := len(desc.variableLabels) + len(desc.constLabelPairs) - if totalLen == 0 { - // Super fast path. - return nil - } - if len(desc.variableLabels) == 0 { - // Moderately fast path. - return desc.constLabelPairs - } - labelPairs := make([]*dto.LabelPair, 0, totalLen) - for i, n := range desc.variableLabels { - labelPairs = append(labelPairs, &dto.LabelPair{ - Name: proto.String(n), - Value: proto.String(labelValues[i]), - }) - } - labelPairs = append(labelPairs, desc.constLabelPairs...) - sort.Sort(labelPairSorter(labelPairs)) - return labelPairs -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/vendor/github.com/prometheus/client_golang/prometheus/vec.go deleted file mode 100644 index 19df3fe6..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/vec.go +++ /dev/null @@ -1,472 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 prometheus - -import ( - "fmt" - "sync" - - "github.com/prometheus/common/model" -) - -// metricVec is a Collector to bundle metrics of the same name that differ in -// their label values. metricVec is not used directly (and therefore -// unexported). It is used as a building block for implementations of vectors of -// a given metric type, like GaugeVec, CounterVec, SummaryVec, and HistogramVec. -// It also handles label currying. -type metricVec struct { - *metricMap - - curry []curriedLabelValue - - // hashAdd and hashAddByte can be replaced for testing collision handling. - hashAdd func(h uint64, s string) uint64 - hashAddByte func(h uint64, b byte) uint64 -} - -// newMetricVec returns an initialized metricVec. -func newMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *metricVec { - return &metricVec{ - metricMap: &metricMap{ - metrics: map[uint64][]metricWithLabelValues{}, - desc: desc, - newMetric: newMetric, - }, - hashAdd: hashAdd, - hashAddByte: hashAddByte, - } -} - -// DeleteLabelValues removes the metric where the variable labels are the same -// as those passed in as labels (same order as the VariableLabels in Desc). It -// returns true if a metric was deleted. -// -// It is not an error if the number of label values is not the same as the -// number of VariableLabels in Desc. However, such inconsistent label count can -// never match an actual metric, so the method will always return false in that -// case. -// -// Note that for more than one label value, this method is prone to mistakes -// caused by an incorrect order of arguments. Consider Delete(Labels) as an -// alternative to avoid that type of mistake. For higher label numbers, the -// latter has a much more readable (albeit more verbose) syntax, but it comes -// with a performance overhead (for creating and processing the Labels map). -// See also the CounterVec example. -func (m *metricVec) DeleteLabelValues(lvs ...string) bool { - h, err := m.hashLabelValues(lvs) - if err != nil { - return false - } - - return m.metricMap.deleteByHashWithLabelValues(h, lvs, m.curry) -} - -// Delete deletes the metric where the variable labels are the same as those -// passed in as labels. It returns true if a metric was deleted. -// -// It is not an error if the number and names of the Labels are inconsistent -// with those of the VariableLabels in Desc. However, such inconsistent Labels -// can never match an actual metric, so the method will always return false in -// that case. -// -// This method is used for the same purpose as DeleteLabelValues(...string). See -// there for pros and cons of the two methods. -func (m *metricVec) Delete(labels Labels) bool { - h, err := m.hashLabels(labels) - if err != nil { - return false - } - - return m.metricMap.deleteByHashWithLabels(h, labels, m.curry) -} - -func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { - var ( - newCurry []curriedLabelValue - oldCurry = m.curry - iCurry int - ) - for i, label := range m.desc.variableLabels { - val, ok := labels[label] - if iCurry < len(oldCurry) && oldCurry[iCurry].index == i { - if ok { - return nil, fmt.Errorf("label name %q is already curried", label) - } - newCurry = append(newCurry, oldCurry[iCurry]) - iCurry++ - } else { - if !ok { - continue // Label stays uncurried. - } - newCurry = append(newCurry, curriedLabelValue{i, val}) - } - } - if l := len(oldCurry) + len(labels) - len(newCurry); l > 0 { - return nil, fmt.Errorf("%d unknown label(s) found during currying", l) - } - - return &metricVec{ - metricMap: m.metricMap, - curry: newCurry, - hashAdd: m.hashAdd, - hashAddByte: m.hashAddByte, - }, nil -} - -func (m *metricVec) getMetricWithLabelValues(lvs ...string) (Metric, error) { - h, err := m.hashLabelValues(lvs) - if err != nil { - return nil, err - } - - return m.metricMap.getOrCreateMetricWithLabelValues(h, lvs, m.curry), nil -} - -func (m *metricVec) getMetricWith(labels Labels) (Metric, error) { - h, err := m.hashLabels(labels) - if err != nil { - return nil, err - } - - return m.metricMap.getOrCreateMetricWithLabels(h, labels, m.curry), nil -} - -func (m *metricVec) hashLabelValues(vals []string) (uint64, error) { - if err := validateLabelValues(vals, len(m.desc.variableLabels)-len(m.curry)); err != nil { - return 0, err - } - - var ( - h = hashNew() - curry = m.curry - iVals, iCurry int - ) - for i := 0; i < len(m.desc.variableLabels); i++ { - if iCurry < len(curry) && curry[iCurry].index == i { - h = m.hashAdd(h, curry[iCurry].value) - iCurry++ - } else { - h = m.hashAdd(h, vals[iVals]) - iVals++ - } - h = m.hashAddByte(h, model.SeparatorByte) - } - return h, nil -} - -func (m *metricVec) hashLabels(labels Labels) (uint64, error) { - if err := validateValuesInLabels(labels, len(m.desc.variableLabels)-len(m.curry)); err != nil { - return 0, err - } - - var ( - h = hashNew() - curry = m.curry - iCurry int - ) - for i, label := range m.desc.variableLabels { - val, ok := labels[label] - if iCurry < len(curry) && curry[iCurry].index == i { - if ok { - return 0, fmt.Errorf("label name %q is already curried", label) - } - h = m.hashAdd(h, curry[iCurry].value) - iCurry++ - } else { - if !ok { - return 0, fmt.Errorf("label name %q missing in label map", label) - } - h = m.hashAdd(h, val) - } - h = m.hashAddByte(h, model.SeparatorByte) - } - return h, nil -} - -// metricWithLabelValues provides the metric and its label values for -// disambiguation on hash collision. -type metricWithLabelValues struct { - values []string - metric Metric -} - -// curriedLabelValue sets the curried value for a label at the given index. -type curriedLabelValue struct { - index int - value string -} - -// metricMap is a helper for metricVec and shared between differently curried -// metricVecs. -type metricMap struct { - mtx sync.RWMutex // Protects metrics. - metrics map[uint64][]metricWithLabelValues - desc *Desc - newMetric func(labelValues ...string) Metric -} - -// Describe implements Collector. It will send exactly one Desc to the provided -// channel. -func (m *metricMap) Describe(ch chan<- *Desc) { - ch <- m.desc -} - -// Collect implements Collector. -func (m *metricMap) Collect(ch chan<- Metric) { - m.mtx.RLock() - defer m.mtx.RUnlock() - - for _, metrics := range m.metrics { - for _, metric := range metrics { - ch <- metric.metric - } - } -} - -// Reset deletes all metrics in this vector. -func (m *metricMap) Reset() { - m.mtx.Lock() - defer m.mtx.Unlock() - - for h := range m.metrics { - delete(m.metrics, h) - } -} - -// deleteByHashWithLabelValues removes the metric from the hash bucket h. If -// there are multiple matches in the bucket, use lvs to select a metric and -// remove only that metric. -func (m *metricMap) deleteByHashWithLabelValues( - h uint64, lvs []string, curry []curriedLabelValue, -) bool { - m.mtx.Lock() - defer m.mtx.Unlock() - - metrics, ok := m.metrics[h] - if !ok { - return false - } - - i := findMetricWithLabelValues(metrics, lvs, curry) - if i >= len(metrics) { - return false - } - - if len(metrics) > 1 { - m.metrics[h] = append(metrics[:i], metrics[i+1:]...) - } else { - delete(m.metrics, h) - } - return true -} - -// deleteByHashWithLabels removes the metric from the hash bucket h. If there -// are multiple matches in the bucket, use lvs to select a metric and remove -// only that metric. -func (m *metricMap) deleteByHashWithLabels( - h uint64, labels Labels, curry []curriedLabelValue, -) bool { - m.mtx.Lock() - defer m.mtx.Unlock() - - metrics, ok := m.metrics[h] - if !ok { - return false - } - i := findMetricWithLabels(m.desc, metrics, labels, curry) - if i >= len(metrics) { - return false - } - - if len(metrics) > 1 { - m.metrics[h] = append(metrics[:i], metrics[i+1:]...) - } else { - delete(m.metrics, h) - } - return true -} - -// getOrCreateMetricWithLabelValues retrieves the metric by hash and label value -// or creates it and returns the new one. -// -// This function holds the mutex. -func (m *metricMap) getOrCreateMetricWithLabelValues( - hash uint64, lvs []string, curry []curriedLabelValue, -) Metric { - m.mtx.RLock() - metric, ok := m.getMetricWithHashAndLabelValues(hash, lvs, curry) - m.mtx.RUnlock() - if ok { - return metric - } - - m.mtx.Lock() - defer m.mtx.Unlock() - metric, ok = m.getMetricWithHashAndLabelValues(hash, lvs, curry) - if !ok { - inlinedLVs := inlineLabelValues(lvs, curry) - metric = m.newMetric(inlinedLVs...) - m.metrics[hash] = append(m.metrics[hash], metricWithLabelValues{values: inlinedLVs, metric: metric}) - } - return metric -} - -// getOrCreateMetricWithLabelValues retrieves the metric by hash and label value -// or creates it and returns the new one. -// -// This function holds the mutex. -func (m *metricMap) getOrCreateMetricWithLabels( - hash uint64, labels Labels, curry []curriedLabelValue, -) Metric { - m.mtx.RLock() - metric, ok := m.getMetricWithHashAndLabels(hash, labels, curry) - m.mtx.RUnlock() - if ok { - return metric - } - - m.mtx.Lock() - defer m.mtx.Unlock() - metric, ok = m.getMetricWithHashAndLabels(hash, labels, curry) - if !ok { - lvs := extractLabelValues(m.desc, labels, curry) - metric = m.newMetric(lvs...) - m.metrics[hash] = append(m.metrics[hash], metricWithLabelValues{values: lvs, metric: metric}) - } - return metric -} - -// getMetricWithHashAndLabelValues gets a metric while handling possible -// collisions in the hash space. Must be called while holding the read mutex. -func (m *metricMap) getMetricWithHashAndLabelValues( - h uint64, lvs []string, curry []curriedLabelValue, -) (Metric, bool) { - metrics, ok := m.metrics[h] - if ok { - if i := findMetricWithLabelValues(metrics, lvs, curry); i < len(metrics) { - return metrics[i].metric, true - } - } - return nil, false -} - -// getMetricWithHashAndLabels gets a metric while handling possible collisions in -// the hash space. Must be called while holding read mutex. -func (m *metricMap) getMetricWithHashAndLabels( - h uint64, labels Labels, curry []curriedLabelValue, -) (Metric, bool) { - metrics, ok := m.metrics[h] - if ok { - if i := findMetricWithLabels(m.desc, metrics, labels, curry); i < len(metrics) { - return metrics[i].metric, true - } - } - return nil, false -} - -// findMetricWithLabelValues returns the index of the matching metric or -// len(metrics) if not found. -func findMetricWithLabelValues( - metrics []metricWithLabelValues, lvs []string, curry []curriedLabelValue, -) int { - for i, metric := range metrics { - if matchLabelValues(metric.values, lvs, curry) { - return i - } - } - return len(metrics) -} - -// findMetricWithLabels returns the index of the matching metric or len(metrics) -// if not found. -func findMetricWithLabels( - desc *Desc, metrics []metricWithLabelValues, labels Labels, curry []curriedLabelValue, -) int { - for i, metric := range metrics { - if matchLabels(desc, metric.values, labels, curry) { - return i - } - } - return len(metrics) -} - -func matchLabelValues(values []string, lvs []string, curry []curriedLabelValue) bool { - if len(values) != len(lvs)+len(curry) { - return false - } - var iLVs, iCurry int - for i, v := range values { - if iCurry < len(curry) && curry[iCurry].index == i { - if v != curry[iCurry].value { - return false - } - iCurry++ - continue - } - if v != lvs[iLVs] { - return false - } - iLVs++ - } - return true -} - -func matchLabels(desc *Desc, values []string, labels Labels, curry []curriedLabelValue) bool { - if len(values) != len(labels)+len(curry) { - return false - } - iCurry := 0 - for i, k := range desc.variableLabels { - if iCurry < len(curry) && curry[iCurry].index == i { - if values[i] != curry[iCurry].value { - return false - } - iCurry++ - continue - } - if values[i] != labels[k] { - return false - } - } - return true -} - -func extractLabelValues(desc *Desc, labels Labels, curry []curriedLabelValue) []string { - labelValues := make([]string, len(labels)+len(curry)) - iCurry := 0 - for i, k := range desc.variableLabels { - if iCurry < len(curry) && curry[iCurry].index == i { - labelValues[i] = curry[iCurry].value - iCurry++ - continue - } - labelValues[i] = labels[k] - } - return labelValues -} - -func inlineLabelValues(lvs []string, curry []curriedLabelValue) []string { - labelValues := make([]string, len(lvs)+len(curry)) - var iCurry, iLVs int - for i := range labelValues { - if iCurry < len(curry) && curry[iCurry].index == i { - labelValues[i] = curry[iCurry].value - iCurry++ - continue - } - labelValues[i] = lvs[iLVs] - iLVs++ - } - return labelValues -} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go deleted file mode 100644 index e303eef6..00000000 --- a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 prometheus - -import ( - "fmt" - "sort" - - "github.com/golang/protobuf/proto" - - dto "github.com/prometheus/client_model/go" -) - -// WrapRegistererWith returns a Registerer wrapping the provided -// Registerer. Collectors registered with the returned Registerer will be -// registered with the wrapped Registerer in a modified way. The modified -// Collector adds the provided Labels to all Metrics it collects (as -// ConstLabels). The Metrics collected by the unmodified Collector must not -// duplicate any of those labels. -// -// WrapRegistererWith provides a way to add fixed labels to a subset of -// Collectors. It should not be used to add fixed labels to all metrics exposed. -// -// Conflicts between Collectors registered through the original Registerer with -// Collectors registered through the wrapping Registerer will still be -// detected. Any AlreadyRegisteredError returned by the Register method of -// either Registerer will contain the ExistingCollector in the form it was -// provided to the respective registry. -// -// The Collector example demonstrates a use of WrapRegistererWith. -func WrapRegistererWith(labels Labels, reg Registerer) Registerer { - return &wrappingRegisterer{ - wrappedRegisterer: reg, - labels: labels, - } -} - -// WrapRegistererWithPrefix returns a Registerer wrapping the provided -// Registerer. Collectors registered with the returned Registerer will be -// registered with the wrapped Registerer in a modified way. The modified -// Collector adds the provided prefix to the name of all Metrics it collects. -// -// WrapRegistererWithPrefix is useful to have one place to prefix all metrics of -// a sub-system. To make this work, register metrics of the sub-system with the -// wrapping Registerer returned by WrapRegistererWithPrefix. It is rarely useful -// to use the same prefix for all metrics exposed. In particular, do not prefix -// metric names that are standardized across applications, as that would break -// horizontal monitoring, for example the metrics provided by the Go collector -// (see NewGoCollector) and the process collector (see NewProcessCollector). (In -// fact, those metrics are already prefixed with “go_” or “process_”, -// respectively.) -// -// Conflicts between Collectors registered through the original Registerer with -// Collectors registered through the wrapping Registerer will still be -// detected. Any AlreadyRegisteredError returned by the Register method of -// either Registerer will contain the ExistingCollector in the form it was -// provided to the respective registry. -func WrapRegistererWithPrefix(prefix string, reg Registerer) Registerer { - return &wrappingRegisterer{ - wrappedRegisterer: reg, - prefix: prefix, - } -} - -type wrappingRegisterer struct { - wrappedRegisterer Registerer - prefix string - labels Labels -} - -func (r *wrappingRegisterer) Register(c Collector) error { - return r.wrappedRegisterer.Register(&wrappingCollector{ - wrappedCollector: c, - prefix: r.prefix, - labels: r.labels, - }) -} - -func (r *wrappingRegisterer) MustRegister(cs ...Collector) { - for _, c := range cs { - if err := r.Register(c); err != nil { - panic(err) - } - } -} - -func (r *wrappingRegisterer) Unregister(c Collector) bool { - return r.wrappedRegisterer.Unregister(&wrappingCollector{ - wrappedCollector: c, - prefix: r.prefix, - labels: r.labels, - }) -} - -type wrappingCollector struct { - wrappedCollector Collector - prefix string - labels Labels -} - -func (c *wrappingCollector) Collect(ch chan<- Metric) { - wrappedCh := make(chan Metric) - go func() { - c.wrappedCollector.Collect(wrappedCh) - close(wrappedCh) - }() - for m := range wrappedCh { - ch <- &wrappingMetric{ - wrappedMetric: m, - prefix: c.prefix, - labels: c.labels, - } - } -} - -func (c *wrappingCollector) Describe(ch chan<- *Desc) { - wrappedCh := make(chan *Desc) - go func() { - c.wrappedCollector.Describe(wrappedCh) - close(wrappedCh) - }() - for desc := range wrappedCh { - ch <- wrapDesc(desc, c.prefix, c.labels) - } -} - -func (c *wrappingCollector) unwrapRecursively() Collector { - switch wc := c.wrappedCollector.(type) { - case *wrappingCollector: - return wc.unwrapRecursively() - default: - return wc - } -} - -type wrappingMetric struct { - wrappedMetric Metric - prefix string - labels Labels -} - -func (m *wrappingMetric) Desc() *Desc { - return wrapDesc(m.wrappedMetric.Desc(), m.prefix, m.labels) -} - -func (m *wrappingMetric) Write(out *dto.Metric) error { - if err := m.wrappedMetric.Write(out); err != nil { - return err - } - if len(m.labels) == 0 { - // No wrapping labels. - return nil - } - for ln, lv := range m.labels { - out.Label = append(out.Label, &dto.LabelPair{ - Name: proto.String(ln), - Value: proto.String(lv), - }) - } - sort.Sort(labelPairSorter(out.Label)) - return nil -} - -func wrapDesc(desc *Desc, prefix string, labels Labels) *Desc { - constLabels := Labels{} - for _, lp := range desc.constLabelPairs { - constLabels[*lp.Name] = *lp.Value - } - for ln, lv := range labels { - if _, alreadyUsed := constLabels[ln]; alreadyUsed { - return &Desc{ - fqName: desc.fqName, - help: desc.help, - variableLabels: desc.variableLabels, - constLabelPairs: desc.constLabelPairs, - err: fmt.Errorf("attempted wrapping with already existing label name %q", ln), - } - } - constLabels[ln] = lv - } - // NewDesc will do remaining validations. - newDesc := NewDesc(prefix+desc.fqName, desc.help, desc.variableLabels, constLabels) - // Propagate errors if there was any. This will override any errer - // created by NewDesc above, i.e. earlier errors get precedence. - if desc.err != nil { - newDesc.err = desc.err - } - return newDesc -} diff --git a/vendor/github.com/prometheus/client_model/LICENSE b/vendor/github.com/prometheus/client_model/LICENSE deleted file mode 100644 index 261eeb9e..00000000 --- a/vendor/github.com/prometheus/client_model/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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] - - 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. diff --git a/vendor/github.com/prometheus/client_model/NOTICE b/vendor/github.com/prometheus/client_model/NOTICE deleted file mode 100644 index 20110e41..00000000 --- a/vendor/github.com/prometheus/client_model/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Data model artifacts for Prometheus. -Copyright 2012-2015 The Prometheus Authors - -This product includes software developed at -SoundCloud Ltd. (http://soundcloud.com/). diff --git a/vendor/github.com/prometheus/client_model/go/metrics.pb.go b/vendor/github.com/prometheus/client_model/go/metrics.pb.go deleted file mode 100644 index 9805432c..00000000 --- a/vendor/github.com/prometheus/client_model/go/metrics.pb.go +++ /dev/null @@ -1,629 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: metrics.proto - -package io_prometheus_client // import "github.com/prometheus/client_model/go" - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type MetricType int32 - -const ( - MetricType_COUNTER MetricType = 0 - MetricType_GAUGE MetricType = 1 - MetricType_SUMMARY MetricType = 2 - MetricType_UNTYPED MetricType = 3 - MetricType_HISTOGRAM MetricType = 4 -) - -var MetricType_name = map[int32]string{ - 0: "COUNTER", - 1: "GAUGE", - 2: "SUMMARY", - 3: "UNTYPED", - 4: "HISTOGRAM", -} -var MetricType_value = map[string]int32{ - "COUNTER": 0, - "GAUGE": 1, - "SUMMARY": 2, - "UNTYPED": 3, - "HISTOGRAM": 4, -} - -func (x MetricType) Enum() *MetricType { - p := new(MetricType) - *p = x - return p -} -func (x MetricType) String() string { - return proto.EnumName(MetricType_name, int32(x)) -} -func (x *MetricType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MetricType_value, data, "MetricType") - if err != nil { - return err - } - *x = MetricType(value) - return nil -} -func (MetricType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{0} -} - -type LabelPair struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LabelPair) Reset() { *m = LabelPair{} } -func (m *LabelPair) String() string { return proto.CompactTextString(m) } -func (*LabelPair) ProtoMessage() {} -func (*LabelPair) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{0} -} -func (m *LabelPair) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LabelPair.Unmarshal(m, b) -} -func (m *LabelPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LabelPair.Marshal(b, m, deterministic) -} -func (dst *LabelPair) XXX_Merge(src proto.Message) { - xxx_messageInfo_LabelPair.Merge(dst, src) -} -func (m *LabelPair) XXX_Size() int { - return xxx_messageInfo_LabelPair.Size(m) -} -func (m *LabelPair) XXX_DiscardUnknown() { - xxx_messageInfo_LabelPair.DiscardUnknown(m) -} - -var xxx_messageInfo_LabelPair proto.InternalMessageInfo - -func (m *LabelPair) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *LabelPair) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -type Gauge struct { - Value *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Gauge) Reset() { *m = Gauge{} } -func (m *Gauge) String() string { return proto.CompactTextString(m) } -func (*Gauge) ProtoMessage() {} -func (*Gauge) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{1} -} -func (m *Gauge) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Gauge.Unmarshal(m, b) -} -func (m *Gauge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Gauge.Marshal(b, m, deterministic) -} -func (dst *Gauge) XXX_Merge(src proto.Message) { - xxx_messageInfo_Gauge.Merge(dst, src) -} -func (m *Gauge) XXX_Size() int { - return xxx_messageInfo_Gauge.Size(m) -} -func (m *Gauge) XXX_DiscardUnknown() { - xxx_messageInfo_Gauge.DiscardUnknown(m) -} - -var xxx_messageInfo_Gauge proto.InternalMessageInfo - -func (m *Gauge) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Counter struct { - Value *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Counter) Reset() { *m = Counter{} } -func (m *Counter) String() string { return proto.CompactTextString(m) } -func (*Counter) ProtoMessage() {} -func (*Counter) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{2} -} -func (m *Counter) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Counter.Unmarshal(m, b) -} -func (m *Counter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Counter.Marshal(b, m, deterministic) -} -func (dst *Counter) XXX_Merge(src proto.Message) { - xxx_messageInfo_Counter.Merge(dst, src) -} -func (m *Counter) XXX_Size() int { - return xxx_messageInfo_Counter.Size(m) -} -func (m *Counter) XXX_DiscardUnknown() { - xxx_messageInfo_Counter.DiscardUnknown(m) -} - -var xxx_messageInfo_Counter proto.InternalMessageInfo - -func (m *Counter) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Quantile struct { - Quantile *float64 `protobuf:"fixed64,1,opt,name=quantile" json:"quantile,omitempty"` - Value *float64 `protobuf:"fixed64,2,opt,name=value" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Quantile) Reset() { *m = Quantile{} } -func (m *Quantile) String() string { return proto.CompactTextString(m) } -func (*Quantile) ProtoMessage() {} -func (*Quantile) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{3} -} -func (m *Quantile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Quantile.Unmarshal(m, b) -} -func (m *Quantile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Quantile.Marshal(b, m, deterministic) -} -func (dst *Quantile) XXX_Merge(src proto.Message) { - xxx_messageInfo_Quantile.Merge(dst, src) -} -func (m *Quantile) XXX_Size() int { - return xxx_messageInfo_Quantile.Size(m) -} -func (m *Quantile) XXX_DiscardUnknown() { - xxx_messageInfo_Quantile.DiscardUnknown(m) -} - -var xxx_messageInfo_Quantile proto.InternalMessageInfo - -func (m *Quantile) GetQuantile() float64 { - if m != nil && m.Quantile != nil { - return *m.Quantile - } - return 0 -} - -func (m *Quantile) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Summary struct { - SampleCount *uint64 `protobuf:"varint,1,opt,name=sample_count,json=sampleCount" json:"sample_count,omitempty"` - SampleSum *float64 `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"` - Quantile []*Quantile `protobuf:"bytes,3,rep,name=quantile" json:"quantile,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Summary) Reset() { *m = Summary{} } -func (m *Summary) String() string { return proto.CompactTextString(m) } -func (*Summary) ProtoMessage() {} -func (*Summary) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{4} -} -func (m *Summary) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Summary.Unmarshal(m, b) -} -func (m *Summary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Summary.Marshal(b, m, deterministic) -} -func (dst *Summary) XXX_Merge(src proto.Message) { - xxx_messageInfo_Summary.Merge(dst, src) -} -func (m *Summary) XXX_Size() int { - return xxx_messageInfo_Summary.Size(m) -} -func (m *Summary) XXX_DiscardUnknown() { - xxx_messageInfo_Summary.DiscardUnknown(m) -} - -var xxx_messageInfo_Summary proto.InternalMessageInfo - -func (m *Summary) GetSampleCount() uint64 { - if m != nil && m.SampleCount != nil { - return *m.SampleCount - } - return 0 -} - -func (m *Summary) GetSampleSum() float64 { - if m != nil && m.SampleSum != nil { - return *m.SampleSum - } - return 0 -} - -func (m *Summary) GetQuantile() []*Quantile { - if m != nil { - return m.Quantile - } - return nil -} - -type Untyped struct { - Value *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Untyped) Reset() { *m = Untyped{} } -func (m *Untyped) String() string { return proto.CompactTextString(m) } -func (*Untyped) ProtoMessage() {} -func (*Untyped) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{5} -} -func (m *Untyped) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Untyped.Unmarshal(m, b) -} -func (m *Untyped) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Untyped.Marshal(b, m, deterministic) -} -func (dst *Untyped) XXX_Merge(src proto.Message) { - xxx_messageInfo_Untyped.Merge(dst, src) -} -func (m *Untyped) XXX_Size() int { - return xxx_messageInfo_Untyped.Size(m) -} -func (m *Untyped) XXX_DiscardUnknown() { - xxx_messageInfo_Untyped.DiscardUnknown(m) -} - -var xxx_messageInfo_Untyped proto.InternalMessageInfo - -func (m *Untyped) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Histogram struct { - SampleCount *uint64 `protobuf:"varint,1,opt,name=sample_count,json=sampleCount" json:"sample_count,omitempty"` - SampleSum *float64 `protobuf:"fixed64,2,opt,name=sample_sum,json=sampleSum" json:"sample_sum,omitempty"` - Bucket []*Bucket `protobuf:"bytes,3,rep,name=bucket" json:"bucket,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Histogram) Reset() { *m = Histogram{} } -func (m *Histogram) String() string { return proto.CompactTextString(m) } -func (*Histogram) ProtoMessage() {} -func (*Histogram) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{6} -} -func (m *Histogram) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Histogram.Unmarshal(m, b) -} -func (m *Histogram) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Histogram.Marshal(b, m, deterministic) -} -func (dst *Histogram) XXX_Merge(src proto.Message) { - xxx_messageInfo_Histogram.Merge(dst, src) -} -func (m *Histogram) XXX_Size() int { - return xxx_messageInfo_Histogram.Size(m) -} -func (m *Histogram) XXX_DiscardUnknown() { - xxx_messageInfo_Histogram.DiscardUnknown(m) -} - -var xxx_messageInfo_Histogram proto.InternalMessageInfo - -func (m *Histogram) GetSampleCount() uint64 { - if m != nil && m.SampleCount != nil { - return *m.SampleCount - } - return 0 -} - -func (m *Histogram) GetSampleSum() float64 { - if m != nil && m.SampleSum != nil { - return *m.SampleSum - } - return 0 -} - -func (m *Histogram) GetBucket() []*Bucket { - if m != nil { - return m.Bucket - } - return nil -} - -type Bucket struct { - CumulativeCount *uint64 `protobuf:"varint,1,opt,name=cumulative_count,json=cumulativeCount" json:"cumulative_count,omitempty"` - UpperBound *float64 `protobuf:"fixed64,2,opt,name=upper_bound,json=upperBound" json:"upper_bound,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Bucket) Reset() { *m = Bucket{} } -func (m *Bucket) String() string { return proto.CompactTextString(m) } -func (*Bucket) ProtoMessage() {} -func (*Bucket) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{7} -} -func (m *Bucket) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Bucket.Unmarshal(m, b) -} -func (m *Bucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Bucket.Marshal(b, m, deterministic) -} -func (dst *Bucket) XXX_Merge(src proto.Message) { - xxx_messageInfo_Bucket.Merge(dst, src) -} -func (m *Bucket) XXX_Size() int { - return xxx_messageInfo_Bucket.Size(m) -} -func (m *Bucket) XXX_DiscardUnknown() { - xxx_messageInfo_Bucket.DiscardUnknown(m) -} - -var xxx_messageInfo_Bucket proto.InternalMessageInfo - -func (m *Bucket) GetCumulativeCount() uint64 { - if m != nil && m.CumulativeCount != nil { - return *m.CumulativeCount - } - return 0 -} - -func (m *Bucket) GetUpperBound() float64 { - if m != nil && m.UpperBound != nil { - return *m.UpperBound - } - return 0 -} - -type Metric struct { - Label []*LabelPair `protobuf:"bytes,1,rep,name=label" json:"label,omitempty"` - Gauge *Gauge `protobuf:"bytes,2,opt,name=gauge" json:"gauge,omitempty"` - Counter *Counter `protobuf:"bytes,3,opt,name=counter" json:"counter,omitempty"` - Summary *Summary `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"` - Untyped *Untyped `protobuf:"bytes,5,opt,name=untyped" json:"untyped,omitempty"` - Histogram *Histogram `protobuf:"bytes,7,opt,name=histogram" json:"histogram,omitempty"` - TimestampMs *int64 `protobuf:"varint,6,opt,name=timestamp_ms,json=timestampMs" json:"timestamp_ms,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Metric) Reset() { *m = Metric{} } -func (m *Metric) String() string { return proto.CompactTextString(m) } -func (*Metric) ProtoMessage() {} -func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{8} -} -func (m *Metric) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Metric.Unmarshal(m, b) -} -func (m *Metric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Metric.Marshal(b, m, deterministic) -} -func (dst *Metric) XXX_Merge(src proto.Message) { - xxx_messageInfo_Metric.Merge(dst, src) -} -func (m *Metric) XXX_Size() int { - return xxx_messageInfo_Metric.Size(m) -} -func (m *Metric) XXX_DiscardUnknown() { - xxx_messageInfo_Metric.DiscardUnknown(m) -} - -var xxx_messageInfo_Metric proto.InternalMessageInfo - -func (m *Metric) GetLabel() []*LabelPair { - if m != nil { - return m.Label - } - return nil -} - -func (m *Metric) GetGauge() *Gauge { - if m != nil { - return m.Gauge - } - return nil -} - -func (m *Metric) GetCounter() *Counter { - if m != nil { - return m.Counter - } - return nil -} - -func (m *Metric) GetSummary() *Summary { - if m != nil { - return m.Summary - } - return nil -} - -func (m *Metric) GetUntyped() *Untyped { - if m != nil { - return m.Untyped - } - return nil -} - -func (m *Metric) GetHistogram() *Histogram { - if m != nil { - return m.Histogram - } - return nil -} - -func (m *Metric) GetTimestampMs() int64 { - if m != nil && m.TimestampMs != nil { - return *m.TimestampMs - } - return 0 -} - -type MetricFamily struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Help *string `protobuf:"bytes,2,opt,name=help" json:"help,omitempty"` - Type *MetricType `protobuf:"varint,3,opt,name=type,enum=io.prometheus.client.MetricType" json:"type,omitempty"` - Metric []*Metric `protobuf:"bytes,4,rep,name=metric" json:"metric,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MetricFamily) Reset() { *m = MetricFamily{} } -func (m *MetricFamily) String() string { return proto.CompactTextString(m) } -func (*MetricFamily) ProtoMessage() {} -func (*MetricFamily) Descriptor() ([]byte, []int) { - return fileDescriptor_metrics_c97c9a2b9560cb8f, []int{9} -} -func (m *MetricFamily) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MetricFamily.Unmarshal(m, b) -} -func (m *MetricFamily) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MetricFamily.Marshal(b, m, deterministic) -} -func (dst *MetricFamily) XXX_Merge(src proto.Message) { - xxx_messageInfo_MetricFamily.Merge(dst, src) -} -func (m *MetricFamily) XXX_Size() int { - return xxx_messageInfo_MetricFamily.Size(m) -} -func (m *MetricFamily) XXX_DiscardUnknown() { - xxx_messageInfo_MetricFamily.DiscardUnknown(m) -} - -var xxx_messageInfo_MetricFamily proto.InternalMessageInfo - -func (m *MetricFamily) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *MetricFamily) GetHelp() string { - if m != nil && m.Help != nil { - return *m.Help - } - return "" -} - -func (m *MetricFamily) GetType() MetricType { - if m != nil && m.Type != nil { - return *m.Type - } - return MetricType_COUNTER -} - -func (m *MetricFamily) GetMetric() []*Metric { - if m != nil { - return m.Metric - } - return nil -} - -func init() { - proto.RegisterType((*LabelPair)(nil), "io.prometheus.client.LabelPair") - proto.RegisterType((*Gauge)(nil), "io.prometheus.client.Gauge") - proto.RegisterType((*Counter)(nil), "io.prometheus.client.Counter") - proto.RegisterType((*Quantile)(nil), "io.prometheus.client.Quantile") - proto.RegisterType((*Summary)(nil), "io.prometheus.client.Summary") - proto.RegisterType((*Untyped)(nil), "io.prometheus.client.Untyped") - proto.RegisterType((*Histogram)(nil), "io.prometheus.client.Histogram") - proto.RegisterType((*Bucket)(nil), "io.prometheus.client.Bucket") - proto.RegisterType((*Metric)(nil), "io.prometheus.client.Metric") - proto.RegisterType((*MetricFamily)(nil), "io.prometheus.client.MetricFamily") - proto.RegisterEnum("io.prometheus.client.MetricType", MetricType_name, MetricType_value) -} - -func init() { proto.RegisterFile("metrics.proto", fileDescriptor_metrics_c97c9a2b9560cb8f) } - -var fileDescriptor_metrics_c97c9a2b9560cb8f = []byte{ - // 591 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, - 0x14, 0xfc, 0x99, 0xd8, 0x09, 0x7e, 0x86, 0x5f, 0xad, 0x15, 0x07, 0xab, 0x2d, 0x25, 0xcd, 0x89, - 0xf6, 0x10, 0x54, 0x04, 0xaa, 0x44, 0xdb, 0x03, 0x50, 0x1a, 0x2a, 0xd5, 0x40, 0x37, 0xc9, 0x81, - 0x5e, 0xac, 0x8d, 0x59, 0x25, 0x56, 0xbd, 0xb6, 0x6b, 0xef, 0x22, 0xe5, 0xdc, 0x43, 0xbf, 0x47, - 0xbf, 0x68, 0xab, 0xfd, 0xe3, 0x18, 0x24, 0xc3, 0xa9, 0xb7, 0xb7, 0xf3, 0x66, 0xde, 0x8e, 0x77, - 0xc7, 0x0b, 0x9b, 0x8c, 0xf2, 0x32, 0x89, 0xab, 0x61, 0x51, 0xe6, 0x3c, 0x47, 0x5b, 0x49, 0x2e, - 0x2b, 0x46, 0xf9, 0x82, 0x8a, 0x6a, 0x18, 0xa7, 0x09, 0xcd, 0xf8, 0xe0, 0x10, 0xdc, 0x2f, 0x64, - 0x46, 0xd3, 0x2b, 0x92, 0x94, 0x08, 0x81, 0x9d, 0x11, 0x46, 0x03, 0xab, 0x6f, 0xed, 0xba, 0x58, - 0xd5, 0x68, 0x0b, 0x9c, 0x5b, 0x92, 0x0a, 0x1a, 0xac, 0x29, 0x50, 0x2f, 0x06, 0xdb, 0xe0, 0x8c, - 0x88, 0x98, 0xdf, 0x69, 0x4b, 0x8d, 0x55, 0xb7, 0x77, 0xa0, 0x77, 0x9a, 0x8b, 0x8c, 0xd3, 0xf2, - 0x01, 0xc2, 0x7b, 0x58, 0xff, 0x2a, 0x48, 0xc6, 0x93, 0x94, 0xa2, 0xa7, 0xb0, 0xfe, 0xc3, 0xd4, - 0x86, 0xb4, 0x5a, 0xdf, 0xdf, 0x7d, 0xa5, 0xfe, 0x65, 0x41, 0x6f, 0x2c, 0x18, 0x23, 0xe5, 0x12, - 0xbd, 0x84, 0x8d, 0x8a, 0xb0, 0x22, 0xa5, 0x51, 0x2c, 0x77, 0x54, 0x13, 0x6c, 0xec, 0x69, 0x4c, - 0x99, 0x40, 0xdb, 0x00, 0x86, 0x52, 0x09, 0x66, 0x26, 0xb9, 0x1a, 0x19, 0x0b, 0x86, 0x8e, 0xee, - 0xec, 0xdf, 0xe9, 0x77, 0x76, 0xbd, 0xfd, 0x17, 0xc3, 0xb6, 0xb3, 0x1a, 0xd6, 0x8e, 0x1b, 0x7f, - 0xf2, 0x43, 0xa7, 0x19, 0x5f, 0x16, 0xf4, 0xe6, 0x81, 0x0f, 0xfd, 0x69, 0x81, 0x7b, 0x9e, 0x54, - 0x3c, 0x9f, 0x97, 0x84, 0xfd, 0x03, 0xb3, 0x07, 0xd0, 0x9d, 0x89, 0xf8, 0x3b, 0xe5, 0xc6, 0xea, - 0xf3, 0x76, 0xab, 0x27, 0x8a, 0x83, 0x0d, 0x77, 0x30, 0x81, 0xae, 0x46, 0xd0, 0x2b, 0xf0, 0x63, - 0xc1, 0x44, 0x4a, 0x78, 0x72, 0x7b, 0xdf, 0xc5, 0x93, 0x06, 0xd7, 0x4e, 0x76, 0xc0, 0x13, 0x45, - 0x41, 0xcb, 0x68, 0x96, 0x8b, 0xec, 0xc6, 0x58, 0x01, 0x05, 0x9d, 0x48, 0x64, 0xf0, 0x67, 0x0d, - 0xba, 0xa1, 0xca, 0x18, 0x3a, 0x04, 0x27, 0x95, 0x31, 0x0a, 0x2c, 0xe5, 0x6a, 0xa7, 0xdd, 0xd5, - 0x2a, 0x69, 0x58, 0xb3, 0xd1, 0x1b, 0x70, 0xe6, 0x32, 0x46, 0x6a, 0xb8, 0xb7, 0xff, 0xac, 0x5d, - 0xa6, 0x92, 0x86, 0x35, 0x13, 0xbd, 0x85, 0x5e, 0xac, 0xa3, 0x15, 0x74, 0x94, 0x68, 0xbb, 0x5d, - 0x64, 0xf2, 0x87, 0x6b, 0xb6, 0x14, 0x56, 0x3a, 0x33, 0x81, 0xfd, 0x98, 0xd0, 0x04, 0x0b, 0xd7, - 0x6c, 0x29, 0x14, 0xfa, 0x8e, 0x03, 0xe7, 0x31, 0xa1, 0x09, 0x02, 0xae, 0xd9, 0xe8, 0x03, 0xb8, - 0x8b, 0xfa, 0xea, 0x83, 0x9e, 0x92, 0x3e, 0x70, 0x30, 0xab, 0x84, 0xe0, 0x46, 0x21, 0xc3, 0xc2, - 0x13, 0x46, 0x2b, 0x4e, 0x58, 0x11, 0xb1, 0x2a, 0xe8, 0xf6, 0xad, 0xdd, 0x0e, 0xf6, 0x56, 0x58, - 0x58, 0x0d, 0x7e, 0x5b, 0xb0, 0xa1, 0x6f, 0xe0, 0x13, 0x61, 0x49, 0xba, 0x6c, 0xfd, 0x83, 0x11, - 0xd8, 0x0b, 0x9a, 0x16, 0xe6, 0x07, 0x56, 0x35, 0x3a, 0x00, 0x5b, 0x7a, 0x54, 0x47, 0xf8, 0xff, - 0x7e, 0xbf, 0xdd, 0x95, 0x9e, 0x3c, 0x59, 0x16, 0x14, 0x2b, 0xb6, 0x0c, 0x9f, 0x7e, 0x53, 0x02, - 0xfb, 0xb1, 0xf0, 0x69, 0x1d, 0x36, 0xdc, 0xd7, 0x21, 0x40, 0x33, 0x09, 0x79, 0xd0, 0x3b, 0xbd, - 0x9c, 0x5e, 0x4c, 0xce, 0xb0, 0xff, 0x1f, 0x72, 0xc1, 0x19, 0x1d, 0x4f, 0x47, 0x67, 0xbe, 0x25, - 0xf1, 0xf1, 0x34, 0x0c, 0x8f, 0xf1, 0xb5, 0xbf, 0x26, 0x17, 0xd3, 0x8b, 0xc9, 0xf5, 0xd5, 0xd9, - 0x47, 0xbf, 0x83, 0x36, 0xc1, 0x3d, 0xff, 0x3c, 0x9e, 0x5c, 0x8e, 0xf0, 0x71, 0xe8, 0xdb, 0x27, - 0x18, 0x5a, 0x5f, 0xb2, 0x6f, 0x47, 0xf3, 0x84, 0x2f, 0xc4, 0x6c, 0x18, 0xe7, 0x6c, 0xaf, 0xe9, - 0xee, 0xe9, 0x6e, 0xc4, 0xf2, 0x1b, 0x9a, 0xee, 0xcd, 0xf3, 0x77, 0x49, 0x1e, 0x35, 0xdd, 0x48, - 0x77, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x45, 0x21, 0x7f, 0x64, 0x2b, 0x05, 0x00, 0x00, -} diff --git a/vendor/github.com/prometheus/common/LICENSE b/vendor/github.com/prometheus/common/LICENSE deleted file mode 100644 index 261eeb9e..00000000 --- a/vendor/github.com/prometheus/common/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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] - - 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. diff --git a/vendor/github.com/prometheus/common/NOTICE b/vendor/github.com/prometheus/common/NOTICE deleted file mode 100644 index 636a2c1a..00000000 --- a/vendor/github.com/prometheus/common/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Common libraries shared by Prometheus Go components. -Copyright 2015 The Prometheus Authors - -This product includes software developed at -SoundCloud Ltd. (http://soundcloud.com/). diff --git a/vendor/github.com/prometheus/common/expfmt/decode.go b/vendor/github.com/prometheus/common/expfmt/decode.go deleted file mode 100644 index c092723e..00000000 --- a/vendor/github.com/prometheus/common/expfmt/decode.go +++ /dev/null @@ -1,429 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 expfmt - -import ( - "fmt" - "io" - "math" - "mime" - "net/http" - - dto "github.com/prometheus/client_model/go" - - "github.com/matttproud/golang_protobuf_extensions/pbutil" - "github.com/prometheus/common/model" -) - -// Decoder types decode an input stream into metric families. -type Decoder interface { - Decode(*dto.MetricFamily) error -} - -// DecodeOptions contains options used by the Decoder and in sample extraction. -type DecodeOptions struct { - // Timestamp is added to each value from the stream that has no explicit timestamp set. - Timestamp model.Time -} - -// ResponseFormat extracts the correct format from a HTTP response header. -// If no matching format can be found FormatUnknown is returned. -func ResponseFormat(h http.Header) Format { - ct := h.Get(hdrContentType) - - mediatype, params, err := mime.ParseMediaType(ct) - if err != nil { - return FmtUnknown - } - - const textType = "text/plain" - - switch mediatype { - case ProtoType: - if p, ok := params["proto"]; ok && p != ProtoProtocol { - return FmtUnknown - } - if e, ok := params["encoding"]; ok && e != "delimited" { - return FmtUnknown - } - return FmtProtoDelim - - case textType: - if v, ok := params["version"]; ok && v != TextVersion { - return FmtUnknown - } - return FmtText - } - - return FmtUnknown -} - -// NewDecoder returns a new decoder based on the given input format. -// If the input format does not imply otherwise, a text format decoder is returned. -func NewDecoder(r io.Reader, format Format) Decoder { - switch format { - case FmtProtoDelim: - return &protoDecoder{r: r} - } - return &textDecoder{r: r} -} - -// protoDecoder implements the Decoder interface for protocol buffers. -type protoDecoder struct { - r io.Reader -} - -// Decode implements the Decoder interface. -func (d *protoDecoder) Decode(v *dto.MetricFamily) error { - _, err := pbutil.ReadDelimited(d.r, v) - if err != nil { - return err - } - if !model.IsValidMetricName(model.LabelValue(v.GetName())) { - return fmt.Errorf("invalid metric name %q", v.GetName()) - } - for _, m := range v.GetMetric() { - if m == nil { - continue - } - for _, l := range m.GetLabel() { - if l == nil { - continue - } - if !model.LabelValue(l.GetValue()).IsValid() { - return fmt.Errorf("invalid label value %q", l.GetValue()) - } - if !model.LabelName(l.GetName()).IsValid() { - return fmt.Errorf("invalid label name %q", l.GetName()) - } - } - } - return nil -} - -// textDecoder implements the Decoder interface for the text protocol. -type textDecoder struct { - r io.Reader - p TextParser - fams []*dto.MetricFamily -} - -// Decode implements the Decoder interface. -func (d *textDecoder) Decode(v *dto.MetricFamily) error { - // TODO(fabxc): Wrap this as a line reader to make streaming safer. - if len(d.fams) == 0 { - // No cached metric families, read everything and parse metrics. - fams, err := d.p.TextToMetricFamilies(d.r) - if err != nil { - return err - } - if len(fams) == 0 { - return io.EOF - } - d.fams = make([]*dto.MetricFamily, 0, len(fams)) - for _, f := range fams { - d.fams = append(d.fams, f) - } - } - - *v = *d.fams[0] - d.fams = d.fams[1:] - - return nil -} - -// SampleDecoder wraps a Decoder to extract samples from the metric families -// decoded by the wrapped Decoder. -type SampleDecoder struct { - Dec Decoder - Opts *DecodeOptions - - f dto.MetricFamily -} - -// Decode calls the Decode method of the wrapped Decoder and then extracts the -// samples from the decoded MetricFamily into the provided model.Vector. -func (sd *SampleDecoder) Decode(s *model.Vector) error { - err := sd.Dec.Decode(&sd.f) - if err != nil { - return err - } - *s, err = extractSamples(&sd.f, sd.Opts) - return err -} - -// ExtractSamples builds a slice of samples from the provided metric -// families. If an error occurrs during sample extraction, it continues to -// extract from the remaining metric families. The returned error is the last -// error that has occurred. -func ExtractSamples(o *DecodeOptions, fams ...*dto.MetricFamily) (model.Vector, error) { - var ( - all model.Vector - lastErr error - ) - for _, f := range fams { - some, err := extractSamples(f, o) - if err != nil { - lastErr = err - continue - } - all = append(all, some...) - } - return all, lastErr -} - -func extractSamples(f *dto.MetricFamily, o *DecodeOptions) (model.Vector, error) { - switch f.GetType() { - case dto.MetricType_COUNTER: - return extractCounter(o, f), nil - case dto.MetricType_GAUGE: - return extractGauge(o, f), nil - case dto.MetricType_SUMMARY: - return extractSummary(o, f), nil - case dto.MetricType_UNTYPED: - return extractUntyped(o, f), nil - case dto.MetricType_HISTOGRAM: - return extractHistogram(o, f), nil - } - return nil, fmt.Errorf("expfmt.extractSamples: unknown metric family type %v", f.GetType()) -} - -func extractCounter(o *DecodeOptions, f *dto.MetricFamily) model.Vector { - samples := make(model.Vector, 0, len(f.Metric)) - - for _, m := range f.Metric { - if m.Counter == nil { - continue - } - - lset := make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName()) - - smpl := &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Counter.GetValue()), - } - - if m.TimestampMs != nil { - smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000) - } else { - smpl.Timestamp = o.Timestamp - } - - samples = append(samples, smpl) - } - - return samples -} - -func extractGauge(o *DecodeOptions, f *dto.MetricFamily) model.Vector { - samples := make(model.Vector, 0, len(f.Metric)) - - for _, m := range f.Metric { - if m.Gauge == nil { - continue - } - - lset := make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName()) - - smpl := &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Gauge.GetValue()), - } - - if m.TimestampMs != nil { - smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000) - } else { - smpl.Timestamp = o.Timestamp - } - - samples = append(samples, smpl) - } - - return samples -} - -func extractUntyped(o *DecodeOptions, f *dto.MetricFamily) model.Vector { - samples := make(model.Vector, 0, len(f.Metric)) - - for _, m := range f.Metric { - if m.Untyped == nil { - continue - } - - lset := make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName()) - - smpl := &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Untyped.GetValue()), - } - - if m.TimestampMs != nil { - smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000) - } else { - smpl.Timestamp = o.Timestamp - } - - samples = append(samples, smpl) - } - - return samples -} - -func extractSummary(o *DecodeOptions, f *dto.MetricFamily) model.Vector { - samples := make(model.Vector, 0, len(f.Metric)) - - for _, m := range f.Metric { - if m.Summary == nil { - continue - } - - timestamp := o.Timestamp - if m.TimestampMs != nil { - timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000) - } - - for _, q := range m.Summary.Quantile { - lset := make(model.LabelSet, len(m.Label)+2) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - // BUG(matt): Update other names to "quantile". - lset[model.LabelName(model.QuantileLabel)] = model.LabelValue(fmt.Sprint(q.GetQuantile())) - lset[model.MetricNameLabel] = model.LabelValue(f.GetName()) - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(q.GetValue()), - Timestamp: timestamp, - }) - } - - lset := make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_sum") - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Summary.GetSampleSum()), - Timestamp: timestamp, - }) - - lset = make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_count") - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Summary.GetSampleCount()), - Timestamp: timestamp, - }) - } - - return samples -} - -func extractHistogram(o *DecodeOptions, f *dto.MetricFamily) model.Vector { - samples := make(model.Vector, 0, len(f.Metric)) - - for _, m := range f.Metric { - if m.Histogram == nil { - continue - } - - timestamp := o.Timestamp - if m.TimestampMs != nil { - timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000) - } - - infSeen := false - - for _, q := range m.Histogram.Bucket { - lset := make(model.LabelSet, len(m.Label)+2) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.LabelName(model.BucketLabel)] = model.LabelValue(fmt.Sprint(q.GetUpperBound())) - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_bucket") - - if math.IsInf(q.GetUpperBound(), +1) { - infSeen = true - } - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(q.GetCumulativeCount()), - Timestamp: timestamp, - }) - } - - lset := make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_sum") - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Histogram.GetSampleSum()), - Timestamp: timestamp, - }) - - lset = make(model.LabelSet, len(m.Label)+1) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_count") - - count := &model.Sample{ - Metric: model.Metric(lset), - Value: model.SampleValue(m.Histogram.GetSampleCount()), - Timestamp: timestamp, - } - samples = append(samples, count) - - if !infSeen { - // Append an infinity bucket sample. - lset := make(model.LabelSet, len(m.Label)+2) - for _, p := range m.Label { - lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue()) - } - lset[model.LabelName(model.BucketLabel)] = model.LabelValue("+Inf") - lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_bucket") - - samples = append(samples, &model.Sample{ - Metric: model.Metric(lset), - Value: count.Value, - Timestamp: timestamp, - }) - } - } - - return samples -} diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go deleted file mode 100644 index 11839ed6..00000000 --- a/vendor/github.com/prometheus/common/expfmt/encode.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 expfmt - -import ( - "fmt" - "io" - "net/http" - - "github.com/golang/protobuf/proto" - "github.com/matttproud/golang_protobuf_extensions/pbutil" - "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg" - - dto "github.com/prometheus/client_model/go" -) - -// Encoder types encode metric families into an underlying wire protocol. -type Encoder interface { - Encode(*dto.MetricFamily) error -} - -type encoder func(*dto.MetricFamily) error - -func (e encoder) Encode(v *dto.MetricFamily) error { - return e(v) -} - -// Negotiate returns the Content-Type based on the given Accept header. -// If no appropriate accepted type is found, FmtText is returned. -func Negotiate(h http.Header) Format { - for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) { - // Check for protocol buffer - if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol { - switch ac.Params["encoding"] { - case "delimited": - return FmtProtoDelim - case "text": - return FmtProtoText - case "compact-text": - return FmtProtoCompact - } - } - // Check for text format. - ver := ac.Params["version"] - if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") { - return FmtText - } - } - return FmtText -} - -// NewEncoder returns a new encoder based on content type negotiation. -func NewEncoder(w io.Writer, format Format) Encoder { - switch format { - case FmtProtoDelim: - return encoder(func(v *dto.MetricFamily) error { - _, err := pbutil.WriteDelimited(w, v) - return err - }) - case FmtProtoCompact: - return encoder(func(v *dto.MetricFamily) error { - _, err := fmt.Fprintln(w, v.String()) - return err - }) - case FmtProtoText: - return encoder(func(v *dto.MetricFamily) error { - _, err := fmt.Fprintln(w, proto.MarshalTextString(v)) - return err - }) - case FmtText: - return encoder(func(v *dto.MetricFamily) error { - _, err := MetricFamilyToText(w, v) - return err - }) - } - panic("expfmt.NewEncoder: unknown format") -} diff --git a/vendor/github.com/prometheus/common/expfmt/expfmt.go b/vendor/github.com/prometheus/common/expfmt/expfmt.go deleted file mode 100644 index c71bcb98..00000000 --- a/vendor/github.com/prometheus/common/expfmt/expfmt.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 expfmt contains tools for reading and writing Prometheus metrics. -package expfmt - -// Format specifies the HTTP content type of the different wire protocols. -type Format string - -// Constants to assemble the Content-Type values for the different wire protocols. -const ( - TextVersion = "0.0.4" - ProtoType = `application/vnd.google.protobuf` - ProtoProtocol = `io.prometheus.client.MetricFamily` - ProtoFmt = ProtoType + "; proto=" + ProtoProtocol + ";" - - // The Content-Type values for the different wire protocols. - FmtUnknown Format = `` - FmtText Format = `text/plain; version=` + TextVersion + `; charset=utf-8` - FmtProtoDelim Format = ProtoFmt + ` encoding=delimited` - FmtProtoText Format = ProtoFmt + ` encoding=text` - FmtProtoCompact Format = ProtoFmt + ` encoding=compact-text` -) - -const ( - hdrContentType = "Content-Type" - hdrAccept = "Accept" -) diff --git a/vendor/github.com/prometheus/common/expfmt/fuzz.go b/vendor/github.com/prometheus/common/expfmt/fuzz.go deleted file mode 100644 index dc2eedee..00000000 --- a/vendor/github.com/prometheus/common/expfmt/fuzz.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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. - -// Build only when actually fuzzing -// +build gofuzz - -package expfmt - -import "bytes" - -// Fuzz text metric parser with with github.com/dvyukov/go-fuzz: -// -// go-fuzz-build github.com/prometheus/common/expfmt -// go-fuzz -bin expfmt-fuzz.zip -workdir fuzz -// -// Further input samples should go in the folder fuzz/corpus. -func Fuzz(in []byte) int { - parser := TextParser{} - _, err := parser.TextToMetricFamilies(bytes.NewReader(in)) - - if err != nil { - return 0 - } - - return 1 -} diff --git a/vendor/github.com/prometheus/common/expfmt/text_create.go b/vendor/github.com/prometheus/common/expfmt/text_create.go deleted file mode 100644 index 0327865e..00000000 --- a/vendor/github.com/prometheus/common/expfmt/text_create.go +++ /dev/null @@ -1,466 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 expfmt - -import ( - "bufio" - "fmt" - "io" - "io/ioutil" - "math" - "strconv" - "strings" - "sync" - - "github.com/prometheus/common/model" - - dto "github.com/prometheus/client_model/go" -) - -// enhancedWriter has all the enhanced write functions needed here. bufio.Writer -// implements it. -type enhancedWriter interface { - io.Writer - WriteRune(r rune) (n int, err error) - WriteString(s string) (n int, err error) - WriteByte(c byte) error -} - -const ( - initialNumBufSize = 24 -) - -var ( - bufPool = sync.Pool{ - New: func() interface{} { - return bufio.NewWriter(ioutil.Discard) - }, - } - numBufPool = sync.Pool{ - New: func() interface{} { - b := make([]byte, 0, initialNumBufSize) - return &b - }, - } -) - -// MetricFamilyToText converts a MetricFamily proto message into text format and -// writes the resulting lines to 'out'. It returns the number of bytes written -// and any error encountered. The output will have the same order as the input, -// no further sorting is performed. Furthermore, this function assumes the input -// is already sanitized and does not perform any sanity checks. If the input -// contains duplicate metrics or invalid metric or label names, the conversion -// will result in invalid text format output. -// -// This method fulfills the type 'prometheus.encoder'. -func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (written int, err error) { - // Fail-fast checks. - if len(in.Metric) == 0 { - return 0, fmt.Errorf("MetricFamily has no metrics: %s", in) - } - name := in.GetName() - if name == "" { - return 0, fmt.Errorf("MetricFamily has no name: %s", in) - } - - // Try the interface upgrade. If it doesn't work, we'll use a - // bufio.Writer from the sync.Pool. - w, ok := out.(enhancedWriter) - if !ok { - b := bufPool.Get().(*bufio.Writer) - b.Reset(out) - w = b - defer func() { - bErr := b.Flush() - if err == nil { - err = bErr - } - bufPool.Put(b) - }() - } - - var n int - - // Comments, first HELP, then TYPE. - if in.Help != nil { - n, err = w.WriteString("# HELP ") - written += n - if err != nil { - return - } - n, err = w.WriteString(name) - written += n - if err != nil { - return - } - err = w.WriteByte(' ') - written++ - if err != nil { - return - } - n, err = writeEscapedString(w, *in.Help, false) - written += n - if err != nil { - return - } - err = w.WriteByte('\n') - written++ - if err != nil { - return - } - } - n, err = w.WriteString("# TYPE ") - written += n - if err != nil { - return - } - n, err = w.WriteString(name) - written += n - if err != nil { - return - } - metricType := in.GetType() - switch metricType { - case dto.MetricType_COUNTER: - n, err = w.WriteString(" counter\n") - case dto.MetricType_GAUGE: - n, err = w.WriteString(" gauge\n") - case dto.MetricType_SUMMARY: - n, err = w.WriteString(" summary\n") - case dto.MetricType_UNTYPED: - n, err = w.WriteString(" untyped\n") - case dto.MetricType_HISTOGRAM: - n, err = w.WriteString(" histogram\n") - default: - return written, fmt.Errorf("unknown metric type %s", metricType.String()) - } - written += n - if err != nil { - return - } - - // Finally the samples, one line for each. - for _, metric := range in.Metric { - switch metricType { - case dto.MetricType_COUNTER: - if metric.Counter == nil { - return written, fmt.Errorf( - "expected counter in metric %s %s", name, metric, - ) - } - n, err = writeSample( - w, name, "", metric, "", 0, - metric.Counter.GetValue(), - ) - case dto.MetricType_GAUGE: - if metric.Gauge == nil { - return written, fmt.Errorf( - "expected gauge in metric %s %s", name, metric, - ) - } - n, err = writeSample( - w, name, "", metric, "", 0, - metric.Gauge.GetValue(), - ) - case dto.MetricType_UNTYPED: - if metric.Untyped == nil { - return written, fmt.Errorf( - "expected untyped in metric %s %s", name, metric, - ) - } - n, err = writeSample( - w, name, "", metric, "", 0, - metric.Untyped.GetValue(), - ) - case dto.MetricType_SUMMARY: - if metric.Summary == nil { - return written, fmt.Errorf( - "expected summary in metric %s %s", name, metric, - ) - } - for _, q := range metric.Summary.Quantile { - n, err = writeSample( - w, name, "", metric, - model.QuantileLabel, q.GetQuantile(), - q.GetValue(), - ) - written += n - if err != nil { - return - } - } - n, err = writeSample( - w, name, "_sum", metric, "", 0, - metric.Summary.GetSampleSum(), - ) - written += n - if err != nil { - return - } - n, err = writeSample( - w, name, "_count", metric, "", 0, - float64(metric.Summary.GetSampleCount()), - ) - case dto.MetricType_HISTOGRAM: - if metric.Histogram == nil { - return written, fmt.Errorf( - "expected histogram in metric %s %s", name, metric, - ) - } - infSeen := false - for _, b := range metric.Histogram.Bucket { - n, err = writeSample( - w, name, "_bucket", metric, - model.BucketLabel, b.GetUpperBound(), - float64(b.GetCumulativeCount()), - ) - written += n - if err != nil { - return - } - if math.IsInf(b.GetUpperBound(), +1) { - infSeen = true - } - } - if !infSeen { - n, err = writeSample( - w, name, "_bucket", metric, - model.BucketLabel, math.Inf(+1), - float64(metric.Histogram.GetSampleCount()), - ) - written += n - if err != nil { - return - } - } - n, err = writeSample( - w, name, "_sum", metric, "", 0, - metric.Histogram.GetSampleSum(), - ) - written += n - if err != nil { - return - } - n, err = writeSample( - w, name, "_count", metric, "", 0, - float64(metric.Histogram.GetSampleCount()), - ) - default: - return written, fmt.Errorf( - "unexpected type in metric %s %s", name, metric, - ) - } - written += n - if err != nil { - return - } - } - return -} - -// writeSample writes a single sample in text format to w, given the metric -// name, the metric proto message itself, optionally an additional label name -// with a float64 value (use empty string as label name if not required), and -// the value. The function returns the number of bytes written and any error -// encountered. -func writeSample( - w enhancedWriter, - name, suffix string, - metric *dto.Metric, - additionalLabelName string, additionalLabelValue float64, - value float64, -) (int, error) { - var written int - n, err := w.WriteString(name) - written += n - if err != nil { - return written, err - } - if suffix != "" { - n, err = w.WriteString(suffix) - written += n - if err != nil { - return written, err - } - } - n, err = writeLabelPairs( - w, metric.Label, additionalLabelName, additionalLabelValue, - ) - written += n - if err != nil { - return written, err - } - err = w.WriteByte(' ') - written++ - if err != nil { - return written, err - } - n, err = writeFloat(w, value) - written += n - if err != nil { - return written, err - } - if metric.TimestampMs != nil { - err = w.WriteByte(' ') - written++ - if err != nil { - return written, err - } - n, err = writeInt(w, *metric.TimestampMs) - written += n - if err != nil { - return written, err - } - } - err = w.WriteByte('\n') - written++ - if err != nil { - return written, err - } - return written, nil -} - -// writeLabelPairs converts a slice of LabelPair proto messages plus the -// explicitly given additional label pair into text formatted as required by the -// text format and writes it to 'w'. An empty slice in combination with an empty -// string 'additionalLabelName' results in nothing being written. Otherwise, the -// label pairs are written, escaped as required by the text format, and enclosed -// in '{...}'. The function returns the number of bytes written and any error -// encountered. -func writeLabelPairs( - w enhancedWriter, - in []*dto.LabelPair, - additionalLabelName string, additionalLabelValue float64, -) (int, error) { - if len(in) == 0 && additionalLabelName == "" { - return 0, nil - } - var ( - written int - separator byte = '{' - ) - for _, lp := range in { - err := w.WriteByte(separator) - written++ - if err != nil { - return written, err - } - n, err := w.WriteString(lp.GetName()) - written += n - if err != nil { - return written, err - } - n, err = w.WriteString(`="`) - written += n - if err != nil { - return written, err - } - n, err = writeEscapedString(w, lp.GetValue(), true) - written += n - if err != nil { - return written, err - } - err = w.WriteByte('"') - written++ - if err != nil { - return written, err - } - separator = ',' - } - if additionalLabelName != "" { - err := w.WriteByte(separator) - written++ - if err != nil { - return written, err - } - n, err := w.WriteString(additionalLabelName) - written += n - if err != nil { - return written, err - } - n, err = w.WriteString(`="`) - written += n - if err != nil { - return written, err - } - n, err = writeFloat(w, additionalLabelValue) - written += n - if err != nil { - return written, err - } - err = w.WriteByte('"') - written++ - if err != nil { - return written, err - } - } - err := w.WriteByte('}') - written++ - if err != nil { - return written, err - } - return written, nil -} - -// writeEscapedString replaces '\' by '\\', new line character by '\n', and - if -// includeDoubleQuote is true - '"' by '\"'. -var ( - escaper = strings.NewReplacer("\\", `\\`, "\n", `\n`) - quotedEscaper = strings.NewReplacer("\\", `\\`, "\n", `\n`, "\"", `\"`) -) - -func writeEscapedString(w enhancedWriter, v string, includeDoubleQuote bool) (int, error) { - if includeDoubleQuote { - return quotedEscaper.WriteString(w, v) - } else { - return escaper.WriteString(w, v) - } -} - -// writeFloat is equivalent to fmt.Fprint with a float64 argument but hardcodes -// a few common cases for increased efficiency. For non-hardcoded cases, it uses -// strconv.AppendFloat to avoid allocations, similar to writeInt. -func writeFloat(w enhancedWriter, f float64) (int, error) { - switch { - case f == 1: - return 1, w.WriteByte('1') - case f == 0: - return 1, w.WriteByte('0') - case f == -1: - return w.WriteString("-1") - case math.IsNaN(f): - return w.WriteString("NaN") - case math.IsInf(f, +1): - return w.WriteString("+Inf") - case math.IsInf(f, -1): - return w.WriteString("-Inf") - default: - bp := numBufPool.Get().(*[]byte) - *bp = strconv.AppendFloat((*bp)[:0], f, 'g', -1, 64) - written, err := w.Write(*bp) - numBufPool.Put(bp) - return written, err - } -} - -// writeInt is equivalent to fmt.Fprint with an int64 argument but uses -// strconv.AppendInt with a byte slice taken from a sync.Pool to avoid -// allocations. -func writeInt(w enhancedWriter, i int64) (int, error) { - bp := numBufPool.Get().(*[]byte) - *bp = strconv.AppendInt((*bp)[:0], i, 10) - written, err := w.Write(*bp) - numBufPool.Put(bp) - return written, err -} diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go deleted file mode 100644 index 342e5940..00000000 --- a/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ /dev/null @@ -1,764 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 expfmt - -import ( - "bufio" - "bytes" - "fmt" - "io" - "math" - "strconv" - "strings" - - dto "github.com/prometheus/client_model/go" - - "github.com/golang/protobuf/proto" - "github.com/prometheus/common/model" -) - -// A stateFn is a function that represents a state in a state machine. By -// executing it, the state is progressed to the next state. The stateFn returns -// another stateFn, which represents the new state. The end state is represented -// by nil. -type stateFn func() stateFn - -// ParseError signals errors while parsing the simple and flat text-based -// exchange format. -type ParseError struct { - Line int - Msg string -} - -// Error implements the error interface. -func (e ParseError) Error() string { - return fmt.Sprintf("text format parsing error in line %d: %s", e.Line, e.Msg) -} - -// TextParser is used to parse the simple and flat text-based exchange format. Its -// zero value is ready to use. -type TextParser struct { - metricFamiliesByName map[string]*dto.MetricFamily - buf *bufio.Reader // Where the parsed input is read through. - err error // Most recent error. - lineCount int // Tracks the line count for error messages. - currentByte byte // The most recent byte read. - currentToken bytes.Buffer // Re-used each time a token has to be gathered from multiple bytes. - currentMF *dto.MetricFamily - currentMetric *dto.Metric - currentLabelPair *dto.LabelPair - - // The remaining member variables are only used for summaries/histograms. - currentLabels map[string]string // All labels including '__name__' but excluding 'quantile'/'le' - // Summary specific. - summaries map[uint64]*dto.Metric // Key is created with LabelsToSignature. - currentQuantile float64 - // Histogram specific. - histograms map[uint64]*dto.Metric // Key is created with LabelsToSignature. - currentBucket float64 - // These tell us if the currently processed line ends on '_count' or - // '_sum' respectively and belong to a summary/histogram, representing the sample - // count and sum of that summary/histogram. - currentIsSummaryCount, currentIsSummarySum bool - currentIsHistogramCount, currentIsHistogramSum bool -} - -// TextToMetricFamilies reads 'in' as the simple and flat text-based exchange -// format and creates MetricFamily proto messages. It returns the MetricFamily -// proto messages in a map where the metric names are the keys, along with any -// error encountered. -// -// If the input contains duplicate metrics (i.e. lines with the same metric name -// and exactly the same label set), the resulting MetricFamily will contain -// duplicate Metric proto messages. Similar is true for duplicate label -// names. Checks for duplicates have to be performed separately, if required. -// Also note that neither the metrics within each MetricFamily are sorted nor -// the label pairs within each Metric. Sorting is not required for the most -// frequent use of this method, which is sample ingestion in the Prometheus -// server. However, for presentation purposes, you might want to sort the -// metrics, and in some cases, you must sort the labels, e.g. for consumption by -// the metric family injection hook of the Prometheus registry. -// -// Summaries and histograms are rather special beasts. You would probably not -// use them in the simple text format anyway. This method can deal with -// summaries and histograms if they are presented in exactly the way the -// text.Create function creates them. -// -// This method must not be called concurrently. If you want to parse different -// input concurrently, instantiate a separate Parser for each goroutine. -func (p *TextParser) TextToMetricFamilies(in io.Reader) (map[string]*dto.MetricFamily, error) { - p.reset(in) - for nextState := p.startOfLine; nextState != nil; nextState = nextState() { - // Magic happens here... - } - // Get rid of empty metric families. - for k, mf := range p.metricFamiliesByName { - if len(mf.GetMetric()) == 0 { - delete(p.metricFamiliesByName, k) - } - } - // If p.err is io.EOF now, we have run into a premature end of the input - // stream. Turn this error into something nicer and more - // meaningful. (io.EOF is often used as a signal for the legitimate end - // of an input stream.) - if p.err == io.EOF { - p.parseError("unexpected end of input stream") - } - return p.metricFamiliesByName, p.err -} - -func (p *TextParser) reset(in io.Reader) { - p.metricFamiliesByName = map[string]*dto.MetricFamily{} - if p.buf == nil { - p.buf = bufio.NewReader(in) - } else { - p.buf.Reset(in) - } - p.err = nil - p.lineCount = 0 - if p.summaries == nil || len(p.summaries) > 0 { - p.summaries = map[uint64]*dto.Metric{} - } - if p.histograms == nil || len(p.histograms) > 0 { - p.histograms = map[uint64]*dto.Metric{} - } - p.currentQuantile = math.NaN() - p.currentBucket = math.NaN() -} - -// startOfLine represents the state where the next byte read from p.buf is the -// start of a line (or whitespace leading up to it). -func (p *TextParser) startOfLine() stateFn { - p.lineCount++ - if p.skipBlankTab(); p.err != nil { - // End of input reached. This is the only case where - // that is not an error but a signal that we are done. - p.err = nil - return nil - } - switch p.currentByte { - case '#': - return p.startComment - case '\n': - return p.startOfLine // Empty line, start the next one. - } - return p.readingMetricName -} - -// startComment represents the state where the next byte read from p.buf is the -// start of a comment (or whitespace leading up to it). -func (p *TextParser) startComment() stateFn { - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte == '\n' { - return p.startOfLine - } - if p.readTokenUntilWhitespace(); p.err != nil { - return nil // Unexpected end of input. - } - // If we have hit the end of line already, there is nothing left - // to do. This is not considered a syntax error. - if p.currentByte == '\n' { - return p.startOfLine - } - keyword := p.currentToken.String() - if keyword != "HELP" && keyword != "TYPE" { - // Generic comment, ignore by fast forwarding to end of line. - for p.currentByte != '\n' { - if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil { - return nil // Unexpected end of input. - } - } - return p.startOfLine - } - // There is something. Next has to be a metric name. - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.readTokenAsMetricName(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte == '\n' { - // At the end of the line already. - // Again, this is not considered a syntax error. - return p.startOfLine - } - if !isBlankOrTab(p.currentByte) { - p.parseError("invalid metric name in comment") - return nil - } - p.setOrCreateCurrentMF() - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte == '\n' { - // At the end of the line already. - // Again, this is not considered a syntax error. - return p.startOfLine - } - switch keyword { - case "HELP": - return p.readingHelp - case "TYPE": - return p.readingType - } - panic(fmt.Sprintf("code error: unexpected keyword %q", keyword)) -} - -// readingMetricName represents the state where the last byte read (now in -// p.currentByte) is the first byte of a metric name. -func (p *TextParser) readingMetricName() stateFn { - if p.readTokenAsMetricName(); p.err != nil { - return nil - } - if p.currentToken.Len() == 0 { - p.parseError("invalid metric name") - return nil - } - p.setOrCreateCurrentMF() - // Now is the time to fix the type if it hasn't happened yet. - if p.currentMF.Type == nil { - p.currentMF.Type = dto.MetricType_UNTYPED.Enum() - } - p.currentMetric = &dto.Metric{} - // Do not append the newly created currentMetric to - // currentMF.Metric right now. First wait if this is a summary, - // and the metric exists already, which we can only know after - // having read all the labels. - if p.skipBlankTabIfCurrentBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - return p.readingLabels -} - -// readingLabels represents the state where the last byte read (now in -// p.currentByte) is either the first byte of the label set (i.e. a '{'), or the -// first byte of the value (otherwise). -func (p *TextParser) readingLabels() stateFn { - // Summaries/histograms are special. We have to reset the - // currentLabels map, currentQuantile and currentBucket before starting to - // read labels. - if p.currentMF.GetType() == dto.MetricType_SUMMARY || p.currentMF.GetType() == dto.MetricType_HISTOGRAM { - p.currentLabels = map[string]string{} - p.currentLabels[string(model.MetricNameLabel)] = p.currentMF.GetName() - p.currentQuantile = math.NaN() - p.currentBucket = math.NaN() - } - if p.currentByte != '{' { - return p.readingValue - } - return p.startLabelName -} - -// startLabelName represents the state where the next byte read from p.buf is -// the start of a label name (or whitespace leading up to it). -func (p *TextParser) startLabelName() stateFn { - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte == '}' { - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - return p.readingValue - } - if p.readTokenAsLabelName(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentToken.Len() == 0 { - p.parseError(fmt.Sprintf("invalid label name for metric %q", p.currentMF.GetName())) - return nil - } - p.currentLabelPair = &dto.LabelPair{Name: proto.String(p.currentToken.String())} - if p.currentLabelPair.GetName() == string(model.MetricNameLabel) { - p.parseError(fmt.Sprintf("label name %q is reserved", model.MetricNameLabel)) - return nil - } - // Special summary/histogram treatment. Don't add 'quantile' and 'le' - // labels to 'real' labels. - if !(p.currentMF.GetType() == dto.MetricType_SUMMARY && p.currentLabelPair.GetName() == model.QuantileLabel) && - !(p.currentMF.GetType() == dto.MetricType_HISTOGRAM && p.currentLabelPair.GetName() == model.BucketLabel) { - p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPair) - } - if p.skipBlankTabIfCurrentBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte != '=' { - p.parseError(fmt.Sprintf("expected '=' after label name, found %q", p.currentByte)) - return nil - } - return p.startLabelValue -} - -// startLabelValue represents the state where the next byte read from p.buf is -// the start of a (quoted) label value (or whitespace leading up to it). -func (p *TextParser) startLabelValue() stateFn { - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentByte != '"' { - p.parseError(fmt.Sprintf("expected '\"' at start of label value, found %q", p.currentByte)) - return nil - } - if p.readTokenAsLabelValue(); p.err != nil { - return nil - } - if !model.LabelValue(p.currentToken.String()).IsValid() { - p.parseError(fmt.Sprintf("invalid label value %q", p.currentToken.String())) - return nil - } - p.currentLabelPair.Value = proto.String(p.currentToken.String()) - // Special treatment of summaries: - // - Quantile labels are special, will result in dto.Quantile later. - // - Other labels have to be added to currentLabels for signature calculation. - if p.currentMF.GetType() == dto.MetricType_SUMMARY { - if p.currentLabelPair.GetName() == model.QuantileLabel { - if p.currentQuantile, p.err = parseFloat(p.currentLabelPair.GetValue()); p.err != nil { - // Create a more helpful error message. - p.parseError(fmt.Sprintf("expected float as value for 'quantile' label, got %q", p.currentLabelPair.GetValue())) - return nil - } - } else { - p.currentLabels[p.currentLabelPair.GetName()] = p.currentLabelPair.GetValue() - } - } - // Similar special treatment of histograms. - if p.currentMF.GetType() == dto.MetricType_HISTOGRAM { - if p.currentLabelPair.GetName() == model.BucketLabel { - if p.currentBucket, p.err = parseFloat(p.currentLabelPair.GetValue()); p.err != nil { - // Create a more helpful error message. - p.parseError(fmt.Sprintf("expected float as value for 'le' label, got %q", p.currentLabelPair.GetValue())) - return nil - } - } else { - p.currentLabels[p.currentLabelPair.GetName()] = p.currentLabelPair.GetValue() - } - } - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - switch p.currentByte { - case ',': - return p.startLabelName - - case '}': - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - return p.readingValue - default: - p.parseError(fmt.Sprintf("unexpected end of label value %q", p.currentLabelPair.GetValue())) - return nil - } -} - -// readingValue represents the state where the last byte read (now in -// p.currentByte) is the first byte of the sample value (i.e. a float). -func (p *TextParser) readingValue() stateFn { - // When we are here, we have read all the labels, so for the - // special case of a summary/histogram, we can finally find out - // if the metric already exists. - if p.currentMF.GetType() == dto.MetricType_SUMMARY { - signature := model.LabelsToSignature(p.currentLabels) - if summary := p.summaries[signature]; summary != nil { - p.currentMetric = summary - } else { - p.summaries[signature] = p.currentMetric - p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric) - } - } else if p.currentMF.GetType() == dto.MetricType_HISTOGRAM { - signature := model.LabelsToSignature(p.currentLabels) - if histogram := p.histograms[signature]; histogram != nil { - p.currentMetric = histogram - } else { - p.histograms[signature] = p.currentMetric - p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric) - } - } else { - p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric) - } - if p.readTokenUntilWhitespace(); p.err != nil { - return nil // Unexpected end of input. - } - value, err := parseFloat(p.currentToken.String()) - if err != nil { - // Create a more helpful error message. - p.parseError(fmt.Sprintf("expected float as value, got %q", p.currentToken.String())) - return nil - } - switch p.currentMF.GetType() { - case dto.MetricType_COUNTER: - p.currentMetric.Counter = &dto.Counter{Value: proto.Float64(value)} - case dto.MetricType_GAUGE: - p.currentMetric.Gauge = &dto.Gauge{Value: proto.Float64(value)} - case dto.MetricType_UNTYPED: - p.currentMetric.Untyped = &dto.Untyped{Value: proto.Float64(value)} - case dto.MetricType_SUMMARY: - // *sigh* - if p.currentMetric.Summary == nil { - p.currentMetric.Summary = &dto.Summary{} - } - switch { - case p.currentIsSummaryCount: - p.currentMetric.Summary.SampleCount = proto.Uint64(uint64(value)) - case p.currentIsSummarySum: - p.currentMetric.Summary.SampleSum = proto.Float64(value) - case !math.IsNaN(p.currentQuantile): - p.currentMetric.Summary.Quantile = append( - p.currentMetric.Summary.Quantile, - &dto.Quantile{ - Quantile: proto.Float64(p.currentQuantile), - Value: proto.Float64(value), - }, - ) - } - case dto.MetricType_HISTOGRAM: - // *sigh* - if p.currentMetric.Histogram == nil { - p.currentMetric.Histogram = &dto.Histogram{} - } - switch { - case p.currentIsHistogramCount: - p.currentMetric.Histogram.SampleCount = proto.Uint64(uint64(value)) - case p.currentIsHistogramSum: - p.currentMetric.Histogram.SampleSum = proto.Float64(value) - case !math.IsNaN(p.currentBucket): - p.currentMetric.Histogram.Bucket = append( - p.currentMetric.Histogram.Bucket, - &dto.Bucket{ - UpperBound: proto.Float64(p.currentBucket), - CumulativeCount: proto.Uint64(uint64(value)), - }, - ) - } - default: - p.err = fmt.Errorf("unexpected type for metric name %q", p.currentMF.GetName()) - } - if p.currentByte == '\n' { - return p.startOfLine - } - return p.startTimestamp -} - -// startTimestamp represents the state where the next byte read from p.buf is -// the start of the timestamp (or whitespace leading up to it). -func (p *TextParser) startTimestamp() stateFn { - if p.skipBlankTab(); p.err != nil { - return nil // Unexpected end of input. - } - if p.readTokenUntilWhitespace(); p.err != nil { - return nil // Unexpected end of input. - } - timestamp, err := strconv.ParseInt(p.currentToken.String(), 10, 64) - if err != nil { - // Create a more helpful error message. - p.parseError(fmt.Sprintf("expected integer as timestamp, got %q", p.currentToken.String())) - return nil - } - p.currentMetric.TimestampMs = proto.Int64(timestamp) - if p.readTokenUntilNewline(false); p.err != nil { - return nil // Unexpected end of input. - } - if p.currentToken.Len() > 0 { - p.parseError(fmt.Sprintf("spurious string after timestamp: %q", p.currentToken.String())) - return nil - } - return p.startOfLine -} - -// readingHelp represents the state where the last byte read (now in -// p.currentByte) is the first byte of the docstring after 'HELP'. -func (p *TextParser) readingHelp() stateFn { - if p.currentMF.Help != nil { - p.parseError(fmt.Sprintf("second HELP line for metric name %q", p.currentMF.GetName())) - return nil - } - // Rest of line is the docstring. - if p.readTokenUntilNewline(true); p.err != nil { - return nil // Unexpected end of input. - } - p.currentMF.Help = proto.String(p.currentToken.String()) - return p.startOfLine -} - -// readingType represents the state where the last byte read (now in -// p.currentByte) is the first byte of the type hint after 'HELP'. -func (p *TextParser) readingType() stateFn { - if p.currentMF.Type != nil { - p.parseError(fmt.Sprintf("second TYPE line for metric name %q, or TYPE reported after samples", p.currentMF.GetName())) - return nil - } - // Rest of line is the type. - if p.readTokenUntilNewline(false); p.err != nil { - return nil // Unexpected end of input. - } - metricType, ok := dto.MetricType_value[strings.ToUpper(p.currentToken.String())] - if !ok { - p.parseError(fmt.Sprintf("unknown metric type %q", p.currentToken.String())) - return nil - } - p.currentMF.Type = dto.MetricType(metricType).Enum() - return p.startOfLine -} - -// parseError sets p.err to a ParseError at the current line with the given -// message. -func (p *TextParser) parseError(msg string) { - p.err = ParseError{ - Line: p.lineCount, - Msg: msg, - } -} - -// skipBlankTab reads (and discards) bytes from p.buf until it encounters a byte -// that is neither ' ' nor '\t'. That byte is left in p.currentByte. -func (p *TextParser) skipBlankTab() { - for { - if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil || !isBlankOrTab(p.currentByte) { - return - } - } -} - -// skipBlankTabIfCurrentBlankTab works exactly as skipBlankTab but doesn't do -// anything if p.currentByte is neither ' ' nor '\t'. -func (p *TextParser) skipBlankTabIfCurrentBlankTab() { - if isBlankOrTab(p.currentByte) { - p.skipBlankTab() - } -} - -// readTokenUntilWhitespace copies bytes from p.buf into p.currentToken. The -// first byte considered is the byte already read (now in p.currentByte). The -// first whitespace byte encountered is still copied into p.currentByte, but not -// into p.currentToken. -func (p *TextParser) readTokenUntilWhitespace() { - p.currentToken.Reset() - for p.err == nil && !isBlankOrTab(p.currentByte) && p.currentByte != '\n' { - p.currentToken.WriteByte(p.currentByte) - p.currentByte, p.err = p.buf.ReadByte() - } -} - -// readTokenUntilNewline copies bytes from p.buf into p.currentToken. The first -// byte considered is the byte already read (now in p.currentByte). The first -// newline byte encountered is still copied into p.currentByte, but not into -// p.currentToken. If recognizeEscapeSequence is true, two escape sequences are -// recognized: '\\' translates into '\', and '\n' into a line-feed character. -// All other escape sequences are invalid and cause an error. -func (p *TextParser) readTokenUntilNewline(recognizeEscapeSequence bool) { - p.currentToken.Reset() - escaped := false - for p.err == nil { - if recognizeEscapeSequence && escaped { - switch p.currentByte { - case '\\': - p.currentToken.WriteByte(p.currentByte) - case 'n': - p.currentToken.WriteByte('\n') - default: - p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) - return - } - escaped = false - } else { - switch p.currentByte { - case '\n': - return - case '\\': - escaped = true - default: - p.currentToken.WriteByte(p.currentByte) - } - } - p.currentByte, p.err = p.buf.ReadByte() - } -} - -// readTokenAsMetricName copies a metric name from p.buf into p.currentToken. -// The first byte considered is the byte already read (now in p.currentByte). -// The first byte not part of a metric name is still copied into p.currentByte, -// but not into p.currentToken. -func (p *TextParser) readTokenAsMetricName() { - p.currentToken.Reset() - if !isValidMetricNameStart(p.currentByte) { - return - } - for { - p.currentToken.WriteByte(p.currentByte) - p.currentByte, p.err = p.buf.ReadByte() - if p.err != nil || !isValidMetricNameContinuation(p.currentByte) { - return - } - } -} - -// readTokenAsLabelName copies a label name from p.buf into p.currentToken. -// The first byte considered is the byte already read (now in p.currentByte). -// The first byte not part of a label name is still copied into p.currentByte, -// but not into p.currentToken. -func (p *TextParser) readTokenAsLabelName() { - p.currentToken.Reset() - if !isValidLabelNameStart(p.currentByte) { - return - } - for { - p.currentToken.WriteByte(p.currentByte) - p.currentByte, p.err = p.buf.ReadByte() - if p.err != nil || !isValidLabelNameContinuation(p.currentByte) { - return - } - } -} - -// readTokenAsLabelValue copies a label value from p.buf into p.currentToken. -// In contrast to the other 'readTokenAs...' functions, which start with the -// last read byte in p.currentByte, this method ignores p.currentByte and starts -// with reading a new byte from p.buf. The first byte not part of a label value -// is still copied into p.currentByte, but not into p.currentToken. -func (p *TextParser) readTokenAsLabelValue() { - p.currentToken.Reset() - escaped := false - for { - if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil { - return - } - if escaped { - switch p.currentByte { - case '"', '\\': - p.currentToken.WriteByte(p.currentByte) - case 'n': - p.currentToken.WriteByte('\n') - default: - p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte)) - return - } - escaped = false - continue - } - switch p.currentByte { - case '"': - return - case '\n': - p.parseError(fmt.Sprintf("label value %q contains unescaped new-line", p.currentToken.String())) - return - case '\\': - escaped = true - default: - p.currentToken.WriteByte(p.currentByte) - } - } -} - -func (p *TextParser) setOrCreateCurrentMF() { - p.currentIsSummaryCount = false - p.currentIsSummarySum = false - p.currentIsHistogramCount = false - p.currentIsHistogramSum = false - name := p.currentToken.String() - if p.currentMF = p.metricFamiliesByName[name]; p.currentMF != nil { - return - } - // Try out if this is a _sum or _count for a summary/histogram. - summaryName := summaryMetricName(name) - if p.currentMF = p.metricFamiliesByName[summaryName]; p.currentMF != nil { - if p.currentMF.GetType() == dto.MetricType_SUMMARY { - if isCount(name) { - p.currentIsSummaryCount = true - } - if isSum(name) { - p.currentIsSummarySum = true - } - return - } - } - histogramName := histogramMetricName(name) - if p.currentMF = p.metricFamiliesByName[histogramName]; p.currentMF != nil { - if p.currentMF.GetType() == dto.MetricType_HISTOGRAM { - if isCount(name) { - p.currentIsHistogramCount = true - } - if isSum(name) { - p.currentIsHistogramSum = true - } - return - } - } - p.currentMF = &dto.MetricFamily{Name: proto.String(name)} - p.metricFamiliesByName[name] = p.currentMF -} - -func isValidLabelNameStart(b byte) bool { - return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' -} - -func isValidLabelNameContinuation(b byte) bool { - return isValidLabelNameStart(b) || (b >= '0' && b <= '9') -} - -func isValidMetricNameStart(b byte) bool { - return isValidLabelNameStart(b) || b == ':' -} - -func isValidMetricNameContinuation(b byte) bool { - return isValidLabelNameContinuation(b) || b == ':' -} - -func isBlankOrTab(b byte) bool { - return b == ' ' || b == '\t' -} - -func isCount(name string) bool { - return len(name) > 6 && name[len(name)-6:] == "_count" -} - -func isSum(name string) bool { - return len(name) > 4 && name[len(name)-4:] == "_sum" -} - -func isBucket(name string) bool { - return len(name) > 7 && name[len(name)-7:] == "_bucket" -} - -func summaryMetricName(name string) string { - switch { - case isCount(name): - return name[:len(name)-6] - case isSum(name): - return name[:len(name)-4] - default: - return name - } -} - -func histogramMetricName(name string) string { - switch { - case isCount(name): - return name[:len(name)-6] - case isSum(name): - return name[:len(name)-4] - case isBucket(name): - return name[:len(name)-7] - default: - return name - } -} - -func parseFloat(s string) (float64, error) { - if strings.ContainsAny(s, "pP_") { - return 0, fmt.Errorf("unsupported character in float") - } - return strconv.ParseFloat(s, 64) -} diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt deleted file mode 100644 index 7723656d..00000000 --- a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt +++ /dev/null @@ -1,67 +0,0 @@ -PACKAGE - -package goautoneg -import "bitbucket.org/ww/goautoneg" - -HTTP Content-Type Autonegotiation. - -The functions in this package implement the behaviour specified in -http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - -Copyright (c) 2011, Open Knowledge Foundation Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -FUNCTIONS - -func Negotiate(header string, alternatives []string) (content_type string) -Negotiate the most appropriate content_type given the accept header -and a list of alternatives. - -func ParseAccept(header string) (accept []Accept) -Parse an Accept Header string returning a sorted list -of clauses - - -TYPES - -type Accept struct { - Type, SubType string - Q float32 - Params map[string]string -} -Structure to represent a clause in an HTTP Accept Header - - -SUBDIRECTORIES - - .hg diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go deleted file mode 100644 index 26e92288..00000000 --- a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright (c) 2011, Open Knowledge Foundation Ltd. -All rights reserved. - -HTTP Content-Type Autonegotiation. - -The functions in this package implement the behaviour specified in -http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -*/ -package goautoneg - -import ( - "sort" - "strconv" - "strings" -) - -// Structure to represent a clause in an HTTP Accept Header -type Accept struct { - Type, SubType string - Q float64 - Params map[string]string -} - -// For internal use, so that we can use the sort interface -type accept_slice []Accept - -func (accept accept_slice) Len() int { - slice := []Accept(accept) - return len(slice) -} - -func (accept accept_slice) Less(i, j int) bool { - slice := []Accept(accept) - ai, aj := slice[i], slice[j] - if ai.Q > aj.Q { - return true - } - if ai.Type != "*" && aj.Type == "*" { - return true - } - if ai.SubType != "*" && aj.SubType == "*" { - return true - } - return false -} - -func (accept accept_slice) Swap(i, j int) { - slice := []Accept(accept) - slice[i], slice[j] = slice[j], slice[i] -} - -// Parse an Accept Header string returning a sorted list -// of clauses -func ParseAccept(header string) (accept []Accept) { - parts := strings.Split(header, ",") - accept = make([]Accept, 0, len(parts)) - for _, part := range parts { - part := strings.Trim(part, " ") - - a := Accept{} - a.Params = make(map[string]string) - a.Q = 1.0 - - mrp := strings.Split(part, ";") - - media_range := mrp[0] - sp := strings.Split(media_range, "/") - a.Type = strings.Trim(sp[0], " ") - - switch { - case len(sp) == 1 && a.Type == "*": - a.SubType = "*" - case len(sp) == 2: - a.SubType = strings.Trim(sp[1], " ") - default: - continue - } - - if len(mrp) == 1 { - accept = append(accept, a) - continue - } - - for _, param := range mrp[1:] { - sp := strings.SplitN(param, "=", 2) - if len(sp) != 2 { - continue - } - token := strings.Trim(sp[0], " ") - if token == "q" { - a.Q, _ = strconv.ParseFloat(sp[1], 32) - } else { - a.Params[token] = strings.Trim(sp[1], " ") - } - } - - accept = append(accept, a) - } - - slice := accept_slice(accept) - sort.Sort(slice) - - return -} - -// Negotiate the most appropriate content_type given the accept header -// and a list of alternatives. -func Negotiate(header string, alternatives []string) (content_type string) { - asp := make([][]string, 0, len(alternatives)) - for _, ctype := range alternatives { - asp = append(asp, strings.SplitN(ctype, "/", 2)) - } - for _, clause := range ParseAccept(header) { - for i, ctsp := range asp { - if clause.Type == ctsp[0] && clause.SubType == ctsp[1] { - content_type = alternatives[i] - return - } - if clause.Type == ctsp[0] && clause.SubType == "*" { - content_type = alternatives[i] - return - } - if clause.Type == "*" && clause.SubType == "*" { - content_type = alternatives[i] - return - } - } - } - return -} diff --git a/vendor/github.com/prometheus/common/model/alert.go b/vendor/github.com/prometheus/common/model/alert.go deleted file mode 100644 index 35e739c7..00000000 --- a/vendor/github.com/prometheus/common/model/alert.go +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "fmt" - "time" -) - -type AlertStatus string - -const ( - AlertFiring AlertStatus = "firing" - AlertResolved AlertStatus = "resolved" -) - -// Alert is a generic representation of an alert in the Prometheus eco-system. -type Alert struct { - // Label value pairs for purpose of aggregation, matching, and disposition - // dispatching. This must minimally include an "alertname" label. - Labels LabelSet `json:"labels"` - - // Extra key/value information which does not define alert identity. - Annotations LabelSet `json:"annotations"` - - // The known time range for this alert. Both ends are optional. - StartsAt time.Time `json:"startsAt,omitempty"` - EndsAt time.Time `json:"endsAt,omitempty"` - GeneratorURL string `json:"generatorURL"` -} - -// Name returns the name of the alert. It is equivalent to the "alertname" label. -func (a *Alert) Name() string { - return string(a.Labels[AlertNameLabel]) -} - -// Fingerprint returns a unique hash for the alert. It is equivalent to -// the fingerprint of the alert's label set. -func (a *Alert) Fingerprint() Fingerprint { - return a.Labels.Fingerprint() -} - -func (a *Alert) String() string { - s := fmt.Sprintf("%s[%s]", a.Name(), a.Fingerprint().String()[:7]) - if a.Resolved() { - return s + "[resolved]" - } - return s + "[active]" -} - -// Resolved returns true iff the activity interval ended in the past. -func (a *Alert) Resolved() bool { - return a.ResolvedAt(time.Now()) -} - -// ResolvedAt returns true off the activity interval ended before -// the given timestamp. -func (a *Alert) ResolvedAt(ts time.Time) bool { - if a.EndsAt.IsZero() { - return false - } - return !a.EndsAt.After(ts) -} - -// Status returns the status of the alert. -func (a *Alert) Status() AlertStatus { - if a.Resolved() { - return AlertResolved - } - return AlertFiring -} - -// Validate checks whether the alert data is inconsistent. -func (a *Alert) Validate() error { - if a.StartsAt.IsZero() { - return fmt.Errorf("start time missing") - } - if !a.EndsAt.IsZero() && a.EndsAt.Before(a.StartsAt) { - return fmt.Errorf("start time must be before end time") - } - if err := a.Labels.Validate(); err != nil { - return fmt.Errorf("invalid label set: %s", err) - } - if len(a.Labels) == 0 { - return fmt.Errorf("at least one label pair required") - } - if err := a.Annotations.Validate(); err != nil { - return fmt.Errorf("invalid annotations: %s", err) - } - return nil -} - -// Alert is a list of alerts that can be sorted in chronological order. -type Alerts []*Alert - -func (as Alerts) Len() int { return len(as) } -func (as Alerts) Swap(i, j int) { as[i], as[j] = as[j], as[i] } - -func (as Alerts) Less(i, j int) bool { - if as[i].StartsAt.Before(as[j].StartsAt) { - return true - } - if as[i].EndsAt.Before(as[j].EndsAt) { - return true - } - return as[i].Fingerprint() < as[j].Fingerprint() -} - -// HasFiring returns true iff one of the alerts is not resolved. -func (as Alerts) HasFiring() bool { - for _, a := range as { - if !a.Resolved() { - return true - } - } - return false -} - -// Status returns StatusFiring iff at least one of the alerts is firing. -func (as Alerts) Status() AlertStatus { - if as.HasFiring() { - return AlertFiring - } - return AlertResolved -} diff --git a/vendor/github.com/prometheus/common/model/fingerprinting.go b/vendor/github.com/prometheus/common/model/fingerprinting.go deleted file mode 100644 index fc4de410..00000000 --- a/vendor/github.com/prometheus/common/model/fingerprinting.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "fmt" - "strconv" -) - -// Fingerprint provides a hash-capable representation of a Metric. -// For our purposes, FNV-1A 64-bit is used. -type Fingerprint uint64 - -// FingerprintFromString transforms a string representation into a Fingerprint. -func FingerprintFromString(s string) (Fingerprint, error) { - num, err := strconv.ParseUint(s, 16, 64) - return Fingerprint(num), err -} - -// ParseFingerprint parses the input string into a fingerprint. -func ParseFingerprint(s string) (Fingerprint, error) { - num, err := strconv.ParseUint(s, 16, 64) - if err != nil { - return 0, err - } - return Fingerprint(num), nil -} - -func (f Fingerprint) String() string { - return fmt.Sprintf("%016x", uint64(f)) -} - -// Fingerprints represents a collection of Fingerprint subject to a given -// natural sorting scheme. It implements sort.Interface. -type Fingerprints []Fingerprint - -// Len implements sort.Interface. -func (f Fingerprints) Len() int { - return len(f) -} - -// Less implements sort.Interface. -func (f Fingerprints) Less(i, j int) bool { - return f[i] < f[j] -} - -// Swap implements sort.Interface. -func (f Fingerprints) Swap(i, j int) { - f[i], f[j] = f[j], f[i] -} - -// FingerprintSet is a set of Fingerprints. -type FingerprintSet map[Fingerprint]struct{} - -// Equal returns true if both sets contain the same elements (and not more). -func (s FingerprintSet) Equal(o FingerprintSet) bool { - if len(s) != len(o) { - return false - } - - for k := range s { - if _, ok := o[k]; !ok { - return false - } - } - - return true -} - -// Intersection returns the elements contained in both sets. -func (s FingerprintSet) Intersection(o FingerprintSet) FingerprintSet { - myLength, otherLength := len(s), len(o) - if myLength == 0 || otherLength == 0 { - return FingerprintSet{} - } - - subSet := s - superSet := o - - if otherLength < myLength { - subSet = o - superSet = s - } - - out := FingerprintSet{} - - for k := range subSet { - if _, ok := superSet[k]; ok { - out[k] = struct{}{} - } - } - - return out -} diff --git a/vendor/github.com/prometheus/common/model/fnv.go b/vendor/github.com/prometheus/common/model/fnv.go deleted file mode 100644 index 038fc1c9..00000000 --- a/vendor/github.com/prometheus/common/model/fnv.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 model - -// Inline and byte-free variant of hash/fnv's fnv64a. - -const ( - offset64 = 14695981039346656037 - prime64 = 1099511628211 -) - -// hashNew initializies a new fnv64a hash value. -func hashNew() uint64 { - return offset64 -} - -// hashAdd adds a string to a fnv64a hash value, returning the updated hash. -func hashAdd(h uint64, s string) uint64 { - for i := 0; i < len(s); i++ { - h ^= uint64(s[i]) - h *= prime64 - } - return h -} - -// hashAddByte adds a byte to a fnv64a hash value, returning the updated hash. -func hashAddByte(h uint64, b byte) uint64 { - h ^= uint64(b) - h *= prime64 - return h -} diff --git a/vendor/github.com/prometheus/common/model/labels.go b/vendor/github.com/prometheus/common/model/labels.go deleted file mode 100644 index 41051a01..00000000 --- a/vendor/github.com/prometheus/common/model/labels.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "encoding/json" - "fmt" - "regexp" - "strings" - "unicode/utf8" -) - -const ( - // AlertNameLabel is the name of the label containing the an alert's name. - AlertNameLabel = "alertname" - - // ExportedLabelPrefix is the prefix to prepend to the label names present in - // exported metrics if a label of the same name is added by the server. - ExportedLabelPrefix = "exported_" - - // MetricNameLabel is the label name indicating the metric name of a - // timeseries. - MetricNameLabel = "__name__" - - // SchemeLabel is the name of the label that holds the scheme on which to - // scrape a target. - SchemeLabel = "__scheme__" - - // AddressLabel is the name of the label that holds the address of - // a scrape target. - AddressLabel = "__address__" - - // MetricsPathLabel is the name of the label that holds the path on which to - // scrape a target. - MetricsPathLabel = "__metrics_path__" - - // ReservedLabelPrefix is a prefix which is not legal in user-supplied - // label names. - ReservedLabelPrefix = "__" - - // MetaLabelPrefix is a prefix for labels that provide meta information. - // Labels with this prefix are used for intermediate label processing and - // will not be attached to time series. - MetaLabelPrefix = "__meta_" - - // TmpLabelPrefix is a prefix for temporary labels as part of relabelling. - // Labels with this prefix are used for intermediate label processing and - // will not be attached to time series. This is reserved for use in - // Prometheus configuration files by users. - TmpLabelPrefix = "__tmp_" - - // ParamLabelPrefix is a prefix for labels that provide URL parameters - // used to scrape a target. - ParamLabelPrefix = "__param_" - - // JobLabel is the label name indicating the job from which a timeseries - // was scraped. - JobLabel = "job" - - // InstanceLabel is the label name used for the instance label. - InstanceLabel = "instance" - - // BucketLabel is used for the label that defines the upper bound of a - // bucket of a histogram ("le" -> "less or equal"). - BucketLabel = "le" - - // QuantileLabel is used for the label that defines the quantile in a - // summary. - QuantileLabel = "quantile" -) - -// LabelNameRE is a regular expression matching valid label names. Note that the -// IsValid method of LabelName performs the same check but faster than a match -// with this regular expression. -var LabelNameRE = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$") - -// A LabelName is a key for a LabelSet or Metric. It has a value associated -// therewith. -type LabelName string - -// IsValid is true iff the label name matches the pattern of LabelNameRE. This -// method, however, does not use LabelNameRE for the check but a much faster -// hardcoded implementation. -func (ln LabelName) IsValid() bool { - if len(ln) == 0 { - return false - } - for i, b := range ln { - if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) { - return false - } - } - return true -} - -// UnmarshalYAML implements the yaml.Unmarshaler interface. -func (ln *LabelName) UnmarshalYAML(unmarshal func(interface{}) error) error { - var s string - if err := unmarshal(&s); err != nil { - return err - } - if !LabelName(s).IsValid() { - return fmt.Errorf("%q is not a valid label name", s) - } - *ln = LabelName(s) - return nil -} - -// UnmarshalJSON implements the json.Unmarshaler interface. -func (ln *LabelName) UnmarshalJSON(b []byte) error { - var s string - if err := json.Unmarshal(b, &s); err != nil { - return err - } - if !LabelName(s).IsValid() { - return fmt.Errorf("%q is not a valid label name", s) - } - *ln = LabelName(s) - return nil -} - -// LabelNames is a sortable LabelName slice. In implements sort.Interface. -type LabelNames []LabelName - -func (l LabelNames) Len() int { - return len(l) -} - -func (l LabelNames) Less(i, j int) bool { - return l[i] < l[j] -} - -func (l LabelNames) Swap(i, j int) { - l[i], l[j] = l[j], l[i] -} - -func (l LabelNames) String() string { - labelStrings := make([]string, 0, len(l)) - for _, label := range l { - labelStrings = append(labelStrings, string(label)) - } - return strings.Join(labelStrings, ", ") -} - -// A LabelValue is an associated value for a LabelName. -type LabelValue string - -// IsValid returns true iff the string is a valid UTF8. -func (lv LabelValue) IsValid() bool { - return utf8.ValidString(string(lv)) -} - -// LabelValues is a sortable LabelValue slice. It implements sort.Interface. -type LabelValues []LabelValue - -func (l LabelValues) Len() int { - return len(l) -} - -func (l LabelValues) Less(i, j int) bool { - return string(l[i]) < string(l[j]) -} - -func (l LabelValues) Swap(i, j int) { - l[i], l[j] = l[j], l[i] -} - -// LabelPair pairs a name with a value. -type LabelPair struct { - Name LabelName - Value LabelValue -} - -// LabelPairs is a sortable slice of LabelPair pointers. It implements -// sort.Interface. -type LabelPairs []*LabelPair - -func (l LabelPairs) Len() int { - return len(l) -} - -func (l LabelPairs) Less(i, j int) bool { - switch { - case l[i].Name > l[j].Name: - return false - case l[i].Name < l[j].Name: - return true - case l[i].Value > l[j].Value: - return false - case l[i].Value < l[j].Value: - return true - default: - return false - } -} - -func (l LabelPairs) Swap(i, j int) { - l[i], l[j] = l[j], l[i] -} diff --git a/vendor/github.com/prometheus/common/model/labelset.go b/vendor/github.com/prometheus/common/model/labelset.go deleted file mode 100644 index 6eda08a7..00000000 --- a/vendor/github.com/prometheus/common/model/labelset.go +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "encoding/json" - "fmt" - "sort" - "strings" -) - -// A LabelSet is a collection of LabelName and LabelValue pairs. The LabelSet -// may be fully-qualified down to the point where it may resolve to a single -// Metric in the data store or not. All operations that occur within the realm -// of a LabelSet can emit a vector of Metric entities to which the LabelSet may -// match. -type LabelSet map[LabelName]LabelValue - -// Validate checks whether all names and values in the label set -// are valid. -func (ls LabelSet) Validate() error { - for ln, lv := range ls { - if !ln.IsValid() { - return fmt.Errorf("invalid name %q", ln) - } - if !lv.IsValid() { - return fmt.Errorf("invalid value %q", lv) - } - } - return nil -} - -// Equal returns true iff both label sets have exactly the same key/value pairs. -func (ls LabelSet) Equal(o LabelSet) bool { - if len(ls) != len(o) { - return false - } - for ln, lv := range ls { - olv, ok := o[ln] - if !ok { - return false - } - if olv != lv { - return false - } - } - return true -} - -// Before compares the metrics, using the following criteria: -// -// If m has fewer labels than o, it is before o. If it has more, it is not. -// -// If the number of labels is the same, the superset of all label names is -// sorted alphanumerically. The first differing label pair found in that order -// determines the outcome: If the label does not exist at all in m, then m is -// before o, and vice versa. Otherwise the label value is compared -// alphanumerically. -// -// If m and o are equal, the method returns false. -func (ls LabelSet) Before(o LabelSet) bool { - if len(ls) < len(o) { - return true - } - if len(ls) > len(o) { - return false - } - - lns := make(LabelNames, 0, len(ls)+len(o)) - for ln := range ls { - lns = append(lns, ln) - } - for ln := range o { - lns = append(lns, ln) - } - // It's probably not worth it to de-dup lns. - sort.Sort(lns) - for _, ln := range lns { - mlv, ok := ls[ln] - if !ok { - return true - } - olv, ok := o[ln] - if !ok { - return false - } - if mlv < olv { - return true - } - if mlv > olv { - return false - } - } - return false -} - -// Clone returns a copy of the label set. -func (ls LabelSet) Clone() LabelSet { - lsn := make(LabelSet, len(ls)) - for ln, lv := range ls { - lsn[ln] = lv - } - return lsn -} - -// Merge is a helper function to non-destructively merge two label sets. -func (l LabelSet) Merge(other LabelSet) LabelSet { - result := make(LabelSet, len(l)) - - for k, v := range l { - result[k] = v - } - - for k, v := range other { - result[k] = v - } - - return result -} - -func (l LabelSet) String() string { - lstrs := make([]string, 0, len(l)) - for l, v := range l { - lstrs = append(lstrs, fmt.Sprintf("%s=%q", l, v)) - } - - sort.Strings(lstrs) - return fmt.Sprintf("{%s}", strings.Join(lstrs, ", ")) -} - -// Fingerprint returns the LabelSet's fingerprint. -func (ls LabelSet) Fingerprint() Fingerprint { - return labelSetToFingerprint(ls) -} - -// FastFingerprint returns the LabelSet's Fingerprint calculated by a faster hashing -// algorithm, which is, however, more susceptible to hash collisions. -func (ls LabelSet) FastFingerprint() Fingerprint { - return labelSetToFastFingerprint(ls) -} - -// UnmarshalJSON implements the json.Unmarshaler interface. -func (l *LabelSet) UnmarshalJSON(b []byte) error { - var m map[LabelName]LabelValue - if err := json.Unmarshal(b, &m); err != nil { - return err - } - // encoding/json only unmarshals maps of the form map[string]T. It treats - // LabelName as a string and does not call its UnmarshalJSON method. - // Thus, we have to replicate the behavior here. - for ln := range m { - if !ln.IsValid() { - return fmt.Errorf("%q is not a valid label name", ln) - } - } - *l = LabelSet(m) - return nil -} diff --git a/vendor/github.com/prometheus/common/model/metric.go b/vendor/github.com/prometheus/common/model/metric.go deleted file mode 100644 index 00804b7f..00000000 --- a/vendor/github.com/prometheus/common/model/metric.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "fmt" - "regexp" - "sort" - "strings" -) - -var ( - // MetricNameRE is a regular expression matching valid metric - // names. Note that the IsValidMetricName function performs the same - // check but faster than a match with this regular expression. - MetricNameRE = regexp.MustCompile(`^[a-zA-Z_:][a-zA-Z0-9_:]*$`) -) - -// A Metric is similar to a LabelSet, but the key difference is that a Metric is -// a singleton and refers to one and only one stream of samples. -type Metric LabelSet - -// Equal compares the metrics. -func (m Metric) Equal(o Metric) bool { - return LabelSet(m).Equal(LabelSet(o)) -} - -// Before compares the metrics' underlying label sets. -func (m Metric) Before(o Metric) bool { - return LabelSet(m).Before(LabelSet(o)) -} - -// Clone returns a copy of the Metric. -func (m Metric) Clone() Metric { - clone := make(Metric, len(m)) - for k, v := range m { - clone[k] = v - } - return clone -} - -func (m Metric) String() string { - metricName, hasName := m[MetricNameLabel] - numLabels := len(m) - 1 - if !hasName { - numLabels = len(m) - } - labelStrings := make([]string, 0, numLabels) - for label, value := range m { - if label != MetricNameLabel { - labelStrings = append(labelStrings, fmt.Sprintf("%s=%q", label, value)) - } - } - - switch numLabels { - case 0: - if hasName { - return string(metricName) - } - return "{}" - default: - sort.Strings(labelStrings) - return fmt.Sprintf("%s{%s}", metricName, strings.Join(labelStrings, ", ")) - } -} - -// Fingerprint returns a Metric's Fingerprint. -func (m Metric) Fingerprint() Fingerprint { - return LabelSet(m).Fingerprint() -} - -// FastFingerprint returns a Metric's Fingerprint calculated by a faster hashing -// algorithm, which is, however, more susceptible to hash collisions. -func (m Metric) FastFingerprint() Fingerprint { - return LabelSet(m).FastFingerprint() -} - -// IsValidMetricName returns true iff name matches the pattern of MetricNameRE. -// This function, however, does not use MetricNameRE for the check but a much -// faster hardcoded implementation. -func IsValidMetricName(n LabelValue) bool { - if len(n) == 0 { - return false - } - for i, b := range n { - if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == ':' || (b >= '0' && b <= '9' && i > 0)) { - return false - } - } - return true -} diff --git a/vendor/github.com/prometheus/common/model/model.go b/vendor/github.com/prometheus/common/model/model.go deleted file mode 100644 index a7b96917..00000000 --- a/vendor/github.com/prometheus/common/model/model.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model contains common data structures that are shared across -// Prometheus components and libraries. -package model diff --git a/vendor/github.com/prometheus/common/model/signature.go b/vendor/github.com/prometheus/common/model/signature.go deleted file mode 100644 index 8762b13c..00000000 --- a/vendor/github.com/prometheus/common/model/signature.go +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2014 The Prometheus Authors -// 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 model - -import ( - "sort" -) - -// SeparatorByte is a byte that cannot occur in valid UTF-8 sequences and is -// used to separate label names, label values, and other strings from each other -// when calculating their combined hash value (aka signature aka fingerprint). -const SeparatorByte byte = 255 - -var ( - // cache the signature of an empty label set. - emptyLabelSignature = hashNew() -) - -// LabelsToSignature returns a quasi-unique signature (i.e., fingerprint) for a -// given label set. (Collisions are possible but unlikely if the number of label -// sets the function is applied to is small.) -func LabelsToSignature(labels map[string]string) uint64 { - if len(labels) == 0 { - return emptyLabelSignature - } - - labelNames := make([]string, 0, len(labels)) - for labelName := range labels { - labelNames = append(labelNames, labelName) - } - sort.Strings(labelNames) - - sum := hashNew() - for _, labelName := range labelNames { - sum = hashAdd(sum, labelName) - sum = hashAddByte(sum, SeparatorByte) - sum = hashAdd(sum, labels[labelName]) - sum = hashAddByte(sum, SeparatorByte) - } - return sum -} - -// labelSetToFingerprint works exactly as LabelsToSignature but takes a LabelSet as -// parameter (rather than a label map) and returns a Fingerprint. -func labelSetToFingerprint(ls LabelSet) Fingerprint { - if len(ls) == 0 { - return Fingerprint(emptyLabelSignature) - } - - labelNames := make(LabelNames, 0, len(ls)) - for labelName := range ls { - labelNames = append(labelNames, labelName) - } - sort.Sort(labelNames) - - sum := hashNew() - for _, labelName := range labelNames { - sum = hashAdd(sum, string(labelName)) - sum = hashAddByte(sum, SeparatorByte) - sum = hashAdd(sum, string(ls[labelName])) - sum = hashAddByte(sum, SeparatorByte) - } - return Fingerprint(sum) -} - -// labelSetToFastFingerprint works similar to labelSetToFingerprint but uses a -// faster and less allocation-heavy hash function, which is more susceptible to -// create hash collisions. Therefore, collision detection should be applied. -func labelSetToFastFingerprint(ls LabelSet) Fingerprint { - if len(ls) == 0 { - return Fingerprint(emptyLabelSignature) - } - - var result uint64 - for labelName, labelValue := range ls { - sum := hashNew() - sum = hashAdd(sum, string(labelName)) - sum = hashAddByte(sum, SeparatorByte) - sum = hashAdd(sum, string(labelValue)) - result ^= sum - } - return Fingerprint(result) -} - -// SignatureForLabels works like LabelsToSignature but takes a Metric as -// parameter (rather than a label map) and only includes the labels with the -// specified LabelNames into the signature calculation. The labels passed in -// will be sorted by this function. -func SignatureForLabels(m Metric, labels ...LabelName) uint64 { - if len(labels) == 0 { - return emptyLabelSignature - } - - sort.Sort(LabelNames(labels)) - - sum := hashNew() - for _, label := range labels { - sum = hashAdd(sum, string(label)) - sum = hashAddByte(sum, SeparatorByte) - sum = hashAdd(sum, string(m[label])) - sum = hashAddByte(sum, SeparatorByte) - } - return sum -} - -// SignatureWithoutLabels works like LabelsToSignature but takes a Metric as -// parameter (rather than a label map) and excludes the labels with any of the -// specified LabelNames from the signature calculation. -func SignatureWithoutLabels(m Metric, labels map[LabelName]struct{}) uint64 { - if len(m) == 0 { - return emptyLabelSignature - } - - labelNames := make(LabelNames, 0, len(m)) - for labelName := range m { - if _, exclude := labels[labelName]; !exclude { - labelNames = append(labelNames, labelName) - } - } - if len(labelNames) == 0 { - return emptyLabelSignature - } - sort.Sort(labelNames) - - sum := hashNew() - for _, labelName := range labelNames { - sum = hashAdd(sum, string(labelName)) - sum = hashAddByte(sum, SeparatorByte) - sum = hashAdd(sum, string(m[labelName])) - sum = hashAddByte(sum, SeparatorByte) - } - return sum -} diff --git a/vendor/github.com/prometheus/common/model/silence.go b/vendor/github.com/prometheus/common/model/silence.go deleted file mode 100644 index bb99889d..00000000 --- a/vendor/github.com/prometheus/common/model/silence.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// 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 model - -import ( - "encoding/json" - "fmt" - "regexp" - "time" -) - -// Matcher describes a matches the value of a given label. -type Matcher struct { - Name LabelName `json:"name"` - Value string `json:"value"` - IsRegex bool `json:"isRegex"` -} - -func (m *Matcher) UnmarshalJSON(b []byte) error { - type plain Matcher - if err := json.Unmarshal(b, (*plain)(m)); err != nil { - return err - } - - if len(m.Name) == 0 { - return fmt.Errorf("label name in matcher must not be empty") - } - if m.IsRegex { - if _, err := regexp.Compile(m.Value); err != nil { - return err - } - } - return nil -} - -// Validate returns true iff all fields of the matcher have valid values. -func (m *Matcher) Validate() error { - if !m.Name.IsValid() { - return fmt.Errorf("invalid name %q", m.Name) - } - if m.IsRegex { - if _, err := regexp.Compile(m.Value); err != nil { - return fmt.Errorf("invalid regular expression %q", m.Value) - } - } else if !LabelValue(m.Value).IsValid() || len(m.Value) == 0 { - return fmt.Errorf("invalid value %q", m.Value) - } - return nil -} - -// Silence defines the representation of a silence definition in the Prometheus -// eco-system. -type Silence struct { - ID uint64 `json:"id,omitempty"` - - Matchers []*Matcher `json:"matchers"` - - StartsAt time.Time `json:"startsAt"` - EndsAt time.Time `json:"endsAt"` - - CreatedAt time.Time `json:"createdAt,omitempty"` - CreatedBy string `json:"createdBy"` - Comment string `json:"comment,omitempty"` -} - -// Validate returns true iff all fields of the silence have valid values. -func (s *Silence) Validate() error { - if len(s.Matchers) == 0 { - return fmt.Errorf("at least one matcher required") - } - for _, m := range s.Matchers { - if err := m.Validate(); err != nil { - return fmt.Errorf("invalid matcher: %s", err) - } - } - if s.StartsAt.IsZero() { - return fmt.Errorf("start time missing") - } - if s.EndsAt.IsZero() { - return fmt.Errorf("end time missing") - } - if s.EndsAt.Before(s.StartsAt) { - return fmt.Errorf("start time must be before end time") - } - if s.CreatedBy == "" { - return fmt.Errorf("creator information missing") - } - if s.Comment == "" { - return fmt.Errorf("comment missing") - } - if s.CreatedAt.IsZero() { - return fmt.Errorf("creation timestamp missing") - } - return nil -} diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go deleted file mode 100644 index 7b0064fd..00000000 --- a/vendor/github.com/prometheus/common/model/time.go +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "fmt" - "math" - "regexp" - "strconv" - "strings" - "time" -) - -const ( - // MinimumTick is the minimum supported time resolution. This has to be - // at least time.Second in order for the code below to work. - minimumTick = time.Millisecond - // second is the Time duration equivalent to one second. - second = int64(time.Second / minimumTick) - // The number of nanoseconds per minimum tick. - nanosPerTick = int64(minimumTick / time.Nanosecond) - - // Earliest is the earliest Time representable. Handy for - // initializing a high watermark. - Earliest = Time(math.MinInt64) - // Latest is the latest Time representable. Handy for initializing - // a low watermark. - Latest = Time(math.MaxInt64) -) - -// Time is the number of milliseconds since the epoch -// (1970-01-01 00:00 UTC) excluding leap seconds. -type Time int64 - -// Interval describes an interval between two timestamps. -type Interval struct { - Start, End Time -} - -// Now returns the current time as a Time. -func Now() Time { - return TimeFromUnixNano(time.Now().UnixNano()) -} - -// TimeFromUnix returns the Time equivalent to the Unix Time t -// provided in seconds. -func TimeFromUnix(t int64) Time { - return Time(t * second) -} - -// TimeFromUnixNano returns the Time equivalent to the Unix Time -// t provided in nanoseconds. -func TimeFromUnixNano(t int64) Time { - return Time(t / nanosPerTick) -} - -// Equal reports whether two Times represent the same instant. -func (t Time) Equal(o Time) bool { - return t == o -} - -// Before reports whether the Time t is before o. -func (t Time) Before(o Time) bool { - return t < o -} - -// After reports whether the Time t is after o. -func (t Time) After(o Time) bool { - return t > o -} - -// Add returns the Time t + d. -func (t Time) Add(d time.Duration) Time { - return t + Time(d/minimumTick) -} - -// Sub returns the Duration t - o. -func (t Time) Sub(o Time) time.Duration { - return time.Duration(t-o) * minimumTick -} - -// Time returns the time.Time representation of t. -func (t Time) Time() time.Time { - return time.Unix(int64(t)/second, (int64(t)%second)*nanosPerTick) -} - -// Unix returns t as a Unix time, the number of seconds elapsed -// since January 1, 1970 UTC. -func (t Time) Unix() int64 { - return int64(t) / second -} - -// UnixNano returns t as a Unix time, the number of nanoseconds elapsed -// since January 1, 1970 UTC. -func (t Time) UnixNano() int64 { - return int64(t) * nanosPerTick -} - -// The number of digits after the dot. -var dotPrecision = int(math.Log10(float64(second))) - -// String returns a string representation of the Time. -func (t Time) String() string { - return strconv.FormatFloat(float64(t)/float64(second), 'f', -1, 64) -} - -// MarshalJSON implements the json.Marshaler interface. -func (t Time) MarshalJSON() ([]byte, error) { - return []byte(t.String()), nil -} - -// UnmarshalJSON implements the json.Unmarshaler interface. -func (t *Time) UnmarshalJSON(b []byte) error { - p := strings.Split(string(b), ".") - switch len(p) { - case 1: - v, err := strconv.ParseInt(string(p[0]), 10, 64) - if err != nil { - return err - } - *t = Time(v * second) - - case 2: - v, err := strconv.ParseInt(string(p[0]), 10, 64) - if err != nil { - return err - } - v *= second - - prec := dotPrecision - len(p[1]) - if prec < 0 { - p[1] = p[1][:dotPrecision] - } else if prec > 0 { - p[1] = p[1] + strings.Repeat("0", prec) - } - - va, err := strconv.ParseInt(p[1], 10, 32) - if err != nil { - return err - } - - // If the value was something like -0.1 the negative is lost in the - // parsing because of the leading zero, this ensures that we capture it. - if len(p[0]) > 0 && p[0][0] == '-' && v+va > 0 { - *t = Time(v+va) * -1 - } else { - *t = Time(v + va) - } - - default: - return fmt.Errorf("invalid time %q", string(b)) - } - return nil -} - -// Duration wraps time.Duration. It is used to parse the custom duration format -// from YAML. -// This type should not propagate beyond the scope of input/output processing. -type Duration time.Duration - -// Set implements pflag/flag.Value -func (d *Duration) Set(s string) error { - var err error - *d, err = ParseDuration(s) - return err -} - -// Type implements pflag.Value -func (d *Duration) Type() string { - return "duration" -} - -var durationRE = regexp.MustCompile("^([0-9]+)(y|w|d|h|m|s|ms)$") - -// ParseDuration parses a string into a time.Duration, assuming that a year -// always has 365d, a week always has 7d, and a day always has 24h. -func ParseDuration(durationStr string) (Duration, error) { - matches := durationRE.FindStringSubmatch(durationStr) - if len(matches) != 3 { - return 0, fmt.Errorf("not a valid duration string: %q", durationStr) - } - var ( - n, _ = strconv.Atoi(matches[1]) - dur = time.Duration(n) * time.Millisecond - ) - switch unit := matches[2]; unit { - case "y": - dur *= 1000 * 60 * 60 * 24 * 365 - case "w": - dur *= 1000 * 60 * 60 * 24 * 7 - case "d": - dur *= 1000 * 60 * 60 * 24 - case "h": - dur *= 1000 * 60 * 60 - case "m": - dur *= 1000 * 60 - case "s": - dur *= 1000 - case "ms": - // Value already correct - default: - return 0, fmt.Errorf("invalid time unit in duration string: %q", unit) - } - return Duration(dur), nil -} - -func (d Duration) String() string { - var ( - ms = int64(time.Duration(d) / time.Millisecond) - unit = "ms" - ) - if ms == 0 { - return "0s" - } - factors := map[string]int64{ - "y": 1000 * 60 * 60 * 24 * 365, - "w": 1000 * 60 * 60 * 24 * 7, - "d": 1000 * 60 * 60 * 24, - "h": 1000 * 60 * 60, - "m": 1000 * 60, - "s": 1000, - "ms": 1, - } - - switch int64(0) { - case ms % factors["y"]: - unit = "y" - case ms % factors["w"]: - unit = "w" - case ms % factors["d"]: - unit = "d" - case ms % factors["h"]: - unit = "h" - case ms % factors["m"]: - unit = "m" - case ms % factors["s"]: - unit = "s" - } - return fmt.Sprintf("%v%v", ms/factors[unit], unit) -} - -// MarshalYAML implements the yaml.Marshaler interface. -func (d Duration) MarshalYAML() (interface{}, error) { - return d.String(), nil -} - -// UnmarshalYAML implements the yaml.Unmarshaler interface. -func (d *Duration) UnmarshalYAML(unmarshal func(interface{}) error) error { - var s string - if err := unmarshal(&s); err != nil { - return err - } - dur, err := ParseDuration(s) - if err != nil { - return err - } - *d = dur - return nil -} diff --git a/vendor/github.com/prometheus/common/model/value.go b/vendor/github.com/prometheus/common/model/value.go deleted file mode 100644 index c9d8fb1a..00000000 --- a/vendor/github.com/prometheus/common/model/value.go +++ /dev/null @@ -1,416 +0,0 @@ -// Copyright 2013 The Prometheus Authors -// 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 model - -import ( - "encoding/json" - "fmt" - "math" - "sort" - "strconv" - "strings" -) - -var ( - // ZeroSamplePair is the pseudo zero-value of SamplePair used to signal a - // non-existing sample pair. It is a SamplePair with timestamp Earliest and - // value 0.0. Note that the natural zero value of SamplePair has a timestamp - // of 0, which is possible to appear in a real SamplePair and thus not - // suitable to signal a non-existing SamplePair. - ZeroSamplePair = SamplePair{Timestamp: Earliest} - - // ZeroSample is the pseudo zero-value of Sample used to signal a - // non-existing sample. It is a Sample with timestamp Earliest, value 0.0, - // and metric nil. Note that the natural zero value of Sample has a timestamp - // of 0, which is possible to appear in a real Sample and thus not suitable - // to signal a non-existing Sample. - ZeroSample = Sample{Timestamp: Earliest} -) - -// A SampleValue is a representation of a value for a given sample at a given -// time. -type SampleValue float64 - -// MarshalJSON implements json.Marshaler. -func (v SampleValue) MarshalJSON() ([]byte, error) { - return json.Marshal(v.String()) -} - -// UnmarshalJSON implements json.Unmarshaler. -func (v *SampleValue) UnmarshalJSON(b []byte) error { - if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' { - return fmt.Errorf("sample value must be a quoted string") - } - f, err := strconv.ParseFloat(string(b[1:len(b)-1]), 64) - if err != nil { - return err - } - *v = SampleValue(f) - return nil -} - -// Equal returns true if the value of v and o is equal or if both are NaN. Note -// that v==o is false if both are NaN. If you want the conventional float -// behavior, use == to compare two SampleValues. -func (v SampleValue) Equal(o SampleValue) bool { - if v == o { - return true - } - return math.IsNaN(float64(v)) && math.IsNaN(float64(o)) -} - -func (v SampleValue) String() string { - return strconv.FormatFloat(float64(v), 'f', -1, 64) -} - -// SamplePair pairs a SampleValue with a Timestamp. -type SamplePair struct { - Timestamp Time - Value SampleValue -} - -// MarshalJSON implements json.Marshaler. -func (s SamplePair) MarshalJSON() ([]byte, error) { - t, err := json.Marshal(s.Timestamp) - if err != nil { - return nil, err - } - v, err := json.Marshal(s.Value) - if err != nil { - return nil, err - } - return []byte(fmt.Sprintf("[%s,%s]", t, v)), nil -} - -// UnmarshalJSON implements json.Unmarshaler. -func (s *SamplePair) UnmarshalJSON(b []byte) error { - v := [...]json.Unmarshaler{&s.Timestamp, &s.Value} - return json.Unmarshal(b, &v) -} - -// Equal returns true if this SamplePair and o have equal Values and equal -// Timestamps. The semantics of Value equality is defined by SampleValue.Equal. -func (s *SamplePair) Equal(o *SamplePair) bool { - return s == o || (s.Value.Equal(o.Value) && s.Timestamp.Equal(o.Timestamp)) -} - -func (s SamplePair) String() string { - return fmt.Sprintf("%s @[%s]", s.Value, s.Timestamp) -} - -// Sample is a sample pair associated with a metric. -type Sample struct { - Metric Metric `json:"metric"` - Value SampleValue `json:"value"` - Timestamp Time `json:"timestamp"` -} - -// Equal compares first the metrics, then the timestamp, then the value. The -// semantics of value equality is defined by SampleValue.Equal. -func (s *Sample) Equal(o *Sample) bool { - if s == o { - return true - } - - if !s.Metric.Equal(o.Metric) { - return false - } - if !s.Timestamp.Equal(o.Timestamp) { - return false - } - - return s.Value.Equal(o.Value) -} - -func (s Sample) String() string { - return fmt.Sprintf("%s => %s", s.Metric, SamplePair{ - Timestamp: s.Timestamp, - Value: s.Value, - }) -} - -// MarshalJSON implements json.Marshaler. -func (s Sample) MarshalJSON() ([]byte, error) { - v := struct { - Metric Metric `json:"metric"` - Value SamplePair `json:"value"` - }{ - Metric: s.Metric, - Value: SamplePair{ - Timestamp: s.Timestamp, - Value: s.Value, - }, - } - - return json.Marshal(&v) -} - -// UnmarshalJSON implements json.Unmarshaler. -func (s *Sample) UnmarshalJSON(b []byte) error { - v := struct { - Metric Metric `json:"metric"` - Value SamplePair `json:"value"` - }{ - Metric: s.Metric, - Value: SamplePair{ - Timestamp: s.Timestamp, - Value: s.Value, - }, - } - - if err := json.Unmarshal(b, &v); err != nil { - return err - } - - s.Metric = v.Metric - s.Timestamp = v.Value.Timestamp - s.Value = v.Value.Value - - return nil -} - -// Samples is a sortable Sample slice. It implements sort.Interface. -type Samples []*Sample - -func (s Samples) Len() int { - return len(s) -} - -// Less compares first the metrics, then the timestamp. -func (s Samples) Less(i, j int) bool { - switch { - case s[i].Metric.Before(s[j].Metric): - return true - case s[j].Metric.Before(s[i].Metric): - return false - case s[i].Timestamp.Before(s[j].Timestamp): - return true - default: - return false - } -} - -func (s Samples) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -// Equal compares two sets of samples and returns true if they are equal. -func (s Samples) Equal(o Samples) bool { - if len(s) != len(o) { - return false - } - - for i, sample := range s { - if !sample.Equal(o[i]) { - return false - } - } - return true -} - -// SampleStream is a stream of Values belonging to an attached COWMetric. -type SampleStream struct { - Metric Metric `json:"metric"` - Values []SamplePair `json:"values"` -} - -func (ss SampleStream) String() string { - vals := make([]string, len(ss.Values)) - for i, v := range ss.Values { - vals[i] = v.String() - } - return fmt.Sprintf("%s =>\n%s", ss.Metric, strings.Join(vals, "\n")) -} - -// Value is a generic interface for values resulting from a query evaluation. -type Value interface { - Type() ValueType - String() string -} - -func (Matrix) Type() ValueType { return ValMatrix } -func (Vector) Type() ValueType { return ValVector } -func (*Scalar) Type() ValueType { return ValScalar } -func (*String) Type() ValueType { return ValString } - -type ValueType int - -const ( - ValNone ValueType = iota - ValScalar - ValVector - ValMatrix - ValString -) - -// MarshalJSON implements json.Marshaler. -func (et ValueType) MarshalJSON() ([]byte, error) { - return json.Marshal(et.String()) -} - -func (et *ValueType) UnmarshalJSON(b []byte) error { - var s string - if err := json.Unmarshal(b, &s); err != nil { - return err - } - switch s { - case "": - *et = ValNone - case "scalar": - *et = ValScalar - case "vector": - *et = ValVector - case "matrix": - *et = ValMatrix - case "string": - *et = ValString - default: - return fmt.Errorf("unknown value type %q", s) - } - return nil -} - -func (e ValueType) String() string { - switch e { - case ValNone: - return "" - case ValScalar: - return "scalar" - case ValVector: - return "vector" - case ValMatrix: - return "matrix" - case ValString: - return "string" - } - panic("ValueType.String: unhandled value type") -} - -// Scalar is a scalar value evaluated at the set timestamp. -type Scalar struct { - Value SampleValue `json:"value"` - Timestamp Time `json:"timestamp"` -} - -func (s Scalar) String() string { - return fmt.Sprintf("scalar: %v @[%v]", s.Value, s.Timestamp) -} - -// MarshalJSON implements json.Marshaler. -func (s Scalar) MarshalJSON() ([]byte, error) { - v := strconv.FormatFloat(float64(s.Value), 'f', -1, 64) - return json.Marshal([...]interface{}{s.Timestamp, string(v)}) -} - -// UnmarshalJSON implements json.Unmarshaler. -func (s *Scalar) UnmarshalJSON(b []byte) error { - var f string - v := [...]interface{}{&s.Timestamp, &f} - - if err := json.Unmarshal(b, &v); err != nil { - return err - } - - value, err := strconv.ParseFloat(f, 64) - if err != nil { - return fmt.Errorf("error parsing sample value: %s", err) - } - s.Value = SampleValue(value) - return nil -} - -// String is a string value evaluated at the set timestamp. -type String struct { - Value string `json:"value"` - Timestamp Time `json:"timestamp"` -} - -func (s *String) String() string { - return s.Value -} - -// MarshalJSON implements json.Marshaler. -func (s String) MarshalJSON() ([]byte, error) { - return json.Marshal([]interface{}{s.Timestamp, s.Value}) -} - -// UnmarshalJSON implements json.Unmarshaler. -func (s *String) UnmarshalJSON(b []byte) error { - v := [...]interface{}{&s.Timestamp, &s.Value} - return json.Unmarshal(b, &v) -} - -// Vector is basically only an alias for Samples, but the -// contract is that in a Vector, all Samples have the same timestamp. -type Vector []*Sample - -func (vec Vector) String() string { - entries := make([]string, len(vec)) - for i, s := range vec { - entries[i] = s.String() - } - return strings.Join(entries, "\n") -} - -func (vec Vector) Len() int { return len(vec) } -func (vec Vector) Swap(i, j int) { vec[i], vec[j] = vec[j], vec[i] } - -// Less compares first the metrics, then the timestamp. -func (vec Vector) Less(i, j int) bool { - switch { - case vec[i].Metric.Before(vec[j].Metric): - return true - case vec[j].Metric.Before(vec[i].Metric): - return false - case vec[i].Timestamp.Before(vec[j].Timestamp): - return true - default: - return false - } -} - -// Equal compares two sets of samples and returns true if they are equal. -func (vec Vector) Equal(o Vector) bool { - if len(vec) != len(o) { - return false - } - - for i, sample := range vec { - if !sample.Equal(o[i]) { - return false - } - } - return true -} - -// Matrix is a list of time series. -type Matrix []*SampleStream - -func (m Matrix) Len() int { return len(m) } -func (m Matrix) Less(i, j int) bool { return m[i].Metric.Before(m[j].Metric) } -func (m Matrix) Swap(i, j int) { m[i], m[j] = m[j], m[i] } - -func (mat Matrix) String() string { - matCp := make(Matrix, len(mat)) - copy(matCp, mat) - sort.Sort(matCp) - - strs := make([]string, len(matCp)) - - for i, ss := range matCp { - strs[i] = ss.String() - } - - return strings.Join(strs, "\n") -} diff --git a/vendor/github.com/prometheus/common/version/info.go b/vendor/github.com/prometheus/common/version/info.go deleted file mode 100644 index 84489a51..00000000 --- a/vendor/github.com/prometheus/common/version/info.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2016 The Prometheus Authors -// 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 version - -import ( - "bytes" - "fmt" - "runtime" - "strings" - "text/template" - - "github.com/prometheus/client_golang/prometheus" -) - -// Build information. Populated at build-time. -var ( - Version string - Revision string - Branch string - BuildUser string - BuildDate string - GoVersion = runtime.Version() -) - -// NewCollector returns a collector which exports metrics about current version information. -func NewCollector(program string) *prometheus.GaugeVec { - buildInfo := prometheus.NewGaugeVec( - prometheus.GaugeOpts{ - Namespace: program, - Name: "build_info", - Help: fmt.Sprintf( - "A metric with a constant '1' value labeled by version, revision, branch, and goversion from which %s was built.", - program, - ), - }, - []string{"version", "revision", "branch", "goversion"}, - ) - buildInfo.WithLabelValues(Version, Revision, Branch, GoVersion).Set(1) - return buildInfo -} - -// versionInfoTmpl contains the template used by Info. -var versionInfoTmpl = ` -{{.program}}, version {{.version}} (branch: {{.branch}}, revision: {{.revision}}) - build user: {{.buildUser}} - build date: {{.buildDate}} - go version: {{.goVersion}} -` - -// Print returns version information. -func Print(program string) string { - m := map[string]string{ - "program": program, - "version": Version, - "revision": Revision, - "branch": Branch, - "buildUser": BuildUser, - "buildDate": BuildDate, - "goVersion": GoVersion, - } - t := template.Must(template.New("version").Parse(versionInfoTmpl)) - - var buf bytes.Buffer - if err := t.ExecuteTemplate(&buf, "version", m); err != nil { - panic(err) - } - return strings.TrimSpace(buf.String()) -} - -// Info returns version, branch and revision information. -func Info() string { - return fmt.Sprintf("(version=%s, branch=%s, revision=%s)", Version, Branch, Revision) -} - -// BuildContext returns goVersion, buildUser and buildDate information. -func BuildContext() string { - return fmt.Sprintf("(go=%s, user=%s, date=%s)", GoVersion, BuildUser, BuildDate) -} diff --git a/vendor/github.com/prometheus/procfs/CONTRIBUTING.md b/vendor/github.com/prometheus/procfs/CONTRIBUTING.md deleted file mode 100644 index 943de761..00000000 --- a/vendor/github.com/prometheus/procfs/CONTRIBUTING.md +++ /dev/null @@ -1,121 +0,0 @@ -# Contributing - -Prometheus uses GitHub to manage reviews of pull requests. - -* If you are a new contributor see: [Steps to Contribute](#steps-to-contribute) - -* If you have a trivial fix or improvement, go ahead and create a pull request, - addressing (with `@...`) a suitable maintainer of this repository (see - [MAINTAINERS.md](MAINTAINERS.md)) in the description of the pull request. - -* If you plan to do something more involved, first discuss your ideas - on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers). - This will avoid unnecessary work and surely give you and us a good deal - of inspiration. Also please see our [non-goals issue](https://github.com/prometheus/docs/issues/149) on areas that the Prometheus community doesn't plan to work on. - -* Relevant coding style guidelines are the [Go Code Review - Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments) - and the _Formatting and style_ section of Peter Bourgon's [Go: Best - Practices for Production - Environments](https://peter.bourgon.org/go-in-production/#formatting-and-style). - -* Be sure to sign off on the [DCO](https://github.com/probot/dco#how-it-works) - -## Steps to Contribute - -Should you wish to work on an issue, please claim it first by commenting on the GitHub issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue. - -Please check the [`help-wanted`](https://github.com/prometheus/procfs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) label to find issues that are good for getting started. If you have questions about one of the issues, with or without the tag, please comment on them and one of the maintainers will clarify it. For a quicker response, contact us over [IRC](https://prometheus.io/community). - -For quickly compiling and testing your changes do: -``` -make test # Make sure all the tests pass before you commit and push :) -``` - -We use [`golangci-lint`](https://github.com/golangci/golangci-lint) for linting the code. If it reports an issue and you think that the warning needs to be disregarded or is a false-positive, you can add a special comment `//nolint:linter1[,linter2,...]` before the offending line. Use this sparingly though, fixing the code to comply with the linter's recommendation is in general the preferred course of action. - -## Pull Request Checklist - -* Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn't merge cleanly with master you may be asked to rebase your changes. - -* Commits should be as small as possible, while ensuring that each commit is correct independently (i.e., each commit should compile and pass tests). - -* If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment, or you can ask for a review on IRC channel [#prometheus](https://webchat.freenode.net/?channels=#prometheus) on irc.freenode.net (for the easiest start, [join via Riot](https://riot.im/app/#/room/#prometheus:matrix.org)). - -* Add tests relevant to the fixed bug or new feature. - -## Dependency management - -The Prometheus project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.12 or greater installed. - -All dependencies are vendored in the `vendor/` directory. - -To add or update a new dependency, use the `go get` command: - -```bash -# Pick the latest tagged release. -go get example.com/some/module/pkg - -# Pick a specific version. -go get example.com/some/module/pkg@vX.Y.Z -``` - -Tidy up the `go.mod` and `go.sum` files and copy the new/updated dependency to the `vendor/` directory: - - -```bash -# The GO111MODULE variable can be omitted when the code isn't located in GOPATH. -GO111MODULE=on go mod tidy - -GO111MODULE=on go mod vendor -``` - -You have to commit the changes to `go.mod`, `go.sum` and the `vendor/` directory before submitting the pull request. - - -## API Implementation Guidelines - -### Naming and Documentation - -Public functions and structs should normally be named according to the file(s) being read and parsed. For example, -the `fs.BuddyInfo()` function reads the file `/proc/buddyinfo`. In addition, the godoc for each public function -should contain the path to the file(s) being read and a URL of the linux kernel documentation describing the file(s). - -### Reading vs. Parsing - -Most functionality in this library consists of reading files and then parsing the text into structured data. In most -cases reading and parsing should be separated into different functions/methods with a public `fs.Thing()` method and -a private `parseThing(r Reader)` function. This provides a logical separation and allows parsing to be tested -directly without the need to read from the filesystem. Using a `Reader` argument is preferred over other data types -such as `string` or `*File` because it provides the most flexibility regarding the data source. When a set of files -in a directory needs to be parsed, then a `path` string parameter to the parse function can be used instead. - -### /proc and /sys filesystem I/O - -The `proc` and `sys` filesystems are pseudo file systems and work a bit differently from standard disk I/O. -Many of the files are changing continuously and the data being read can in some cases change between subsequent -reads in the same file. Also, most of the files are relatively small (less than a few KBs), and system calls -to the `stat` function will often return the wrong size. Therefore, for most files it's recommended to read the -full file in a single operation using an internal utility function called `util.ReadFileNoStat`. -This function is similar to `ioutil.ReadFile`, but it avoids the system call to `stat` to get the current size of -the file. - -Note that parsing the file's contents can still be performed one line at a time. This is done by first reading -the full file, and then using a scanner on the `[]byte` or `string` containing the data. - -``` - data, err := util.ReadFileNoStat("/proc/cpuinfo") - if err != nil { - return err - } - reader := bytes.NewReader(data) - scanner := bufio.NewScanner(reader) -``` - -The `/sys` filesystem contains many very small files which contain only a single numeric or text value. These files -can be read using an internal function called `util.SysReadFile` which is similar to `ioutil.ReadFile` but does -not bother to check the size of the file before reading. -``` - data, err := util.SysReadFile("/sys/class/power_supply/BAT0/capacity") -``` - diff --git a/vendor/github.com/prometheus/procfs/LICENSE b/vendor/github.com/prometheus/procfs/LICENSE deleted file mode 100644 index 261eeb9e..00000000 --- a/vendor/github.com/prometheus/procfs/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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] - - 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. diff --git a/vendor/github.com/prometheus/procfs/MAINTAINERS.md b/vendor/github.com/prometheus/procfs/MAINTAINERS.md deleted file mode 100644 index 56ba67d3..00000000 --- a/vendor/github.com/prometheus/procfs/MAINTAINERS.md +++ /dev/null @@ -1,2 +0,0 @@ -* Johannes 'fish' Ziemke @discordianfish -* Paul Gier @pgier diff --git a/vendor/github.com/prometheus/procfs/Makefile b/vendor/github.com/prometheus/procfs/Makefile deleted file mode 100644 index 616a0d25..00000000 --- a/vendor/github.com/prometheus/procfs/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright 2018 The Prometheus Authors -# 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. - -include Makefile.common - -%/.unpacked: %.ttar - @echo ">> extracting fixtures" - ./ttar -C $(dir $*) -x -f $*.ttar - touch $@ - -update_fixtures: - rm -vf fixtures/.unpacked - ./ttar -c -f fixtures.ttar fixtures/ - -.PHONY: build -build: - -.PHONY: test -test: fixtures/.unpacked common-test diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common deleted file mode 100644 index d7aea1b8..00000000 --- a/vendor/github.com/prometheus/procfs/Makefile.common +++ /dev/null @@ -1,275 +0,0 @@ -# Copyright 2018 The Prometheus Authors -# 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. - - -# A common Makefile that includes rules to be reused in different prometheus projects. -# !!! Open PRs only against the prometheus/prometheus/Makefile.common repository! - -# Example usage : -# Create the main Makefile in the root project directory. -# include Makefile.common -# customTarget: -# @echo ">> Running customTarget" -# - -# Ensure GOBIN is not set during build so that promu is installed to the correct path -unexport GOBIN - -GO ?= go -GOFMT ?= $(GO)fmt -FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH))) -GOOPTS ?= -GOHOSTOS ?= $(shell $(GO) env GOHOSTOS) -GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH) - -GO_VERSION ?= $(shell $(GO) version) -GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION)) -PRE_GO_111 ?= $(shell echo $(GO_VERSION_NUMBER) | grep -E 'go1\.(10|[0-9])\.') - -GOVENDOR := -GO111MODULE := -ifeq (, $(PRE_GO_111)) - ifneq (,$(wildcard go.mod)) - # Enforce Go modules support just in case the directory is inside GOPATH (and for Travis CI). - GO111MODULE := on - - ifneq (,$(wildcard vendor)) - # Always use the local vendor/ directory to satisfy the dependencies. - GOOPTS := $(GOOPTS) -mod=vendor - endif - endif -else - ifneq (,$(wildcard go.mod)) - ifneq (,$(wildcard vendor)) -$(warning This repository requires Go >= 1.11 because of Go modules) -$(warning Some recipes may not work as expected as the current Go runtime is '$(GO_VERSION_NUMBER)') - endif - else - # This repository isn't using Go modules (yet). - GOVENDOR := $(FIRST_GOPATH)/bin/govendor - endif -endif -PROMU := $(FIRST_GOPATH)/bin/promu -pkgs = ./... - -ifeq (arm, $(GOHOSTARCH)) - GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM) - GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM) -else - GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH) -endif - -PROMU_VERSION ?= 0.4.0 -PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz - -GOLANGCI_LINT := -GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.16.0 -# golangci-lint only supports linux, darwin and windows platforms on i386/amd64. -# windows isn't included here because of the path separator being different. -ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) - ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) - GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint - endif -endif - -PREFIX ?= $(shell pwd) -BIN_DIR ?= $(shell pwd) -DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) -DOCKERFILE_PATH ?= ./ -DOCKER_REPO ?= prom - -DOCKER_ARCHS ?= amd64 - -BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) -PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) -TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS)) - -ifeq ($(GOHOSTARCH),amd64) - ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows)) - # Only supported on amd64 - test-flags := -race - endif -endif - -# This rule is used to forward a target like "build" to "common-build". This -# allows a new "build" target to be defined in a Makefile which includes this -# one and override "common-build" without override warnings. -%: common-% ; - -.PHONY: common-all -common-all: precheck style check_license lint unused build test - -.PHONY: common-style -common-style: - @echo ">> checking code style" - @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ - if [ -n "$${fmtRes}" ]; then \ - echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ - echo "Please ensure you are using $$($(GO) version) for formatting code."; \ - exit 1; \ - fi - -.PHONY: common-check_license -common-check_license: - @echo ">> checking license header" - @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ - awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ - done); \ - if [ -n "$${licRes}" ]; then \ - echo "license header checking failed:"; echo "$${licRes}"; \ - exit 1; \ - fi - -.PHONY: common-deps -common-deps: - @echo ">> getting dependencies" -ifdef GO111MODULE - GO111MODULE=$(GO111MODULE) $(GO) mod download -else - $(GO) get $(GOOPTS) -t ./... -endif - -.PHONY: common-test-short -common-test-short: - @echo ">> running short tests" - GO111MODULE=$(GO111MODULE) $(GO) test -short $(GOOPTS) $(pkgs) - -.PHONY: common-test -common-test: - @echo ">> running all tests" - GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs) - -.PHONY: common-format -common-format: - @echo ">> formatting code" - GO111MODULE=$(GO111MODULE) $(GO) fmt $(pkgs) - -.PHONY: common-vet -common-vet: - @echo ">> vetting code" - GO111MODULE=$(GO111MODULE) $(GO) vet $(GOOPTS) $(pkgs) - -.PHONY: common-lint -common-lint: $(GOLANGCI_LINT) -ifdef GOLANGCI_LINT - @echo ">> running golangci-lint" -ifdef GO111MODULE -# 'go list' needs to be executed before staticcheck to prepopulate the modules cache. -# Otherwise staticcheck might fail randomly for some reason not yet explained. - GO111MODULE=$(GO111MODULE) $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null - GO111MODULE=$(GO111MODULE) $(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs) -else - $(GOLANGCI_LINT) run $(pkgs) -endif -endif - -# For backward-compatibility. -.PHONY: common-staticcheck -common-staticcheck: lint - -.PHONY: common-unused -common-unused: $(GOVENDOR) -ifdef GOVENDOR - @echo ">> running check for unused packages" - @$(GOVENDOR) list +unused | grep . && exit 1 || echo 'No unused packages' -else -ifdef GO111MODULE - @echo ">> running check for unused/missing packages in go.mod" - GO111MODULE=$(GO111MODULE) $(GO) mod tidy -ifeq (,$(wildcard vendor)) - @git diff --exit-code -- go.sum go.mod -else - @echo ">> running check for unused packages in vendor/" - GO111MODULE=$(GO111MODULE) $(GO) mod vendor - @git diff --exit-code -- go.sum go.mod vendor/ -endif -endif -endif - -.PHONY: common-build -common-build: promu - @echo ">> building binaries" - GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) - -.PHONY: common-tarball -common-tarball: promu - @echo ">> building release tarball" - $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) - -.PHONY: common-docker $(BUILD_DOCKER_ARCHS) -common-docker: $(BUILD_DOCKER_ARCHS) -$(BUILD_DOCKER_ARCHS): common-docker-%: - docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \ - --build-arg ARCH="$*" \ - --build-arg OS="linux" \ - $(DOCKERFILE_PATH) - -.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) -common-docker-publish: $(PUBLISH_DOCKER_ARCHS) -$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: - docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" - -.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS) -common-docker-tag-latest: $(TAG_DOCKER_ARCHS) -$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: - docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest" - -.PHONY: common-docker-manifest -common-docker-manifest: - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(DOCKER_IMAGE_TAG)) - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" - -.PHONY: promu -promu: $(PROMU) - -$(PROMU): - $(eval PROMU_TMP := $(shell mktemp -d)) - curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP) - mkdir -p $(FIRST_GOPATH)/bin - cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu - rm -r $(PROMU_TMP) - -.PHONY: proto -proto: - @echo ">> generating code from proto files" - @./scripts/genproto.sh - -ifdef GOLANGCI_LINT -$(GOLANGCI_LINT): - mkdir -p $(FIRST_GOPATH)/bin - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_LINT_VERSION)/install.sh \ - | sed -e '/install -d/d' \ - | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION) -endif - -ifdef GOVENDOR -.PHONY: $(GOVENDOR) -$(GOVENDOR): - GOOS= GOARCH= $(GO) get -u github.com/kardianos/govendor -endif - -.PHONY: precheck -precheck:: - -define PRECHECK_COMMAND_template = -precheck:: $(1)_precheck - -PRECHECK_COMMAND_$(1) ?= $(1) $$(strip $$(PRECHECK_OPTIONS_$(1))) -.PHONY: $(1)_precheck -$(1)_precheck: - @if ! $$(PRECHECK_COMMAND_$(1)) 1>/dev/null 2>&1; then \ - echo "Execution of '$$(PRECHECK_COMMAND_$(1))' command failed. Is $(1) installed?"; \ - exit 1; \ - fi -endef diff --git a/vendor/github.com/prometheus/procfs/NOTICE b/vendor/github.com/prometheus/procfs/NOTICE deleted file mode 100644 index 53c5e9aa..00000000 --- a/vendor/github.com/prometheus/procfs/NOTICE +++ /dev/null @@ -1,7 +0,0 @@ -procfs provides functions to retrieve system, kernel and process -metrics from the pseudo-filesystem proc. - -Copyright 2014-2015 The Prometheus Authors - -This product includes software developed at -SoundCloud Ltd. (http://soundcloud.com/). diff --git a/vendor/github.com/prometheus/procfs/README.md b/vendor/github.com/prometheus/procfs/README.md deleted file mode 100644 index 55d1e326..00000000 --- a/vendor/github.com/prometheus/procfs/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# procfs - -This package provides functions to retrieve system, kernel, and process -metrics from the pseudo-filesystems /proc and /sys. - -*WARNING*: This package is a work in progress. Its API may still break in -backwards-incompatible ways without warnings. Use it at your own risk. - -[![GoDoc](https://godoc.org/github.com/prometheus/procfs?status.png)](https://godoc.org/github.com/prometheus/procfs) -[![Build Status](https://travis-ci.org/prometheus/procfs.svg?branch=master)](https://travis-ci.org/prometheus/procfs) -[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs) - -## Usage - -The procfs library is organized by packages based on whether the gathered data is coming from -/proc, /sys, or both. Each package contains an `FS` type which represents the path to either /proc, -/sys, or both. For example, cpu statistics are gathered from -`/proc/stat` and are available via the root procfs package. First, the proc filesystem mount -point is initialized, and then the stat information is read. - -```go -fs, err := procfs.NewFS("/proc") -stats, err := fs.Stat() -``` - -Some sub-packages such as `blockdevice`, require access to both the proc and sys filesystems. - -```go - fs, err := blockdevice.NewFS("/proc", "/sys") - stats, err := fs.ProcDiskstats() -``` - -## Package Organization - -The packages in this project are organized according to (1) whether the data comes from the `/proc` or -`/sys` filesystem and (2) the type of information being retrieved. For example, most process information -can be gathered from the functions in the root `procfs` package. Information about block devices such as disk drives -is available in the `blockdevices` sub-package. - -## Building and Testing - -The procfs library is intended to be built as part of another application, so there are no distributable binaries. -However, most of the API includes unit tests which can be run with `make test`. - -### Updating Test Fixtures - -The procfs library includes a set of test fixtures which include many example files from -the `/proc` and `/sys` filesystems. These fixtures are included as a [ttar](https://github.com/ideaship/ttar) file -which is extracted automatically during testing. To add/update the test fixtures, first -ensure the `fixtures` directory is up to date by removing the existing directory and then -extracting the ttar file using `make fixtures/.unpacked` or just `make test`. - -```bash -rm -rf fixtures -make test -``` - -Next, make the required changes to the extracted files in the `fixtures` directory. When -the changes are complete, run `make update_fixtures` to create a new `fixtures.ttar` file -based on the updated `fixtures` directory. And finally, verify the changes using -`git diff fixtures.ttar`. diff --git a/vendor/github.com/prometheus/procfs/arp.go b/vendor/github.com/prometheus/procfs/arp.go deleted file mode 100644 index 916c9182..00000000 --- a/vendor/github.com/prometheus/procfs/arp.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "fmt" - "io/ioutil" - "net" - "strings" -) - -// ARPEntry contains a single row of the columnar data represented in -// /proc/net/arp. -type ARPEntry struct { - // IP address - IPAddr net.IP - // MAC address - HWAddr net.HardwareAddr - // Name of the device - Device string -} - -// GatherARPEntries retrieves all the ARP entries, parse the relevant columns, -// and then return a slice of ARPEntry's. -func (fs FS) GatherARPEntries() ([]ARPEntry, error) { - data, err := ioutil.ReadFile(fs.proc.Path("net/arp")) - if err != nil { - return nil, fmt.Errorf("error reading arp %s: %s", fs.proc.Path("net/arp"), err) - } - - return parseARPEntries(data) -} - -func parseARPEntries(data []byte) ([]ARPEntry, error) { - lines := strings.Split(string(data), "\n") - entries := make([]ARPEntry, 0) - var err error - const ( - expectedDataWidth = 6 - expectedHeaderWidth = 9 - ) - for _, line := range lines { - columns := strings.Fields(line) - width := len(columns) - - if width == expectedHeaderWidth || width == 0 { - continue - } else if width == expectedDataWidth { - entry, err := parseARPEntry(columns) - if err != nil { - return []ARPEntry{}, fmt.Errorf("failed to parse ARP entry: %s", err) - } - entries = append(entries, entry) - } else { - return []ARPEntry{}, fmt.Errorf("%d columns were detected, but %d were expected", width, expectedDataWidth) - } - - } - - return entries, err -} - -func parseARPEntry(columns []string) (ARPEntry, error) { - ip := net.ParseIP(columns[0]) - mac := net.HardwareAddr(columns[3]) - - entry := ARPEntry{ - IPAddr: ip, - HWAddr: mac, - Device: columns[5], - } - - return entry, nil -} diff --git a/vendor/github.com/prometheus/procfs/buddyinfo.go b/vendor/github.com/prometheus/procfs/buddyinfo.go deleted file mode 100644 index 10bd067a..00000000 --- a/vendor/github.com/prometheus/procfs/buddyinfo.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "fmt" - "io" - "os" - "strconv" - "strings" -) - -// A BuddyInfo is the details parsed from /proc/buddyinfo. -// The data is comprised of an array of free fragments of each size. -// The sizes are 2^n*PAGE_SIZE, where n is the array index. -type BuddyInfo struct { - Node string - Zone string - Sizes []float64 -} - -// BuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem. -func (fs FS) BuddyInfo() ([]BuddyInfo, error) { - file, err := os.Open(fs.proc.Path("buddyinfo")) - if err != nil { - return nil, err - } - defer file.Close() - - return parseBuddyInfo(file) -} - -func parseBuddyInfo(r io.Reader) ([]BuddyInfo, error) { - var ( - buddyInfo = []BuddyInfo{} - scanner = bufio.NewScanner(r) - bucketCount = -1 - ) - - for scanner.Scan() { - var err error - line := scanner.Text() - parts := strings.Fields(line) - - if len(parts) < 4 { - return nil, fmt.Errorf("invalid number of fields when parsing buddyinfo") - } - - node := strings.TrimRight(parts[1], ",") - zone := strings.TrimRight(parts[3], ",") - arraySize := len(parts[4:]) - - if bucketCount == -1 { - bucketCount = arraySize - } else { - if bucketCount != arraySize { - return nil, fmt.Errorf("mismatch in number of buddyinfo buckets, previous count %d, new count %d", bucketCount, arraySize) - } - } - - sizes := make([]float64, arraySize) - for i := 0; i < arraySize; i++ { - sizes[i], err = strconv.ParseFloat(parts[i+4], 64) - if err != nil { - return nil, fmt.Errorf("invalid value in buddyinfo: %s", err) - } - } - - buddyInfo = append(buddyInfo, BuddyInfo{node, zone, sizes}) - } - - return buddyInfo, scanner.Err() -} diff --git a/vendor/github.com/prometheus/procfs/cpuinfo.go b/vendor/github.com/prometheus/procfs/cpuinfo.go deleted file mode 100644 index 2e022155..00000000 --- a/vendor/github.com/prometheus/procfs/cpuinfo.go +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// CPUInfo contains general information about a system CPU found in /proc/cpuinfo -type CPUInfo struct { - Processor uint - VendorID string - CPUFamily string - Model string - ModelName string - Stepping string - Microcode string - CPUMHz float64 - CacheSize string - PhysicalID string - Siblings uint - CoreID string - CPUCores uint - APICID string - InitialAPICID string - FPU string - FPUException string - CPUIDLevel uint - WP string - Flags []string - Bugs []string - BogoMips float64 - CLFlushSize uint - CacheAlignment uint - AddressSizes string - PowerManagement string -} - -// CPUInfo returns information about current system CPUs. -// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -func (fs FS) CPUInfo() ([]CPUInfo, error) { - data, err := util.ReadFileNoStat(fs.proc.Path("cpuinfo")) - if err != nil { - return nil, err - } - return parseCPUInfo(data) -} - -// parseCPUInfo parses data from /proc/cpuinfo -func parseCPUInfo(info []byte) ([]CPUInfo, error) { - cpuinfo := []CPUInfo{} - i := -1 - scanner := bufio.NewScanner(bytes.NewReader(info)) - for scanner.Scan() { - line := scanner.Text() - if strings.TrimSpace(line) == "" { - continue - } - field := strings.SplitN(line, ": ", 2) - switch strings.TrimSpace(field[0]) { - case "processor": - cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor - i++ - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].Processor = uint(v) - case "vendor_id": - cpuinfo[i].VendorID = field[1] - case "cpu family": - cpuinfo[i].CPUFamily = field[1] - case "model": - cpuinfo[i].Model = field[1] - case "model name": - cpuinfo[i].ModelName = field[1] - case "stepping": - cpuinfo[i].Stepping = field[1] - case "microcode": - cpuinfo[i].Microcode = field[1] - case "cpu MHz": - v, err := strconv.ParseFloat(field[1], 64) - if err != nil { - return nil, err - } - cpuinfo[i].CPUMHz = v - case "cache size": - cpuinfo[i].CacheSize = field[1] - case "physical id": - cpuinfo[i].PhysicalID = field[1] - case "siblings": - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].Siblings = uint(v) - case "core id": - cpuinfo[i].CoreID = field[1] - case "cpu cores": - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].CPUCores = uint(v) - case "apicid": - cpuinfo[i].APICID = field[1] - case "initial apicid": - cpuinfo[i].InitialAPICID = field[1] - case "fpu": - cpuinfo[i].FPU = field[1] - case "fpu_exception": - cpuinfo[i].FPUException = field[1] - case "cpuid level": - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].CPUIDLevel = uint(v) - case "wp": - cpuinfo[i].WP = field[1] - case "flags": - cpuinfo[i].Flags = strings.Fields(field[1]) - case "bugs": - cpuinfo[i].Bugs = strings.Fields(field[1]) - case "bogomips": - v, err := strconv.ParseFloat(field[1], 64) - if err != nil { - return nil, err - } - cpuinfo[i].BogoMips = v - case "clflush size": - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].CLFlushSize = uint(v) - case "cache_alignment": - v, err := strconv.ParseUint(field[1], 0, 32) - if err != nil { - return nil, err - } - cpuinfo[i].CacheAlignment = uint(v) - case "address sizes": - cpuinfo[i].AddressSizes = field[1] - case "power management": - cpuinfo[i].PowerManagement = field[1] - } - } - return cpuinfo, nil - -} diff --git a/vendor/github.com/prometheus/procfs/crypto.go b/vendor/github.com/prometheus/procfs/crypto.go deleted file mode 100644 index 19d4041b..00000000 --- a/vendor/github.com/prometheus/procfs/crypto.go +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bytes" - "fmt" - "io/ioutil" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// Crypto holds info parsed from /proc/crypto. -type Crypto struct { - Alignmask *uint64 - Async bool - Blocksize *uint64 - Chunksize *uint64 - Ctxsize *uint64 - Digestsize *uint64 - Driver string - Geniv string - Internal string - Ivsize *uint64 - Maxauthsize *uint64 - MaxKeysize *uint64 - MinKeysize *uint64 - Module string - Name string - Priority *int64 - Refcnt *int64 - Seedsize *uint64 - Selftest string - Type string - Walksize *uint64 -} - -// Crypto parses an crypto-file (/proc/crypto) and returns a slice of -// structs containing the relevant info. More information available here: -// https://kernel.readthedocs.io/en/sphinx-samples/crypto-API.html -func (fs FS) Crypto() ([]Crypto, error) { - data, err := ioutil.ReadFile(fs.proc.Path("crypto")) - if err != nil { - return nil, fmt.Errorf("error parsing crypto %s: %s", fs.proc.Path("crypto"), err) - } - crypto, err := parseCrypto(data) - if err != nil { - return nil, fmt.Errorf("error parsing crypto %s: %s", fs.proc.Path("crypto"), err) - } - return crypto, nil -} - -func parseCrypto(cryptoData []byte) ([]Crypto, error) { - crypto := []Crypto{} - - cryptoBlocks := bytes.Split(cryptoData, []byte("\n\n")) - - for _, block := range cryptoBlocks { - var newCryptoElem Crypto - - lines := strings.Split(string(block), "\n") - for _, line := range lines { - if strings.TrimSpace(line) == "" || line[0] == ' ' { - continue - } - fields := strings.Split(line, ":") - key := strings.TrimSpace(fields[0]) - value := strings.TrimSpace(fields[1]) - vp := util.NewValueParser(value) - - switch strings.TrimSpace(key) { - case "async": - b, err := strconv.ParseBool(value) - if err == nil { - newCryptoElem.Async = b - } - case "blocksize": - newCryptoElem.Blocksize = vp.PUInt64() - case "chunksize": - newCryptoElem.Chunksize = vp.PUInt64() - case "digestsize": - newCryptoElem.Digestsize = vp.PUInt64() - case "driver": - newCryptoElem.Driver = value - case "geniv": - newCryptoElem.Geniv = value - case "internal": - newCryptoElem.Internal = value - case "ivsize": - newCryptoElem.Ivsize = vp.PUInt64() - case "maxauthsize": - newCryptoElem.Maxauthsize = vp.PUInt64() - case "max keysize": - newCryptoElem.MaxKeysize = vp.PUInt64() - case "min keysize": - newCryptoElem.MinKeysize = vp.PUInt64() - case "module": - newCryptoElem.Module = value - case "name": - newCryptoElem.Name = value - case "priority": - newCryptoElem.Priority = vp.PInt64() - case "refcnt": - newCryptoElem.Refcnt = vp.PInt64() - case "seedsize": - newCryptoElem.Seedsize = vp.PUInt64() - case "selftest": - newCryptoElem.Selftest = value - case "type": - newCryptoElem.Type = value - case "walksize": - newCryptoElem.Walksize = vp.PUInt64() - } - } - crypto = append(crypto, newCryptoElem) - } - return crypto, nil -} diff --git a/vendor/github.com/prometheus/procfs/doc.go b/vendor/github.com/prometheus/procfs/doc.go deleted file mode 100644 index e2acd6d4..00000000 --- a/vendor/github.com/prometheus/procfs/doc.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 Prometheus Team -// 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 procfs provides functions to retrieve system, kernel and process -// metrics from the pseudo-filesystem proc. -// -// Example: -// -// package main -// -// import ( -// "fmt" -// "log" -// -// "github.com/prometheus/procfs" -// ) -// -// func main() { -// p, err := procfs.Self() -// if err != nil { -// log.Fatalf("could not get process: %s", err) -// } -// -// stat, err := p.NewStat() -// if err != nil { -// log.Fatalf("could not get process stat: %s", err) -// } -// -// fmt.Printf("command: %s\n", stat.Comm) -// fmt.Printf("cpu time: %fs\n", stat.CPUTime()) -// fmt.Printf("vsize: %dB\n", stat.VirtualMemory()) -// fmt.Printf("rss: %dB\n", stat.ResidentMemory()) -// } -// -package procfs diff --git a/vendor/github.com/prometheus/procfs/fixtures.ttar b/vendor/github.com/prometheus/procfs/fixtures.ttar deleted file mode 100644 index 38b71fe3..00000000 --- a/vendor/github.com/prometheus/procfs/fixtures.ttar +++ /dev/null @@ -1,5299 +0,0 @@ -# Archive created by ttar -c -f fixtures.ttar fixtures/ -Directory: fixtures -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26231 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/cmdline -Lines: 1 -vimNULLBYTEtest.goNULLBYTE+10NULLBYTEEOF -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/comm -Lines: 1 -vim -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/cwd -SymlinkTo: /usr/bin -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/environ -Lines: 1 -PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binNULLBYTEHOSTNAME=cd24e11f73a5NULLBYTETERM=xtermNULLBYTEGOLANG_VERSION=1.12.5NULLBYTEGOPATH=/goNULLBYTEHOME=/rootNULLBYTEEOF -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/exe -SymlinkTo: /usr/bin/vim -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26231/fd -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fd/0 -SymlinkTo: ../../symlinktargets/abc -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fd/1 -SymlinkTo: ../../symlinktargets/def -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fd/10 -SymlinkTo: ../../symlinktargets/xyz -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fd/2 -SymlinkTo: ../../symlinktargets/ghi -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fd/3 -SymlinkTo: ../../symlinktargets/uvw -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26231/fdinfo -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fdinfo/0 -Lines: 6 -pos: 0 -flags: 02004000 -mnt_id: 13 -inotify wd:3 ino:1 sdev:34 mask:fce ignored_mask:0 fhandle-bytes:c fhandle-type:81 f_handle:000000000100000000000000 -inotify wd:2 ino:1300016 sdev:fd00002 mask:fce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:16003001ed3f022a -inotify wd:1 ino:2e0001 sdev:fd00000 mask:fce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:01002e00138e7c65 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fdinfo/1 -Lines: 4 -pos: 0 -flags: 02004002 -mnt_id: 13 -eventfd-count: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fdinfo/10 -Lines: 3 -pos: 0 -flags: 02004002 -mnt_id: 9 -Mode: 400 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fdinfo/2 -Lines: 3 -pos: 0 -flags: 02004002 -mnt_id: 9 -Mode: 400 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/fdinfo/3 -Lines: 3 -pos: 0 -flags: 02004002 -mnt_id: 9 -Mode: 400 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/io -Lines: 7 -rchar: 750339 -wchar: 818609 -syscr: 7405 -syscw: 5245 -read_bytes: 1024 -write_bytes: 2048 -cancelled_write_bytes: -1024 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/limits -Lines: 17 -Limit Soft Limit Hard Limit Units -Max cpu time unlimited unlimited seconds -Max file size unlimited unlimited bytes -Max data size unlimited unlimited bytes -Max stack size 8388608 unlimited bytes -Max core file size 0 unlimited bytes -Max resident set unlimited unlimited bytes -Max processes 62898 62898 processes -Max open files 2048 4096 files -Max locked memory 65536 65536 bytes -Max address space 8589934592 unlimited bytes -Max file locks unlimited unlimited locks -Max pending signals 62898 62898 signals -Max msgqueue size 819200 819200 bytes -Max nice priority 0 0 -Max realtime priority 0 0 -Max realtime timeout unlimited unlimited us -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/mountstats -Lines: 20 -device rootfs mounted on / with fstype rootfs -device sysfs mounted on /sys with fstype sysfs -device proc mounted on /proc with fstype proc -device /dev/sda1 mounted on / with fstype ext4 -device 192.168.1.1:/srv/test mounted on /mnt/nfs/test with fstype nfs4 statvers=1.1 - opts: rw,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.1,clientaddr=192.168.1.5,local_lock=none - age: 13968 - caps: caps=0xfff7,wtmult=512,dtsize=32768,bsize=0,namlen=255 - nfsv4: bm0=0xfdffafff,bm1=0xf9be3e,bm2=0x0,acl=0x0,pnfs=not configured - sec: flavor=1,pseudoflavor=1 - events: 52 226 0 0 1 13 398 0 0 331 0 47 0 0 77 0 0 77 0 0 0 0 0 0 0 0 0 - bytes: 1207640230 0 0 0 1210214218 0 295483 0 - RPC iostats version: 1.0 p/v: 100003/4 (nfs) - xprt: tcp 832 0 1 0 11 6428 6428 0 12154 0 24 26 5726 - per-op statistics - NULL: 0 0 0 0 0 0 0 0 - READ: 1298 1298 0 207680 1210292152 6 79386 79407 - WRITE: 0 0 0 0 0 0 0 0 - ACCESS: 2927395007 2927394995 0 526931094212 362996810236 18446743919241604546 1667369447 1953587717 - -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26231/net -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/net/dev -Lines: 4 -Inter-| Receive | Transmit - face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed - lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - eth0: 438 5 0 0 0 0 0 0 648 8 0 0 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26231/ns -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/ns/mnt -SymlinkTo: mnt:[4026531840] -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/ns/net -SymlinkTo: net:[4026531993] -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/root -SymlinkTo: / -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/schedstat -Lines: 1 -411605849 93680043 79 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/stat -Lines: 1 -26231 (vim) R 5392 7446 5392 34835 7446 4218880 32533 309516 26 82 1677 44 158 99 20 0 1 0 82375 56274944 1981 18446744073709551615 4194304 6294284 140736914091744 140736914087944 139965136429984 0 0 12288 1870679807 0 0 0 17 0 0 0 31 0 0 8391624 8481048 16420864 140736914093252 140736914093279 140736914093279 140736914096107 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26231/status -Lines: 53 - -Name: prometheus -Umask: 0022 -State: S (sleeping) -Tgid: 26231 -Ngid: 0 -Pid: 26231 -PPid: 1 -TracerPid: 0 -Uid: 0 0 0 0 -Gid: 0 0 0 0 -FDSize: 128 -Groups: -NStgid: 1 -NSpid: 1 -NSpgid: 1 -NSsid: 1 -VmPeak: 58472 kB -VmSize: 58440 kB -VmLck: 0 kB -VmPin: 0 kB -VmHWM: 8028 kB -VmRSS: 6716 kB -RssAnon: 2092 kB -RssFile: 4624 kB -RssShmem: 0 kB -VmData: 2580 kB -VmStk: 136 kB -VmExe: 948 kB -VmLib: 6816 kB -VmPTE: 128 kB -VmPMD: 12 kB -VmSwap: 660 kB -HugetlbPages: 0 kB -Threads: 1 -SigQ: 8/63965 -SigPnd: 0000000000000000 -ShdPnd: 0000000000000000 -SigBlk: 7be3c0fe28014a03 -SigIgn: 0000000000001000 -SigCgt: 00000001800004ec -CapInh: 0000000000000000 -CapPrm: 0000003fffffffff -CapEff: 0000003fffffffff -CapBnd: 0000003fffffffff -CapAmb: 0000000000000000 -Seccomp: 0 -Cpus_allowed: ff -Cpus_allowed_list: 0-7 -Mems_allowed: 00000000,00000001 -Mems_allowed_list: 0 -voluntary_ctxt_switches: 4742839 -nonvoluntary_ctxt_switches: 1727500 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26232 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/cmdline -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/comm -Lines: 1 -ata_sff -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/cwd -SymlinkTo: /does/not/exist -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26232/fd -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/fd/0 -SymlinkTo: ../../symlinktargets/abc -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/fd/1 -SymlinkTo: ../../symlinktargets/def -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/fd/2 -SymlinkTo: ../../symlinktargets/ghi -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/fd/3 -SymlinkTo: ../../symlinktargets/uvw -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/fd/4 -SymlinkTo: ../../symlinktargets/xyz -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/limits -Lines: 17 -Limit Soft Limit Hard Limit Units -Max cpu time unlimited unlimited seconds -Max file size unlimited unlimited bytes -Max data size unlimited unlimited bytes -Max stack size 8388608 unlimited bytes -Max core file size 0 unlimited bytes -Max resident set unlimited unlimited bytes -Max processes 29436 29436 processes -Max open files 1024 4096 files -Max locked memory 65536 65536 bytes -Max address space unlimited unlimited bytes -Max file locks unlimited unlimited locks -Max pending signals 29436 29436 signals -Max msgqueue size 819200 819200 bytes -Max nice priority 0 0 -Max realtime priority 0 0 -Max realtime timeout unlimited unlimited us -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/root -SymlinkTo: /does/not/exist -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26232/stat -Lines: 1 -33 (ata_sff) S 2 0 0 0 -1 69238880 0 0 0 0 0 0 0 0 0 -20 1 0 5 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/26233 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26233/cmdline -Lines: 1 -com.github.uiautomatorNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEEOF -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/26233/schedstat -Lines: 8 - ____________________________________ -< this is a malformed schedstat file > - ------------------------------------ - \ ^__^ - \ (oo)\_______ - (__)\ )\/\ - ||----w | - || || -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/584 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/584/stat -Lines: 2 -1020 ((a b ) ( c d) ) R 28378 1020 28378 34842 1020 4218880 286 0 0 0 0 0 0 0 20 0 1 0 10839175 10395648 155 18446744073709551615 4194304 4238788 140736466511168 140736466511168 140609271124624 0 0 0 0 0 0 0 17 5 0 0 0 0 0 6336016 6337300 25579520 140736466515030 140736466515061 140736466515061 140736466518002 0 -#!/bin/cat /proc/self/stat -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/buddyinfo -Lines: 3 -Node 0, zone DMA 1 0 1 0 2 1 1 0 1 1 3 -Node 0, zone DMA32 759 572 791 475 194 45 12 0 0 0 0 -Node 0, zone Normal 4381 1093 185 1530 567 102 4 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/cpuinfo -Lines: 216 -processor : 0 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 799.998 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 0 -cpu cores : 4 -apicid : 0 -initial apicid : 0 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 1 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.037 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 1 -cpu cores : 4 -apicid : 2 -initial apicid : 2 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 2 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.010 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 2 -cpu cores : 4 -apicid : 4 -initial apicid : 4 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 3 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.028 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 3 -cpu cores : 4 -apicid : 6 -initial apicid : 6 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 4 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 799.989 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 0 -cpu cores : 4 -apicid : 1 -initial apicid : 1 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 5 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.083 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 1 -cpu cores : 4 -apicid : 3 -initial apicid : 3 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 6 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.017 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 2 -cpu cores : 4 -apicid : 5 -initial apicid : 5 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -processor : 7 -vendor_id : GenuineIntel -cpu family : 6 -model : 142 -model name : Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz -stepping : 10 -microcode : 0xb4 -cpu MHz : 800.030 -cache size : 8192 KB -physical id : 0 -siblings : 8 -core id : 3 -cpu cores : 4 -apicid : 7 -initial apicid : 7 -fpu : yes -fpu_exception : yes -cpuid level : 22 -wp : yes -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d -bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs -bogomips : 4224.00 -clflush size : 64 -cache_alignment : 64 -address sizes : 39 bits physical, 48 bits virtual -power management: - -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/crypto -Lines: 971 -name : ccm(aes) -driver : ccm_base(ctr(aes-aesni),cbcmac(aes-aesni)) -module : ccm -priority : 300 -refcnt : 4 -selftest : passed -internal : no -type : aead -async : no -blocksize : 1 -ivsize : 16 -maxauthsize : 16 -geniv : - -name : cbcmac(aes) -driver : cbcmac(aes-aesni) -module : ccm -priority : 300 -refcnt : 7 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 16 - -name : ecdh -driver : ecdh-generic -module : ecdh_generic -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : kpp - -name : ecb(arc4) -driver : ecb(arc4)-generic -module : arc4 -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : no -blocksize : 1 -min keysize : 1 -max keysize : 256 -ivsize : 0 -chunksize : 1 -walksize : 1 - -name : arc4 -driver : arc4-generic -module : arc4 -priority : 0 -refcnt : 3 -selftest : passed -internal : no -type : cipher -blocksize : 1 -min keysize : 1 -max keysize : 256 - -name : crct10dif -driver : crct10dif-pclmul -module : crct10dif_pclmul -priority : 200 -refcnt : 2 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 2 - -name : crc32 -driver : crc32-pclmul -module : crc32_pclmul -priority : 200 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 4 - -name : __ghash -driver : cryptd(__ghash-pclmulqdqni) -module : kernel -priority : 50 -refcnt : 1 -selftest : passed -internal : yes -type : ahash -async : yes -blocksize : 16 -digestsize : 16 - -name : ghash -driver : ghash-clmulni -module : ghash_clmulni_intel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : ahash -async : yes -blocksize : 16 -digestsize : 16 - -name : __ghash -driver : __ghash-pclmulqdqni -module : ghash_clmulni_intel -priority : 0 -refcnt : 1 -selftest : passed -internal : yes -type : shash -blocksize : 16 -digestsize : 16 - -name : crc32c -driver : crc32c-intel -module : crc32c_intel -priority : 200 -refcnt : 5 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 4 - -name : cbc(aes) -driver : cbc(aes-aesni) -module : kernel -priority : 300 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : no -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : ctr(aes) -driver : ctr(aes-aesni) -module : kernel -priority : 300 -refcnt : 5 -selftest : passed -internal : no -type : skcipher -async : no -blocksize : 1 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : pkcs1pad(rsa,sha256) -driver : pkcs1pad(rsa-generic,sha256) -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : akcipher - -name : __xts(aes) -driver : cryptd(__xts-aes-aesni) -module : kernel -priority : 451 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : yes -blocksize : 16 -min keysize : 32 -max keysize : 64 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : xts(aes) -driver : xts-aes-aesni -module : kernel -priority : 401 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : yes -blocksize : 16 -min keysize : 32 -max keysize : 64 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __ctr(aes) -driver : cryptd(__ctr-aes-aesni) -module : kernel -priority : 450 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : yes -blocksize : 1 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : ctr(aes) -driver : ctr-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : yes -blocksize : 1 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __cbc(aes) -driver : cryptd(__cbc-aes-aesni) -module : kernel -priority : 450 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : yes -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : cbc(aes) -driver : cbc-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : yes -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __ecb(aes) -driver : cryptd(__ecb-aes-aesni) -module : kernel -priority : 450 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : yes -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 0 -chunksize : 16 -walksize : 16 - -name : ecb(aes) -driver : ecb-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : yes -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 0 -chunksize : 16 -walksize : 16 - -name : __generic-gcm-aes-aesni -driver : cryptd(__driver-generic-gcm-aes-aesni) -module : kernel -priority : 50 -refcnt : 1 -selftest : passed -internal : yes -type : aead -async : yes -blocksize : 1 -ivsize : 12 -maxauthsize : 16 -geniv : - -name : gcm(aes) -driver : generic-gcm-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : aead -async : yes -blocksize : 1 -ivsize : 12 -maxauthsize : 16 -geniv : - -name : __generic-gcm-aes-aesni -driver : __driver-generic-gcm-aes-aesni -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : yes -type : aead -async : no -blocksize : 1 -ivsize : 12 -maxauthsize : 16 -geniv : - -name : __gcm-aes-aesni -driver : cryptd(__driver-gcm-aes-aesni) -module : kernel -priority : 50 -refcnt : 1 -selftest : passed -internal : yes -type : aead -async : yes -blocksize : 1 -ivsize : 8 -maxauthsize : 16 -geniv : - -name : rfc4106(gcm(aes)) -driver : rfc4106-gcm-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : no -type : aead -async : yes -blocksize : 1 -ivsize : 8 -maxauthsize : 16 -geniv : - -name : __gcm-aes-aesni -driver : __driver-gcm-aes-aesni -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : yes -type : aead -async : no -blocksize : 1 -ivsize : 8 -maxauthsize : 16 -geniv : - -name : __xts(aes) -driver : __xts-aes-aesni -module : kernel -priority : 401 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : no -blocksize : 16 -min keysize : 32 -max keysize : 64 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __ctr(aes) -driver : __ctr-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : no -blocksize : 1 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __cbc(aes) -driver : __cbc-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : no -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 16 -chunksize : 16 -walksize : 16 - -name : __ecb(aes) -driver : __ecb-aes-aesni -module : kernel -priority : 400 -refcnt : 1 -selftest : passed -internal : yes -type : skcipher -async : no -blocksize : 16 -min keysize : 16 -max keysize : 32 -ivsize : 0 -chunksize : 16 -walksize : 16 - -name : __aes -driver : __aes-aesni -module : kernel -priority : 300 -refcnt : 1 -selftest : passed -internal : yes -type : cipher -blocksize : 16 -min keysize : 16 -max keysize : 32 - -name : aes -driver : aes-aesni -module : kernel -priority : 300 -refcnt : 8 -selftest : passed -internal : no -type : cipher -blocksize : 16 -min keysize : 16 -max keysize : 32 - -name : hmac(sha1) -driver : hmac(sha1-generic) -module : kernel -priority : 100 -refcnt : 9 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 20 - -name : ghash -driver : ghash-generic -module : kernel -priority : 100 -refcnt : 3 -selftest : passed -internal : no -type : shash -blocksize : 16 -digestsize : 16 - -name : jitterentropy_rng -driver : jitterentropy_rng -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_hmac_sha256 -module : kernel -priority : 221 -refcnt : 2 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_hmac_sha512 -module : kernel -priority : 220 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_hmac_sha384 -module : kernel -priority : 219 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_hmac_sha1 -module : kernel -priority : 218 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_sha256 -module : kernel -priority : 217 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_sha512 -module : kernel -priority : 216 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_sha384 -module : kernel -priority : 215 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_sha1 -module : kernel -priority : 214 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_ctr_aes256 -module : kernel -priority : 213 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_ctr_aes192 -module : kernel -priority : 212 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_nopr_ctr_aes128 -module : kernel -priority : 211 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : hmac(sha256) -driver : hmac(sha256-generic) -module : kernel -priority : 100 -refcnt : 10 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 32 - -name : stdrng -driver : drbg_pr_hmac_sha256 -module : kernel -priority : 210 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_hmac_sha512 -module : kernel -priority : 209 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_hmac_sha384 -module : kernel -priority : 208 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_hmac_sha1 -module : kernel -priority : 207 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_sha256 -module : kernel -priority : 206 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_sha512 -module : kernel -priority : 205 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_sha384 -module : kernel -priority : 204 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_sha1 -module : kernel -priority : 203 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_ctr_aes256 -module : kernel -priority : 202 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_ctr_aes192 -module : kernel -priority : 201 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : stdrng -driver : drbg_pr_ctr_aes128 -module : kernel -priority : 200 -refcnt : 1 -selftest : passed -internal : no -type : rng -seedsize : 0 - -name : 842 -driver : 842-scomp -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : scomp - -name : 842 -driver : 842-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : compression - -name : lzo-rle -driver : lzo-rle-scomp -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : scomp - -name : lzo-rle -driver : lzo-rle-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : compression - -name : lzo -driver : lzo-scomp -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : scomp - -name : lzo -driver : lzo-generic -module : kernel -priority : 0 -refcnt : 9 -selftest : passed -internal : no -type : compression - -name : crct10dif -driver : crct10dif-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 2 - -name : crc32c -driver : crc32c-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 4 - -name : zlib-deflate -driver : zlib-deflate-scomp -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : scomp - -name : deflate -driver : deflate-scomp -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : scomp - -name : deflate -driver : deflate-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : compression - -name : aes -driver : aes-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : cipher -blocksize : 16 -min keysize : 16 -max keysize : 32 - -name : sha224 -driver : sha224-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 28 - -name : sha256 -driver : sha256-generic -module : kernel -priority : 100 -refcnt : 11 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 32 - -name : sha1 -driver : sha1-generic -module : kernel -priority : 100 -refcnt : 11 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 20 - -name : md5 -driver : md5-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 64 -digestsize : 16 - -name : ecb(cipher_null) -driver : ecb-cipher_null -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : skcipher -async : no -blocksize : 1 -min keysize : 0 -max keysize : 0 -ivsize : 0 -chunksize : 1 -walksize : 1 - -name : digest_null -driver : digest_null-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : shash -blocksize : 1 -digestsize : 0 - -name : compress_null -driver : compress_null-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : compression - -name : cipher_null -driver : cipher_null-generic -module : kernel -priority : 0 -refcnt : 1 -selftest : passed -internal : no -type : cipher -blocksize : 1 -min keysize : 0 -max keysize : 0 - -name : rsa -driver : rsa-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : akcipher - -name : dh -driver : dh-generic -module : kernel -priority : 100 -refcnt : 1 -selftest : passed -internal : no -type : kpp - -name : aes -driver : aes-asm -module : kernel -priority : 200 -refcnt : 1 -selftest : passed -internal : no -type : cipher -blocksize : 16 -min keysize : 16 -max keysize : 32 - -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/diskstats -Lines: 49 - 1 0 ram0 0 0 0 0 0 0 0 0 0 0 0 - 1 1 ram1 0 0 0 0 0 0 0 0 0 0 0 - 1 2 ram2 0 0 0 0 0 0 0 0 0 0 0 - 1 3 ram3 0 0 0 0 0 0 0 0 0 0 0 - 1 4 ram4 0 0 0 0 0 0 0 0 0 0 0 - 1 5 ram5 0 0 0 0 0 0 0 0 0 0 0 - 1 6 ram6 0 0 0 0 0 0 0 0 0 0 0 - 1 7 ram7 0 0 0 0 0 0 0 0 0 0 0 - 1 8 ram8 0 0 0 0 0 0 0 0 0 0 0 - 1 9 ram9 0 0 0 0 0 0 0 0 0 0 0 - 1 10 ram10 0 0 0 0 0 0 0 0 0 0 0 - 1 11 ram11 0 0 0 0 0 0 0 0 0 0 0 - 1 12 ram12 0 0 0 0 0 0 0 0 0 0 0 - 1 13 ram13 0 0 0 0 0 0 0 0 0 0 0 - 1 14 ram14 0 0 0 0 0 0 0 0 0 0 0 - 1 15 ram15 0 0 0 0 0 0 0 0 0 0 0 - 7 0 loop0 0 0 0 0 0 0 0 0 0 0 0 - 7 1 loop1 0 0 0 0 0 0 0 0 0 0 0 - 7 2 loop2 0 0 0 0 0 0 0 0 0 0 0 - 7 3 loop3 0 0 0 0 0 0 0 0 0 0 0 - 7 4 loop4 0 0 0 0 0 0 0 0 0 0 0 - 7 5 loop5 0 0 0 0 0 0 0 0 0 0 0 - 7 6 loop6 0 0 0 0 0 0 0 0 0 0 0 - 7 7 loop7 0 0 0 0 0 0 0 0 0 0 0 - 8 0 sda 25354637 34367663 1003346126 18492372 28444756 11134226 505697032 63877960 0 9653880 82621804 - 8 1 sda1 250 0 2000 36 0 0 0 0 0 36 36 - 8 2 sda2 246 0 1968 32 0 0 0 0 0 32 32 - 8 3 sda3 340 13 2818 52 11 8 152 8 0 56 60 - 8 4 sda4 25353629 34367650 1003337964 18492232 27448755 11134218 505696880 61593380 0 7576432 80332428 - 252 0 dm-0 59910002 0 1003337218 46229572 39231014 0 505696880 1158557800 0 11325968 1206301256 - 252 1 dm-1 388 0 3104 84 74 0 592 0 0 76 84 - 252 2 dm-2 11571 0 308350 6536 153522 0 5093416 122884 0 65400 129416 - 252 3 dm-3 3870 0 3870 104 0 0 0 0 0 16 104 - 252 4 dm-4 392 0 1034 28 38 0 137 16 0 24 44 - 252 5 dm-5 3729 0 84279 924 98918 0 1151688 104684 0 58848 105632 - 179 0 mmcblk0 192 3 1560 156 0 0 0 0 0 136 156 - 179 1 mmcblk0p1 17 3 160 24 0 0 0 0 0 24 24 - 179 2 mmcblk0p2 95 0 760 68 0 0 0 0 0 68 68 - 2 0 fd0 2 0 16 80 0 0 0 0 0 80 80 - 254 0 vda 1775784 15386 32670882 8655768 6038856 20711856 213637440 2069221364 0 41614592 2077872228 - 254 1 vda1 668 85 5984 956 207 4266 35784 32772 0 8808 33720 - 254 2 vda2 1774936 15266 32663262 8654692 5991028 20707590 213601656 2069152216 0 41607628 2077801992 - 11 0 sr0 0 0 0 0 0 0 0 0 0 0 0 - 259 0 nvme0n1 47114 4 4643973 21650 1078320 43950 39451633 1011053 0 222766 1032546 - 259 1 nvme0n1p1 1140 0 9370 16 1 0 1 0 0 16 16 - 259 2 nvme0n1p2 45914 4 4631243 21626 1036885 43950 39451632 919480 0 131580 940970 - 8 0 sdb 326552 841 9657779 84 41822 2895 1972905 5007 0 60730 67070 68851 0 1925173784 11130 - 8 1 sdb1 231 3 34466 4 24 23 106 0 0 64 64 0 0 0 0 - 8 2 sdb2 326310 838 9622281 67 40726 2872 1972799 4924 0 58250 64567 68851 0 1925173784 11130 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/fs -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/fs/xfs -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/fs/xfs/stat -Lines: 23 -extent_alloc 92447 97589 92448 93751 -abt 0 0 0 0 -blk_map 1767055 188820 184891 92447 92448 2140766 0 -bmbt 0 0 0 0 -dir 185039 92447 92444 136422 -trans 706 944304 0 -ig 185045 58807 0 126238 0 33637 22 -log 2883 113448 9 17360 739 -push_ail 945014 0 134260 15483 0 3940 464 159985 0 40 -xstrat 92447 0 -rw 107739 94045 -attr 4 0 0 0 -icluster 8677 7849 135802 -vnodes 92601 0 0 0 92444 92444 92444 0 -buf 2666287 7122 2659202 3599 2 7085 0 10297 7085 -abtb2 184941 1277345 13257 13278 0 0 0 0 0 0 0 0 0 0 2746147 -abtc2 345295 2416764 172637 172658 0 0 0 0 0 0 0 0 0 0 21406023 -bmbt2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -ibt2 343004 1358467 0 0 0 0 0 0 0 0 0 0 0 0 0 -fibt2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -qm 0 0 0 0 0 0 0 0 -xpc 399724544 92823103 86219234 -debug 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/mdstat -Lines: 56 -Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] - -md3 : active raid6 sda1[8] sdh1[7] sdg1[6] sdf1[5] sde1[11] sdd1[3] sdc1[10] sdb1[9] sdd1[10](S) sdd2[11](S) - 5853468288 blocks super 1.2 level 6, 64k chunk, algorithm 2 [8/8] [UUUUUUUU] - -md127 : active raid1 sdi2[0] sdj2[1] - 312319552 blocks [2/2] [UU] - -md0 : active raid1 sdi1[0] sdj1[1] - 248896 blocks [2/2] [UU] - -md4 : inactive raid1 sda3[0](F) sdb3[1](S) - 4883648 blocks [2/2] [UU] - -md6 : active raid1 sdb2[2](F) sdc[1](S) sda2[0] - 195310144 blocks [2/1] [U_] - [=>...................] recovery = 8.5% (16775552/195310144) finish=17.0min speed=259783K/sec - -md8 : active raid1 sdb1[1] sda1[0] sdc[2](S) sde[3](S) - 195310144 blocks [2/2] [UU] - [=>...................] resync = 8.5% (16775552/195310144) finish=17.0min speed=259783K/sec - -md7 : active raid6 sdb1[0] sde1[3] sdd1[2] sdc1[1](F) - 7813735424 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [U_UU] - bitmap: 0/30 pages [0KB], 65536KB chunk - -md9 : active raid1 sdc2[2] sdd2[3] sdb2[1] sda2[0] sde[4](F) sdf[5](F) sdg[6](S) - 523968 blocks super 1.2 [4/4] [UUUU] - resync=DELAYED - -md10 : active raid0 sda1[0] sdb1[1] - 314159265 blocks 64k chunks - -md11 : active (auto-read-only) raid1 sdb2[0] sdc2[1] sdc3[2](F) hda[4](S) ssdc2[3](S) - 4190208 blocks super 1.2 [2/2] [UU] - resync=PENDING - -md12 : active raid0 sdc2[0] sdd2[1] - 3886394368 blocks super 1.2 512k chunks - -md126 : active raid0 sdb[1] sdc[0] - 1855870976 blocks super external:/md127/0 128k chunks - -md219 : inactive sdb[2](S) sdc[1](S) sda[0](S) - 7932 blocks super external:imsm - -md00 : active raid0 xvdb[0] - 4186624 blocks super 1.2 256k chunks - -md120 : active linear sda1[1] sdb1[0] - 2095104 blocks super 1.2 0k rounding - -md101 : active (read-only) raid0 sdb[2] sdd[1] sdc[0] - 322560 blocks super 1.2 512k chunks - -unused devices: -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/meminfo -Lines: 42 -MemTotal: 15666184 kB -MemFree: 440324 kB -Buffers: 1020128 kB -Cached: 12007640 kB -SwapCached: 0 kB -Active: 6761276 kB -Inactive: 6532708 kB -Active(anon): 267256 kB -Inactive(anon): 268 kB -Active(file): 6494020 kB -Inactive(file): 6532440 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 0 kB -SwapFree: 0 kB -Dirty: 768 kB -Writeback: 0 kB -AnonPages: 266216 kB -Mapped: 44204 kB -Shmem: 1308 kB -Slab: 1807264 kB -SReclaimable: 1738124 kB -SUnreclaim: 69140 kB -KernelStack: 1616 kB -PageTables: 5288 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 7833092 kB -Committed_AS: 530844 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 36596 kB -VmallocChunk: 34359637840 kB -HardwareCorrupted: 0 kB -AnonHugePages: 12288 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -DirectMap4k: 91136 kB -DirectMap2M: 16039936 kB -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/net -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/arp -Lines: 2 -IP address HW type Flags HW address Mask Device -192.168.224.1 0x1 0x2 00:50:56:c0:00:08 * ens33 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/dev -Lines: 6 -Inter-| Receive | Transmit - face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed -vethf345468: 648 8 0 0 0 0 0 0 438 5 0 0 0 0 0 0 - lo: 1664039048 1566805 0 0 0 0 0 0 1664039048 1566805 0 0 0 0 0 0 -docker0: 2568 38 0 0 0 0 0 0 438 5 0 0 0 0 0 0 - eth0: 874354587 1036395 0 0 0 0 0 0 563352563 732147 0 0 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/ip_vs -Lines: 21 -IP Virtual Server version 1.2.1 (size=4096) -Prot LocalAddress:Port Scheduler Flags - -> RemoteAddress:Port Forward Weight ActiveConn InActConn -TCP C0A80016:0CEA wlc - -> C0A85216:0CEA Tunnel 100 248 2 - -> C0A85318:0CEA Tunnel 100 248 2 - -> C0A85315:0CEA Tunnel 100 248 1 -TCP C0A80039:0CEA wlc - -> C0A85416:0CEA Tunnel 0 0 0 - -> C0A85215:0CEA Tunnel 100 1499 0 - -> C0A83215:0CEA Tunnel 100 1498 0 -TCP C0A80037:0CEA wlc - -> C0A8321A:0CEA Tunnel 0 0 0 - -> C0A83120:0CEA Tunnel 100 0 0 -TCP [2620:0000:0000:0000:0000:0000:0000:0001]:0050 sh - -> [2620:0000:0000:0000:0000:0000:0000:0002]:0050 Route 1 0 0 - -> [2620:0000:0000:0000:0000:0000:0000:0003]:0050 Route 1 0 0 - -> [2620:0000:0000:0000:0000:0000:0000:0004]:0050 Route 1 1 1 -FWM 10001000 wlc - -> C0A8321A:0CEA Route 0 0 1 - -> C0A83215:0CEA Route 0 0 2 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/ip_vs_stats -Lines: 6 - Total Incoming Outgoing Incoming Outgoing - Conns Packets Packets Bytes Bytes - 16AA370 E33656E5 0 51D8C8883AB3 0 - - Conns/s Pkts/s Pkts/s Bytes/s Bytes/s - 4 1FB3C 0 1282A8F 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/net/rpc -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/rpc/nfs -Lines: 5 -net 18628 0 18628 6 -rpc 4329785 0 4338291 -proc2 18 2 69 0 0 4410 0 0 0 0 0 0 0 0 0 0 0 99 2 -proc3 22 1 4084749 29200 94754 32580 186 47747 7981 8639 0 6356 0 6962 0 7958 0 0 241 4 4 2 39 -proc4 61 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/rpc/nfsd -Lines: 11 -rc 0 6 18622 -fh 0 0 0 0 0 -io 157286400 0 -th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 -ra 32 0 0 0 0 0 0 0 0 0 0 0 -net 18628 0 18628 6 -rpc 18628 0 0 0 0 -proc2 18 2 69 0 0 4410 0 0 0 0 0 0 0 0 0 0 0 99 2 -proc3 22 2 112 0 2719 111 0 0 0 0 0 0 0 0 0 0 0 27 216 0 2 1 0 -proc4 2 2 10853 -proc4ops 72 0 0 0 1098 2 0 0 0 0 8179 5896 0 0 0 0 5900 0 0 2 0 2 0 9609 0 2 150 1272 0 0 0 1236 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/softnet_stat -Lines: 1 -00015c73 00020e76 F0000769 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/unix -Lines: 6 -Num RefCount Protocol Flags Type St Inode Path -0000000000000000: 00000002 00000000 00010000 0001 01 3442596 /var/run/postgresql/.s.PGSQL.5432 -0000000000000000: 0000000a 00000000 00010000 0005 01 10061 /run/udev/control -0000000000000000: 00000007 00000000 00000000 0002 01 12392 /dev/log -0000000000000000: 00000003 00000000 00000000 0001 03 4787297 /var/run/postgresql/.s.PGSQL.5432 -0000000000000000: 00000003 00000000 00000000 0001 03 5091797 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/unix_without_inode -Lines: 6 -Num RefCount Protocol Flags Type St Path -0000000000000000: 00000002 00000000 00010000 0001 01 /var/run/postgresql/.s.PGSQL.5432 -0000000000000000: 0000000a 00000000 00010000 0005 01 /run/udev/control -0000000000000000: 00000007 00000000 00000000 0002 01 /dev/log -0000000000000000: 00000003 00000000 00000000 0001 03 /var/run/postgresql/.s.PGSQL.5432 -0000000000000000: 00000003 00000000 00000000 0001 03 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/net/xfrm_stat -Lines: 28 -XfrmInError 1 -XfrmInBufferError 2 -XfrmInHdrError 4 -XfrmInNoStates 3 -XfrmInStateProtoError 40 -XfrmInStateModeError 100 -XfrmInStateSeqError 6000 -XfrmInStateExpired 4 -XfrmInStateMismatch 23451 -XfrmInStateInvalid 55555 -XfrmInTmplMismatch 51 -XfrmInNoPols 65432 -XfrmInPolBlock 100 -XfrmInPolError 10000 -XfrmOutError 1000000 -XfrmOutBundleGenError 43321 -XfrmOutBundleCheckError 555 -XfrmOutNoStates 869 -XfrmOutStateProtoError 4542 -XfrmOutStateModeError 4 -XfrmOutStateSeqError 543 -XfrmOutStateExpired 565 -XfrmOutPolBlock 43456 -XfrmOutPolDead 7656 -XfrmOutPolError 1454 -XfrmFwdHdrError 6654 -XfrmOutStateInvalid 28765 -XfrmAcquireError 24532 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/pressure -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/pressure/cpu -Lines: 1 -some avg10=0.10 avg60=2.00 avg300=3.85 total=15 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/pressure/io -Lines: 2 -some avg10=0.10 avg60=2.00 avg300=3.85 total=15 -full avg10=0.20 avg60=3.00 avg300=4.95 total=25 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/pressure/memory -Lines: 2 -some avg10=0.10 avg60=2.00 avg300=3.85 total=15 -full avg10=0.20 avg60=3.00 avg300=4.95 total=25 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/schedstat -Lines: 6 -version 15 -timestamp 15819019232 -cpu0 498494191 0 3533438552 2553969831 3853684107 2465731542 2045936778163039 343796328169361 4767485306 -domain0 00000000,00000003 212499247 210112015 1861015 1860405436 536440 369895 32599 210079416 25368550 24241256 384652 927363878 807233 6366 1647 24239609 2122447165 1886868564 121112060 2848625533 125678146 241025 1032026 1885836538 2545 12 2533 0 0 0 0 0 0 1387952561 21076581 0 -cpu1 518377256 0 4155211005 2778589869 10466382 2867629021 1904686152592476 364107263788241 5145567945 -domain0 00000000,00000003 217653037 215526982 1577949 1580427380 557469 393576 28538 215498444 28721913 27662819 371153 870843407 745912 5523 1639 27661180 2331056874 2107732788 111442342 652402556 123615235 196159 1045245 2106687543 2400 3 2397 0 0 0 0 0 0 1437804657 26220076 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/self -SymlinkTo: 26231 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/stat -Lines: 16 -cpu 301854 612 111922 8979004 3552 2 3944 0 0 0 -cpu0 44490 19 21045 1087069 220 1 3410 0 0 0 -cpu1 47869 23 16474 1110787 591 0 46 0 0 0 -cpu2 46504 36 15916 1112321 441 0 326 0 0 0 -cpu3 47054 102 15683 1113230 533 0 60 0 0 0 -cpu4 28413 25 10776 1140321 217 0 8 0 0 0 -cpu5 29271 101 11586 1136270 672 0 30 0 0 0 -cpu6 29152 36 10276 1139721 319 0 29 0 0 0 -cpu7 29098 268 10164 1139282 555 0 31 0 0 0 -intr 8885917 17 0 0 0 0 0 0 0 1 79281 0 0 0 0 0 0 0 231237 0 0 0 0 250586 103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223424 190745 13 906 1283803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -ctxt 38014093 -btime 1418183276 -processes 26442 -procs_running 2 -procs_blocked 1 -softirq 5057579 250191 1481983 1647 211099 186066 0 1783454 622196 12499 508444 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/symlinktargets -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/README -Lines: 2 -This directory contains some empty files that are the symlinks the files in the "fd" directory point to. -They are otherwise ignored by the tests -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/abc -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/def -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/ghi -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/uvw -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/symlinktargets/xyz -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/sys -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/proc/sys/vm -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/admin_reserve_kbytes -Lines: 1 -8192 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/block_dump -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/compact_unevictable_allowed -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_background_bytes -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_background_ratio -Lines: 1 -10 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_bytes -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_expire_centisecs -Lines: 1 -3000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_ratio -Lines: 1 -20 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirty_writeback_centisecs -Lines: 1 -500 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/dirtytime_expire_seconds -Lines: 1 -43200 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/drop_caches -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/extfrag_threshold -Lines: 1 -500 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/hugetlb_shm_group -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/laptop_mode -Lines: 1 -5 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/legacy_va_layout -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/lowmem_reserve_ratio -Lines: 1 -256 256 32 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/max_map_count -Lines: 1 -65530 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/memory_failure_early_kill -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/memory_failure_recovery -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/min_free_kbytes -Lines: 1 -67584 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/min_slab_ratio -Lines: 1 -5 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/min_unmapped_ratio -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/mmap_min_addr -Lines: 1 -65536 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/nr_hugepages -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/nr_hugepages_mempolicy -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/nr_overcommit_hugepages -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/numa_stat -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/numa_zonelist_order -Lines: 1 -Node -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/oom_dump_tasks -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/oom_kill_allocating_task -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/overcommit_kbytes -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/overcommit_memory -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/overcommit_ratio -Lines: 1 -50 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/page-cluster -Lines: 1 -3 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/panic_on_oom -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/percpu_pagelist_fraction -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/stat_interval -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/swappiness -Lines: 1 -60 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/user_reserve_kbytes -Lines: 1 -131072 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/vfs_cache_pressure -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/watermark_boost_factor -Lines: 1 -15000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/watermark_scale_factor -Lines: 1 -10 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/sys/vm/zone_reclaim_mode -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/proc/zoneinfo -Lines: 262 -Node 0, zone DMA - per-node stats - nr_inactive_anon 230981 - nr_active_anon 547580 - nr_inactive_file 316904 - nr_active_file 346282 - nr_unevictable 115467 - nr_slab_reclaimable 131220 - nr_slab_unreclaimable 47320 - nr_isolated_anon 0 - nr_isolated_file 0 - workingset_nodes 11627 - workingset_refault 466886 - workingset_activate 276925 - workingset_restore 84055 - workingset_nodereclaim 487 - nr_anon_pages 795576 - nr_mapped 215483 - nr_file_pages 761874 - nr_dirty 908 - nr_writeback 0 - nr_writeback_temp 0 - nr_shmem 224925 - nr_shmem_hugepages 0 - nr_shmem_pmdmapped 0 - nr_anon_transparent_hugepages 0 - nr_unstable 0 - nr_vmscan_write 12950 - nr_vmscan_immediate_reclaim 3033 - nr_dirtied 8007423 - nr_written 7752121 - nr_kernel_misc_reclaimable 0 - pages free 3952 - min 33 - low 41 - high 49 - spanned 4095 - present 3975 - managed 3956 - protection: (0, 2877, 7826, 7826, 7826) - nr_free_pages 3952 - nr_zone_inactive_anon 0 - nr_zone_active_anon 0 - nr_zone_inactive_file 0 - nr_zone_active_file 0 - nr_zone_unevictable 0 - nr_zone_write_pending 0 - nr_mlock 0 - nr_page_table_pages 0 - nr_kernel_stack 0 - nr_bounce 0 - nr_zspages 0 - nr_free_cma 0 - numa_hit 1 - numa_miss 0 - numa_foreign 0 - numa_interleave 0 - numa_local 1 - numa_other 0 - pagesets - cpu: 0 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 1 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 2 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 3 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 4 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 5 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 6 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - cpu: 7 - count: 0 - high: 0 - batch: 1 - vm stats threshold: 8 - node_unreclaimable: 0 - start_pfn: 1 -Node 0, zone DMA32 - pages free 204252 - min 19510 - low 21059 - high 22608 - spanned 1044480 - present 759231 - managed 742806 - protection: (0, 0, 4949, 4949, 4949) - nr_free_pages 204252 - nr_zone_inactive_anon 118558 - nr_zone_active_anon 106598 - nr_zone_inactive_file 75475 - nr_zone_active_file 70293 - nr_zone_unevictable 66195 - nr_zone_write_pending 64 - nr_mlock 4 - nr_page_table_pages 1756 - nr_kernel_stack 2208 - nr_bounce 0 - nr_zspages 0 - nr_free_cma 0 - numa_hit 113952967 - numa_miss 0 - numa_foreign 0 - numa_interleave 0 - numa_local 113952967 - numa_other 0 - pagesets - cpu: 0 - count: 345 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 1 - count: 356 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 2 - count: 325 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 3 - count: 346 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 4 - count: 321 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 5 - count: 316 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 6 - count: 373 - high: 378 - batch: 63 - vm stats threshold: 48 - cpu: 7 - count: 339 - high: 378 - batch: 63 - vm stats threshold: 48 - node_unreclaimable: 0 - start_pfn: 4096 -Node 0, zone Normal - pages free 18553 - min 11176 - low 13842 - high 16508 - spanned 1308160 - present 1308160 - managed 1268711 - protection: (0, 0, 0, 0, 0) - nr_free_pages 18553 - nr_zone_inactive_anon 112423 - nr_zone_active_anon 440982 - nr_zone_inactive_file 241429 - nr_zone_active_file 275989 - nr_zone_unevictable 49272 - nr_zone_write_pending 844 - nr_mlock 154 - nr_page_table_pages 9750 - nr_kernel_stack 15136 - nr_bounce 0 - nr_zspages 0 - nr_free_cma 0 - numa_hit 162718019 - numa_miss 0 - numa_foreign 0 - numa_interleave 26812 - numa_local 162718019 - numa_other 0 - pagesets - cpu: 0 - count: 316 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 1 - count: 366 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 2 - count: 60 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 3 - count: 256 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 4 - count: 253 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 5 - count: 159 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 6 - count: 311 - high: 378 - batch: 63 - vm stats threshold: 56 - cpu: 7 - count: 264 - high: 378 - batch: 63 - vm stats threshold: 56 - node_unreclaimable: 0 - start_pfn: 1048576 -Node 0, zone Movable - pages free 0 - min 0 - low 0 - high 0 - spanned 0 - present 0 - managed 0 - protection: (0, 0, 0, 0, 0) -Node 0, zone Device - pages free 0 - min 0 - low 0 - high 0 - spanned 0 - present 0 - managed 0 - protection: (0, 0, 0, 0, 0) -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/block -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/block/dm-0 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/block/dm-0/stat -Lines: 1 -6447303 0 710266738 1529043 953216 0 31201176 4557464 0 796160 6088971 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/block/sda -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/block/sda/stat -Lines: 1 -9652963 396792 759304206 412943 8422549 6731723 286915323 13947418 0 5658367 19174573 1 2 3 12 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/board_id -Lines: 1 -SM_1141000001000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/fw_ver -Lines: 1 -2.31.5050 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/hca_type -Lines: 1 -MT4099 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/excessive_buffer_overrun_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_downed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_error_recovery -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/local_link_integrity_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_constraint_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_data -Lines: 1 -2221223609 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_packets -Lines: 1 -87169372 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_remote_physical_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_switch_relay_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_constraint_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_data -Lines: 1 -26509113295 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_discards -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_packets -Lines: 1 -85734114 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_wait -Lines: 1 -3599 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/symbol_error -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/phys_state -Lines: 1 -5: LinkUp -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/rate -Lines: 1 -40 Gb/sec (4X QDR) -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/state -Lines: 1 -4: ACTIVE -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/excessive_buffer_overrun_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/link_downed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/link_error_recovery -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/local_link_integrity_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_constraint_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_data -Lines: 1 -2460436784 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_packets -Lines: 1 -89332064 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_remote_physical_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_switch_relay_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_constraint_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_data -Lines: 1 -26540356890 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_discards -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_packets -Lines: 1 -88622850 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_wait -Lines: 1 -3846 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/symbol_error -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/phys_state -Lines: 1 -5: LinkUp -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/rate -Lines: 1 -40 Gb/sec (4X QDR) -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/state -Lines: 1 -4: ACTIVE -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/net -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/net/eth0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/addr_assign_type -Lines: 1 -3 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/addr_len -Lines: 1 -6 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/address -Lines: 1 -01:01:01:01:01:01 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/broadcast -Lines: 1 -ff:ff:ff:ff:ff:ff -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/carrier -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/carrier_changes -Lines: 1 -2 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/carrier_down_count -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/carrier_up_count -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/dev_id -Lines: 1 -0x20 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/device -SymlinkTo: ../../../devices/pci0000:00/0000:00:1f.6/ -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/dormant -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/duplex -Lines: 1 -full -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/flags -Lines: 1 -0x1303 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/ifalias -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/ifindex -Lines: 1 -2 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/iflink -Lines: 1 -2 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/link_mode -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/mtu -Lines: 1 -1500 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/name_assign_type -Lines: 1 -2 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/netdev_group -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/operstate -Lines: 1 -up -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/phys_port_id -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/phys_port_name -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/phys_switch_id -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/speed -Lines: 1 -1000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/tx_queue_len -Lines: 1 -1000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/net/eth0/type -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/power_supply -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/power_supply/AC -SymlinkTo: ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/power_supply/BAT0 -SymlinkTo: ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/powercap -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/powercap/intel-rapl -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl/enabled -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl/uevent -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/powercap/intel-rapl:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_0_max_power_uw -Lines: 1 -95000000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_0_name -Lines: 1 -long_term -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw -Lines: 1 -4090000000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_0_time_window_us -Lines: 1 -999424 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_1_max_power_uw -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_1_name -Lines: 1 -short_term -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw -Lines: 1 -4090000000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/constraint_1_time_window_us -Lines: 1 -2440 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/enabled -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/energy_uj -Lines: 1 -240422366267 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/max_energy_range_uj -Lines: 1 -262143328850 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/name -Lines: 1 -package-0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0/uevent -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/powercap/intel-rapl:0:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/constraint_0_max_power_uw -Lines: 0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/constraint_0_name -Lines: 1 -long_term -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/constraint_0_power_limit_uw -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/constraint_0_time_window_us -Lines: 1 -976 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/enabled -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/energy_uj -Lines: 1 -118821284256 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/max_energy_range_uj -Lines: 1 -262143328850 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/name -Lines: 1 -core -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/powercap/intel-rapl:0:0/uevent -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/thermal -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/thermal/cooling_device0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device0/cur_state -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device0/max_state -Lines: 1 -50 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device0/type -Lines: 1 -Processor -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/thermal/cooling_device1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device1/cur_state -Lines: 1 --1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device1/max_state -Lines: 1 -27 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/cooling_device1/type -Lines: 1 -intel_powerclamp -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/thermal/thermal_zone0 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone0/policy -Lines: 1 -step_wise -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone0/temp -Lines: 1 -49925 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone0/type -Lines: 1 -bcm2835_thermal -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/class/thermal/thermal_zone1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone1/mode -Lines: 1 -enabled -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone1/passive -Lines: 1 -0 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone1/policy -Lines: 1 -step_wise -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone1/temp -Lines: 1 -44000 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/class/thermal/thermal_zone1/type -Lines: 1 -acpitz -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/device -SymlinkTo: ../../../ACPI0003:00 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/online -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/async -Lines: 1 -disabled -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/autosuspend_delay_ms -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/control -Lines: 1 -auto -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_active_kids -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_active_time -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_enabled -Lines: 1 -disabled -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_status -Lines: 1 -unsupported -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_suspended_time -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/runtime_usage -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup -Lines: 1 -enabled -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_abort_count -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_active -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_active_count -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_count -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_expire_count -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_last_time_ms -Lines: 1 -10598 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_max_time_ms -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_prevent_sleep_time_ms -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/power/wakeup_total_time_ms -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/subsystem -SymlinkTo: ../../../../../../../../../class/power_supply -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/type -Lines: 1 -Mains -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/ACPI0003:00/power_supply/AC/uevent -Lines: 2 -POWER_SUPPLY_NAME=AC -POWER_SUPPLY_ONLINE=0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/alarm -Lines: 1 -2369000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/capacity -Lines: 1 -98 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/capacity_level -Lines: 1 -Normal -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/charge_start_threshold -Lines: 1 -95 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/charge_stop_threshold -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/cycle_count -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/device -SymlinkTo: ../../../PNP0C0A:00 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_full -Lines: 1 -50060000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_full_design -Lines: 1 -47520000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/energy_now -Lines: 1 -49450000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/manufacturer -Lines: 1 -LGC -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/model_name -Lines: 1 -LNV-45N1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/async -Lines: 1 -disabled -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/autosuspend_delay_ms -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/control -Lines: 1 -auto -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_active_kids -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_active_time -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_enabled -Lines: 1 -disabled -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_status -Lines: 1 -unsupported -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_suspended_time -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power/runtime_usage -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/power_now -Lines: 1 -4830000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/present -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/serial_number -Lines: 1 -38109 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/status -Lines: 1 -Discharging -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/subsystem -SymlinkTo: ../../../../../../../../../class/power_supply -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/technology -Lines: 1 -Li-ion -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/type -Lines: 1 -Battery -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/uevent -Lines: 16 -POWER_SUPPLY_NAME=BAT0 -POWER_SUPPLY_STATUS=Discharging -POWER_SUPPLY_PRESENT=1 -POWER_SUPPLY_TECHNOLOGY=Li-ion -POWER_SUPPLY_CYCLE_COUNT=0 -POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000 -POWER_SUPPLY_VOLTAGE_NOW=11750000 -POWER_SUPPLY_POWER_NOW=5064000 -POWER_SUPPLY_ENERGY_FULL_DESIGN=47520000 -POWER_SUPPLY_ENERGY_FULL=47390000 -POWER_SUPPLY_ENERGY_NOW=40730000 -POWER_SUPPLY_CAPACITY=85 -POWER_SUPPLY_CAPACITY_LEVEL=Normal -POWER_SUPPLY_MODEL_NAME=LNV-45N1 -POWER_SUPPLY_MANUFACTURER=LGC -POWER_SUPPLY_SERIAL_NUMBER=38109 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/voltage_min_design -Lines: 1 -10800000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/PNP0C09:00/PNP0C0A:00/power_supply/BAT0/voltage_now -Lines: 1 -12229000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/dirty_data -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_hits -Lines: 1 -289 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_hits -Lines: 1 -546 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/io_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/metadata_written -Lines: 1 -512 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/priority_stats -Lines: 5 -Unused: 99% -Metadata: 0% -Average: 10473 -Sectors per Q: 64 -Quantiles: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946] -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/written -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/pci0000:00/0000:00:1f.6 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/ari_enabled -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/broken_parity_status -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/class -Lines: 1 -0x020000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/consistent_dma_mask_bits -Lines: 1 -64 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/d3cold_allowed -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/device -Lines: 1 -0x15d7 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/dma_mask_bits -Lines: 1 -64 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/driver_override -Lines: 1 -(null) -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/irq -Lines: 1 -140 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/local_cpulist -Lines: 1 -0-7 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/local_cpus -Lines: 1 -ff -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/modalias -Lines: 1 -pci:v00008086d000015D7sv000017AAsd0000225Abc02sc00i00 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/msi_bus -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/numa_node -Lines: 1 --1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/resource -Lines: 13 -0x00000000ec200000 0x00000000ec21ffff 0x0000000000040200 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -0x0000000000000000 0x0000000000000000 0x0000000000000000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/revision -Lines: 1 -0x21 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/subsystem_device -Lines: 1 -0x225a -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/subsystem_vendor -Lines: 1 -0x17aa -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/uevent -Lines: 6 -DRIVER=e1000e -PCI_CLASS=20000 -PCI_ID=8086:15D7 -PCI_SUBSYS_ID=17AA:225A -PCI_SLOT_NAME=0000:00:1f.6 -MODALIAS=pci:v00008086d000015D7sv000017AAsd0000225Abc02sc00i00 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/pci0000:00/0000:00:1f.6/vendor -Lines: 1 -0x8086 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/rbd -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/rbd/0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/rbd/0/name -Lines: 1 -demo -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/rbd/0/pool -Lines: 1 -iscsi-images -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/rbd/1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/rbd/1/name -Lines: 1 -wrong -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/rbd/1/pool -Lines: 1 -wrong-images -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/clocksource -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/clocksource/clocksource0 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/clocksource/clocksource0/available_clocksource -Lines: 1 -tsc hpet acpi_pm -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/clocksource/clocksource0/current_clocksource -Lines: 1 -tsc -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu0 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/cpufreq -SymlinkTo: ../cpufreq/policy0 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu0/thermal_throttle -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/thermal_throttle/core_throttle_count -Lines: 1 -10084 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/thermal_throttle/package_throttle_count -Lines: 1 -34818 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu0/topology -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/core_id -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/core_siblings -Lines: 1 -ff -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/core_siblings_list -Lines: 1 -0-7 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/physical_package_id -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/thread_siblings -Lines: 1 -11 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu0/topology/thread_siblings_list -Lines: 1 -0,4 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu1 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu1/cpufreq -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq -Lines: 1 -1200195 -Mode: 400 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq -Lines: 1 -3300000 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq -Lines: 1 -1200000 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_transition_latency -Lines: 1 -4294967295 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/related_cpus -Lines: 1 -1 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors -Lines: 1 -performance powersave -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver -Lines: 1 -intel_pstate -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor -Lines: 1 -powersave -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq -Lines: 1 -3300000 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq -Lines: 1 -1200000 -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed -Lines: 1 - -Mode: 664 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu1/thermal_throttle -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/thermal_throttle/core_throttle_count -Lines: 1 -523 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/thermal_throttle/package_throttle_count -Lines: 1 -34818 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpu1/topology -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/core_id -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/core_siblings -Lines: 1 -ff -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/core_siblings_list -Lines: 1 -0-7 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/physical_package_id -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/thread_siblings -Lines: 1 -22 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpu1/topology/thread_siblings_list -Lines: 1 -1,5 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpufreq -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpufreq/policy0 -Mode: 775 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/affected_cpus -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq -Lines: 1 -2400000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq -Lines: 1 -800000 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/related_cpus -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors -Lines: 1 -performance powersave -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq -Lines: 1 -1219917 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_driver -Lines: 1 -intel_pstate -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_governor -Lines: 1 -powersave -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq -Lines: 1 -2400000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq -Lines: 1 -800000 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed -Lines: 1 - -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/devices/system/cpu/cpufreq/policy1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/average_key_size -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0 -Mode: 777 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/dirty_data -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_hits -Lines: 1 -289 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_hits -Lines: 1 -546 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/btree_cache_size -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0 -Mode: 777 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/io_errors -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/metadata_written -Lines: 1 -512 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/priority_stats -Lines: 5 -Unused: 99% -Metadata: 0% -Average: 10473 -Sectors per Q: 64 -Quantiles: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946] -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/written -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache_available_percent -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/congested -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/active_journal_entries -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_nodes -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_read_average_duration_us -Lines: 1 -1305 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/cache_read_races -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/root_usage_percent -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hits -Lines: 1 -289 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hit_ratio -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/bypassed -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_hits -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hit_ratio -Lines: 1 -100 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hits -Lines: 1 -546 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_miss_collisions -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_misses -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_readaheads -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/tree_depth -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_may_use -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_readonly -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/bytes_used -Lines: 1 -808189952 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/disk_total -Lines: 1 -2147483648 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/disk_used -Lines: 1 -808189952 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/flags -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0/total_bytes -Lines: 1 -2147483648 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/raid0/used_bytes -Lines: 1 -808189952 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/total_bytes -Lines: 1 -2147483648 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/data/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/global_rsv_reserved -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/global_rsv_size -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_may_use -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_readonly -Lines: 1 -131072 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/bytes_used -Lines: 1 -933888 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/disk_total -Lines: 1 -2147483648 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/disk_used -Lines: 1 -1867776 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/flags -Lines: 1 -4 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1/total_bytes -Lines: 1 -1073741824 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/raid1/used_bytes -Lines: 1 -933888 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/total_bytes -Lines: 1 -1073741824 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/metadata/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_may_use -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_readonly -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/bytes_used -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/disk_total -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/disk_used -Lines: 1 -32768 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/flags -Lines: 1 -2 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1/total_bytes -Lines: 1 -8388608 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/raid1/used_bytes -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/total_bytes -Lines: 1 -8388608 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/allocation/system/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/clone_alignment -Lines: 1 -4096 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop25 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop25/size -Lines: 1 -20971520 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop26 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/devices/loop26/size -Lines: 1 -20971520 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/big_metadata -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/extended_iref -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/mixed_backref -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/features/skinny_metadata -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/label -Lines: 1 -fixture -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/metadata_uuid -Lines: 1 -0abb23a9-579b-43e6-ad30-227ef47fcb9d -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/nodesize -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/quota_override -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/0abb23a9-579b-43e6-ad30-227ef47fcb9d/sectorsize -Lines: 1 -4096 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_may_use -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_readonly -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/bytes_used -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/disk_total -Lines: 1 -644087808 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/disk_used -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/flags -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5/total_bytes -Lines: 1 -644087808 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/raid5/used_bytes -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/total_bytes -Lines: 1 -644087808 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/data/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/global_rsv_reserved -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/global_rsv_size -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_may_use -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_readonly -Lines: 1 -262144 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/bytes_used -Lines: 1 -114688 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/disk_total -Lines: 1 -429391872 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/disk_used -Lines: 1 -114688 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/flags -Lines: 1 -4 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6/total_bytes -Lines: 1 -429391872 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/raid6/used_bytes -Lines: 1 -114688 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/total_bytes -Lines: 1 -429391872 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/metadata/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_may_use -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_readonly -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_reserved -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/bytes_used -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/disk_total -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/disk_used -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/flags -Lines: 1 -2 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6/total_bytes -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/raid6/used_bytes -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/total_bytes -Lines: 1 -16777216 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/allocation/system/total_bytes_pinned -Lines: 1 -0 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/clone_alignment -Lines: 1 -4096 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop22 -SymlinkTo: ../../../../devices/virtual/block/loop22 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop23 -SymlinkTo: ../../../../devices/virtual/block/loop23 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop24 -SymlinkTo: ../../../../devices/virtual/block/loop24 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/devices/loop25 -SymlinkTo: ../../../../devices/virtual/block/loop25 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/big_metadata -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/extended_iref -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/mixed_backref -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/raid56 -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/features/skinny_metadata -Lines: 1 -1 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/label -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/metadata_uuid -Lines: 1 -7f07c59f-6136-449c-ab87-e1cf2328731b -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/nodesize -Lines: 1 -16384 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/quota_override -Lines: 1 -0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/btrfs/7f07c59f-6136-449c-ab87-e1cf2328731b/sectorsize -Lines: 1 -4096 -Mode: 444 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/xfs -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/xfs/sda1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/xfs/sda1/stats -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/xfs/sda1/stats/stats -Lines: 1 -extent_alloc 1 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/xfs/sdb1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/fs/xfs/sdb1/stats -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/fs/xfs/sdb1/stats/stats -Lines: 1 -extent_alloc 2 0 0 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/fileio_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/fileio_1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G/udev_path -Lines: 1 -/home/iscsi/file_back_1G -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/iblock_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1/udev_path -Lines: 1 -/dev/rbd1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/rbd_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo/udev_path -Lines: 1 -/dev/rbd/iscsi-images/demo -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/rd_mcp_119 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G/udev_path -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/7f4a4eb56d -SymlinkTo: ../../../../../../target/core/rd_mcp_119/ramdisk_lio_1G -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds -Lines: 1 -204950 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes -Lines: 1 -10325 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes -Lines: 1 -40325 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/795b7c7026 -SymlinkTo: ../../../../../../target/core/iblock_0/block_lio_rbd1 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds -Lines: 1 -104950 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes -Lines: 1 -20095 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes -Lines: 1 -71235 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/fff5e16686 -SymlinkTo: ../../../../../../target/core/fileio_1/file_lio_1G -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds -Lines: 1 -301950 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes -Lines: 1 -10195 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes -Lines: 1 -30195 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/enable -Lines: 1 -1 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0 -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/eba1edf893 -SymlinkTo: ../../../../../../target/core/rbd_0/iscsi-images-demo -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds -Lines: 1 -1234 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes -Lines: 1 -1504 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes -Lines: 1 -4733 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/github.com/prometheus/procfs/fs.go b/vendor/github.com/prometheus/procfs/fs.go deleted file mode 100644 index 0102ab0f..00000000 --- a/vendor/github.com/prometheus/procfs/fs.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "github.com/prometheus/procfs/internal/fs" -) - -// FS represents the pseudo-filesystem sys, which provides an interface to -// kernel data structures. -type FS struct { - proc fs.FS -} - -// DefaultMountPoint is the common mount point of the proc filesystem. -const DefaultMountPoint = fs.DefaultProcMountPoint - -// NewDefaultFS returns a new proc FS mounted under the default proc mountPoint. -// It will error if the mount point directory can't be read or is a file. -func NewDefaultFS() (FS, error) { - return NewFS(DefaultMountPoint) -} - -// NewFS returns a new proc FS mounted under the given proc mountPoint. It will error -// if the mount point directory can't be read or is a file. -func NewFS(mountPoint string) (FS, error) { - fs, err := fs.NewFS(mountPoint) - if err != nil { - return FS{}, err - } - return FS{fs}, nil -} diff --git a/vendor/github.com/prometheus/procfs/go.mod b/vendor/github.com/prometheus/procfs/go.mod deleted file mode 100644 index 0e04e5d1..00000000 --- a/vendor/github.com/prometheus/procfs/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/prometheus/procfs - -go 1.12 - -require ( - github.com/google/go-cmp v0.3.1 - golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e -) diff --git a/vendor/github.com/prometheus/procfs/go.sum b/vendor/github.com/prometheus/procfs/go.sum deleted file mode 100644 index 33b824b0..00000000 --- a/vendor/github.com/prometheus/procfs/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/vendor/github.com/prometheus/procfs/internal/fs/fs.go b/vendor/github.com/prometheus/procfs/internal/fs/fs.go deleted file mode 100644 index 565e89e4..00000000 --- a/vendor/github.com/prometheus/procfs/internal/fs/fs.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 fs - -import ( - "fmt" - "os" - "path/filepath" -) - -const ( - // DefaultProcMountPoint is the common mount point of the proc filesystem. - DefaultProcMountPoint = "/proc" - - // DefaultSysMountPoint is the common mount point of the sys filesystem. - DefaultSysMountPoint = "/sys" - - // DefaultConfigfsMountPoint is the common mount point of the configfs - DefaultConfigfsMountPoint = "/sys/kernel/config" -) - -// FS represents a pseudo-filesystem, normally /proc or /sys, which provides an -// interface to kernel data structures. -type FS string - -// NewFS returns a new FS mounted under the given mountPoint. It will error -// if the mount point can't be read. -func NewFS(mountPoint string) (FS, error) { - info, err := os.Stat(mountPoint) - if err != nil { - return "", fmt.Errorf("could not read %s: %s", mountPoint, err) - } - if !info.IsDir() { - return "", fmt.Errorf("mount point %s is not a directory", mountPoint) - } - - return FS(mountPoint), nil -} - -// Path appends the given path elements to the filesystem path, adding separators -// as necessary. -func (fs FS) Path(p ...string) string { - return filepath.Join(append([]string{string(fs)}, p...)...) -} diff --git a/vendor/github.com/prometheus/procfs/internal/util/parse.go b/vendor/github.com/prometheus/procfs/internal/util/parse.go deleted file mode 100644 index 755591d9..00000000 --- a/vendor/github.com/prometheus/procfs/internal/util/parse.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 util - -import ( - "io/ioutil" - "strconv" - "strings" -) - -// ParseUint32s parses a slice of strings into a slice of uint32s. -func ParseUint32s(ss []string) ([]uint32, error) { - us := make([]uint32, 0, len(ss)) - for _, s := range ss { - u, err := strconv.ParseUint(s, 10, 32) - if err != nil { - return nil, err - } - - us = append(us, uint32(u)) - } - - return us, nil -} - -// ParseUint64s parses a slice of strings into a slice of uint64s. -func ParseUint64s(ss []string) ([]uint64, error) { - us := make([]uint64, 0, len(ss)) - for _, s := range ss { - u, err := strconv.ParseUint(s, 10, 64) - if err != nil { - return nil, err - } - - us = append(us, u) - } - - return us, nil -} - -// ParsePInt64s parses a slice of strings into a slice of int64 pointers. -func ParsePInt64s(ss []string) ([]*int64, error) { - us := make([]*int64, 0, len(ss)) - for _, s := range ss { - u, err := strconv.ParseInt(s, 10, 64) - if err != nil { - return nil, err - } - - us = append(us, &u) - } - - return us, nil -} - -// ReadUintFromFile reads a file and attempts to parse a uint64 from it. -func ReadUintFromFile(path string) (uint64, error) { - data, err := ioutil.ReadFile(path) - if err != nil { - return 0, err - } - return strconv.ParseUint(strings.TrimSpace(string(data)), 10, 64) -} - -// ParseBool parses a string into a boolean pointer. -func ParseBool(b string) *bool { - var truth bool - switch b { - case "enabled": - truth = true - case "disabled": - truth = false - default: - return nil - } - return &truth -} diff --git a/vendor/github.com/prometheus/procfs/internal/util/readfile.go b/vendor/github.com/prometheus/procfs/internal/util/readfile.go deleted file mode 100644 index 8051161b..00000000 --- a/vendor/github.com/prometheus/procfs/internal/util/readfile.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 util - -import ( - "io" - "io/ioutil" - "os" -) - -// ReadFileNoStat uses ioutil.ReadAll to read contents of entire file. -// This is similar to ioutil.ReadFile but without the call to os.Stat, because -// many files in /proc and /sys report incorrect file sizes (either 0 or 4096). -// Reads a max file size of 512kB. For files larger than this, a scanner -// should be used. -func ReadFileNoStat(filename string) ([]byte, error) { - const maxBufferSize = 1024 * 512 - - f, err := os.Open(filename) - if err != nil { - return nil, err - } - defer f.Close() - - reader := io.LimitReader(f, maxBufferSize) - return ioutil.ReadAll(reader) -} diff --git a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go deleted file mode 100644 index c07de0b6..00000000 --- a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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. - -// +build linux,!appengine - -package util - -import ( - "bytes" - "os" - "syscall" -) - -// SysReadFile is a simplified ioutil.ReadFile that invokes syscall.Read directly. -// https://github.com/prometheus/node_exporter/pull/728/files -// -// Note that this function will not read files larger than 128 bytes. -func SysReadFile(file string) (string, error) { - f, err := os.Open(file) - if err != nil { - return "", err - } - defer f.Close() - - // On some machines, hwmon drivers are broken and return EAGAIN. This causes - // Go's ioutil.ReadFile implementation to poll forever. - // - // Since we either want to read data or bail immediately, do the simplest - // possible read using syscall directly. - const sysFileBufferSize = 128 - b := make([]byte, sysFileBufferSize) - n, err := syscall.Read(int(f.Fd()), b) - if err != nil { - return "", err - } - - return string(bytes.TrimSpace(b[:n])), nil -} diff --git a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go deleted file mode 100644 index bd55b453..00000000 --- a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile_compat.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build linux,appengine !linux - -package util - -import ( - "fmt" -) - -// SysReadFile is here implemented as a noop for builds that do not support -// the read syscall. For example Windows, or Linux on Google App Engine. -func SysReadFile(file string) (string, error) { - return "", fmt.Errorf("not supported on this platform") -} diff --git a/vendor/github.com/prometheus/procfs/internal/util/valueparser.go b/vendor/github.com/prometheus/procfs/internal/util/valueparser.go deleted file mode 100644 index ac93cb42..00000000 --- a/vendor/github.com/prometheus/procfs/internal/util/valueparser.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 util - -import ( - "strconv" -) - -// TODO(mdlayher): util packages are an anti-pattern and this should be moved -// somewhere else that is more focused in the future. - -// A ValueParser enables parsing a single string into a variety of data types -// in a concise and safe way. The Err method must be invoked after invoking -// any other methods to ensure a value was successfully parsed. -type ValueParser struct { - v string - err error -} - -// NewValueParser creates a ValueParser using the input string. -func NewValueParser(v string) *ValueParser { - return &ValueParser{v: v} -} - -// PInt64 interprets the underlying value as an int64 and returns a pointer to -// that value. -func (vp *ValueParser) PInt64() *int64 { - if vp.err != nil { - return nil - } - - // A base value of zero makes ParseInt infer the correct base using the - // string's prefix, if any. - const base = 0 - v, err := strconv.ParseInt(vp.v, base, 64) - if err != nil { - vp.err = err - return nil - } - - return &v -} - -// PUInt64 interprets the underlying value as an uint64 and returns a pointer to -// that value. -func (vp *ValueParser) PUInt64() *uint64 { - if vp.err != nil { - return nil - } - - // A base value of zero makes ParseInt infer the correct base using the - // string's prefix, if any. - const base = 0 - v, err := strconv.ParseUint(vp.v, base, 64) - if err != nil { - vp.err = err - return nil - } - - return &v -} - -// Err returns the last error, if any, encountered by the ValueParser. -func (vp *ValueParser) Err() error { - return vp.err -} diff --git a/vendor/github.com/prometheus/procfs/ipvs.go b/vendor/github.com/prometheus/procfs/ipvs.go deleted file mode 100644 index 89e44774..00000000 --- a/vendor/github.com/prometheus/procfs/ipvs.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "encoding/hex" - "errors" - "fmt" - "io" - "io/ioutil" - "net" - "os" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// IPVSStats holds IPVS statistics, as exposed by the kernel in `/proc/net/ip_vs_stats`. -type IPVSStats struct { - // Total count of connections. - Connections uint64 - // Total incoming packages processed. - IncomingPackets uint64 - // Total outgoing packages processed. - OutgoingPackets uint64 - // Total incoming traffic. - IncomingBytes uint64 - // Total outgoing traffic. - OutgoingBytes uint64 -} - -// IPVSBackendStatus holds current metrics of one virtual / real address pair. -type IPVSBackendStatus struct { - // The local (virtual) IP address. - LocalAddress net.IP - // The remote (real) IP address. - RemoteAddress net.IP - // The local (virtual) port. - LocalPort uint16 - // The remote (real) port. - RemotePort uint16 - // The local firewall mark - LocalMark string - // The transport protocol (TCP, UDP). - Proto string - // The current number of active connections for this virtual/real address pair. - ActiveConn uint64 - // The current number of inactive connections for this virtual/real address pair. - InactConn uint64 - // The current weight of this virtual/real address pair. - Weight uint64 -} - -// IPVSStats reads the IPVS statistics from the specified `proc` filesystem. -func (fs FS) IPVSStats() (IPVSStats, error) { - data, err := util.ReadFileNoStat(fs.proc.Path("net/ip_vs_stats")) - if err != nil { - return IPVSStats{}, err - } - - return parseIPVSStats(bytes.NewReader(data)) -} - -// parseIPVSStats performs the actual parsing of `ip_vs_stats`. -func parseIPVSStats(r io.Reader) (IPVSStats, error) { - var ( - statContent []byte - statLines []string - statFields []string - stats IPVSStats - ) - - statContent, err := ioutil.ReadAll(r) - if err != nil { - return IPVSStats{}, err - } - - statLines = strings.SplitN(string(statContent), "\n", 4) - if len(statLines) != 4 { - return IPVSStats{}, errors.New("ip_vs_stats corrupt: too short") - } - - statFields = strings.Fields(statLines[2]) - if len(statFields) != 5 { - return IPVSStats{}, errors.New("ip_vs_stats corrupt: unexpected number of fields") - } - - stats.Connections, err = strconv.ParseUint(statFields[0], 16, 64) - if err != nil { - return IPVSStats{}, err - } - stats.IncomingPackets, err = strconv.ParseUint(statFields[1], 16, 64) - if err != nil { - return IPVSStats{}, err - } - stats.OutgoingPackets, err = strconv.ParseUint(statFields[2], 16, 64) - if err != nil { - return IPVSStats{}, err - } - stats.IncomingBytes, err = strconv.ParseUint(statFields[3], 16, 64) - if err != nil { - return IPVSStats{}, err - } - stats.OutgoingBytes, err = strconv.ParseUint(statFields[4], 16, 64) - if err != nil { - return IPVSStats{}, err - } - - return stats, nil -} - -// IPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem. -func (fs FS) IPVSBackendStatus() ([]IPVSBackendStatus, error) { - file, err := os.Open(fs.proc.Path("net/ip_vs")) - if err != nil { - return nil, err - } - defer file.Close() - - return parseIPVSBackendStatus(file) -} - -func parseIPVSBackendStatus(file io.Reader) ([]IPVSBackendStatus, error) { - var ( - status []IPVSBackendStatus - scanner = bufio.NewScanner(file) - proto string - localMark string - localAddress net.IP - localPort uint16 - err error - ) - - for scanner.Scan() { - fields := strings.Fields(scanner.Text()) - if len(fields) == 0 { - continue - } - switch { - case fields[0] == "IP" || fields[0] == "Prot" || fields[1] == "RemoteAddress:Port": - continue - case fields[0] == "TCP" || fields[0] == "UDP": - if len(fields) < 2 { - continue - } - proto = fields[0] - localMark = "" - localAddress, localPort, err = parseIPPort(fields[1]) - if err != nil { - return nil, err - } - case fields[0] == "FWM": - if len(fields) < 2 { - continue - } - proto = fields[0] - localMark = fields[1] - localAddress = nil - localPort = 0 - case fields[0] == "->": - if len(fields) < 6 { - continue - } - remoteAddress, remotePort, err := parseIPPort(fields[1]) - if err != nil { - return nil, err - } - weight, err := strconv.ParseUint(fields[3], 10, 64) - if err != nil { - return nil, err - } - activeConn, err := strconv.ParseUint(fields[4], 10, 64) - if err != nil { - return nil, err - } - inactConn, err := strconv.ParseUint(fields[5], 10, 64) - if err != nil { - return nil, err - } - status = append(status, IPVSBackendStatus{ - LocalAddress: localAddress, - LocalPort: localPort, - LocalMark: localMark, - RemoteAddress: remoteAddress, - RemotePort: remotePort, - Proto: proto, - Weight: weight, - ActiveConn: activeConn, - InactConn: inactConn, - }) - } - } - return status, nil -} - -func parseIPPort(s string) (net.IP, uint16, error) { - var ( - ip net.IP - err error - ) - - switch len(s) { - case 13: - ip, err = hex.DecodeString(s[0:8]) - if err != nil { - return nil, 0, err - } - case 46: - ip = net.ParseIP(s[1:40]) - if ip == nil { - return nil, 0, fmt.Errorf("invalid IPv6 address: %s", s[1:40]) - } - default: - return nil, 0, fmt.Errorf("unexpected IP:Port: %s", s) - } - - portString := s[len(s)-4:] - if len(portString) != 4 { - return nil, 0, fmt.Errorf("unexpected port string format: %s", portString) - } - port, err := strconv.ParseUint(portString, 16, 16) - if err != nil { - return nil, 0, err - } - - return ip, uint16(port), nil -} diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go deleted file mode 100644 index 2af3ada1..00000000 --- a/vendor/github.com/prometheus/procfs/mdstat.go +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "fmt" - "io/ioutil" - "regexp" - "strconv" - "strings" -) - -var ( - statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`) - recoveryLineRE = regexp.MustCompile(`\((\d+)/\d+\)`) -) - -// MDStat holds info parsed from /proc/mdstat. -type MDStat struct { - // Name of the device. - Name string - // activity-state of the device. - ActivityState string - // Number of active disks. - DisksActive int64 - // Total number of disks the device requires. - DisksTotal int64 - // Number of failed disks. - DisksFailed int64 - // Spare disks in the device. - DisksSpare int64 - // Number of blocks the device holds. - BlocksTotal int64 - // Number of blocks on the device that are in sync. - BlocksSynced int64 -} - -// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of -// structs containing the relevant info. More information available here: -// https://raid.wiki.kernel.org/index.php/Mdstat -func (fs FS) MDStat() ([]MDStat, error) { - data, err := ioutil.ReadFile(fs.proc.Path("mdstat")) - if err != nil { - return nil, fmt.Errorf("error parsing mdstat %s: %s", fs.proc.Path("mdstat"), err) - } - mdstat, err := parseMDStat(data) - if err != nil { - return nil, fmt.Errorf("error parsing mdstat %s: %s", fs.proc.Path("mdstat"), err) - } - return mdstat, nil -} - -// parseMDStat parses data from mdstat file (/proc/mdstat) and returns a slice of -// structs containing the relevant info. -func parseMDStat(mdStatData []byte) ([]MDStat, error) { - mdStats := []MDStat{} - lines := strings.Split(string(mdStatData), "\n") - - for i, line := range lines { - if strings.TrimSpace(line) == "" || line[0] == ' ' || - strings.HasPrefix(line, "Personalities") || - strings.HasPrefix(line, "unused") { - continue - } - - deviceFields := strings.Fields(line) - if len(deviceFields) < 3 { - return nil, fmt.Errorf("not enough fields in mdline (expected at least 3): %s", line) - } - mdName := deviceFields[0] // mdx - state := deviceFields[2] // active or inactive - - if len(lines) <= i+3 { - return nil, fmt.Errorf( - "error parsing %s: too few lines for md device", - mdName, - ) - } - - // Failed disks have the suffix (F) & Spare disks have the suffix (S). - fail := int64(strings.Count(line, "(F)")) - spare := int64(strings.Count(line, "(S)")) - active, total, size, err := evalStatusLine(lines[i], lines[i+1]) - - if err != nil { - return nil, fmt.Errorf("error parsing md device lines: %s", err) - } - - syncLineIdx := i + 2 - if strings.Contains(lines[i+2], "bitmap") { // skip bitmap line - syncLineIdx++ - } - - // If device is syncing at the moment, get the number of currently - // synced bytes, otherwise that number equals the size of the device. - syncedBlocks := size - recovering := strings.Contains(lines[syncLineIdx], "recovery") - resyncing := strings.Contains(lines[syncLineIdx], "resync") - - // Append recovery and resyncing state info. - if recovering || resyncing { - if recovering { - state = "recovering" - } else { - state = "resyncing" - } - - // Handle case when resync=PENDING or resync=DELAYED. - if strings.Contains(lines[syncLineIdx], "PENDING") || - strings.Contains(lines[syncLineIdx], "DELAYED") { - syncedBlocks = 0 - } else { - syncedBlocks, err = evalRecoveryLine(lines[syncLineIdx]) - if err != nil { - return nil, fmt.Errorf("error parsing sync line in md device %s: %s", mdName, err) - } - } - } - - mdStats = append(mdStats, MDStat{ - Name: mdName, - ActivityState: state, - DisksActive: active, - DisksFailed: fail, - DisksSpare: spare, - DisksTotal: total, - BlocksTotal: size, - BlocksSynced: syncedBlocks, - }) - } - - return mdStats, nil -} - -func evalStatusLine(deviceLine, statusLine string) (active, total, size int64, err error) { - - sizeStr := strings.Fields(statusLine)[0] - size, err = strconv.ParseInt(sizeStr, 10, 64) - if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) - } - - if strings.Contains(deviceLine, "raid0") || strings.Contains(deviceLine, "linear") { - // In the device deviceLine, only disks have a number associated with them in []. - total = int64(strings.Count(deviceLine, "[")) - return total, total, size, nil - } - - if strings.Contains(deviceLine, "inactive") { - return 0, 0, size, nil - } - - matches := statusLineRE.FindStringSubmatch(statusLine) - if len(matches) != 4 { - return 0, 0, 0, fmt.Errorf("couldn't find all the substring matches: %s", statusLine) - } - - total, err = strconv.ParseInt(matches[2], 10, 64) - if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) - } - - active, err = strconv.ParseInt(matches[3], 10, 64) - if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) - } - - return active, total, size, nil -} - -func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, err error) { - matches := recoveryLineRE.FindStringSubmatch(recoveryLine) - if len(matches) != 2 { - return 0, fmt.Errorf("unexpected recoveryLine: %s", recoveryLine) - } - - syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64) - if err != nil { - return 0, fmt.Errorf("%s in recoveryLine: %s", err, recoveryLine) - } - - return syncedBlocks, nil -} diff --git a/vendor/github.com/prometheus/procfs/meminfo.go b/vendor/github.com/prometheus/procfs/meminfo.go deleted file mode 100644 index dd630c04..00000000 --- a/vendor/github.com/prometheus/procfs/meminfo.go +++ /dev/null @@ -1,453 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// Meminfo represents memory statistics. -type Meminfo struct { - // Total usable ram (i.e. physical ram minus a few reserved - // bits and the kernel binary code) - MemTotal uint64 - // The sum of LowFree+HighFree - MemFree uint64 - // An estimate of how much memory is available for starting - // new applications, without swapping. Calculated from - // MemFree, SReclaimable, the size of the file LRU lists, and - // the low watermarks in each zone. The estimate takes into - // account that the system needs some page cache to function - // well, and that not all reclaimable slab will be - // reclaimable, due to items being in use. The impact of those - // factors will vary from system to system. - MemAvailable uint64 - // Relatively temporary storage for raw disk blocks shouldn't - // get tremendously large (20MB or so) - Buffers uint64 - Cached uint64 - // Memory that once was swapped out, is swapped back in but - // still also is in the swapfile (if memory is needed it - // doesn't need to be swapped out AGAIN because it is already - // in the swapfile. This saves I/O) - SwapCached uint64 - // Memory that has been used more recently and usually not - // reclaimed unless absolutely necessary. - Active uint64 - // Memory which has been less recently used. It is more - // eligible to be reclaimed for other purposes - Inactive uint64 - ActiveAnon uint64 - InactiveAnon uint64 - ActiveFile uint64 - InactiveFile uint64 - Unevictable uint64 - Mlocked uint64 - // total amount of swap space available - SwapTotal uint64 - // Memory which has been evicted from RAM, and is temporarily - // on the disk - SwapFree uint64 - // Memory which is waiting to get written back to the disk - Dirty uint64 - // Memory which is actively being written back to the disk - Writeback uint64 - // Non-file backed pages mapped into userspace page tables - AnonPages uint64 - // files which have been mapped, such as libraries - Mapped uint64 - Shmem uint64 - // in-kernel data structures cache - Slab uint64 - // Part of Slab, that might be reclaimed, such as caches - SReclaimable uint64 - // Part of Slab, that cannot be reclaimed on memory pressure - SUnreclaim uint64 - KernelStack uint64 - // amount of memory dedicated to the lowest level of page - // tables. - PageTables uint64 - // NFS pages sent to the server, but not yet committed to - // stable storage - NFSUnstable uint64 - // Memory used for block device "bounce buffers" - Bounce uint64 - // Memory used by FUSE for temporary writeback buffers - WritebackTmp uint64 - // Based on the overcommit ratio ('vm.overcommit_ratio'), - // this is the total amount of memory currently available to - // be allocated on the system. This limit is only adhered to - // if strict overcommit accounting is enabled (mode 2 in - // 'vm.overcommit_memory'). - // The CommitLimit is calculated with the following formula: - // CommitLimit = ([total RAM pages] - [total huge TLB pages]) * - // overcommit_ratio / 100 + [total swap pages] - // For example, on a system with 1G of physical RAM and 7G - // of swap with a `vm.overcommit_ratio` of 30 it would - // yield a CommitLimit of 7.3G. - // For more details, see the memory overcommit documentation - // in vm/overcommit-accounting. - CommitLimit uint64 - // The amount of memory presently allocated on the system. - // The committed memory is a sum of all of the memory which - // has been allocated by processes, even if it has not been - // "used" by them as of yet. A process which malloc()'s 1G - // of memory, but only touches 300M of it will show up as - // using 1G. This 1G is memory which has been "committed" to - // by the VM and can be used at any time by the allocating - // application. With strict overcommit enabled on the system - // (mode 2 in 'vm.overcommit_memory'),allocations which would - // exceed the CommitLimit (detailed above) will not be permitted. - // This is useful if one needs to guarantee that processes will - // not fail due to lack of memory once that memory has been - // successfully allocated. - CommittedAS uint64 - // total size of vmalloc memory area - VmallocTotal uint64 - // amount of vmalloc area which is used - VmallocUsed uint64 - // largest contiguous block of vmalloc area which is free - VmallocChunk uint64 - HardwareCorrupted uint64 - AnonHugePages uint64 - ShmemHugePages uint64 - ShmemPmdMapped uint64 - CmaTotal uint64 - CmaFree uint64 - HugePagesTotal uint64 - HugePagesFree uint64 - HugePagesRsvd uint64 - HugePagesSurp uint64 - Hugepagesize uint64 - DirectMap4k uint64 - DirectMap2M uint64 - DirectMap1G uint64 -} - -// Meminfo returns an information about current kernel/system memory statistics. -// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -func (fs FS) Meminfo() (Meminfo, error) { - data, err := util.ReadFileNoStat(fs.proc.Path("meminfo")) - if err != nil { - return Meminfo{}, err - } - return parseMemInfo(data) -} - -func parseMemInfo(info []byte) (m Meminfo, err error) { - scanner := bufio.NewScanner(bytes.NewReader(info)) - - var line string - for scanner.Scan() { - line = scanner.Text() - - field := strings.Fields(line) - switch field[0] { - case "MemTotal:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.MemTotal = v - case "MemFree:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.MemFree = v - case "MemAvailable:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.MemAvailable = v - case "Buffers:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Buffers = v - case "Cached:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Cached = v - case "SwapCached:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.SwapCached = v - case "Active:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Active = v - case "Inactive:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Inactive = v - case "Active(anon):": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.ActiveAnon = v - case "Inactive(anon):": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.InactiveAnon = v - case "Active(file):": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.ActiveFile = v - case "Inactive(file):": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.InactiveFile = v - case "Unevictable:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Unevictable = v - case "Mlocked:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Mlocked = v - case "SwapTotal:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.SwapTotal = v - case "SwapFree:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.SwapFree = v - case "Dirty:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Dirty = v - case "Writeback:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Writeback = v - case "AnonPages:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.AnonPages = v - case "Mapped:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Mapped = v - case "Shmem:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Shmem = v - case "Slab:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Slab = v - case "SReclaimable:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.SReclaimable = v - case "SUnreclaim:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.SUnreclaim = v - case "KernelStack:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.KernelStack = v - case "PageTables:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.PageTables = v - case "NFS_Unstable:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.NFSUnstable = v - case "Bounce:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Bounce = v - case "WritebackTmp:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.WritebackTmp = v - case "CommitLimit:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.CommitLimit = v - case "Committed_AS:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.CommittedAS = v - case "VmallocTotal:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.VmallocTotal = v - case "VmallocUsed:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.VmallocUsed = v - case "VmallocChunk:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.VmallocChunk = v - case "HardwareCorrupted:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.HardwareCorrupted = v - case "AnonHugePages:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.AnonHugePages = v - case "ShmemHugePages:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.ShmemHugePages = v - case "ShmemPmdMapped:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.ShmemPmdMapped = v - case "CmaTotal:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.CmaTotal = v - case "CmaFree:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.CmaFree = v - case "HugePages_Total:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.HugePagesTotal = v - case "HugePages_Free:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.HugePagesFree = v - case "HugePages_Rsvd:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.HugePagesRsvd = v - case "HugePages_Surp:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.HugePagesSurp = v - case "Hugepagesize:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.Hugepagesize = v - case "DirectMap4k:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.DirectMap4k = v - case "DirectMap2M:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.DirectMap2M = v - case "DirectMap1G:": - v, err := strconv.ParseUint(field[1], 0, 64) - if err != nil { - return Meminfo{}, err - } - m.DirectMap1G = v - } - } - return m, nil -} diff --git a/vendor/github.com/prometheus/procfs/mountinfo.go b/vendor/github.com/prometheus/procfs/mountinfo.go deleted file mode 100644 index bb01bb5a..00000000 --- a/vendor/github.com/prometheus/procfs/mountinfo.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "fmt" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// A MountInfo is a type that describes the details, options -// for each mount, parsed from /proc/self/mountinfo. -// The fields described in each entry of /proc/self/mountinfo -// is described in the following man page. -// http://man7.org/linux/man-pages/man5/proc.5.html -type MountInfo struct { - // Unique Id for the mount - MountId int - // The Id of the parent mount - ParentId int - // The value of `st_dev` for the files on this FS - MajorMinorVer string - // The pathname of the directory in the FS that forms - // the root for this mount - Root string - // The pathname of the mount point relative to the root - MountPoint string - // Mount options - Options map[string]string - // Zero or more optional fields - OptionalFields map[string]string - // The Filesystem type - FSType string - // FS specific information or "none" - Source string - // Superblock options - SuperOptions map[string]string -} - -// Reads each line of the mountinfo file, and returns a list of formatted MountInfo structs. -func parseMountInfo(info []byte) ([]*MountInfo, error) { - mounts := []*MountInfo{} - scanner := bufio.NewScanner(bytes.NewReader(info)) - for scanner.Scan() { - mountString := scanner.Text() - parsedMounts, err := parseMountInfoString(mountString) - if err != nil { - return nil, err - } - mounts = append(mounts, parsedMounts) - } - - err := scanner.Err() - return mounts, err -} - -// Parses a mountinfo file line, and converts it to a MountInfo struct. -// An important check here is to see if the hyphen separator, as if it does not exist, -// it means that the line is malformed. -func parseMountInfoString(mountString string) (*MountInfo, error) { - var err error - - mountInfo := strings.Split(mountString, " ") - mountInfoLength := len(mountInfo) - if mountInfoLength < 11 { - return nil, fmt.Errorf("couldn't find enough fields in mount string: %s", mountString) - } - - if mountInfo[mountInfoLength-4] != "-" { - return nil, fmt.Errorf("couldn't find separator in expected field: %s", mountInfo[mountInfoLength-4]) - } - - mount := &MountInfo{ - MajorMinorVer: mountInfo[2], - Root: mountInfo[3], - MountPoint: mountInfo[4], - Options: mountOptionsParser(mountInfo[5]), - OptionalFields: nil, - FSType: mountInfo[mountInfoLength-3], - Source: mountInfo[mountInfoLength-2], - SuperOptions: mountOptionsParser(mountInfo[mountInfoLength-1]), - } - - mount.MountId, err = strconv.Atoi(mountInfo[0]) - if err != nil { - return nil, fmt.Errorf("failed to parse mount ID") - } - mount.ParentId, err = strconv.Atoi(mountInfo[1]) - if err != nil { - return nil, fmt.Errorf("failed to parse parent ID") - } - // Has optional fields, which is a space separated list of values. - // Example: shared:2 master:7 - if mountInfo[6] != "" { - mount.OptionalFields, err = mountOptionsParseOptionalFields(mountInfo[6 : mountInfoLength-4]) - if err != nil { - return nil, err - } - } - return mount, nil -} - -// mountOptionsIsValidField checks a string against a valid list of optional fields keys. -func mountOptionsIsValidField(s string) bool { - switch s { - case - "shared", - "master", - "propagate_from", - "unbindable": - return true - } - return false -} - -// mountOptionsParseOptionalFields parses a list of optional fields strings into a double map of strings. -func mountOptionsParseOptionalFields(o []string) (map[string]string, error) { - optionalFields := make(map[string]string) - for _, field := range o { - optionSplit := strings.SplitN(field, ":", 2) - value := "" - if len(optionSplit) == 2 { - value = optionSplit[1] - } - if mountOptionsIsValidField(optionSplit[0]) { - optionalFields[optionSplit[0]] = value - } - } - return optionalFields, nil -} - -// Parses the mount options, superblock options. -func mountOptionsParser(mountOptions string) map[string]string { - opts := make(map[string]string) - options := strings.Split(mountOptions, ",") - for _, opt := range options { - splitOption := strings.Split(opt, "=") - if len(splitOption) < 2 { - key := splitOption[0] - opts[key] = "" - } else { - key, value := splitOption[0], splitOption[1] - opts[key] = value - } - } - return opts -} - -// Retrieves mountinfo information from `/proc/self/mountinfo`. -func GetMounts() ([]*MountInfo, error) { - data, err := util.ReadFileNoStat("/proc/self/mountinfo") - if err != nil { - return nil, err - } - return parseMountInfo(data) -} - -// Retrieves mountinfo information from a processes' `/proc//mountinfo`. -func GetProcMounts(pid int) ([]*MountInfo, error) { - data, err := util.ReadFileNoStat(fmt.Sprintf("/proc/%d/mountinfo", pid)) - if err != nil { - return nil, err - } - return parseMountInfo(data) -} diff --git a/vendor/github.com/prometheus/procfs/mountstats.go b/vendor/github.com/prometheus/procfs/mountstats.go deleted file mode 100644 index 35b2ef35..00000000 --- a/vendor/github.com/prometheus/procfs/mountstats.go +++ /dev/null @@ -1,621 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -// While implementing parsing of /proc/[pid]/mountstats, this blog was used -// heavily as a reference: -// https://utcc.utoronto.ca/~cks/space/blog/linux/NFSMountstatsIndex -// -// Special thanks to Chris Siebenmann for all of his posts explaining the -// various statistics available for NFS. - -import ( - "bufio" - "fmt" - "io" - "strconv" - "strings" - "time" -) - -// Constants shared between multiple functions. -const ( - deviceEntryLen = 8 - - fieldBytesLen = 8 - fieldEventsLen = 27 - - statVersion10 = "1.0" - statVersion11 = "1.1" - - fieldTransport10TCPLen = 10 - fieldTransport10UDPLen = 7 - - fieldTransport11TCPLen = 13 - fieldTransport11UDPLen = 10 -) - -// A Mount is a device mount parsed from /proc/[pid]/mountstats. -type Mount struct { - // Name of the device. - Device string - // The mount point of the device. - Mount string - // The filesystem type used by the device. - Type string - // If available additional statistics related to this Mount. - // Use a type assertion to determine if additional statistics are available. - Stats MountStats -} - -// A MountStats is a type which contains detailed statistics for a specific -// type of Mount. -type MountStats interface { - mountStats() -} - -// A MountStatsNFS is a MountStats implementation for NFSv3 and v4 mounts. -type MountStatsNFS struct { - // The version of statistics provided. - StatVersion string - // The mount options of the NFS mount. - Opts map[string]string - // The age of the NFS mount. - Age time.Duration - // Statistics related to byte counters for various operations. - Bytes NFSBytesStats - // Statistics related to various NFS event occurrences. - Events NFSEventsStats - // Statistics broken down by filesystem operation. - Operations []NFSOperationStats - // Statistics about the NFS RPC transport. - Transport NFSTransportStats -} - -// mountStats implements MountStats. -func (m MountStatsNFS) mountStats() {} - -// A NFSBytesStats contains statistics about the number of bytes read and written -// by an NFS client to and from an NFS server. -type NFSBytesStats struct { - // Number of bytes read using the read() syscall. - Read uint64 - // Number of bytes written using the write() syscall. - Write uint64 - // Number of bytes read using the read() syscall in O_DIRECT mode. - DirectRead uint64 - // Number of bytes written using the write() syscall in O_DIRECT mode. - DirectWrite uint64 - // Number of bytes read from the NFS server, in total. - ReadTotal uint64 - // Number of bytes written to the NFS server, in total. - WriteTotal uint64 - // Number of pages read directly via mmap()'d files. - ReadPages uint64 - // Number of pages written directly via mmap()'d files. - WritePages uint64 -} - -// A NFSEventsStats contains statistics about NFS event occurrences. -type NFSEventsStats struct { - // Number of times cached inode attributes are re-validated from the server. - InodeRevalidate uint64 - // Number of times cached dentry nodes are re-validated from the server. - DnodeRevalidate uint64 - // Number of times an inode cache is cleared. - DataInvalidate uint64 - // Number of times cached inode attributes are invalidated. - AttributeInvalidate uint64 - // Number of times files or directories have been open()'d. - VFSOpen uint64 - // Number of times a directory lookup has occurred. - VFSLookup uint64 - // Number of times permissions have been checked. - VFSAccess uint64 - // Number of updates (and potential writes) to pages. - VFSUpdatePage uint64 - // Number of pages read directly via mmap()'d files. - VFSReadPage uint64 - // Number of times a group of pages have been read. - VFSReadPages uint64 - // Number of pages written directly via mmap()'d files. - VFSWritePage uint64 - // Number of times a group of pages have been written. - VFSWritePages uint64 - // Number of times directory entries have been read with getdents(). - VFSGetdents uint64 - // Number of times attributes have been set on inodes. - VFSSetattr uint64 - // Number of pending writes that have been forcefully flushed to the server. - VFSFlush uint64 - // Number of times fsync() has been called on directories and files. - VFSFsync uint64 - // Number of times locking has been attempted on a file. - VFSLock uint64 - // Number of times files have been closed and released. - VFSFileRelease uint64 - // Unknown. Possibly unused. - CongestionWait uint64 - // Number of times files have been truncated. - Truncation uint64 - // Number of times a file has been grown due to writes beyond its existing end. - WriteExtension uint64 - // Number of times a file was removed while still open by another process. - SillyRename uint64 - // Number of times the NFS server gave less data than expected while reading. - ShortRead uint64 - // Number of times the NFS server wrote less data than expected while writing. - ShortWrite uint64 - // Number of times the NFS server indicated EJUKEBOX; retrieving data from - // offline storage. - JukeboxDelay uint64 - // Number of NFS v4.1+ pNFS reads. - PNFSRead uint64 - // Number of NFS v4.1+ pNFS writes. - PNFSWrite uint64 -} - -// A NFSOperationStats contains statistics for a single operation. -type NFSOperationStats struct { - // The name of the operation. - Operation string - // Number of requests performed for this operation. - Requests uint64 - // Number of times an actual RPC request has been transmitted for this operation. - Transmissions uint64 - // Number of times a request has had a major timeout. - MajorTimeouts uint64 - // Number of bytes sent for this operation, including RPC headers and payload. - BytesSent uint64 - // Number of bytes received for this operation, including RPC headers and payload. - BytesReceived uint64 - // Duration all requests spent queued for transmission before they were sent. - CumulativeQueueMilliseconds uint64 - // Duration it took to get a reply back after the request was transmitted. - CumulativeTotalResponseMilliseconds uint64 - // Duration from when a request was enqueued to when it was completely handled. - CumulativeTotalRequestMilliseconds uint64 -} - -// A NFSTransportStats contains statistics for the NFS mount RPC requests and -// responses. -type NFSTransportStats struct { - // The transport protocol used for the NFS mount. - Protocol string - // The local port used for the NFS mount. - Port uint64 - // Number of times the client has had to establish a connection from scratch - // to the NFS server. - Bind uint64 - // Number of times the client has made a TCP connection to the NFS server. - Connect uint64 - // Duration (in jiffies, a kernel internal unit of time) the NFS mount has - // spent waiting for connections to the server to be established. - ConnectIdleTime uint64 - // Duration since the NFS mount last saw any RPC traffic. - IdleTimeSeconds uint64 - // Number of RPC requests for this mount sent to the NFS server. - Sends uint64 - // Number of RPC responses for this mount received from the NFS server. - Receives uint64 - // Number of times the NFS server sent a response with a transaction ID - // unknown to this client. - BadTransactionIDs uint64 - // A running counter, incremented on each request as the current difference - // ebetween sends and receives. - CumulativeActiveRequests uint64 - // A running counter, incremented on each request by the current backlog - // queue size. - CumulativeBacklog uint64 - - // Stats below only available with stat version 1.1. - - // Maximum number of simultaneously active RPC requests ever used. - MaximumRPCSlotsUsed uint64 - // A running counter, incremented on each request as the current size of the - // sending queue. - CumulativeSendingQueue uint64 - // A running counter, incremented on each request as the current size of the - // pending queue. - CumulativePendingQueue uint64 -} - -// parseMountStats parses a /proc/[pid]/mountstats file and returns a slice -// of Mount structures containing detailed information about each mount. -// If available, statistics for each mount are parsed as well. -func parseMountStats(r io.Reader) ([]*Mount, error) { - const ( - device = "device" - statVersionPrefix = "statvers=" - - nfs3Type = "nfs" - nfs4Type = "nfs4" - ) - - var mounts []*Mount - - s := bufio.NewScanner(r) - for s.Scan() { - // Only look for device entries in this function - ss := strings.Fields(string(s.Bytes())) - if len(ss) == 0 || ss[0] != device { - continue - } - - m, err := parseMount(ss) - if err != nil { - return nil, err - } - - // Does this mount also possess statistics information? - if len(ss) > deviceEntryLen { - // Only NFSv3 and v4 are supported for parsing statistics - if m.Type != nfs3Type && m.Type != nfs4Type { - return nil, fmt.Errorf("cannot parse MountStats for fstype %q", m.Type) - } - - statVersion := strings.TrimPrefix(ss[8], statVersionPrefix) - - stats, err := parseMountStatsNFS(s, statVersion) - if err != nil { - return nil, err - } - - m.Stats = stats - } - - mounts = append(mounts, m) - } - - return mounts, s.Err() -} - -// parseMount parses an entry in /proc/[pid]/mountstats in the format: -// device [device] mounted on [mount] with fstype [type] -func parseMount(ss []string) (*Mount, error) { - if len(ss) < deviceEntryLen { - return nil, fmt.Errorf("invalid device entry: %v", ss) - } - - // Check for specific words appearing at specific indices to ensure - // the format is consistent with what we expect - format := []struct { - i int - s string - }{ - {i: 0, s: "device"}, - {i: 2, s: "mounted"}, - {i: 3, s: "on"}, - {i: 5, s: "with"}, - {i: 6, s: "fstype"}, - } - - for _, f := range format { - if ss[f.i] != f.s { - return nil, fmt.Errorf("invalid device entry: %v", ss) - } - } - - return &Mount{ - Device: ss[1], - Mount: ss[4], - Type: ss[7], - }, nil -} - -// parseMountStatsNFS parses a MountStatsNFS by scanning additional information -// related to NFS statistics. -func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, error) { - // Field indicators for parsing specific types of data - const ( - fieldOpts = "opts:" - fieldAge = "age:" - fieldBytes = "bytes:" - fieldEvents = "events:" - fieldPerOpStats = "per-op" - fieldTransport = "xprt:" - ) - - stats := &MountStatsNFS{ - StatVersion: statVersion, - } - - for s.Scan() { - ss := strings.Fields(string(s.Bytes())) - if len(ss) == 0 { - break - } - if len(ss) < 2 { - return nil, fmt.Errorf("not enough information for NFS stats: %v", ss) - } - - switch ss[0] { - case fieldOpts: - if stats.Opts == nil { - stats.Opts = map[string]string{} - } - for _, opt := range strings.Split(ss[1], ",") { - split := strings.Split(opt, "=") - if len(split) == 2 { - stats.Opts[split[0]] = split[1] - } else { - stats.Opts[opt] = "" - } - } - case fieldAge: - // Age integer is in seconds - d, err := time.ParseDuration(ss[1] + "s") - if err != nil { - return nil, err - } - - stats.Age = d - case fieldBytes: - bstats, err := parseNFSBytesStats(ss[1:]) - if err != nil { - return nil, err - } - - stats.Bytes = *bstats - case fieldEvents: - estats, err := parseNFSEventsStats(ss[1:]) - if err != nil { - return nil, err - } - - stats.Events = *estats - case fieldTransport: - if len(ss) < 3 { - return nil, fmt.Errorf("not enough information for NFS transport stats: %v", ss) - } - - tstats, err := parseNFSTransportStats(ss[1:], statVersion) - if err != nil { - return nil, err - } - - stats.Transport = *tstats - } - - // When encountering "per-operation statistics", we must break this - // loop and parse them separately to ensure we can terminate parsing - // before reaching another device entry; hence why this 'if' statement - // is not just another switch case - if ss[0] == fieldPerOpStats { - break - } - } - - if err := s.Err(); err != nil { - return nil, err - } - - // NFS per-operation stats appear last before the next device entry - perOpStats, err := parseNFSOperationStats(s) - if err != nil { - return nil, err - } - - stats.Operations = perOpStats - - return stats, nil -} - -// parseNFSBytesStats parses a NFSBytesStats line using an input set of -// integer fields. -func parseNFSBytesStats(ss []string) (*NFSBytesStats, error) { - if len(ss) != fieldBytesLen { - return nil, fmt.Errorf("invalid NFS bytes stats: %v", ss) - } - - ns := make([]uint64, 0, fieldBytesLen) - for _, s := range ss { - n, err := strconv.ParseUint(s, 10, 64) - if err != nil { - return nil, err - } - - ns = append(ns, n) - } - - return &NFSBytesStats{ - Read: ns[0], - Write: ns[1], - DirectRead: ns[2], - DirectWrite: ns[3], - ReadTotal: ns[4], - WriteTotal: ns[5], - ReadPages: ns[6], - WritePages: ns[7], - }, nil -} - -// parseNFSEventsStats parses a NFSEventsStats line using an input set of -// integer fields. -func parseNFSEventsStats(ss []string) (*NFSEventsStats, error) { - if len(ss) != fieldEventsLen { - return nil, fmt.Errorf("invalid NFS events stats: %v", ss) - } - - ns := make([]uint64, 0, fieldEventsLen) - for _, s := range ss { - n, err := strconv.ParseUint(s, 10, 64) - if err != nil { - return nil, err - } - - ns = append(ns, n) - } - - return &NFSEventsStats{ - InodeRevalidate: ns[0], - DnodeRevalidate: ns[1], - DataInvalidate: ns[2], - AttributeInvalidate: ns[3], - VFSOpen: ns[4], - VFSLookup: ns[5], - VFSAccess: ns[6], - VFSUpdatePage: ns[7], - VFSReadPage: ns[8], - VFSReadPages: ns[9], - VFSWritePage: ns[10], - VFSWritePages: ns[11], - VFSGetdents: ns[12], - VFSSetattr: ns[13], - VFSFlush: ns[14], - VFSFsync: ns[15], - VFSLock: ns[16], - VFSFileRelease: ns[17], - CongestionWait: ns[18], - Truncation: ns[19], - WriteExtension: ns[20], - SillyRename: ns[21], - ShortRead: ns[22], - ShortWrite: ns[23], - JukeboxDelay: ns[24], - PNFSRead: ns[25], - PNFSWrite: ns[26], - }, nil -} - -// parseNFSOperationStats parses a slice of NFSOperationStats by scanning -// additional information about per-operation statistics until an empty -// line is reached. -func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) { - const ( - // Number of expected fields in each per-operation statistics set - numFields = 9 - ) - - var ops []NFSOperationStats - - for s.Scan() { - ss := strings.Fields(string(s.Bytes())) - if len(ss) == 0 { - // Must break when reading a blank line after per-operation stats to - // enable top-level function to parse the next device entry - break - } - - if len(ss) != numFields { - return nil, fmt.Errorf("invalid NFS per-operations stats: %v", ss) - } - - // Skip string operation name for integers - ns := make([]uint64, 0, numFields-1) - for _, st := range ss[1:] { - n, err := strconv.ParseUint(st, 10, 64) - if err != nil { - return nil, err - } - - ns = append(ns, n) - } - - ops = append(ops, NFSOperationStats{ - Operation: strings.TrimSuffix(ss[0], ":"), - Requests: ns[0], - Transmissions: ns[1], - MajorTimeouts: ns[2], - BytesSent: ns[3], - BytesReceived: ns[4], - CumulativeQueueMilliseconds: ns[5], - CumulativeTotalResponseMilliseconds: ns[6], - CumulativeTotalRequestMilliseconds: ns[7], - }) - } - - return ops, s.Err() -} - -// parseNFSTransportStats parses a NFSTransportStats line using an input set of -// integer fields matched to a specific stats version. -func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats, error) { - // Extract the protocol field. It is the only string value in the line - protocol := ss[0] - ss = ss[1:] - - switch statVersion { - case statVersion10: - var expectedLength int - if protocol == "tcp" { - expectedLength = fieldTransport10TCPLen - } else if protocol == "udp" { - expectedLength = fieldTransport10UDPLen - } else { - return nil, fmt.Errorf("invalid NFS protocol \"%s\" in stats 1.0 statement: %v", protocol, ss) - } - if len(ss) != expectedLength { - return nil, fmt.Errorf("invalid NFS transport stats 1.0 statement: %v", ss) - } - case statVersion11: - var expectedLength int - if protocol == "tcp" { - expectedLength = fieldTransport11TCPLen - } else if protocol == "udp" { - expectedLength = fieldTransport11UDPLen - } else { - return nil, fmt.Errorf("invalid NFS protocol \"%s\" in stats 1.1 statement: %v", protocol, ss) - } - if len(ss) != expectedLength { - return nil, fmt.Errorf("invalid NFS transport stats 1.1 statement: %v", ss) - } - default: - return nil, fmt.Errorf("unrecognized NFS transport stats version: %q", statVersion) - } - - // Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay - // in a v1.0 response. Since the stat length is bigger for TCP stats, we use - // the TCP length here. - // - // Note: slice length must be set to length of v1.1 stats to avoid a panic when - // only v1.0 stats are present. - // See: https://github.com/prometheus/node_exporter/issues/571. - ns := make([]uint64, fieldTransport11TCPLen) - for i, s := range ss { - n, err := strconv.ParseUint(s, 10, 64) - if err != nil { - return nil, err - } - - ns[i] = n - } - - // The fields differ depending on the transport protocol (TCP or UDP) - // From https://utcc.utoronto.ca/%7Ecks/space/blog/linux/NFSMountstatsXprt - // - // For the udp RPC transport there is no connection count, connect idle time, - // or idle time (fields #3, #4, and #5); all other fields are the same. So - // we set them to 0 here. - if protocol == "udp" { - ns = append(ns[:2], append(make([]uint64, 3), ns[2:]...)...) - } - - return &NFSTransportStats{ - Protocol: protocol, - Port: ns[0], - Bind: ns[1], - Connect: ns[2], - ConnectIdleTime: ns[3], - IdleTimeSeconds: ns[4], - Sends: ns[5], - Receives: ns[6], - BadTransactionIDs: ns[7], - CumulativeActiveRequests: ns[8], - CumulativeBacklog: ns[9], - MaximumRPCSlotsUsed: ns[10], - CumulativeSendingQueue: ns[11], - CumulativePendingQueue: ns[12], - }, nil -} diff --git a/vendor/github.com/prometheus/procfs/net_dev.go b/vendor/github.com/prometheus/procfs/net_dev.go deleted file mode 100644 index 47a710be..00000000 --- a/vendor/github.com/prometheus/procfs/net_dev.go +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "errors" - "os" - "sort" - "strconv" - "strings" -) - -// NetDevLine is single line parsed from /proc/net/dev or /proc/[pid]/net/dev. -type NetDevLine struct { - Name string `json:"name"` // The name of the interface. - RxBytes uint64 `json:"rx_bytes"` // Cumulative count of bytes received. - RxPackets uint64 `json:"rx_packets"` // Cumulative count of packets received. - RxErrors uint64 `json:"rx_errors"` // Cumulative count of receive errors encountered. - RxDropped uint64 `json:"rx_dropped"` // Cumulative count of packets dropped while receiving. - RxFIFO uint64 `json:"rx_fifo"` // Cumulative count of FIFO buffer errors. - RxFrame uint64 `json:"rx_frame"` // Cumulative count of packet framing errors. - RxCompressed uint64 `json:"rx_compressed"` // Cumulative count of compressed packets received by the device driver. - RxMulticast uint64 `json:"rx_multicast"` // Cumulative count of multicast frames received by the device driver. - TxBytes uint64 `json:"tx_bytes"` // Cumulative count of bytes transmitted. - TxPackets uint64 `json:"tx_packets"` // Cumulative count of packets transmitted. - TxErrors uint64 `json:"tx_errors"` // Cumulative count of transmit errors encountered. - TxDropped uint64 `json:"tx_dropped"` // Cumulative count of packets dropped while transmitting. - TxFIFO uint64 `json:"tx_fifo"` // Cumulative count of FIFO buffer errors. - TxCollisions uint64 `json:"tx_collisions"` // Cumulative count of collisions detected on the interface. - TxCarrier uint64 `json:"tx_carrier"` // Cumulative count of carrier losses detected by the device driver. - TxCompressed uint64 `json:"tx_compressed"` // Cumulative count of compressed packets transmitted by the device driver. -} - -// NetDev is parsed from /proc/net/dev or /proc/[pid]/net/dev. The map keys -// are interface names. -type NetDev map[string]NetDevLine - -// NetDev returns kernel/system statistics read from /proc/net/dev. -func (fs FS) NetDev() (NetDev, error) { - return newNetDev(fs.proc.Path("net/dev")) -} - -// NetDev returns kernel/system statistics read from /proc/[pid]/net/dev. -func (p Proc) NetDev() (NetDev, error) { - return newNetDev(p.path("net/dev")) -} - -// newNetDev creates a new NetDev from the contents of the given file. -func newNetDev(file string) (NetDev, error) { - f, err := os.Open(file) - if err != nil { - return NetDev{}, err - } - defer f.Close() - - netDev := NetDev{} - s := bufio.NewScanner(f) - for n := 0; s.Scan(); n++ { - // Skip the 2 header lines. - if n < 2 { - continue - } - - line, err := netDev.parseLine(s.Text()) - if err != nil { - return netDev, err - } - - netDev[line.Name] = *line - } - - return netDev, s.Err() -} - -// parseLine parses a single line from the /proc/net/dev file. Header lines -// must be filtered prior to calling this method. -func (netDev NetDev) parseLine(rawLine string) (*NetDevLine, error) { - parts := strings.SplitN(rawLine, ":", 2) - if len(parts) != 2 { - return nil, errors.New("invalid net/dev line, missing colon") - } - fields := strings.Fields(strings.TrimSpace(parts[1])) - - var err error - line := &NetDevLine{} - - // Interface Name - line.Name = strings.TrimSpace(parts[0]) - if line.Name == "" { - return nil, errors.New("invalid net/dev line, empty interface name") - } - - // RX - line.RxBytes, err = strconv.ParseUint(fields[0], 10, 64) - if err != nil { - return nil, err - } - line.RxPackets, err = strconv.ParseUint(fields[1], 10, 64) - if err != nil { - return nil, err - } - line.RxErrors, err = strconv.ParseUint(fields[2], 10, 64) - if err != nil { - return nil, err - } - line.RxDropped, err = strconv.ParseUint(fields[3], 10, 64) - if err != nil { - return nil, err - } - line.RxFIFO, err = strconv.ParseUint(fields[4], 10, 64) - if err != nil { - return nil, err - } - line.RxFrame, err = strconv.ParseUint(fields[5], 10, 64) - if err != nil { - return nil, err - } - line.RxCompressed, err = strconv.ParseUint(fields[6], 10, 64) - if err != nil { - return nil, err - } - line.RxMulticast, err = strconv.ParseUint(fields[7], 10, 64) - if err != nil { - return nil, err - } - - // TX - line.TxBytes, err = strconv.ParseUint(fields[8], 10, 64) - if err != nil { - return nil, err - } - line.TxPackets, err = strconv.ParseUint(fields[9], 10, 64) - if err != nil { - return nil, err - } - line.TxErrors, err = strconv.ParseUint(fields[10], 10, 64) - if err != nil { - return nil, err - } - line.TxDropped, err = strconv.ParseUint(fields[11], 10, 64) - if err != nil { - return nil, err - } - line.TxFIFO, err = strconv.ParseUint(fields[12], 10, 64) - if err != nil { - return nil, err - } - line.TxCollisions, err = strconv.ParseUint(fields[13], 10, 64) - if err != nil { - return nil, err - } - line.TxCarrier, err = strconv.ParseUint(fields[14], 10, 64) - if err != nil { - return nil, err - } - line.TxCompressed, err = strconv.ParseUint(fields[15], 10, 64) - if err != nil { - return nil, err - } - - return line, nil -} - -// Total aggregates the values across interfaces and returns a new NetDevLine. -// The Name field will be a sorted comma separated list of interface names. -func (netDev NetDev) Total() NetDevLine { - total := NetDevLine{} - - names := make([]string, 0, len(netDev)) - for _, ifc := range netDev { - names = append(names, ifc.Name) - total.RxBytes += ifc.RxBytes - total.RxPackets += ifc.RxPackets - total.RxErrors += ifc.RxErrors - total.RxDropped += ifc.RxDropped - total.RxFIFO += ifc.RxFIFO - total.RxFrame += ifc.RxFrame - total.RxCompressed += ifc.RxCompressed - total.RxMulticast += ifc.RxMulticast - total.TxBytes += ifc.TxBytes - total.TxPackets += ifc.TxPackets - total.TxErrors += ifc.TxErrors - total.TxDropped += ifc.TxDropped - total.TxFIFO += ifc.TxFIFO - total.TxCollisions += ifc.TxCollisions - total.TxCarrier += ifc.TxCarrier - total.TxCompressed += ifc.TxCompressed - } - sort.Strings(names) - total.Name = strings.Join(names, ", ") - - return total -} diff --git a/vendor/github.com/prometheus/procfs/net_softnet.go b/vendor/github.com/prometheus/procfs/net_softnet.go deleted file mode 100644 index 6fcad20a..00000000 --- a/vendor/github.com/prometheus/procfs/net_softnet.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "fmt" - "io/ioutil" - "strconv" - "strings" -) - -// For the proc file format details, -// see https://elixir.bootlin.com/linux/v4.17/source/net/core/net-procfs.c#L162 -// and https://elixir.bootlin.com/linux/v4.17/source/include/linux/netdevice.h#L2810. - -// SoftnetEntry contains a single row of data from /proc/net/softnet_stat -type SoftnetEntry struct { - // Number of processed packets - Processed uint - // Number of dropped packets - Dropped uint - // Number of times processing packets ran out of quota - TimeSqueezed uint -} - -// GatherSoftnetStats reads /proc/net/softnet_stat, parse the relevant columns, -// and then return a slice of SoftnetEntry's. -func (fs FS) GatherSoftnetStats() ([]SoftnetEntry, error) { - data, err := ioutil.ReadFile(fs.proc.Path("net/softnet_stat")) - if err != nil { - return nil, fmt.Errorf("error reading softnet %s: %s", fs.proc.Path("net/softnet_stat"), err) - } - - return parseSoftnetEntries(data) -} - -func parseSoftnetEntries(data []byte) ([]SoftnetEntry, error) { - lines := strings.Split(string(data), "\n") - entries := make([]SoftnetEntry, 0) - var err error - const ( - expectedColumns = 11 - ) - for _, line := range lines { - columns := strings.Fields(line) - width := len(columns) - if width == 0 { - continue - } - if width != expectedColumns { - return []SoftnetEntry{}, fmt.Errorf("%d columns were detected, but %d were expected", width, expectedColumns) - } - var entry SoftnetEntry - if entry, err = parseSoftnetEntry(columns); err != nil { - return []SoftnetEntry{}, err - } - entries = append(entries, entry) - } - - return entries, nil -} - -func parseSoftnetEntry(columns []string) (SoftnetEntry, error) { - var err error - var processed, dropped, timeSqueezed uint64 - if processed, err = strconv.ParseUint(columns[0], 16, 32); err != nil { - return SoftnetEntry{}, fmt.Errorf("Unable to parse column 0: %s", err) - } - if dropped, err = strconv.ParseUint(columns[1], 16, 32); err != nil { - return SoftnetEntry{}, fmt.Errorf("Unable to parse column 1: %s", err) - } - if timeSqueezed, err = strconv.ParseUint(columns[2], 16, 32); err != nil { - return SoftnetEntry{}, fmt.Errorf("Unable to parse column 2: %s", err) - } - return SoftnetEntry{ - Processed: uint(processed), - Dropped: uint(dropped), - TimeSqueezed: uint(timeSqueezed), - }, nil -} diff --git a/vendor/github.com/prometheus/procfs/net_unix.go b/vendor/github.com/prometheus/procfs/net_unix.go deleted file mode 100644 index 240340a8..00000000 --- a/vendor/github.com/prometheus/procfs/net_unix.go +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "errors" - "fmt" - "io" - "os" - "strconv" - "strings" -) - -// For the proc file format details, -// see https://elixir.bootlin.com/linux/v4.17/source/net/unix/af_unix.c#L2815 -// and https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/net.h#L48. - -const ( - netUnixKernelPtrIdx = iota - netUnixRefCountIdx - _ - netUnixFlagsIdx - netUnixTypeIdx - netUnixStateIdx - netUnixInodeIdx - - // Inode and Path are optional. - netUnixStaticFieldsCnt = 6 -) - -const ( - netUnixTypeStream = 1 - netUnixTypeDgram = 2 - netUnixTypeSeqpacket = 5 - - netUnixFlagListen = 1 << 16 - - netUnixStateUnconnected = 1 - netUnixStateConnecting = 2 - netUnixStateConnected = 3 - netUnixStateDisconnected = 4 -) - -var errInvalidKernelPtrFmt = errors.New("Invalid Num(the kernel table slot number) format") - -// NetUnixType is the type of the type field. -type NetUnixType uint64 - -// NetUnixFlags is the type of the flags field. -type NetUnixFlags uint64 - -// NetUnixState is the type of the state field. -type NetUnixState uint64 - -// NetUnixLine represents a line of /proc/net/unix. -type NetUnixLine struct { - KernelPtr string - RefCount uint64 - Protocol uint64 - Flags NetUnixFlags - Type NetUnixType - State NetUnixState - Inode uint64 - Path string -} - -// NetUnix holds the data read from /proc/net/unix. -type NetUnix struct { - Rows []*NetUnixLine -} - -// NewNetUnix returns data read from /proc/net/unix. -func NewNetUnix() (*NetUnix, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return nil, err - } - - return fs.NewNetUnix() -} - -// NewNetUnix returns data read from /proc/net/unix. -func (fs FS) NewNetUnix() (*NetUnix, error) { - return NewNetUnixByPath(fs.proc.Path("net/unix")) -} - -// NewNetUnixByPath returns data read from /proc/net/unix by file path. -// It might returns an error with partial parsed data, if an error occur after some data parsed. -func NewNetUnixByPath(path string) (*NetUnix, error) { - f, err := os.Open(path) - if err != nil { - return nil, err - } - defer f.Close() - return NewNetUnixByReader(f) -} - -// NewNetUnixByReader returns data read from /proc/net/unix by a reader. -// It might returns an error with partial parsed data, if an error occur after some data parsed. -func NewNetUnixByReader(reader io.Reader) (*NetUnix, error) { - nu := &NetUnix{ - Rows: make([]*NetUnixLine, 0, 32), - } - scanner := bufio.NewScanner(reader) - // Omit the header line. - scanner.Scan() - header := scanner.Text() - // From the man page of proc(5), it does not contain an Inode field, - // but in actually it exists. - // This code works for both cases. - hasInode := strings.Contains(header, "Inode") - - minFieldsCnt := netUnixStaticFieldsCnt - if hasInode { - minFieldsCnt++ - } - for scanner.Scan() { - line := scanner.Text() - item, err := nu.parseLine(line, hasInode, minFieldsCnt) - if err != nil { - return nu, err - } - nu.Rows = append(nu.Rows, item) - } - - return nu, scanner.Err() -} - -func (u *NetUnix) parseLine(line string, hasInode bool, minFieldsCnt int) (*NetUnixLine, error) { - fields := strings.Fields(line) - fieldsLen := len(fields) - if fieldsLen < minFieldsCnt { - return nil, fmt.Errorf( - "Parse Unix domain failed: expect at least %d fields but got %d", - minFieldsCnt, fieldsLen) - } - kernelPtr, err := u.parseKernelPtr(fields[netUnixKernelPtrIdx]) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain num(%s) failed: %s", fields[netUnixKernelPtrIdx], err) - } - users, err := u.parseUsers(fields[netUnixRefCountIdx]) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain ref count(%s) failed: %s", fields[netUnixRefCountIdx], err) - } - flags, err := u.parseFlags(fields[netUnixFlagsIdx]) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain flags(%s) failed: %s", fields[netUnixFlagsIdx], err) - } - typ, err := u.parseType(fields[netUnixTypeIdx]) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain type(%s) failed: %s", fields[netUnixTypeIdx], err) - } - state, err := u.parseState(fields[netUnixStateIdx]) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain state(%s) failed: %s", fields[netUnixStateIdx], err) - } - var inode uint64 - if hasInode { - inodeStr := fields[netUnixInodeIdx] - inode, err = u.parseInode(inodeStr) - if err != nil { - return nil, fmt.Errorf("Parse Unix domain inode(%s) failed: %s", inodeStr, err) - } - } - - nuLine := &NetUnixLine{ - KernelPtr: kernelPtr, - RefCount: users, - Type: typ, - Flags: flags, - State: state, - Inode: inode, - } - - // Path field is optional. - if fieldsLen > minFieldsCnt { - pathIdx := netUnixInodeIdx + 1 - if !hasInode { - pathIdx-- - } - nuLine.Path = fields[pathIdx] - } - - return nuLine, nil -} - -func (u NetUnix) parseKernelPtr(str string) (string, error) { - if !strings.HasSuffix(str, ":") { - return "", errInvalidKernelPtrFmt - } - return str[:len(str)-1], nil -} - -func (u NetUnix) parseUsers(hexStr string) (uint64, error) { - return strconv.ParseUint(hexStr, 16, 32) -} - -func (u NetUnix) parseProtocol(hexStr string) (uint64, error) { - return strconv.ParseUint(hexStr, 16, 32) -} - -func (u NetUnix) parseType(hexStr string) (NetUnixType, error) { - typ, err := strconv.ParseUint(hexStr, 16, 16) - if err != nil { - return 0, err - } - return NetUnixType(typ), nil -} - -func (u NetUnix) parseFlags(hexStr string) (NetUnixFlags, error) { - flags, err := strconv.ParseUint(hexStr, 16, 32) - if err != nil { - return 0, err - } - return NetUnixFlags(flags), nil -} - -func (u NetUnix) parseState(hexStr string) (NetUnixState, error) { - st, err := strconv.ParseInt(hexStr, 16, 8) - if err != nil { - return 0, err - } - return NetUnixState(st), nil -} - -func (u NetUnix) parseInode(inodeStr string) (uint64, error) { - return strconv.ParseUint(inodeStr, 10, 64) -} - -func (t NetUnixType) String() string { - switch t { - case netUnixTypeStream: - return "stream" - case netUnixTypeDgram: - return "dgram" - case netUnixTypeSeqpacket: - return "seqpacket" - } - return "unknown" -} - -func (f NetUnixFlags) String() string { - switch f { - case netUnixFlagListen: - return "listen" - default: - return "default" - } -} - -func (s NetUnixState) String() string { - switch s { - case netUnixStateUnconnected: - return "unconnected" - case netUnixStateConnecting: - return "connecting" - case netUnixStateConnected: - return "connected" - case netUnixStateDisconnected: - return "disconnected" - } - return "unknown" -} diff --git a/vendor/github.com/prometheus/procfs/proc.go b/vendor/github.com/prometheus/procfs/proc.go deleted file mode 100644 index 330e472c..00000000 --- a/vendor/github.com/prometheus/procfs/proc.go +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/fs" - "github.com/prometheus/procfs/internal/util" -) - -// Proc provides information about a running process. -type Proc struct { - // The process ID. - PID int - - fs fs.FS -} - -// Procs represents a list of Proc structs. -type Procs []Proc - -func (p Procs) Len() int { return len(p) } -func (p Procs) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p Procs) Less(i, j int) bool { return p[i].PID < p[j].PID } - -// Self returns a process for the current process read via /proc/self. -func Self() (Proc, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return Proc{}, err - } - return fs.Self() -} - -// NewProc returns a process for the given pid under /proc. -func NewProc(pid int) (Proc, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return Proc{}, err - } - return fs.Proc(pid) -} - -// AllProcs returns a list of all currently available processes under /proc. -func AllProcs() (Procs, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return Procs{}, err - } - return fs.AllProcs() -} - -// Self returns a process for the current process. -func (fs FS) Self() (Proc, error) { - p, err := os.Readlink(fs.proc.Path("self")) - if err != nil { - return Proc{}, err - } - pid, err := strconv.Atoi(strings.Replace(p, string(fs.proc), "", -1)) - if err != nil { - return Proc{}, err - } - return fs.Proc(pid) -} - -// NewProc returns a process for the given pid. -// -// Deprecated: use fs.Proc() instead -func (fs FS) NewProc(pid int) (Proc, error) { - return fs.Proc(pid) -} - -// Proc returns a process for the given pid. -func (fs FS) Proc(pid int) (Proc, error) { - if _, err := os.Stat(fs.proc.Path(strconv.Itoa(pid))); err != nil { - return Proc{}, err - } - return Proc{PID: pid, fs: fs.proc}, nil -} - -// AllProcs returns a list of all currently available processes. -func (fs FS) AllProcs() (Procs, error) { - d, err := os.Open(fs.proc.Path()) - if err != nil { - return Procs{}, err - } - defer d.Close() - - names, err := d.Readdirnames(-1) - if err != nil { - return Procs{}, fmt.Errorf("could not read %s: %s", d.Name(), err) - } - - p := Procs{} - for _, n := range names { - pid, err := strconv.ParseInt(n, 10, 64) - if err != nil { - continue - } - p = append(p, Proc{PID: int(pid), fs: fs.proc}) - } - - return p, nil -} - -// CmdLine returns the command line of a process. -func (p Proc) CmdLine() ([]string, error) { - data, err := util.ReadFileNoStat(p.path("cmdline")) - if err != nil { - return nil, err - } - - if len(data) < 1 { - return []string{}, nil - } - - return strings.Split(string(bytes.TrimRight(data, string("\x00"))), string(byte(0))), nil -} - -// Comm returns the command name of a process. -func (p Proc) Comm() (string, error) { - data, err := util.ReadFileNoStat(p.path("comm")) - if err != nil { - return "", err - } - - return strings.TrimSpace(string(data)), nil -} - -// Executable returns the absolute path of the executable command of a process. -func (p Proc) Executable() (string, error) { - exe, err := os.Readlink(p.path("exe")) - if os.IsNotExist(err) { - return "", nil - } - - return exe, err -} - -// Cwd returns the absolute path to the current working directory of the process. -func (p Proc) Cwd() (string, error) { - wd, err := os.Readlink(p.path("cwd")) - if os.IsNotExist(err) { - return "", nil - } - - return wd, err -} - -// RootDir returns the absolute path to the process's root directory (as set by chroot) -func (p Proc) RootDir() (string, error) { - rdir, err := os.Readlink(p.path("root")) - if os.IsNotExist(err) { - return "", nil - } - - return rdir, err -} - -// FileDescriptors returns the currently open file descriptors of a process. -func (p Proc) FileDescriptors() ([]uintptr, error) { - names, err := p.fileDescriptors() - if err != nil { - return nil, err - } - - fds := make([]uintptr, len(names)) - for i, n := range names { - fd, err := strconv.ParseInt(n, 10, 32) - if err != nil { - return nil, fmt.Errorf("could not parse fd %s: %s", n, err) - } - fds[i] = uintptr(fd) - } - - return fds, nil -} - -// FileDescriptorTargets returns the targets of all file descriptors of a process. -// If a file descriptor is not a symlink to a file (like a socket), that value will be the empty string. -func (p Proc) FileDescriptorTargets() ([]string, error) { - names, err := p.fileDescriptors() - if err != nil { - return nil, err - } - - targets := make([]string, len(names)) - - for i, name := range names { - target, err := os.Readlink(p.path("fd", name)) - if err == nil { - targets[i] = target - } - } - - return targets, nil -} - -// FileDescriptorsLen returns the number of currently open file descriptors of -// a process. -func (p Proc) FileDescriptorsLen() (int, error) { - fds, err := p.fileDescriptors() - if err != nil { - return 0, err - } - - return len(fds), nil -} - -// MountStats retrieves statistics and configuration for mount points in a -// process's namespace. -func (p Proc) MountStats() ([]*Mount, error) { - f, err := os.Open(p.path("mountstats")) - if err != nil { - return nil, err - } - defer f.Close() - - return parseMountStats(f) -} - -// MountInfo retrieves mount information for mount points in a -// process's namespace. -// It supplies information missing in `/proc/self/mounts` and -// fixes various other problems with that file too. -func (p Proc) MountInfo() ([]*MountInfo, error) { - data, err := util.ReadFileNoStat(p.path("mountinfo")) - if err != nil { - return nil, err - } - return parseMountInfo(data) -} - -func (p Proc) fileDescriptors() ([]string, error) { - d, err := os.Open(p.path("fd")) - if err != nil { - return nil, err - } - defer d.Close() - - names, err := d.Readdirnames(-1) - if err != nil { - return nil, fmt.Errorf("could not read %s: %s", d.Name(), err) - } - - return names, nil -} - -func (p Proc) path(pa ...string) string { - return p.fs.Path(append([]string{strconv.Itoa(p.PID)}, pa...)...) -} - -// FileDescriptorsInfo retrieves information about all file descriptors of -// the process. -func (p Proc) FileDescriptorsInfo() (ProcFDInfos, error) { - names, err := p.fileDescriptors() - if err != nil { - return nil, err - } - - var fdinfos ProcFDInfos - - for _, n := range names { - fdinfo, err := p.FDInfo(n) - if err != nil { - continue - } - fdinfos = append(fdinfos, *fdinfo) - } - - return fdinfos, nil -} - -// Schedstat returns task scheduling information for the process. -func (p Proc) Schedstat() (ProcSchedstat, error) { - contents, err := ioutil.ReadFile(p.path("schedstat")) - if err != nil { - return ProcSchedstat{}, err - } - return parseProcSchedstat(string(contents)) -} diff --git a/vendor/github.com/prometheus/procfs/proc_environ.go b/vendor/github.com/prometheus/procfs/proc_environ.go deleted file mode 100644 index 6134b358..00000000 --- a/vendor/github.com/prometheus/procfs/proc_environ.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// Environ reads process environments from /proc//environ -func (p Proc) Environ() ([]string, error) { - environments := make([]string, 0) - - data, err := util.ReadFileNoStat(p.path("environ")) - if err != nil { - return environments, err - } - - environments = strings.Split(string(data), "\000") - if len(environments) > 0 { - environments = environments[:len(environments)-1] - } - - return environments, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc_fdinfo.go b/vendor/github.com/prometheus/procfs/proc_fdinfo.go deleted file mode 100644 index 4e7597f8..00000000 --- a/vendor/github.com/prometheus/procfs/proc_fdinfo.go +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "regexp" - - "github.com/prometheus/procfs/internal/util" -) - -// Regexp variables -var ( - rPos = regexp.MustCompile(`^pos:\s+(\d+)$`) - rFlags = regexp.MustCompile(`^flags:\s+(\d+)$`) - rMntID = regexp.MustCompile(`^mnt_id:\s+(\d+)$`) - rInotify = regexp.MustCompile(`^inotify`) -) - -// ProcFDInfo contains represents file descriptor information. -type ProcFDInfo struct { - // File descriptor - FD string - // File offset - Pos string - // File access mode and status flags - Flags string - // Mount point ID - MntID string - // List of inotify lines (structed) in the fdinfo file (kernel 3.8+ only) - InotifyInfos []InotifyInfo -} - -// FDInfo constructor. On kernels older than 3.8, InotifyInfos will always be empty. -func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) { - data, err := util.ReadFileNoStat(p.path("fdinfo", fd)) - if err != nil { - return nil, err - } - - var text, pos, flags, mntid string - var inotify []InotifyInfo - - scanner := bufio.NewScanner(bytes.NewReader(data)) - for scanner.Scan() { - text = scanner.Text() - if rPos.MatchString(text) { - pos = rPos.FindStringSubmatch(text)[1] - } else if rFlags.MatchString(text) { - flags = rFlags.FindStringSubmatch(text)[1] - } else if rMntID.MatchString(text) { - mntid = rMntID.FindStringSubmatch(text)[1] - } else if rInotify.MatchString(text) { - newInotify, err := parseInotifyInfo(text) - if err != nil { - return nil, err - } - inotify = append(inotify, *newInotify) - } - } - - i := &ProcFDInfo{ - FD: fd, - Pos: pos, - Flags: flags, - MntID: mntid, - InotifyInfos: inotify, - } - - return i, nil -} - -// InotifyInfo represents a single inotify line in the fdinfo file. -type InotifyInfo struct { - // Watch descriptor number - WD string - // Inode number - Ino string - // Device ID - Sdev string - // Mask of events being monitored - Mask string -} - -// InotifyInfo constructor. Only available on kernel 3.8+. -func parseInotifyInfo(line string) (*InotifyInfo, error) { - r := regexp.MustCompile(`^inotify\s+wd:([0-9a-f]+)\s+ino:([0-9a-f]+)\s+sdev:([0-9a-f]+)\s+mask:([0-9a-f]+)`) - m := r.FindStringSubmatch(line) - i := &InotifyInfo{ - WD: m[1], - Ino: m[2], - Sdev: m[3], - Mask: m[4], - } - return i, nil -} - -// ProcFDInfos represents a list of ProcFDInfo structs. -type ProcFDInfos []ProcFDInfo - -func (p ProcFDInfos) Len() int { return len(p) } -func (p ProcFDInfos) Swap(i, j int) { p[i], p[j] = p[j], p[i] } -func (p ProcFDInfos) Less(i, j int) bool { return p[i].FD < p[j].FD } - -// InotifyWatchLen returns the total number of inotify watches -func (p ProcFDInfos) InotifyWatchLen() (int, error) { - length := 0 - for _, f := range p { - length += len(f.InotifyInfos) - } - - return length, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc_io.go b/vendor/github.com/prometheus/procfs/proc_io.go deleted file mode 100644 index 776f3497..00000000 --- a/vendor/github.com/prometheus/procfs/proc_io.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "fmt" - - "github.com/prometheus/procfs/internal/util" -) - -// ProcIO models the content of /proc//io. -type ProcIO struct { - // Chars read. - RChar uint64 - // Chars written. - WChar uint64 - // Read syscalls. - SyscR uint64 - // Write syscalls. - SyscW uint64 - // Bytes read. - ReadBytes uint64 - // Bytes written. - WriteBytes uint64 - // Bytes written, but taking into account truncation. See - // Documentation/filesystems/proc.txt in the kernel sources for - // detailed explanation. - CancelledWriteBytes int64 -} - -// IO creates a new ProcIO instance from a given Proc instance. -func (p Proc) IO() (ProcIO, error) { - pio := ProcIO{} - - data, err := util.ReadFileNoStat(p.path("io")) - if err != nil { - return pio, err - } - - ioFormat := "rchar: %d\nwchar: %d\nsyscr: %d\nsyscw: %d\n" + - "read_bytes: %d\nwrite_bytes: %d\n" + - "cancelled_write_bytes: %d\n" - - _, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR, - &pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes) - - return pio, err -} diff --git a/vendor/github.com/prometheus/procfs/proc_limits.go b/vendor/github.com/prometheus/procfs/proc_limits.go deleted file mode 100644 index 91ee24df..00000000 --- a/vendor/github.com/prometheus/procfs/proc_limits.go +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "fmt" - "os" - "regexp" - "strconv" -) - -// ProcLimits represents the soft limits for each of the process's resource -// limits. For more information see getrlimit(2): -// http://man7.org/linux/man-pages/man2/getrlimit.2.html. -type ProcLimits struct { - // CPU time limit in seconds. - CPUTime int64 - // Maximum size of files that the process may create. - FileSize int64 - // Maximum size of the process's data segment (initialized data, - // uninitialized data, and heap). - DataSize int64 - // Maximum size of the process stack in bytes. - StackSize int64 - // Maximum size of a core file. - CoreFileSize int64 - // Limit of the process's resident set in pages. - ResidentSet int64 - // Maximum number of processes that can be created for the real user ID of - // the calling process. - Processes int64 - // Value one greater than the maximum file descriptor number that can be - // opened by this process. - OpenFiles int64 - // Maximum number of bytes of memory that may be locked into RAM. - LockedMemory int64 - // Maximum size of the process's virtual memory address space in bytes. - AddressSpace int64 - // Limit on the combined number of flock(2) locks and fcntl(2) leases that - // this process may establish. - FileLocks int64 - // Limit of signals that may be queued for the real user ID of the calling - // process. - PendingSignals int64 - // Limit on the number of bytes that can be allocated for POSIX message - // queues for the real user ID of the calling process. - MsqqueueSize int64 - // Limit of the nice priority set using setpriority(2) or nice(2). - NicePriority int64 - // Limit of the real-time priority set using sched_setscheduler(2) or - // sched_setparam(2). - RealtimePriority int64 - // Limit (in microseconds) on the amount of CPU time that a process - // scheduled under a real-time scheduling policy may consume without making - // a blocking system call. - RealtimeTimeout int64 -} - -const ( - limitsFields = 3 - limitsUnlimited = "unlimited" -) - -var ( - limitsDelimiter = regexp.MustCompile(" +") -) - -// NewLimits returns the current soft limits of the process. -// -// Deprecated: use p.Limits() instead -func (p Proc) NewLimits() (ProcLimits, error) { - return p.Limits() -} - -// Limits returns the current soft limits of the process. -func (p Proc) Limits() (ProcLimits, error) { - f, err := os.Open(p.path("limits")) - if err != nil { - return ProcLimits{}, err - } - defer f.Close() - - var ( - l = ProcLimits{} - s = bufio.NewScanner(f) - ) - for s.Scan() { - fields := limitsDelimiter.Split(s.Text(), limitsFields) - if len(fields) != limitsFields { - return ProcLimits{}, fmt.Errorf( - "couldn't parse %s line %s", f.Name(), s.Text()) - } - - switch fields[0] { - case "Max cpu time": - l.CPUTime, err = parseInt(fields[1]) - case "Max file size": - l.FileSize, err = parseInt(fields[1]) - case "Max data size": - l.DataSize, err = parseInt(fields[1]) - case "Max stack size": - l.StackSize, err = parseInt(fields[1]) - case "Max core file size": - l.CoreFileSize, err = parseInt(fields[1]) - case "Max resident set": - l.ResidentSet, err = parseInt(fields[1]) - case "Max processes": - l.Processes, err = parseInt(fields[1]) - case "Max open files": - l.OpenFiles, err = parseInt(fields[1]) - case "Max locked memory": - l.LockedMemory, err = parseInt(fields[1]) - case "Max address space": - l.AddressSpace, err = parseInt(fields[1]) - case "Max file locks": - l.FileLocks, err = parseInt(fields[1]) - case "Max pending signals": - l.PendingSignals, err = parseInt(fields[1]) - case "Max msgqueue size": - l.MsqqueueSize, err = parseInt(fields[1]) - case "Max nice priority": - l.NicePriority, err = parseInt(fields[1]) - case "Max realtime priority": - l.RealtimePriority, err = parseInt(fields[1]) - case "Max realtime timeout": - l.RealtimeTimeout, err = parseInt(fields[1]) - } - if err != nil { - return ProcLimits{}, err - } - } - - return l, s.Err() -} - -func parseInt(s string) (int64, error) { - if s == limitsUnlimited { - return -1, nil - } - i, err := strconv.ParseInt(s, 10, 64) - if err != nil { - return 0, fmt.Errorf("couldn't parse value %s: %s", s, err) - } - return i, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc_ns.go b/vendor/github.com/prometheus/procfs/proc_ns.go deleted file mode 100644 index c66740ff..00000000 --- a/vendor/github.com/prometheus/procfs/proc_ns.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "fmt" - "os" - "strconv" - "strings" -) - -// Namespace represents a single namespace of a process. -type Namespace struct { - Type string // Namespace type. - Inode uint32 // Inode number of the namespace. If two processes are in the same namespace their inodes will match. -} - -// Namespaces contains all of the namespaces that the process is contained in. -type Namespaces map[string]Namespace - -// Namespaces reads from /proc//ns/* to get the namespaces of which the -// process is a member. -func (p Proc) Namespaces() (Namespaces, error) { - d, err := os.Open(p.path("ns")) - if err != nil { - return nil, err - } - defer d.Close() - - names, err := d.Readdirnames(-1) - if err != nil { - return nil, fmt.Errorf("failed to read contents of ns dir: %v", err) - } - - ns := make(Namespaces, len(names)) - for _, name := range names { - target, err := os.Readlink(p.path("ns", name)) - if err != nil { - return nil, err - } - - fields := strings.SplitN(target, ":", 2) - if len(fields) != 2 { - return nil, fmt.Errorf("failed to parse namespace type and inode from '%v'", target) - } - - typ := fields[0] - inode, err := strconv.ParseUint(strings.Trim(fields[1], "[]"), 10, 32) - if err != nil { - return nil, fmt.Errorf("failed to parse inode from '%v': %v", fields[1], err) - } - - ns[name] = Namespace{typ, uint32(inode)} - } - - return ns, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc_psi.go b/vendor/github.com/prometheus/procfs/proc_psi.go deleted file mode 100644 index 0d7bee54..00000000 --- a/vendor/github.com/prometheus/procfs/proc_psi.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -// The PSI / pressure interface is described at -// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/accounting/psi.txt -// Each resource (cpu, io, memory, ...) is exposed as a single file. -// Each file may contain up to two lines, one for "some" pressure and one for "full" pressure. -// Each line contains several averages (over n seconds) and a total in µs. -// -// Example io pressure file: -// > some avg10=0.06 avg60=0.21 avg300=0.99 total=8537362 -// > full avg10=0.00 avg60=0.13 avg300=0.96 total=8183134 - -import ( - "bufio" - "bytes" - "fmt" - "io" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -const lineFormat = "avg10=%f avg60=%f avg300=%f total=%d" - -// PSILine is a single line of values as returned by /proc/pressure/* -// The Avg entries are averages over n seconds, as a percentage -// The Total line is in microseconds -type PSILine struct { - Avg10 float64 - Avg60 float64 - Avg300 float64 - Total uint64 -} - -// PSIStats represent pressure stall information from /proc/pressure/* -// Some indicates the share of time in which at least some tasks are stalled -// Full indicates the share of time in which all non-idle tasks are stalled simultaneously -type PSIStats struct { - Some *PSILine - Full *PSILine -} - -// PSIStatsForResource reads pressure stall information for the specified -// resource from /proc/pressure/. At time of writing this can be -// either "cpu", "memory" or "io". -func (fs FS) PSIStatsForResource(resource string) (PSIStats, error) { - data, err := util.ReadFileNoStat(fs.proc.Path(fmt.Sprintf("%s/%s", "pressure", resource))) - if err != nil { - return PSIStats{}, fmt.Errorf("psi_stats: unavailable for %s", resource) - } - - return parsePSIStats(resource, bytes.NewReader(data)) -} - -// parsePSIStats parses the specified file for pressure stall information -func parsePSIStats(resource string, r io.Reader) (PSIStats, error) { - psiStats := PSIStats{} - - scanner := bufio.NewScanner(r) - for scanner.Scan() { - l := scanner.Text() - prefix := strings.Split(l, " ")[0] - switch prefix { - case "some": - psi := PSILine{} - _, err := fmt.Sscanf(l, fmt.Sprintf("some %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) - if err != nil { - return PSIStats{}, err - } - psiStats.Some = &psi - case "full": - psi := PSILine{} - _, err := fmt.Sscanf(l, fmt.Sprintf("full %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) - if err != nil { - return PSIStats{}, err - } - psiStats.Full = &psi - default: - // If we encounter a line with an unknown prefix, ignore it and move on - // Should new measurement types be added in the future we'll simply ignore them instead - // of erroring on retrieval - continue - } - } - - return psiStats, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go deleted file mode 100644 index 4517d2e9..00000000 --- a/vendor/github.com/prometheus/procfs/proc_stat.go +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bytes" - "fmt" - "os" - - "github.com/prometheus/procfs/internal/fs" - "github.com/prometheus/procfs/internal/util" -) - -// Originally, this USER_HZ value was dynamically retrieved via a sysconf call -// which required cgo. However, that caused a lot of problems regarding -// cross-compilation. Alternatives such as running a binary to determine the -// value, or trying to derive it in some other way were all problematic. After -// much research it was determined that USER_HZ is actually hardcoded to 100 on -// all Go-supported platforms as of the time of this writing. This is why we -// decided to hardcode it here as well. It is not impossible that there could -// be systems with exceptions, but they should be very exotic edge cases, and -// in that case, the worst outcome will be two misreported metrics. -// -// See also the following discussions: -// -// - https://github.com/prometheus/node_exporter/issues/52 -// - https://github.com/prometheus/procfs/pull/2 -// - http://stackoverflow.com/questions/17410841/how-does-user-hz-solve-the-jiffy-scaling-issue -const userHZ = 100 - -// ProcStat provides status information about the process, -// read from /proc/[pid]/stat. -type ProcStat struct { - // The process ID. - PID int - // The filename of the executable. - Comm string - // The process state. - State string - // The PID of the parent of this process. - PPID int - // The process group ID of the process. - PGRP int - // The session ID of the process. - Session int - // The controlling terminal of the process. - TTY int - // The ID of the foreground process group of the controlling terminal of - // the process. - TPGID int - // The kernel flags word of the process. - Flags uint - // The number of minor faults the process has made which have not required - // loading a memory page from disk. - MinFlt uint - // The number of minor faults that the process's waited-for children have - // made. - CMinFlt uint - // The number of major faults the process has made which have required - // loading a memory page from disk. - MajFlt uint - // The number of major faults that the process's waited-for children have - // made. - CMajFlt uint - // Amount of time that this process has been scheduled in user mode, - // measured in clock ticks. - UTime uint - // Amount of time that this process has been scheduled in kernel mode, - // measured in clock ticks. - STime uint - // Amount of time that this process's waited-for children have been - // scheduled in user mode, measured in clock ticks. - CUTime uint - // Amount of time that this process's waited-for children have been - // scheduled in kernel mode, measured in clock ticks. - CSTime uint - // For processes running a real-time scheduling policy, this is the negated - // scheduling priority, minus one. - Priority int - // The nice value, a value in the range 19 (low priority) to -20 (high - // priority). - Nice int - // Number of threads in this process. - NumThreads int - // The time the process started after system boot, the value is expressed - // in clock ticks. - Starttime uint64 - // Virtual memory size in bytes. - VSize uint - // Resident set size in pages. - RSS int - - proc fs.FS -} - -// NewStat returns the current status information of the process. -// -// Deprecated: use p.Stat() instead -func (p Proc) NewStat() (ProcStat, error) { - return p.Stat() -} - -// Stat returns the current status information of the process. -func (p Proc) Stat() (ProcStat, error) { - data, err := util.ReadFileNoStat(p.path("stat")) - if err != nil { - return ProcStat{}, err - } - - var ( - ignore int - - s = ProcStat{PID: p.PID, proc: p.fs} - l = bytes.Index(data, []byte("(")) - r = bytes.LastIndex(data, []byte(")")) - ) - - if l < 0 || r < 0 { - return ProcStat{}, fmt.Errorf( - "unexpected format, couldn't extract comm: %s", - data, - ) - } - - s.Comm = string(data[l+1 : r]) - _, err = fmt.Fscan( - bytes.NewBuffer(data[r+2:]), - &s.State, - &s.PPID, - &s.PGRP, - &s.Session, - &s.TTY, - &s.TPGID, - &s.Flags, - &s.MinFlt, - &s.CMinFlt, - &s.MajFlt, - &s.CMajFlt, - &s.UTime, - &s.STime, - &s.CUTime, - &s.CSTime, - &s.Priority, - &s.Nice, - &s.NumThreads, - &ignore, - &s.Starttime, - &s.VSize, - &s.RSS, - ) - if err != nil { - return ProcStat{}, err - } - - return s, nil -} - -// VirtualMemory returns the virtual memory size in bytes. -func (s ProcStat) VirtualMemory() uint { - return s.VSize -} - -// ResidentMemory returns the resident memory size in bytes. -func (s ProcStat) ResidentMemory() int { - return s.RSS * os.Getpagesize() -} - -// StartTime returns the unix timestamp of the process in seconds. -func (s ProcStat) StartTime() (float64, error) { - fs := FS{proc: s.proc} - stat, err := fs.Stat() - if err != nil { - return 0, err - } - return float64(stat.BootTime) + (float64(s.Starttime) / userHZ), nil -} - -// CPUTime returns the total CPU user and system time in seconds. -func (s ProcStat) CPUTime() float64 { - return float64(s.UTime+s.STime) / userHZ -} diff --git a/vendor/github.com/prometheus/procfs/proc_status.go b/vendor/github.com/prometheus/procfs/proc_status.go deleted file mode 100644 index e30c2b88..00000000 --- a/vendor/github.com/prometheus/procfs/proc_status.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bytes" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// ProcStatus provides status information about the process, -// read from /proc/[pid]/stat. -type ProcStatus struct { - // The process ID. - PID int - // The process name. - Name string - - // Thread group ID. - TGID int - - // Peak virtual memory size. - VmPeak uint64 - // Virtual memory size. - VmSize uint64 - // Locked memory size. - VmLck uint64 - // Pinned memory size. - VmPin uint64 - // Peak resident set size. - VmHWM uint64 - // Resident set size (sum of RssAnnon RssFile and RssShmem). - VmRSS uint64 - // Size of resident anonymous memory. - RssAnon uint64 - // Size of resident file mappings. - RssFile uint64 - // Size of resident shared memory. - RssShmem uint64 - // Size of data segments. - VmData uint64 - // Size of stack segments. - VmStk uint64 - // Size of text segments. - VmExe uint64 - // Shared library code size. - VmLib uint64 - // Page table entries size. - VmPTE uint64 - // Size of second-level page tables. - VmPMD uint64 - // Swapped-out virtual memory size by anonymous private. - VmSwap uint64 - // Size of hugetlb memory portions - HugetlbPages uint64 - - // Number of voluntary context switches. - VoluntaryCtxtSwitches uint64 - // Number of involuntary context switches. - NonVoluntaryCtxtSwitches uint64 -} - -// NewStatus returns the current status information of the process. -func (p Proc) NewStatus() (ProcStatus, error) { - data, err := util.ReadFileNoStat(p.path("status")) - if err != nil { - return ProcStatus{}, err - } - - s := ProcStatus{PID: p.PID} - - lines := strings.Split(string(data), "\n") - for _, line := range lines { - if !bytes.Contains([]byte(line), []byte(":")) { - continue - } - - kv := strings.SplitN(line, ":", 2) - - // removes spaces - k := string(strings.TrimSpace(kv[0])) - v := string(strings.TrimSpace(kv[1])) - // removes "kB" - v = string(bytes.Trim([]byte(v), " kB")) - - // value to int when possible - // we can skip error check here, 'cause vKBytes is not used when value is a string - vKBytes, _ := strconv.ParseUint(v, 10, 64) - // convert kB to B - vBytes := vKBytes * 1024 - - s.fillStatus(k, v, vKBytes, vBytes) - } - - return s, nil -} - -func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) { - switch k { - case "Tgid": - s.TGID = int(vUint) - case "Name": - s.Name = vString - case "VmPeak": - s.VmPeak = vUintBytes - case "VmSize": - s.VmSize = vUintBytes - case "VmLck": - s.VmLck = vUintBytes - case "VmPin": - s.VmPin = vUintBytes - case "VmHWM": - s.VmHWM = vUintBytes - case "VmRSS": - s.VmRSS = vUintBytes - case "RssAnon": - s.RssAnon = vUintBytes - case "RssFile": - s.RssFile = vUintBytes - case "RssShmem": - s.RssShmem = vUintBytes - case "VmData": - s.VmData = vUintBytes - case "VmStk": - s.VmStk = vUintBytes - case "VmExe": - s.VmExe = vUintBytes - case "VmLib": - s.VmLib = vUintBytes - case "VmPTE": - s.VmPTE = vUintBytes - case "VmPMD": - s.VmPMD = vUintBytes - case "VmSwap": - s.VmSwap = vUintBytes - case "HugetlbPages": - s.HugetlbPages = vUintBytes - case "voluntary_ctxt_switches": - s.VoluntaryCtxtSwitches = vUint - case "nonvoluntary_ctxt_switches": - s.NonVoluntaryCtxtSwitches = vUint - } -} - -// TotalCtxtSwitches returns the total context switch. -func (s ProcStatus) TotalCtxtSwitches() uint64 { - return s.VoluntaryCtxtSwitches + s.NonVoluntaryCtxtSwitches -} diff --git a/vendor/github.com/prometheus/procfs/schedstat.go b/vendor/github.com/prometheus/procfs/schedstat.go deleted file mode 100644 index a4c4089a..00000000 --- a/vendor/github.com/prometheus/procfs/schedstat.go +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "errors" - "os" - "regexp" - "strconv" -) - -var ( - cpuLineRE = regexp.MustCompile(`cpu(\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+)`) - procLineRE = regexp.MustCompile(`(\d+) (\d+) (\d+)`) -) - -// Schedstat contains scheduler statistics from /proc/schedstat -// -// See -// https://www.kernel.org/doc/Documentation/scheduler/sched-stats.txt -// for a detailed description of what these numbers mean. -// -// Note the current kernel documentation claims some of the time units are in -// jiffies when they are actually in nanoseconds since 2.6.23 with the -// introduction of CFS. A fix to the documentation is pending. See -// https://lore.kernel.org/patchwork/project/lkml/list/?series=403473 -type Schedstat struct { - CPUs []*SchedstatCPU -} - -// SchedstatCPU contains the values from one "cpu" line -type SchedstatCPU struct { - CPUNum string - - RunningNanoseconds uint64 - WaitingNanoseconds uint64 - RunTimeslices uint64 -} - -// ProcSchedstat contains the values from /proc//schedstat -type ProcSchedstat struct { - RunningNanoseconds uint64 - WaitingNanoseconds uint64 - RunTimeslices uint64 -} - -// Schedstat reads data from /proc/schedstat -func (fs FS) Schedstat() (*Schedstat, error) { - file, err := os.Open(fs.proc.Path("schedstat")) - if err != nil { - return nil, err - } - defer file.Close() - - stats := &Schedstat{} - scanner := bufio.NewScanner(file) - - for scanner.Scan() { - match := cpuLineRE.FindStringSubmatch(scanner.Text()) - if match != nil { - cpu := &SchedstatCPU{} - cpu.CPUNum = match[1] - - cpu.RunningNanoseconds, err = strconv.ParseUint(match[8], 10, 64) - if err != nil { - continue - } - - cpu.WaitingNanoseconds, err = strconv.ParseUint(match[9], 10, 64) - if err != nil { - continue - } - - cpu.RunTimeslices, err = strconv.ParseUint(match[10], 10, 64) - if err != nil { - continue - } - - stats.CPUs = append(stats.CPUs, cpu) - } - } - - return stats, nil -} - -func parseProcSchedstat(contents string) (stats ProcSchedstat, err error) { - match := procLineRE.FindStringSubmatch(contents) - - if match != nil { - stats.RunningNanoseconds, err = strconv.ParseUint(match[1], 10, 64) - if err != nil { - return - } - - stats.WaitingNanoseconds, err = strconv.ParseUint(match[2], 10, 64) - if err != nil { - return - } - - stats.RunTimeslices, err = strconv.ParseUint(match[3], 10, 64) - return - } - - err = errors.New("could not parse schedstat") - return -} diff --git a/vendor/github.com/prometheus/procfs/stat.go b/vendor/github.com/prometheus/procfs/stat.go deleted file mode 100644 index b2a6fc99..00000000 --- a/vendor/github.com/prometheus/procfs/stat.go +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// 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 procfs - -import ( - "bufio" - "bytes" - "fmt" - "io" - "strconv" - "strings" - - "github.com/prometheus/procfs/internal/fs" - "github.com/prometheus/procfs/internal/util" -) - -// CPUStat shows how much time the cpu spend in various stages. -type CPUStat struct { - User float64 - Nice float64 - System float64 - Idle float64 - Iowait float64 - IRQ float64 - SoftIRQ float64 - Steal float64 - Guest float64 - GuestNice float64 -} - -// SoftIRQStat represent the softirq statistics as exported in the procfs stat file. -// A nice introduction can be found at https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html -// It is possible to get per-cpu stats by reading /proc/softirqs -type SoftIRQStat struct { - Hi uint64 - Timer uint64 - NetTx uint64 - NetRx uint64 - Block uint64 - BlockIoPoll uint64 - Tasklet uint64 - Sched uint64 - Hrtimer uint64 - Rcu uint64 -} - -// Stat represents kernel/system statistics. -type Stat struct { - // Boot time in seconds since the Epoch. - BootTime uint64 - // Summed up cpu statistics. - CPUTotal CPUStat - // Per-CPU statistics. - CPU []CPUStat - // Number of times interrupts were handled, which contains numbered and unnumbered IRQs. - IRQTotal uint64 - // Number of times a numbered IRQ was triggered. - IRQ []uint64 - // Number of times a context switch happened. - ContextSwitches uint64 - // Number of times a process was created. - ProcessCreated uint64 - // Number of processes currently running. - ProcessesRunning uint64 - // Number of processes currently blocked (waiting for IO). - ProcessesBlocked uint64 - // Number of times a softirq was scheduled. - SoftIRQTotal uint64 - // Detailed softirq statistics. - SoftIRQ SoftIRQStat -} - -// Parse a cpu statistics line and returns the CPUStat struct plus the cpu id (or -1 for the overall sum). -func parseCPUStat(line string) (CPUStat, int64, error) { - cpuStat := CPUStat{} - var cpu string - - count, err := fmt.Sscanf(line, "%s %f %f %f %f %f %f %f %f %f %f", - &cpu, - &cpuStat.User, &cpuStat.Nice, &cpuStat.System, &cpuStat.Idle, - &cpuStat.Iowait, &cpuStat.IRQ, &cpuStat.SoftIRQ, &cpuStat.Steal, - &cpuStat.Guest, &cpuStat.GuestNice) - - if err != nil && err != io.EOF { - return CPUStat{}, -1, fmt.Errorf("couldn't parse %s (cpu): %s", line, err) - } - if count == 0 { - return CPUStat{}, -1, fmt.Errorf("couldn't parse %s (cpu): 0 elements parsed", line) - } - - cpuStat.User /= userHZ - cpuStat.Nice /= userHZ - cpuStat.System /= userHZ - cpuStat.Idle /= userHZ - cpuStat.Iowait /= userHZ - cpuStat.IRQ /= userHZ - cpuStat.SoftIRQ /= userHZ - cpuStat.Steal /= userHZ - cpuStat.Guest /= userHZ - cpuStat.GuestNice /= userHZ - - if cpu == "cpu" { - return cpuStat, -1, nil - } - - cpuID, err := strconv.ParseInt(cpu[3:], 10, 64) - if err != nil { - return CPUStat{}, -1, fmt.Errorf("couldn't parse %s (cpu/cpuid): %s", line, err) - } - - return cpuStat, cpuID, nil -} - -// Parse a softirq line. -func parseSoftIRQStat(line string) (SoftIRQStat, uint64, error) { - softIRQStat := SoftIRQStat{} - var total uint64 - var prefix string - - _, err := fmt.Sscanf(line, "%s %d %d %d %d %d %d %d %d %d %d %d", - &prefix, &total, - &softIRQStat.Hi, &softIRQStat.Timer, &softIRQStat.NetTx, &softIRQStat.NetRx, - &softIRQStat.Block, &softIRQStat.BlockIoPoll, - &softIRQStat.Tasklet, &softIRQStat.Sched, - &softIRQStat.Hrtimer, &softIRQStat.Rcu) - - if err != nil { - return SoftIRQStat{}, 0, fmt.Errorf("couldn't parse %s (softirq): %s", line, err) - } - - return softIRQStat, total, nil -} - -// NewStat returns information about current cpu/process statistics. -// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -// -// Deprecated: use fs.Stat() instead -func NewStat() (Stat, error) { - fs, err := NewFS(fs.DefaultProcMountPoint) - if err != nil { - return Stat{}, err - } - return fs.Stat() -} - -// NewStat returns information about current cpu/process statistics. -// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -// -// Deprecated: use fs.Stat() instead -func (fs FS) NewStat() (Stat, error) { - return fs.Stat() -} - -// Stat returns information about current cpu/process statistics. -// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt -func (fs FS) Stat() (Stat, error) { - fileName := fs.proc.Path("stat") - data, err := util.ReadFileNoStat(fileName) - if err != nil { - return Stat{}, err - } - - stat := Stat{} - - scanner := bufio.NewScanner(bytes.NewReader(data)) - for scanner.Scan() { - line := scanner.Text() - parts := strings.Fields(scanner.Text()) - // require at least - if len(parts) < 2 { - continue - } - switch { - case parts[0] == "btime": - if stat.BootTime, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (btime): %s", parts[1], err) - } - case parts[0] == "intr": - if stat.IRQTotal, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (intr): %s", parts[1], err) - } - numberedIRQs := parts[2:] - stat.IRQ = make([]uint64, len(numberedIRQs)) - for i, count := range numberedIRQs { - if stat.IRQ[i], err = strconv.ParseUint(count, 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (intr%d): %s", count, i, err) - } - } - case parts[0] == "ctxt": - if stat.ContextSwitches, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (ctxt): %s", parts[1], err) - } - case parts[0] == "processes": - if stat.ProcessCreated, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (processes): %s", parts[1], err) - } - case parts[0] == "procs_running": - if stat.ProcessesRunning, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (procs_running): %s", parts[1], err) - } - case parts[0] == "procs_blocked": - if stat.ProcessesBlocked, err = strconv.ParseUint(parts[1], 10, 64); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s (procs_blocked): %s", parts[1], err) - } - case parts[0] == "softirq": - softIRQStats, total, err := parseSoftIRQStat(line) - if err != nil { - return Stat{}, err - } - stat.SoftIRQTotal = total - stat.SoftIRQ = softIRQStats - case strings.HasPrefix(parts[0], "cpu"): - cpuStat, cpuID, err := parseCPUStat(line) - if err != nil { - return Stat{}, err - } - if cpuID == -1 { - stat.CPUTotal = cpuStat - } else { - for int64(len(stat.CPU)) <= cpuID { - stat.CPU = append(stat.CPU, CPUStat{}) - } - stat.CPU[cpuID] = cpuStat - } - } - } - - if err := scanner.Err(); err != nil { - return Stat{}, fmt.Errorf("couldn't parse %s: %s", fileName, err) - } - - return stat, nil -} diff --git a/vendor/github.com/prometheus/procfs/ttar b/vendor/github.com/prometheus/procfs/ttar deleted file mode 100755 index 19ef02b8..00000000 --- a/vendor/github.com/prometheus/procfs/ttar +++ /dev/null @@ -1,413 +0,0 @@ -#!/usr/bin/env bash - -# Purpose: plain text tar format -# Limitations: - only suitable for text files, directories, and symlinks -# - stores only filename, content, and mode -# - not designed for untrusted input -# -# Note: must work with bash version 3.2 (macOS) - -# Copyright 2017 Roger Luethi -# -# 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. - -set -o errexit -o nounset - -# Sanitize environment (for instance, standard sorting of glob matches) -export LC_ALL=C - -path="" -CMD="" -ARG_STRING="$*" - -#------------------------------------------------------------------------------ -# Not all sed implementations can work on null bytes. In order to make ttar -# work out of the box on macOS, use Python as a stream editor. - -USE_PYTHON=0 - -PYTHON_CREATE_FILTER=$(cat << 'PCF' -#!/usr/bin/env python - -import re -import sys - -for line in sys.stdin: - line = re.sub(r'EOF', r'\EOF', line) - line = re.sub(r'NULLBYTE', r'\NULLBYTE', line) - line = re.sub('\x00', r'NULLBYTE', line) - sys.stdout.write(line) -PCF -) - -PYTHON_EXTRACT_FILTER=$(cat << 'PEF' -#!/usr/bin/env python - -import re -import sys - -for line in sys.stdin: - line = re.sub(r'(?/dev/null; then - echo "ERROR Python not found. Aborting." - exit 2 - fi - USE_PYTHON=1 - fi -} - -#------------------------------------------------------------------------------ - -function usage { - bname=$(basename "$0") - cat << USAGE -Usage: $bname [-C ] -c -f (create archive) - $bname -t -f (list archive contents) - $bname [-C ] -x -f (extract archive) - -Options: - -C (change directory) - -v (verbose) - --recursive-unlink (recursively delete existing directory if path - collides with file or directory to extract) - -Example: Change to sysfs directory, create ttar file from fixtures directory - $bname -C sysfs -c -f sysfs/fixtures.ttar fixtures/ -USAGE -exit "$1" -} - -function vecho { - if [ "${VERBOSE:-}" == "yes" ]; then - echo >&7 "$@" - fi -} - -function set_cmd { - if [ -n "$CMD" ]; then - echo "ERROR: more than one command given" - echo - usage 2 - fi - CMD=$1 -} - -unset VERBOSE -unset RECURSIVE_UNLINK - -while getopts :cf:-:htxvC: opt; do - case $opt in - c) - set_cmd "create" - ;; - f) - ARCHIVE=$OPTARG - ;; - h) - usage 0 - ;; - t) - set_cmd "list" - ;; - x) - set_cmd "extract" - ;; - v) - VERBOSE=yes - exec 7>&1 - ;; - C) - CDIR=$OPTARG - ;; - -) - case $OPTARG in - recursive-unlink) - RECURSIVE_UNLINK="yes" - ;; - *) - echo -e "Error: invalid option -$OPTARG" - echo - usage 1 - ;; - esac - ;; - *) - echo >&2 "ERROR: invalid option -$OPTARG" - echo - usage 1 - ;; - esac -done - -# Remove processed options from arguments -shift $(( OPTIND - 1 )); - -if [ "${CMD:-}" == "" ]; then - echo >&2 "ERROR: no command given" - echo - usage 1 -elif [ "${ARCHIVE:-}" == "" ]; then - echo >&2 "ERROR: no archive name given" - echo - usage 1 -fi - -function list { - local path="" - local size=0 - local line_no=0 - local ttar_file=$1 - if [ -n "${2:-}" ]; then - echo >&2 "ERROR: too many arguments." - echo - usage 1 - fi - if [ ! -e "$ttar_file" ]; then - echo >&2 "ERROR: file not found ($ttar_file)" - echo - usage 1 - fi - while read -r line; do - line_no=$(( line_no + 1 )) - if [ $size -gt 0 ]; then - size=$(( size - 1 )) - continue - fi - if [[ $line =~ ^Path:\ (.*)$ ]]; then - path=${BASH_REMATCH[1]} - elif [[ $line =~ ^Lines:\ (.*)$ ]]; then - size=${BASH_REMATCH[1]} - echo "$path" - elif [[ $line =~ ^Directory:\ (.*)$ ]]; then - path=${BASH_REMATCH[1]} - echo "$path/" - elif [[ $line =~ ^SymlinkTo:\ (.*)$ ]]; then - echo "$path -> ${BASH_REMATCH[1]}" - fi - done < "$ttar_file" -} - -function extract { - local path="" - local size=0 - local line_no=0 - local ttar_file=$1 - if [ -n "${2:-}" ]; then - echo >&2 "ERROR: too many arguments." - echo - usage 1 - fi - if [ ! -e "$ttar_file" ]; then - echo >&2 "ERROR: file not found ($ttar_file)" - echo - usage 1 - fi - while IFS= read -r line; do - line_no=$(( line_no + 1 )) - local eof_without_newline - if [ "$size" -gt 0 ]; then - if [[ "$line" =~ [^\\]EOF ]]; then - # An EOF not preceded by a backslash indicates that the line - # does not end with a newline - eof_without_newline=1 - else - eof_without_newline=0 - fi - # Replace NULLBYTE with null byte if at beginning of line - # Replace NULLBYTE with null byte unless preceded by backslash - # Remove one backslash in front of NULLBYTE (if any) - # Remove EOF unless preceded by backslash - # Remove one backslash in front of EOF - if [ $USE_PYTHON -eq 1 ]; then - echo -n "$line" | python -c "$PYTHON_EXTRACT_FILTER" >> "$path" - else - # The repeated pattern makes up for sed's lack of negative - # lookbehind assertions (for consecutive null bytes). - echo -n "$line" | \ - sed -e 's/^NULLBYTE/\x0/g; - s/\([^\\]\)NULLBYTE/\1\x0/g; - s/\([^\\]\)NULLBYTE/\1\x0/g; - s/\\NULLBYTE/NULLBYTE/g; - s/\([^\\]\)EOF/\1/g; - s/\\EOF/EOF/g; - ' >> "$path" - fi - if [[ "$eof_without_newline" -eq 0 ]]; then - echo >> "$path" - fi - size=$(( size - 1 )) - continue - fi - if [[ $line =~ ^Path:\ (.*)$ ]]; then - path=${BASH_REMATCH[1]} - if [ -L "$path" ]; then - rm "$path" - elif [ -d "$path" ]; then - if [ "${RECURSIVE_UNLINK:-}" == "yes" ]; then - rm -r "$path" - else - # Safe because symlinks to directories are dealt with above - rmdir "$path" - fi - elif [ -e "$path" ]; then - rm "$path" - fi - elif [[ $line =~ ^Lines:\ (.*)$ ]]; then - size=${BASH_REMATCH[1]} - # Create file even if it is zero-length. - touch "$path" - vecho " $path" - elif [[ $line =~ ^Mode:\ (.*)$ ]]; then - mode=${BASH_REMATCH[1]} - chmod "$mode" "$path" - vecho "$mode" - elif [[ $line =~ ^Directory:\ (.*)$ ]]; then - path=${BASH_REMATCH[1]} - mkdir -p "$path" - vecho " $path/" - elif [[ $line =~ ^SymlinkTo:\ (.*)$ ]]; then - ln -s "${BASH_REMATCH[1]}" "$path" - vecho " $path -> ${BASH_REMATCH[1]}" - elif [[ $line =~ ^# ]]; then - # Ignore comments between files - continue - else - echo >&2 "ERROR: Unknown keyword on line $line_no: $line" - exit 1 - fi - done < "$ttar_file" -} - -function div { - echo "# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" \ - "- - - - - -" -} - -function get_mode { - local mfile=$1 - if [ -z "${STAT_OPTION:-}" ]; then - if stat -c '%a' "$mfile" >/dev/null 2>&1; then - # GNU stat - STAT_OPTION='-c' - STAT_FORMAT='%a' - else - # BSD stat - STAT_OPTION='-f' - # Octal output, user/group/other (omit file type, sticky bit) - STAT_FORMAT='%OLp' - fi - fi - stat "${STAT_OPTION}" "${STAT_FORMAT}" "$mfile" -} - -function _create { - shopt -s nullglob - local mode - local eof_without_newline - while (( "$#" )); do - file=$1 - if [ -L "$file" ]; then - echo "Path: $file" - symlinkTo=$(readlink "$file") - echo "SymlinkTo: $symlinkTo" - vecho " $file -> $symlinkTo" - div - elif [ -d "$file" ]; then - # Strip trailing slash (if there is one) - file=${file%/} - echo "Directory: $file" - mode=$(get_mode "$file") - echo "Mode: $mode" - vecho "$mode $file/" - div - # Find all files and dirs, including hidden/dot files - for x in "$file/"{*,.[^.]*}; do - _create "$x" - done - elif [ -f "$file" ]; then - echo "Path: $file" - lines=$(wc -l "$file"|awk '{print $1}') - eof_without_newline=0 - if [[ "$(wc -c "$file"|awk '{print $1}')" -gt 0 ]] && \ - [[ "$(tail -c 1 "$file" | wc -l)" -eq 0 ]]; then - eof_without_newline=1 - lines=$((lines+1)) - fi - echo "Lines: $lines" - # Add backslash in front of EOF - # Add backslash in front of NULLBYTE - # Replace null byte with NULLBYTE - if [ $USE_PYTHON -eq 1 ]; then - < "$file" python -c "$PYTHON_CREATE_FILTER" - else - < "$file" \ - sed 's/EOF/\\EOF/g; - s/NULLBYTE/\\NULLBYTE/g; - s/\x0/NULLBYTE/g; - ' - fi - if [[ "$eof_without_newline" -eq 1 ]]; then - # Finish line with EOF to indicate that the original line did - # not end with a linefeed - echo "EOF" - fi - mode=$(get_mode "$file") - echo "Mode: $mode" - vecho "$mode $file" - div - else - echo >&2 "ERROR: file not found ($file in $(pwd))" - exit 2 - fi - shift - done -} - -function create { - ttar_file=$1 - shift - if [ -z "${1:-}" ]; then - echo >&2 "ERROR: missing arguments." - echo - usage 1 - fi - if [ -e "$ttar_file" ]; then - rm "$ttar_file" - fi - exec > "$ttar_file" - echo "# Archive created by ttar $ARG_STRING" - _create "$@" -} - -test_environment - -if [ -n "${CDIR:-}" ]; then - if [[ "$ARCHIVE" != /* ]]; then - # Relative path: preserve the archive's location before changing - # directory - ARCHIVE="$(pwd)/$ARCHIVE" - fi - cd "$CDIR" -fi - -"$CMD" "$ARCHIVE" "$@" diff --git a/vendor/github.com/prometheus/procfs/vm.go b/vendor/github.com/prometheus/procfs/vm.go deleted file mode 100644 index cb138914..00000000 --- a/vendor/github.com/prometheus/procfs/vm.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build !windows - -package procfs - -import ( - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// The VM interface is described at -// https://www.kernel.org/doc/Documentation/sysctl/vm.txt -// Each setting is exposed as a single file. -// Each file contains one line with a single numerical value, except lowmem_reserve_ratio which holds an array -// and numa_zonelist_order (deprecated) which is a string -type VM struct { - AdminReserveKbytes *int64 // /proc/sys/vm/admin_reserve_kbytes - BlockDump *int64 // /proc/sys/vm/block_dump - CompactUnevictableAllowed *int64 // /proc/sys/vm/compact_unevictable_allowed - DirtyBackgroundBytes *int64 // /proc/sys/vm/dirty_background_bytes - DirtyBackgroundRatio *int64 // /proc/sys/vm/dirty_background_ratio - DirtyBytes *int64 // /proc/sys/vm/dirty_bytes - DirtyExpireCentisecs *int64 // /proc/sys/vm/dirty_expire_centisecs - DirtyRatio *int64 // /proc/sys/vm/dirty_ratio - DirtytimeExpireSeconds *int64 // /proc/sys/vm/dirtytime_expire_seconds - DirtyWritebackCentisecs *int64 // /proc/sys/vm/dirty_writeback_centisecs - DropCaches *int64 // /proc/sys/vm/drop_caches - ExtfragThreshold *int64 // /proc/sys/vm/extfrag_threshold - HugetlbShmGroup *int64 // /proc/sys/vm/hugetlb_shm_group - LaptopMode *int64 // /proc/sys/vm/laptop_mode - LegacyVaLayout *int64 // /proc/sys/vm/legacy_va_layout - LowmemReserveRatio []*int64 // /proc/sys/vm/lowmem_reserve_ratio - MaxMapCount *int64 // /proc/sys/vm/max_map_count - MemoryFailureEarlyKill *int64 // /proc/sys/vm/memory_failure_early_kill - MemoryFailureRecovery *int64 // /proc/sys/vm/memory_failure_recovery - MinFreeKbytes *int64 // /proc/sys/vm/min_free_kbytes - MinSlabRatio *int64 // /proc/sys/vm/min_slab_ratio - MinUnmappedRatio *int64 // /proc/sys/vm/min_unmapped_ratio - MmapMinAddr *int64 // /proc/sys/vm/mmap_min_addr - NrHugepages *int64 // /proc/sys/vm/nr_hugepages - NrHugepagesMempolicy *int64 // /proc/sys/vm/nr_hugepages_mempolicy - NrOvercommitHugepages *int64 // /proc/sys/vm/nr_overcommit_hugepages - NumaStat *int64 // /proc/sys/vm/numa_stat - NumaZonelistOrder string // /proc/sys/vm/numa_zonelist_order - OomDumpTasks *int64 // /proc/sys/vm/oom_dump_tasks - OomKillAllocatingTask *int64 // /proc/sys/vm/oom_kill_allocating_task - OvercommitKbytes *int64 // /proc/sys/vm/overcommit_kbytes - OvercommitMemory *int64 // /proc/sys/vm/overcommit_memory - OvercommitRatio *int64 // /proc/sys/vm/overcommit_ratio - PageCluster *int64 // /proc/sys/vm/page-cluster - PanicOnOom *int64 // /proc/sys/vm/panic_on_oom - PercpuPagelistFraction *int64 // /proc/sys/vm/percpu_pagelist_fraction - StatInterval *int64 // /proc/sys/vm/stat_interval - Swappiness *int64 // /proc/sys/vm/swappiness - UserReserveKbytes *int64 // /proc/sys/vm/user_reserve_kbytes - VfsCachePressure *int64 // /proc/sys/vm/vfs_cache_pressure - WatermarkBoostFactor *int64 // /proc/sys/vm/watermark_boost_factor - WatermarkScaleFactor *int64 // /proc/sys/vm/watermark_scale_factor - ZoneReclaimMode *int64 // /proc/sys/vm/zone_reclaim_mode -} - -// VM reads the VM statistics from the specified `proc` filesystem. -func (fs FS) VM() (*VM, error) { - path := fs.proc.Path("sys/vm") - file, err := os.Stat(path) - if err != nil { - return nil, err - } - if !file.Mode().IsDir() { - return nil, fmt.Errorf("%s is not a directory", path) - } - - files, err := ioutil.ReadDir(path) - if err != nil { - return nil, err - } - - var vm VM - for _, f := range files { - if f.IsDir() { - continue - } - - name := filepath.Join(path, f.Name()) - // ignore errors on read, as there are some write only - // in /proc/sys/vm - value, err := util.SysReadFile(name) - if err != nil { - continue - } - vp := util.NewValueParser(value) - - switch f.Name() { - case "admin_reserve_kbytes": - vm.AdminReserveKbytes = vp.PInt64() - case "block_dump": - vm.BlockDump = vp.PInt64() - case "compact_unevictable_allowed": - vm.CompactUnevictableAllowed = vp.PInt64() - case "dirty_background_bytes": - vm.DirtyBackgroundBytes = vp.PInt64() - case "dirty_background_ratio": - vm.DirtyBackgroundRatio = vp.PInt64() - case "dirty_bytes": - vm.DirtyBytes = vp.PInt64() - case "dirty_expire_centisecs": - vm.DirtyExpireCentisecs = vp.PInt64() - case "dirty_ratio": - vm.DirtyRatio = vp.PInt64() - case "dirtytime_expire_seconds": - vm.DirtytimeExpireSeconds = vp.PInt64() - case "dirty_writeback_centisecs": - vm.DirtyWritebackCentisecs = vp.PInt64() - case "drop_caches": - vm.DropCaches = vp.PInt64() - case "extfrag_threshold": - vm.ExtfragThreshold = vp.PInt64() - case "hugetlb_shm_group": - vm.HugetlbShmGroup = vp.PInt64() - case "laptop_mode": - vm.LaptopMode = vp.PInt64() - case "legacy_va_layout": - vm.LegacyVaLayout = vp.PInt64() - case "lowmem_reserve_ratio": - stringSlice := strings.Fields(value) - pint64Slice := make([]*int64, 0, len(stringSlice)) - for _, value := range stringSlice { - vp := util.NewValueParser(value) - pint64Slice = append(pint64Slice, vp.PInt64()) - } - vm.LowmemReserveRatio = pint64Slice - case "max_map_count": - vm.MaxMapCount = vp.PInt64() - case "memory_failure_early_kill": - vm.MemoryFailureEarlyKill = vp.PInt64() - case "memory_failure_recovery": - vm.MemoryFailureRecovery = vp.PInt64() - case "min_free_kbytes": - vm.MinFreeKbytes = vp.PInt64() - case "min_slab_ratio": - vm.MinSlabRatio = vp.PInt64() - case "min_unmapped_ratio": - vm.MinUnmappedRatio = vp.PInt64() - case "mmap_min_addr": - vm.MmapMinAddr = vp.PInt64() - case "nr_hugepages": - vm.NrHugepages = vp.PInt64() - case "nr_hugepages_mempolicy": - vm.NrHugepagesMempolicy = vp.PInt64() - case "nr_overcommit_hugepages": - vm.NrOvercommitHugepages = vp.PInt64() - case "numa_stat": - vm.NumaStat = vp.PInt64() - case "numa_zonelist_order": - vm.NumaZonelistOrder = value - case "oom_dump_tasks": - vm.OomDumpTasks = vp.PInt64() - case "oom_kill_allocating_task": - vm.OomKillAllocatingTask = vp.PInt64() - case "overcommit_kbytes": - vm.OvercommitKbytes = vp.PInt64() - case "overcommit_memory": - vm.OvercommitMemory = vp.PInt64() - case "overcommit_ratio": - vm.OvercommitRatio = vp.PInt64() - case "page-cluster": - vm.PageCluster = vp.PInt64() - case "panic_on_oom": - vm.PanicOnOom = vp.PInt64() - case "percpu_pagelist_fraction": - vm.PercpuPagelistFraction = vp.PInt64() - case "stat_interval": - vm.StatInterval = vp.PInt64() - case "swappiness": - vm.Swappiness = vp.PInt64() - case "user_reserve_kbytes": - vm.UserReserveKbytes = vp.PInt64() - case "vfs_cache_pressure": - vm.VfsCachePressure = vp.PInt64() - case "watermark_boost_factor": - vm.WatermarkBoostFactor = vp.PInt64() - case "watermark_scale_factor": - vm.WatermarkScaleFactor = vp.PInt64() - case "zone_reclaim_mode": - vm.ZoneReclaimMode = vp.PInt64() - } - if err := vp.Err(); err != nil { - return nil, err - } - } - - return &vm, nil -} diff --git a/vendor/github.com/prometheus/procfs/xfrm.go b/vendor/github.com/prometheus/procfs/xfrm.go deleted file mode 100644 index 30aa417d..00000000 --- a/vendor/github.com/prometheus/procfs/xfrm.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2017 Prometheus Team -// 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 procfs - -import ( - "bufio" - "fmt" - "os" - "strconv" - "strings" -) - -// XfrmStat models the contents of /proc/net/xfrm_stat. -type XfrmStat struct { - // All errors which are not matched by other - XfrmInError int - // No buffer is left - XfrmInBufferError int - // Header Error - XfrmInHdrError int - // No state found - // i.e. either inbound SPI, address, or IPSEC protocol at SA is wrong - XfrmInNoStates int - // Transformation protocol specific error - // e.g. SA Key is wrong - XfrmInStateProtoError int - // Transformation mode specific error - XfrmInStateModeError int - // Sequence error - // e.g. sequence number is out of window - XfrmInStateSeqError int - // State is expired - XfrmInStateExpired int - // State has mismatch option - // e.g. UDP encapsulation type is mismatched - XfrmInStateMismatch int - // State is invalid - XfrmInStateInvalid int - // No matching template for states - // e.g. Inbound SAs are correct but SP rule is wrong - XfrmInTmplMismatch int - // No policy is found for states - // e.g. Inbound SAs are correct but no SP is found - XfrmInNoPols int - // Policy discards - XfrmInPolBlock int - // Policy error - XfrmInPolError int - // All errors which are not matched by others - XfrmOutError int - // Bundle generation error - XfrmOutBundleGenError int - // Bundle check error - XfrmOutBundleCheckError int - // No state was found - XfrmOutNoStates int - // Transformation protocol specific error - XfrmOutStateProtoError int - // Transportation mode specific error - XfrmOutStateModeError int - // Sequence error - // i.e sequence number overflow - XfrmOutStateSeqError int - // State is expired - XfrmOutStateExpired int - // Policy discads - XfrmOutPolBlock int - // Policy is dead - XfrmOutPolDead int - // Policy Error - XfrmOutPolError int - XfrmFwdHdrError int - XfrmOutStateInvalid int - XfrmAcquireError int -} - -// NewXfrmStat reads the xfrm_stat statistics. -func NewXfrmStat() (XfrmStat, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return XfrmStat{}, err - } - - return fs.NewXfrmStat() -} - -// NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem. -func (fs FS) NewXfrmStat() (XfrmStat, error) { - file, err := os.Open(fs.proc.Path("net/xfrm_stat")) - if err != nil { - return XfrmStat{}, err - } - defer file.Close() - - var ( - x = XfrmStat{} - s = bufio.NewScanner(file) - ) - - for s.Scan() { - fields := strings.Fields(s.Text()) - - if len(fields) != 2 { - return XfrmStat{}, fmt.Errorf( - "couldn't parse %s line %s", file.Name(), s.Text()) - } - - name := fields[0] - value, err := strconv.Atoi(fields[1]) - if err != nil { - return XfrmStat{}, err - } - - switch name { - case "XfrmInError": - x.XfrmInError = value - case "XfrmInBufferError": - x.XfrmInBufferError = value - case "XfrmInHdrError": - x.XfrmInHdrError = value - case "XfrmInNoStates": - x.XfrmInNoStates = value - case "XfrmInStateProtoError": - x.XfrmInStateProtoError = value - case "XfrmInStateModeError": - x.XfrmInStateModeError = value - case "XfrmInStateSeqError": - x.XfrmInStateSeqError = value - case "XfrmInStateExpired": - x.XfrmInStateExpired = value - case "XfrmInStateInvalid": - x.XfrmInStateInvalid = value - case "XfrmInTmplMismatch": - x.XfrmInTmplMismatch = value - case "XfrmInNoPols": - x.XfrmInNoPols = value - case "XfrmInPolBlock": - x.XfrmInPolBlock = value - case "XfrmInPolError": - x.XfrmInPolError = value - case "XfrmOutError": - x.XfrmOutError = value - case "XfrmInStateMismatch": - x.XfrmInStateMismatch = value - case "XfrmOutBundleGenError": - x.XfrmOutBundleGenError = value - case "XfrmOutBundleCheckError": - x.XfrmOutBundleCheckError = value - case "XfrmOutNoStates": - x.XfrmOutNoStates = value - case "XfrmOutStateProtoError": - x.XfrmOutStateProtoError = value - case "XfrmOutStateModeError": - x.XfrmOutStateModeError = value - case "XfrmOutStateSeqError": - x.XfrmOutStateSeqError = value - case "XfrmOutStateExpired": - x.XfrmOutStateExpired = value - case "XfrmOutPolBlock": - x.XfrmOutPolBlock = value - case "XfrmOutPolDead": - x.XfrmOutPolDead = value - case "XfrmOutPolError": - x.XfrmOutPolError = value - case "XfrmFwdHdrError": - x.XfrmFwdHdrError = value - case "XfrmOutStateInvalid": - x.XfrmOutStateInvalid = value - case "XfrmAcquireError": - x.XfrmAcquireError = value - } - - } - - return x, s.Err() -} diff --git a/vendor/github.com/prometheus/procfs/zoneinfo.go b/vendor/github.com/prometheus/procfs/zoneinfo.go deleted file mode 100644 index e941503d..00000000 --- a/vendor/github.com/prometheus/procfs/zoneinfo.go +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2019 The Prometheus Authors -// 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. - -// +build !windows - -package procfs - -import ( - "bytes" - "fmt" - "io/ioutil" - "regexp" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// Zoneinfo holds info parsed from /proc/zoneinfo. -type Zoneinfo struct { - Node string - Zone string - NrFreePages *int64 - Min *int64 - Low *int64 - High *int64 - Scanned *int64 - Spanned *int64 - Present *int64 - Managed *int64 - NrActiveAnon *int64 - NrInactiveAnon *int64 - NrIsolatedAnon *int64 - NrAnonPages *int64 - NrAnonTransparentHugepages *int64 - NrActiveFile *int64 - NrInactiveFile *int64 - NrIsolatedFile *int64 - NrFilePages *int64 - NrSlabReclaimable *int64 - NrSlabUnreclaimable *int64 - NrMlockStack *int64 - NrKernelStack *int64 - NrMapped *int64 - NrDirty *int64 - NrWriteback *int64 - NrUnevictable *int64 - NrShmem *int64 - NrDirtied *int64 - NrWritten *int64 - NumaHit *int64 - NumaMiss *int64 - NumaForeign *int64 - NumaInterleave *int64 - NumaLocal *int64 - NumaOther *int64 - Protection []*int64 -} - -var nodeZoneRE = regexp.MustCompile(`(\d+), zone\s+(\w+)`) - -// Zoneinfo parses an zoneinfo-file (/proc/zoneinfo) and returns a slice of -// structs containing the relevant info. More information available here: -// https://www.kernel.org/doc/Documentation/sysctl/vm.txt -func (fs FS) Zoneinfo() ([]Zoneinfo, error) { - data, err := ioutil.ReadFile(fs.proc.Path("zoneinfo")) - if err != nil { - return nil, fmt.Errorf("error reading zoneinfo %s: %s", fs.proc.Path("zoneinfo"), err) - } - zoneinfo, err := parseZoneinfo(data) - if err != nil { - return nil, fmt.Errorf("error parsing zoneinfo %s: %s", fs.proc.Path("zoneinfo"), err) - } - return zoneinfo, nil -} - -func parseZoneinfo(zoneinfoData []byte) ([]Zoneinfo, error) { - - zoneinfo := []Zoneinfo{} - - zoneinfoBlocks := bytes.Split(zoneinfoData, []byte("\nNode")) - for _, block := range zoneinfoBlocks { - var zoneinfoElement Zoneinfo - lines := strings.Split(string(block), "\n") - for _, line := range lines { - - if nodeZone := nodeZoneRE.FindStringSubmatch(line); nodeZone != nil { - zoneinfoElement.Node = nodeZone[1] - zoneinfoElement.Zone = nodeZone[2] - continue - } - if strings.HasPrefix(strings.TrimSpace(line), "per-node stats") { - zoneinfoElement.Zone = "" - continue - } - parts := strings.Fields(strings.TrimSpace(line)) - if len(parts) < 2 { - continue - } - vp := util.NewValueParser(parts[1]) - switch parts[0] { - case "nr_free_pages": - zoneinfoElement.NrFreePages = vp.PInt64() - case "min": - zoneinfoElement.Min = vp.PInt64() - case "low": - zoneinfoElement.Low = vp.PInt64() - case "high": - zoneinfoElement.High = vp.PInt64() - case "scanned": - zoneinfoElement.Scanned = vp.PInt64() - case "spanned": - zoneinfoElement.Spanned = vp.PInt64() - case "present": - zoneinfoElement.Present = vp.PInt64() - case "managed": - zoneinfoElement.Managed = vp.PInt64() - case "nr_active_anon": - zoneinfoElement.NrActiveAnon = vp.PInt64() - case "nr_inactive_anon": - zoneinfoElement.NrInactiveAnon = vp.PInt64() - case "nr_isolated_anon": - zoneinfoElement.NrIsolatedAnon = vp.PInt64() - case "nr_anon_pages": - zoneinfoElement.NrAnonPages = vp.PInt64() - case "nr_anon_transparent_hugepages": - zoneinfoElement.NrAnonTransparentHugepages = vp.PInt64() - case "nr_active_file": - zoneinfoElement.NrActiveFile = vp.PInt64() - case "nr_inactive_file": - zoneinfoElement.NrInactiveFile = vp.PInt64() - case "nr_isolated_file": - zoneinfoElement.NrIsolatedFile = vp.PInt64() - case "nr_file_pages": - zoneinfoElement.NrFilePages = vp.PInt64() - case "nr_slab_reclaimable": - zoneinfoElement.NrSlabReclaimable = vp.PInt64() - case "nr_slab_unreclaimable": - zoneinfoElement.NrSlabUnreclaimable = vp.PInt64() - case "nr_mlock_stack": - zoneinfoElement.NrMlockStack = vp.PInt64() - case "nr_kernel_stack": - zoneinfoElement.NrKernelStack = vp.PInt64() - case "nr_mapped": - zoneinfoElement.NrMapped = vp.PInt64() - case "nr_dirty": - zoneinfoElement.NrDirty = vp.PInt64() - case "nr_writeback": - zoneinfoElement.NrWriteback = vp.PInt64() - case "nr_unevictable": - zoneinfoElement.NrUnevictable = vp.PInt64() - case "nr_shmem": - zoneinfoElement.NrShmem = vp.PInt64() - case "nr_dirtied": - zoneinfoElement.NrDirtied = vp.PInt64() - case "nr_written": - zoneinfoElement.NrWritten = vp.PInt64() - case "numa_hit": - zoneinfoElement.NumaHit = vp.PInt64() - case "numa_miss": - zoneinfoElement.NumaMiss = vp.PInt64() - case "numa_foreign": - zoneinfoElement.NumaForeign = vp.PInt64() - case "numa_interleave": - zoneinfoElement.NumaInterleave = vp.PInt64() - case "numa_local": - zoneinfoElement.NumaLocal = vp.PInt64() - case "numa_other": - zoneinfoElement.NumaOther = vp.PInt64() - case "protection:": - protectionParts := strings.Split(line, ":") - protectionValues := strings.Replace(protectionParts[1], "(", "", 1) - protectionValues = strings.Replace(protectionValues, ")", "", 1) - protectionValues = strings.TrimSpace(protectionValues) - protectionStringMap := strings.Split(protectionValues, ", ") - val, err := util.ParsePInt64s(protectionStringMap) - if err == nil { - zoneinfoElement.Protection = val - } - } - - } - - zoneinfo = append(zoneinfo, zoneinfoElement) - } - return zoneinfo, nil -} diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE deleted file mode 100644 index 6a66aea5..00000000 --- a/vendor/golang.org/x/crypto/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS deleted file mode 100644 index 73309904..00000000 --- a/vendor/golang.org/x/crypto/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/md4/md4.go b/vendor/golang.org/x/crypto/md4/md4.go deleted file mode 100644 index 59d34806..00000000 --- a/vendor/golang.org/x/crypto/md4/md4.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package md4 implements the MD4 hash algorithm as defined in RFC 1320. -// -// Deprecated: MD4 is cryptographically broken and should should only be used -// where compatibility with legacy systems, not security, is the goal. Instead, -// use a secure hash like SHA-256 (from crypto/sha256). -package md4 // import "golang.org/x/crypto/md4" - -import ( - "crypto" - "hash" -) - -func init() { - crypto.RegisterHash(crypto.MD4, New) -} - -// The size of an MD4 checksum in bytes. -const Size = 16 - -// The blocksize of MD4 in bytes. -const BlockSize = 64 - -const ( - _Chunk = 64 - _Init0 = 0x67452301 - _Init1 = 0xEFCDAB89 - _Init2 = 0x98BADCFE - _Init3 = 0x10325476 -) - -// digest represents the partial evaluation of a checksum. -type digest struct { - s [4]uint32 - x [_Chunk]byte - nx int - len uint64 -} - -func (d *digest) Reset() { - d.s[0] = _Init0 - d.s[1] = _Init1 - d.s[2] = _Init2 - d.s[3] = _Init3 - d.nx = 0 - d.len = 0 -} - -// New returns a new hash.Hash computing the MD4 checksum. -func New() hash.Hash { - d := new(digest) - d.Reset() - return d -} - -func (d *digest) Size() int { return Size } - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Write(p []byte) (nn int, err error) { - nn = len(p) - d.len += uint64(nn) - if d.nx > 0 { - n := len(p) - if n > _Chunk-d.nx { - n = _Chunk - d.nx - } - for i := 0; i < n; i++ { - d.x[d.nx+i] = p[i] - } - d.nx += n - if d.nx == _Chunk { - _Block(d, d.x[0:]) - d.nx = 0 - } - p = p[n:] - } - n := _Block(d, p) - p = p[n:] - if len(p) > 0 { - d.nx = copy(d.x[:], p) - } - return -} - -func (d0 *digest) Sum(in []byte) []byte { - // Make a copy of d0, so that caller can keep writing and summing. - d := new(digest) - *d = *d0 - - // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. - len := d.len - var tmp [64]byte - tmp[0] = 0x80 - if len%64 < 56 { - d.Write(tmp[0 : 56-len%64]) - } else { - d.Write(tmp[0 : 64+56-len%64]) - } - - // Length in bits. - len <<= 3 - for i := uint(0); i < 8; i++ { - tmp[i] = byte(len >> (8 * i)) - } - d.Write(tmp[0:8]) - - if d.nx != 0 { - panic("d.nx != 0") - } - - for _, s := range d.s { - in = append(in, byte(s>>0)) - in = append(in, byte(s>>8)) - in = append(in, byte(s>>16)) - in = append(in, byte(s>>24)) - } - return in -} diff --git a/vendor/golang.org/x/crypto/md4/md4block.go b/vendor/golang.org/x/crypto/md4/md4block.go deleted file mode 100644 index 3fed475f..00000000 --- a/vendor/golang.org/x/crypto/md4/md4block.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// MD4 block step. -// In its own file so that a faster assembly or C version -// can be substituted easily. - -package md4 - -var shift1 = []uint{3, 7, 11, 19} -var shift2 = []uint{3, 5, 9, 13} -var shift3 = []uint{3, 9, 11, 15} - -var xIndex2 = []uint{0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15} -var xIndex3 = []uint{0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} - -func _Block(dig *digest, p []byte) int { - a := dig.s[0] - b := dig.s[1] - c := dig.s[2] - d := dig.s[3] - n := 0 - var X [16]uint32 - for len(p) >= _Chunk { - aa, bb, cc, dd := a, b, c, d - - j := 0 - for i := 0; i < 16; i++ { - X[i] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24 - j += 4 - } - - // If this needs to be made faster in the future, - // the usual trick is to unroll each of these - // loops by a factor of 4; that lets you replace - // the shift[] lookups with constants and, - // with suitable variable renaming in each - // unrolled body, delete the a, b, c, d = d, a, b, c - // (or you can let the optimizer do the renaming). - // - // The index variables are uint so that % by a power - // of two can be optimized easily by a compiler. - - // Round 1. - for i := uint(0); i < 16; i++ { - x := i - s := shift1[i%4] - f := ((c ^ d) & b) ^ d - a += f + X[x] - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - // Round 2. - for i := uint(0); i < 16; i++ { - x := xIndex2[i] - s := shift2[i%4] - g := (b & c) | (b & d) | (c & d) - a += g + X[x] + 0x5a827999 - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - // Round 3. - for i := uint(0); i < 16; i++ { - x := xIndex3[i] - s := shift3[i%4] - h := b ^ c ^ d - a += h + X[x] + 0x6ed9eba1 - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - a += aa - b += bb - c += cc - d += dd - - p = p[_Chunk:] - n += _Chunk - } - - dig.s[0] = a - dig.s[1] = b - dig.s[2] = c - dig.s[3] = d - return n -} diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE deleted file mode 100644 index 6a66aea5..00000000 --- a/vendor/golang.org/x/sys/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS deleted file mode 100644 index 73309904..00000000 --- a/vendor/golang.org/x/sys/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go deleted file mode 100644 index af3af60d..00000000 --- a/vendor/golang.org/x/sys/windows/aliases.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2018 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 windows -// +build go1.9 - -package windows - -import "syscall" - -type Errno = syscall.Errno -type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go deleted file mode 100644 index d7771134..00000000 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -import ( - "sync" - "sync/atomic" - "syscall" - "unsafe" -) - -// We need to use LoadLibrary and GetProcAddress from the Go runtime, because -// the these symbols are loaded by the system linker and are required to -// dynamically load additional symbols. Note that in the Go runtime, these -// return syscall.Handle and syscall.Errno, but these are the same, in fact, -// as windows.Handle and windows.Errno, and we intend to keep these the same. - -//go:linkname syscall_loadlibrary syscall.loadlibrary -func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno) - -//go:linkname syscall_getprocaddress syscall.getprocaddress -func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno) - -// DLLError describes reasons for DLL load failures. -type DLLError struct { - Err error - ObjName string - Msg string -} - -func (e *DLLError) Error() string { return e.Msg } - -// A DLL implements access to a single DLL. -type DLL struct { - Name string - Handle Handle -} - -// LoadDLL loads DLL file into memory. -// -// Warning: using LoadDLL without an absolute path name is subject to -// DLL preloading attacks. To safely load a system DLL, use LazyDLL -// with System set to true, or use LoadLibraryEx directly. -func LoadDLL(name string) (dll *DLL, err error) { - namep, err := UTF16PtrFromString(name) - if err != nil { - return nil, err - } - h, e := syscall_loadlibrary(namep) - if e != 0 { - return nil, &DLLError{ - Err: e, - ObjName: name, - Msg: "Failed to load " + name + ": " + e.Error(), - } - } - d := &DLL{ - Name: name, - Handle: h, - } - return d, nil -} - -// MustLoadDLL is like LoadDLL but panics if load operation failes. -func MustLoadDLL(name string) *DLL { - d, e := LoadDLL(name) - if e != nil { - panic(e) - } - return d -} - -// FindProc searches DLL d for procedure named name and returns *Proc -// if found. It returns an error if search fails. -func (d *DLL) FindProc(name string) (proc *Proc, err error) { - namep, err := BytePtrFromString(name) - if err != nil { - return nil, err - } - a, e := syscall_getprocaddress(d.Handle, namep) - if e != 0 { - return nil, &DLLError{ - Err: e, - ObjName: name, - Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), - } - } - p := &Proc{ - Dll: d, - Name: name, - addr: a, - } - return p, nil -} - -// MustFindProc is like FindProc but panics if search fails. -func (d *DLL) MustFindProc(name string) *Proc { - p, e := d.FindProc(name) - if e != nil { - panic(e) - } - return p -} - -// Release unloads DLL d from memory. -func (d *DLL) Release() (err error) { - return FreeLibrary(d.Handle) -} - -// A Proc implements access to a procedure inside a DLL. -type Proc struct { - Dll *DLL - Name string - addr uintptr -} - -// Addr returns the address of the procedure represented by p. -// The return value can be passed to Syscall to run the procedure. -func (p *Proc) Addr() uintptr { - return p.addr -} - -//go:uintptrescapes - -// Call executes procedure p with arguments a. It will panic, if more than 15 arguments -// are supplied. -// -// The returned error is always non-nil, constructed from the result of GetLastError. -// Callers must inspect the primary return value to decide whether an error occurred -// (according to the semantics of the specific function being called) before consulting -// the error. The error will be guaranteed to contain windows.Errno. -func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { - switch len(a) { - case 0: - return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0) - case 1: - return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0) - case 2: - return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0) - case 3: - return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2]) - case 4: - return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0) - case 5: - return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0) - case 6: - return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5]) - case 7: - return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0) - case 8: - return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0) - case 9: - return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]) - case 10: - return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0) - case 11: - return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0) - case 12: - return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11]) - case 13: - return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0) - case 14: - return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0) - case 15: - return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14]) - default: - panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".") - } -} - -// A LazyDLL implements access to a single DLL. -// It will delay the load of the DLL until the first -// call to its Handle method or to one of its -// LazyProc's Addr method. -type LazyDLL struct { - Name string - - // System determines whether the DLL must be loaded from the - // Windows System directory, bypassing the normal DLL search - // path. - System bool - - mu sync.Mutex - dll *DLL // non nil once DLL is loaded -} - -// Load loads DLL file d.Name into memory. It returns an error if fails. -// Load will not try to load DLL, if it is already loaded into memory. -func (d *LazyDLL) Load() error { - // Non-racy version of: - // if d.dll != nil { - if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil { - return nil - } - d.mu.Lock() - defer d.mu.Unlock() - if d.dll != nil { - return nil - } - - // kernel32.dll is special, since it's where LoadLibraryEx comes from. - // The kernel already special-cases its name, so it's always - // loaded from system32. - var dll *DLL - var err error - if d.Name == "kernel32.dll" { - dll, err = LoadDLL(d.Name) - } else { - dll, err = loadLibraryEx(d.Name, d.System) - } - if err != nil { - return err - } - - // Non-racy version of: - // d.dll = dll - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll)) - return nil -} - -// mustLoad is like Load but panics if search fails. -func (d *LazyDLL) mustLoad() { - e := d.Load() - if e != nil { - panic(e) - } -} - -// Handle returns d's module handle. -func (d *LazyDLL) Handle() uintptr { - d.mustLoad() - return uintptr(d.dll.Handle) -} - -// NewProc returns a LazyProc for accessing the named procedure in the DLL d. -func (d *LazyDLL) NewProc(name string) *LazyProc { - return &LazyProc{l: d, Name: name} -} - -// NewLazyDLL creates new LazyDLL associated with DLL file. -func NewLazyDLL(name string) *LazyDLL { - return &LazyDLL{Name: name} -} - -// NewLazySystemDLL is like NewLazyDLL, but will only -// search Windows System directory for the DLL if name is -// a base name (like "advapi32.dll"). -func NewLazySystemDLL(name string) *LazyDLL { - return &LazyDLL{Name: name, System: true} -} - -// A LazyProc implements access to a procedure inside a LazyDLL. -// It delays the lookup until the Addr method is called. -type LazyProc struct { - Name string - - mu sync.Mutex - l *LazyDLL - proc *Proc -} - -// Find searches DLL for procedure named p.Name. It returns -// an error if search fails. Find will not search procedure, -// if it is already found and loaded into memory. -func (p *LazyProc) Find() error { - // Non-racy version of: - // if p.proc == nil { - if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil { - p.mu.Lock() - defer p.mu.Unlock() - if p.proc == nil { - e := p.l.Load() - if e != nil { - return e - } - proc, e := p.l.dll.FindProc(p.Name) - if e != nil { - return e - } - // Non-racy version of: - // p.proc = proc - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc)) - } - } - return nil -} - -// mustFind is like Find but panics if search fails. -func (p *LazyProc) mustFind() { - e := p.Find() - if e != nil { - panic(e) - } -} - -// Addr returns the address of the procedure represented by p. -// The return value can be passed to Syscall to run the procedure. -// It will panic if the procedure cannot be found. -func (p *LazyProc) Addr() uintptr { - p.mustFind() - return p.proc.Addr() -} - -//go:uintptrescapes - -// Call executes procedure p with arguments a. It will panic, if more than 15 arguments -// are supplied. It will also panic if the procedure cannot be found. -// -// The returned error is always non-nil, constructed from the result of GetLastError. -// Callers must inspect the primary return value to decide whether an error occurred -// (according to the semantics of the specific function being called) before consulting -// the error. The error will be guaranteed to contain windows.Errno. -func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { - p.mustFind() - return p.proc.Call(a...) -} - -var canDoSearchSystem32Once struct { - sync.Once - v bool -} - -func initCanDoSearchSystem32() { - // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says: - // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows - // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on - // systems that have KB2533623 installed. To determine whether the - // flags are available, use GetProcAddress to get the address of the - // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories - // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_* - // flags can be used with LoadLibraryEx." - canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil) -} - -func canDoSearchSystem32() bool { - canDoSearchSystem32Once.Do(initCanDoSearchSystem32) - return canDoSearchSystem32Once.v -} - -func isBaseName(name string) bool { - for _, c := range name { - if c == ':' || c == '/' || c == '\\' { - return false - } - } - return true -} - -// loadLibraryEx wraps the Windows LoadLibraryEx function. -// -// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx -// -// If name is not an absolute path, LoadLibraryEx searches for the DLL -// in a variety of automatic locations unless constrained by flags. -// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx -func loadLibraryEx(name string, system bool) (*DLL, error) { - loadDLL := name - var flags uintptr - if system { - if canDoSearchSystem32() { - const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 - flags = LOAD_LIBRARY_SEARCH_SYSTEM32 - } else if isBaseName(name) { - // WindowsXP or unpatched Windows machine - // trying to load "foo.dll" out of the system - // folder, but LoadLibraryEx doesn't support - // that yet on their system, so emulate it. - systemdir, err := GetSystemDirectory() - if err != nil { - return nil, err - } - loadDLL = systemdir + "\\" + name - } - } - h, err := LoadLibraryEx(loadDLL, 0, flags) - if err != nil { - return nil, err - } - return &DLL{Name: name, Handle: h}, nil -} - -type errString string - -func (s errString) Error() string { return string(s) } diff --git a/vendor/golang.org/x/sys/windows/empty.s b/vendor/golang.org/x/sys/windows/empty.s deleted file mode 100644 index 69309e4d..00000000 --- a/vendor/golang.org/x/sys/windows/empty.s +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.12 - -// This file is here to allow bodyless functions with go:linkname for Go 1.11 -// and earlier (see https://golang.org/issue/23311). diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go deleted file mode 100644 index f482a9fa..00000000 --- a/vendor/golang.org/x/sys/windows/env_windows.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2010 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. - -// Windows environment variables. - -package windows - -import ( - "syscall" - "unicode/utf16" - "unsafe" -) - -func Getenv(key string) (value string, found bool) { - return syscall.Getenv(key) -} - -func Setenv(key, value string) error { - return syscall.Setenv(key, value) -} - -func Clearenv() { - syscall.Clearenv() -} - -func Environ() []string { - return syscall.Environ() -} - -// Returns a default environment associated with the token, rather than the current -// process. If inheritExisting is true, then this environment also inherits the -// environment of the current process. -func (token Token) Environ(inheritExisting bool) (env []string, err error) { - var block *uint16 - err = CreateEnvironmentBlock(&block, token, inheritExisting) - if err != nil { - return nil, err - } - defer DestroyEnvironmentBlock(block) - blockp := uintptr(unsafe.Pointer(block)) - for { - entry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:] - for i, v := range entry { - if v == 0 { - entry = entry[:i] - break - } - } - if len(entry) == 0 { - break - } - env = append(env, string(utf16.Decode(entry))) - blockp += 2 * (uintptr(len(entry)) + 1) - } - return env, nil -} - -func Unsetenv(key string) error { - return syscall.Unsetenv(key) -} diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go deleted file mode 100644 index 40af946e..00000000 --- a/vendor/golang.org/x/sys/windows/eventlog.go +++ /dev/null @@ -1,20 +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 windows - -package windows - -const ( - EVENTLOG_SUCCESS = 0 - EVENTLOG_ERROR_TYPE = 1 - EVENTLOG_WARNING_TYPE = 2 - EVENTLOG_INFORMATION_TYPE = 4 - EVENTLOG_AUDIT_SUCCESS = 8 - EVENTLOG_AUDIT_FAILURE = 16 -) - -//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW -//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource -//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go deleted file mode 100644 index 3606c3a8..00000000 --- a/vendor/golang.org/x/sys/windows/exec_windows.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Fork, exec, wait, etc. - -package windows - -// EscapeArg rewrites command line argument s as prescribed -// in http://msdn.microsoft.com/en-us/library/ms880421. -// This function returns "" (2 double quotes) if s is empty. -// Alternatively, these transformations are done: -// - every back slash (\) is doubled, but only if immediately -// followed by double quote ("); -// - every double quote (") is escaped by back slash (\); -// - finally, s is wrapped with double quotes (arg -> "arg"), -// but only if there is space or tab inside s. -func EscapeArg(s string) string { - if len(s) == 0 { - return "\"\"" - } - n := len(s) - hasSpace := false - for i := 0; i < len(s); i++ { - switch s[i] { - case '"', '\\': - n++ - case ' ', '\t': - hasSpace = true - } - } - if hasSpace { - n += 2 - } - if n == len(s) { - return s - } - - qs := make([]byte, n) - j := 0 - if hasSpace { - qs[j] = '"' - j++ - } - slashes := 0 - for i := 0; i < len(s); i++ { - switch s[i] { - default: - slashes = 0 - qs[j] = s[i] - case '\\': - slashes++ - qs[j] = s[i] - case '"': - for ; slashes > 0; slashes-- { - qs[j] = '\\' - j++ - } - qs[j] = '\\' - j++ - qs[j] = s[i] - } - j++ - } - if hasSpace { - for ; slashes > 0; slashes-- { - qs[j] = '\\' - j++ - } - qs[j] = '"' - j++ - } - return string(qs[:j]) -} - -func CloseOnExec(fd Handle) { - SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) -} - -// FullPath retrieves the full path of the specified file. -func FullPath(name string) (path string, err error) { - p, err := UTF16PtrFromString(name) - if err != nil { - return "", err - } - n := uint32(100) - for { - buf := make([]uint16, n) - n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil) - if err != nil { - return "", err - } - if n <= uint32(len(buf)) { - return UTF16ToString(buf[:n]), nil - } - } -} diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go deleted file mode 100644 index f80a4204..00000000 --- a/vendor/golang.org/x/sys/windows/memory_windows.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -const ( - MEM_COMMIT = 0x00001000 - MEM_RESERVE = 0x00002000 - MEM_DECOMMIT = 0x00004000 - MEM_RELEASE = 0x00008000 - MEM_RESET = 0x00080000 - MEM_TOP_DOWN = 0x00100000 - MEM_WRITE_WATCH = 0x00200000 - MEM_PHYSICAL = 0x00400000 - MEM_RESET_UNDO = 0x01000000 - MEM_LARGE_PAGES = 0x20000000 - - PAGE_NOACCESS = 0x01 - PAGE_READONLY = 0x02 - PAGE_READWRITE = 0x04 - PAGE_WRITECOPY = 0x08 - PAGE_EXECUTE_READ = 0x20 - PAGE_EXECUTE_READWRITE = 0x40 - PAGE_EXECUTE_WRITECOPY = 0x80 -) diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash deleted file mode 100755 index 2163843a..00000000 --- a/vendor/golang.org/x/sys/windows/mkerrors.bash +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -# Copyright 2019 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. - -set -e -shopt -s nullglob - -winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" -[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } - -declare -A errors - -{ - echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT." - echo - echo "package windows" - echo "import \"syscall\"" - echo "const (" - - while read -r line; do - unset vtype - if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then - key="${BASH_REMATCH[1]}" - value="${BASH_REMATCH[3]}" - elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then - key="${BASH_REMATCH[1]}" - value="${BASH_REMATCH[3]}" - vtype="${BASH_REMATCH[2]}" - elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then - key="${BASH_REMATCH[1]}" - value="${BASH_REMATCH[3]}" - vtype="${BASH_REMATCH[2]}" - else - continue - fi - [[ -n $key && -n $value ]] || continue - [[ -z ${errors["$key"]} ]] || continue - errors["$key"]="$value" - if [[ -v vtype ]]; then - if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then - vtype="" - elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then - vtype="Handle" - else - vtype="syscall.Errno" - fi - last_vtype="$vtype" - else - vtype="" - if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then - value="S_OK" - elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then - value="ERROR_SUCCESS" - fi - fi - - echo "$key $vtype = $value" - done < "$winerror" - - echo ")" -} | gofmt > "zerrors_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash deleted file mode 100755 index ab8924e9..00000000 --- a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -# Copyright 2019 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. - -set -e -shopt -s nullglob - -knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)" -[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; } - -{ - echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT." - echo - echo "package windows" - echo "type KNOWNFOLDERID GUID" - echo "var (" - while read -r line; do - [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue - printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \ - "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \ - $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \ - $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" )) - done < "$knownfolders" - echo ")" -} | gofmt > "zknownfolderids_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go deleted file mode 100644 index 328e3b2a..00000000 --- a/vendor/golang.org/x/sys/windows/mksyscall.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build generate - -package windows - -//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go deleted file mode 100644 index a74e3e24..00000000 --- a/vendor/golang.org/x/sys/windows/race.go +++ /dev/null @@ -1,30 +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 windows,race - -package windows - -import ( - "runtime" - "unsafe" -) - -const raceenabled = true - -func raceAcquire(addr unsafe.Pointer) { - runtime.RaceAcquire(addr) -} - -func raceReleaseMerge(addr unsafe.Pointer) { - runtime.RaceReleaseMerge(addr) -} - -func raceReadRange(addr unsafe.Pointer, len int) { - runtime.RaceReadRange(addr, len) -} - -func raceWriteRange(addr unsafe.Pointer, len int) { - runtime.RaceWriteRange(addr, len) -} diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go deleted file mode 100644 index e44a3cbf..00000000 --- a/vendor/golang.org/x/sys/windows/race0.go +++ /dev/null @@ -1,25 +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 windows,!race - -package windows - -import ( - "unsafe" -) - -const raceenabled = false - -func raceAcquire(addr unsafe.Pointer) { -} - -func raceReleaseMerge(addr unsafe.Pointer) { -} - -func raceReadRange(addr unsafe.Pointer, len int) { -} - -func raceWriteRange(addr unsafe.Pointer, len int) { -} diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go deleted file mode 100644 index 4b6eff18..00000000 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ /dev/null @@ -1,1396 +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. - -package windows - -import ( - "syscall" - "unsafe" -) - -const ( - NameUnknown = 0 - NameFullyQualifiedDN = 1 - NameSamCompatible = 2 - NameDisplay = 3 - NameUniqueId = 6 - NameCanonical = 7 - NameUserPrincipal = 8 - NameCanonicalEx = 9 - NameServicePrincipal = 10 - NameDnsDomain = 12 -) - -// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. -// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx -//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW -//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW - -// TranslateAccountName converts a directory service -// object name from one format to another. -func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { - u, e := UTF16PtrFromString(username) - if e != nil { - return "", e - } - n := uint32(50) - for { - b := make([]uint16, n) - e = TranslateName(u, from, to, &b[0], &n) - if e == nil { - return UTF16ToString(b[:n]), nil - } - if e != ERROR_INSUFFICIENT_BUFFER { - return "", e - } - if n <= uint32(len(b)) { - return "", e - } - } -} - -const ( - // do not reorder - NetSetupUnknownStatus = iota - NetSetupUnjoined - NetSetupWorkgroupName - NetSetupDomainName -) - -type UserInfo10 struct { - Name *uint16 - Comment *uint16 - UsrComment *uint16 - FullName *uint16 -} - -//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo -//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation -//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree - -const ( - // do not reorder - SidTypeUser = 1 + iota - SidTypeGroup - SidTypeDomain - SidTypeAlias - SidTypeWellKnownGroup - SidTypeDeletedAccount - SidTypeInvalid - SidTypeUnknown - SidTypeComputer - SidTypeLabel -) - -type SidIdentifierAuthority struct { - Value [6]byte -} - -var ( - SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}} - SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}} - SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}} - SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}} - SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}} - SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}} - SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}} -) - -const ( - SECURITY_NULL_RID = 0 - SECURITY_WORLD_RID = 0 - SECURITY_LOCAL_RID = 0 - SECURITY_CREATOR_OWNER_RID = 0 - SECURITY_CREATOR_GROUP_RID = 1 - SECURITY_DIALUP_RID = 1 - SECURITY_NETWORK_RID = 2 - SECURITY_BATCH_RID = 3 - SECURITY_INTERACTIVE_RID = 4 - SECURITY_LOGON_IDS_RID = 5 - SECURITY_SERVICE_RID = 6 - SECURITY_LOCAL_SYSTEM_RID = 18 - SECURITY_BUILTIN_DOMAIN_RID = 32 - SECURITY_PRINCIPAL_SELF_RID = 10 - SECURITY_CREATOR_OWNER_SERVER_RID = 0x2 - SECURITY_CREATOR_GROUP_SERVER_RID = 0x3 - SECURITY_LOGON_IDS_RID_COUNT = 0x3 - SECURITY_ANONYMOUS_LOGON_RID = 0x7 - SECURITY_PROXY_RID = 0x8 - SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9 - SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID - SECURITY_AUTHENTICATED_USER_RID = 0xb - SECURITY_RESTRICTED_CODE_RID = 0xc - SECURITY_NT_NON_UNIQUE_RID = 0x15 -) - -// Predefined domain-relative RIDs for local groups. -// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx -const ( - DOMAIN_ALIAS_RID_ADMINS = 0x220 - DOMAIN_ALIAS_RID_USERS = 0x221 - DOMAIN_ALIAS_RID_GUESTS = 0x222 - DOMAIN_ALIAS_RID_POWER_USERS = 0x223 - DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 - DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 - DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 - DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 - DOMAIN_ALIAS_RID_REPLICATOR = 0x228 - DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 - DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a - DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b - DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c - DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d - DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e - DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f - DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 - DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 - DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 - DOMAIN_ALIAS_RID_IUSERS = 0x238 - DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 - DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b - DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c - DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d - DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e -) - -//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW -//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW -//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW -//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW -//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid -//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid -//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid -//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid -//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid -//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid -//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid -//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority -//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount -//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority -//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid - -// The security identifier (SID) structure is a variable-length -// structure used to uniquely identify users or groups. -type SID struct{} - -// StringToSid converts a string-format security identifier -// SID into a valid, functional SID. -func StringToSid(s string) (*SID, error) { - var sid *SID - p, e := UTF16PtrFromString(s) - if e != nil { - return nil, e - } - e = ConvertStringSidToSid(p, &sid) - if e != nil { - return nil, e - } - defer LocalFree((Handle)(unsafe.Pointer(sid))) - return sid.Copy() -} - -// LookupSID retrieves a security identifier SID for the account -// and the name of the domain on which the account was found. -// System specify target computer to search. -func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { - if len(account) == 0 { - return nil, "", 0, syscall.EINVAL - } - acc, e := UTF16PtrFromString(account) - if e != nil { - return nil, "", 0, e - } - var sys *uint16 - if len(system) > 0 { - sys, e = UTF16PtrFromString(system) - if e != nil { - return nil, "", 0, e - } - } - n := uint32(50) - dn := uint32(50) - for { - b := make([]byte, n) - db := make([]uint16, dn) - sid = (*SID)(unsafe.Pointer(&b[0])) - e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) - if e == nil { - return sid, UTF16ToString(db), accType, nil - } - if e != ERROR_INSUFFICIENT_BUFFER { - return nil, "", 0, e - } - if n <= uint32(len(b)) { - return nil, "", 0, e - } - } -} - -// String converts SID to a string format suitable for display, storage, or transmission. -func (sid *SID) String() string { - var s *uint16 - e := ConvertSidToStringSid(sid, &s) - if e != nil { - return "" - } - defer LocalFree((Handle)(unsafe.Pointer(s))) - return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]) -} - -// Len returns the length, in bytes, of a valid security identifier SID. -func (sid *SID) Len() int { - return int(GetLengthSid(sid)) -} - -// Copy creates a duplicate of security identifier SID. -func (sid *SID) Copy() (*SID, error) { - b := make([]byte, sid.Len()) - sid2 := (*SID)(unsafe.Pointer(&b[0])) - e := CopySid(uint32(len(b)), sid2, sid) - if e != nil { - return nil, e - } - return sid2, nil -} - -// IdentifierAuthority returns the identifier authority of the SID. -func (sid *SID) IdentifierAuthority() SidIdentifierAuthority { - return *getSidIdentifierAuthority(sid) -} - -// SubAuthorityCount returns the number of sub-authorities in the SID. -func (sid *SID) SubAuthorityCount() uint8 { - return *getSidSubAuthorityCount(sid) -} - -// SubAuthority returns the sub-authority of the SID as specified by -// the index, which must be less than sid.SubAuthorityCount(). -func (sid *SID) SubAuthority(idx uint32) uint32 { - if idx >= uint32(sid.SubAuthorityCount()) { - panic("sub-authority index out of range") - } - return *getSidSubAuthority(sid, idx) -} - -// IsValid returns whether the SID has a valid revision and length. -func (sid *SID) IsValid() bool { - return isValidSid(sid) -} - -// Equals compares two SIDs for equality. -func (sid *SID) Equals(sid2 *SID) bool { - return EqualSid(sid, sid2) -} - -// IsWellKnown determines whether the SID matches the well-known sidType. -func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool { - return isWellKnownSid(sid, sidType) -} - -// LookupAccount retrieves the name of the account for this SID -// and the name of the first domain on which this SID is found. -// System specify target computer to search for. -func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { - var sys *uint16 - if len(system) > 0 { - sys, err = UTF16PtrFromString(system) - if err != nil { - return "", "", 0, err - } - } - n := uint32(50) - dn := uint32(50) - for { - b := make([]uint16, n) - db := make([]uint16, dn) - e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType) - if e == nil { - return UTF16ToString(b), UTF16ToString(db), accType, nil - } - if e != ERROR_INSUFFICIENT_BUFFER { - return "", "", 0, e - } - if n <= uint32(len(b)) { - return "", "", 0, e - } - } -} - -// Various types of pre-specified SIDs that can be synthesized and compared at runtime. -type WELL_KNOWN_SID_TYPE uint32 - -const ( - WinNullSid = 0 - WinWorldSid = 1 - WinLocalSid = 2 - WinCreatorOwnerSid = 3 - WinCreatorGroupSid = 4 - WinCreatorOwnerServerSid = 5 - WinCreatorGroupServerSid = 6 - WinNtAuthoritySid = 7 - WinDialupSid = 8 - WinNetworkSid = 9 - WinBatchSid = 10 - WinInteractiveSid = 11 - WinServiceSid = 12 - WinAnonymousSid = 13 - WinProxySid = 14 - WinEnterpriseControllersSid = 15 - WinSelfSid = 16 - WinAuthenticatedUserSid = 17 - WinRestrictedCodeSid = 18 - WinTerminalServerSid = 19 - WinRemoteLogonIdSid = 20 - WinLogonIdsSid = 21 - WinLocalSystemSid = 22 - WinLocalServiceSid = 23 - WinNetworkServiceSid = 24 - WinBuiltinDomainSid = 25 - WinBuiltinAdministratorsSid = 26 - WinBuiltinUsersSid = 27 - WinBuiltinGuestsSid = 28 - WinBuiltinPowerUsersSid = 29 - WinBuiltinAccountOperatorsSid = 30 - WinBuiltinSystemOperatorsSid = 31 - WinBuiltinPrintOperatorsSid = 32 - WinBuiltinBackupOperatorsSid = 33 - WinBuiltinReplicatorSid = 34 - WinBuiltinPreWindows2000CompatibleAccessSid = 35 - WinBuiltinRemoteDesktopUsersSid = 36 - WinBuiltinNetworkConfigurationOperatorsSid = 37 - WinAccountAdministratorSid = 38 - WinAccountGuestSid = 39 - WinAccountKrbtgtSid = 40 - WinAccountDomainAdminsSid = 41 - WinAccountDomainUsersSid = 42 - WinAccountDomainGuestsSid = 43 - WinAccountComputersSid = 44 - WinAccountControllersSid = 45 - WinAccountCertAdminsSid = 46 - WinAccountSchemaAdminsSid = 47 - WinAccountEnterpriseAdminsSid = 48 - WinAccountPolicyAdminsSid = 49 - WinAccountRasAndIasServersSid = 50 - WinNTLMAuthenticationSid = 51 - WinDigestAuthenticationSid = 52 - WinSChannelAuthenticationSid = 53 - WinThisOrganizationSid = 54 - WinOtherOrganizationSid = 55 - WinBuiltinIncomingForestTrustBuildersSid = 56 - WinBuiltinPerfMonitoringUsersSid = 57 - WinBuiltinPerfLoggingUsersSid = 58 - WinBuiltinAuthorizationAccessSid = 59 - WinBuiltinTerminalServerLicenseServersSid = 60 - WinBuiltinDCOMUsersSid = 61 - WinBuiltinIUsersSid = 62 - WinIUserSid = 63 - WinBuiltinCryptoOperatorsSid = 64 - WinUntrustedLabelSid = 65 - WinLowLabelSid = 66 - WinMediumLabelSid = 67 - WinHighLabelSid = 68 - WinSystemLabelSid = 69 - WinWriteRestrictedCodeSid = 70 - WinCreatorOwnerRightsSid = 71 - WinCacheablePrincipalsGroupSid = 72 - WinNonCacheablePrincipalsGroupSid = 73 - WinEnterpriseReadonlyControllersSid = 74 - WinAccountReadonlyControllersSid = 75 - WinBuiltinEventLogReadersGroup = 76 - WinNewEnterpriseReadonlyControllersSid = 77 - WinBuiltinCertSvcDComAccessGroup = 78 - WinMediumPlusLabelSid = 79 - WinLocalLogonSid = 80 - WinConsoleLogonSid = 81 - WinThisOrganizationCertificateSid = 82 - WinApplicationPackageAuthoritySid = 83 - WinBuiltinAnyPackageSid = 84 - WinCapabilityInternetClientSid = 85 - WinCapabilityInternetClientServerSid = 86 - WinCapabilityPrivateNetworkClientServerSid = 87 - WinCapabilityPicturesLibrarySid = 88 - WinCapabilityVideosLibrarySid = 89 - WinCapabilityMusicLibrarySid = 90 - WinCapabilityDocumentsLibrarySid = 91 - WinCapabilitySharedUserCertificatesSid = 92 - WinCapabilityEnterpriseAuthenticationSid = 93 - WinCapabilityRemovableStorageSid = 94 - WinBuiltinRDSRemoteAccessServersSid = 95 - WinBuiltinRDSEndpointServersSid = 96 - WinBuiltinRDSManagementServersSid = 97 - WinUserModeDriversSid = 98 - WinBuiltinHyperVAdminsSid = 99 - WinAccountCloneableControllersSid = 100 - WinBuiltinAccessControlAssistanceOperatorsSid = 101 - WinBuiltinRemoteManagementUsersSid = 102 - WinAuthenticationAuthorityAssertedSid = 103 - WinAuthenticationServiceAssertedSid = 104 - WinLocalAccountSid = 105 - WinLocalAccountAndAdministratorSid = 106 - WinAccountProtectedUsersSid = 107 - WinCapabilityAppointmentsSid = 108 - WinCapabilityContactsSid = 109 - WinAccountDefaultSystemManagedSid = 110 - WinBuiltinDefaultSystemManagedGroupSid = 111 - WinBuiltinStorageReplicaAdminsSid = 112 - WinAccountKeyAdminsSid = 113 - WinAccountEnterpriseKeyAdminsSid = 114 - WinAuthenticationKeyTrustSid = 115 - WinAuthenticationKeyPropertyMFASid = 116 - WinAuthenticationKeyPropertyAttestationSid = 117 - WinAuthenticationFreshKeyAuthSid = 118 - WinBuiltinDeviceOwnersSid = 119 -) - -// Creates a SID for a well-known predefined alias, generally using the constants of the form -// Win*Sid, for the local machine. -func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { - return CreateWellKnownDomainSid(sidType, nil) -} - -// Creates a SID for a well-known predefined alias, generally using the constants of the form -// Win*Sid, for the domain specified by the domainSid parameter. -func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { - n := uint32(50) - for { - b := make([]byte, n) - sid := (*SID)(unsafe.Pointer(&b[0])) - err := createWellKnownSid(sidType, domainSid, sid, &n) - if err == nil { - return sid, nil - } - if err != ERROR_INSUFFICIENT_BUFFER { - return nil, err - } - if n <= uint32(len(b)) { - return nil, err - } - } -} - -const ( - // do not reorder - TOKEN_ASSIGN_PRIMARY = 1 << iota - TOKEN_DUPLICATE - TOKEN_IMPERSONATE - TOKEN_QUERY - TOKEN_QUERY_SOURCE - TOKEN_ADJUST_PRIVILEGES - TOKEN_ADJUST_GROUPS - TOKEN_ADJUST_DEFAULT - TOKEN_ADJUST_SESSIONID - - TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | - TOKEN_ASSIGN_PRIMARY | - TOKEN_DUPLICATE | - TOKEN_IMPERSONATE | - TOKEN_QUERY | - TOKEN_QUERY_SOURCE | - TOKEN_ADJUST_PRIVILEGES | - TOKEN_ADJUST_GROUPS | - TOKEN_ADJUST_DEFAULT | - TOKEN_ADJUST_SESSIONID - TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY - TOKEN_WRITE = STANDARD_RIGHTS_WRITE | - TOKEN_ADJUST_PRIVILEGES | - TOKEN_ADJUST_GROUPS | - TOKEN_ADJUST_DEFAULT - TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE -) - -const ( - // do not reorder - TokenUser = 1 + iota - TokenGroups - TokenPrivileges - TokenOwner - TokenPrimaryGroup - TokenDefaultDacl - TokenSource - TokenType - TokenImpersonationLevel - TokenStatistics - TokenRestrictedSids - TokenSessionId - TokenGroupsAndPrivileges - TokenSessionReference - TokenSandBoxInert - TokenAuditPolicy - TokenOrigin - TokenElevationType - TokenLinkedToken - TokenElevation - TokenHasRestrictions - TokenAccessInformation - TokenVirtualizationAllowed - TokenVirtualizationEnabled - TokenIntegrityLevel - TokenUIAccess - TokenMandatoryPolicy - TokenLogonSid - MaxTokenInfoClass -) - -// Group attributes inside of Tokengroups.Groups[i].Attributes -const ( - SE_GROUP_MANDATORY = 0x00000001 - SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 - SE_GROUP_ENABLED = 0x00000004 - SE_GROUP_OWNER = 0x00000008 - SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 - SE_GROUP_INTEGRITY = 0x00000020 - SE_GROUP_INTEGRITY_ENABLED = 0x00000040 - SE_GROUP_LOGON_ID = 0xC0000000 - SE_GROUP_RESOURCE = 0x20000000 - SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED -) - -// Privilege attributes -const ( - SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 - SE_PRIVILEGE_ENABLED = 0x00000002 - SE_PRIVILEGE_REMOVED = 0x00000004 - SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 - SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS -) - -// Token types -const ( - TokenPrimary = 1 - TokenImpersonation = 2 -) - -// Impersonation levels -const ( - SecurityAnonymous = 0 - SecurityIdentification = 1 - SecurityImpersonation = 2 - SecurityDelegation = 3 -) - -type LUID struct { - LowPart uint32 - HighPart int32 -} - -type LUIDAndAttributes struct { - Luid LUID - Attributes uint32 -} - -type SIDAndAttributes struct { - Sid *SID - Attributes uint32 -} - -type Tokenuser struct { - User SIDAndAttributes -} - -type Tokenprimarygroup struct { - PrimaryGroup *SID -} - -type Tokengroups struct { - GroupCount uint32 - Groups [1]SIDAndAttributes // Use AllGroups() for iterating. -} - -// AllGroups returns a slice that can be used to iterate over the groups in g. -func (g *Tokengroups) AllGroups() []SIDAndAttributes { - return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount] -} - -type Tokenprivileges struct { - PrivilegeCount uint32 - Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating. -} - -// AllPrivileges returns a slice that can be used to iterate over the privileges in p. -func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes { - return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount] -} - -type Tokenmandatorylabel struct { - Label SIDAndAttributes -} - -func (tml *Tokenmandatorylabel) Size() uint32 { - return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid) -} - -// Authorization Functions -//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership -//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken -//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken -//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf -//sys RevertToSelf() (err error) = advapi32.RevertToSelf -//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken -//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW -//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges -//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups -//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation -//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation -//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx -//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW -//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW -//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW -//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW - -// An access token contains the security information for a logon session. -// The system creates an access token when a user logs on, and every -// process executed on behalf of the user has a copy of the token. -// The token identifies the user, the user's groups, and the user's -// privileges. The system uses the token to control access to securable -// objects and to control the ability of the user to perform various -// system-related operations on the local computer. -type Token Handle - -// OpenCurrentProcessToken opens an access token associated with current -// process with TOKEN_QUERY access. It is a real token that needs to be closed. -// -// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...) -// with the desired access instead, or use GetCurrentProcessToken for a -// TOKEN_QUERY token. -func OpenCurrentProcessToken() (Token, error) { - var token Token - err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token) - return token, err -} - -// GetCurrentProcessToken returns the access token associated with -// the current process. It is a pseudo token that does not need -// to be closed. -func GetCurrentProcessToken() Token { - return Token(^uintptr(4 - 1)) -} - -// GetCurrentThreadToken return the access token associated with -// the current thread. It is a pseudo token that does not need -// to be closed. -func GetCurrentThreadToken() Token { - return Token(^uintptr(5 - 1)) -} - -// GetCurrentThreadEffectiveToken returns the effective access token -// associated with the current thread. It is a pseudo token that does -// not need to be closed. -func GetCurrentThreadEffectiveToken() Token { - return Token(^uintptr(6 - 1)) -} - -// Close releases access to access token. -func (t Token) Close() error { - return CloseHandle(Handle(t)) -} - -// getInfo retrieves a specified type of information about an access token. -func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) { - n := uint32(initSize) - for { - b := make([]byte, n) - e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n) - if e == nil { - return unsafe.Pointer(&b[0]), nil - } - if e != ERROR_INSUFFICIENT_BUFFER { - return nil, e - } - if n <= uint32(len(b)) { - return nil, e - } - } -} - -// GetTokenUser retrieves access token t user account information. -func (t Token) GetTokenUser() (*Tokenuser, error) { - i, e := t.getInfo(TokenUser, 50) - if e != nil { - return nil, e - } - return (*Tokenuser)(i), nil -} - -// GetTokenGroups retrieves group accounts associated with access token t. -func (t Token) GetTokenGroups() (*Tokengroups, error) { - i, e := t.getInfo(TokenGroups, 50) - if e != nil { - return nil, e - } - return (*Tokengroups)(i), nil -} - -// GetTokenPrimaryGroup retrieves access token t primary group information. -// A pointer to a SID structure representing a group that will become -// the primary group of any objects created by a process using this access token. -func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) { - i, e := t.getInfo(TokenPrimaryGroup, 50) - if e != nil { - return nil, e - } - return (*Tokenprimarygroup)(i), nil -} - -// GetUserProfileDirectory retrieves path to the -// root directory of the access token t user's profile. -func (t Token) GetUserProfileDirectory() (string, error) { - n := uint32(100) - for { - b := make([]uint16, n) - e := GetUserProfileDirectory(t, &b[0], &n) - if e == nil { - return UTF16ToString(b), nil - } - if e != ERROR_INSUFFICIENT_BUFFER { - return "", e - } - if n <= uint32(len(b)) { - return "", e - } - } -} - -// IsElevated returns whether the current token is elevated from a UAC perspective. -func (token Token) IsElevated() bool { - var isElevated uint32 - var outLen uint32 - err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen) - if err != nil { - return false - } - return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0 -} - -// GetLinkedToken returns the linked token, which may be an elevated UAC token. -func (token Token) GetLinkedToken() (Token, error) { - var linkedToken Token - var outLen uint32 - err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen) - if err != nil { - return Token(0), err - } - return linkedToken, nil -} - -// GetSystemDirectory retrieves the path to current location of the system -// directory, which is typically, though not always, `C:\Windows\System32`. -func GetSystemDirectory() (string, error) { - n := uint32(MAX_PATH) - for { - b := make([]uint16, n) - l, e := getSystemDirectory(&b[0], n) - if e != nil { - return "", e - } - if l <= n { - return UTF16ToString(b[:l]), nil - } - n = l - } -} - -// GetWindowsDirectory retrieves the path to current location of the Windows -// directory, which is typically, though not always, `C:\Windows`. This may -// be a private user directory in the case that the application is running -// under a terminal server. -func GetWindowsDirectory() (string, error) { - n := uint32(MAX_PATH) - for { - b := make([]uint16, n) - l, e := getWindowsDirectory(&b[0], n) - if e != nil { - return "", e - } - if l <= n { - return UTF16ToString(b[:l]), nil - } - n = l - } -} - -// GetSystemWindowsDirectory retrieves the path to current location of the -// Windows directory, which is typically, though not always, `C:\Windows`. -func GetSystemWindowsDirectory() (string, error) { - n := uint32(MAX_PATH) - for { - b := make([]uint16, n) - l, e := getSystemWindowsDirectory(&b[0], n) - if e != nil { - return "", e - } - if l <= n { - return UTF16ToString(b[:l]), nil - } - n = l - } -} - -// IsMember reports whether the access token t is a member of the provided SID. -func (t Token) IsMember(sid *SID) (bool, error) { - var b int32 - if e := checkTokenMembership(t, sid, &b); e != nil { - return false, e - } - return b != 0, nil -} - -const ( - WTS_CONSOLE_CONNECT = 0x1 - WTS_CONSOLE_DISCONNECT = 0x2 - WTS_REMOTE_CONNECT = 0x3 - WTS_REMOTE_DISCONNECT = 0x4 - WTS_SESSION_LOGON = 0x5 - WTS_SESSION_LOGOFF = 0x6 - WTS_SESSION_LOCK = 0x7 - WTS_SESSION_UNLOCK = 0x8 - WTS_SESSION_REMOTE_CONTROL = 0x9 - WTS_SESSION_CREATE = 0xa - WTS_SESSION_TERMINATE = 0xb -) - -const ( - WTSActive = 0 - WTSConnected = 1 - WTSConnectQuery = 2 - WTSShadow = 3 - WTSDisconnected = 4 - WTSIdle = 5 - WTSListen = 6 - WTSReset = 7 - WTSDown = 8 - WTSInit = 9 -) - -type WTSSESSION_NOTIFICATION struct { - Size uint32 - SessionID uint32 -} - -type WTS_SESSION_INFO struct { - SessionID uint32 - WindowStationName *uint16 - State uint32 -} - -//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken -//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW -//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory - -type ACL struct { - aclRevision byte - sbz1 byte - aclSize uint16 - aceCount uint16 - sbz2 uint16 -} - -type SECURITY_DESCRIPTOR struct { - revision byte - sbz1 byte - control SECURITY_DESCRIPTOR_CONTROL - owner *SID - group *SID - sacl *ACL - dacl *ACL -} - -type SecurityAttributes struct { - Length uint32 - SecurityDescriptor *SECURITY_DESCRIPTOR - InheritHandle uint32 -} - -type SE_OBJECT_TYPE uint32 - -// Constants for type SE_OBJECT_TYPE -const ( - SE_UNKNOWN_OBJECT_TYPE = 0 - SE_FILE_OBJECT = 1 - SE_SERVICE = 2 - SE_PRINTER = 3 - SE_REGISTRY_KEY = 4 - SE_LMSHARE = 5 - SE_KERNEL_OBJECT = 6 - SE_WINDOW_OBJECT = 7 - SE_DS_OBJECT = 8 - SE_DS_OBJECT_ALL = 9 - SE_PROVIDER_DEFINED_OBJECT = 10 - SE_WMIGUID_OBJECT = 11 - SE_REGISTRY_WOW64_32KEY = 12 - SE_REGISTRY_WOW64_64KEY = 13 -) - -type SECURITY_INFORMATION uint32 - -// Constants for type SECURITY_INFORMATION -const ( - OWNER_SECURITY_INFORMATION = 0x00000001 - GROUP_SECURITY_INFORMATION = 0x00000002 - DACL_SECURITY_INFORMATION = 0x00000004 - SACL_SECURITY_INFORMATION = 0x00000008 - LABEL_SECURITY_INFORMATION = 0x00000010 - ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 - SCOPE_SECURITY_INFORMATION = 0x00000040 - BACKUP_SECURITY_INFORMATION = 0x00010000 - PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 - PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 - UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 - UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 -) - -type SECURITY_DESCRIPTOR_CONTROL uint16 - -// Constants for type SECURITY_DESCRIPTOR_CONTROL -const ( - SE_OWNER_DEFAULTED = 0x0001 - SE_GROUP_DEFAULTED = 0x0002 - SE_DACL_PRESENT = 0x0004 - SE_DACL_DEFAULTED = 0x0008 - SE_SACL_PRESENT = 0x0010 - SE_SACL_DEFAULTED = 0x0020 - SE_DACL_AUTO_INHERIT_REQ = 0x0100 - SE_SACL_AUTO_INHERIT_REQ = 0x0200 - SE_DACL_AUTO_INHERITED = 0x0400 - SE_SACL_AUTO_INHERITED = 0x0800 - SE_DACL_PROTECTED = 0x1000 - SE_SACL_PROTECTED = 0x2000 - SE_RM_CONTROL_VALID = 0x4000 - SE_SELF_RELATIVE = 0x8000 -) - -type ACCESS_MASK uint32 - -// Constants for type ACCESS_MASK -const ( - DELETE = 0x00010000 - READ_CONTROL = 0x00020000 - WRITE_DAC = 0x00040000 - WRITE_OWNER = 0x00080000 - SYNCHRONIZE = 0x00100000 - STANDARD_RIGHTS_REQUIRED = 0x000F0000 - STANDARD_RIGHTS_READ = READ_CONTROL - STANDARD_RIGHTS_WRITE = READ_CONTROL - STANDARD_RIGHTS_EXECUTE = READ_CONTROL - STANDARD_RIGHTS_ALL = 0x001F0000 - SPECIFIC_RIGHTS_ALL = 0x0000FFFF - ACCESS_SYSTEM_SECURITY = 0x01000000 - MAXIMUM_ALLOWED = 0x02000000 - GENERIC_READ = 0x80000000 - GENERIC_WRITE = 0x40000000 - GENERIC_EXECUTE = 0x20000000 - GENERIC_ALL = 0x10000000 -) - -type ACCESS_MODE uint32 - -// Constants for type ACCESS_MODE -const ( - NOT_USED_ACCESS = 0 - GRANT_ACCESS = 1 - SET_ACCESS = 2 - DENY_ACCESS = 3 - REVOKE_ACCESS = 4 - SET_AUDIT_SUCCESS = 5 - SET_AUDIT_FAILURE = 6 -) - -// Constants for AceFlags and Inheritance fields -const ( - NO_INHERITANCE = 0x0 - SUB_OBJECTS_ONLY_INHERIT = 0x1 - SUB_CONTAINERS_ONLY_INHERIT = 0x2 - SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3 - INHERIT_NO_PROPAGATE = 0x4 - INHERIT_ONLY = 0x8 - INHERITED_ACCESS_ENTRY = 0x10 - INHERITED_PARENT = 0x10000000 - INHERITED_GRANDPARENT = 0x20000000 - OBJECT_INHERIT_ACE = 0x1 - CONTAINER_INHERIT_ACE = 0x2 - NO_PROPAGATE_INHERIT_ACE = 0x4 - INHERIT_ONLY_ACE = 0x8 - INHERITED_ACE = 0x10 - VALID_INHERIT_FLAGS = 0x1F -) - -type MULTIPLE_TRUSTEE_OPERATION uint32 - -// Constants for MULTIPLE_TRUSTEE_OPERATION -const ( - NO_MULTIPLE_TRUSTEE = 0 - TRUSTEE_IS_IMPERSONATE = 1 -) - -type TRUSTEE_FORM uint32 - -// Constants for TRUSTEE_FORM -const ( - TRUSTEE_IS_SID = 0 - TRUSTEE_IS_NAME = 1 - TRUSTEE_BAD_FORM = 2 - TRUSTEE_IS_OBJECTS_AND_SID = 3 - TRUSTEE_IS_OBJECTS_AND_NAME = 4 -) - -type TRUSTEE_TYPE uint32 - -// Constants for TRUSTEE_TYPE -const ( - TRUSTEE_IS_UNKNOWN = 0 - TRUSTEE_IS_USER = 1 - TRUSTEE_IS_GROUP = 2 - TRUSTEE_IS_DOMAIN = 3 - TRUSTEE_IS_ALIAS = 4 - TRUSTEE_IS_WELL_KNOWN_GROUP = 5 - TRUSTEE_IS_DELETED = 6 - TRUSTEE_IS_INVALID = 7 - TRUSTEE_IS_COMPUTER = 8 -) - -// Constants for ObjectsPresent field -const ( - ACE_OBJECT_TYPE_PRESENT = 0x1 - ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 -) - -type EXPLICIT_ACCESS struct { - AccessPermissions ACCESS_MASK - AccessMode ACCESS_MODE - Inheritance uint32 - Trustee TRUSTEE -} - -// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions. -type TrusteeValue uintptr - -func TrusteeValueFromString(str string) TrusteeValue { - return TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str))) -} -func TrusteeValueFromSID(sid *SID) TrusteeValue { - return TrusteeValue(unsafe.Pointer(sid)) -} -func TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue { - return TrusteeValue(unsafe.Pointer(objectsAndSid)) -} -func TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue { - return TrusteeValue(unsafe.Pointer(objectsAndName)) -} - -type TRUSTEE struct { - MultipleTrustee *TRUSTEE - MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION - TrusteeForm TRUSTEE_FORM - TrusteeType TRUSTEE_TYPE - TrusteeValue TrusteeValue -} - -type OBJECTS_AND_SID struct { - ObjectsPresent uint32 - ObjectTypeGuid GUID - InheritedObjectTypeGuid GUID - Sid *SID -} - -type OBJECTS_AND_NAME struct { - ObjectsPresent uint32 - ObjectType SE_OBJECT_TYPE - ObjectTypeName *uint16 - InheritedObjectTypeName *uint16 - Name *uint16 -} - -//sys getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo -//sys SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) = advapi32.SetSecurityInfo -//sys getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW -//sys SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW - -//sys buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW -//sys initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor - -//sys getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl -//sys getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl -//sys getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl -//sys getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner -//sys getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup -//sys getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength -//sys getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl -//sys isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor - -//sys setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl -//sys setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl -//sys setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl -//sys setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner -//sys setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup -//sys setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl - -//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW -//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW - -//sys makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD -//sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD - -//sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW - -// Control returns the security descriptor control bits. -func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { - err = getSecurityDescriptorControl(sd, &control, &revision) - return -} - -// SetControl sets the security descriptor control bits. -func (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error { - return setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet) -} - -// RMControl returns the security descriptor resource manager control bits. -func (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) { - err = getSecurityDescriptorRMControl(sd, &control) - return -} - -// SetRMControl sets the security descriptor resource manager control bits. -func (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) { - setSecurityDescriptorRMControl(sd, &rmControl) -} - -// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil -// if a DACL exists but is an "empty DACL", meaning fully permissive. If the DACL does not exist, err returns -// ERROR_OBJECT_NOT_FOUND. -func (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) { - var present bool - err = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted) - if !present { - err = ERROR_OBJECT_NOT_FOUND - } - return -} - -// SetDACL sets the absolute security descriptor DACL. -func (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error { - return setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted) -} - -// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil -// if a SACL exists but is an "empty SACL", meaning fully permissive. If the SACL does not exist, err returns -// ERROR_OBJECT_NOT_FOUND. -func (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) { - var present bool - err = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted) - if !present { - err = ERROR_OBJECT_NOT_FOUND - } - return -} - -// SetSACL sets the absolute security descriptor SACL. -func (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error { - return setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted) -} - -// Owner returns the security descriptor owner and whether it was defaulted. -func (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) { - err = getSecurityDescriptorOwner(sd, &owner, &defaulted) - return -} - -// SetOwner sets the absolute security descriptor owner. -func (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error { - return setSecurityDescriptorOwner(absoluteSD, owner, defaulted) -} - -// Group returns the security descriptor group and whether it was defaulted. -func (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) { - err = getSecurityDescriptorGroup(sd, &group, &defaulted) - return -} - -// SetGroup sets the absolute security descriptor owner. -func (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error { - return setSecurityDescriptorGroup(absoluteSD, group, defaulted) -} - -// Length returns the length of the security descriptor. -func (sd *SECURITY_DESCRIPTOR) Length() uint32 { - return getSecurityDescriptorLength(sd) -} - -// IsValid returns whether the security descriptor is valid. -func (sd *SECURITY_DESCRIPTOR) IsValid() bool { - return isValidSecurityDescriptor(sd) -} - -// String returns the SDDL form of the security descriptor, with a function signature that can be -// used with %v formatting directives. -func (sd *SECURITY_DESCRIPTOR) String() string { - var sddl *uint16 - err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil) - if err != nil { - return "" - } - defer LocalFree(Handle(unsafe.Pointer(sddl))) - return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:]) -} - -// ToAbsolute converts a self-relative security descriptor into an absolute one. -func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) { - control, _, err := selfRelativeSD.Control() - if err != nil { - return - } - if control&SE_SELF_RELATIVE == 0 { - err = ERROR_INVALID_PARAMETER - return - } - var absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32 - err = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize, - nil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize) - switch err { - case ERROR_INSUFFICIENT_BUFFER: - case nil: - // makeAbsoluteSD is expected to fail, but it succeeds. - return nil, ERROR_INTERNAL_ERROR - default: - return nil, err - } - if absoluteSDSize > 0 { - absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0])) - } - var ( - dacl *ACL - sacl *ACL - owner *SID - group *SID - ) - if daclSize > 0 { - dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0])) - } - if saclSize > 0 { - sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0])) - } - if ownerSize > 0 { - owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0])) - } - if groupSize > 0 { - group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0])) - } - err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize, - dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize) - return -} - -// ToSelfRelative converts an absolute security descriptor into a self-relative one. -func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) { - control, _, err := absoluteSD.Control() - if err != nil { - return - } - if control&SE_SELF_RELATIVE != 0 { - err = ERROR_INVALID_PARAMETER - return - } - var selfRelativeSDSize uint32 - err = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize) - switch err { - case ERROR_INSUFFICIENT_BUFFER: - case nil: - // makeSelfRelativeSD is expected to fail, but it succeeds. - return nil, ERROR_INTERNAL_ERROR - default: - return nil, err - } - if selfRelativeSDSize > 0 { - selfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0])) - } - err = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize) - return -} - -func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR { - sdBytes := make([]byte, selfRelativeSD.Length()) - copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)]) - return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[0])) -} - -// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a -// self-relative security descriptor object allocated on the Go heap. -func SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) { - var winHeapSD *SECURITY_DESCRIPTOR - err = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil) - if err != nil { - return - } - defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) - return winHeapSD.copySelfRelativeSecurityDescriptor(), nil -} - -// GetSecurityInfo queries the security information for a given handle and returns the self-relative security -// descriptor result on the Go heap. -func GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { - var winHeapSD *SECURITY_DESCRIPTOR - err = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) - if err != nil { - return - } - defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) - return winHeapSD.copySelfRelativeSecurityDescriptor(), nil -} - -// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security -// descriptor result on the Go heap. -func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { - var winHeapSD *SECURITY_DESCRIPTOR - err = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) - if err != nil { - return - } - defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) - return winHeapSD.copySelfRelativeSecurityDescriptor(), nil -} - -// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and -// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor -// result on the Go heap. -func BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) { - var winHeapSD *SECURITY_DESCRIPTOR - var winHeapSDSize uint32 - var firstAccessEntry *EXPLICIT_ACCESS - if len(accessEntries) > 0 { - firstAccessEntry = &accessEntries[0] - } - var firstAuditEntry *EXPLICIT_ACCESS - if len(auditEntries) > 0 { - firstAuditEntry = &auditEntries[0] - } - err = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD) - if err != nil { - return - } - defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) - return winHeapSD.copySelfRelativeSecurityDescriptor(), nil -} - -// NewSecurityDescriptor creates and initializes a new absolute security descriptor. -func NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) { - absoluteSD = &SECURITY_DESCRIPTOR{} - err = initializeSecurityDescriptor(absoluteSD, 1) - return -} - -// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL. -// Both explicitEntries and mergedACL are optional and can be nil. -func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) { - var firstExplicitEntry *EXPLICIT_ACCESS - if len(explicitEntries) > 0 { - firstExplicitEntry = &explicitEntries[0] - } - var winHeapACL *ACL - err = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL) - if err != nil { - return - } - defer LocalFree(Handle(unsafe.Pointer(winHeapACL))) - aclBytes := make([]byte, winHeapACL.aclSize) - copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes)]) - return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil -} diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go deleted file mode 100644 index 847e00bc..00000000 --- a/vendor/golang.org/x/sys/windows/service.go +++ /dev/null @@ -1,229 +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 windows - -package windows - -const ( - SC_MANAGER_CONNECT = 1 - SC_MANAGER_CREATE_SERVICE = 2 - SC_MANAGER_ENUMERATE_SERVICE = 4 - SC_MANAGER_LOCK = 8 - SC_MANAGER_QUERY_LOCK_STATUS = 16 - SC_MANAGER_MODIFY_BOOT_CONFIG = 32 - SC_MANAGER_ALL_ACCESS = 0xf003f -) - -//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW - -const ( - SERVICE_KERNEL_DRIVER = 1 - SERVICE_FILE_SYSTEM_DRIVER = 2 - SERVICE_ADAPTER = 4 - SERVICE_RECOGNIZER_DRIVER = 8 - SERVICE_WIN32_OWN_PROCESS = 16 - SERVICE_WIN32_SHARE_PROCESS = 32 - SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS - SERVICE_INTERACTIVE_PROCESS = 256 - SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER - SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS - - SERVICE_BOOT_START = 0 - SERVICE_SYSTEM_START = 1 - SERVICE_AUTO_START = 2 - SERVICE_DEMAND_START = 3 - SERVICE_DISABLED = 4 - - SERVICE_ERROR_IGNORE = 0 - SERVICE_ERROR_NORMAL = 1 - SERVICE_ERROR_SEVERE = 2 - SERVICE_ERROR_CRITICAL = 3 - - SC_STATUS_PROCESS_INFO = 0 - - SC_ACTION_NONE = 0 - SC_ACTION_RESTART = 1 - SC_ACTION_REBOOT = 2 - SC_ACTION_RUN_COMMAND = 3 - - SERVICE_STOPPED = 1 - SERVICE_START_PENDING = 2 - SERVICE_STOP_PENDING = 3 - SERVICE_RUNNING = 4 - SERVICE_CONTINUE_PENDING = 5 - SERVICE_PAUSE_PENDING = 6 - SERVICE_PAUSED = 7 - SERVICE_NO_CHANGE = 0xffffffff - - SERVICE_ACCEPT_STOP = 1 - SERVICE_ACCEPT_PAUSE_CONTINUE = 2 - SERVICE_ACCEPT_SHUTDOWN = 4 - SERVICE_ACCEPT_PARAMCHANGE = 8 - SERVICE_ACCEPT_NETBINDCHANGE = 16 - SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32 - SERVICE_ACCEPT_POWEREVENT = 64 - SERVICE_ACCEPT_SESSIONCHANGE = 128 - - SERVICE_CONTROL_STOP = 1 - SERVICE_CONTROL_PAUSE = 2 - SERVICE_CONTROL_CONTINUE = 3 - SERVICE_CONTROL_INTERROGATE = 4 - SERVICE_CONTROL_SHUTDOWN = 5 - SERVICE_CONTROL_PARAMCHANGE = 6 - SERVICE_CONTROL_NETBINDADD = 7 - SERVICE_CONTROL_NETBINDREMOVE = 8 - SERVICE_CONTROL_NETBINDENABLE = 9 - SERVICE_CONTROL_NETBINDDISABLE = 10 - SERVICE_CONTROL_DEVICEEVENT = 11 - SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12 - SERVICE_CONTROL_POWEREVENT = 13 - SERVICE_CONTROL_SESSIONCHANGE = 14 - - SERVICE_ACTIVE = 1 - SERVICE_INACTIVE = 2 - SERVICE_STATE_ALL = 3 - - SERVICE_QUERY_CONFIG = 1 - SERVICE_CHANGE_CONFIG = 2 - SERVICE_QUERY_STATUS = 4 - SERVICE_ENUMERATE_DEPENDENTS = 8 - SERVICE_START = 16 - SERVICE_STOP = 32 - SERVICE_PAUSE_CONTINUE = 64 - SERVICE_INTERROGATE = 128 - SERVICE_USER_DEFINED_CONTROL = 256 - SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL - - SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 - - SERVICE_CONFIG_DESCRIPTION = 1 - SERVICE_CONFIG_FAILURE_ACTIONS = 2 - SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3 - SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4 - SERVICE_CONFIG_SERVICE_SID_INFO = 5 - SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6 - SERVICE_CONFIG_PRESHUTDOWN_INFO = 7 - SERVICE_CONFIG_TRIGGER_INFO = 8 - SERVICE_CONFIG_PREFERRED_NODE = 9 - SERVICE_CONFIG_LAUNCH_PROTECTED = 12 - - SERVICE_SID_TYPE_NONE = 0 - SERVICE_SID_TYPE_UNRESTRICTED = 1 - SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED - - SC_ENUM_PROCESS_INFO = 0 - - SERVICE_NOTIFY_STATUS_CHANGE = 2 - SERVICE_NOTIFY_STOPPED = 0x00000001 - SERVICE_NOTIFY_START_PENDING = 0x00000002 - SERVICE_NOTIFY_STOP_PENDING = 0x00000004 - SERVICE_NOTIFY_RUNNING = 0x00000008 - SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010 - SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020 - SERVICE_NOTIFY_PAUSED = 0x00000040 - SERVICE_NOTIFY_CREATED = 0x00000080 - SERVICE_NOTIFY_DELETED = 0x00000100 - SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 -) - -type SERVICE_STATUS struct { - ServiceType uint32 - CurrentState uint32 - ControlsAccepted uint32 - Win32ExitCode uint32 - ServiceSpecificExitCode uint32 - CheckPoint uint32 - WaitHint uint32 -} - -type SERVICE_TABLE_ENTRY struct { - ServiceName *uint16 - ServiceProc uintptr -} - -type QUERY_SERVICE_CONFIG struct { - ServiceType uint32 - StartType uint32 - ErrorControl uint32 - BinaryPathName *uint16 - LoadOrderGroup *uint16 - TagId uint32 - Dependencies *uint16 - ServiceStartName *uint16 - DisplayName *uint16 -} - -type SERVICE_DESCRIPTION struct { - Description *uint16 -} - -type SERVICE_DELAYED_AUTO_START_INFO struct { - IsDelayedAutoStartUp uint32 -} - -type SERVICE_STATUS_PROCESS struct { - ServiceType uint32 - CurrentState uint32 - ControlsAccepted uint32 - Win32ExitCode uint32 - ServiceSpecificExitCode uint32 - CheckPoint uint32 - WaitHint uint32 - ProcessId uint32 - ServiceFlags uint32 -} - -type ENUM_SERVICE_STATUS_PROCESS struct { - ServiceName *uint16 - DisplayName *uint16 - ServiceStatusProcess SERVICE_STATUS_PROCESS -} - -type SERVICE_NOTIFY struct { - Version uint32 - NotifyCallback uintptr - Context uintptr - NotificationStatus uint32 - ServiceStatus SERVICE_STATUS_PROCESS - NotificationTriggered uint32 - ServiceNames *uint16 -} - -type SERVICE_FAILURE_ACTIONS struct { - ResetPeriod uint32 - RebootMsg *uint16 - Command *uint16 - ActionsCount uint32 - Actions *SC_ACTION -} - -type SC_ACTION struct { - Type uint32 - Delay uint32 -} - -type QUERY_SERVICE_LOCK_STATUS struct { - IsLocked uint32 - LockOwner *uint16 - LockDuration uint32 -} - -//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle -//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW -//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW -//sys DeleteService(service Handle) (err error) = advapi32.DeleteService -//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW -//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus -//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW -//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService -//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW -//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus -//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW -//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW -//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W -//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W -//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW -//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx -//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go deleted file mode 100644 index 917cc2aa..00000000 --- a/vendor/golang.org/x/sys/windows/str.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package windows - -func itoa(val int) string { // do it here rather than with fmt to avoid dependency - if val < 0 { - return "-" + itoa(-val) - } - var buf [32]byte // big enough for int64 - i := len(buf) - 1 - for val >= 10 { - buf[i] = byte(val%10 + '0') - i-- - val /= 10 - } - buf[i] = byte(val + '0') - return string(buf[i:]) -} diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go deleted file mode 100644 index af828a91..00000000 --- a/vendor/golang.org/x/sys/windows/syscall.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -// Package windows contains an interface to the low-level operating system -// primitives. OS details vary depending on the underlying system, and -// by default, godoc will display the OS-specific documentation for the current -// system. If you want godoc to display syscall documentation for another -// system, set $GOOS and $GOARCH to the desired system. For example, if -// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS -// to freebsd and $GOARCH to arm. -// -// The primary use of this package is inside other packages that provide a more -// portable interface to the system, such as "os", "time" and "net". Use -// those packages rather than this one if you can. -// -// For details of the functions and data types in this package consult -// the manuals for the appropriate operating system. -// -// These calls return err == nil to indicate success; otherwise -// err represents an operating system error describing the failure and -// holds a value of type syscall.Errno. -package windows // import "golang.org/x/sys/windows" - -import ( - "syscall" -) - -// ByteSliceFromString returns a NUL-terminated slice of bytes -// containing the text of s. If s contains a NUL byte at any -// location, it returns (nil, syscall.EINVAL). -func ByteSliceFromString(s string) ([]byte, error) { - for i := 0; i < len(s); i++ { - if s[i] == 0 { - return nil, syscall.EINVAL - } - } - a := make([]byte, len(s)+1) - copy(a, s) - return a, nil -} - -// BytePtrFromString returns a pointer to a NUL-terminated array of -// bytes containing the text of s. If s contains a NUL byte at any -// location, it returns (nil, syscall.EINVAL). -func BytePtrFromString(s string) (*byte, error) { - a, err := ByteSliceFromString(s) - if err != nil { - return nil, err - } - return &a[0], nil -} - -// Single-word zero for use when we need a valid pointer to 0 bytes. -// See mksyscall.pl. -var _zero uintptr - -func (ts *Timespec) Unix() (sec int64, nsec int64) { - return int64(ts.Sec), int64(ts.Nsec) -} - -func (tv *Timeval) Unix() (sec int64, nsec int64) { - return int64(tv.Sec), int64(tv.Usec) * 1000 -} - -func (ts *Timespec) Nano() int64 { - return int64(ts.Sec)*1e9 + int64(ts.Nsec) -} - -func (tv *Timeval) Nano() int64 { - return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 -} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go deleted file mode 100644 index fe8e42cf..00000000 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ /dev/null @@ -1,1380 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Windows system calls. - -package windows - -import ( - errorspkg "errors" - "sync" - "syscall" - "time" - "unicode/utf16" - "unsafe" -) - -type Handle uintptr - -const ( - InvalidHandle = ^Handle(0) - - // Flags for DefineDosDevice. - DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 - DDD_NO_BROADCAST_SYSTEM = 0x00000008 - DDD_RAW_TARGET_PATH = 0x00000001 - DDD_REMOVE_DEFINITION = 0x00000002 - - // Return values for GetDriveType. - DRIVE_UNKNOWN = 0 - DRIVE_NO_ROOT_DIR = 1 - DRIVE_REMOVABLE = 2 - DRIVE_FIXED = 3 - DRIVE_REMOTE = 4 - DRIVE_CDROM = 5 - DRIVE_RAMDISK = 6 - - // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. - FILE_CASE_SENSITIVE_SEARCH = 0x00000001 - FILE_CASE_PRESERVED_NAMES = 0x00000002 - FILE_FILE_COMPRESSION = 0x00000010 - FILE_DAX_VOLUME = 0x20000000 - FILE_NAMED_STREAMS = 0x00040000 - FILE_PERSISTENT_ACLS = 0x00000008 - FILE_READ_ONLY_VOLUME = 0x00080000 - FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 - FILE_SUPPORTS_ENCRYPTION = 0x00020000 - FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 - FILE_SUPPORTS_HARD_LINKS = 0x00400000 - FILE_SUPPORTS_OBJECT_IDS = 0x00010000 - FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 - FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 - FILE_SUPPORTS_SPARSE_FILES = 0x00000040 - FILE_SUPPORTS_TRANSACTIONS = 0x00200000 - FILE_SUPPORTS_USN_JOURNAL = 0x02000000 - FILE_UNICODE_ON_DISK = 0x00000004 - FILE_VOLUME_IS_COMPRESSED = 0x00008000 - FILE_VOLUME_QUOTAS = 0x00000020 - - // Flags for LockFileEx. - LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 - LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 - - // Return values of SleepEx and other APC functions - STATUS_USER_APC = 0x000000C0 - WAIT_IO_COMPLETION = STATUS_USER_APC -) - -// StringToUTF16 is deprecated. Use UTF16FromString instead. -// If s contains a NUL byte this function panics instead of -// returning an error. -func StringToUTF16(s string) []uint16 { - a, err := UTF16FromString(s) - if err != nil { - panic("windows: string with NUL passed to StringToUTF16") - } - return a -} - -// UTF16FromString returns the UTF-16 encoding of the UTF-8 string -// s, with a terminating NUL added. If s contains a NUL byte at any -// location, it returns (nil, syscall.EINVAL). -func UTF16FromString(s string) ([]uint16, error) { - for i := 0; i < len(s); i++ { - if s[i] == 0 { - return nil, syscall.EINVAL - } - } - return utf16.Encode([]rune(s + "\x00")), nil -} - -// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, -// with a terminating NUL removed. -func UTF16ToString(s []uint16) string { - for i, v := range s { - if v == 0 { - s = s[0:i] - break - } - } - return string(utf16.Decode(s)) -} - -// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. -// If s contains a NUL byte this function panics instead of -// returning an error. -func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] } - -// UTF16PtrFromString returns pointer to the UTF-16 encoding of -// the UTF-8 string s, with a terminating NUL added. If s -// contains a NUL byte at any location, it returns (nil, syscall.EINVAL). -func UTF16PtrFromString(s string) (*uint16, error) { - a, err := UTF16FromString(s) - if err != nil { - return nil, err - } - return &a[0], nil -} - -func Getpagesize() int { return 4096 } - -// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. -// This is useful when interoperating with Windows code requiring callbacks. -// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. -func NewCallback(fn interface{}) uintptr { - return syscall.NewCallback(fn) -} - -// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. -// This is useful when interoperating with Windows code requiring callbacks. -// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. -func NewCallbackCDecl(fn interface{}) uintptr { - return syscall.NewCallbackCDecl(fn) -} - -// windows api calls - -//sys GetLastError() (lasterr error) -//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW -//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW -//sys FreeLibrary(handle Handle) (err error) -//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) -//sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW -//sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW -//sys GetVersion() (ver uint32, err error) -//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW -//sys ExitProcess(exitcode uint32) -//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process -//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW -//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) -//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) -//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) -//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] -//sys CloseHandle(handle Handle) (err error) -//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] -//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) -//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW -//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW -//sys FindClose(handle Handle) (err error) -//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) -//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) -//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW -//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW -//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW -//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW -//sys DeleteFile(path *uint16) (err error) = DeleteFileW -//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW -//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW -//sys LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) -//sys UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) -//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW -//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW -//sys SetEndOfFile(handle Handle) (err error) -//sys GetSystemTimeAsFileTime(time *Filetime) -//sys GetSystemTimePreciseAsFileTime(time *Filetime) -//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] -//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) -//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) -//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) -//sys CancelIo(s Handle) (err error) -//sys CancelIoEx(s Handle, o *Overlapped) (err error) -//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW -//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) -//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW -//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath -//sys TerminateProcess(handle Handle, exitcode uint32) (err error) -//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) -//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW -//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) -//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) -//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] -//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects -//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW -//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) -//sys GetFileType(filehandle Handle) (n uint32, err error) -//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW -//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext -//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom -//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW -//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW -//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW -//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW -//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock -//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock -//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64 -//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) -//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW -//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW -//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW -//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW -//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW -//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] -//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) -//sys FlushFileBuffers(handle Handle) (err error) -//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW -//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW -//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW -//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW -//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) -//sys UnmapViewOfFile(addr uintptr) (err error) -//sys FlushViewOfFile(addr uintptr, length uintptr) (err error) -//sys VirtualLock(addr uintptr, length uintptr) (err error) -//sys VirtualUnlock(addr uintptr, length uintptr) (err error) -//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc -//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree -//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect -//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile -//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW -//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW -//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore -//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore -//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore -//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore -//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain -//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain -//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext -//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext -//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy -//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW -//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey -//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW -//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW -//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW -//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId -//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode -//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode -//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo -//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW -//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW -//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot -//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW -//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW -//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) -//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) -//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) -// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. -//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW -//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW -//sys GetCurrentThreadId() (id uint32) -//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW -//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW -//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW -//sys SetEvent(event Handle) (err error) = kernel32.SetEvent -//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent -//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent -//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) = kernel32.CreateMutexW -//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateMutexExW -//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW -//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex -//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx -//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW -//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject -//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject -//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode -//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread -//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass -//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass -//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) -//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) -//sys GetProcessId(process Handle) (id uint32, err error) -//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) -//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost - -// Volume Management Functions -//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW -//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW -//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW -//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW -//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW -//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW -//sys FindVolumeClose(findVolume Handle) (err error) -//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) -//sys GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW -//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW -//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] -//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW -//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW -//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW -//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW -//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW -//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW -//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW -//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW -//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW -//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW -//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx -//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW -//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters -//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters -//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString -//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 -//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid -//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree -//sys rtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion -//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers - -// Process Status API (PSAPI) -//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses - -// syscall interface implementation for other packages - -// GetCurrentProcess returns the handle for the current process. -// It is a pseudo handle that does not need to be closed. -// The returned error is always nil. -// -// Deprecated: use CurrentProcess for the same Handle without the nil -// error. -func GetCurrentProcess() (Handle, error) { - return CurrentProcess(), nil -} - -// CurrentProcess returns the handle for the current process. -// It is a pseudo handle that does not need to be closed. -func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) } - -// GetCurrentThread returns the handle for the current thread. -// It is a pseudo handle that does not need to be closed. -// The returned error is always nil. -// -// Deprecated: use CurrentThread for the same Handle without the nil -// error. -func GetCurrentThread() (Handle, error) { - return CurrentThread(), nil -} - -// CurrentThread returns the handle for the current thread. -// It is a pseudo handle that does not need to be closed. -func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) } - -// GetProcAddressByOrdinal retrieves the address of the exported -// function from module by ordinal. -func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { - r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) - proc = uintptr(r0) - if proc == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Exit(code int) { ExitProcess(uint32(code)) } - -func makeInheritSa() *SecurityAttributes { - var sa SecurityAttributes - sa.Length = uint32(unsafe.Sizeof(sa)) - sa.InheritHandle = 1 - return &sa -} - -func Open(path string, mode int, perm uint32) (fd Handle, err error) { - if len(path) == 0 { - return InvalidHandle, ERROR_FILE_NOT_FOUND - } - pathp, err := UTF16PtrFromString(path) - if err != nil { - return InvalidHandle, err - } - var access uint32 - switch mode & (O_RDONLY | O_WRONLY | O_RDWR) { - case O_RDONLY: - access = GENERIC_READ - case O_WRONLY: - access = GENERIC_WRITE - case O_RDWR: - access = GENERIC_READ | GENERIC_WRITE - } - if mode&O_CREAT != 0 { - access |= GENERIC_WRITE - } - if mode&O_APPEND != 0 { - access &^= GENERIC_WRITE - access |= FILE_APPEND_DATA - } - sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE) - var sa *SecurityAttributes - if mode&O_CLOEXEC == 0 { - sa = makeInheritSa() - } - var createmode uint32 - switch { - case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL): - createmode = CREATE_NEW - case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC): - createmode = CREATE_ALWAYS - case mode&O_CREAT == O_CREAT: - createmode = OPEN_ALWAYS - case mode&O_TRUNC == O_TRUNC: - createmode = TRUNCATE_EXISTING - default: - createmode = OPEN_EXISTING - } - var attrs uint32 = FILE_ATTRIBUTE_NORMAL - if perm&S_IWRITE == 0 { - attrs = FILE_ATTRIBUTE_READONLY - } - h, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0) - return h, e -} - -func Read(fd Handle, p []byte) (n int, err error) { - var done uint32 - e := ReadFile(fd, p, &done, nil) - if e != nil { - if e == ERROR_BROKEN_PIPE { - // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin - return 0, nil - } - return 0, e - } - if raceenabled { - if done > 0 { - raceWriteRange(unsafe.Pointer(&p[0]), int(done)) - } - raceAcquire(unsafe.Pointer(&ioSync)) - } - return int(done), nil -} - -func Write(fd Handle, p []byte) (n int, err error) { - if raceenabled { - raceReleaseMerge(unsafe.Pointer(&ioSync)) - } - var done uint32 - e := WriteFile(fd, p, &done, nil) - if e != nil { - return 0, e - } - if raceenabled && done > 0 { - raceReadRange(unsafe.Pointer(&p[0]), int(done)) - } - return int(done), nil -} - -var ioSync int64 - -func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) { - var w uint32 - switch whence { - case 0: - w = FILE_BEGIN - case 1: - w = FILE_CURRENT - case 2: - w = FILE_END - } - hi := int32(offset >> 32) - lo := int32(offset) - // use GetFileType to check pipe, pipe can't do seek - ft, _ := GetFileType(fd) - if ft == FILE_TYPE_PIPE { - return 0, syscall.EPIPE - } - rlo, e := SetFilePointer(fd, lo, &hi, w) - if e != nil { - return 0, e - } - return int64(hi)<<32 + int64(rlo), nil -} - -func Close(fd Handle) (err error) { - return CloseHandle(fd) -} - -var ( - Stdin = getStdHandle(STD_INPUT_HANDLE) - Stdout = getStdHandle(STD_OUTPUT_HANDLE) - Stderr = getStdHandle(STD_ERROR_HANDLE) -) - -func getStdHandle(stdhandle uint32) (fd Handle) { - r, _ := GetStdHandle(stdhandle) - CloseOnExec(r) - return r -} - -const ImplementsGetwd = true - -func Getwd() (wd string, err error) { - b := make([]uint16, 300) - n, e := GetCurrentDirectory(uint32(len(b)), &b[0]) - if e != nil { - return "", e - } - return string(utf16.Decode(b[0:n])), nil -} - -func Chdir(path string) (err error) { - pathp, err := UTF16PtrFromString(path) - if err != nil { - return err - } - return SetCurrentDirectory(pathp) -} - -func Mkdir(path string, mode uint32) (err error) { - pathp, err := UTF16PtrFromString(path) - if err != nil { - return err - } - return CreateDirectory(pathp, nil) -} - -func Rmdir(path string) (err error) { - pathp, err := UTF16PtrFromString(path) - if err != nil { - return err - } - return RemoveDirectory(pathp) -} - -func Unlink(path string) (err error) { - pathp, err := UTF16PtrFromString(path) - if err != nil { - return err - } - return DeleteFile(pathp) -} - -func Rename(oldpath, newpath string) (err error) { - from, err := UTF16PtrFromString(oldpath) - if err != nil { - return err - } - to, err := UTF16PtrFromString(newpath) - if err != nil { - return err - } - return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) -} - -func ComputerName() (name string, err error) { - var n uint32 = MAX_COMPUTERNAME_LENGTH + 1 - b := make([]uint16, n) - e := GetComputerName(&b[0], &n) - if e != nil { - return "", e - } - return string(utf16.Decode(b[0:n])), nil -} - -func DurationSinceBoot() time.Duration { - return time.Duration(getTickCount64()) * time.Millisecond -} - -func Ftruncate(fd Handle, length int64) (err error) { - curoffset, e := Seek(fd, 0, 1) - if e != nil { - return e - } - defer Seek(fd, curoffset, 0) - _, e = Seek(fd, length, 0) - if e != nil { - return e - } - e = SetEndOfFile(fd) - if e != nil { - return e - } - return nil -} - -func Gettimeofday(tv *Timeval) (err error) { - var ft Filetime - GetSystemTimeAsFileTime(&ft) - *tv = NsecToTimeval(ft.Nanoseconds()) - return nil -} - -func Pipe(p []Handle) (err error) { - if len(p) != 2 { - return syscall.EINVAL - } - var r, w Handle - e := CreatePipe(&r, &w, makeInheritSa(), 0) - if e != nil { - return e - } - p[0] = r - p[1] = w - return nil -} - -func Utimes(path string, tv []Timeval) (err error) { - if len(tv) != 2 { - return syscall.EINVAL - } - pathp, e := UTF16PtrFromString(path) - if e != nil { - return e - } - h, e := CreateFile(pathp, - FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) - if e != nil { - return e - } - defer Close(h) - a := NsecToFiletime(tv[0].Nanoseconds()) - w := NsecToFiletime(tv[1].Nanoseconds()) - return SetFileTime(h, nil, &a, &w) -} - -func UtimesNano(path string, ts []Timespec) (err error) { - if len(ts) != 2 { - return syscall.EINVAL - } - pathp, e := UTF16PtrFromString(path) - if e != nil { - return e - } - h, e := CreateFile(pathp, - FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) - if e != nil { - return e - } - defer Close(h) - a := NsecToFiletime(TimespecToNsec(ts[0])) - w := NsecToFiletime(TimespecToNsec(ts[1])) - return SetFileTime(h, nil, &a, &w) -} - -func Fsync(fd Handle) (err error) { - return FlushFileBuffers(fd) -} - -func Chmod(path string, mode uint32) (err error) { - p, e := UTF16PtrFromString(path) - if e != nil { - return e - } - attrs, e := GetFileAttributes(p) - if e != nil { - return e - } - if mode&S_IWRITE != 0 { - attrs &^= FILE_ATTRIBUTE_READONLY - } else { - attrs |= FILE_ATTRIBUTE_READONLY - } - return SetFileAttributes(p, attrs) -} - -func LoadGetSystemTimePreciseAsFileTime() error { - return procGetSystemTimePreciseAsFileTime.Find() -} - -func LoadCancelIoEx() error { - return procCancelIoEx.Find() -} - -func LoadSetFileCompletionNotificationModes() error { - return procSetFileCompletionNotificationModes.Find() -} - -func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { - // Every other win32 array API takes arguments as "pointer, count", except for this function. So we - // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore - // trivially stub this ourselves. - - var handlePtr *Handle - if len(handles) > 0 { - handlePtr = &handles[0] - } - return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds) -} - -// net api calls - -const socket_error = uintptr(^uint32(0)) - -//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup -//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup -//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl -//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket -//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt -//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt -//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind -//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect -//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname -//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername -//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen -//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown -//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket -//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx -//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs -//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv -//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend -//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom -//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo -//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname -//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname -//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs -//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname -//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W -//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree -//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W -//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW -//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW -//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry -//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo -//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes -//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW -//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses -//sys GetACP() (acp uint32) = kernel32.GetACP -//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar - -// For testing: clients can set this flag to force -// creation of IPv6 sockets to return EAFNOSUPPORT. -var SocketDisableIPv6 bool - -type RawSockaddrInet4 struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]uint8 -} - -type RawSockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type RawSockaddr struct { - Family uint16 - Data [14]int8 -} - -type RawSockaddrAny struct { - Addr RawSockaddr - Pad [100]int8 -} - -type Sockaddr interface { - sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs -} - -type SockaddrInet4 struct { - Port int - Addr [4]byte - raw RawSockaddrInet4 -} - -func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { - if sa.Port < 0 || sa.Port > 0xFFFF { - return nil, 0, syscall.EINVAL - } - sa.raw.Family = AF_INET - p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) - p[0] = byte(sa.Port >> 8) - p[1] = byte(sa.Port) - for i := 0; i < len(sa.Addr); i++ { - sa.raw.Addr[i] = sa.Addr[i] - } - return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil -} - -type SockaddrInet6 struct { - Port int - ZoneId uint32 - Addr [16]byte - raw RawSockaddrInet6 -} - -func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { - if sa.Port < 0 || sa.Port > 0xFFFF { - return nil, 0, syscall.EINVAL - } - sa.raw.Family = AF_INET6 - p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) - p[0] = byte(sa.Port >> 8) - p[1] = byte(sa.Port) - sa.raw.Scope_id = sa.ZoneId - for i := 0; i < len(sa.Addr); i++ { - sa.raw.Addr[i] = sa.Addr[i] - } - return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil -} - -type RawSockaddrUnix struct { - Family uint16 - Path [UNIX_PATH_MAX]int8 -} - -type SockaddrUnix struct { - Name string - raw RawSockaddrUnix -} - -func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { - name := sa.Name - n := len(name) - if n > len(sa.raw.Path) { - return nil, 0, syscall.EINVAL - } - if n == len(sa.raw.Path) && name[0] != '@' { - return nil, 0, syscall.EINVAL - } - sa.raw.Family = AF_UNIX - for i := 0; i < n; i++ { - sa.raw.Path[i] = int8(name[i]) - } - // length is family (uint16), name, NUL. - sl := int32(2) - if n > 0 { - sl += int32(n) + 1 - } - if sa.raw.Path[0] == '@' { - sa.raw.Path[0] = 0 - // Don't count trailing NUL for abstract address. - sl-- - } - - return unsafe.Pointer(&sa.raw), sl, nil -} - -func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { - switch rsa.Addr.Family { - case AF_UNIX: - pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) - sa := new(SockaddrUnix) - if pp.Path[0] == 0 { - // "Abstract" Unix domain socket. - // Rewrite leading NUL as @ for textual display. - // (This is the standard convention.) - // Not friendly to overwrite in place, - // but the callers below don't care. - pp.Path[0] = '@' - } - - // Assume path ends at NUL. - // This is not technically the Linux semantics for - // abstract Unix domain sockets--they are supposed - // to be uninterpreted fixed-size binary blobs--but - // everyone uses this convention. - n := 0 - for n < len(pp.Path) && pp.Path[n] != 0 { - n++ - } - bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] - sa.Name = string(bytes) - return sa, nil - - case AF_INET: - pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) - sa := new(SockaddrInet4) - p := (*[2]byte)(unsafe.Pointer(&pp.Port)) - sa.Port = int(p[0])<<8 + int(p[1]) - for i := 0; i < len(sa.Addr); i++ { - sa.Addr[i] = pp.Addr[i] - } - return sa, nil - - case AF_INET6: - pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) - sa := new(SockaddrInet6) - p := (*[2]byte)(unsafe.Pointer(&pp.Port)) - sa.Port = int(p[0])<<8 + int(p[1]) - sa.ZoneId = pp.Scope_id - for i := 0; i < len(sa.Addr); i++ { - sa.Addr[i] = pp.Addr[i] - } - return sa, nil - } - return nil, syscall.EAFNOSUPPORT -} - -func Socket(domain, typ, proto int) (fd Handle, err error) { - if domain == AF_INET6 && SocketDisableIPv6 { - return InvalidHandle, syscall.EAFNOSUPPORT - } - return socket(int32(domain), int32(typ), int32(proto)) -} - -func SetsockoptInt(fd Handle, level, opt int, value int) (err error) { - v := int32(value) - return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v))) -} - -func Bind(fd Handle, sa Sockaddr) (err error) { - ptr, n, err := sa.sockaddr() - if err != nil { - return err - } - return bind(fd, ptr, n) -} - -func Connect(fd Handle, sa Sockaddr) (err error) { - ptr, n, err := sa.sockaddr() - if err != nil { - return err - } - return connect(fd, ptr, n) -} - -func Getsockname(fd Handle) (sa Sockaddr, err error) { - var rsa RawSockaddrAny - l := int32(unsafe.Sizeof(rsa)) - if err = getsockname(fd, &rsa, &l); err != nil { - return - } - return rsa.Sockaddr() -} - -func Getpeername(fd Handle) (sa Sockaddr, err error) { - var rsa RawSockaddrAny - l := int32(unsafe.Sizeof(rsa)) - if err = getpeername(fd, &rsa, &l); err != nil { - return - } - return rsa.Sockaddr() -} - -func Listen(s Handle, n int) (err error) { - return listen(s, int32(n)) -} - -func Shutdown(fd Handle, how int) (err error) { - return shutdown(fd, int32(how)) -} - -func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { - rsa, l, err := to.sockaddr() - if err != nil { - return err - } - return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) -} - -func LoadGetAddrInfo() error { - return procGetAddrInfoW.Find() -} - -var connectExFunc struct { - once sync.Once - addr uintptr - err error -} - -func LoadConnectEx() error { - connectExFunc.once.Do(func() { - var s Handle - s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) - if connectExFunc.err != nil { - return - } - defer CloseHandle(s) - var n uint32 - connectExFunc.err = WSAIoctl(s, - SIO_GET_EXTENSION_FUNCTION_POINTER, - (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), - uint32(unsafe.Sizeof(WSAID_CONNECTEX)), - (*byte)(unsafe.Pointer(&connectExFunc.addr)), - uint32(unsafe.Sizeof(connectExFunc.addr)), - &n, nil, 0) - }) - return connectExFunc.err -} - -func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error { - err := LoadConnectEx() - if err != nil { - return errorspkg.New("failed to find ConnectEx: " + err.Error()) - } - ptr, n, err := sa.sockaddr() - if err != nil { - return err - } - return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) -} - -var sendRecvMsgFunc struct { - once sync.Once - sendAddr uintptr - recvAddr uintptr - err error -} - -func loadWSASendRecvMsg() error { - sendRecvMsgFunc.once.Do(func() { - var s Handle - s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) - if sendRecvMsgFunc.err != nil { - return - } - defer CloseHandle(s) - var n uint32 - sendRecvMsgFunc.err = WSAIoctl(s, - SIO_GET_EXTENSION_FUNCTION_POINTER, - (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), - uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), - (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), - uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), - &n, nil, 0) - if sendRecvMsgFunc.err != nil { - return - } - sendRecvMsgFunc.err = WSAIoctl(s, - SIO_GET_EXTENSION_FUNCTION_POINTER, - (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), - uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), - (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), - uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), - &n, nil, 0) - }) - return sendRecvMsgFunc.err -} - -func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { - err := loadWSASendRecvMsg() - if err != nil { - return err - } - r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return err -} - -func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { - err := loadWSASendRecvMsg() - if err != nil { - return err - } - r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return err -} - -// Invented structures to support what package os expects. -type Rusage struct { - CreationTime Filetime - ExitTime Filetime - KernelTime Filetime - UserTime Filetime -} - -type WaitStatus struct { - ExitCode uint32 -} - -func (w WaitStatus) Exited() bool { return true } - -func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) } - -func (w WaitStatus) Signal() Signal { return -1 } - -func (w WaitStatus) CoreDump() bool { return false } - -func (w WaitStatus) Stopped() bool { return false } - -func (w WaitStatus) Continued() bool { return false } - -func (w WaitStatus) StopSignal() Signal { return -1 } - -func (w WaitStatus) Signaled() bool { return false } - -func (w WaitStatus) TrapCause() int { return -1 } - -// Timespec is an invented structure on Windows, but here for -// consistency with the corresponding package for other operating systems. -type Timespec struct { - Sec int64 - Nsec int64 -} - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return -} - -// TODO(brainman): fix all needed for net - -func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS } -func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) { - return 0, nil, syscall.EWINDOWS -} -func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) { return syscall.EWINDOWS } -func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS } - -// The Linger struct is wrong but we only noticed after Go 1. -// sysLinger is the real system call structure. - -// BUG(brainman): The definition of Linger is not appropriate for direct use -// with Setsockopt and Getsockopt. -// Use SetsockoptLinger instead. - -type Linger struct { - Onoff int32 - Linger int32 -} - -type sysLinger struct { - Onoff uint16 - Linger uint16 -} - -type IPMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type IPv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS } - -func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { - sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} - return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys))) -} - -func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { - return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) -} -func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { - return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) -} -func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { - return syscall.EWINDOWS -} - -func Getpid() (pid int) { return int(GetCurrentProcessId()) } - -func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { - // NOTE(rsc): The Win32finddata struct is wrong for the system call: - // the two paths are each one uint16 short. Use the correct struct, - // a win32finddata1, and then copy the results out. - // There is no loss of expressivity here, because the final - // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that. - // For Go 1.1, we might avoid the allocation of win32finddata1 here - // by adding a final Bug [2]uint16 field to the struct and then - // adjusting the fields in the result directly. - var data1 win32finddata1 - handle, err = findFirstFile1(name, &data1) - if err == nil { - copyFindData(data, &data1) - } - return -} - -func FindNextFile(handle Handle, data *Win32finddata) (err error) { - var data1 win32finddata1 - err = findNextFile1(handle, &data1) - if err == nil { - copyFindData(data, &data1) - } - return -} - -func getProcessEntry(pid int) (*ProcessEntry32, error) { - snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer CloseHandle(snapshot) - var procEntry ProcessEntry32 - procEntry.Size = uint32(unsafe.Sizeof(procEntry)) - if err = Process32First(snapshot, &procEntry); err != nil { - return nil, err - } - for { - if procEntry.ProcessID == uint32(pid) { - return &procEntry, nil - } - err = Process32Next(snapshot, &procEntry) - if err != nil { - return nil, err - } - } -} - -func Getppid() (ppid int) { - pe, err := getProcessEntry(Getpid()) - if err != nil { - return -1 - } - return int(pe.ParentProcessID) -} - -// TODO(brainman): fix all needed for os -func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS } -func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS } -func Symlink(path, link string) (err error) { return syscall.EWINDOWS } - -func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS } -func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } -func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } -func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS } - -func Getuid() (uid int) { return -1 } -func Geteuid() (euid int) { return -1 } -func Getgid() (gid int) { return -1 } -func Getegid() (egid int) { return -1 } -func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS } - -type Signal int - -func (s Signal) Signal() {} - -func (s Signal) String() string { - if 0 <= s && int(s) < len(signals) { - str := signals[s] - if str != "" { - return str - } - } - return "signal " + itoa(int(s)) -} - -func LoadCreateSymbolicLink() error { - return procCreateSymbolicLinkW.Find() -} - -// Readlink returns the destination of the named symbolic link. -func Readlink(path string, buf []byte) (n int, err error) { - fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING, - FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0) - if err != nil { - return -1, err - } - defer CloseHandle(fd) - - rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE) - var bytesReturned uint32 - err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil) - if err != nil { - return -1, err - } - - rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0])) - var s string - switch rdb.ReparseTag { - case IO_REPARSE_TAG_SYMLINK: - data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) - p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) - s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) - case IO_REPARSE_TAG_MOUNT_POINT: - data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) - p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) - s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) - default: - // the path is not a symlink or junction but another type of reparse - // point - return -1, syscall.ENOENT - } - n = copy(buf, []byte(s)) - - return n, nil -} - -// GUIDFromString parses a string in the form of -// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID. -func GUIDFromString(str string) (GUID, error) { - guid := GUID{} - str16, err := syscall.UTF16PtrFromString(str) - if err != nil { - return guid, err - } - err = clsidFromString(str16, &guid) - if err != nil { - return guid, err - } - return guid, nil -} - -// GenerateGUID creates a new random GUID. -func GenerateGUID() (GUID, error) { - guid := GUID{} - err := coCreateGuid(&guid) - if err != nil { - return guid, err - } - return guid, nil -} - -// String returns the canonical string form of the GUID, -// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}". -func (guid GUID) String() string { - var str [100]uint16 - chars := stringFromGUID2(&guid, &str[0], int32(len(str))) - if chars <= 1 { - return "" - } - return string(utf16.Decode(str[:chars-1])) -} - -// KnownFolderPath returns a well-known folder path for the current user, specified by one of -// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. -func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { - return Token(0).KnownFolderPath(folderID, flags) -} - -// KnownFolderPath returns a well-known folder path for the user token, specified by one of -// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. -func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { - var p *uint16 - err := shGetKnownFolderPath(folderID, flags, t, &p) - if err != nil { - return "", err - } - defer CoTaskMemFree(unsafe.Pointer(p)) - return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(p))[:]), nil -} - -// RtlGetVersion returns the version of the underlying operating system, ignoring -// manifest semantics but is affected by the application compatibility layer. -func RtlGetVersion() *OsVersionInfoEx { - info := &OsVersionInfoEx{} - info.osVersionInfoSize = uint32(unsafe.Sizeof(*info)) - // According to documentation, this function always succeeds. - // The function doesn't even check the validity of the - // osVersionInfoSize member. Disassembling ntdll.dll indicates - // that the documentation is indeed correct about that. - _ = rtlGetVersion(info) - return info -} - -// RtlGetNtVersionNumbers returns the version of the underlying operating system, -// ignoring manifest semantics and the application compatibility layer. -func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) { - rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber) - buildNumber &= 0xffff - return -} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go deleted file mode 100644 index 7f178bb9..00000000 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ /dev/null @@ -1,1744 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -import ( - "net" - "syscall" - "unsafe" -) - -const ( - // Invented values to support what package os expects. - O_RDONLY = 0x00000 - O_WRONLY = 0x00001 - O_RDWR = 0x00002 - O_CREAT = 0x00040 - O_EXCL = 0x00080 - O_NOCTTY = 0x00100 - O_TRUNC = 0x00200 - O_NONBLOCK = 0x00800 - O_APPEND = 0x00400 - O_SYNC = 0x01000 - O_ASYNC = 0x02000 - O_CLOEXEC = 0x80000 -) - -const ( - // More invented values for signals - SIGHUP = Signal(0x1) - SIGINT = Signal(0x2) - SIGQUIT = Signal(0x3) - SIGILL = Signal(0x4) - SIGTRAP = Signal(0x5) - SIGABRT = Signal(0x6) - SIGBUS = Signal(0x7) - SIGFPE = Signal(0x8) - SIGKILL = Signal(0x9) - SIGSEGV = Signal(0xb) - SIGPIPE = Signal(0xd) - SIGALRM = Signal(0xe) - SIGTERM = Signal(0xf) -) - -var signals = [...]string{ - 1: "hangup", - 2: "interrupt", - 3: "quit", - 4: "illegal instruction", - 5: "trace/breakpoint trap", - 6: "aborted", - 7: "bus error", - 8: "floating point exception", - 9: "killed", - 10: "user defined signal 1", - 11: "segmentation fault", - 12: "user defined signal 2", - 13: "broken pipe", - 14: "alarm clock", - 15: "terminated", -} - -const ( - FILE_LIST_DIRECTORY = 0x00000001 - FILE_APPEND_DATA = 0x00000004 - FILE_WRITE_ATTRIBUTES = 0x00000100 - - FILE_SHARE_READ = 0x00000001 - FILE_SHARE_WRITE = 0x00000002 - FILE_SHARE_DELETE = 0x00000004 - - FILE_ATTRIBUTE_READONLY = 0x00000001 - FILE_ATTRIBUTE_HIDDEN = 0x00000002 - FILE_ATTRIBUTE_SYSTEM = 0x00000004 - FILE_ATTRIBUTE_DIRECTORY = 0x00000010 - FILE_ATTRIBUTE_ARCHIVE = 0x00000020 - FILE_ATTRIBUTE_DEVICE = 0x00000040 - FILE_ATTRIBUTE_NORMAL = 0x00000080 - FILE_ATTRIBUTE_TEMPORARY = 0x00000100 - FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 - FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 - FILE_ATTRIBUTE_COMPRESSED = 0x00000800 - FILE_ATTRIBUTE_OFFLINE = 0x00001000 - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 - FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 - FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 - FILE_ATTRIBUTE_VIRTUAL = 0x00010000 - FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 - FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 - FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 - - INVALID_FILE_ATTRIBUTES = 0xffffffff - - CREATE_NEW = 1 - CREATE_ALWAYS = 2 - OPEN_EXISTING = 3 - OPEN_ALWAYS = 4 - TRUNCATE_EXISTING = 5 - - FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 - FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 - FILE_FLAG_OPEN_NO_RECALL = 0x00100000 - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 - FILE_FLAG_SESSION_AWARE = 0x00800000 - FILE_FLAG_POSIX_SEMANTICS = 0x01000000 - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 - FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 - FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 - FILE_FLAG_RANDOM_ACCESS = 0x10000000 - FILE_FLAG_NO_BUFFERING = 0x20000000 - FILE_FLAG_OVERLAPPED = 0x40000000 - FILE_FLAG_WRITE_THROUGH = 0x80000000 - - HANDLE_FLAG_INHERIT = 0x00000001 - STARTF_USESTDHANDLES = 0x00000100 - STARTF_USESHOWWINDOW = 0x00000001 - DUPLICATE_CLOSE_SOURCE = 0x00000001 - DUPLICATE_SAME_ACCESS = 0x00000002 - - STD_INPUT_HANDLE = -10 & (1<<32 - 1) - STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) - STD_ERROR_HANDLE = -12 & (1<<32 - 1) - - FILE_BEGIN = 0 - FILE_CURRENT = 1 - FILE_END = 2 - - LANG_ENGLISH = 0x09 - SUBLANG_ENGLISH_US = 0x01 - - FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 - FORMAT_MESSAGE_IGNORE_INSERTS = 512 - FORMAT_MESSAGE_FROM_STRING = 1024 - FORMAT_MESSAGE_FROM_HMODULE = 2048 - FORMAT_MESSAGE_FROM_SYSTEM = 4096 - FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 - FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 - - MAX_PATH = 260 - MAX_LONG_PATH = 32768 - - MAX_COMPUTERNAME_LENGTH = 15 - - TIME_ZONE_ID_UNKNOWN = 0 - TIME_ZONE_ID_STANDARD = 1 - - TIME_ZONE_ID_DAYLIGHT = 2 - IGNORE = 0 - INFINITE = 0xffffffff - - WAIT_ABANDONED = 0x00000080 - WAIT_OBJECT_0 = 0x00000000 - WAIT_FAILED = 0xFFFFFFFF - - // Access rights for process. - PROCESS_CREATE_PROCESS = 0x0080 - PROCESS_CREATE_THREAD = 0x0002 - PROCESS_DUP_HANDLE = 0x0040 - PROCESS_QUERY_INFORMATION = 0x0400 - PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 - PROCESS_SET_INFORMATION = 0x0200 - PROCESS_SET_QUOTA = 0x0100 - PROCESS_SUSPEND_RESUME = 0x0800 - PROCESS_TERMINATE = 0x0001 - PROCESS_VM_OPERATION = 0x0008 - PROCESS_VM_READ = 0x0010 - PROCESS_VM_WRITE = 0x0020 - - // Access rights for thread. - THREAD_DIRECT_IMPERSONATION = 0x0200 - THREAD_GET_CONTEXT = 0x0008 - THREAD_IMPERSONATE = 0x0100 - THREAD_QUERY_INFORMATION = 0x0040 - THREAD_QUERY_LIMITED_INFORMATION = 0x0800 - THREAD_SET_CONTEXT = 0x0010 - THREAD_SET_INFORMATION = 0x0020 - THREAD_SET_LIMITED_INFORMATION = 0x0400 - THREAD_SET_THREAD_TOKEN = 0x0080 - THREAD_SUSPEND_RESUME = 0x0002 - THREAD_TERMINATE = 0x0001 - - FILE_MAP_COPY = 0x01 - FILE_MAP_WRITE = 0x02 - FILE_MAP_READ = 0x04 - FILE_MAP_EXECUTE = 0x20 - - CTRL_C_EVENT = 0 - CTRL_BREAK_EVENT = 1 - CTRL_CLOSE_EVENT = 2 - CTRL_LOGOFF_EVENT = 5 - CTRL_SHUTDOWN_EVENT = 6 - - // Windows reserves errors >= 1<<29 for application use. - APPLICATION_ERROR = 1 << 29 -) - -const ( - // Process creation flags. - CREATE_BREAKAWAY_FROM_JOB = 0x01000000 - CREATE_DEFAULT_ERROR_MODE = 0x04000000 - CREATE_NEW_CONSOLE = 0x00000010 - CREATE_NEW_PROCESS_GROUP = 0x00000200 - CREATE_NO_WINDOW = 0x08000000 - CREATE_PROTECTED_PROCESS = 0x00040000 - CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 - CREATE_SEPARATE_WOW_VDM = 0x00000800 - CREATE_SHARED_WOW_VDM = 0x00001000 - CREATE_SUSPENDED = 0x00000004 - CREATE_UNICODE_ENVIRONMENT = 0x00000400 - DEBUG_ONLY_THIS_PROCESS = 0x00000002 - DEBUG_PROCESS = 0x00000001 - DETACHED_PROCESS = 0x00000008 - EXTENDED_STARTUPINFO_PRESENT = 0x00080000 - INHERIT_PARENT_AFFINITY = 0x00010000 -) - -const ( - // flags for CreateToolhelp32Snapshot - TH32CS_SNAPHEAPLIST = 0x01 - TH32CS_SNAPPROCESS = 0x02 - TH32CS_SNAPTHREAD = 0x04 - TH32CS_SNAPMODULE = 0x08 - TH32CS_SNAPMODULE32 = 0x10 - TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD - TH32CS_INHERIT = 0x80000000 -) - -const ( - // filters for ReadDirectoryChangesW - FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 - FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 - FILE_NOTIFY_CHANGE_SIZE = 0x008 - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 - FILE_NOTIFY_CHANGE_CREATION = 0x040 - FILE_NOTIFY_CHANGE_SECURITY = 0x100 -) - -const ( - // do not reorder - FILE_ACTION_ADDED = iota + 1 - FILE_ACTION_REMOVED - FILE_ACTION_MODIFIED - FILE_ACTION_RENAMED_OLD_NAME - FILE_ACTION_RENAMED_NEW_NAME -) - -const ( - // wincrypt.h - PROV_RSA_FULL = 1 - PROV_RSA_SIG = 2 - PROV_DSS = 3 - PROV_FORTEZZA = 4 - PROV_MS_EXCHANGE = 5 - PROV_SSL = 6 - PROV_RSA_SCHANNEL = 12 - PROV_DSS_DH = 13 - PROV_EC_ECDSA_SIG = 14 - PROV_EC_ECNRA_SIG = 15 - PROV_EC_ECDSA_FULL = 16 - PROV_EC_ECNRA_FULL = 17 - PROV_DH_SCHANNEL = 18 - PROV_SPYRUS_LYNKS = 20 - PROV_RNG = 21 - PROV_INTEL_SEC = 22 - PROV_REPLACE_OWF = 23 - PROV_RSA_AES = 24 - CRYPT_VERIFYCONTEXT = 0xF0000000 - CRYPT_NEWKEYSET = 0x00000008 - CRYPT_DELETEKEYSET = 0x00000010 - CRYPT_MACHINE_KEYSET = 0x00000020 - CRYPT_SILENT = 0x00000040 - CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 - - USAGE_MATCH_TYPE_AND = 0 - USAGE_MATCH_TYPE_OR = 1 - - /* msgAndCertEncodingType values for CertOpenStore function */ - X509_ASN_ENCODING = 0x00000001 - PKCS_7_ASN_ENCODING = 0x00010000 - - /* storeProvider values for CertOpenStore function */ - CERT_STORE_PROV_MSG = 1 - CERT_STORE_PROV_MEMORY = 2 - CERT_STORE_PROV_FILE = 3 - CERT_STORE_PROV_REG = 4 - CERT_STORE_PROV_PKCS7 = 5 - CERT_STORE_PROV_SERIALIZED = 6 - CERT_STORE_PROV_FILENAME_A = 7 - CERT_STORE_PROV_FILENAME_W = 8 - CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W - CERT_STORE_PROV_SYSTEM_A = 9 - CERT_STORE_PROV_SYSTEM_W = 10 - CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W - CERT_STORE_PROV_COLLECTION = 11 - CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 - CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 - CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W - CERT_STORE_PROV_PHYSICAL_W = 14 - CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W - CERT_STORE_PROV_SMART_CARD_W = 15 - CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W - CERT_STORE_PROV_LDAP_W = 16 - CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W - CERT_STORE_PROV_PKCS12 = 17 - - /* store characteristics (low WORD of flag) for CertOpenStore function */ - CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 - CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 - CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 - CERT_STORE_DELETE_FLAG = 0x00000010 - CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 - CERT_STORE_SHARE_STORE_FLAG = 0x00000040 - CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 - CERT_STORE_MANIFOLD_FLAG = 0x00000100 - CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 - CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 - CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 - CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 - CERT_STORE_CREATE_NEW_FLAG = 0x00002000 - CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 - CERT_STORE_READONLY_FLAG = 0x00008000 - - /* store locations (high WORD of flag) for CertOpenStore function */ - CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 - CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 - CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 - CERT_SYSTEM_STORE_SERVICES = 0x00050000 - CERT_SYSTEM_STORE_USERS = 0x00060000 - CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 - CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 - CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 - CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 - CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 - - /* Miscellaneous high-WORD flags for CertOpenStore function */ - CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 - CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 - CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 - CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 - CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 - CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 - CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 - CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 - CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 - CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 - CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 - - /* addDisposition values for CertAddCertificateContextToStore function */ - CERT_STORE_ADD_NEW = 1 - CERT_STORE_ADD_USE_EXISTING = 2 - CERT_STORE_ADD_REPLACE_EXISTING = 3 - CERT_STORE_ADD_ALWAYS = 4 - CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 - CERT_STORE_ADD_NEWER = 6 - CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 - - /* ErrorStatus values for CertTrustStatus struct */ - CERT_TRUST_NO_ERROR = 0x00000000 - CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 - CERT_TRUST_IS_REVOKED = 0x00000004 - CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 - CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 - CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 - CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 - CERT_TRUST_IS_CYCLIC = 0x00000080 - CERT_TRUST_INVALID_EXTENSION = 0x00000100 - CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 - CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 - CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 - CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 - CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 - CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 - CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 - CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 - CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 - CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 - CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 - CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 - CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 - CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 - CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 - CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 - - /* InfoStatus values for CertTrustStatus struct */ - CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 - CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 - CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 - CERT_TRUST_IS_SELF_SIGNED = 0x00000008 - CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 - CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 - CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 - CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 - CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 - CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 - CERT_TRUST_IS_CA_TRUSTED = 0x00004000 - CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 - - /* policyOID values for CertVerifyCertificateChainPolicy function */ - CERT_CHAIN_POLICY_BASE = 1 - CERT_CHAIN_POLICY_AUTHENTICODE = 2 - CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 - CERT_CHAIN_POLICY_SSL = 4 - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 - CERT_CHAIN_POLICY_NT_AUTH = 6 - CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 - CERT_CHAIN_POLICY_EV = 8 - CERT_CHAIN_POLICY_SSL_F12 = 9 - - /* AuthType values for SSLExtraCertChainPolicyPara struct */ - AUTHTYPE_CLIENT = 1 - AUTHTYPE_SERVER = 2 - - /* Checks values for SSLExtraCertChainPolicyPara struct */ - SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 - SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 -) - -const ( - // flags for SetErrorMode - SEM_FAILCRITICALERRORS = 0x0001 - SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 - SEM_NOGPFAULTERRORBOX = 0x0002 - SEM_NOOPENFILEERRORBOX = 0x8000 -) - -const ( - // Priority class. - ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 - BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 - HIGH_PRIORITY_CLASS = 0x00000080 - IDLE_PRIORITY_CLASS = 0x00000040 - NORMAL_PRIORITY_CLASS = 0x00000020 - PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000 - PROCESS_MODE_BACKGROUND_END = 0x00200000 - REALTIME_PRIORITY_CLASS = 0x00000100 -) - -var ( - OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") - OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") - OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") -) - -// Pointer represents a pointer to an arbitrary Windows type. -// -// Pointer-typed fields may point to one of many different types. It's -// up to the caller to provide a pointer to the appropriate type, cast -// to Pointer. The caller must obey the unsafe.Pointer rules while -// doing so. -type Pointer *struct{} - -// Invented values to support what package os expects. -type Timeval struct { - Sec int32 - Usec int32 -} - -func (tv *Timeval) Nanoseconds() int64 { - return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 -} - -func NsecToTimeval(nsec int64) (tv Timeval) { - tv.Sec = int32(nsec / 1e9) - tv.Usec = int32(nsec % 1e9 / 1e3) - return -} - -type Overlapped struct { - Internal uintptr - InternalHigh uintptr - Offset uint32 - OffsetHigh uint32 - HEvent Handle -} - -type FileNotifyInformation struct { - NextEntryOffset uint32 - Action uint32 - FileNameLength uint32 - FileName uint16 -} - -type Filetime struct { - LowDateTime uint32 - HighDateTime uint32 -} - -// Nanoseconds returns Filetime ft in nanoseconds -// since Epoch (00:00:00 UTC, January 1, 1970). -func (ft *Filetime) Nanoseconds() int64 { - // 100-nanosecond intervals since January 1, 1601 - nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) - // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) - nsec -= 116444736000000000 - // convert into nanoseconds - nsec *= 100 - return nsec -} - -func NsecToFiletime(nsec int64) (ft Filetime) { - // convert into 100-nanosecond - nsec /= 100 - // change starting time to January 1, 1601 - nsec += 116444736000000000 - // split into high / low - ft.LowDateTime = uint32(nsec & 0xffffffff) - ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) - return ft -} - -type Win32finddata struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 - Reserved0 uint32 - Reserved1 uint32 - FileName [MAX_PATH - 1]uint16 - AlternateFileName [13]uint16 -} - -// This is the actual system call structure. -// Win32finddata is what we committed to in Go 1. -type win32finddata1 struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 - Reserved0 uint32 - Reserved1 uint32 - FileName [MAX_PATH]uint16 - AlternateFileName [14]uint16 -} - -func copyFindData(dst *Win32finddata, src *win32finddata1) { - dst.FileAttributes = src.FileAttributes - dst.CreationTime = src.CreationTime - dst.LastAccessTime = src.LastAccessTime - dst.LastWriteTime = src.LastWriteTime - dst.FileSizeHigh = src.FileSizeHigh - dst.FileSizeLow = src.FileSizeLow - dst.Reserved0 = src.Reserved0 - dst.Reserved1 = src.Reserved1 - - // The src is 1 element bigger than dst, but it must be NUL. - copy(dst.FileName[:], src.FileName[:]) - copy(dst.AlternateFileName[:], src.AlternateFileName[:]) -} - -type ByHandleFileInformation struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - VolumeSerialNumber uint32 - FileSizeHigh uint32 - FileSizeLow uint32 - NumberOfLinks uint32 - FileIndexHigh uint32 - FileIndexLow uint32 -} - -const ( - GetFileExInfoStandard = 0 - GetFileExMaxInfoLevel = 1 -) - -type Win32FileAttributeData struct { - FileAttributes uint32 - CreationTime Filetime - LastAccessTime Filetime - LastWriteTime Filetime - FileSizeHigh uint32 - FileSizeLow uint32 -} - -// ShowWindow constants -const ( - // winuser.h - SW_HIDE = 0 - SW_NORMAL = 1 - SW_SHOWNORMAL = 1 - SW_SHOWMINIMIZED = 2 - SW_SHOWMAXIMIZED = 3 - SW_MAXIMIZE = 3 - SW_SHOWNOACTIVATE = 4 - SW_SHOW = 5 - SW_MINIMIZE = 6 - SW_SHOWMINNOACTIVE = 7 - SW_SHOWNA = 8 - SW_RESTORE = 9 - SW_SHOWDEFAULT = 10 - SW_FORCEMINIMIZE = 11 -) - -type StartupInfo struct { - Cb uint32 - _ *uint16 - Desktop *uint16 - Title *uint16 - X uint32 - Y uint32 - XSize uint32 - YSize uint32 - XCountChars uint32 - YCountChars uint32 - FillAttribute uint32 - Flags uint32 - ShowWindow uint16 - _ uint16 - _ *byte - StdInput Handle - StdOutput Handle - StdErr Handle -} - -type ProcessInformation struct { - Process Handle - Thread Handle - ProcessId uint32 - ThreadId uint32 -} - -type ProcessEntry32 struct { - Size uint32 - Usage uint32 - ProcessID uint32 - DefaultHeapID uintptr - ModuleID uint32 - Threads uint32 - ParentProcessID uint32 - PriClassBase int32 - Flags uint32 - ExeFile [MAX_PATH]uint16 -} - -type ThreadEntry32 struct { - Size uint32 - Usage uint32 - ThreadID uint32 - OwnerProcessID uint32 - BasePri int32 - DeltaPri int32 - Flags uint32 -} - -type Systemtime struct { - Year uint16 - Month uint16 - DayOfWeek uint16 - Day uint16 - Hour uint16 - Minute uint16 - Second uint16 - Milliseconds uint16 -} - -type Timezoneinformation struct { - Bias int32 - StandardName [32]uint16 - StandardDate Systemtime - StandardBias int32 - DaylightName [32]uint16 - DaylightDate Systemtime - DaylightBias int32 -} - -// Socket related. - -const ( - AF_UNSPEC = 0 - AF_UNIX = 1 - AF_INET = 2 - AF_INET6 = 23 - AF_NETBIOS = 17 - - SOCK_STREAM = 1 - SOCK_DGRAM = 2 - SOCK_RAW = 3 - SOCK_SEQPACKET = 5 - - IPPROTO_IP = 0 - IPPROTO_IPV6 = 0x29 - IPPROTO_TCP = 6 - IPPROTO_UDP = 17 - - SOL_SOCKET = 0xffff - SO_REUSEADDR = 4 - SO_KEEPALIVE = 8 - SO_DONTROUTE = 16 - SO_BROADCAST = 32 - SO_LINGER = 128 - SO_RCVBUF = 0x1002 - SO_SNDBUF = 0x1001 - SO_UPDATE_ACCEPT_CONTEXT = 0x700b - SO_UPDATE_CONNECT_CONTEXT = 0x7010 - - IOC_OUT = 0x40000000 - IOC_IN = 0x80000000 - IOC_VENDOR = 0x18000000 - IOC_INOUT = IOC_IN | IOC_OUT - IOC_WS2 = 0x08000000 - SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 - SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 - SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 - - // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 - - IP_TOS = 0x3 - IP_TTL = 0x4 - IP_MULTICAST_IF = 0x9 - IP_MULTICAST_TTL = 0xa - IP_MULTICAST_LOOP = 0xb - IP_ADD_MEMBERSHIP = 0xc - IP_DROP_MEMBERSHIP = 0xd - - IPV6_V6ONLY = 0x1b - IPV6_UNICAST_HOPS = 0x4 - IPV6_MULTICAST_IF = 0x9 - IPV6_MULTICAST_HOPS = 0xa - IPV6_MULTICAST_LOOP = 0xb - IPV6_JOIN_GROUP = 0xc - IPV6_LEAVE_GROUP = 0xd - - MSG_OOB = 0x1 - MSG_PEEK = 0x2 - MSG_DONTROUTE = 0x4 - MSG_WAITALL = 0x8 - - MSG_TRUNC = 0x0100 - MSG_CTRUNC = 0x0200 - MSG_BCAST = 0x0400 - MSG_MCAST = 0x0800 - - SOMAXCONN = 0x7fffffff - - TCP_NODELAY = 1 - - SHUT_RD = 0 - SHUT_WR = 1 - SHUT_RDWR = 2 - - WSADESCRIPTION_LEN = 256 - WSASYS_STATUS_LEN = 128 -) - -type WSABuf struct { - Len uint32 - Buf *byte -} - -type WSAMsg struct { - Name *syscall.RawSockaddrAny - Namelen int32 - Buffers *WSABuf - BufferCount uint32 - Control WSABuf - Flags uint32 -} - -// Invented values to support what package os expects. -const ( - S_IFMT = 0x1f000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWRITE = 0x80 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - -const ( - FILE_TYPE_CHAR = 0x0002 - FILE_TYPE_DISK = 0x0001 - FILE_TYPE_PIPE = 0x0003 - FILE_TYPE_REMOTE = 0x8000 - FILE_TYPE_UNKNOWN = 0x0000 -) - -type Hostent struct { - Name *byte - Aliases **byte - AddrType uint16 - Length uint16 - AddrList **byte -} - -type Protoent struct { - Name *byte - Aliases **byte - Proto uint16 -} - -const ( - DNS_TYPE_A = 0x0001 - DNS_TYPE_NS = 0x0002 - DNS_TYPE_MD = 0x0003 - DNS_TYPE_MF = 0x0004 - DNS_TYPE_CNAME = 0x0005 - DNS_TYPE_SOA = 0x0006 - DNS_TYPE_MB = 0x0007 - DNS_TYPE_MG = 0x0008 - DNS_TYPE_MR = 0x0009 - DNS_TYPE_NULL = 0x000a - DNS_TYPE_WKS = 0x000b - DNS_TYPE_PTR = 0x000c - DNS_TYPE_HINFO = 0x000d - DNS_TYPE_MINFO = 0x000e - DNS_TYPE_MX = 0x000f - DNS_TYPE_TEXT = 0x0010 - DNS_TYPE_RP = 0x0011 - DNS_TYPE_AFSDB = 0x0012 - DNS_TYPE_X25 = 0x0013 - DNS_TYPE_ISDN = 0x0014 - DNS_TYPE_RT = 0x0015 - DNS_TYPE_NSAP = 0x0016 - DNS_TYPE_NSAPPTR = 0x0017 - DNS_TYPE_SIG = 0x0018 - DNS_TYPE_KEY = 0x0019 - DNS_TYPE_PX = 0x001a - DNS_TYPE_GPOS = 0x001b - DNS_TYPE_AAAA = 0x001c - DNS_TYPE_LOC = 0x001d - DNS_TYPE_NXT = 0x001e - DNS_TYPE_EID = 0x001f - DNS_TYPE_NIMLOC = 0x0020 - DNS_TYPE_SRV = 0x0021 - DNS_TYPE_ATMA = 0x0022 - DNS_TYPE_NAPTR = 0x0023 - DNS_TYPE_KX = 0x0024 - DNS_TYPE_CERT = 0x0025 - DNS_TYPE_A6 = 0x0026 - DNS_TYPE_DNAME = 0x0027 - DNS_TYPE_SINK = 0x0028 - DNS_TYPE_OPT = 0x0029 - DNS_TYPE_DS = 0x002B - DNS_TYPE_RRSIG = 0x002E - DNS_TYPE_NSEC = 0x002F - DNS_TYPE_DNSKEY = 0x0030 - DNS_TYPE_DHCID = 0x0031 - DNS_TYPE_UINFO = 0x0064 - DNS_TYPE_UID = 0x0065 - DNS_TYPE_GID = 0x0066 - DNS_TYPE_UNSPEC = 0x0067 - DNS_TYPE_ADDRS = 0x00f8 - DNS_TYPE_TKEY = 0x00f9 - DNS_TYPE_TSIG = 0x00fa - DNS_TYPE_IXFR = 0x00fb - DNS_TYPE_AXFR = 0x00fc - DNS_TYPE_MAILB = 0x00fd - DNS_TYPE_MAILA = 0x00fe - DNS_TYPE_ALL = 0x00ff - DNS_TYPE_ANY = 0x00ff - DNS_TYPE_WINS = 0xff01 - DNS_TYPE_WINSR = 0xff02 - DNS_TYPE_NBSTAT = 0xff01 -) - -const ( - // flags inside DNSRecord.Dw - DnsSectionQuestion = 0x0000 - DnsSectionAnswer = 0x0001 - DnsSectionAuthority = 0x0002 - DnsSectionAdditional = 0x0003 -) - -type DNSSRVData struct { - Target *uint16 - Priority uint16 - Weight uint16 - Port uint16 - Pad uint16 -} - -type DNSPTRData struct { - Host *uint16 -} - -type DNSMXData struct { - NameExchange *uint16 - Preference uint16 - Pad uint16 -} - -type DNSTXTData struct { - StringCount uint16 - StringArray [1]*uint16 -} - -type DNSRecord struct { - Next *DNSRecord - Name *uint16 - Type uint16 - Length uint16 - Dw uint32 - Ttl uint32 - Reserved uint32 - Data [40]byte -} - -const ( - TF_DISCONNECT = 1 - TF_REUSE_SOCKET = 2 - TF_WRITE_BEHIND = 4 - TF_USE_DEFAULT_WORKER = 0 - TF_USE_SYSTEM_THREAD = 16 - TF_USE_KERNEL_APC = 32 -) - -type TransmitFileBuffers struct { - Head uintptr - HeadLength uint32 - Tail uintptr - TailLength uint32 -} - -const ( - IFF_UP = 1 - IFF_BROADCAST = 2 - IFF_LOOPBACK = 4 - IFF_POINTTOPOINT = 8 - IFF_MULTICAST = 16 -) - -const SIO_GET_INTERFACE_LIST = 0x4004747F - -// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. -// will be fixed to change variable type as suitable. - -type SockaddrGen [24]byte - -type InterfaceInfo struct { - Flags uint32 - Address SockaddrGen - BroadcastAddress SockaddrGen - Netmask SockaddrGen -} - -type IpAddressString struct { - String [16]byte -} - -type IpMaskString IpAddressString - -type IpAddrString struct { - Next *IpAddrString - IpAddress IpAddressString - IpMask IpMaskString - Context uint32 -} - -const MAX_ADAPTER_NAME_LENGTH = 256 -const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 -const MAX_ADAPTER_ADDRESS_LENGTH = 8 - -type IpAdapterInfo struct { - Next *IpAdapterInfo - ComboIndex uint32 - AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte - Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte - AddressLength uint32 - Address [MAX_ADAPTER_ADDRESS_LENGTH]byte - Index uint32 - Type uint32 - DhcpEnabled uint32 - CurrentIpAddress *IpAddrString - IpAddressList IpAddrString - GatewayList IpAddrString - DhcpServer IpAddrString - HaveWins bool - PrimaryWinsServer IpAddrString - SecondaryWinsServer IpAddrString - LeaseObtained int64 - LeaseExpires int64 -} - -const MAXLEN_PHYSADDR = 8 -const MAX_INTERFACE_NAME_LEN = 256 -const MAXLEN_IFDESCR = 256 - -type MibIfRow struct { - Name [MAX_INTERFACE_NAME_LEN]uint16 - Index uint32 - Type uint32 - Mtu uint32 - Speed uint32 - PhysAddrLen uint32 - PhysAddr [MAXLEN_PHYSADDR]byte - AdminStatus uint32 - OperStatus uint32 - LastChange uint32 - InOctets uint32 - InUcastPkts uint32 - InNUcastPkts uint32 - InDiscards uint32 - InErrors uint32 - InUnknownProtos uint32 - OutOctets uint32 - OutUcastPkts uint32 - OutNUcastPkts uint32 - OutDiscards uint32 - OutErrors uint32 - OutQLen uint32 - DescrLen uint32 - Descr [MAXLEN_IFDESCR]byte -} - -type CertInfo struct { - // Not implemented -} - -type CertContext struct { - EncodingType uint32 - EncodedCert *byte - Length uint32 - CertInfo *CertInfo - Store Handle -} - -type CertChainContext struct { - Size uint32 - TrustStatus CertTrustStatus - ChainCount uint32 - Chains **CertSimpleChain - LowerQualityChainCount uint32 - LowerQualityChains **CertChainContext - HasRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 -} - -type CertTrustListInfo struct { - // Not implemented -} - -type CertSimpleChain struct { - Size uint32 - TrustStatus CertTrustStatus - NumElements uint32 - Elements **CertChainElement - TrustListInfo *CertTrustListInfo - HasRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 -} - -type CertChainElement struct { - Size uint32 - CertContext *CertContext - TrustStatus CertTrustStatus - RevocationInfo *CertRevocationInfo - IssuanceUsage *CertEnhKeyUsage - ApplicationUsage *CertEnhKeyUsage - ExtendedErrorInfo *uint16 -} - -type CertRevocationCrlInfo struct { - // Not implemented -} - -type CertRevocationInfo struct { - Size uint32 - RevocationResult uint32 - RevocationOid *byte - OidSpecificInfo Pointer - HasFreshnessTime uint32 - FreshnessTime uint32 - CrlInfo *CertRevocationCrlInfo -} - -type CertTrustStatus struct { - ErrorStatus uint32 - InfoStatus uint32 -} - -type CertUsageMatch struct { - Type uint32 - Usage CertEnhKeyUsage -} - -type CertEnhKeyUsage struct { - Length uint32 - UsageIdentifiers **byte -} - -type CertChainPara struct { - Size uint32 - RequestedUsage CertUsageMatch - RequstedIssuancePolicy CertUsageMatch - URLRetrievalTimeout uint32 - CheckRevocationFreshnessTime uint32 - RevocationFreshnessTime uint32 - CacheResync *Filetime -} - -type CertChainPolicyPara struct { - Size uint32 - Flags uint32 - ExtraPolicyPara Pointer -} - -type SSLExtraCertChainPolicyPara struct { - Size uint32 - AuthType uint32 - Checks uint32 - ServerName *uint16 -} - -type CertChainPolicyStatus struct { - Size uint32 - Error uint32 - ChainIndex uint32 - ElementIndex uint32 - ExtraPolicyStatus Pointer -} - -const ( - // do not reorder - HKEY_CLASSES_ROOT = 0x80000000 + iota - HKEY_CURRENT_USER - HKEY_LOCAL_MACHINE - HKEY_USERS - HKEY_PERFORMANCE_DATA - HKEY_CURRENT_CONFIG - HKEY_DYN_DATA - - KEY_QUERY_VALUE = 1 - KEY_SET_VALUE = 2 - KEY_CREATE_SUB_KEY = 4 - KEY_ENUMERATE_SUB_KEYS = 8 - KEY_NOTIFY = 16 - KEY_CREATE_LINK = 32 - KEY_WRITE = 0x20006 - KEY_EXECUTE = 0x20019 - KEY_READ = 0x20019 - KEY_WOW64_64KEY = 0x0100 - KEY_WOW64_32KEY = 0x0200 - KEY_ALL_ACCESS = 0xf003f -) - -const ( - // do not reorder - REG_NONE = iota - REG_SZ - REG_EXPAND_SZ - REG_BINARY - REG_DWORD_LITTLE_ENDIAN - REG_DWORD_BIG_ENDIAN - REG_LINK - REG_MULTI_SZ - REG_RESOURCE_LIST - REG_FULL_RESOURCE_DESCRIPTOR - REG_RESOURCE_REQUIREMENTS_LIST - REG_QWORD_LITTLE_ENDIAN - REG_DWORD = REG_DWORD_LITTLE_ENDIAN - REG_QWORD = REG_QWORD_LITTLE_ENDIAN -) - -const ( - EVENT_MODIFY_STATE = 0x0002 - EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 - - MUTANT_QUERY_STATE = 0x0001 - MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE - - SEMAPHORE_MODIFY_STATE = 0x0002 - SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 - - TIMER_QUERY_STATE = 0x0001 - TIMER_MODIFY_STATE = 0x0002 - TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE - - MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE - MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS - - CREATE_EVENT_MANUAL_RESET = 0x1 - CREATE_EVENT_INITIAL_SET = 0x2 - CREATE_MUTEX_INITIAL_OWNER = 0x1 -) - -type AddrinfoW struct { - Flags int32 - Family int32 - Socktype int32 - Protocol int32 - Addrlen uintptr - Canonname *uint16 - Addr uintptr - Next *AddrinfoW -} - -const ( - AI_PASSIVE = 1 - AI_CANONNAME = 2 - AI_NUMERICHOST = 4 -) - -type GUID struct { - Data1 uint32 - Data2 uint16 - Data3 uint16 - Data4 [8]byte -} - -var WSAID_CONNECTEX = GUID{ - 0x25a207b9, - 0xddf3, - 0x4660, - [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, -} - -var WSAID_WSASENDMSG = GUID{ - 0xa441e712, - 0x754f, - 0x43ca, - [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, -} - -var WSAID_WSARECVMSG = GUID{ - 0xf689d7c8, - 0x6f1f, - 0x436b, - [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, -} - -const ( - FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 - FILE_SKIP_SET_EVENT_ON_HANDLE = 2 -) - -const ( - WSAPROTOCOL_LEN = 255 - MAX_PROTOCOL_CHAIN = 7 - BASE_PROTOCOL = 1 - LAYERED_PROTOCOL = 0 - - XP1_CONNECTIONLESS = 0x00000001 - XP1_GUARANTEED_DELIVERY = 0x00000002 - XP1_GUARANTEED_ORDER = 0x00000004 - XP1_MESSAGE_ORIENTED = 0x00000008 - XP1_PSEUDO_STREAM = 0x00000010 - XP1_GRACEFUL_CLOSE = 0x00000020 - XP1_EXPEDITED_DATA = 0x00000040 - XP1_CONNECT_DATA = 0x00000080 - XP1_DISCONNECT_DATA = 0x00000100 - XP1_SUPPORT_BROADCAST = 0x00000200 - XP1_SUPPORT_MULTIPOINT = 0x00000400 - XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 - XP1_MULTIPOINT_DATA_PLANE = 0x00001000 - XP1_QOS_SUPPORTED = 0x00002000 - XP1_UNI_SEND = 0x00008000 - XP1_UNI_RECV = 0x00010000 - XP1_IFS_HANDLES = 0x00020000 - XP1_PARTIAL_MESSAGE = 0x00040000 - XP1_SAN_SUPPORT_SDP = 0x00080000 - - PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 - PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 - PFL_HIDDEN = 0x00000004 - PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 - PFL_NETWORKDIRECT_PROVIDER = 0x00000010 -) - -type WSAProtocolInfo struct { - ServiceFlags1 uint32 - ServiceFlags2 uint32 - ServiceFlags3 uint32 - ServiceFlags4 uint32 - ProviderFlags uint32 - ProviderId GUID - CatalogEntryId uint32 - ProtocolChain WSAProtocolChain - Version int32 - AddressFamily int32 - MaxSockAddr int32 - MinSockAddr int32 - SocketType int32 - Protocol int32 - ProtocolMaxOffset int32 - NetworkByteOrder int32 - SecurityScheme int32 - MessageSize uint32 - ProviderReserved uint32 - ProtocolName [WSAPROTOCOL_LEN + 1]uint16 -} - -type WSAProtocolChain struct { - ChainLen int32 - ChainEntries [MAX_PROTOCOL_CHAIN]uint32 -} - -type TCPKeepalive struct { - OnOff uint32 - Time uint32 - Interval uint32 -} - -type symbolicLinkReparseBuffer struct { - SubstituteNameOffset uint16 - SubstituteNameLength uint16 - PrintNameOffset uint16 - PrintNameLength uint16 - Flags uint32 - PathBuffer [1]uint16 -} - -type mountPointReparseBuffer struct { - SubstituteNameOffset uint16 - SubstituteNameLength uint16 - PrintNameOffset uint16 - PrintNameLength uint16 - PathBuffer [1]uint16 -} - -type reparseDataBuffer struct { - ReparseTag uint32 - ReparseDataLength uint16 - Reserved uint16 - - // GenericReparseBuffer - reparseBuffer byte -} - -const ( - FSCTL_GET_REPARSE_POINT = 0x900A8 - MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 - IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 - IO_REPARSE_TAG_SYMLINK = 0xA000000C - SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 -) - -const ( - ComputerNameNetBIOS = 0 - ComputerNameDnsHostname = 1 - ComputerNameDnsDomain = 2 - ComputerNameDnsFullyQualified = 3 - ComputerNamePhysicalNetBIOS = 4 - ComputerNamePhysicalDnsHostname = 5 - ComputerNamePhysicalDnsDomain = 6 - ComputerNamePhysicalDnsFullyQualified = 7 - ComputerNameMax = 8 -) - -// For MessageBox() -const ( - MB_OK = 0x00000000 - MB_OKCANCEL = 0x00000001 - MB_ABORTRETRYIGNORE = 0x00000002 - MB_YESNOCANCEL = 0x00000003 - MB_YESNO = 0x00000004 - MB_RETRYCANCEL = 0x00000005 - MB_CANCELTRYCONTINUE = 0x00000006 - MB_ICONHAND = 0x00000010 - MB_ICONQUESTION = 0x00000020 - MB_ICONEXCLAMATION = 0x00000030 - MB_ICONASTERISK = 0x00000040 - MB_USERICON = 0x00000080 - MB_ICONWARNING = MB_ICONEXCLAMATION - MB_ICONERROR = MB_ICONHAND - MB_ICONINFORMATION = MB_ICONASTERISK - MB_ICONSTOP = MB_ICONHAND - MB_DEFBUTTON1 = 0x00000000 - MB_DEFBUTTON2 = 0x00000100 - MB_DEFBUTTON3 = 0x00000200 - MB_DEFBUTTON4 = 0x00000300 - MB_APPLMODAL = 0x00000000 - MB_SYSTEMMODAL = 0x00001000 - MB_TASKMODAL = 0x00002000 - MB_HELP = 0x00004000 - MB_NOFOCUS = 0x00008000 - MB_SETFOREGROUND = 0x00010000 - MB_DEFAULT_DESKTOP_ONLY = 0x00020000 - MB_TOPMOST = 0x00040000 - MB_RIGHT = 0x00080000 - MB_RTLREADING = 0x00100000 - MB_SERVICE_NOTIFICATION = 0x00200000 -) - -const ( - MOVEFILE_REPLACE_EXISTING = 0x1 - MOVEFILE_COPY_ALLOWED = 0x2 - MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 - MOVEFILE_WRITE_THROUGH = 0x8 - MOVEFILE_CREATE_HARDLINK = 0x10 - MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 -) - -const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 - -const ( - IF_TYPE_OTHER = 1 - IF_TYPE_ETHERNET_CSMACD = 6 - IF_TYPE_ISO88025_TOKENRING = 9 - IF_TYPE_PPP = 23 - IF_TYPE_SOFTWARE_LOOPBACK = 24 - IF_TYPE_ATM = 37 - IF_TYPE_IEEE80211 = 71 - IF_TYPE_TUNNEL = 131 - IF_TYPE_IEEE1394 = 144 -) - -type SocketAddress struct { - Sockaddr *syscall.RawSockaddrAny - SockaddrLength int32 -} - -// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. -func (addr *SocketAddress) IP() net.IP { - if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { - return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] - } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { - return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] - } - return nil -} - -type IpAdapterUnicastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterUnicastAddress - Address SocketAddress - PrefixOrigin int32 - SuffixOrigin int32 - DadState int32 - ValidLifetime uint32 - PreferredLifetime uint32 - LeaseLifetime uint32 - OnLinkPrefixLength uint8 -} - -type IpAdapterAnycastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterAnycastAddress - Address SocketAddress -} - -type IpAdapterMulticastAddress struct { - Length uint32 - Flags uint32 - Next *IpAdapterMulticastAddress - Address SocketAddress -} - -type IpAdapterDnsServerAdapter struct { - Length uint32 - Reserved uint32 - Next *IpAdapterDnsServerAdapter - Address SocketAddress -} - -type IpAdapterPrefix struct { - Length uint32 - Flags uint32 - Next *IpAdapterPrefix - Address SocketAddress - PrefixLength uint32 -} - -type IpAdapterAddresses struct { - Length uint32 - IfIndex uint32 - Next *IpAdapterAddresses - AdapterName *byte - FirstUnicastAddress *IpAdapterUnicastAddress - FirstAnycastAddress *IpAdapterAnycastAddress - FirstMulticastAddress *IpAdapterMulticastAddress - FirstDnsServerAddress *IpAdapterDnsServerAdapter - DnsSuffix *uint16 - Description *uint16 - FriendlyName *uint16 - PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte - PhysicalAddressLength uint32 - Flags uint32 - Mtu uint32 - IfType uint32 - OperStatus uint32 - Ipv6IfIndex uint32 - ZoneIndices [16]uint32 - FirstPrefix *IpAdapterPrefix - /* more fields might be present here. */ -} - -const ( - IfOperStatusUp = 1 - IfOperStatusDown = 2 - IfOperStatusTesting = 3 - IfOperStatusUnknown = 4 - IfOperStatusDormant = 5 - IfOperStatusNotPresent = 6 - IfOperStatusLowerLayerDown = 7 -) - -// Console related constants used for the mode parameter to SetConsoleMode. See -// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. - -const ( - ENABLE_PROCESSED_INPUT = 0x1 - ENABLE_LINE_INPUT = 0x2 - ENABLE_ECHO_INPUT = 0x4 - ENABLE_WINDOW_INPUT = 0x8 - ENABLE_MOUSE_INPUT = 0x10 - ENABLE_INSERT_MODE = 0x20 - ENABLE_QUICK_EDIT_MODE = 0x40 - ENABLE_EXTENDED_FLAGS = 0x80 - ENABLE_AUTO_POSITION = 0x100 - ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 - - ENABLE_PROCESSED_OUTPUT = 0x1 - ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 - ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 - DISABLE_NEWLINE_AUTO_RETURN = 0x8 - ENABLE_LVB_GRID_WORLDWIDE = 0x10 -) - -type Coord struct { - X int16 - Y int16 -} - -type SmallRect struct { - Left int16 - Top int16 - Right int16 - Bottom int16 -} - -// Used with GetConsoleScreenBuffer to retrieve information about a console -// screen buffer. See -// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str -// for details. - -type ConsoleScreenBufferInfo struct { - Size Coord - CursorPosition Coord - Attributes uint16 - Window SmallRect - MaximumWindowSize Coord -} - -const UNIX_PATH_MAX = 108 // defined in afunix.h - -const ( - // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags - JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 - JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 - JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 - JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 - JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 - JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 - JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 - JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 - JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 - JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 - JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 - JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 - JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 - JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 - JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 -) - -type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { - PerProcessUserTimeLimit int64 - PerJobUserTimeLimit int64 - LimitFlags uint32 - MinimumWorkingSetSize uintptr - MaximumWorkingSetSize uintptr - ActiveProcessLimit uint32 - Affinity uintptr - PriorityClass uint32 - SchedulingClass uint32 -} - -type IO_COUNTERS struct { - ReadOperationCount uint64 - WriteOperationCount uint64 - OtherOperationCount uint64 - ReadTransferCount uint64 - WriteTransferCount uint64 - OtherTransferCount uint64 -} - -type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { - BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION - IoInfo IO_COUNTERS - ProcessMemoryLimit uintptr - JobMemoryLimit uintptr - PeakProcessMemoryUsed uintptr - PeakJobMemoryUsed uintptr -} - -const ( - // UIRestrictionsClass - JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 - JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 - JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 - JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 - JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 - JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 - JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 - JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 -) - -type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { - UIRestrictionsClass uint32 -} - -const ( - // JobObjectInformationClass - JobObjectAssociateCompletionPortInformation = 7 - JobObjectBasicLimitInformation = 2 - JobObjectBasicUIRestrictions = 4 - JobObjectCpuRateControlInformation = 15 - JobObjectEndOfJobTimeInformation = 6 - JobObjectExtendedLimitInformation = 9 - JobObjectGroupInformation = 11 - JobObjectGroupInformationEx = 14 - JobObjectLimitViolationInformation2 = 35 - JobObjectNetRateControlInformation = 32 - JobObjectNotificationLimitInformation = 12 - JobObjectNotificationLimitInformation2 = 34 - JobObjectSecurityLimitInformation = 5 -) - -const ( - KF_FLAG_DEFAULT = 0x00000000 - KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 - KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 - KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 - KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 - KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 - KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 - KF_FLAG_CREATE = 0x00008000 - KF_FLAG_DONT_VERIFY = 0x00004000 - KF_FLAG_DONT_UNEXPAND = 0x00002000 - KF_FLAG_NO_ALIAS = 0x00001000 - KF_FLAG_INIT = 0x00000800 - KF_FLAG_DEFAULT_PATH = 0x00000400 - KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 - KF_FLAG_SIMPLE_IDLIST = 0x00000100 - KF_FLAG_ALIAS_ONLY = 0x80000000 -) - -type OsVersionInfoEx struct { - osVersionInfoSize uint32 - MajorVersion uint32 - MinorVersion uint32 - BuildNumber uint32 - PlatformId uint32 - CsdVersion [128]uint16 - ServicePackMajor uint16 - ServicePackMinor uint16 - SuiteMask uint16 - ProductType byte - _ byte -} - -const ( - EWX_LOGOFF = 0x00000000 - EWX_SHUTDOWN = 0x00000001 - EWX_REBOOT = 0x00000002 - EWX_FORCE = 0x00000004 - EWX_POWEROFF = 0x00000008 - EWX_FORCEIFHUNG = 0x00000010 - EWX_QUICKRESOLVE = 0x00000020 - EWX_RESTARTAPPS = 0x00000040 - EWX_HYBRID_SHUTDOWN = 0x00400000 - EWX_BOOTOPTIONS = 0x01000000 - - SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 - SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 - SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 - SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 - SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 - SHTDN_REASON_FLAG_PLANNED = 0x80000000 - SHTDN_REASON_MAJOR_OTHER = 0x00000000 - SHTDN_REASON_MAJOR_NONE = 0x00000000 - SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 - SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 - SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 - SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 - SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 - SHTDN_REASON_MAJOR_POWER = 0x00060000 - SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 - SHTDN_REASON_MINOR_OTHER = 0x00000000 - SHTDN_REASON_MINOR_NONE = 0x000000ff - SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 - SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 - SHTDN_REASON_MINOR_UPGRADE = 0x00000003 - SHTDN_REASON_MINOR_RECONFIG = 0x00000004 - SHTDN_REASON_MINOR_HUNG = 0x00000005 - SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 - SHTDN_REASON_MINOR_DISK = 0x00000007 - SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 - SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 - SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a - SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b - SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c - SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d - SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e - SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F - SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 - SHTDN_REASON_MINOR_HOTFIX = 0x00000011 - SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 - SHTDN_REASON_MINOR_SECURITY = 0x00000013 - SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 - SHTDN_REASON_MINOR_WMI = 0x00000015 - SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 - SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 - SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 - SHTDN_REASON_MINOR_MMC = 0x00000019 - SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a - SHTDN_REASON_MINOR_TERMSRV = 0x00000020 - SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 - SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 - SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE - SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED - SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff - - SHUTDOWN_NORETRY = 0x1 -) - -// Flags used for GetModuleHandleEx -const ( - GET_MODULE_HANDLE_EX_FLAG_PIN = 1 - GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 -) diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go deleted file mode 100644 index fe0ddd03..00000000 --- a/vendor/golang.org/x/sys/windows/types_windows_386.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -type WSAData struct { - Version uint16 - HighVersion uint16 - Description [WSADESCRIPTION_LEN + 1]byte - SystemStatus [WSASYS_STATUS_LEN + 1]byte - MaxSockets uint16 - MaxUdpDg uint16 - VendorInfo *byte -} - -type Servent struct { - Name *byte - Aliases **byte - Port uint16 - Proto *byte -} diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go deleted file mode 100644 index 7e154c2d..00000000 --- a/vendor/golang.org/x/sys/windows/types_windows_amd64.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -type WSAData struct { - Version uint16 - HighVersion uint16 - MaxSockets uint16 - MaxUdpDg uint16 - VendorInfo *byte - Description [WSADESCRIPTION_LEN + 1]byte - SystemStatus [WSASYS_STATUS_LEN + 1]byte -} - -type Servent struct { - Name *byte - Aliases **byte - Proto *byte - Port uint16 -} diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go deleted file mode 100644 index 74571e36..00000000 --- a/vendor/golang.org/x/sys/windows/types_windows_arm.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -type WSAData struct { - Version uint16 - HighVersion uint16 - Description [WSADESCRIPTION_LEN + 1]byte - SystemStatus [WSASYS_STATUS_LEN + 1]byte - MaxSockets uint16 - MaxUdpDg uint16 - VendorInfo *byte -} - -type Servent struct { - Name *byte - Aliases **byte - Port uint16 - Proto *byte -} diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go deleted file mode 100644 index f0212003..00000000 --- a/vendor/golang.org/x/sys/windows/zerrors_windows.go +++ /dev/null @@ -1,6853 +0,0 @@ -// Code generated by 'mkerrors.bash'; DO NOT EDIT. - -package windows - -import "syscall" - -const ( - FACILITY_NULL = 0 - FACILITY_RPC = 1 - FACILITY_DISPATCH = 2 - FACILITY_STORAGE = 3 - FACILITY_ITF = 4 - FACILITY_WIN32 = 7 - FACILITY_WINDOWS = 8 - FACILITY_SSPI = 9 - FACILITY_SECURITY = 9 - FACILITY_CONTROL = 10 - FACILITY_CERT = 11 - FACILITY_INTERNET = 12 - FACILITY_MEDIASERVER = 13 - FACILITY_MSMQ = 14 - FACILITY_SETUPAPI = 15 - FACILITY_SCARD = 16 - FACILITY_COMPLUS = 17 - FACILITY_AAF = 18 - FACILITY_URT = 19 - FACILITY_ACS = 20 - FACILITY_DPLAY = 21 - FACILITY_UMI = 22 - FACILITY_SXS = 23 - FACILITY_WINDOWS_CE = 24 - FACILITY_HTTP = 25 - FACILITY_USERMODE_COMMONLOG = 26 - FACILITY_WER = 27 - FACILITY_USERMODE_FILTER_MANAGER = 31 - FACILITY_BACKGROUNDCOPY = 32 - FACILITY_CONFIGURATION = 33 - FACILITY_WIA = 33 - FACILITY_STATE_MANAGEMENT = 34 - FACILITY_METADIRECTORY = 35 - FACILITY_WINDOWSUPDATE = 36 - FACILITY_DIRECTORYSERVICE = 37 - FACILITY_GRAPHICS = 38 - FACILITY_SHELL = 39 - FACILITY_NAP = 39 - FACILITY_TPM_SERVICES = 40 - FACILITY_TPM_SOFTWARE = 41 - FACILITY_UI = 42 - FACILITY_XAML = 43 - FACILITY_ACTION_QUEUE = 44 - FACILITY_PLA = 48 - FACILITY_WINDOWS_SETUP = 48 - FACILITY_FVE = 49 - FACILITY_FWP = 50 - FACILITY_WINRM = 51 - FACILITY_NDIS = 52 - FACILITY_USERMODE_HYPERVISOR = 53 - FACILITY_CMI = 54 - FACILITY_USERMODE_VIRTUALIZATION = 55 - FACILITY_USERMODE_VOLMGR = 56 - FACILITY_BCD = 57 - FACILITY_USERMODE_VHD = 58 - FACILITY_USERMODE_HNS = 59 - FACILITY_SDIAG = 60 - FACILITY_WEBSERVICES = 61 - FACILITY_WINPE = 61 - FACILITY_WPN = 62 - FACILITY_WINDOWS_STORE = 63 - FACILITY_INPUT = 64 - FACILITY_EAP = 66 - FACILITY_WINDOWS_DEFENDER = 80 - FACILITY_OPC = 81 - FACILITY_XPS = 82 - FACILITY_MBN = 84 - FACILITY_POWERSHELL = 84 - FACILITY_RAS = 83 - FACILITY_P2P_INT = 98 - FACILITY_P2P = 99 - FACILITY_DAF = 100 - FACILITY_BLUETOOTH_ATT = 101 - FACILITY_AUDIO = 102 - FACILITY_STATEREPOSITORY = 103 - FACILITY_VISUALCPP = 109 - FACILITY_SCRIPT = 112 - FACILITY_PARSE = 113 - FACILITY_BLB = 120 - FACILITY_BLB_CLI = 121 - FACILITY_WSBAPP = 122 - FACILITY_BLBUI = 128 - FACILITY_USN = 129 - FACILITY_USERMODE_VOLSNAP = 130 - FACILITY_TIERING = 131 - FACILITY_WSB_ONLINE = 133 - FACILITY_ONLINE_ID = 134 - FACILITY_DEVICE_UPDATE_AGENT = 135 - FACILITY_DRVSERVICING = 136 - FACILITY_DLS = 153 - FACILITY_DELIVERY_OPTIMIZATION = 208 - FACILITY_USERMODE_SPACES = 231 - FACILITY_USER_MODE_SECURITY_CORE = 232 - FACILITY_USERMODE_LICENSING = 234 - FACILITY_SOS = 160 - FACILITY_DEBUGGERS = 176 - FACILITY_SPP = 256 - FACILITY_RESTORE = 256 - FACILITY_DMSERVER = 256 - FACILITY_DEPLOYMENT_SERVICES_SERVER = 257 - FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258 - FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259 - FACILITY_DEPLOYMENT_SERVICES_UTIL = 260 - FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261 - FACILITY_DEPLOYMENT_SERVICES_PXE = 263 - FACILITY_DEPLOYMENT_SERVICES_TFTP = 264 - FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272 - FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278 - FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289 - FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290 - FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293 - FACILITY_LINGUISTIC_SERVICES = 305 - FACILITY_AUDIOSTREAMING = 1094 - FACILITY_ACCELERATOR = 1536 - FACILITY_WMAAECMA = 1996 - FACILITY_DIRECTMUSIC = 2168 - FACILITY_DIRECT3D10 = 2169 - FACILITY_DXGI = 2170 - FACILITY_DXGI_DDI = 2171 - FACILITY_DIRECT3D11 = 2172 - FACILITY_DIRECT3D11_DEBUG = 2173 - FACILITY_DIRECT3D12 = 2174 - FACILITY_DIRECT3D12_DEBUG = 2175 - FACILITY_LEAP = 2184 - FACILITY_AUDCLNT = 2185 - FACILITY_WINCODEC_DWRITE_DWM = 2200 - FACILITY_WINML = 2192 - FACILITY_DIRECT2D = 2201 - FACILITY_DEFRAG = 2304 - FACILITY_USERMODE_SDBUS = 2305 - FACILITY_JSCRIPT = 2306 - FACILITY_PIDGENX = 2561 - FACILITY_EAS = 85 - FACILITY_WEB = 885 - FACILITY_WEB_SOCKET = 886 - FACILITY_MOBILE = 1793 - FACILITY_SQLITE = 1967 - FACILITY_UTC = 1989 - FACILITY_WEP = 2049 - FACILITY_SYNCENGINE = 2050 - FACILITY_XBOX = 2339 - FACILITY_PIX = 2748 - ERROR_SUCCESS syscall.Errno = 0 - NO_ERROR = 0 - SEC_E_OK Handle = 0x00000000 - ERROR_INVALID_FUNCTION syscall.Errno = 1 - ERROR_FILE_NOT_FOUND syscall.Errno = 2 - ERROR_PATH_NOT_FOUND syscall.Errno = 3 - ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4 - ERROR_ACCESS_DENIED syscall.Errno = 5 - ERROR_INVALID_HANDLE syscall.Errno = 6 - ERROR_ARENA_TRASHED syscall.Errno = 7 - ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8 - ERROR_INVALID_BLOCK syscall.Errno = 9 - ERROR_BAD_ENVIRONMENT syscall.Errno = 10 - ERROR_BAD_FORMAT syscall.Errno = 11 - ERROR_INVALID_ACCESS syscall.Errno = 12 - ERROR_INVALID_DATA syscall.Errno = 13 - ERROR_OUTOFMEMORY syscall.Errno = 14 - ERROR_INVALID_DRIVE syscall.Errno = 15 - ERROR_CURRENT_DIRECTORY syscall.Errno = 16 - ERROR_NOT_SAME_DEVICE syscall.Errno = 17 - ERROR_NO_MORE_FILES syscall.Errno = 18 - ERROR_WRITE_PROTECT syscall.Errno = 19 - ERROR_BAD_UNIT syscall.Errno = 20 - ERROR_NOT_READY syscall.Errno = 21 - ERROR_BAD_COMMAND syscall.Errno = 22 - ERROR_CRC syscall.Errno = 23 - ERROR_BAD_LENGTH syscall.Errno = 24 - ERROR_SEEK syscall.Errno = 25 - ERROR_NOT_DOS_DISK syscall.Errno = 26 - ERROR_SECTOR_NOT_FOUND syscall.Errno = 27 - ERROR_OUT_OF_PAPER syscall.Errno = 28 - ERROR_WRITE_FAULT syscall.Errno = 29 - ERROR_READ_FAULT syscall.Errno = 30 - ERROR_GEN_FAILURE syscall.Errno = 31 - ERROR_SHARING_VIOLATION syscall.Errno = 32 - ERROR_LOCK_VIOLATION syscall.Errno = 33 - ERROR_WRONG_DISK syscall.Errno = 34 - ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36 - ERROR_HANDLE_EOF syscall.Errno = 38 - ERROR_HANDLE_DISK_FULL syscall.Errno = 39 - ERROR_NOT_SUPPORTED syscall.Errno = 50 - ERROR_REM_NOT_LIST syscall.Errno = 51 - ERROR_DUP_NAME syscall.Errno = 52 - ERROR_BAD_NETPATH syscall.Errno = 53 - ERROR_NETWORK_BUSY syscall.Errno = 54 - ERROR_DEV_NOT_EXIST syscall.Errno = 55 - ERROR_TOO_MANY_CMDS syscall.Errno = 56 - ERROR_ADAP_HDW_ERR syscall.Errno = 57 - ERROR_BAD_NET_RESP syscall.Errno = 58 - ERROR_UNEXP_NET_ERR syscall.Errno = 59 - ERROR_BAD_REM_ADAP syscall.Errno = 60 - ERROR_PRINTQ_FULL syscall.Errno = 61 - ERROR_NO_SPOOL_SPACE syscall.Errno = 62 - ERROR_PRINT_CANCELLED syscall.Errno = 63 - ERROR_NETNAME_DELETED syscall.Errno = 64 - ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65 - ERROR_BAD_DEV_TYPE syscall.Errno = 66 - ERROR_BAD_NET_NAME syscall.Errno = 67 - ERROR_TOO_MANY_NAMES syscall.Errno = 68 - ERROR_TOO_MANY_SESS syscall.Errno = 69 - ERROR_SHARING_PAUSED syscall.Errno = 70 - ERROR_REQ_NOT_ACCEP syscall.Errno = 71 - ERROR_REDIR_PAUSED syscall.Errno = 72 - ERROR_FILE_EXISTS syscall.Errno = 80 - ERROR_CANNOT_MAKE syscall.Errno = 82 - ERROR_FAIL_I24 syscall.Errno = 83 - ERROR_OUT_OF_STRUCTURES syscall.Errno = 84 - ERROR_ALREADY_ASSIGNED syscall.Errno = 85 - ERROR_INVALID_PASSWORD syscall.Errno = 86 - ERROR_INVALID_PARAMETER syscall.Errno = 87 - ERROR_NET_WRITE_FAULT syscall.Errno = 88 - ERROR_NO_PROC_SLOTS syscall.Errno = 89 - ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100 - ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101 - ERROR_SEM_IS_SET syscall.Errno = 102 - ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103 - ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104 - ERROR_SEM_OWNER_DIED syscall.Errno = 105 - ERROR_SEM_USER_LIMIT syscall.Errno = 106 - ERROR_DISK_CHANGE syscall.Errno = 107 - ERROR_DRIVE_LOCKED syscall.Errno = 108 - ERROR_BROKEN_PIPE syscall.Errno = 109 - ERROR_OPEN_FAILED syscall.Errno = 110 - ERROR_BUFFER_OVERFLOW syscall.Errno = 111 - ERROR_DISK_FULL syscall.Errno = 112 - ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113 - ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114 - ERROR_INVALID_CATEGORY syscall.Errno = 117 - ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118 - ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119 - ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120 - ERROR_SEM_TIMEOUT syscall.Errno = 121 - ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 - ERROR_INVALID_NAME syscall.Errno = 123 - ERROR_INVALID_LEVEL syscall.Errno = 124 - ERROR_NO_VOLUME_LABEL syscall.Errno = 125 - ERROR_MOD_NOT_FOUND syscall.Errno = 126 - ERROR_PROC_NOT_FOUND syscall.Errno = 127 - ERROR_WAIT_NO_CHILDREN syscall.Errno = 128 - ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129 - ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130 - ERROR_NEGATIVE_SEEK syscall.Errno = 131 - ERROR_SEEK_ON_DEVICE syscall.Errno = 132 - ERROR_IS_JOIN_TARGET syscall.Errno = 133 - ERROR_IS_JOINED syscall.Errno = 134 - ERROR_IS_SUBSTED syscall.Errno = 135 - ERROR_NOT_JOINED syscall.Errno = 136 - ERROR_NOT_SUBSTED syscall.Errno = 137 - ERROR_JOIN_TO_JOIN syscall.Errno = 138 - ERROR_SUBST_TO_SUBST syscall.Errno = 139 - ERROR_JOIN_TO_SUBST syscall.Errno = 140 - ERROR_SUBST_TO_JOIN syscall.Errno = 141 - ERROR_BUSY_DRIVE syscall.Errno = 142 - ERROR_SAME_DRIVE syscall.Errno = 143 - ERROR_DIR_NOT_ROOT syscall.Errno = 144 - ERROR_DIR_NOT_EMPTY syscall.Errno = 145 - ERROR_IS_SUBST_PATH syscall.Errno = 146 - ERROR_IS_JOIN_PATH syscall.Errno = 147 - ERROR_PATH_BUSY syscall.Errno = 148 - ERROR_IS_SUBST_TARGET syscall.Errno = 149 - ERROR_SYSTEM_TRACE syscall.Errno = 150 - ERROR_INVALID_EVENT_COUNT syscall.Errno = 151 - ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152 - ERROR_INVALID_LIST_FORMAT syscall.Errno = 153 - ERROR_LABEL_TOO_LONG syscall.Errno = 154 - ERROR_TOO_MANY_TCBS syscall.Errno = 155 - ERROR_SIGNAL_REFUSED syscall.Errno = 156 - ERROR_DISCARDED syscall.Errno = 157 - ERROR_NOT_LOCKED syscall.Errno = 158 - ERROR_BAD_THREADID_ADDR syscall.Errno = 159 - ERROR_BAD_ARGUMENTS syscall.Errno = 160 - ERROR_BAD_PATHNAME syscall.Errno = 161 - ERROR_SIGNAL_PENDING syscall.Errno = 162 - ERROR_MAX_THRDS_REACHED syscall.Errno = 164 - ERROR_LOCK_FAILED syscall.Errno = 167 - ERROR_BUSY syscall.Errno = 170 - ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171 - ERROR_CANCEL_VIOLATION syscall.Errno = 173 - ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174 - ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180 - ERROR_INVALID_ORDINAL syscall.Errno = 182 - ERROR_ALREADY_EXISTS syscall.Errno = 183 - ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186 - ERROR_SEM_NOT_FOUND syscall.Errno = 187 - ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188 - ERROR_INVALID_STACKSEG syscall.Errno = 189 - ERROR_INVALID_MODULETYPE syscall.Errno = 190 - ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191 - ERROR_EXE_MARKED_INVALID syscall.Errno = 192 - ERROR_BAD_EXE_FORMAT syscall.Errno = 193 - ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194 - ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195 - ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196 - ERROR_IOPL_NOT_ENABLED syscall.Errno = 197 - ERROR_INVALID_SEGDPL syscall.Errno = 198 - ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199 - ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200 - ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201 - ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202 - ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 - ERROR_NO_SIGNAL_SENT syscall.Errno = 205 - ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206 - ERROR_RING2_STACK_IN_USE syscall.Errno = 207 - ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208 - ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209 - ERROR_THREAD_1_INACTIVE syscall.Errno = 210 - ERROR_LOCKED syscall.Errno = 212 - ERROR_TOO_MANY_MODULES syscall.Errno = 214 - ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215 - ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216 - ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217 - ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218 - ERROR_FILE_CHECKED_OUT syscall.Errno = 220 - ERROR_CHECKOUT_REQUIRED syscall.Errno = 221 - ERROR_BAD_FILE_TYPE syscall.Errno = 222 - ERROR_FILE_TOO_LARGE syscall.Errno = 223 - ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224 - ERROR_VIRUS_INFECTED syscall.Errno = 225 - ERROR_VIRUS_DELETED syscall.Errno = 226 - ERROR_PIPE_LOCAL syscall.Errno = 229 - ERROR_BAD_PIPE syscall.Errno = 230 - ERROR_PIPE_BUSY syscall.Errno = 231 - ERROR_NO_DATA syscall.Errno = 232 - ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233 - ERROR_MORE_DATA syscall.Errno = 234 - ERROR_NO_WORK_DONE syscall.Errno = 235 - ERROR_VC_DISCONNECTED syscall.Errno = 240 - ERROR_INVALID_EA_NAME syscall.Errno = 254 - ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255 - WAIT_TIMEOUT syscall.Errno = 258 - ERROR_NO_MORE_ITEMS syscall.Errno = 259 - ERROR_CANNOT_COPY syscall.Errno = 266 - ERROR_DIRECTORY syscall.Errno = 267 - ERROR_EAS_DIDNT_FIT syscall.Errno = 275 - ERROR_EA_FILE_CORRUPT syscall.Errno = 276 - ERROR_EA_TABLE_FULL syscall.Errno = 277 - ERROR_INVALID_EA_HANDLE syscall.Errno = 278 - ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282 - ERROR_NOT_OWNER syscall.Errno = 288 - ERROR_TOO_MANY_POSTS syscall.Errno = 298 - ERROR_PARTIAL_COPY syscall.Errno = 299 - ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300 - ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301 - ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302 - ERROR_DELETE_PENDING syscall.Errno = 303 - ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304 - ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305 - ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306 - ERROR_INVALID_LOCK_RANGE syscall.Errno = 307 - ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308 - ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309 - ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310 - ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311 - ERROR_NO_RANGES_PROCESSED syscall.Errno = 312 - ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313 - ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314 - ERROR_INVALID_TOKEN syscall.Errno = 315 - ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316 - ERROR_MR_MID_NOT_FOUND syscall.Errno = 317 - ERROR_SCOPE_NOT_FOUND syscall.Errno = 318 - ERROR_UNDEFINED_SCOPE syscall.Errno = 319 - ERROR_INVALID_CAP syscall.Errno = 320 - ERROR_DEVICE_UNREACHABLE syscall.Errno = 321 - ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322 - ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323 - ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324 - ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326 - ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327 - ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328 - ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329 - ERROR_BAD_DEVICE_PATH syscall.Errno = 330 - ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331 - ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332 - ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333 - ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334 - ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335 - ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336 - ERROR_NOT_READ_FROM_COPY syscall.Errno = 337 - ERROR_FT_WRITE_FAILURE syscall.Errno = 338 - ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339 - ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340 - ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341 - ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342 - ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343 - ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344 - ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345 - ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346 - ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347 - ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348 - ERROR_ENCLAVE_FAILURE syscall.Errno = 349 - ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350 - ERROR_FAIL_SHUTDOWN syscall.Errno = 351 - ERROR_FAIL_RESTART syscall.Errno = 352 - ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353 - ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354 - ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355 - ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356 - ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357 - ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358 - ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359 - ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360 - ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361 - ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362 - ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363 - ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364 - ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365 - ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366 - ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367 - ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368 - ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369 - ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370 - ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371 - ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372 - ERROR_GDI_HANDLE_LEAK syscall.Errno = 373 - ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374 - ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375 - ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376 - ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377 - ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378 - ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379 - ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380 - ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381 - ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382 - ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383 - ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384 - ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385 - ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386 - ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387 - ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388 - ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389 - ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390 - ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391 - ERROR_CLOUD_FILE_PINNED syscall.Errno = 392 - ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393 - ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394 - ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395 - ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396 - ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397 - ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398 - ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399 - ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400 - ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401 - ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402 - ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403 - ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404 - ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405 - ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406 - ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407 - ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408 - ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409 - ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410 - ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411 - ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412 - ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413 - ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414 - ERROR_FT_READ_FAILURE syscall.Errno = 415 - ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416 - ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417 - ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418 - ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 - ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 - ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 - ERROR_TIME_CRITICAL_THREAD syscall.Errno = 422 - ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 - ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 - ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 - ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 - ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 - ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453 - ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454 - ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455 - ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456 - ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457 - ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458 - ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459 - ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460 - ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480 - ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481 - ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482 - ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483 - ERROR_INVALID_ADDRESS syscall.Errno = 487 - ERROR_VRF_CFG_ENABLED syscall.Errno = 1183 - ERROR_PARTITION_TERMINATING syscall.Errno = 1184 - ERROR_USER_PROFILE_LOAD syscall.Errno = 500 - ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534 - ERROR_PIPE_CONNECTED syscall.Errno = 535 - ERROR_PIPE_LISTENING syscall.Errno = 536 - ERROR_VERIFIER_STOP syscall.Errno = 537 - ERROR_ABIOS_ERROR syscall.Errno = 538 - ERROR_WX86_WARNING syscall.Errno = 539 - ERROR_WX86_ERROR syscall.Errno = 540 - ERROR_TIMER_NOT_CANCELED syscall.Errno = 541 - ERROR_UNWIND syscall.Errno = 542 - ERROR_BAD_STACK syscall.Errno = 543 - ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544 - ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545 - ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546 - ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547 - ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548 - ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549 - ERROR_PROFILING_NOT_STARTED syscall.Errno = 550 - ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551 - ERROR_COULD_NOT_INTERPRET syscall.Errno = 552 - ERROR_PROFILING_AT_LIMIT syscall.Errno = 553 - ERROR_CANT_WAIT syscall.Errno = 554 - ERROR_CANT_TERMINATE_SELF syscall.Errno = 555 - ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556 - ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557 - ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558 - ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559 - ERROR_NO_GUID_TRANSLATION syscall.Errno = 560 - ERROR_INVALID_LDT_SIZE syscall.Errno = 561 - ERROR_INVALID_LDT_OFFSET syscall.Errno = 563 - ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564 - ERROR_TOO_MANY_THREADS syscall.Errno = 565 - ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566 - ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567 - ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568 - ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569 - ERROR_NET_OPEN_FAILED syscall.Errno = 570 - ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571 - ERROR_CONTROL_C_EXIT syscall.Errno = 572 - ERROR_MISSING_SYSTEMFILE syscall.Errno = 573 - ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574 - ERROR_APP_INIT_FAILURE syscall.Errno = 575 - ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576 - ERROR_INVALID_IMAGE_HASH syscall.Errno = 577 - ERROR_NO_PAGEFILE syscall.Errno = 578 - ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579 - ERROR_NO_EVENT_PAIR syscall.Errno = 580 - ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581 - ERROR_ILLEGAL_CHARACTER syscall.Errno = 582 - ERROR_UNDEFINED_CHARACTER syscall.Errno = 583 - ERROR_FLOPPY_VOLUME syscall.Errno = 584 - ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585 - ERROR_BACKUP_CONTROLLER syscall.Errno = 586 - ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587 - ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588 - ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589 - ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590 - ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591 - ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592 - ERROR_VDM_HARD_ERROR syscall.Errno = 593 - ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594 - ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595 - ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596 - ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597 - ERROR_NOT_TINY_STREAM syscall.Errno = 598 - ERROR_STACK_OVERFLOW_READ syscall.Errno = 599 - ERROR_CONVERT_TO_LARGE syscall.Errno = 600 - ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601 - ERROR_ALLOCATE_BUCKET syscall.Errno = 602 - ERROR_MARSHALL_OVERFLOW syscall.Errno = 603 - ERROR_INVALID_VARIANT syscall.Errno = 604 - ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605 - ERROR_AUDIT_FAILED syscall.Errno = 606 - ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607 - ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608 - ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609 - ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610 - ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611 - ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612 - ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613 - ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614 - ERROR_PWD_TOO_SHORT syscall.Errno = 615 - ERROR_PWD_TOO_RECENT syscall.Errno = 616 - ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617 - ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618 - ERROR_INVALID_HW_PROFILE syscall.Errno = 619 - ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620 - ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621 - ERROR_EVALUATION_EXPIRATION syscall.Errno = 622 - ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623 - ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624 - ERROR_VALIDATE_CONTINUE syscall.Errno = 625 - ERROR_NO_MORE_MATCHES syscall.Errno = 626 - ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627 - ERROR_SERVER_SID_MISMATCH syscall.Errno = 628 - ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629 - ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630 - ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631 - ERROR_NOINTERFACE syscall.Errno = 632 - ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633 - ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634 - ERROR_COMMITMENT_MINIMUM syscall.Errno = 635 - ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636 - ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637 - ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638 - ERROR_INSUFFICIENT_POWER syscall.Errno = 639 - ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640 - ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641 - ERROR_PORT_NOT_SET syscall.Errno = 642 - ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643 - ERROR_RANGE_NOT_FOUND syscall.Errno = 644 - ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646 - ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647 - ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648 - ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649 - ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650 - ERROR_MCA_OCCURED syscall.Errno = 651 - ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652 - ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653 - ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654 - ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655 - ERROR_HIBERNATION_FAILURE syscall.Errno = 656 - ERROR_PWD_TOO_LONG syscall.Errno = 657 - ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665 - ERROR_ASSERTION_FAILURE syscall.Errno = 668 - ERROR_ACPI_ERROR syscall.Errno = 669 - ERROR_WOW_ASSERTION syscall.Errno = 670 - ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671 - ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672 - ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673 - ERROR_PNP_INVALID_ID syscall.Errno = 674 - ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675 - ERROR_HANDLES_CLOSED syscall.Errno = 676 - ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677 - ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678 - ERROR_MEDIA_CHECK syscall.Errno = 679 - ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680 - ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681 - ERROR_LONGJUMP syscall.Errno = 682 - ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683 - ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684 - ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685 - ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686 - ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687 - ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688 - ERROR_DBG_REPLY_LATER syscall.Errno = 689 - ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690 - ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691 - ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692 - ERROR_DBG_CONTROL_C syscall.Errno = 693 - ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694 - ERROR_DBG_RIPEXCEPTION syscall.Errno = 695 - ERROR_DBG_CONTROL_BREAK syscall.Errno = 696 - ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697 - ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698 - ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699 - ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700 - ERROR_RXACT_STATE_CREATED syscall.Errno = 701 - ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702 - ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703 - ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704 - ERROR_FT_WRITE_RECOVERY syscall.Errno = 705 - ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706 - ERROR_RECEIVE_PARTIAL syscall.Errno = 707 - ERROR_RECEIVE_EXPEDITED syscall.Errno = 708 - ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709 - ERROR_EVENT_DONE syscall.Errno = 710 - ERROR_EVENT_PENDING syscall.Errno = 711 - ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712 - ERROR_FATAL_APP_EXIT syscall.Errno = 713 - ERROR_PREDEFINED_HANDLE syscall.Errno = 714 - ERROR_WAS_UNLOCKED syscall.Errno = 715 - ERROR_SERVICE_NOTIFICATION syscall.Errno = 716 - ERROR_WAS_LOCKED syscall.Errno = 717 - ERROR_LOG_HARD_ERROR syscall.Errno = 718 - ERROR_ALREADY_WIN32 syscall.Errno = 719 - ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720 - ERROR_NO_YIELD_PERFORMED syscall.Errno = 721 - ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722 - ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723 - ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724 - ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725 - ERROR_HIBERNATED syscall.Errno = 726 - ERROR_RESUME_HIBERNATION syscall.Errno = 727 - ERROR_FIRMWARE_UPDATED syscall.Errno = 728 - ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729 - ERROR_WAKE_SYSTEM syscall.Errno = 730 - ERROR_WAIT_1 syscall.Errno = 731 - ERROR_WAIT_2 syscall.Errno = 732 - ERROR_WAIT_3 syscall.Errno = 733 - ERROR_WAIT_63 syscall.Errno = 734 - ERROR_ABANDONED_WAIT_0 syscall.Errno = 735 - ERROR_ABANDONED_WAIT_63 syscall.Errno = 736 - ERROR_USER_APC syscall.Errno = 737 - ERROR_KERNEL_APC syscall.Errno = 738 - ERROR_ALERTED syscall.Errno = 739 - ERROR_ELEVATION_REQUIRED syscall.Errno = 740 - ERROR_REPARSE syscall.Errno = 741 - ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742 - ERROR_VOLUME_MOUNTED syscall.Errno = 743 - ERROR_RXACT_COMMITTED syscall.Errno = 744 - ERROR_NOTIFY_CLEANUP syscall.Errno = 745 - ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746 - ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747 - ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748 - ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749 - ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750 - ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751 - ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752 - ERROR_CRASH_DUMP syscall.Errno = 753 - ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754 - ERROR_REPARSE_OBJECT syscall.Errno = 755 - ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756 - ERROR_TRANSLATION_COMPLETE syscall.Errno = 757 - ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758 - ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759 - ERROR_PROCESS_IN_JOB syscall.Errno = 760 - ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761 - ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762 - ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763 - ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764 - ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765 - ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766 - ERROR_DBG_CONTINUE syscall.Errno = 767 - ERROR_CALLBACK_POP_STACK syscall.Errno = 768 - ERROR_COMPRESSION_DISABLED syscall.Errno = 769 - ERROR_CANTFETCHBACKWARDS syscall.Errno = 770 - ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771 - ERROR_ROWSNOTRELEASED syscall.Errno = 772 - ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773 - ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774 - ERROR_NOT_CAPABLE syscall.Errno = 775 - ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776 - ERROR_VERSION_PARSE_ERROR syscall.Errno = 777 - ERROR_BADSTARTPOSITION syscall.Errno = 778 - ERROR_MEMORY_HARDWARE syscall.Errno = 779 - ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780 - ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781 - ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782 - ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783 - ERROR_MCA_EXCEPTION syscall.Errno = 784 - ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785 - ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786 - ERROR_ABANDON_HIBERFILE syscall.Errno = 787 - ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788 - ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789 - ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790 - ERROR_BAD_MCFG_TABLE syscall.Errno = 791 - ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792 - ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793 - ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794 - ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795 - ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796 - ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797 - ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798 - ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799 - ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800 - ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801 - ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802 - ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803 - ERROR_NO_ACE_CONDITION syscall.Errno = 804 - ERROR_INVALID_ACE_CONDITION syscall.Errno = 805 - ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806 - ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807 - ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808 - ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809 - ERROR_QUOTA_ACTIVITY syscall.Errno = 810 - ERROR_HANDLE_REVOKED syscall.Errno = 811 - ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812 - ERROR_CPU_SET_INVALID syscall.Errno = 813 - ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814 - ERROR_ENCLAVE_VIOLATION syscall.Errno = 815 - ERROR_EA_ACCESS_DENIED syscall.Errno = 994 - ERROR_OPERATION_ABORTED syscall.Errno = 995 - ERROR_IO_INCOMPLETE syscall.Errno = 996 - ERROR_IO_PENDING syscall.Errno = 997 - ERROR_NOACCESS syscall.Errno = 998 - ERROR_SWAPERROR syscall.Errno = 999 - ERROR_STACK_OVERFLOW syscall.Errno = 1001 - ERROR_INVALID_MESSAGE syscall.Errno = 1002 - ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003 - ERROR_INVALID_FLAGS syscall.Errno = 1004 - ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005 - ERROR_FILE_INVALID syscall.Errno = 1006 - ERROR_FULLSCREEN_MODE syscall.Errno = 1007 - ERROR_NO_TOKEN syscall.Errno = 1008 - ERROR_BADDB syscall.Errno = 1009 - ERROR_BADKEY syscall.Errno = 1010 - ERROR_CANTOPEN syscall.Errno = 1011 - ERROR_CANTREAD syscall.Errno = 1012 - ERROR_CANTWRITE syscall.Errno = 1013 - ERROR_REGISTRY_RECOVERED syscall.Errno = 1014 - ERROR_REGISTRY_CORRUPT syscall.Errno = 1015 - ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016 - ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017 - ERROR_KEY_DELETED syscall.Errno = 1018 - ERROR_NO_LOG_SPACE syscall.Errno = 1019 - ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020 - ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021 - ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022 - ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051 - ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052 - ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053 - ERROR_SERVICE_NO_THREAD syscall.Errno = 1054 - ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055 - ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056 - ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057 - ERROR_SERVICE_DISABLED syscall.Errno = 1058 - ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059 - ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060 - ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061 - ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062 - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063 - ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064 - ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065 - ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 - ERROR_PROCESS_ABORTED syscall.Errno = 1067 - ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068 - ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069 - ERROR_SERVICE_START_HANG syscall.Errno = 1070 - ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071 - ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072 - ERROR_SERVICE_EXISTS syscall.Errno = 1073 - ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074 - ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075 - ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076 - ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077 - ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078 - ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079 - ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080 - ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081 - ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082 - ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083 - ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084 - ERROR_END_OF_MEDIA syscall.Errno = 1100 - ERROR_FILEMARK_DETECTED syscall.Errno = 1101 - ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102 - ERROR_SETMARK_DETECTED syscall.Errno = 1103 - ERROR_NO_DATA_DETECTED syscall.Errno = 1104 - ERROR_PARTITION_FAILURE syscall.Errno = 1105 - ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106 - ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107 - ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108 - ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109 - ERROR_MEDIA_CHANGED syscall.Errno = 1110 - ERROR_BUS_RESET syscall.Errno = 1111 - ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112 - ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113 - ERROR_DLL_INIT_FAILED syscall.Errno = 1114 - ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115 - ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116 - ERROR_IO_DEVICE syscall.Errno = 1117 - ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118 - ERROR_IRQ_BUSY syscall.Errno = 1119 - ERROR_MORE_WRITES syscall.Errno = 1120 - ERROR_COUNTER_TIMEOUT syscall.Errno = 1121 - ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122 - ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123 - ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124 - ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125 - ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126 - ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127 - ERROR_DISK_RESET_FAILED syscall.Errno = 1128 - ERROR_EOM_OVERFLOW syscall.Errno = 1129 - ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130 - ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131 - ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132 - ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140 - ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141 - ERROR_TOO_MANY_LINKS syscall.Errno = 1142 - ERROR_OLD_WIN_VERSION syscall.Errno = 1150 - ERROR_APP_WRONG_OS syscall.Errno = 1151 - ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152 - ERROR_RMODE_APP syscall.Errno = 1153 - ERROR_INVALID_DLL syscall.Errno = 1154 - ERROR_NO_ASSOCIATION syscall.Errno = 1155 - ERROR_DDE_FAIL syscall.Errno = 1156 - ERROR_DLL_NOT_FOUND syscall.Errno = 1157 - ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158 - ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159 - ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160 - ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161 - ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162 - ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163 - ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164 - ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165 - ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166 - ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167 - ERROR_NOT_FOUND syscall.Errno = 1168 - ERROR_NO_MATCH syscall.Errno = 1169 - ERROR_SET_NOT_FOUND syscall.Errno = 1170 - ERROR_POINT_NOT_FOUND syscall.Errno = 1171 - ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172 - ERROR_NO_VOLUME_ID syscall.Errno = 1173 - ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175 - ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176 - ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177 - ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178 - ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179 - ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180 - ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181 - ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190 - ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191 - ERROR_BAD_DEVICE syscall.Errno = 1200 - ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201 - ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202 - ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203 - ERROR_BAD_PROVIDER syscall.Errno = 1204 - ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205 - ERROR_BAD_PROFILE syscall.Errno = 1206 - ERROR_NOT_CONTAINER syscall.Errno = 1207 - ERROR_EXTENDED_ERROR syscall.Errno = 1208 - ERROR_INVALID_GROUPNAME syscall.Errno = 1209 - ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210 - ERROR_INVALID_EVENTNAME syscall.Errno = 1211 - ERROR_INVALID_DOMAINNAME syscall.Errno = 1212 - ERROR_INVALID_SERVICENAME syscall.Errno = 1213 - ERROR_INVALID_NETNAME syscall.Errno = 1214 - ERROR_INVALID_SHARENAME syscall.Errno = 1215 - ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216 - ERROR_INVALID_MESSAGENAME syscall.Errno = 1217 - ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218 - ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219 - ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220 - ERROR_DUP_DOMAINNAME syscall.Errno = 1221 - ERROR_NO_NETWORK syscall.Errno = 1222 - ERROR_CANCELLED syscall.Errno = 1223 - ERROR_USER_MAPPED_FILE syscall.Errno = 1224 - ERROR_CONNECTION_REFUSED syscall.Errno = 1225 - ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226 - ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227 - ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228 - ERROR_CONNECTION_INVALID syscall.Errno = 1229 - ERROR_CONNECTION_ACTIVE syscall.Errno = 1230 - ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231 - ERROR_HOST_UNREACHABLE syscall.Errno = 1232 - ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233 - ERROR_PORT_UNREACHABLE syscall.Errno = 1234 - ERROR_REQUEST_ABORTED syscall.Errno = 1235 - ERROR_CONNECTION_ABORTED syscall.Errno = 1236 - ERROR_RETRY syscall.Errno = 1237 - ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238 - ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239 - ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240 - ERROR_INCORRECT_ADDRESS syscall.Errno = 1241 - ERROR_ALREADY_REGISTERED syscall.Errno = 1242 - ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243 - ERROR_NOT_AUTHENTICATED syscall.Errno = 1244 - ERROR_NOT_LOGGED_ON syscall.Errno = 1245 - ERROR_CONTINUE syscall.Errno = 1246 - ERROR_ALREADY_INITIALIZED syscall.Errno = 1247 - ERROR_NO_MORE_DEVICES syscall.Errno = 1248 - ERROR_NO_SUCH_SITE syscall.Errno = 1249 - ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250 - ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251 - ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252 - ERROR_BAD_USER_PROFILE syscall.Errno = 1253 - ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254 - ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255 - ERROR_HOST_DOWN syscall.Errno = 1256 - ERROR_NON_ACCOUNT_SID syscall.Errno = 1257 - ERROR_NON_DOMAIN_SID syscall.Errno = 1258 - ERROR_APPHELP_BLOCK syscall.Errno = 1259 - ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260 - ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261 - ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262 - ERROR_PKINIT_FAILURE syscall.Errno = 1263 - ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264 - ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265 - ERROR_MACHINE_LOCKED syscall.Errno = 1271 - ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272 - ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273 - ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274 - ERROR_DRIVER_BLOCKED syscall.Errno = 1275 - ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276 - ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277 - ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278 - ERROR_RECOVERY_FAILURE syscall.Errno = 1279 - ERROR_ALREADY_FIBER syscall.Errno = 1280 - ERROR_ALREADY_THREAD syscall.Errno = 1281 - ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282 - ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283 - ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284 - ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285 - ERROR_VDM_DISALLOWED syscall.Errno = 1286 - ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287 - ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288 - ERROR_BEYOND_VDL syscall.Errno = 1289 - ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290 - ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291 - ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292 - ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293 - ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294 - ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295 - ERROR_CONTENT_BLOCKED syscall.Errno = 1296 - ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297 - ERROR_APP_HANG syscall.Errno = 1298 - ERROR_INVALID_LABEL syscall.Errno = 1299 - ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 - ERROR_SOME_NOT_MAPPED syscall.Errno = 1301 - ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302 - ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303 - ERROR_NULL_LM_PASSWORD syscall.Errno = 1304 - ERROR_UNKNOWN_REVISION syscall.Errno = 1305 - ERROR_REVISION_MISMATCH syscall.Errno = 1306 - ERROR_INVALID_OWNER syscall.Errno = 1307 - ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308 - ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309 - ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310 - ERROR_NO_LOGON_SERVERS syscall.Errno = 1311 - ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312 - ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313 - ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 - ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315 - ERROR_USER_EXISTS syscall.Errno = 1316 - ERROR_NO_SUCH_USER syscall.Errno = 1317 - ERROR_GROUP_EXISTS syscall.Errno = 1318 - ERROR_NO_SUCH_GROUP syscall.Errno = 1319 - ERROR_MEMBER_IN_GROUP syscall.Errno = 1320 - ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321 - ERROR_LAST_ADMIN syscall.Errno = 1322 - ERROR_WRONG_PASSWORD syscall.Errno = 1323 - ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324 - ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325 - ERROR_LOGON_FAILURE syscall.Errno = 1326 - ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327 - ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328 - ERROR_INVALID_WORKSTATION syscall.Errno = 1329 - ERROR_PASSWORD_EXPIRED syscall.Errno = 1330 - ERROR_ACCOUNT_DISABLED syscall.Errno = 1331 - ERROR_NONE_MAPPED syscall.Errno = 1332 - ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333 - ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334 - ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335 - ERROR_INVALID_ACL syscall.Errno = 1336 - ERROR_INVALID_SID syscall.Errno = 1337 - ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338 - ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340 - ERROR_SERVER_DISABLED syscall.Errno = 1341 - ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342 - ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343 - ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344 - ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345 - ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346 - ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347 - ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348 - ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349 - ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350 - ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351 - ERROR_INVALID_SERVER_STATE syscall.Errno = 1352 - ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353 - ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354 - ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355 - ERROR_DOMAIN_EXISTS syscall.Errno = 1356 - ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357 - ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358 - ERROR_INTERNAL_ERROR syscall.Errno = 1359 - ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360 - ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361 - ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362 - ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363 - ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364 - ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365 - ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366 - ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367 - ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368 - ERROR_RXACT_INVALID_STATE syscall.Errno = 1369 - ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370 - ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371 - ERROR_SPECIAL_GROUP syscall.Errno = 1372 - ERROR_SPECIAL_USER syscall.Errno = 1373 - ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374 - ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375 - ERROR_NO_SUCH_ALIAS syscall.Errno = 1376 - ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377 - ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378 - ERROR_ALIAS_EXISTS syscall.Errno = 1379 - ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380 - ERROR_TOO_MANY_SECRETS syscall.Errno = 1381 - ERROR_SECRET_TOO_LONG syscall.Errno = 1382 - ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383 - ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384 - ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385 - ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386 - ERROR_NO_SUCH_MEMBER syscall.Errno = 1387 - ERROR_INVALID_MEMBER syscall.Errno = 1388 - ERROR_TOO_MANY_SIDS syscall.Errno = 1389 - ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390 - ERROR_NO_INHERITANCE syscall.Errno = 1391 - ERROR_FILE_CORRUPT syscall.Errno = 1392 - ERROR_DISK_CORRUPT syscall.Errno = 1393 - ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394 - ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395 - ERROR_WRONG_TARGET_NAME syscall.Errno = 1396 - ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397 - ERROR_TIME_SKEW syscall.Errno = 1398 - ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399 - ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400 - ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401 - ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402 - ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403 - ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404 - ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405 - ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406 - ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407 - ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408 - ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409 - ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410 - ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411 - ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412 - ERROR_INVALID_INDEX syscall.Errno = 1413 - ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414 - ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415 - ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416 - ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417 - ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418 - ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419 - ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420 - ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421 - ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422 - ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423 - ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424 - ERROR_DC_NOT_FOUND syscall.Errno = 1425 - ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426 - ERROR_INVALID_FILTER_PROC syscall.Errno = 1427 - ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428 - ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429 - ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430 - ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431 - ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432 - ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433 - ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434 - ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435 - ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436 - ERROR_NO_SYSTEM_MENU syscall.Errno = 1437 - ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438 - ERROR_INVALID_SPI_VALUE syscall.Errno = 1439 - ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440 - ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441 - ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442 - ERROR_INVALID_GW_COMMAND syscall.Errno = 1443 - ERROR_INVALID_THREAD_ID syscall.Errno = 1444 - ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445 - ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446 - ERROR_NO_SCROLLBARS syscall.Errno = 1447 - ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448 - ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449 - ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450 - ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451 - ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452 - ERROR_WORKING_SET_QUOTA syscall.Errno = 1453 - ERROR_PAGEFILE_QUOTA syscall.Errno = 1454 - ERROR_COMMITMENT_LIMIT syscall.Errno = 1455 - ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456 - ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457 - ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458 - ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459 - ERROR_TIMEOUT syscall.Errno = 1460 - ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461 - ERROR_INCORRECT_SIZE syscall.Errno = 1462 - ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463 - ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464 - ERROR_XML_PARSE_ERROR syscall.Errno = 1465 - ERROR_XMLDSIG_ERROR syscall.Errno = 1466 - ERROR_RESTART_APPLICATION syscall.Errno = 1467 - ERROR_WRONG_COMPARTMENT syscall.Errno = 1468 - ERROR_AUTHIP_FAILURE syscall.Errno = 1469 - ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470 - ERROR_NOT_GUI_PROCESS syscall.Errno = 1471 - ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500 - ERROR_EVENTLOG_CANT_START syscall.Errno = 1501 - ERROR_LOG_FILE_FULL syscall.Errno = 1502 - ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503 - ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504 - ERROR_JOB_NO_CONTAINER syscall.Errno = 1505 - ERROR_INVALID_TASK_NAME syscall.Errno = 1550 - ERROR_INVALID_TASK_INDEX syscall.Errno = 1551 - ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552 - ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601 - ERROR_INSTALL_USEREXIT syscall.Errno = 1602 - ERROR_INSTALL_FAILURE syscall.Errno = 1603 - ERROR_INSTALL_SUSPEND syscall.Errno = 1604 - ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605 - ERROR_UNKNOWN_FEATURE syscall.Errno = 1606 - ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607 - ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608 - ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609 - ERROR_BAD_CONFIGURATION syscall.Errno = 1610 - ERROR_INDEX_ABSENT syscall.Errno = 1611 - ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612 - ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613 - ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614 - ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615 - ERROR_INVALID_FIELD syscall.Errno = 1616 - ERROR_DEVICE_REMOVED syscall.Errno = 1617 - ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618 - ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619 - ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620 - ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621 - ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622 - ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623 - ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624 - ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625 - ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626 - ERROR_FUNCTION_FAILED syscall.Errno = 1627 - ERROR_INVALID_TABLE syscall.Errno = 1628 - ERROR_DATATYPE_MISMATCH syscall.Errno = 1629 - ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630 - ERROR_CREATE_FAILED syscall.Errno = 1631 - ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632 - ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633 - ERROR_INSTALL_NOTUSED syscall.Errno = 1634 - ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635 - ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636 - ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637 - ERROR_PRODUCT_VERSION syscall.Errno = 1638 - ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639 - ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640 - ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641 - ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642 - ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643 - ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644 - ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645 - ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646 - ERROR_UNKNOWN_PATCH syscall.Errno = 1647 - ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648 - ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649 - ERROR_INVALID_PATCH_XML syscall.Errno = 1650 - ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651 - ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652 - ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653 - ERROR_INSTALL_REJECTED syscall.Errno = 1654 - ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655 - ERROR_NOT_SAME_OBJECT syscall.Errno = 1656 - ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657 - ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660 - ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661 - RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700 - RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701 - RPC_S_INVALID_BINDING syscall.Errno = 1702 - RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703 - RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704 - RPC_S_INVALID_STRING_UUID syscall.Errno = 1705 - RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706 - RPC_S_INVALID_NET_ADDR syscall.Errno = 1707 - RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708 - RPC_S_INVALID_TIMEOUT syscall.Errno = 1709 - RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710 - RPC_S_ALREADY_REGISTERED syscall.Errno = 1711 - RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712 - RPC_S_ALREADY_LISTENING syscall.Errno = 1713 - RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714 - RPC_S_NOT_LISTENING syscall.Errno = 1715 - RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716 - RPC_S_UNKNOWN_IF syscall.Errno = 1717 - RPC_S_NO_BINDINGS syscall.Errno = 1718 - RPC_S_NO_PROTSEQS syscall.Errno = 1719 - RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720 - RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721 - RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722 - RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723 - RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724 - RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725 - RPC_S_CALL_FAILED syscall.Errno = 1726 - RPC_S_CALL_FAILED_DNE syscall.Errno = 1727 - RPC_S_PROTOCOL_ERROR syscall.Errno = 1728 - RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729 - RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730 - RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732 - RPC_S_INVALID_TAG syscall.Errno = 1733 - RPC_S_INVALID_BOUND syscall.Errno = 1734 - RPC_S_NO_ENTRY_NAME syscall.Errno = 1735 - RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736 - RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737 - RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739 - RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740 - RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741 - RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742 - RPC_S_STRING_TOO_LONG syscall.Errno = 1743 - RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744 - RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745 - RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746 - RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747 - RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748 - RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749 - RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750 - EPT_S_INVALID_ENTRY syscall.Errno = 1751 - EPT_S_CANT_PERFORM_OP syscall.Errno = 1752 - EPT_S_NOT_REGISTERED syscall.Errno = 1753 - RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754 - RPC_S_INCOMPLETE_NAME syscall.Errno = 1755 - RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756 - RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757 - RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758 - RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759 - RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760 - RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761 - RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762 - RPC_S_INVALID_NAF_ID syscall.Errno = 1763 - RPC_S_CANNOT_SUPPORT syscall.Errno = 1764 - RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765 - RPC_S_INTERNAL_ERROR syscall.Errno = 1766 - RPC_S_ZERO_DIVIDE syscall.Errno = 1767 - RPC_S_ADDRESS_ERROR syscall.Errno = 1768 - RPC_S_FP_DIV_ZERO syscall.Errno = 1769 - RPC_S_FP_UNDERFLOW syscall.Errno = 1770 - RPC_S_FP_OVERFLOW syscall.Errno = 1771 - RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772 - RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773 - RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774 - RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775 - RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777 - RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778 - RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779 - RPC_X_NULL_REF_POINTER syscall.Errno = 1780 - RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781 - RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782 - RPC_X_BAD_STUB_DATA syscall.Errno = 1783 - ERROR_INVALID_USER_BUFFER syscall.Errno = 1784 - ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785 - ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786 - ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787 - ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788 - ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789 - ERROR_TRUST_FAILURE syscall.Errno = 1790 - RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791 - ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792 - ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793 - ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794 - ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795 - ERROR_UNKNOWN_PORT syscall.Errno = 1796 - ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797 - ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798 - ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799 - ERROR_INVALID_PRIORITY syscall.Errno = 1800 - ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801 - ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802 - ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803 - ERROR_INVALID_DATATYPE syscall.Errno = 1804 - ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805 - RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806 - ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807 - ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808 - ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809 - ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810 - ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811 - ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812 - ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813 - ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814 - ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815 - ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816 - RPC_S_NO_INTERFACES syscall.Errno = 1817 - RPC_S_CALL_CANCELLED syscall.Errno = 1818 - RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819 - RPC_S_COMM_FAILURE syscall.Errno = 1820 - RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821 - RPC_S_NO_PRINC_NAME syscall.Errno = 1822 - RPC_S_NOT_RPC_ERROR syscall.Errno = 1823 - RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824 - RPC_S_SEC_PKG_ERROR syscall.Errno = 1825 - RPC_S_NOT_CANCELLED syscall.Errno = 1826 - RPC_X_INVALID_ES_ACTION syscall.Errno = 1827 - RPC_X_WRONG_ES_VERSION syscall.Errno = 1828 - RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829 - RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830 - RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831 - RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832 - RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833 - RPC_S_DO_NOT_DISTURB syscall.Errno = 1834 - RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835 - RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836 - RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898 - EPT_S_CANT_CREATE syscall.Errno = 1899 - RPC_S_INVALID_OBJECT syscall.Errno = 1900 - ERROR_INVALID_TIME syscall.Errno = 1901 - ERROR_INVALID_FORM_NAME syscall.Errno = 1902 - ERROR_INVALID_FORM_SIZE syscall.Errno = 1903 - ERROR_ALREADY_WAITING syscall.Errno = 1904 - ERROR_PRINTER_DELETED syscall.Errno = 1905 - ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906 - ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907 - ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908 - ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909 - OR_INVALID_OXID syscall.Errno = 1910 - OR_INVALID_OID syscall.Errno = 1911 - OR_INVALID_SET syscall.Errno = 1912 - RPC_S_SEND_INCOMPLETE syscall.Errno = 1913 - RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914 - RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915 - RPC_X_PIPE_CLOSED syscall.Errno = 1916 - RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917 - RPC_X_PIPE_EMPTY syscall.Errno = 1918 - ERROR_NO_SITENAME syscall.Errno = 1919 - ERROR_CANT_ACCESS_FILE syscall.Errno = 1920 - ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921 - RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922 - RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923 - RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924 - RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925 - RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926 - RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927 - RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928 - RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929 - ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930 - ERROR_CONTEXT_EXPIRED syscall.Errno = 1931 - ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932 - ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933 - ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934 - ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935 - ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936 - ERROR_NTLM_BLOCKED syscall.Errno = 1937 - ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938 - ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939 - ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000 - ERROR_BAD_DRIVER syscall.Errno = 2001 - ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002 - ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003 - ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004 - ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005 - ERROR_INVALID_CMM syscall.Errno = 2010 - ERROR_INVALID_PROFILE syscall.Errno = 2011 - ERROR_TAG_NOT_FOUND syscall.Errno = 2012 - ERROR_TAG_NOT_PRESENT syscall.Errno = 2013 - ERROR_DUPLICATE_TAG syscall.Errno = 2014 - ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015 - ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016 - ERROR_INVALID_COLORSPACE syscall.Errno = 2017 - ERROR_ICM_NOT_ENABLED syscall.Errno = 2018 - ERROR_DELETING_ICM_XFORM syscall.Errno = 2019 - ERROR_INVALID_TRANSFORM syscall.Errno = 2020 - ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021 - ERROR_INVALID_COLORINDEX syscall.Errno = 2022 - ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023 - ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108 - ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109 - ERROR_BAD_USERNAME syscall.Errno = 2202 - ERROR_NOT_CONNECTED syscall.Errno = 2250 - ERROR_OPEN_FILES syscall.Errno = 2401 - ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402 - ERROR_DEVICE_IN_USE syscall.Errno = 2404 - ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000 - ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001 - ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002 - ERROR_SPL_NO_STARTDOC syscall.Errno = 3003 - ERROR_SPL_NO_ADDJOB syscall.Errno = 3004 - ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005 - ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006 - ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007 - ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008 - ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009 - ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010 - ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011 - ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012 - ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013 - ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014 - ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015 - ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016 - ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017 - ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018 - ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019 - ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020 - ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021 - ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022 - ERROR_REQUEST_PAUSED syscall.Errno = 3050 - ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060 - ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061 - ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062 - ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063 - ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064 - ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065 - ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066 - ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067 - ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950 - ERROR_WINS_INTERNAL syscall.Errno = 4000 - ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001 - ERROR_STATIC_INIT syscall.Errno = 4002 - ERROR_INC_BACKUP syscall.Errno = 4003 - ERROR_FULL_BACKUP syscall.Errno = 4004 - ERROR_REC_NON_EXISTENT syscall.Errno = 4005 - ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006 - PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050 - PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051 - PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052 - PEERDIST_ERROR_NO_MORE syscall.Errno = 4053 - PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054 - PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055 - PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056 - PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057 - PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058 - PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059 - PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060 - PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061 - PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062 - PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063 - PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064 - PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065 - PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066 - ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100 - ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200 - ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201 - ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202 - ERROR_WMI_TRY_AGAIN syscall.Errno = 4203 - ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204 - ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205 - ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206 - ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207 - ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208 - ERROR_WMI_DP_FAILED syscall.Errno = 4209 - ERROR_WMI_INVALID_MOF syscall.Errno = 4210 - ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211 - ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212 - ERROR_WMI_READ_ONLY syscall.Errno = 4213 - ERROR_WMI_SET_FAILURE syscall.Errno = 4214 - ERROR_NOT_APPCONTAINER syscall.Errno = 4250 - ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251 - ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252 - ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253 - ERROR_INVALID_MEDIA syscall.Errno = 4300 - ERROR_INVALID_LIBRARY syscall.Errno = 4301 - ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302 - ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303 - ERROR_MEDIA_OFFLINE syscall.Errno = 4304 - ERROR_LIBRARY_OFFLINE syscall.Errno = 4305 - ERROR_EMPTY syscall.Errno = 4306 - ERROR_NOT_EMPTY syscall.Errno = 4307 - ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308 - ERROR_RESOURCE_DISABLED syscall.Errno = 4309 - ERROR_INVALID_CLEANER syscall.Errno = 4310 - ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311 - ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312 - ERROR_DATABASE_FAILURE syscall.Errno = 4313 - ERROR_DATABASE_FULL syscall.Errno = 4314 - ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315 - ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316 - ERROR_INVALID_OPERATION syscall.Errno = 4317 - ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318 - ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319 - ERROR_REQUEST_REFUSED syscall.Errno = 4320 - ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321 - ERROR_LIBRARY_FULL syscall.Errno = 4322 - ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323 - ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324 - ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325 - ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326 - ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327 - ERROR_TRANSPORT_FULL syscall.Errno = 4328 - ERROR_CONTROLLING_IEPORT syscall.Errno = 4329 - ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330 - ERROR_CLEANER_SLOT_SET syscall.Errno = 4331 - ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332 - ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333 - ERROR_UNEXPECTED_OMID syscall.Errno = 4334 - ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335 - ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336 - ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337 - ERROR_INDIGENOUS_TYPE syscall.Errno = 4338 - ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339 - ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340 - ERROR_IEPORT_FULL syscall.Errno = 4341 - ERROR_FILE_OFFLINE syscall.Errno = 4350 - ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351 - ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352 - ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390 - ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391 - ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392 - ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393 - ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394 - ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395 - ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400 - ERROR_APP_DATA_EXPIRED syscall.Errno = 4401 - ERROR_APP_DATA_CORRUPT syscall.Errno = 4402 - ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403 - ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404 - ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420 - ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421 - ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422 - ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423 - ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424 - ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425 - ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426 - ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427 - ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428 - ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429 - ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430 - ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431 - ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432 - ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433 - ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434 - ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435 - ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440 - ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441 - ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442 - ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443 - ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444 - ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445 - ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446 - ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447 - ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448 - ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500 - ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550 - ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 - ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 - ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 - ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 - ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 - ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 - ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571 - ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572 - ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573 - ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574 - ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575 - ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576 - ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001 - ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002 - ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003 - ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004 - ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005 - ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006 - ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007 - ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008 - ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009 - ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010 - ERROR_OBJECT_IN_LIST syscall.Errno = 5011 - ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012 - ERROR_GROUP_NOT_FOUND syscall.Errno = 5013 - ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014 - ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015 - ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016 - ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017 - ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018 - ERROR_RESOURCE_ONLINE syscall.Errno = 5019 - ERROR_QUORUM_RESOURCE syscall.Errno = 5020 - ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021 - ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022 - ERROR_INVALID_STATE syscall.Errno = 5023 - ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024 - ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025 - ERROR_CORE_RESOURCE syscall.Errno = 5026 - ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027 - ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028 - ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029 - ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030 - ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031 - ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032 - ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033 - ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034 - ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035 - ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036 - ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037 - ERROR_RESOURCE_FAILED syscall.Errno = 5038 - ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039 - ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040 - ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041 - ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042 - ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043 - ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044 - ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045 - ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046 - ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047 - ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048 - ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049 - ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050 - ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051 - ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052 - ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053 - ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054 - ERROR_CLUSTER_NODE_UP syscall.Errno = 5056 - ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057 - ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058 - ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059 - ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060 - ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061 - ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062 - ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063 - ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064 - ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065 - ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066 - ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067 - ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068 - ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069 - ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070 - ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071 - ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072 - ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073 - ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074 - ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075 - ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076 - ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077 - ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078 - ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079 - ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080 - ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081 - ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082 - ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083 - ERROR_RESMON_INVALID_STATE syscall.Errno = 5084 - ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085 - ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086 - ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087 - ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088 - ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089 - ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090 - ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890 - ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891 - ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892 - ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893 - ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894 - ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895 - ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896 - ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897 - ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898 - ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899 - ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900 - ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901 - ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902 - ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903 - ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904 - ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905 - ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906 - ERROR_CLUSTER_POISONED syscall.Errno = 5907 - ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908 - ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909 - ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910 - ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911 - ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912 - ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913 - ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914 - ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915 - ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916 - ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917 - ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918 - ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919 - ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920 - ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921 - ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922 - ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923 - ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924 - ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925 - ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926 - ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927 - ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928 - ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929 - ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930 - ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931 - ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932 - ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933 - ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934 - ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935 - ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936 - ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937 - ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938 - ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939 - ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940 - ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941 - ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942 - ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943 - ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944 - ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945 - ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946 - ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947 - ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948 - ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949 - ERROR_NON_CSV_PATH syscall.Errno = 5950 - ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951 - ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952 - ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953 - ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954 - ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955 - ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956 - ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957 - ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958 - ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959 - ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960 - ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961 - ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962 - ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963 - ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964 - ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965 - ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966 - ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967 - ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968 - ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969 - ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970 - ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971 - ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972 - ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973 - ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974 - ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975 - ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976 - ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977 - ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978 - ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979 - ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980 - ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981 - ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982 - ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983 - ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984 - ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985 - ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986 - ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987 - ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988 - ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989 - ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990 - ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991 - ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992 - ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993 - ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994 - ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995 - ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996 - ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997 - ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998 - ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999 - ERROR_ENCRYPTION_FAILED syscall.Errno = 6000 - ERROR_DECRYPTION_FAILED syscall.Errno = 6001 - ERROR_FILE_ENCRYPTED syscall.Errno = 6002 - ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003 - ERROR_NO_EFS syscall.Errno = 6004 - ERROR_WRONG_EFS syscall.Errno = 6005 - ERROR_NO_USER_KEYS syscall.Errno = 6006 - ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007 - ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008 - ERROR_FILE_READ_ONLY syscall.Errno = 6009 - ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010 - ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011 - ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012 - ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013 - ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014 - ERROR_EFS_DISABLED syscall.Errno = 6015 - ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016 - ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017 - ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018 - ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019 - ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 - ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 - ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 - ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 - SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 - ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 - ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601 - ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602 - ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603 - ERROR_LOG_INVALID_RANGE syscall.Errno = 6604 - ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605 - ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606 - ERROR_LOG_RESTART_INVALID syscall.Errno = 6607 - ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608 - ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609 - ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610 - ERROR_LOG_NO_RESTART syscall.Errno = 6611 - ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612 - ERROR_LOG_METADATA_INVALID syscall.Errno = 6613 - ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614 - ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615 - ERROR_LOG_CANT_DELETE syscall.Errno = 6616 - ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617 - ERROR_LOG_START_OF_LOG syscall.Errno = 6618 - ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619 - ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620 - ERROR_LOG_POLICY_INVALID syscall.Errno = 6621 - ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622 - ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623 - ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624 - ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625 - ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626 - ERROR_LOG_TAIL_INVALID syscall.Errno = 6627 - ERROR_LOG_FULL syscall.Errno = 6628 - ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629 - ERROR_LOG_MULTIPLEXED syscall.Errno = 6630 - ERROR_LOG_DEDICATED syscall.Errno = 6631 - ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632 - ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633 - ERROR_LOG_EPHEMERAL syscall.Errno = 6634 - ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635 - ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636 - ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637 - ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638 - ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639 - ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640 - ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641 - ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642 - ERROR_LOG_STATE_INVALID syscall.Errno = 6643 - ERROR_LOG_PINNED syscall.Errno = 6644 - ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645 - ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646 - ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647 - ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648 - ERROR_INVALID_TRANSACTION syscall.Errno = 6700 - ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701 - ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702 - ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703 - ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704 - ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705 - ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706 - ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707 - ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708 - ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709 - ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710 - ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711 - ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712 - ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713 - ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714 - ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715 - ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716 - ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717 - ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718 - ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719 - ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720 - ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721 - ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722 - ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723 - ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724 - ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725 - ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726 - ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727 - ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728 - ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729 - ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730 - ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731 - ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800 - ERROR_RM_NOT_ACTIVE syscall.Errno = 6801 - ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802 - ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803 - ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805 - ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806 - ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807 - ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808 - ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809 - ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810 - ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811 - ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812 - ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814 - ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815 - ERROR_NO_TXF_METADATA syscall.Errno = 6816 - ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817 - ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818 - ERROR_RM_DISCONNECTED syscall.Errno = 6819 - ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820 - ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821 - ERROR_RM_ALREADY_STARTED syscall.Errno = 6822 - ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823 - ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824 - ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825 - ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826 - ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827 - ERROR_TM_VOLATILE syscall.Errno = 6828 - ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829 - ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830 - ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831 - ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832 - ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833 - ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834 - ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835 - ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836 - ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837 - ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838 - ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839 - ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840 - ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841 - ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842 - ERROR_DATA_LOST_REPAIR syscall.Errno = 6843 - ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844 - ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845 - ERROR_FLOATED_SECTION syscall.Errno = 6846 - ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847 - ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848 - ERROR_BAD_CLUSTERS syscall.Errno = 6849 - ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850 - ERROR_VOLUME_DIRTY syscall.Errno = 6851 - ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852 - ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853 - ERROR_EXPIRED_HANDLE syscall.Errno = 6854 - ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855 - ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001 - ERROR_CTX_INVALID_PD syscall.Errno = 7002 - ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003 - ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004 - ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005 - ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006 - ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007 - ERROR_CTX_NO_OUTBUF syscall.Errno = 7008 - ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009 - ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010 - ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011 - ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012 - ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013 - ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014 - ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015 - ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016 - ERROR_CTX_TD_ERROR syscall.Errno = 7017 - ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022 - ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023 - ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024 - ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025 - ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035 - ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037 - ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038 - ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040 - ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041 - ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042 - ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044 - ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045 - ERROR_CTX_INVALID_WD syscall.Errno = 7049 - ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050 - ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051 - ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052 - ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053 - ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054 - ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055 - ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056 - ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057 - ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058 - ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059 - ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060 - ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061 - ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062 - ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063 - ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064 - ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065 - ERROR_CTX_CDM_CONNECT syscall.Errno = 7066 - ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067 - ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068 - ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069 - ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070 - FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001 - FRS_ERR_STARTING_SERVICE syscall.Errno = 8002 - FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003 - FRS_ERR_INTERNAL_API syscall.Errno = 8004 - FRS_ERR_INTERNAL syscall.Errno = 8005 - FRS_ERR_SERVICE_COMM syscall.Errno = 8006 - FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007 - FRS_ERR_AUTHENTICATION syscall.Errno = 8008 - FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009 - FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010 - FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011 - FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012 - FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013 - FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014 - FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015 - FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016 - FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017 - DS_S_SUCCESS = ERROR_SUCCESS - ERROR_DS_NOT_INSTALLED syscall.Errno = 8200 - ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201 - ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202 - ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203 - ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204 - ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205 - ERROR_DS_BUSY syscall.Errno = 8206 - ERROR_DS_UNAVAILABLE syscall.Errno = 8207 - ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208 - ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209 - ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210 - ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211 - ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212 - ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213 - ERROR_DS_CANT_ON_RDN syscall.Errno = 8214 - ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215 - ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216 - ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217 - ERROR_SHARED_POLICY syscall.Errno = 8218 - ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219 - ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220 - ERROR_PROMOTION_ACTIVE syscall.Errno = 8221 - ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222 - ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224 - ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225 - ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226 - ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227 - ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228 - ERROR_DS_COMPARE_FALSE syscall.Errno = 8229 - ERROR_DS_COMPARE_TRUE syscall.Errno = 8230 - ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231 - ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232 - ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233 - ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234 - ERROR_DS_REFERRAL syscall.Errno = 8235 - ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236 - ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237 - ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238 - ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239 - ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240 - ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241 - ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242 - ERROR_DS_IS_LEAF syscall.Errno = 8243 - ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244 - ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245 - ERROR_DS_LOOP_DETECT syscall.Errno = 8246 - ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247 - ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248 - ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249 - ERROR_DS_SERVER_DOWN syscall.Errno = 8250 - ERROR_DS_LOCAL_ERROR syscall.Errno = 8251 - ERROR_DS_ENCODING_ERROR syscall.Errno = 8252 - ERROR_DS_DECODING_ERROR syscall.Errno = 8253 - ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254 - ERROR_DS_PARAM_ERROR syscall.Errno = 8255 - ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256 - ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257 - ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258 - ERROR_DS_CLIENT_LOOP syscall.Errno = 8259 - ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260 - ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261 - ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262 - ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263 - ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301 - ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302 - ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303 - ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304 - ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305 - ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306 - ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307 - ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308 - ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309 - ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310 - ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311 - ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312 - ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313 - ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314 - ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315 - ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316 - ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317 - ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318 - ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320 - ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321 - ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322 - ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323 - ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324 - ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325 - ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326 - ERROR_DS_NO_CHAINING syscall.Errno = 8327 - ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328 - ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329 - ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330 - ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331 - ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332 - ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333 - ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334 - ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335 - ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336 - ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337 - ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338 - ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339 - ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340 - ERROR_DS_GENERIC_ERROR syscall.Errno = 8341 - ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342 - ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343 - ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344 - ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345 - ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346 - ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347 - ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348 - ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349 - ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350 - ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351 - ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352 - ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353 - ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354 - ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355 - ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356 - ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357 - ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358 - ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359 - ERROR_DS_INVALID_DMD syscall.Errno = 8360 - ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361 - ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362 - ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363 - ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364 - ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365 - ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366 - ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367 - ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368 - ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369 - ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370 - ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371 - ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372 - ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373 - ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374 - ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375 - ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376 - ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377 - ERROR_DS_DUP_RDN syscall.Errno = 8378 - ERROR_DS_DUP_OID syscall.Errno = 8379 - ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380 - ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381 - ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382 - ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383 - ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384 - ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385 - ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386 - ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387 - ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388 - ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389 - ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390 - ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391 - ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392 - ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393 - ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394 - ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395 - ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396 - ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397 - ERROR_DS_CANT_DELETE syscall.Errno = 8398 - ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399 - ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400 - ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401 - ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402 - ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403 - ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404 - ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405 - ERROR_DS_MISSING_SUPREF syscall.Errno = 8406 - ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407 - ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408 - ERROR_DS_DATABASE_ERROR syscall.Errno = 8409 - ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410 - ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411 - ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412 - ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413 - ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414 - ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415 - ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416 - ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417 - ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418 - ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419 - ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420 - ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421 - ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422 - ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423 - ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424 - ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425 - ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426 - ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427 - ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428 - ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429 - ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430 - ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431 - ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432 - ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433 - ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434 - ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435 - ERROR_DS_DRA_GENERIC syscall.Errno = 8436 - ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437 - ERROR_DS_DRA_BUSY syscall.Errno = 8438 - ERROR_DS_DRA_BAD_DN syscall.Errno = 8439 - ERROR_DS_DRA_BAD_NC syscall.Errno = 8440 - ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441 - ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442 - ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443 - ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444 - ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445 - ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446 - ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447 - ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448 - ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449 - ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450 - ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451 - ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452 - ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453 - ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454 - ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455 - ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456 - ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457 - ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458 - ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459 - ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460 - ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461 - ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462 - ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463 - ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464 - ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465 - ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466 - ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467 - ERROR_DS_DUP_LINK_ID syscall.Errno = 8468 - ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469 - ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470 - ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471 - ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472 - ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473 - ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474 - ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475 - ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476 - ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477 - ERROR_DS_DS_REQUIRED syscall.Errno = 8478 - ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479 - ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480 - ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481 - ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482 - ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483 - ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484 - ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485 - ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486 - ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487 - ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488 - ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489 - ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490 - ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491 - ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492 - ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493 - ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494 - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495 - ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496 - ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497 - ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498 - ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499 - ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500 - ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501 - ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502 - ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503 - ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504 - ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505 - ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506 - ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507 - ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508 - ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509 - ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510 - ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511 - ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512 - ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513 - ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514 - ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515 - ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516 - ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517 - ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518 - ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519 - ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520 - ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521 - ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522 - ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523 - ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524 - ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525 - ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526 - ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527 - ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528 - ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529 - ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530 - ERROR_DS_CANT_START syscall.Errno = 8531 - ERROR_DS_INIT_FAILURE syscall.Errno = 8532 - ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533 - ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534 - ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535 - ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536 - ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537 - ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538 - ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539 - ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540 - ERROR_SAM_INIT_FAILURE syscall.Errno = 8541 - ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542 - ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543 - ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544 - ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545 - ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546 - ERROR_DS_GC_REQUIRED syscall.Errno = 8547 - ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548 - ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549 - ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550 - ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551 - ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552 - ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553 - ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554 - ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555 - ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556 - ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557 - ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558 - ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559 - ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560 - ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561 - ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562 - ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563 - ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564 - ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565 - ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566 - ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567 - ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568 - ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569 - ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570 - ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571 - ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572 - ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573 - ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574 - ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575 - ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576 - ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577 - ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578 - ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579 - ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580 - ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581 - ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582 - ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583 - ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584 - ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585 - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586 - ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587 - ERROR_DS_NOT_CLOSEST syscall.Errno = 8588 - ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589 - ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590 - ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591 - ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592 - ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593 - ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594 - ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595 - ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596 - ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597 - ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598 - ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599 - ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600 - ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601 - ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602 - ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603 - ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604 - ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605 - ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606 - ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607 - ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608 - ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609 - ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610 - ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611 - ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612 - ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613 - ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614 - ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615 - ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616 - ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617 - ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618 - ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619 - ERROR_NO_SECRETS syscall.Errno = 8620 - ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621 - ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622 - ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623 - ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624 - ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625 - ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626 - ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627 - ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628 - ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629 - ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630 - ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631 - ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632 - ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633 - ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634 - ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635 - ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636 - ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637 - ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638 - ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639 - ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640 - ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641 - ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642 - ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643 - ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644 - ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645 - ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646 - ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647 - ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648 - ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649 - ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650 - DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000 - DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS - DNS_ERROR_MASK syscall.Errno = 0x00002328 - DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001 - DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002 - DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003 - DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004 - DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005 - DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006 - DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007 - DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008 - DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009 - DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010 - DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016 - DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017 - DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018 - DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME - DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100 - DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101 - DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102 - DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103 - DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104 - DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105 - DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106 - DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107 - DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108 - DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109 - DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110 - DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111 - DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112 - DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113 - DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114 - DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115 - DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116 - DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117 - DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118 - DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119 - DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120 - DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121 - DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122 - DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123 - DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124 - DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125 - DNS_ERROR_INVALID_XML syscall.Errno = 9126 - DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127 - DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128 - DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129 - DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130 - DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500 - DNS_INFO_NO_RECORDS syscall.Errno = 9501 - DNS_ERROR_BAD_PACKET syscall.Errno = 9502 - DNS_ERROR_NO_PACKET syscall.Errno = 9503 - DNS_ERROR_RCODE syscall.Errno = 9504 - DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505 - DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET - DNS_REQUEST_PENDING syscall.Errno = 9506 - DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY - DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME - DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA - DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550 - DNS_ERROR_INVALID_TYPE syscall.Errno = 9551 - DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552 - DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553 - DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554 - DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555 - DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556 - DNS_STATUS_FQDN syscall.Errno = 9557 - DNS_STATUS_DOTTED_NAME syscall.Errno = 9558 - DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559 - DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560 - DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561 - DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562 - DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563 - DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564 - DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565 - DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566 - DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567 - DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568 - DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569 - DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570 - DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571 - DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572 - DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573 - DNS_ERROR_ZONE_BASE syscall.Errno = 9600 - DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601 - DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602 - DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603 - DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604 - DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605 - DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606 - DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607 - DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608 - DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609 - DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610 - DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611 - DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612 - DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613 - DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614 - DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615 - DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616 - DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617 - DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618 - DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619 - DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620 - DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621 - DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622 - DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650 - DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651 - DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652 - DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653 - DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654 - DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655 - DNS_ERROR_DATABASE_BASE syscall.Errno = 9700 - DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701 - DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702 - DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703 - DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704 - DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705 - DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706 - DNS_ERROR_CNAME_LOOP syscall.Errno = 9707 - DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708 - DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709 - DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710 - DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711 - DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712 - DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713 - DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714 - DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715 - DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716 - DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717 - DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718 - DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719 - DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720 - DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721 - DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722 - DNS_ERROR_OPERATION_BASE syscall.Errno = 9750 - DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751 - DNS_ERROR_AXFR syscall.Errno = 9752 - DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753 - DNS_ERROR_SECURE_BASE syscall.Errno = 9800 - DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801 - DNS_ERROR_SETUP_BASE syscall.Errno = 9850 - DNS_ERROR_NO_TCPIP syscall.Errno = 9851 - DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852 - DNS_ERROR_DP_BASE syscall.Errno = 9900 - DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901 - DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902 - DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903 - DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904 - DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905 - DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906 - DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911 - DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912 - DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913 - DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914 - DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915 - DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916 - DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917 - DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921 - DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922 - DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923 - DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924 - DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925 - DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951 - DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952 - DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953 - DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954 - DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955 - DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956 - DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957 - DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958 - DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959 - DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960 - DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961 - DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962 - DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963 - DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971 - DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972 - DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973 - DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974 - DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975 - DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976 - DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977 - DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978 - DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979 - DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980 - DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981 - DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982 - DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983 - DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984 - DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985 - DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986 - DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987 - DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988 - DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989 - DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990 - DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991 - DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992 - DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993 - DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994 - DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995 - DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996 - WSABASEERR syscall.Errno = 10000 - WSAEINTR syscall.Errno = 10004 - WSAEBADF syscall.Errno = 10009 - WSAEACCES syscall.Errno = 10013 - WSAEFAULT syscall.Errno = 10014 - WSAEINVAL syscall.Errno = 10022 - WSAEMFILE syscall.Errno = 10024 - WSAEWOULDBLOCK syscall.Errno = 10035 - WSAEINPROGRESS syscall.Errno = 10036 - WSAEALREADY syscall.Errno = 10037 - WSAENOTSOCK syscall.Errno = 10038 - WSAEDESTADDRREQ syscall.Errno = 10039 - WSAEMSGSIZE syscall.Errno = 10040 - WSAEPROTOTYPE syscall.Errno = 10041 - WSAENOPROTOOPT syscall.Errno = 10042 - WSAEPROTONOSUPPORT syscall.Errno = 10043 - WSAESOCKTNOSUPPORT syscall.Errno = 10044 - WSAEOPNOTSUPP syscall.Errno = 10045 - WSAEPFNOSUPPORT syscall.Errno = 10046 - WSAEAFNOSUPPORT syscall.Errno = 10047 - WSAEADDRINUSE syscall.Errno = 10048 - WSAEADDRNOTAVAIL syscall.Errno = 10049 - WSAENETDOWN syscall.Errno = 10050 - WSAENETUNREACH syscall.Errno = 10051 - WSAENETRESET syscall.Errno = 10052 - WSAECONNABORTED syscall.Errno = 10053 - WSAECONNRESET syscall.Errno = 10054 - WSAENOBUFS syscall.Errno = 10055 - WSAEISCONN syscall.Errno = 10056 - WSAENOTCONN syscall.Errno = 10057 - WSAESHUTDOWN syscall.Errno = 10058 - WSAETOOMANYREFS syscall.Errno = 10059 - WSAETIMEDOUT syscall.Errno = 10060 - WSAECONNREFUSED syscall.Errno = 10061 - WSAELOOP syscall.Errno = 10062 - WSAENAMETOOLONG syscall.Errno = 10063 - WSAEHOSTDOWN syscall.Errno = 10064 - WSAEHOSTUNREACH syscall.Errno = 10065 - WSAENOTEMPTY syscall.Errno = 10066 - WSAEPROCLIM syscall.Errno = 10067 - WSAEUSERS syscall.Errno = 10068 - WSAEDQUOT syscall.Errno = 10069 - WSAESTALE syscall.Errno = 10070 - WSAEREMOTE syscall.Errno = 10071 - WSASYSNOTREADY syscall.Errno = 10091 - WSAVERNOTSUPPORTED syscall.Errno = 10092 - WSANOTINITIALISED syscall.Errno = 10093 - WSAEDISCON syscall.Errno = 10101 - WSAENOMORE syscall.Errno = 10102 - WSAECANCELLED syscall.Errno = 10103 - WSAEINVALIDPROCTABLE syscall.Errno = 10104 - WSAEINVALIDPROVIDER syscall.Errno = 10105 - WSAEPROVIDERFAILEDINIT syscall.Errno = 10106 - WSASYSCALLFAILURE syscall.Errno = 10107 - WSASERVICE_NOT_FOUND syscall.Errno = 10108 - WSATYPE_NOT_FOUND syscall.Errno = 10109 - WSA_E_NO_MORE syscall.Errno = 10110 - WSA_E_CANCELLED syscall.Errno = 10111 - WSAEREFUSED syscall.Errno = 10112 - WSAHOST_NOT_FOUND syscall.Errno = 11001 - WSATRY_AGAIN syscall.Errno = 11002 - WSANO_RECOVERY syscall.Errno = 11003 - WSANO_DATA syscall.Errno = 11004 - WSA_QOS_RECEIVERS syscall.Errno = 11005 - WSA_QOS_SENDERS syscall.Errno = 11006 - WSA_QOS_NO_SENDERS syscall.Errno = 11007 - WSA_QOS_NO_RECEIVERS syscall.Errno = 11008 - WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009 - WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010 - WSA_QOS_POLICY_FAILURE syscall.Errno = 11011 - WSA_QOS_BAD_STYLE syscall.Errno = 11012 - WSA_QOS_BAD_OBJECT syscall.Errno = 11013 - WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014 - WSA_QOS_GENERIC_ERROR syscall.Errno = 11015 - WSA_QOS_ESERVICETYPE syscall.Errno = 11016 - WSA_QOS_EFLOWSPEC syscall.Errno = 11017 - WSA_QOS_EPROVSPECBUF syscall.Errno = 11018 - WSA_QOS_EFILTERSTYLE syscall.Errno = 11019 - WSA_QOS_EFILTERTYPE syscall.Errno = 11020 - WSA_QOS_EFILTERCOUNT syscall.Errno = 11021 - WSA_QOS_EOBJLENGTH syscall.Errno = 11022 - WSA_QOS_EFLOWCOUNT syscall.Errno = 11023 - WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024 - WSA_QOS_EPOLICYOBJ syscall.Errno = 11025 - WSA_QOS_EFLOWDESC syscall.Errno = 11026 - WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027 - WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028 - WSA_QOS_ESDMODEOBJ syscall.Errno = 11029 - WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030 - WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031 - WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032 - WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033 - ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000 - ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001 - ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002 - ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003 - ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004 - ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005 - ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006 - ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007 - ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008 - ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009 - ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010 - ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011 - ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012 - ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013 - ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014 - ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015 - ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016 - ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017 - ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018 - ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019 - ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020 - ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021 - ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022 - ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023 - WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024 - WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025 - ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800 - ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801 - ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802 - ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803 - ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804 - ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805 - ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806 - ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807 - ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808 - ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809 - ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810 - ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811 - ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812 - ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813 - ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814 - ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815 - ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816 - ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817 - ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818 - ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819 - ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820 - ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821 - ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822 - ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823 - ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824 - ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825 - ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826 - ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827 - ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828 - ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829 - ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830 - ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831 - ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832 - ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833 - ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834 - ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835 - ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836 - ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837 - ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838 - ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839 - ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840 - ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841 - ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842 - ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843 - ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844 - ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845 - ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846 - ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847 - ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848 - ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849 - ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850 - ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851 - ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852 - ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853 - ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854 - ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855 - ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856 - ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857 - ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858 - ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859 - ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860 - ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861 - ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862 - ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863 - ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864 - ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865 - ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866 - ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867 - ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868 - ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869 - ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870 - ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871 - ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872 - ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873 - ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874 - ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875 - ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876 - ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877 - ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878 - ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879 - ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880 - ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881 - ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882 - ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883 - ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884 - ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885 - ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886 - ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887 - ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888 - ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889 - ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890 - ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891 - ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892 - ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893 - ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894 - ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895 - ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896 - ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897 - ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898 - ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899 - ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900 - ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901 - ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902 - ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903 - ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904 - ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905 - ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906 - ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907 - ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908 - ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909 - ERROR_IPSEC_BAD_SPI syscall.Errno = 13910 - ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911 - ERROR_IPSEC_WRONG_SA syscall.Errno = 13912 - ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913 - ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914 - ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915 - ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916 - ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917 - ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918 - ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925 - ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926 - ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927 - ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928 - ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929 - ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930 - ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931 - ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932 - ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000 - ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001 - ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002 - ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003 - ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004 - ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005 - ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006 - ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007 - ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008 - ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009 - ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010 - ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011 - ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012 - ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013 - ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014 - ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015 - ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016 - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017 - ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018 - ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019 - ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020 - ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021 - ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022 - ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023 - ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024 - ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025 - ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026 - ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027 - ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028 - ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029 - ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030 - ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031 - ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032 - ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033 - ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034 - ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035 - ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036 - ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037 - ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038 - ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039 - ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040 - ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041 - ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042 - ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043 - ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044 - ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045 - ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046 - ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047 - ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048 - ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049 - ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050 - ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051 - ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052 - ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053 - ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054 - ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055 - ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056 - ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057 - ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058 - ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059 - ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060 - ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061 - ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062 - ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063 - ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064 - ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065 - ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066 - ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067 - ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068 - ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069 - ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070 - ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071 - ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072 - ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073 - ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074 - ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075 - ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076 - ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077 - ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078 - ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079 - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080 - ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081 - ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082 - ERROR_SXS_CORRUPTION syscall.Errno = 14083 - ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084 - ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085 - ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086 - ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087 - ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088 - ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089 - ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090 - ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091 - ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092 - ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093 - ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094 - ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095 - ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096 - ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097 - ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098 - ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099 - ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100 - ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101 - ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102 - ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103 - ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104 - ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105 - ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106 - ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107 - ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 - ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 - ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 - ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 - ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 - ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 - ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003 - ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004 - ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005 - ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007 - ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008 - ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009 - ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010 - ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011 - ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012 - ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013 - ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014 - ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015 - ERROR_EVT_FILTER_INVARG syscall.Errno = 15016 - ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017 - ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018 - ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019 - ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020 - ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021 - ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022 - ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023 - ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024 - ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025 - ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026 - ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027 - ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028 - ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029 - ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030 - ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031 - ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032 - ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033 - ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034 - ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035 - ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036 - ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037 - ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038 - ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080 - ERROR_EC_LOG_DISABLED syscall.Errno = 15081 - ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082 - ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083 - ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084 - ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085 - ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100 - ERROR_MUI_INVALID_FILE syscall.Errno = 15101 - ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102 - ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103 - ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104 - ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105 - ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106 - ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107 - ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108 - ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110 - ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111 - ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112 - ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113 - ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114 - ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115 - ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116 - ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117 - ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118 - ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119 - ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120 - ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121 - ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122 - ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126 - ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127 - ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135 - ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136 - ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137 - ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138 - ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139 - ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140 - ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141 - ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142 - ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143 - ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144 - ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145 - ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146 - ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147 - ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148 - ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149 - ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150 - ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151 - ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152 - ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153 - ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154 - ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155 - ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156 - ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 - ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 - ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 - ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 - ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 - ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 - ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203 - ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204 - ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205 - ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206 - ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207 - ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250 - ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299 - ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300 - ERROR_HASH_NOT_PRESENT syscall.Errno = 15301 - ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321 - ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322 - ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323 - ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324 - ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325 - ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326 - ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327 - ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400 - ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401 - ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402 - ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403 - ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404 - ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405 - ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501 - ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600 - ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601 - ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602 - ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603 - ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604 - ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605 - ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606 - ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607 - ERROR_INSTALL_CANCEL syscall.Errno = 15608 - ERROR_INSTALL_FAILED syscall.Errno = 15609 - ERROR_REMOVE_FAILED syscall.Errno = 15610 - ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611 - ERROR_NEEDS_REMEDIATION syscall.Errno = 15612 - ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613 - ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614 - ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615 - ERROR_PACKAGE_UPDATING syscall.Errno = 15616 - ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617 - ERROR_PACKAGES_IN_USE syscall.Errno = 15618 - ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619 - ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620 - ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621 - ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622 - ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623 - ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624 - ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625 - ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626 - ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627 - ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628 - ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629 - ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630 - ERROR_NEEDS_REGISTRATION syscall.Errno = 15631 - ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632 - ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633 - ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634 - ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635 - ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636 - ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637 - ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638 - ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639 - ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640 - ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641 - ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642 - ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643 - ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644 - ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 - ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 - ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 - APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 - APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 - APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 - APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703 - APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 - APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 - APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 - ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 - ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 - ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 - ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803 - ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804 - ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805 - ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806 - ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807 - ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808 - ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809 - ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810 - ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811 - ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812 - ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813 - ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814 - ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815 - ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816 - ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817 - ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818 - ERROR_API_UNAVAILABLE syscall.Errno = 15841 - STORE_ERROR_UNLICENSED syscall.Errno = 15861 - STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862 - STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863 - STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864 - SEVERITY_SUCCESS syscall.Errno = 0 - SEVERITY_ERROR syscall.Errno = 1 - FACILITY_NT_BIT = 0x10000000 - E_NOT_SET = ERROR_NOT_FOUND - E_NOT_VALID_STATE = ERROR_INVALID_STATE - E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER - E_TIME_CRITICAL_THREAD = ERROR_TIME_CRITICAL_THREAD - NOERROR syscall.Errno = 0 - E_UNEXPECTED Handle = 0x8000FFFF - E_NOTIMPL Handle = 0x80004001 - E_OUTOFMEMORY Handle = 0x8007000E - E_INVALIDARG Handle = 0x80070057 - E_NOINTERFACE Handle = 0x80004002 - E_POINTER Handle = 0x80004003 - E_HANDLE Handle = 0x80070006 - E_ABORT Handle = 0x80004004 - E_FAIL Handle = 0x80004005 - E_ACCESSDENIED Handle = 0x80070005 - E_PENDING Handle = 0x8000000A - E_BOUNDS Handle = 0x8000000B - E_CHANGED_STATE Handle = 0x8000000C - E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D - E_ILLEGAL_METHOD_CALL Handle = 0x8000000E - RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F - RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010 - RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011 - RO_E_INVALID_METADATA_FILE Handle = 0x80000012 - RO_E_CLOSED Handle = 0x80000013 - RO_E_EXCLUSIVE_WRITE Handle = 0x80000014 - RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015 - RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016 - E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017 - E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018 - E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019 - E_APPLICATION_EXITING Handle = 0x8000001A - E_APPLICATION_VIEW_EXITING Handle = 0x8000001B - RO_E_MUST_BE_AGILE Handle = 0x8000001C - RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D - RO_E_COMMITTED Handle = 0x8000001E - RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F - RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020 - RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021 - CO_E_INIT_TLS Handle = 0x80004006 - CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007 - CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008 - CO_E_INIT_CLASS_CACHE Handle = 0x80004009 - CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A - CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B - CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C - CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D - CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E - CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F - CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010 - CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011 - CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012 - CO_E_CANT_REMOTE Handle = 0x80004013 - CO_E_BAD_SERVER_NAME Handle = 0x80004014 - CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015 - CO_E_OLE1DDE_DISABLED Handle = 0x80004016 - CO_E_RUNAS_SYNTAX Handle = 0x80004017 - CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018 - CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019 - CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A - CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B - CO_E_START_SERVICE_FAILURE Handle = 0x8000401C - CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D - CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E - CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F - CO_E_IIDREG_INCONSISTENT Handle = 0x80004020 - CO_E_NOT_SUPPORTED Handle = 0x80004021 - CO_E_RELOAD_DLL Handle = 0x80004022 - CO_E_MSI_ERROR Handle = 0x80004023 - CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024 - CO_E_SERVER_PAUSED Handle = 0x80004025 - CO_E_SERVER_NOT_PAUSED Handle = 0x80004026 - CO_E_CLASS_DISABLED Handle = 0x80004027 - CO_E_CLRNOTAVAILABLE Handle = 0x80004028 - CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029 - CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A - CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B - CO_E_TRACKER_CONFIG Handle = 0x80004030 - CO_E_THREADPOOL_CONFIG Handle = 0x80004031 - CO_E_SXS_CONFIG Handle = 0x80004032 - CO_E_MALFORMED_SPN Handle = 0x80004033 - CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034 - CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035 - S_OK Handle = 0 - S_FALSE Handle = 1 - OLE_E_FIRST Handle = 0x80040000 - OLE_E_LAST Handle = 0x800400FF - OLE_S_FIRST Handle = 0x00040000 - OLE_S_LAST Handle = 0x000400FF - OLE_E_OLEVERB Handle = 0x80040000 - OLE_E_ADVF Handle = 0x80040001 - OLE_E_ENUM_NOMORE Handle = 0x80040002 - OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003 - OLE_E_NOCONNECTION Handle = 0x80040004 - OLE_E_NOTRUNNING Handle = 0x80040005 - OLE_E_NOCACHE Handle = 0x80040006 - OLE_E_BLANK Handle = 0x80040007 - OLE_E_CLASSDIFF Handle = 0x80040008 - OLE_E_CANT_GETMONIKER Handle = 0x80040009 - OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A - OLE_E_STATIC Handle = 0x8004000B - OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C - OLE_E_INVALIDRECT Handle = 0x8004000D - OLE_E_WRONGCOMPOBJ Handle = 0x8004000E - OLE_E_INVALIDHWND Handle = 0x8004000F - OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010 - OLE_E_CANTCONVERT Handle = 0x80040011 - OLE_E_NOSTORAGE Handle = 0x80040012 - DV_E_FORMATETC Handle = 0x80040064 - DV_E_DVTARGETDEVICE Handle = 0x80040065 - DV_E_STGMEDIUM Handle = 0x80040066 - DV_E_STATDATA Handle = 0x80040067 - DV_E_LINDEX Handle = 0x80040068 - DV_E_TYMED Handle = 0x80040069 - DV_E_CLIPFORMAT Handle = 0x8004006A - DV_E_DVASPECT Handle = 0x8004006B - DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C - DV_E_NOIVIEWOBJECT Handle = 0x8004006D - DRAGDROP_E_FIRST syscall.Errno = 0x80040100 - DRAGDROP_E_LAST syscall.Errno = 0x8004010F - DRAGDROP_S_FIRST syscall.Errno = 0x00040100 - DRAGDROP_S_LAST syscall.Errno = 0x0004010F - DRAGDROP_E_NOTREGISTERED Handle = 0x80040100 - DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101 - DRAGDROP_E_INVALIDHWND Handle = 0x80040102 - DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103 - CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110 - CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F - CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110 - CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F - CLASS_E_NOAGGREGATION Handle = 0x80040110 - CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111 - CLASS_E_NOTLICENSED Handle = 0x80040112 - MARSHAL_E_FIRST syscall.Errno = 0x80040120 - MARSHAL_E_LAST syscall.Errno = 0x8004012F - MARSHAL_S_FIRST syscall.Errno = 0x00040120 - MARSHAL_S_LAST syscall.Errno = 0x0004012F - DATA_E_FIRST syscall.Errno = 0x80040130 - DATA_E_LAST syscall.Errno = 0x8004013F - DATA_S_FIRST syscall.Errno = 0x00040130 - DATA_S_LAST syscall.Errno = 0x0004013F - VIEW_E_FIRST syscall.Errno = 0x80040140 - VIEW_E_LAST syscall.Errno = 0x8004014F - VIEW_S_FIRST syscall.Errno = 0x00040140 - VIEW_S_LAST syscall.Errno = 0x0004014F - VIEW_E_DRAW Handle = 0x80040140 - REGDB_E_FIRST syscall.Errno = 0x80040150 - REGDB_E_LAST syscall.Errno = 0x8004015F - REGDB_S_FIRST syscall.Errno = 0x00040150 - REGDB_S_LAST syscall.Errno = 0x0004015F - REGDB_E_READREGDB Handle = 0x80040150 - REGDB_E_WRITEREGDB Handle = 0x80040151 - REGDB_E_KEYMISSING Handle = 0x80040152 - REGDB_E_INVALIDVALUE Handle = 0x80040153 - REGDB_E_CLASSNOTREG Handle = 0x80040154 - REGDB_E_IIDNOTREG Handle = 0x80040155 - REGDB_E_BADTHREADINGMODEL Handle = 0x80040156 - REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157 - CAT_E_FIRST syscall.Errno = 0x80040160 - CAT_E_LAST syscall.Errno = 0x80040161 - CAT_E_CATIDNOEXIST Handle = 0x80040160 - CAT_E_NODESCRIPTION Handle = 0x80040161 - CS_E_FIRST syscall.Errno = 0x80040164 - CS_E_LAST syscall.Errno = 0x8004016F - CS_E_PACKAGE_NOTFOUND Handle = 0x80040164 - CS_E_NOT_DELETABLE Handle = 0x80040165 - CS_E_CLASS_NOTFOUND Handle = 0x80040166 - CS_E_INVALID_VERSION Handle = 0x80040167 - CS_E_NO_CLASSSTORE Handle = 0x80040168 - CS_E_OBJECT_NOTFOUND Handle = 0x80040169 - CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A - CS_E_INVALID_PATH Handle = 0x8004016B - CS_E_NETWORK_ERROR Handle = 0x8004016C - CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D - CS_E_SCHEMA_MISMATCH Handle = 0x8004016E - CS_E_INTERNAL_ERROR Handle = 0x8004016F - CACHE_E_FIRST syscall.Errno = 0x80040170 - CACHE_E_LAST syscall.Errno = 0x8004017F - CACHE_S_FIRST syscall.Errno = 0x00040170 - CACHE_S_LAST syscall.Errno = 0x0004017F - CACHE_E_NOCACHE_UPDATED Handle = 0x80040170 - OLEOBJ_E_FIRST syscall.Errno = 0x80040180 - OLEOBJ_E_LAST syscall.Errno = 0x8004018F - OLEOBJ_S_FIRST syscall.Errno = 0x00040180 - OLEOBJ_S_LAST syscall.Errno = 0x0004018F - OLEOBJ_E_NOVERBS Handle = 0x80040180 - OLEOBJ_E_INVALIDVERB Handle = 0x80040181 - CLIENTSITE_E_FIRST syscall.Errno = 0x80040190 - CLIENTSITE_E_LAST syscall.Errno = 0x8004019F - CLIENTSITE_S_FIRST syscall.Errno = 0x00040190 - CLIENTSITE_S_LAST syscall.Errno = 0x0004019F - INPLACE_E_NOTUNDOABLE Handle = 0x800401A0 - INPLACE_E_NOTOOLSPACE Handle = 0x800401A1 - INPLACE_E_FIRST syscall.Errno = 0x800401A0 - INPLACE_E_LAST syscall.Errno = 0x800401AF - INPLACE_S_FIRST syscall.Errno = 0x000401A0 - INPLACE_S_LAST syscall.Errno = 0x000401AF - ENUM_E_FIRST syscall.Errno = 0x800401B0 - ENUM_E_LAST syscall.Errno = 0x800401BF - ENUM_S_FIRST syscall.Errno = 0x000401B0 - ENUM_S_LAST syscall.Errno = 0x000401BF - CONVERT10_E_FIRST syscall.Errno = 0x800401C0 - CONVERT10_E_LAST syscall.Errno = 0x800401CF - CONVERT10_S_FIRST syscall.Errno = 0x000401C0 - CONVERT10_S_LAST syscall.Errno = 0x000401CF - CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0 - CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1 - CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2 - CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3 - CONVERT10_E_STG_FMT Handle = 0x800401C4 - CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5 - CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6 - CLIPBRD_E_FIRST syscall.Errno = 0x800401D0 - CLIPBRD_E_LAST syscall.Errno = 0x800401DF - CLIPBRD_S_FIRST syscall.Errno = 0x000401D0 - CLIPBRD_S_LAST syscall.Errno = 0x000401DF - CLIPBRD_E_CANT_OPEN Handle = 0x800401D0 - CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1 - CLIPBRD_E_CANT_SET Handle = 0x800401D2 - CLIPBRD_E_BAD_DATA Handle = 0x800401D3 - CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4 - MK_E_FIRST syscall.Errno = 0x800401E0 - MK_E_LAST syscall.Errno = 0x800401EF - MK_S_FIRST syscall.Errno = 0x000401E0 - MK_S_LAST syscall.Errno = 0x000401EF - MK_E_CONNECTMANUALLY Handle = 0x800401E0 - MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1 - MK_E_NEEDGENERIC Handle = 0x800401E2 - MK_E_UNAVAILABLE Handle = 0x800401E3 - MK_E_SYNTAX Handle = 0x800401E4 - MK_E_NOOBJECT Handle = 0x800401E5 - MK_E_INVALIDEXTENSION Handle = 0x800401E6 - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7 - MK_E_NOTBINDABLE Handle = 0x800401E8 - MK_E_NOTBOUND Handle = 0x800401E9 - MK_E_CANTOPENFILE Handle = 0x800401EA - MK_E_MUSTBOTHERUSER Handle = 0x800401EB - MK_E_NOINVERSE Handle = 0x800401EC - MK_E_NOSTORAGE Handle = 0x800401ED - MK_E_NOPREFIX Handle = 0x800401EE - MK_E_ENUMERATION_FAILED Handle = 0x800401EF - CO_E_FIRST syscall.Errno = 0x800401F0 - CO_E_LAST syscall.Errno = 0x800401FF - CO_S_FIRST syscall.Errno = 0x000401F0 - CO_S_LAST syscall.Errno = 0x000401FF - CO_E_NOTINITIALIZED Handle = 0x800401F0 - CO_E_ALREADYINITIALIZED Handle = 0x800401F1 - CO_E_CANTDETERMINECLASS Handle = 0x800401F2 - CO_E_CLASSSTRING Handle = 0x800401F3 - CO_E_IIDSTRING Handle = 0x800401F4 - CO_E_APPNOTFOUND Handle = 0x800401F5 - CO_E_APPSINGLEUSE Handle = 0x800401F6 - CO_E_ERRORINAPP Handle = 0x800401F7 - CO_E_DLLNOTFOUND Handle = 0x800401F8 - CO_E_ERRORINDLL Handle = 0x800401F9 - CO_E_WRONGOSFORAPP Handle = 0x800401FA - CO_E_OBJNOTREG Handle = 0x800401FB - CO_E_OBJISREG Handle = 0x800401FC - CO_E_OBJNOTCONNECTED Handle = 0x800401FD - CO_E_APPDIDNTREG Handle = 0x800401FE - CO_E_RELEASED Handle = 0x800401FF - EVENT_E_FIRST syscall.Errno = 0x80040200 - EVENT_E_LAST syscall.Errno = 0x8004021F - EVENT_S_FIRST syscall.Errno = 0x00040200 - EVENT_S_LAST syscall.Errno = 0x0004021F - EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200 - EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201 - EVENT_S_NOSUBSCRIBERS Handle = 0x00040202 - EVENT_E_QUERYSYNTAX Handle = 0x80040203 - EVENT_E_QUERYFIELD Handle = 0x80040204 - EVENT_E_INTERNALEXCEPTION Handle = 0x80040205 - EVENT_E_INTERNALERROR Handle = 0x80040206 - EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207 - EVENT_E_USER_EXCEPTION Handle = 0x80040208 - EVENT_E_TOO_MANY_METHODS Handle = 0x80040209 - EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A - EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B - EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C - EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D - EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E - EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F - EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210 - TPC_E_INVALID_PROPERTY Handle = 0x80040241 - TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212 - TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B - TPC_E_INVALID_INPUT_RECT Handle = 0x80040219 - TPC_E_INVALID_STROKE Handle = 0x80040222 - TPC_E_INITIALIZE_FAIL Handle = 0x80040223 - TPC_E_NOT_RELEVANT Handle = 0x80040232 - TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233 - TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235 - TPC_E_INVALID_RIGHTS Handle = 0x80040236 - TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237 - TPC_E_QUEUE_FULL Handle = 0x80040238 - TPC_E_INVALID_CONFIGURATION Handle = 0x80040239 - TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A - TPC_S_TRUNCATED Handle = 0x00040252 - TPC_S_INTERRUPTED Handle = 0x00040253 - TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254 - XACT_E_FIRST syscall.Errno = 0x8004D000 - XACT_E_LAST syscall.Errno = 0x8004D02B - XACT_S_FIRST syscall.Errno = 0x0004D000 - XACT_S_LAST syscall.Errno = 0x0004D010 - XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000 - XACT_E_CANTRETAIN Handle = 0x8004D001 - XACT_E_COMMITFAILED Handle = 0x8004D002 - XACT_E_COMMITPREVENTED Handle = 0x8004D003 - XACT_E_HEURISTICABORT Handle = 0x8004D004 - XACT_E_HEURISTICCOMMIT Handle = 0x8004D005 - XACT_E_HEURISTICDAMAGE Handle = 0x8004D006 - XACT_E_HEURISTICDANGER Handle = 0x8004D007 - XACT_E_ISOLATIONLEVEL Handle = 0x8004D008 - XACT_E_NOASYNC Handle = 0x8004D009 - XACT_E_NOENLIST Handle = 0x8004D00A - XACT_E_NOISORETAIN Handle = 0x8004D00B - XACT_E_NORESOURCE Handle = 0x8004D00C - XACT_E_NOTCURRENT Handle = 0x8004D00D - XACT_E_NOTRANSACTION Handle = 0x8004D00E - XACT_E_NOTSUPPORTED Handle = 0x8004D00F - XACT_E_UNKNOWNRMGRID Handle = 0x8004D010 - XACT_E_WRONGSTATE Handle = 0x8004D011 - XACT_E_WRONGUOW Handle = 0x8004D012 - XACT_E_XTIONEXISTS Handle = 0x8004D013 - XACT_E_NOIMPORTOBJECT Handle = 0x8004D014 - XACT_E_INVALIDCOOKIE Handle = 0x8004D015 - XACT_E_INDOUBT Handle = 0x8004D016 - XACT_E_NOTIMEOUT Handle = 0x8004D017 - XACT_E_ALREADYINPROGRESS Handle = 0x8004D018 - XACT_E_ABORTED Handle = 0x8004D019 - XACT_E_LOGFULL Handle = 0x8004D01A - XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B - XACT_E_CONNECTION_DOWN Handle = 0x8004D01C - XACT_E_CONNECTION_DENIED Handle = 0x8004D01D - XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E - XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F - XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020 - XACT_E_TIP_PULL_FAILED Handle = 0x8004D021 - XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022 - XACT_E_TIP_DISABLED Handle = 0x8004D023 - XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024 - XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025 - XACT_E_XA_TX_DISABLED Handle = 0x8004D026 - XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027 - XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028 - XACT_E_ABORTING Handle = 0x8004D029 - XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A - XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B - XACT_E_LU_TX_DISABLED Handle = 0x8004D02C - XACT_E_CLERKNOTFOUND Handle = 0x8004D080 - XACT_E_CLERKEXISTS Handle = 0x8004D081 - XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082 - XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083 - XACT_E_INVALIDLSN Handle = 0x8004D084 - XACT_E_REPLAYREQUEST Handle = 0x8004D085 - XACT_S_ASYNC Handle = 0x0004D000 - XACT_S_DEFECT Handle = 0x0004D001 - XACT_S_READONLY Handle = 0x0004D002 - XACT_S_SOMENORETAIN Handle = 0x0004D003 - XACT_S_OKINFORM Handle = 0x0004D004 - XACT_S_MADECHANGESCONTENT Handle = 0x0004D005 - XACT_S_MADECHANGESINFORM Handle = 0x0004D006 - XACT_S_ALLNORETAIN Handle = 0x0004D007 - XACT_S_ABORTING Handle = 0x0004D008 - XACT_S_SINGLEPHASE Handle = 0x0004D009 - XACT_S_LOCALLY_OK Handle = 0x0004D00A - XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010 - CONTEXT_E_FIRST syscall.Errno = 0x8004E000 - CONTEXT_E_LAST syscall.Errno = 0x8004E02F - CONTEXT_S_FIRST syscall.Errno = 0x0004E000 - CONTEXT_S_LAST syscall.Errno = 0x0004E02F - CONTEXT_E_ABORTED Handle = 0x8004E002 - CONTEXT_E_ABORTING Handle = 0x8004E003 - CONTEXT_E_NOCONTEXT Handle = 0x8004E004 - CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005 - CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006 - CONTEXT_E_OLDREF Handle = 0x8004E007 - CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C - CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F - CO_E_ACTIVATIONFAILED Handle = 0x8004E021 - CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022 - CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023 - CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024 - CO_E_INITIALIZATIONFAILED Handle = 0x8004E025 - CONTEXT_E_NOJIT Handle = 0x8004E026 - CONTEXT_E_NOTRANSACTION Handle = 0x8004E027 - CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028 - CO_E_NOIISINTRINSICS Handle = 0x8004E029 - CO_E_NOCOOKIES Handle = 0x8004E02A - CO_E_DBERROR Handle = 0x8004E02B - CO_E_NOTPOOLED Handle = 0x8004E02C - CO_E_NOTCONSTRUCTED Handle = 0x8004E02D - CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E - CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F - CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030 - CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031 - OLE_S_USEREG Handle = 0x00040000 - OLE_S_STATIC Handle = 0x00040001 - OLE_S_MAC_CLIPFORMAT Handle = 0x00040002 - DRAGDROP_S_DROP Handle = 0x00040100 - DRAGDROP_S_CANCEL Handle = 0x00040101 - DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102 - DATA_S_SAMEFORMATETC Handle = 0x00040130 - VIEW_S_ALREADY_FROZEN Handle = 0x00040140 - CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170 - CACHE_S_SAMECACHE Handle = 0x00040171 - CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172 - OLEOBJ_S_INVALIDVERB Handle = 0x00040180 - OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181 - OLEOBJ_S_INVALIDHWND Handle = 0x00040182 - INPLACE_S_TRUNCATED Handle = 0x000401A0 - CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0 - MK_S_REDUCED_TO_SELF Handle = 0x000401E2 - MK_S_ME Handle = 0x000401E4 - MK_S_HIM Handle = 0x000401E5 - MK_S_US Handle = 0x000401E6 - MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7 - SCHED_S_TASK_READY Handle = 0x00041300 - SCHED_S_TASK_RUNNING Handle = 0x00041301 - SCHED_S_TASK_DISABLED Handle = 0x00041302 - SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303 - SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304 - SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305 - SCHED_S_TASK_TERMINATED Handle = 0x00041306 - SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307 - SCHED_S_EVENT_TRIGGER Handle = 0x00041308 - SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309 - SCHED_E_TASK_NOT_READY Handle = 0x8004130A - SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B - SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C - SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D - SCHED_E_INVALID_TASK Handle = 0x8004130E - SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F - SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310 - SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311 - SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312 - SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313 - SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314 - SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315 - SCHED_E_UNEXPECTEDNODE Handle = 0x80041316 - SCHED_E_NAMESPACE Handle = 0x80041317 - SCHED_E_INVALIDVALUE Handle = 0x80041318 - SCHED_E_MISSINGNODE Handle = 0x80041319 - SCHED_E_MALFORMEDXML Handle = 0x8004131A - SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B - SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C - SCHED_E_TOO_MANY_NODES Handle = 0x8004131D - SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E - SCHED_E_ALREADY_RUNNING Handle = 0x8004131F - SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320 - SCHED_E_INVALID_TASK_HASH Handle = 0x80041321 - SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322 - SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323 - SCHED_E_TASK_ATTEMPTED Handle = 0x80041324 - SCHED_S_TASK_QUEUED Handle = 0x00041325 - SCHED_E_TASK_DISABLED Handle = 0x80041326 - SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327 - SCHED_E_START_ON_DEMAND Handle = 0x80041328 - SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329 - SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330 - CO_E_CLASS_CREATE_FAILED Handle = 0x80080001 - CO_E_SCM_ERROR Handle = 0x80080002 - CO_E_SCM_RPC_FAILURE Handle = 0x80080003 - CO_E_BAD_PATH Handle = 0x80080004 - CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005 - CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006 - MK_E_NO_NORMALIZED Handle = 0x80080007 - CO_E_SERVER_STOPPING Handle = 0x80080008 - MEM_E_INVALID_ROOT Handle = 0x80080009 - MEM_E_INVALID_LINK Handle = 0x80080010 - MEM_E_INVALID_SIZE Handle = 0x80080011 - CO_S_NOTALLINTERFACES Handle = 0x00080012 - CO_S_MACHINENAMENOTFOUND Handle = 0x00080013 - CO_E_MISSING_DISPLAYNAME Handle = 0x80080015 - CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016 - CO_E_ELEVATION_DISABLED Handle = 0x80080017 - APPX_E_PACKAGING_INTERNAL Handle = 0x80080200 - APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201 - APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202 - APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203 - APPX_E_INVALID_MANIFEST Handle = 0x80080204 - APPX_E_INVALID_BLOCKMAP Handle = 0x80080205 - APPX_E_CORRUPT_CONTENT Handle = 0x80080206 - APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207 - APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208 - APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209 - APPX_E_INVALID_KEY_INFO Handle = 0x8008020A - APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B - APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C - APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D - APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E - APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F - APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210 - APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211 - APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212 - APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213 - APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214 - APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215 - APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216 - BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300 - DISP_E_UNKNOWNINTERFACE Handle = 0x80020001 - DISP_E_MEMBERNOTFOUND Handle = 0x80020003 - DISP_E_PARAMNOTFOUND Handle = 0x80020004 - DISP_E_TYPEMISMATCH Handle = 0x80020005 - DISP_E_UNKNOWNNAME Handle = 0x80020006 - DISP_E_NONAMEDARGS Handle = 0x80020007 - DISP_E_BADVARTYPE Handle = 0x80020008 - DISP_E_EXCEPTION Handle = 0x80020009 - DISP_E_OVERFLOW Handle = 0x8002000A - DISP_E_BADINDEX Handle = 0x8002000B - DISP_E_UNKNOWNLCID Handle = 0x8002000C - DISP_E_ARRAYISLOCKED Handle = 0x8002000D - DISP_E_BADPARAMCOUNT Handle = 0x8002000E - DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F - DISP_E_BADCALLEE Handle = 0x80020010 - DISP_E_NOTACOLLECTION Handle = 0x80020011 - DISP_E_DIVBYZERO Handle = 0x80020012 - DISP_E_BUFFERTOOSMALL Handle = 0x80020013 - TYPE_E_BUFFERTOOSMALL Handle = 0x80028016 - TYPE_E_FIELDNOTFOUND Handle = 0x80028017 - TYPE_E_INVDATAREAD Handle = 0x80028018 - TYPE_E_UNSUPFORMAT Handle = 0x80028019 - TYPE_E_REGISTRYACCESS Handle = 0x8002801C - TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D - TYPE_E_UNDEFINEDTYPE Handle = 0x80028027 - TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028 - TYPE_E_INVALIDSTATE Handle = 0x80028029 - TYPE_E_WRONGTYPEKIND Handle = 0x8002802A - TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B - TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C - TYPE_E_NAMECONFLICT Handle = 0x8002802D - TYPE_E_UNKNOWNLCID Handle = 0x8002802E - TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F - TYPE_E_BADMODULEKIND Handle = 0x800288BD - TYPE_E_SIZETOOBIG Handle = 0x800288C5 - TYPE_E_DUPLICATEID Handle = 0x800288C6 - TYPE_E_INVALIDID Handle = 0x800288CF - TYPE_E_TYPEMISMATCH Handle = 0x80028CA0 - TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1 - TYPE_E_IOERROR Handle = 0x80028CA2 - TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3 - TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A - TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83 - TYPE_E_CIRCULARTYPE Handle = 0x80029C84 - STG_E_INVALIDFUNCTION Handle = 0x80030001 - STG_E_FILENOTFOUND Handle = 0x80030002 - STG_E_PATHNOTFOUND Handle = 0x80030003 - STG_E_TOOMANYOPENFILES Handle = 0x80030004 - STG_E_ACCESSDENIED Handle = 0x80030005 - STG_E_INVALIDHANDLE Handle = 0x80030006 - STG_E_INSUFFICIENTMEMORY Handle = 0x80030008 - STG_E_INVALIDPOINTER Handle = 0x80030009 - STG_E_NOMOREFILES Handle = 0x80030012 - STG_E_DISKISWRITEPROTECTED Handle = 0x80030013 - STG_E_SEEKERROR Handle = 0x80030019 - STG_E_WRITEFAULT Handle = 0x8003001D - STG_E_READFAULT Handle = 0x8003001E - STG_E_SHAREVIOLATION Handle = 0x80030020 - STG_E_LOCKVIOLATION Handle = 0x80030021 - STG_E_FILEALREADYEXISTS Handle = 0x80030050 - STG_E_INVALIDPARAMETER Handle = 0x80030057 - STG_E_MEDIUMFULL Handle = 0x80030070 - STG_E_PROPSETMISMATCHED Handle = 0x800300F0 - STG_E_ABNORMALAPIEXIT Handle = 0x800300FA - STG_E_INVALIDHEADER Handle = 0x800300FB - STG_E_INVALIDNAME Handle = 0x800300FC - STG_E_UNKNOWN Handle = 0x800300FD - STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE - STG_E_INVALIDFLAG Handle = 0x800300FF - STG_E_INUSE Handle = 0x80030100 - STG_E_NOTCURRENT Handle = 0x80030101 - STG_E_REVERTED Handle = 0x80030102 - STG_E_CANTSAVE Handle = 0x80030103 - STG_E_OLDFORMAT Handle = 0x80030104 - STG_E_OLDDLL Handle = 0x80030105 - STG_E_SHAREREQUIRED Handle = 0x80030106 - STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107 - STG_E_EXTANTMARSHALLINGS Handle = 0x80030108 - STG_E_DOCFILECORRUPT Handle = 0x80030109 - STG_E_BADBASEADDRESS Handle = 0x80030110 - STG_E_DOCFILETOOLARGE Handle = 0x80030111 - STG_E_NOTSIMPLEFORMAT Handle = 0x80030112 - STG_E_INCOMPLETE Handle = 0x80030201 - STG_E_TERMINATED Handle = 0x80030202 - STG_S_CONVERTED Handle = 0x00030200 - STG_S_BLOCK Handle = 0x00030201 - STG_S_RETRYNOW Handle = 0x00030202 - STG_S_MONITORING Handle = 0x00030203 - STG_S_MULTIPLEOPENS Handle = 0x00030204 - STG_S_CONSOLIDATIONFAILED Handle = 0x00030205 - STG_S_CANNOTCONSOLIDATE Handle = 0x00030206 - STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207 - STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208 - STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209 - STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A - STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305 - STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306 - STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307 - STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308 - STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309 - STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A - STG_E_RESETS_EXHAUSTED Handle = 0x8003030B - RPC_E_CALL_REJECTED Handle = 0x80010001 - RPC_E_CALL_CANCELED Handle = 0x80010002 - RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003 - RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004 - RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005 - RPC_E_CONNECTION_TERMINATED Handle = 0x80010006 - RPC_E_SERVER_DIED Handle = 0x80010007 - RPC_E_CLIENT_DIED Handle = 0x80010008 - RPC_E_INVALID_DATAPACKET Handle = 0x80010009 - RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A - RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B - RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C - RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D - RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E - RPC_E_INVALID_DATA Handle = 0x8001000F - RPC_E_INVALID_PARAMETER Handle = 0x80010010 - RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011 - RPC_E_SERVER_DIED_DNE Handle = 0x80010012 - RPC_E_SYS_CALL_FAILED Handle = 0x80010100 - RPC_E_OUT_OF_RESOURCES Handle = 0x80010101 - RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102 - RPC_E_NOT_REGISTERED Handle = 0x80010103 - RPC_E_FAULT Handle = 0x80010104 - RPC_E_SERVERFAULT Handle = 0x80010105 - RPC_E_CHANGED_MODE Handle = 0x80010106 - RPC_E_INVALIDMETHOD Handle = 0x80010107 - RPC_E_DISCONNECTED Handle = 0x80010108 - RPC_E_RETRY Handle = 0x80010109 - RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A - RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B - RPC_E_INVALID_CALLDATA Handle = 0x8001010C - RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D - RPC_E_WRONG_THREAD Handle = 0x8001010E - RPC_E_THREAD_NOT_INIT Handle = 0x8001010F - RPC_E_VERSION_MISMATCH Handle = 0x80010110 - RPC_E_INVALID_HEADER Handle = 0x80010111 - RPC_E_INVALID_EXTENSION Handle = 0x80010112 - RPC_E_INVALID_IPID Handle = 0x80010113 - RPC_E_INVALID_OBJECT Handle = 0x80010114 - RPC_S_CALLPENDING Handle = 0x80010115 - RPC_S_WAITONTIMER Handle = 0x80010116 - RPC_E_CALL_COMPLETE Handle = 0x80010117 - RPC_E_UNSECURE_CALL Handle = 0x80010118 - RPC_E_TOO_LATE Handle = 0x80010119 - RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A - RPC_E_ACCESS_DENIED Handle = 0x8001011B - RPC_E_REMOTE_DISABLED Handle = 0x8001011C - RPC_E_INVALID_OBJREF Handle = 0x8001011D - RPC_E_NO_CONTEXT Handle = 0x8001011E - RPC_E_TIMEOUT Handle = 0x8001011F - RPC_E_NO_SYNC Handle = 0x80010120 - RPC_E_FULLSIC_REQUIRED Handle = 0x80010121 - RPC_E_INVALID_STD_NAME Handle = 0x80010122 - CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123 - CO_E_FAILEDTOGETSECCTX Handle = 0x80010124 - CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125 - CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126 - CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127 - CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128 - CO_E_FAILEDTOSETDACL Handle = 0x80010129 - CO_E_ACCESSCHECKFAILED Handle = 0x8001012A - CO_E_NETACCESSAPIFAILED Handle = 0x8001012B - CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C - CO_E_INVALIDSID Handle = 0x8001012D - CO_E_CONVERSIONFAILED Handle = 0x8001012E - CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F - CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130 - CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131 - CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132 - CO_E_SETSERLHNDLFAILED Handle = 0x80010133 - CO_E_FAILEDTOGETWINDIR Handle = 0x80010134 - CO_E_PATHTOOLONG Handle = 0x80010135 - CO_E_FAILEDTOGENUUID Handle = 0x80010136 - CO_E_FAILEDTOCREATEFILE Handle = 0x80010137 - CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138 - CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139 - CO_E_ACESINWRONGORDER Handle = 0x8001013A - CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B - CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C - CO_E_DECODEFAILED Handle = 0x8001013D - CO_E_ACNOTINITIALIZED Handle = 0x8001013F - CO_E_CANCEL_DISABLED Handle = 0x80010140 - RPC_E_UNEXPECTED Handle = 0x8001FFFF - ERROR_AUDITING_DISABLED Handle = 0xC0090001 - ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002 - ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003 - NTE_BAD_UID Handle = 0x80090001 - NTE_BAD_HASH Handle = 0x80090002 - NTE_BAD_KEY Handle = 0x80090003 - NTE_BAD_LEN Handle = 0x80090004 - NTE_BAD_DATA Handle = 0x80090005 - NTE_BAD_SIGNATURE Handle = 0x80090006 - NTE_BAD_VER Handle = 0x80090007 - NTE_BAD_ALGID Handle = 0x80090008 - NTE_BAD_FLAGS Handle = 0x80090009 - NTE_BAD_TYPE Handle = 0x8009000A - NTE_BAD_KEY_STATE Handle = 0x8009000B - NTE_BAD_HASH_STATE Handle = 0x8009000C - NTE_NO_KEY Handle = 0x8009000D - NTE_NO_MEMORY Handle = 0x8009000E - NTE_EXISTS Handle = 0x8009000F - NTE_PERM Handle = 0x80090010 - NTE_NOT_FOUND Handle = 0x80090011 - NTE_DOUBLE_ENCRYPT Handle = 0x80090012 - NTE_BAD_PROVIDER Handle = 0x80090013 - NTE_BAD_PROV_TYPE Handle = 0x80090014 - NTE_BAD_PUBLIC_KEY Handle = 0x80090015 - NTE_BAD_KEYSET Handle = 0x80090016 - NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017 - NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018 - NTE_KEYSET_NOT_DEF Handle = 0x80090019 - NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A - NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B - NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C - NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D - NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E - NTE_BAD_KEYSET_PARAM Handle = 0x8009001F - NTE_FAIL Handle = 0x80090020 - NTE_SYS_ERR Handle = 0x80090021 - NTE_SILENT_CONTEXT Handle = 0x80090022 - NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023 - NTE_TEMPORARY_PROFILE Handle = 0x80090024 - NTE_FIXEDPARAMETER Handle = 0x80090025 - NTE_INVALID_HANDLE Handle = 0x80090026 - NTE_INVALID_PARAMETER Handle = 0x80090027 - NTE_BUFFER_TOO_SMALL Handle = 0x80090028 - NTE_NOT_SUPPORTED Handle = 0x80090029 - NTE_NO_MORE_ITEMS Handle = 0x8009002A - NTE_BUFFERS_OVERLAP Handle = 0x8009002B - NTE_DECRYPTION_FAILURE Handle = 0x8009002C - NTE_INTERNAL_ERROR Handle = 0x8009002D - NTE_UI_REQUIRED Handle = 0x8009002E - NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F - NTE_DEVICE_NOT_READY Handle = 0x80090030 - NTE_AUTHENTICATION_IGNORED Handle = 0x80090031 - NTE_VALIDATION_FAILED Handle = 0x80090032 - NTE_INCORRECT_PASSWORD Handle = 0x80090033 - NTE_ENCRYPTION_FAILURE Handle = 0x80090034 - NTE_DEVICE_NOT_FOUND Handle = 0x80090035 - NTE_USER_CANCELLED Handle = 0x80090036 - NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037 - NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038 - SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300 - SEC_E_INVALID_HANDLE Handle = 0x80090301 - SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302 - SEC_E_TARGET_UNKNOWN Handle = 0x80090303 - SEC_E_INTERNAL_ERROR Handle = 0x80090304 - SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305 - SEC_E_NOT_OWNER Handle = 0x80090306 - SEC_E_CANNOT_INSTALL Handle = 0x80090307 - SEC_E_INVALID_TOKEN Handle = 0x80090308 - SEC_E_CANNOT_PACK Handle = 0x80090309 - SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A - SEC_E_NO_IMPERSONATION Handle = 0x8009030B - SEC_E_LOGON_DENIED Handle = 0x8009030C - SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D - SEC_E_NO_CREDENTIALS Handle = 0x8009030E - SEC_E_MESSAGE_ALTERED Handle = 0x8009030F - SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310 - SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311 - SEC_I_CONTINUE_NEEDED Handle = 0x00090312 - SEC_I_COMPLETE_NEEDED Handle = 0x00090313 - SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 - SEC_I_LOCAL_LOGON Handle = 0x00090315 - SEC_E_BAD_PKGID Handle = 0x80090316 - SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 - SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 - SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318 - SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320 - SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321 - SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320 - SEC_I_RENEGOTIATE Handle = 0x00090321 - SEC_E_WRONG_PRINCIPAL Handle = 0x80090322 - SEC_I_NO_LSA_CONTEXT Handle = 0x00090323 - SEC_E_TIME_SKEW Handle = 0x80090324 - SEC_E_UNTRUSTED_ROOT Handle = 0x80090325 - SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326 - SEC_E_CERT_UNKNOWN Handle = 0x80090327 - SEC_E_CERT_EXPIRED Handle = 0x80090328 - SEC_E_ENCRYPT_FAILURE Handle = 0x80090329 - SEC_E_DECRYPT_FAILURE Handle = 0x80090330 - SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331 - SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332 - SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333 - SEC_E_NO_TGT_REPLY Handle = 0x80090334 - SEC_E_NO_IP_ADDRESSES Handle = 0x80090335 - SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336 - SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337 - SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338 - SEC_E_MUST_BE_KDC Handle = 0x80090339 - SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A - SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B - SEC_E_NO_PA_DATA Handle = 0x8009033C - SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D - SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E - SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F - SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340 - SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341 - SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342 - SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343 - SEC_E_DELEGATION_REQUIRED Handle = 0x80090345 - SEC_E_BAD_BINDINGS Handle = 0x80090346 - SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347 - SEC_E_NO_KERB_KEY Handle = 0x80090348 - SEC_E_CERT_WRONG_USAGE Handle = 0x80090349 - SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350 - SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351 - SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352 - SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353 - SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354 - SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355 - SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356 - SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357 - SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358 - SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359 - SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A - SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B - SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C - SEC_E_INVALID_PARAMETER Handle = 0x8009035D - SEC_E_DELEGATION_POLICY Handle = 0x8009035E - SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F - SEC_I_NO_RENEGOTIATION Handle = 0x00090360 - SEC_E_NO_CONTEXT Handle = 0x80090361 - SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362 - SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363 - SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364 - SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365 - SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366 - SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 - SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 - SEC_E_INVALID_UPN_NAME Handle = 0x80090369 - SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR - SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION - CRYPT_E_MSG_ERROR Handle = 0x80091001 - CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002 - CRYPT_E_OID_FORMAT Handle = 0x80091003 - CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004 - CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005 - CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006 - CRYPT_E_HASH_VALUE Handle = 0x80091007 - CRYPT_E_INVALID_INDEX Handle = 0x80091008 - CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009 - CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A - CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B - CRYPT_E_CONTROL_TYPE Handle = 0x8009100C - CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D - CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E - CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F - CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010 - CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011 - CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012 - CRYPT_E_BAD_LEN Handle = 0x80092001 - CRYPT_E_BAD_ENCODE Handle = 0x80092002 - CRYPT_E_FILE_ERROR Handle = 0x80092003 - CRYPT_E_NOT_FOUND Handle = 0x80092004 - CRYPT_E_EXISTS Handle = 0x80092005 - CRYPT_E_NO_PROVIDER Handle = 0x80092006 - CRYPT_E_SELF_SIGNED Handle = 0x80092007 - CRYPT_E_DELETED_PREV Handle = 0x80092008 - CRYPT_E_NO_MATCH Handle = 0x80092009 - CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A - CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B - CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C - CRYPT_E_BAD_MSG Handle = 0x8009200D - CRYPT_E_NO_SIGNER Handle = 0x8009200E - CRYPT_E_PENDING_CLOSE Handle = 0x8009200F - CRYPT_E_REVOKED Handle = 0x80092010 - CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011 - CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012 - CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013 - CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014 - CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020 - CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021 - CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022 - CRYPT_E_INVALID_X500_STRING Handle = 0x80092023 - CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024 - CRYPT_E_FILERESIZED Handle = 0x80092025 - CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026 - CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027 - CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028 - CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029 - CRYPT_E_NOT_IN_CTL Handle = 0x8009202A - CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B - CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C - CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D - CRYPT_E_OSS_ERROR Handle = 0x80093000 - OSS_MORE_BUF Handle = 0x80093001 - OSS_NEGATIVE_UINTEGER Handle = 0x80093002 - OSS_PDU_RANGE Handle = 0x80093003 - OSS_MORE_INPUT Handle = 0x80093004 - OSS_DATA_ERROR Handle = 0x80093005 - OSS_BAD_ARG Handle = 0x80093006 - OSS_BAD_VERSION Handle = 0x80093007 - OSS_OUT_MEMORY Handle = 0x80093008 - OSS_PDU_MISMATCH Handle = 0x80093009 - OSS_LIMITED Handle = 0x8009300A - OSS_BAD_PTR Handle = 0x8009300B - OSS_BAD_TIME Handle = 0x8009300C - OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D - OSS_MEM_ERROR Handle = 0x8009300E - OSS_BAD_TABLE Handle = 0x8009300F - OSS_TOO_LONG Handle = 0x80093010 - OSS_CONSTRAINT_VIOLATED Handle = 0x80093011 - OSS_FATAL_ERROR Handle = 0x80093012 - OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013 - OSS_NULL_TBL Handle = 0x80093014 - OSS_NULL_FCN Handle = 0x80093015 - OSS_BAD_ENCRULES Handle = 0x80093016 - OSS_UNAVAIL_ENCRULES Handle = 0x80093017 - OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018 - OSS_UNIMPLEMENTED Handle = 0x80093019 - OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A - OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B - OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C - OSS_TABLE_MISMATCH Handle = 0x8009301D - OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E - OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F - OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020 - OSS_OUT_OF_RANGE Handle = 0x80093021 - OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022 - OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023 - OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024 - OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025 - OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026 - OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027 - OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028 - OSS_API_DLL_NOT_LINKED Handle = 0x80093029 - OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A - OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B - OSS_OPEN_TYPE_ERROR Handle = 0x8009302C - OSS_MUTEX_NOT_CREATED Handle = 0x8009302D - OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E - CRYPT_E_ASN1_ERROR Handle = 0x80093100 - CRYPT_E_ASN1_INTERNAL Handle = 0x80093101 - CRYPT_E_ASN1_EOD Handle = 0x80093102 - CRYPT_E_ASN1_CORRUPT Handle = 0x80093103 - CRYPT_E_ASN1_LARGE Handle = 0x80093104 - CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105 - CRYPT_E_ASN1_MEMORY Handle = 0x80093106 - CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107 - CRYPT_E_ASN1_BADPDU Handle = 0x80093108 - CRYPT_E_ASN1_BADARGS Handle = 0x80093109 - CRYPT_E_ASN1_BADREAL Handle = 0x8009310A - CRYPT_E_ASN1_BADTAG Handle = 0x8009310B - CRYPT_E_ASN1_CHOICE Handle = 0x8009310C - CRYPT_E_ASN1_RULE Handle = 0x8009310D - CRYPT_E_ASN1_UTF8 Handle = 0x8009310E - CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133 - CRYPT_E_ASN1_NYI Handle = 0x80093134 - CRYPT_E_ASN1_EXTENDED Handle = 0x80093201 - CRYPT_E_ASN1_NOEOD Handle = 0x80093202 - CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001 - CERTSRV_E_NO_REQUEST Handle = 0x80094002 - CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003 - CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004 - CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005 - CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006 - CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007 - CERTSRV_E_ROLECONFLICT Handle = 0x80094008 - CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009 - CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A - CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B - CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C - CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D - CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E - CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F - CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010 - CERTSRV_E_ENROLL_DENIED Handle = 0x80094011 - CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012 - CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013 - CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014 - CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015 - CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016 - CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017 - CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018 - CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800 - CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801 - CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802 - CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803 - CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804 - CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805 - CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806 - CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807 - CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808 - CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809 - CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A - CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B - CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C - CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D - CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E - CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F - CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810 - CERTSRV_E_KEY_LENGTH Handle = 0x80094811 - CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812 - CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813 - CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814 - CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815 - CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816 - CERTSRV_E_INVALID_EK Handle = 0x80094817 - CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818 - CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819 - CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A - CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B - CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C - CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D - CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E - CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F - CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820 - XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000 - XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001 - XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002 - XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003 - XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004 - XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005 - TRUST_E_SYSTEM_ERROR Handle = 0x80096001 - TRUST_E_NO_SIGNER_CERT Handle = 0x80096002 - TRUST_E_COUNTER_SIGNER Handle = 0x80096003 - TRUST_E_CERT_SIGNATURE Handle = 0x80096004 - TRUST_E_TIME_STAMP Handle = 0x80096005 - TRUST_E_BAD_DIGEST Handle = 0x80096010 - TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011 - TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019 - TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E - MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001 - MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002 - MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003 - MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004 - MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005 - MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006 - MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007 - MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008 - MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009 - MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A - MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B - MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C - MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D - MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010 - MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011 - MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012 - MSSIPOTF_E_FILE Handle = 0x80097013 - MSSIPOTF_E_CRYPT Handle = 0x80097014 - MSSIPOTF_E_BADVERSION Handle = 0x80097015 - MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016 - MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017 - MSSIPOTF_E_STRUCTURE Handle = 0x80097018 - ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019 - NTE_OP_OK syscall.Errno = 0 - TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001 - TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002 - TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003 - TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004 - DIGSIG_E_ENCODE Handle = 0x800B0005 - DIGSIG_E_DECODE Handle = 0x800B0006 - DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007 - DIGSIG_E_CRYPTO Handle = 0x800B0008 - PERSIST_E_SIZEDEFINITE Handle = 0x800B0009 - PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A - PERSIST_E_NOTSELFSIZING Handle = 0x800B000B - TRUST_E_NOSIGNATURE Handle = 0x800B0100 - CERT_E_EXPIRED Handle = 0x800B0101 - CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102 - CERT_E_ROLE Handle = 0x800B0103 - CERT_E_PATHLENCONST Handle = 0x800B0104 - CERT_E_CRITICAL Handle = 0x800B0105 - CERT_E_PURPOSE Handle = 0x800B0106 - CERT_E_ISSUERCHAINING Handle = 0x800B0107 - CERT_E_MALFORMED Handle = 0x800B0108 - CERT_E_UNTRUSTEDROOT Handle = 0x800B0109 - CERT_E_CHAINING Handle = 0x800B010A - TRUST_E_FAIL Handle = 0x800B010B - CERT_E_REVOKED Handle = 0x800B010C - CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D - CERT_E_REVOCATION_FAILURE Handle = 0x800B010E - CERT_E_CN_NO_MATCH Handle = 0x800B010F - CERT_E_WRONG_USAGE Handle = 0x800B0110 - TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111 - CERT_E_UNTRUSTEDCA Handle = 0x800B0112 - CERT_E_INVALID_POLICY Handle = 0x800B0113 - CERT_E_INVALID_NAME Handle = 0x800B0114 - SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000 - SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001 - SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002 - SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003 - SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100 - SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101 - SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102 - SPAPI_E_NO_BACKUP Handle = 0x800F0103 - SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200 - SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201 - SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202 - SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203 - SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204 - SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205 - SPAPI_E_INVALID_CLASS Handle = 0x800F0206 - SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207 - SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208 - SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209 - SPAPI_E_NO_INF Handle = 0x800F020A - SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B - SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C - SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D - SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E - SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F - SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210 - SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211 - SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212 - SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213 - SPAPI_E_DI_BAD_PATH Handle = 0x800F0214 - SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215 - SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216 - SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217 - SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218 - SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219 - SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A - SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B - SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C - SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D - SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E - SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F - SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220 - SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221 - SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222 - SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223 - SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224 - SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225 - SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226 - SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227 - SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228 - SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229 - SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A - SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B - SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C - SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D - SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E - SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F - SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230 - SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231 - SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232 - SPAPI_E_INVALID_TARGET Handle = 0x800F0233 - SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234 - SPAPI_E_IN_WOW64 Handle = 0x800F0235 - SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236 - SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237 - SPAPI_E_SCE_DISABLED Handle = 0x800F0238 - SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239 - SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A - SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B - SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C - SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D - SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E - SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F - SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240 - SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241 - SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242 - SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243 - SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244 - SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245 - SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246 - SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247 - SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248 - SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249 - SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A - SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B - SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C - SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300 - SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000 - SCARD_S_SUCCESS = S_OK - SCARD_F_INTERNAL_ERROR Handle = 0x80100001 - SCARD_E_CANCELLED Handle = 0x80100002 - SCARD_E_INVALID_HANDLE Handle = 0x80100003 - SCARD_E_INVALID_PARAMETER Handle = 0x80100004 - SCARD_E_INVALID_TARGET Handle = 0x80100005 - SCARD_E_NO_MEMORY Handle = 0x80100006 - SCARD_F_WAITED_TOO_LONG Handle = 0x80100007 - SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008 - SCARD_E_UNKNOWN_READER Handle = 0x80100009 - SCARD_E_TIMEOUT Handle = 0x8010000A - SCARD_E_SHARING_VIOLATION Handle = 0x8010000B - SCARD_E_NO_SMARTCARD Handle = 0x8010000C - SCARD_E_UNKNOWN_CARD Handle = 0x8010000D - SCARD_E_CANT_DISPOSE Handle = 0x8010000E - SCARD_E_PROTO_MISMATCH Handle = 0x8010000F - SCARD_E_NOT_READY Handle = 0x80100010 - SCARD_E_INVALID_VALUE Handle = 0x80100011 - SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012 - SCARD_F_COMM_ERROR Handle = 0x80100013 - SCARD_F_UNKNOWN_ERROR Handle = 0x80100014 - SCARD_E_INVALID_ATR Handle = 0x80100015 - SCARD_E_NOT_TRANSACTED Handle = 0x80100016 - SCARD_E_READER_UNAVAILABLE Handle = 0x80100017 - SCARD_P_SHUTDOWN Handle = 0x80100018 - SCARD_E_PCI_TOO_SMALL Handle = 0x80100019 - SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A - SCARD_E_DUPLICATE_READER Handle = 0x8010001B - SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C - SCARD_E_NO_SERVICE Handle = 0x8010001D - SCARD_E_SERVICE_STOPPED Handle = 0x8010001E - SCARD_E_UNEXPECTED Handle = 0x8010001F - SCARD_E_ICC_INSTALLATION Handle = 0x80100020 - SCARD_E_ICC_CREATEORDER Handle = 0x80100021 - SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022 - SCARD_E_DIR_NOT_FOUND Handle = 0x80100023 - SCARD_E_FILE_NOT_FOUND Handle = 0x80100024 - SCARD_E_NO_DIR Handle = 0x80100025 - SCARD_E_NO_FILE Handle = 0x80100026 - SCARD_E_NO_ACCESS Handle = 0x80100027 - SCARD_E_WRITE_TOO_MANY Handle = 0x80100028 - SCARD_E_BAD_SEEK Handle = 0x80100029 - SCARD_E_INVALID_CHV Handle = 0x8010002A - SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B - SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C - SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D - SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E - SCARD_E_COMM_DATA_LOST Handle = 0x8010002F - SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030 - SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031 - SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032 - SCARD_E_NO_PIN_CACHE Handle = 0x80100033 - SCARD_E_READ_ONLY_CARD Handle = 0x80100034 - SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065 - SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066 - SCARD_W_UNPOWERED_CARD Handle = 0x80100067 - SCARD_W_RESET_CARD Handle = 0x80100068 - SCARD_W_REMOVED_CARD Handle = 0x80100069 - SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A - SCARD_W_WRONG_CHV Handle = 0x8010006B - SCARD_W_CHV_BLOCKED Handle = 0x8010006C - SCARD_W_EOF Handle = 0x8010006D - SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E - SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F - SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070 - SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071 - SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072 - COMADMIN_E_OBJECTERRORS Handle = 0x80110401 - COMADMIN_E_OBJECTINVALID Handle = 0x80110402 - COMADMIN_E_KEYMISSING Handle = 0x80110403 - COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404 - COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407 - COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408 - COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409 - COMADMIN_E_BADPATH Handle = 0x8011040A - COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B - COMADMIN_E_ROLEEXISTS Handle = 0x8011040C - COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D - COMADMIN_E_NOUSER Handle = 0x8011040F - COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410 - COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411 - COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412 - COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413 - COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414 - COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418 - COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419 - COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A - COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B - COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D - COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E - COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F - COMADMIN_E_REGISTRARFAILED Handle = 0x80110423 - COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424 - COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425 - COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426 - COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427 - COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428 - COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429 - COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A - COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B - COMADMIN_E_SESSION Handle = 0x8011042C - COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D - COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E - COMADMIN_E_REGISTERTLB Handle = 0x80110430 - COMADMIN_E_SYSTEMAPP Handle = 0x80110433 - COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434 - COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435 - COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436 - COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437 - COMADMIN_E_OBJECTEXISTS Handle = 0x80110438 - COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439 - COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B - COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C - COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E - COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F - COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446 - COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447 - COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448 - COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449 - COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A - COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B - COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C - COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D - COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E - COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F - COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450 - COMADMIN_E_START_APP_DISABLED Handle = 0x80110451 - COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457 - COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458 - COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459 - COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A - COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B - COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C - COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D - COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472 - COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473 - COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474 - COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475 - COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480 - COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481 - COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482 - COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483 - COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484 - COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485 - COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486 - COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600 - COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601 - COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602 - COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603 - COMQC_E_BAD_MESSAGE Handle = 0x80110604 - COMQC_E_UNAUTHENTICATED Handle = 0x80110605 - COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606 - MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701 - COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808 - COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809 - COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A - COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B - COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D - COMADMIN_E_USER_IN_SET Handle = 0x8011080E - COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F - COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811 - COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812 - COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813 - COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814 - COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815 - COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816 - COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817 - COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818 - COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819 - COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A - COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B - COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C - COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D - COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E - COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F - COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820 - COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821 - COMADMIN_E_SAFERINVALID Handle = 0x80110822 - COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823 - COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824 - WER_S_REPORT_DEBUG Handle = 0x001B0000 - WER_S_REPORT_UPLOADED Handle = 0x001B0001 - WER_S_REPORT_QUEUED Handle = 0x001B0002 - WER_S_DISABLED Handle = 0x001B0003 - WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004 - WER_S_DISABLED_QUEUE Handle = 0x001B0005 - WER_S_DISABLED_ARCHIVE Handle = 0x001B0006 - WER_S_REPORT_ASYNC Handle = 0x001B0007 - WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008 - WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009 - WER_S_ASSERT_CONTINUE Handle = 0x001B000A - WER_S_THROTTLED Handle = 0x001B000B - WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C - WER_E_CRASH_FAILURE Handle = 0x801B8000 - WER_E_CANCELED Handle = 0x801B8001 - WER_E_NETWORK_FAILURE Handle = 0x801B8002 - WER_E_NOT_INITIALIZED Handle = 0x801B8003 - WER_E_ALREADY_REPORTING Handle = 0x801B8004 - WER_E_DUMP_THROTTLED Handle = 0x801B8005 - WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006 - WER_E_TOO_HEAVY Handle = 0x801B8007 - ERROR_FLT_IO_COMPLETE Handle = 0x001F0001 - ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001 - ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002 - ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003 - ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004 - ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005 - ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006 - ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007 - ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008 - ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009 - ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A - ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B - ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C - ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D - ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E - ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F - ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010 - ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011 - ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012 - ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013 - ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014 - ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015 - ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016 - ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017 - ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018 - ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019 - ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A - ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B - ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C - ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020 - ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023 - ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001 - DWM_E_COMPOSITIONDISABLED Handle = 0x80263001 - DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002 - DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003 - DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004 - DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005 - DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005 - DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007 - DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008 - ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001 - ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002 - ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003 - ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004 - ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005 - ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006 - ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007 - ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008 - ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009 - ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A - ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000 - ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001 - ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002 - ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003 - ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004 - ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005 - ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006 - ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007 - ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008 - ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009 - ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A - ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B - ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C - ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D - ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E - ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F - ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 - ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 - ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 - ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 - ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 - ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103 - ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104 - ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105 - ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106 - ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107 - ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108 - ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109 - ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110 - ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111 - ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112 - ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113 - ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114 - ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115 - ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116 - ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200 - ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201 - ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300 - ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301 - ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302 - ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303 - ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304 - ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305 - ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306 - ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307 - ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308 - ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309 - ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A - ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B - ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C - ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310 - ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311 - ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312 - ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313 - ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314 - ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315 - ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316 - ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317 - ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318 - ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319 - ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A - ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B - ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C - ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D - ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E - ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F - ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320 - ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321 - ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322 - ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323 - ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324 - ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325 - ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326 - ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327 - ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328 - ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329 - ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A - ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B - ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C - ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D - ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E - ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F - ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330 - ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331 - ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332 - ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333 - ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334 - ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335 - ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336 - ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337 - ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338 - ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339 - ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A - ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B - ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C - ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D - ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E - ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F - ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340 - ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341 - ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342 - ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343 - ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344 - ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345 - ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346 - ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347 - ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348 - ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349 - ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A - ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B - ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C - ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D - ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E - ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F - ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350 - ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351 - ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352 - ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353 - ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354 - ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355 - ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356 - ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357 - ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358 - ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359 - ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A - ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B - ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C - ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400 - ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401 - ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F - ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430 - ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431 - ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432 - ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433 - ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434 - ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435 - ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436 - ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437 - ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438 - ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439 - ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A - ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B - ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C - ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500 - ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501 - ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502 - ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503 - ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505 - ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B - ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C - ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E - ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F - ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510 - ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511 - ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512 - ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513 - ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514 - ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515 - ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516 - ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517 - ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518 - ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A - ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B - ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C - ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D - ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E - ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F - ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520 - ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521 - ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580 - ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581 - ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582 - ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583 - ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584 - ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585 - ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586 - ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587 - ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588 - ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589 - ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A - ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B - ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C - ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D - ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8 - ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9 - ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA - ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB - ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC - ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE - ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF - ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0 - ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1 - ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2 - ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3 - ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4 - ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5 - ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6 - ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7 - ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8 - NAP_E_INVALID_PACKET Handle = 0x80270001 - NAP_E_MISSING_SOH Handle = 0x80270002 - NAP_E_CONFLICTING_ID Handle = 0x80270003 - NAP_E_NO_CACHED_SOH Handle = 0x80270004 - NAP_E_STILL_BOUND Handle = 0x80270005 - NAP_E_NOT_REGISTERED Handle = 0x80270006 - NAP_E_NOT_INITIALIZED Handle = 0x80270007 - NAP_E_MISMATCHED_ID Handle = 0x80270008 - NAP_E_NOT_PENDING Handle = 0x80270009 - NAP_E_ID_NOT_FOUND Handle = 0x8027000A - NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B - NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C - NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D - NAP_E_ENTITY_DISABLED Handle = 0x8027000E - NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F - NAP_E_TOO_MANY_CALLS Handle = 0x80270010 - NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011 - NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012 - NAP_E_SHV_TIMEOUT Handle = 0x80270013 - TPM_E_ERROR_MASK Handle = 0x80280000 - TPM_E_AUTHFAIL Handle = 0x80280001 - TPM_E_BADINDEX Handle = 0x80280002 - TPM_E_BAD_PARAMETER Handle = 0x80280003 - TPM_E_AUDITFAILURE Handle = 0x80280004 - TPM_E_CLEAR_DISABLED Handle = 0x80280005 - TPM_E_DEACTIVATED Handle = 0x80280006 - TPM_E_DISABLED Handle = 0x80280007 - TPM_E_DISABLED_CMD Handle = 0x80280008 - TPM_E_FAIL Handle = 0x80280009 - TPM_E_BAD_ORDINAL Handle = 0x8028000A - TPM_E_INSTALL_DISABLED Handle = 0x8028000B - TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C - TPM_E_KEYNOTFOUND Handle = 0x8028000D - TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E - TPM_E_MIGRATEFAIL Handle = 0x8028000F - TPM_E_INVALID_PCR_INFO Handle = 0x80280010 - TPM_E_NOSPACE Handle = 0x80280011 - TPM_E_NOSRK Handle = 0x80280012 - TPM_E_NOTSEALED_BLOB Handle = 0x80280013 - TPM_E_OWNER_SET Handle = 0x80280014 - TPM_E_RESOURCES Handle = 0x80280015 - TPM_E_SHORTRANDOM Handle = 0x80280016 - TPM_E_SIZE Handle = 0x80280017 - TPM_E_WRONGPCRVAL Handle = 0x80280018 - TPM_E_BAD_PARAM_SIZE Handle = 0x80280019 - TPM_E_SHA_THREAD Handle = 0x8028001A - TPM_E_SHA_ERROR Handle = 0x8028001B - TPM_E_FAILEDSELFTEST Handle = 0x8028001C - TPM_E_AUTH2FAIL Handle = 0x8028001D - TPM_E_BADTAG Handle = 0x8028001E - TPM_E_IOERROR Handle = 0x8028001F - TPM_E_ENCRYPT_ERROR Handle = 0x80280020 - TPM_E_DECRYPT_ERROR Handle = 0x80280021 - TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022 - TPM_E_NO_ENDORSEMENT Handle = 0x80280023 - TPM_E_INVALID_KEYUSAGE Handle = 0x80280024 - TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025 - TPM_E_INVALID_POSTINIT Handle = 0x80280026 - TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027 - TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028 - TPM_E_BAD_MIGRATION Handle = 0x80280029 - TPM_E_BAD_SCHEME Handle = 0x8028002A - TPM_E_BAD_DATASIZE Handle = 0x8028002B - TPM_E_BAD_MODE Handle = 0x8028002C - TPM_E_BAD_PRESENCE Handle = 0x8028002D - TPM_E_BAD_VERSION Handle = 0x8028002E - TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F - TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030 - TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031 - TPM_E_NOTRESETABLE Handle = 0x80280032 - TPM_E_NOTLOCAL Handle = 0x80280033 - TPM_E_BAD_TYPE Handle = 0x80280034 - TPM_E_INVALID_RESOURCE Handle = 0x80280035 - TPM_E_NOTFIPS Handle = 0x80280036 - TPM_E_INVALID_FAMILY Handle = 0x80280037 - TPM_E_NO_NV_PERMISSION Handle = 0x80280038 - TPM_E_REQUIRES_SIGN Handle = 0x80280039 - TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A - TPM_E_AUTH_CONFLICT Handle = 0x8028003B - TPM_E_AREA_LOCKED Handle = 0x8028003C - TPM_E_BAD_LOCALITY Handle = 0x8028003D - TPM_E_READ_ONLY Handle = 0x8028003E - TPM_E_PER_NOWRITE Handle = 0x8028003F - TPM_E_FAMILYCOUNT Handle = 0x80280040 - TPM_E_WRITE_LOCKED Handle = 0x80280041 - TPM_E_BAD_ATTRIBUTES Handle = 0x80280042 - TPM_E_INVALID_STRUCTURE Handle = 0x80280043 - TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044 - TPM_E_BAD_COUNTER Handle = 0x80280045 - TPM_E_NOT_FULLWRITE Handle = 0x80280046 - TPM_E_CONTEXT_GAP Handle = 0x80280047 - TPM_E_MAXNVWRITES Handle = 0x80280048 - TPM_E_NOOPERATOR Handle = 0x80280049 - TPM_E_RESOURCEMISSING Handle = 0x8028004A - TPM_E_DELEGATE_LOCK Handle = 0x8028004B - TPM_E_DELEGATE_FAMILY Handle = 0x8028004C - TPM_E_DELEGATE_ADMIN Handle = 0x8028004D - TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E - TPM_E_OWNER_CONTROL Handle = 0x8028004F - TPM_E_DAA_RESOURCES Handle = 0x80280050 - TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051 - TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052 - TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053 - TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054 - TPM_E_DAA_STAGE Handle = 0x80280055 - TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056 - TPM_E_DAA_WRONG_W Handle = 0x80280057 - TPM_E_BAD_HANDLE Handle = 0x80280058 - TPM_E_BAD_DELEGATE Handle = 0x80280059 - TPM_E_BADCONTEXT Handle = 0x8028005A - TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B - TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C - TPM_E_MA_DESTINATION Handle = 0x8028005D - TPM_E_MA_SOURCE Handle = 0x8028005E - TPM_E_MA_AUTHORITY Handle = 0x8028005F - TPM_E_PERMANENTEK Handle = 0x80280061 - TPM_E_BAD_SIGNATURE Handle = 0x80280062 - TPM_E_NOCONTEXTSPACE Handle = 0x80280063 - TPM_20_E_ASYMMETRIC Handle = 0x80280081 - TPM_20_E_ATTRIBUTES Handle = 0x80280082 - TPM_20_E_HASH Handle = 0x80280083 - TPM_20_E_VALUE Handle = 0x80280084 - TPM_20_E_HIERARCHY Handle = 0x80280085 - TPM_20_E_KEY_SIZE Handle = 0x80280087 - TPM_20_E_MGF Handle = 0x80280088 - TPM_20_E_MODE Handle = 0x80280089 - TPM_20_E_TYPE Handle = 0x8028008A - TPM_20_E_HANDLE Handle = 0x8028008B - TPM_20_E_KDF Handle = 0x8028008C - TPM_20_E_RANGE Handle = 0x8028008D - TPM_20_E_AUTH_FAIL Handle = 0x8028008E - TPM_20_E_NONCE Handle = 0x8028008F - TPM_20_E_PP Handle = 0x80280090 - TPM_20_E_SCHEME Handle = 0x80280092 - TPM_20_E_SIZE Handle = 0x80280095 - TPM_20_E_SYMMETRIC Handle = 0x80280096 - TPM_20_E_TAG Handle = 0x80280097 - TPM_20_E_SELECTOR Handle = 0x80280098 - TPM_20_E_INSUFFICIENT Handle = 0x8028009A - TPM_20_E_SIGNATURE Handle = 0x8028009B - TPM_20_E_KEY Handle = 0x8028009C - TPM_20_E_POLICY_FAIL Handle = 0x8028009D - TPM_20_E_INTEGRITY Handle = 0x8028009F - TPM_20_E_TICKET Handle = 0x802800A0 - TPM_20_E_RESERVED_BITS Handle = 0x802800A1 - TPM_20_E_BAD_AUTH Handle = 0x802800A2 - TPM_20_E_EXPIRED Handle = 0x802800A3 - TPM_20_E_POLICY_CC Handle = 0x802800A4 - TPM_20_E_BINDING Handle = 0x802800A5 - TPM_20_E_CURVE Handle = 0x802800A6 - TPM_20_E_ECC_POINT Handle = 0x802800A7 - TPM_20_E_INITIALIZE Handle = 0x80280100 - TPM_20_E_FAILURE Handle = 0x80280101 - TPM_20_E_SEQUENCE Handle = 0x80280103 - TPM_20_E_PRIVATE Handle = 0x8028010B - TPM_20_E_HMAC Handle = 0x80280119 - TPM_20_E_DISABLED Handle = 0x80280120 - TPM_20_E_EXCLUSIVE Handle = 0x80280121 - TPM_20_E_ECC_CURVE Handle = 0x80280123 - TPM_20_E_AUTH_TYPE Handle = 0x80280124 - TPM_20_E_AUTH_MISSING Handle = 0x80280125 - TPM_20_E_POLICY Handle = 0x80280126 - TPM_20_E_PCR Handle = 0x80280127 - TPM_20_E_PCR_CHANGED Handle = 0x80280128 - TPM_20_E_UPGRADE Handle = 0x8028012D - TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E - TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F - TPM_20_E_REBOOT Handle = 0x80280130 - TPM_20_E_UNBALANCED Handle = 0x80280131 - TPM_20_E_COMMAND_SIZE Handle = 0x80280142 - TPM_20_E_COMMAND_CODE Handle = 0x80280143 - TPM_20_E_AUTHSIZE Handle = 0x80280144 - TPM_20_E_AUTH_CONTEXT Handle = 0x80280145 - TPM_20_E_NV_RANGE Handle = 0x80280146 - TPM_20_E_NV_SIZE Handle = 0x80280147 - TPM_20_E_NV_LOCKED Handle = 0x80280148 - TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149 - TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A - TPM_20_E_NV_SPACE Handle = 0x8028014B - TPM_20_E_NV_DEFINED Handle = 0x8028014C - TPM_20_E_BAD_CONTEXT Handle = 0x80280150 - TPM_20_E_CPHASH Handle = 0x80280151 - TPM_20_E_PARENT Handle = 0x80280152 - TPM_20_E_NEEDS_TEST Handle = 0x80280153 - TPM_20_E_NO_RESULT Handle = 0x80280154 - TPM_20_E_SENSITIVE Handle = 0x80280155 - TPM_E_COMMAND_BLOCKED Handle = 0x80280400 - TPM_E_INVALID_HANDLE Handle = 0x80280401 - TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402 - TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403 - TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404 - TPM_E_RETRY Handle = 0x80280800 - TPM_E_NEEDS_SELFTEST Handle = 0x80280801 - TPM_E_DOING_SELFTEST Handle = 0x80280802 - TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803 - TPM_20_E_CONTEXT_GAP Handle = 0x80280901 - TPM_20_E_OBJECT_MEMORY Handle = 0x80280902 - TPM_20_E_SESSION_MEMORY Handle = 0x80280903 - TPM_20_E_MEMORY Handle = 0x80280904 - TPM_20_E_SESSION_HANDLES Handle = 0x80280905 - TPM_20_E_OBJECT_HANDLES Handle = 0x80280906 - TPM_20_E_LOCALITY Handle = 0x80280907 - TPM_20_E_YIELDED Handle = 0x80280908 - TPM_20_E_CANCELED Handle = 0x80280909 - TPM_20_E_TESTING Handle = 0x8028090A - TPM_20_E_NV_RATE Handle = 0x80280920 - TPM_20_E_LOCKOUT Handle = 0x80280921 - TPM_20_E_RETRY Handle = 0x80280922 - TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923 - TBS_E_INTERNAL_ERROR Handle = 0x80284001 - TBS_E_BAD_PARAMETER Handle = 0x80284002 - TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003 - TBS_E_INVALID_CONTEXT Handle = 0x80284004 - TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005 - TBS_E_IOERROR Handle = 0x80284006 - TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007 - TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008 - TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009 - TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A - TBS_E_SERVICE_START_PENDING Handle = 0x8028400B - TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C - TBS_E_COMMAND_CANCELED Handle = 0x8028400D - TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E - TBS_E_TPM_NOT_FOUND Handle = 0x8028400F - TBS_E_SERVICE_DISABLED Handle = 0x80284010 - TBS_E_NO_EVENT_LOG Handle = 0x80284011 - TBS_E_ACCESS_DENIED Handle = 0x80284012 - TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013 - TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014 - TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015 - TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016 - TPMAPI_E_INVALID_STATE Handle = 0x80290100 - TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101 - TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102 - TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103 - TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104 - TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105 - TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106 - TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107 - TPMAPI_E_ACCESS_DENIED Handle = 0x80290108 - TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109 - TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A - TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B - TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C - TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D - TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E - TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F - TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110 - TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111 - TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112 - TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113 - TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114 - TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115 - TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116 - TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117 - TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118 - TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119 - TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A - TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B - TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C - TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D - TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E - TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F - TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120 - TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121 - TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122 - TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123 - TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124 - TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125 - TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126 - TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127 - TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128 - TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129 - TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A - TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B - TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C - TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200 - TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201 - TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202 - TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203 - TBSIMP_E_TPM_ERROR Handle = 0x80290204 - TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205 - TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206 - TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207 - TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208 - TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209 - TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A - TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B - TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C - TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D - TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E - TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F - TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210 - TBSIMP_E_COMMAND_FAILED Handle = 0x80290211 - TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212 - TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213 - TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214 - TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215 - TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216 - TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217 - TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218 - TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219 - TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A - TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B - TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300 - TPM_E_PPI_USER_ABORT Handle = 0x80290301 - TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302 - TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303 - TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304 - TPM_E_PCP_ERROR_MASK Handle = 0x80290400 - TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401 - TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402 - TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403 - TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404 - TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405 - TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406 - TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407 - TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408 - TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409 - TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A - TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B - TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C - TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E - TPM_E_KEY_NOT_LOADED Handle = 0x8029040F - TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410 - TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411 - TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412 - TPM_E_NOT_PCR_BOUND Handle = 0x80290413 - TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414 - TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415 - TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416 - TPM_E_SOFT_KEY_ERROR Handle = 0x80290417 - TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418 - TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419 - TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A - TPM_E_LOCKED_OUT Handle = 0x8029041B - TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C - TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D - TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E - TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F - TPM_E_PCP_TICKET_MISSING Handle = 0x80290420 - TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421 - TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422 - TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423 - TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500 - PLA_E_DCS_NOT_FOUND Handle = 0x80300002 - PLA_E_DCS_IN_USE Handle = 0x803000AA - PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045 - PLA_E_NO_MIN_DISK Handle = 0x80300070 - PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7 - PLA_S_PROPERTY_IGNORED Handle = 0x00300100 - PLA_E_PROPERTY_CONFLICT Handle = 0x80300101 - PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102 - PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103 - PLA_E_DCS_NOT_RUNNING Handle = 0x80300104 - PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105 - PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106 - PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107 - PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108 - PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109 - PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A - PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B - PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C - PLA_E_NO_DUPLICATES Handle = 0x8030010D - PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E - PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F - PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110 - PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111 - PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112 - PLA_E_CABAPI_FAILURE Handle = 0x80300113 - FVE_E_LOCKED_VOLUME Handle = 0x80310000 - FVE_E_NOT_ENCRYPTED Handle = 0x80310001 - FVE_E_NO_TPM_BIOS Handle = 0x80310002 - FVE_E_NO_MBR_METRIC Handle = 0x80310003 - FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004 - FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005 - FVE_E_WRONG_BOOTMGR Handle = 0x80310006 - FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007 - FVE_E_NOT_ACTIVATED Handle = 0x80310008 - FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009 - FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A - FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B - FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C - FVE_E_AD_NO_VALUES Handle = 0x8031000D - FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E - FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F - FVE_E_BAD_INFORMATION Handle = 0x80310010 - FVE_E_TOO_SMALL Handle = 0x80310011 - FVE_E_SYSTEM_VOLUME Handle = 0x80310012 - FVE_E_FAILED_WRONG_FS Handle = 0x80310013 - FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014 - FVE_E_NOT_SUPPORTED Handle = 0x80310015 - FVE_E_BAD_DATA Handle = 0x80310016 - FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017 - FVE_E_TPM_NOT_OWNED Handle = 0x80310018 - FVE_E_NOT_DATA_VOLUME Handle = 0x80310019 - FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A - FVE_E_CONV_READ Handle = 0x8031001B - FVE_E_CONV_WRITE Handle = 0x8031001C - FVE_E_KEY_REQUIRED Handle = 0x8031001D - FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E - FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F - FVE_E_OS_NOT_PROTECTED Handle = 0x80310020 - FVE_E_PROTECTION_DISABLED Handle = 0x80310021 - FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022 - FVE_E_FOREIGN_VOLUME Handle = 0x80310023 - FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024 - FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025 - FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026 - FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027 - FVE_E_NOT_OS_VOLUME Handle = 0x80310028 - FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029 - FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A - FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B - FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C - FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D - FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E - FVE_E_BOOTABLE_CDDVD Handle = 0x80310030 - FVE_E_PROTECTOR_EXISTS Handle = 0x80310031 - FVE_E_RELATIVE_PATH Handle = 0x80310032 - FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033 - FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034 - FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035 - FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036 - FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037 - FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038 - FVE_E_NOT_DECRYPTED Handle = 0x80310039 - FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A - FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B - FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C - FVE_E_KEYFILE_INVALID Handle = 0x8031003D - FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E - FVE_E_TPM_DISABLED Handle = 0x8031003F - FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040 - FVE_E_TPM_INVALID_PCR Handle = 0x80310041 - FVE_E_TPM_NO_VMK Handle = 0x80310042 - FVE_E_PIN_INVALID Handle = 0x80310043 - FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044 - FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045 - FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046 - FVE_E_FS_NOT_EXTENDED Handle = 0x80310047 - FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048 - FVE_E_NO_LICENSE Handle = 0x80310049 - FVE_E_NOT_ON_STACK Handle = 0x8031004A - FVE_E_FS_MOUNTED Handle = 0x8031004B - FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C - FVE_E_DRY_RUN_FAILED Handle = 0x8031004D - FVE_E_REBOOT_REQUIRED Handle = 0x8031004E - FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F - FVE_E_RAW_ACCESS Handle = 0x80310050 - FVE_E_RAW_BLOCKED Handle = 0x80310051 - FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052 - FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053 - FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054 - FVE_E_MOR_FAILED Handle = 0x80310055 - FVE_E_HIDDEN_VOLUME Handle = 0x80310056 - FVE_E_TRANSIENT_STATE Handle = 0x80310057 - FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058 - FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059 - FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A - FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B - FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C - FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D - FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E - FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F - FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060 - FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061 - FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062 - FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063 - FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064 - FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065 - FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066 - FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067 - FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068 - FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069 - FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A - FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B - FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C - FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D - FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E - FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F - FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070 - FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071 - FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072 - FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073 - FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074 - FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075 - FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076 - FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077 - FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078 - FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079 - FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080 - FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081 - FVE_E_RECOVERY_PARTITION Handle = 0x80310082 - FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083 - FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084 - FVE_E_NON_BITLOCKER_OID Handle = 0x80310085 - FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086 - FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087 - FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088 - FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089 - FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090 - FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091 - FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092 - FVE_E_NON_BITLOCKER_KU Handle = 0x80310093 - FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094 - FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095 - FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096 - FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097 - FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098 - FVE_E_ENH_PIN_INVALID Handle = 0x80310099 - FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A - FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B - FVE_E_EFI_ONLY Handle = 0x8031009C - FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D - FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E - FVE_E_INVALID_NKP_CERT Handle = 0x8031009F - FVE_E_NO_EXISTING_PIN Handle = 0x803100A0 - FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1 - FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2 - FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3 - FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4 - FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5 - FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6 - FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7 - FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8 - FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9 - FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA - FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB - FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC - FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD - FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE - FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF - FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0 - FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1 - FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2 - FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3 - FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4 - FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5 - FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6 - FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7 - FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8 - FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9 - FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA - FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB - FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC - FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD - FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE - FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF - FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0 - FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1 - FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2 - FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3 - FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4 - FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5 - FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6 - FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7 - FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8 - FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9 - FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA - FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB - FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC - FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD - FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE - FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF - FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0 - FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1 - FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2 - FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3 - FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4 - FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5 - FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6 - FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 - FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 - FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 - FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 - FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 - FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 - FWP_E_LAYER_NOT_FOUND Handle = 0x80320004 - FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005 - FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006 - FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007 - FWP_E_NOT_FOUND Handle = 0x80320008 - FWP_E_ALREADY_EXISTS Handle = 0x80320009 - FWP_E_IN_USE Handle = 0x8032000A - FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B - FWP_E_WRONG_SESSION Handle = 0x8032000C - FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D - FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E - FWP_E_TXN_ABORTED Handle = 0x8032000F - FWP_E_SESSION_ABORTED Handle = 0x80320010 - FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011 - FWP_E_TIMEOUT Handle = 0x80320012 - FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013 - FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014 - FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015 - FWP_E_LIFETIME_MISMATCH Handle = 0x80320016 - FWP_E_BUILTIN_OBJECT Handle = 0x80320017 - FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018 - FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019 - FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A - FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B - FWP_E_NULL_POINTER Handle = 0x8032001C - FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D - FWP_E_INVALID_FLAGS Handle = 0x8032001E - FWP_E_INVALID_NET_MASK Handle = 0x8032001F - FWP_E_INVALID_RANGE Handle = 0x80320020 - FWP_E_INVALID_INTERVAL Handle = 0x80320021 - FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022 - FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023 - FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024 - FWP_E_INVALID_WEIGHT Handle = 0x80320025 - FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026 - FWP_E_TYPE_MISMATCH Handle = 0x80320027 - FWP_E_OUT_OF_BOUNDS Handle = 0x80320028 - FWP_E_RESERVED Handle = 0x80320029 - FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A - FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B - FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C - FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D - FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E - FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F - FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030 - FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031 - FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032 - FWP_E_NEVER_MATCH Handle = 0x80320033 - FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034 - FWP_E_INVALID_PARAMETER Handle = 0x80320035 - FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036 - FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037 - FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038 - FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039 - FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A - FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B - FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C - FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D - FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E - FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F - FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040 - FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041 - FWP_E_INVALID_DNS_NAME Handle = 0x80320042 - FWP_E_STILL_ON Handle = 0x80320043 - FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044 - FWP_E_DROP_NOICMP Handle = 0x80320104 - WS_S_ASYNC Handle = 0x003D0000 - WS_S_END Handle = 0x003D0001 - WS_E_INVALID_FORMAT Handle = 0x803D0000 - WS_E_OBJECT_FAULTED Handle = 0x803D0001 - WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002 - WS_E_INVALID_OPERATION Handle = 0x803D0003 - WS_E_OPERATION_ABORTED Handle = 0x803D0004 - WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005 - WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006 - WS_E_OPERATION_ABANDONED Handle = 0x803D0007 - WS_E_QUOTA_EXCEEDED Handle = 0x803D0008 - WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009 - WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A - WS_E_ADDRESS_IN_USE Handle = 0x803D000B - WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C - WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D - WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E - WS_E_ENDPOINT_FAILURE Handle = 0x803D000F - WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010 - WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011 - WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012 - WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013 - WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014 - WS_E_PROXY_FAILURE Handle = 0x803D0015 - WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016 - WS_E_NOT_SUPPORTED Handle = 0x803D0017 - WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018 - WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019 - WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A - WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B - WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C - WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D - WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E - WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F - WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020 - WS_E_OTHER Handle = 0x803D0021 - WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022 - WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023 - ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002 - ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004 - ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005 - ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006 - ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007 - ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008 - ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009 - ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A - ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B - ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C - ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D - ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB - ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F - ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011 - ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014 - ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015 - ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016 - ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017 - ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018 - ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019 - ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A - ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B - ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C - ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D - ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E - ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F - ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022 - ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010 - ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A - ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B - ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C - ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D - ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E - ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F - ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030 - ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031 - ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000 - ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001 - ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002 - ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003 - ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004 - ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005 - ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006 - ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007 - ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008 - ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001 - ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F - ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012 - ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013 - ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002 - ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003 - ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004 - ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005 - ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006 - ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007 - ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008 - ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009 - ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A - ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B - ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C - ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D - ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E - ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011 - ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012 - ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013 - ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014 - ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015 - ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016 - ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017 - ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018 - ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019 - ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A - ERROR_HV_NO_DATA syscall.Errno = 0xC035001B - ERROR_HV_INACTIVE syscall.Errno = 0xC035001C - ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D - ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E - ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033 - ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038 - ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C - ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D - ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E - ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F - ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041 - ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050 - ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051 - ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055 - ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057 - ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058 - ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059 - ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060 - ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F - ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070 - ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071 - ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072 - ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073 - ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000 - ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001 - ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002 - ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003 - ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004 - ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005 - ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006 - ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007 - ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008 - ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009 - ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A - ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B - ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C - ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D - ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E - ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F - ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010 - ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011 - ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012 - ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013 - ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014 - ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015 - ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016 - ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017 - ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018 - ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019 - ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A - ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B - ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C - ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D - ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E - ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F - ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020 - ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021 - ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022 - ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023 - ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024 - ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025 - ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026 - ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027 - ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028 - ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029 - ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A - ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100 - ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101 - ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102 - ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103 - ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104 - ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105 - ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106 - ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107 - ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108 - ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109 - ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A - ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B - ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C - ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D - ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E - ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F - ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110 - ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111 - ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112 - ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113 - HCS_E_TERMINATED_DURING_START Handle = 0x80370100 - HCS_E_IMAGE_MISMATCH Handle = 0x80370101 - HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102 - HCS_E_INVALID_STATE Handle = 0x80370105 - HCS_E_UNEXPECTED_EXIT Handle = 0x80370106 - HCS_E_TERMINATED Handle = 0x80370107 - HCS_E_CONNECT_FAILED Handle = 0x80370108 - HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109 - HCS_E_CONNECTION_CLOSED Handle = 0x8037010A - HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B - HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C - HCS_E_INVALID_JSON Handle = 0x8037010D - HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E - HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F - HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110 - HCS_E_PROTOCOL_ERROR Handle = 0x80370111 - HCS_E_INVALID_LAYER Handle = 0x80370112 - HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113 - HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114 - HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115 - HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116 - HCS_E_OPERATION_PENDING Handle = 0x80370117 - HCS_E_OPERATION_TIMEOUT Handle = 0x80370118 - HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119 - HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A - HCS_E_ACCESS_DENIED Handle = 0x8037011B - HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C - ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200 - ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001 - WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300 - WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301 - WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302 - WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303 - WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304 - WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305 - WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306 - WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307 - WHV_E_INVALID_VP_STATE Handle = 0x80370308 - WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309 - ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400 - ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401 - ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001 - ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002 - ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001 - ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002 - ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003 - ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004 - ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005 - ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006 - ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007 - ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008 - ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009 - ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A - ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B - ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C - ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D - ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E - ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F - ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010 - ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011 - ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012 - ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013 - ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014 - ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015 - ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016 - ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017 - ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018 - ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019 - ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A - ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B - ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C - ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D - ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E - ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F - ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020 - ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021 - ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022 - ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023 - ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024 - ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025 - ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026 - ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027 - ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028 - ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029 - ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A - ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B - ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C - ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D - ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E - ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F - ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030 - ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031 - ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032 - ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033 - ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034 - ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035 - ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036 - ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037 - ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038 - ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039 - ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A - ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B - ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C - ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D - ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E - ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F - ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040 - ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041 - ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042 - ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043 - ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044 - ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045 - ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046 - ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047 - ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048 - ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049 - ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A - ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B - ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C - ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D - ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E - ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F - ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050 - ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051 - ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052 - ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053 - ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054 - ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055 - ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056 - ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057 - ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058 - ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059 - ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A - ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B - ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C - ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001 - ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002 - ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003 - ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001 - ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002 - ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003 - ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004 - ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005 - ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006 - ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007 - ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008 - ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009 - ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A - ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B - ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C - ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D - ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E - ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F - ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010 - ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011 - ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012 - ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013 - ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014 - ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015 - ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016 - ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017 - ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018 - ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019 - ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A - ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B - ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C - ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D - ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E - ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F - ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020 - ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021 - ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022 - ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023 - ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024 - ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025 - ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026 - ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027 - ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028 - ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029 - ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A - ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030 - ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001 - HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001 - HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002 - HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003 - HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004 - HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005 - HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006 - HCN_E_PORT_NOT_FOUND Handle = 0x803B0007 - HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008 - HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009 - HCN_E_INVALID_NETWORK Handle = 0x803B000A - HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B - HCN_E_INVALID_ENDPOINT Handle = 0x803B000C - HCN_E_INVALID_POLICY Handle = 0x803B000D - HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E - HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F - HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010 - HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011 - HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012 - HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013 - HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014 - HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015 - HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016 - HCN_E_DEGRADED_OPERATION Handle = 0x803B0017 - HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018 - HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019 - HCN_E_REGKEY_FAILURE Handle = 0x803B001A - HCN_E_INVALID_JSON Handle = 0x803B001B - HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C - HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D - HCN_E_INVALID_IP Handle = 0x803B001E - HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F - HCN_E_MANAGER_STOPPED Handle = 0x803B0020 - GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021 - GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022 - GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023 - GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024 - GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025 - GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026 - GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 - GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 - GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 - SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 - SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 - SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 - SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103 - SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104 - SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105 - SDIAG_E_DISABLED syscall.Errno = 0x803C0106 - SDIAG_E_TRUST syscall.Errno = 0x803C0107 - SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108 - SDIAG_E_VERSION syscall.Errno = 0x803C0109 - SDIAG_E_RESOURCE syscall.Errno = 0x803C010A - SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B - WPN_E_CHANNEL_CLOSED Handle = 0x803E0100 - WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101 - WPN_E_INVALID_APP Handle = 0x803E0102 - WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103 - WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104 - WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105 - WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106 - WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107 - WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108 - WPN_E_CLOUD_DISABLED Handle = 0x803E0109 - WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110 - WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A - WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B - WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C - WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111 - WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112 - WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113 - WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114 - WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115 - WPN_E_TAG_SIZE Handle = 0x803E0116 - WPN_E_ACCESS_DENIED Handle = 0x803E0117 - WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118 - WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119 - WPN_E_DEV_ID_SIZE Handle = 0x803E0120 - WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A - WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B - WPN_E_OUT_OF_SESSION Handle = 0x803E0200 - WPN_E_POWER_SAVE Handle = 0x803E0201 - WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202 - WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203 - WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204 - WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205 - WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206 - WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207 - WPN_E_STORAGE_LOCKED Handle = 0x803E0208 - WPN_E_GROUP_SIZE Handle = 0x803E0209 - WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A - WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B - E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201 - E_MBN_BAD_SIM Handle = 0x80548202 - E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203 - E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204 - E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205 - E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206 - E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207 - E_MBN_RADIO_POWER_OFF Handle = 0x80548208 - E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209 - E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A - E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B - E_MBN_INVALID_CACHE Handle = 0x8054820C - E_MBN_NOT_REGISTERED Handle = 0x8054820D - E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E - E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F - E_MBN_PIN_REQUIRED Handle = 0x80548210 - E_MBN_PIN_DISABLED Handle = 0x80548211 - E_MBN_FAILURE Handle = 0x80548212 - E_MBN_INVALID_PROFILE Handle = 0x80548218 - E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219 - E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220 - E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221 - E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222 - E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223 - E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224 - E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225 - E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226 - E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227 - E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228 - E_MBN_SMS_MEMORY_FULL Handle = 0x80548229 - PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001 - PEER_E_NOT_INITIALIZED Handle = 0x80630002 - PEER_E_CANNOT_START_SERVICE Handle = 0x80630003 - PEER_E_NOT_LICENSED Handle = 0x80630004 - PEER_E_INVALID_GRAPH Handle = 0x80630010 - PEER_E_DBNAME_CHANGED Handle = 0x80630011 - PEER_E_DUPLICATE_GRAPH Handle = 0x80630012 - PEER_E_GRAPH_NOT_READY Handle = 0x80630013 - PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014 - PEER_E_GRAPH_IN_USE Handle = 0x80630015 - PEER_E_INVALID_DATABASE Handle = 0x80630016 - PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017 - PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103 - PEER_E_CONNECT_SELF Handle = 0x80630106 - PEER_E_ALREADY_LISTENING Handle = 0x80630107 - PEER_E_NODE_NOT_FOUND Handle = 0x80630108 - PEER_E_CONNECTION_FAILED Handle = 0x80630109 - PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A - PEER_E_CONNECTION_REFUSED Handle = 0x8063010B - PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201 - PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202 - PEER_E_NO_KEY_ACCESS Handle = 0x80630203 - PEER_E_GROUPS_EXIST Handle = 0x80630204 - PEER_E_RECORD_NOT_FOUND Handle = 0x80630301 - PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302 - PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303 - PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304 - PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305 - PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306 - PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401 - PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501 - PEER_E_INVALID_SEARCH Handle = 0x80630601 - PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602 - PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701 - PEER_E_CHAIN_TOO_LONG Handle = 0x80630703 - PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705 - PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706 - PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801 - PEER_E_NO_CLOUD Handle = 0x80631001 - PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005 - PEER_E_INVALID_RECORD Handle = 0x80632010 - PEER_E_NOT_AUTHORIZED Handle = 0x80632020 - PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021 - PEER_E_DEFERRED_VALIDATION Handle = 0x80632030 - PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040 - PEER_E_INVALID_PEER_NAME Handle = 0x80632050 - PEER_E_INVALID_CLASSIFIER Handle = 0x80632060 - PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070 - PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071 - PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072 - PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080 - PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081 - PEER_E_INVALID_CREDENTIAL Handle = 0x80632082 - PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083 - PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090 - PEER_E_GROUP_NOT_READY Handle = 0x80632091 - PEER_E_GROUP_IN_USE Handle = 0x80632092 - PEER_E_INVALID_GROUP Handle = 0x80632093 - PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094 - PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095 - PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096 - PEER_E_IDENTITY_DELETED Handle = 0x806320A0 - PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1 - PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001 - PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001 - PEER_S_NO_EVENT_DATA Handle = 0x00630002 - PEER_S_ALREADY_CONNECTED Handle = 0x00632000 - PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000 - PEER_S_NO_CONNECTIVITY Handle = 0x00630005 - PEER_S_ALREADY_A_MEMBER Handle = 0x00630006 - PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001 - PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002 - PEER_E_NO_MORE Handle = 0x80634003 - PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005 - PEER_E_INVITE_CANCELLED Handle = 0x80637000 - PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001 - PEER_E_NOT_SIGNED_IN Handle = 0x80637003 - PEER_E_PRIVACY_DECLINED Handle = 0x80637004 - PEER_E_TIMEOUT Handle = 0x80637005 - PEER_E_INVALID_ADDRESS Handle = 0x80637007 - PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008 - PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009 - PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A - PEER_E_FW_DECLINED Handle = 0x8063700B - UI_E_CREATE_FAILED Handle = 0x802A0001 - UI_E_SHUTDOWN_CALLED Handle = 0x802A0002 - UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003 - UI_E_OBJECT_SEALED Handle = 0x802A0004 - UI_E_VALUE_NOT_SET Handle = 0x802A0005 - UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006 - UI_E_INVALID_OUTPUT Handle = 0x802A0007 - UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008 - UI_E_DIFFERENT_OWNER Handle = 0x802A0009 - UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A - UI_E_FP_OVERFLOW Handle = 0x802A000B - UI_E_WRONG_THREAD Handle = 0x802A000C - UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101 - UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102 - UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103 - UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104 - UI_E_LOOPS_OVERLAP Handle = 0x802A0105 - UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106 - UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107 - UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108 - UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109 - UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A - UI_E_INVALID_DIMENSION Handle = 0x802A010B - UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C - UI_E_WINDOW_CLOSED Handle = 0x802A0201 - E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001 - E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002 - E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003 - E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004 - E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005 - E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006 - E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007 - E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008 - E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009 - E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A - E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B - E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C - E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D - E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E - E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F - E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010 - E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011 - E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000 - E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001 - E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002 - E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003 - E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004 - E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005 - STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001 - STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002 - STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003 - STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004 - STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005 - STATEREPOSITORY_E_BLOCKED Handle = 0x80670006 - STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007 - STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008 - STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009 - STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A - STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B - STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C - STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D - STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E - STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F - STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010 - STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011 - STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012 - STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013 - STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014 - ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001 - ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001 - ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002 - ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003 - ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004 - ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006 - ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007 - ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008 - ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009 - ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A - ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B - ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C - ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D - ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E - ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F - ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010 - ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011 - ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012 - ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013 - ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014 - ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001 - ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002 - ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001 - ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002 - ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003 - ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004 - ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005 - ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006 - ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007 - ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008 - ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009 - ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A - ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000 - ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001 - ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002 - ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003 - ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004 - ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005 - ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006 - ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007 - ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008 - ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009 - ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A - DXGI_STATUS_OCCLUDED Handle = 0x087A0001 - DXGI_STATUS_CLIPPED Handle = 0x087A0002 - DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004 - DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005 - DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006 - DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007 - DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008 - DXGI_ERROR_INVALID_CALL Handle = 0x887A0001 - DXGI_ERROR_NOT_FOUND Handle = 0x887A0002 - DXGI_ERROR_MORE_DATA Handle = 0x887A0003 - DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004 - DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005 - DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006 - DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007 - DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A - DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B - DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C - DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020 - DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021 - DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022 - DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023 - DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024 - DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026 - DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027 - DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028 - DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029 - DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A - DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B - DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C - DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D - DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E - DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030 - DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031 - DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032 - DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009 - DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A - DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025 - DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F - DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033 - DXGI_ERROR_CACHE_FULL Handle = 0x887A0034 - DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035 - DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036 - DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001 - DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002 - DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003 - D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001 - D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002 - D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001 - D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002 - D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003 - D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004 - D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001 - D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002 - D2DERR_WRONG_STATE Handle = 0x88990001 - D2DERR_NOT_INITIALIZED Handle = 0x88990002 - D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003 - D2DERR_SCANNER_FAILED Handle = 0x88990004 - D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005 - D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006 - D2DERR_ZERO_VECTOR Handle = 0x88990007 - D2DERR_INTERNAL_ERROR Handle = 0x88990008 - D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009 - D2DERR_INVALID_CALL Handle = 0x8899000A - D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B - D2DERR_RECREATE_TARGET Handle = 0x8899000C - D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D - D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E - D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F - D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010 - D2DERR_BAD_NUMBER Handle = 0x88990011 - D2DERR_WRONG_FACTORY Handle = 0x88990012 - D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013 - D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014 - D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015 - D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016 - D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017 - D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018 - D2DERR_WIN32_ERROR Handle = 0x88990019 - D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A - D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B - D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C - D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D - D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E - D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F - D2DERR_CYCLIC_GRAPH Handle = 0x88990020 - D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021 - D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022 - D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023 - D2DERR_INVALID_TARGET Handle = 0x88990024 - D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025 - D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026 - D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027 - D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028 - D2DERR_INVALID_PROPERTY Handle = 0x88990029 - D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A - D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B - D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C - D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D - D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E - DWRITE_E_FILEFORMAT Handle = 0x88985000 - DWRITE_E_UNEXPECTED Handle = 0x88985001 - DWRITE_E_NOFONT Handle = 0x88985002 - DWRITE_E_FILENOTFOUND Handle = 0x88985003 - DWRITE_E_FILEACCESS Handle = 0x88985004 - DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005 - DWRITE_E_ALREADYREGISTERED Handle = 0x88985006 - DWRITE_E_CACHEFORMAT Handle = 0x88985007 - DWRITE_E_CACHEVERSION Handle = 0x88985008 - DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009 - DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A - DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B - DWRITE_E_NOCOLOR Handle = 0x8898500C - DWRITE_E_REMOTEFONT Handle = 0x8898500D - DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E - DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F - DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010 - WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04 - WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05 - WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07 - WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B - WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C - WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D - WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40 - WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41 - WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42 - WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43 - WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44 - WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45 - WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46 - WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48 - WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49 - WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50 - WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51 - WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52 - WINCODEC_ERR_BADIMAGE Handle = 0x88982F60 - WINCODEC_ERR_BADHEADER Handle = 0x88982F61 - WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62 - WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63 - WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70 - WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71 - WINCODEC_ERR_STREAMREAD Handle = 0x88982F72 - WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73 - WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80 - WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81 - WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A - WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B - WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C - WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D - WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E - WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F - WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90 - WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91 - WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92 - WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93 - WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94 - WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95 - WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96 - MILERR_OBJECTBUSY Handle = 0x88980001 - MILERR_INSUFFICIENTBUFFER Handle = 0x88980002 - MILERR_WIN32ERROR Handle = 0x88980003 - MILERR_SCANNER_FAILED Handle = 0x88980004 - MILERR_SCREENACCESSDENIED Handle = 0x88980005 - MILERR_DISPLAYSTATEINVALID Handle = 0x88980006 - MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007 - MILERR_ZEROVECTOR Handle = 0x88980008 - MILERR_TERMINATED Handle = 0x88980009 - MILERR_BADNUMBER Handle = 0x8898000A - MILERR_INTERNALERROR Handle = 0x88980080 - MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084 - MILERR_INVALIDCALL Handle = 0x88980085 - MILERR_ALREADYLOCKED Handle = 0x88980086 - MILERR_NOTLOCKED Handle = 0x88980087 - MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088 - MILERR_GLYPHBITMAPMISSED Handle = 0x88980089 - MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A - MILERR_GENERIC_IGNORE Handle = 0x8898008B - MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C - MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D - MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E - MILERR_ALREADY_INITIALIZED Handle = 0x8898008F - MILERR_MISMATCHED_SIZE Handle = 0x88980090 - MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091 - MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092 - MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093 - MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094 - MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095 - MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096 - MILERR_MROW_READLOCK_FAILED Handle = 0x88980097 - MILERR_MROW_UPDATE_FAILED Handle = 0x88980098 - MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099 - MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A - MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B - MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D - MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E - MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F - MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0 - MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1 - UCEERR_INVALIDPACKETHEADER Handle = 0x88980400 - UCEERR_UNKNOWNPACKET Handle = 0x88980401 - UCEERR_ILLEGALPACKET Handle = 0x88980402 - UCEERR_MALFORMEDPACKET Handle = 0x88980403 - UCEERR_ILLEGALHANDLE Handle = 0x88980404 - UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405 - UCEERR_RENDERTHREADFAILURE Handle = 0x88980406 - UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407 - UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408 - UCEERR_BLOCKSFULL Handle = 0x88980409 - UCEERR_MEMORYFAILURE Handle = 0x8898040A - UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B - UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C - UCEERR_OUTOFHANDLES Handle = 0x8898040D - UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E - UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F - UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410 - UCEERR_MISSINGENDCOMMAND Handle = 0x88980411 - UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412 - UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413 - UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414 - UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415 - UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416 - UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417 - UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418 - UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419 - UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420 - UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421 - UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422 - UCEERR_PARTITION_ZOMBIED Handle = 0x88980423 - MILAVERR_NOCLOCK Handle = 0x88980500 - MILAVERR_NOMEDIATYPE Handle = 0x88980501 - MILAVERR_NOVIDEOMIXER Handle = 0x88980502 - MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503 - MILAVERR_NOREADYFRAMES Handle = 0x88980504 - MILAVERR_MODULENOTLOADED Handle = 0x88980505 - MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506 - MILAVERR_INVALIDWMPVERSION Handle = 0x88980507 - MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508 - MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509 - MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A - MILAVERR_SEEKFAILED Handle = 0x8898050B - MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C - MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D - MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E - MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E - MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F - MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610 - MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611 - MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612 - MILEFFECTSERR_RESERVED Handle = 0x88980613 - MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614 - MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615 - MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616 - MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617 - MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618 - MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619 - MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A - MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B - DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700 - DWMERR_THEME_FAILED Handle = 0x88980701 - DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702 - DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800 - DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801 - DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802 - ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001 - ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002 - ONL_E_INVALID_APPLICATION Handle = 0x80860003 - ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004 - ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005 - ONL_E_FORCESIGNIN Handle = 0x80860006 - ONL_E_ACCOUNT_LOCKED Handle = 0x80860007 - ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008 - ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009 - ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A - ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B - ONL_E_ACTION_REQUIRED Handle = 0x8086000C - ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D - ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E - ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F - ONL_E_REQUEST_THROTTLED Handle = 0x80860010 - FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220 - FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222 - E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250 - E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251 - E_UAC_DISABLED Handle = 0x80270252 - E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253 - E_APPLICATION_NOT_REGISTERED Handle = 0x80270254 - E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255 - E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256 - E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257 - S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258 - S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259 - E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A - E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B - E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C - E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D - E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260 - E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261 - E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262 - E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263 - E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264 - E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265 - E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001 - E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002 - E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003 - E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004 - E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005 - E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006 - E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002 - E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003 - E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004 - E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005 - E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006 - E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007 - E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001 - E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002 - E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003 - E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004 - E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005 - E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006 - E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007 - E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008 - E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009 - E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A - E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B - EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001 - EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002 - EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003 - EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004 - EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005 - EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006 - EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007 - EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008 - EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009 - EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A - EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B - EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C - EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D - WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001 - WEB_E_INVALID_XML Handle = 0x83750002 - WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003 - WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004 - WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005 - WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006 - WEB_E_INVALID_JSON_STRING Handle = 0x83750007 - WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008 - WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009 - HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001 - HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003 - HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004 - HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005 - HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C - HTTP_E_STATUS_MOVED Handle = 0x8019012D - HTTP_E_STATUS_REDIRECT Handle = 0x8019012E - HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F - HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130 - HTTP_E_STATUS_USE_PROXY Handle = 0x80190131 - HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133 - HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190 - HTTP_E_STATUS_DENIED Handle = 0x80190191 - HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192 - HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193 - HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194 - HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195 - HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196 - HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197 - HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198 - HTTP_E_STATUS_CONFLICT Handle = 0x80190199 - HTTP_E_STATUS_GONE Handle = 0x8019019A - HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B - HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C - HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D - HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E - HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F - HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0 - HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1 - HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4 - HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5 - HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6 - HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7 - HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8 - HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9 - E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001 - E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002 - E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003 - E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004 - E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005 - INPUT_E_OUT_OF_ORDER Handle = 0x80400000 - INPUT_E_REENTRANCY Handle = 0x80400001 - INPUT_E_MULTIMODAL Handle = 0x80400002 - INPUT_E_PACKET Handle = 0x80400003 - INPUT_E_FRAME Handle = 0x80400004 - INPUT_E_HISTORY Handle = 0x80400005 - INPUT_E_DEVICE_INFO Handle = 0x80400006 - INPUT_E_TRANSFORM Handle = 0x80400007 - INPUT_E_DEVICE_PROPERTY Handle = 0x80400008 - INET_E_INVALID_URL Handle = 0x800C0002 - INET_E_NO_SESSION Handle = 0x800C0003 - INET_E_CANNOT_CONNECT Handle = 0x800C0004 - INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005 - INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006 - INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007 - INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008 - INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009 - INET_E_NO_VALID_MEDIA Handle = 0x800C000A - INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B - INET_E_INVALID_REQUEST Handle = 0x800C000C - INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D - INET_E_SECURITY_PROBLEM Handle = 0x800C000E - INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F - INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010 - INET_E_INVALID_CERTIFICATE Handle = 0x800C0019 - INET_E_REDIRECT_FAILED Handle = 0x800C0014 - INET_E_REDIRECT_TO_DIR Handle = 0x800C0015 - ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001 - ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002 - ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003 - ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004 - ERROR_IO_PREEMPTED Handle = 0x89010001 - JSCRIPT_E_CANTEXECUTE Handle = 0x89020001 - WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001 - WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002 - WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003 - WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004 - WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005 - WEP_E_NO_LICENSE Handle = 0x88010006 - WEP_E_OS_NOT_PROTECTED Handle = 0x88010007 - WEP_E_UNEXPECTED_FAIL Handle = 0x88010008 - WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009 - ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000 - ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00 - ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01 - ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02 - ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03 - ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04 - ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05 - ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06 - ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07 - ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08 - ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09 - ERROR_VHD_SHARED Handle = 0xC05CFF0A - ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B - ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C - ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000 - ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001 - WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1 - WININET_E_TIMEOUT Handle = 0x80072EE2 - WININET_E_EXTENDED_ERROR Handle = 0x80072EE3 - WININET_E_INTERNAL_ERROR Handle = 0x80072EE4 - WININET_E_INVALID_URL Handle = 0x80072EE5 - WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6 - WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7 - WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8 - WININET_E_INVALID_OPTION Handle = 0x80072EE9 - WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA - WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB - WININET_E_SHUTDOWN Handle = 0x80072EEC - WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED - WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE - WININET_E_LOGIN_FAILURE Handle = 0x80072EEF - WININET_E_INVALID_OPERATION Handle = 0x80072EF0 - WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1 - WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2 - WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3 - WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4 - WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5 - WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6 - WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7 - WININET_E_NO_CONTEXT Handle = 0x80072EF8 - WININET_E_NO_CALLBACK Handle = 0x80072EF9 - WININET_E_REQUEST_PENDING Handle = 0x80072EFA - WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB - WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC - WININET_E_CANNOT_CONNECT Handle = 0x80072EFD - WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE - WININET_E_CONNECTION_RESET Handle = 0x80072EFF - WININET_E_FORCE_RETRY Handle = 0x80072F00 - WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01 - WININET_E_NEED_UI Handle = 0x80072F02 - WININET_E_HANDLE_EXISTS Handle = 0x80072F04 - WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05 - WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06 - WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07 - WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08 - WININET_E_MIXED_SECURITY Handle = 0x80072F09 - WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A - WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B - WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C - WININET_E_INVALID_CA Handle = 0x80072F0D - WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E - WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F - WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10 - WININET_E_DIALOG_PENDING Handle = 0x80072F11 - WININET_E_RETRY_DIALOG Handle = 0x80072F12 - WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13 - WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14 - WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17 - WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19 - WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76 - WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77 - WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78 - WININET_E_INVALID_HEADER Handle = 0x80072F79 - WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A - WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B - WININET_E_REDIRECT_FAILED Handle = 0x80072F7C - WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D - WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E - WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F - WININET_E_DISCONNECTED Handle = 0x80072F83 - WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84 - WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85 - WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86 - WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87 - WININET_E_SEC_INVALID_CERT Handle = 0x80072F89 - WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A - WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B - WININET_E_NOT_INITIALIZED Handle = 0x80072F8C - WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E - WININET_E_DECODING_FAILED Handle = 0x80072F8F - WININET_E_NOT_REDIRECTED Handle = 0x80072F80 - WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81 - WININET_E_COOKIE_DECLINED Handle = 0x80072F82 - WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88 - SQLITE_E_ERROR Handle = 0x87AF0001 - SQLITE_E_INTERNAL Handle = 0x87AF0002 - SQLITE_E_PERM Handle = 0x87AF0003 - SQLITE_E_ABORT Handle = 0x87AF0004 - SQLITE_E_BUSY Handle = 0x87AF0005 - SQLITE_E_LOCKED Handle = 0x87AF0006 - SQLITE_E_NOMEM Handle = 0x87AF0007 - SQLITE_E_READONLY Handle = 0x87AF0008 - SQLITE_E_INTERRUPT Handle = 0x87AF0009 - SQLITE_E_IOERR Handle = 0x87AF000A - SQLITE_E_CORRUPT Handle = 0x87AF000B - SQLITE_E_NOTFOUND Handle = 0x87AF000C - SQLITE_E_FULL Handle = 0x87AF000D - SQLITE_E_CANTOPEN Handle = 0x87AF000E - SQLITE_E_PROTOCOL Handle = 0x87AF000F - SQLITE_E_EMPTY Handle = 0x87AF0010 - SQLITE_E_SCHEMA Handle = 0x87AF0011 - SQLITE_E_TOOBIG Handle = 0x87AF0012 - SQLITE_E_CONSTRAINT Handle = 0x87AF0013 - SQLITE_E_MISMATCH Handle = 0x87AF0014 - SQLITE_E_MISUSE Handle = 0x87AF0015 - SQLITE_E_NOLFS Handle = 0x87AF0016 - SQLITE_E_AUTH Handle = 0x87AF0017 - SQLITE_E_FORMAT Handle = 0x87AF0018 - SQLITE_E_RANGE Handle = 0x87AF0019 - SQLITE_E_NOTADB Handle = 0x87AF001A - SQLITE_E_NOTICE Handle = 0x87AF001B - SQLITE_E_WARNING Handle = 0x87AF001C - SQLITE_E_ROW Handle = 0x87AF0064 - SQLITE_E_DONE Handle = 0x87AF0065 - SQLITE_E_IOERR_READ Handle = 0x87AF010A - SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A - SQLITE_E_IOERR_WRITE Handle = 0x87AF030A - SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A - SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A - SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A - SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A - SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A - SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A - SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A - SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A - SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A - SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A - SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A - SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A - SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A - SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A - SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A - SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A - SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A - SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A - SQLITE_E_IOERR_SEEK Handle = 0x87AF160A - SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A - SQLITE_E_IOERR_MMAP Handle = 0x87AF180A - SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A - SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A - SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02 - SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03 - SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106 - SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105 - SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205 - SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E - SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E - SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E - SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E - SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B - SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108 - SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208 - SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308 - SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408 - SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204 - SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113 - SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213 - SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313 - SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413 - SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513 - SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613 - SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713 - SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813 - SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913 - SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13 - SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B - SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B - SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C - UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001 - UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002 - UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003 - UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004 - UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005 - UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006 - UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007 - UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008 - UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009 - UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A - UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B - UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C - UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D - UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E - UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F - UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010 - UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011 - UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012 - UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013 - UTC_E_SQM_INIT_FAILED Handle = 0x87C51014 - UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015 - UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016 - UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017 - UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018 - UTC_E_INVALID_FILTER Handle = 0x87C51019 - UTC_E_EXE_TERMINATED Handle = 0x87C5101A - UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B - UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C - UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D - UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E - UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F - UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020 - UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021 - UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022 - UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023 - UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024 - UTC_E_DELAY_TERMINATED Handle = 0x87C51025 - UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026 - UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027 - UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028 - UTC_E_RPC_TIMEOUT Handle = 0x87C51029 - UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A - UTC_E_API_BUSY Handle = 0x87C5102B - UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C - UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D - UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E - UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F - UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030 - UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031 - UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032 - UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033 - UTC_E_BINARY_MISSING Handle = 0x87C51034 - UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035 - UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036 - UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037 - UTC_E_THROTTLED Handle = 0x87C51038 - UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039 - UTC_E_SCRIPT_MISSING Handle = 0x87C5103A - UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B - UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C - UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D - UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E - UTC_E_CERT_REV_FAILED Handle = 0x87C5103F - UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040 - UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041 - UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042 - UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043 - UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044 - UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045 - UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046 - UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047 - UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048 - UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049 - UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050 - UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051 - UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052 - UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053 - UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054 - UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055 - UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056 - UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057 - UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058 - UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 - UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A - UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B - WINML_ERR_INVALID_DEVICE Handle = 0x88900001 - WINML_ERR_INVALID_BINDING Handle = 0x88900002 - WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 - WINML_ERR_SIZE_MISMATCH Handle = 0x88900004 -) diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go deleted file mode 100644 index 6048ac67..00000000 --- a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go +++ /dev/null @@ -1,149 +0,0 @@ -// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT. - -package windows - -type KNOWNFOLDERID GUID - -var ( - FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}} - FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}} - FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}} - FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}} - FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}} - FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}} - FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}} - FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}} - FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}} - FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}} - FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}} - FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}} - FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}} - FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}} - FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}} - FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}} - FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}} - FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}} - FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}} - FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}} - FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}} - FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}} - FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}} - FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}} - FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}} - FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}} - FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}} - FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}} - FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}} - FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}} - FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}} - FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}} - FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}} - FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}} - FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}} - FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}} - FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}} - FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}} - FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}} - FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}} - FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}} - FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}} - FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}} - FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}} - FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}} - FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}} - FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}} - FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}} - FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}} - FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}} - FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}} - FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}} - FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}} - FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}} - FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}} - FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}} - FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}} - FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}} - FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}} - FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}} - FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}} - FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}} - FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}} - FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}} - FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}} - FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}} - FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}} - FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}} - FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}} - FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}} - FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}} - FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}} - FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}} - FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}} - FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}} - FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}} - FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}} - FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}} - FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}} - FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}} - FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}} - FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}} - FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}} - FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}} - FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}} - FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}} - FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}} - FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}} - FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}} - FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}} - FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}} - FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}} - FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}} - FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}} - FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}} - FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}} - FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}} - FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}} - FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}} - FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}} - FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}} - FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}} - FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}} - FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}} - FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}} - FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}} - FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}} - FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}} - FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}} - FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}} - FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}} - FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}} - FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}} - FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} - FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} - FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}} - FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}} - FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}} - FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}} - FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}} - FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}} - FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}} - FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}} - FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}} - FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}} - FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}} - FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}} - FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}} - FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}} - FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}} - FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}} - FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}} - FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}} - FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}} - FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}} - FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}} - FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}} - FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}} - FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}} - FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}} - FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}} -) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go deleted file mode 100644 index 6658ccd1..00000000 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ /dev/null @@ -1,3964 +0,0 @@ -// Code generated by 'go generate'; DO NOT EDIT. - -package windows - -import ( - "syscall" - "unsafe" -) - -var _ unsafe.Pointer - -// Do the interface allocations only once for common -// Errno values. -const ( - errnoERROR_IO_PENDING = 997 -) - -var ( - errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) -) - -// errnoErr returns common boxed Errno values, to prevent -// allocations at runtime. -func errnoErr(e syscall.Errno) error { - switch e { - case 0: - return nil - case errnoERROR_IO_PENDING: - return errERROR_IO_PENDING - } - // TODO: add more here, after collecting data on the common - // error values see on Windows. (perhaps when running - // all.bat?) - return e -} - -var ( - modadvapi32 = NewLazySystemDLL("advapi32.dll") - modkernel32 = NewLazySystemDLL("kernel32.dll") - modshell32 = NewLazySystemDLL("shell32.dll") - moduserenv = NewLazySystemDLL("userenv.dll") - modmswsock = NewLazySystemDLL("mswsock.dll") - modcrypt32 = NewLazySystemDLL("crypt32.dll") - moduser32 = NewLazySystemDLL("user32.dll") - modole32 = NewLazySystemDLL("ole32.dll") - modntdll = NewLazySystemDLL("ntdll.dll") - modpsapi = NewLazySystemDLL("psapi.dll") - modws2_32 = NewLazySystemDLL("ws2_32.dll") - moddnsapi = NewLazySystemDLL("dnsapi.dll") - modiphlpapi = NewLazySystemDLL("iphlpapi.dll") - modsecur32 = NewLazySystemDLL("secur32.dll") - modnetapi32 = NewLazySystemDLL("netapi32.dll") - modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") - - procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") - procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") - procReportEventW = modadvapi32.NewProc("ReportEventW") - procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") - procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") - procCreateServiceW = modadvapi32.NewProc("CreateServiceW") - procOpenServiceW = modadvapi32.NewProc("OpenServiceW") - procDeleteService = modadvapi32.NewProc("DeleteService") - procStartServiceW = modadvapi32.NewProc("StartServiceW") - procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") - procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW") - procControlService = modadvapi32.NewProc("ControlService") - procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") - procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") - procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") - procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") - procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") - procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") - procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") - procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") - procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") - procGetLastError = modkernel32.NewProc("GetLastError") - procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") - procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") - procFreeLibrary = modkernel32.NewProc("FreeLibrary") - procGetProcAddress = modkernel32.NewProc("GetProcAddress") - procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") - procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") - procGetVersion = modkernel32.NewProc("GetVersion") - procFormatMessageW = modkernel32.NewProc("FormatMessageW") - procExitProcess = modkernel32.NewProc("ExitProcess") - procIsWow64Process = modkernel32.NewProc("IsWow64Process") - procCreateFileW = modkernel32.NewProc("CreateFileW") - procReadFile = modkernel32.NewProc("ReadFile") - procWriteFile = modkernel32.NewProc("WriteFile") - procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") - procSetFilePointer = modkernel32.NewProc("SetFilePointer") - procCloseHandle = modkernel32.NewProc("CloseHandle") - procGetStdHandle = modkernel32.NewProc("GetStdHandle") - procSetStdHandle = modkernel32.NewProc("SetStdHandle") - procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") - procFindNextFileW = modkernel32.NewProc("FindNextFileW") - procFindClose = modkernel32.NewProc("FindClose") - procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") - procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") - procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") - procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") - procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") - procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") - procDeleteFileW = modkernel32.NewProc("DeleteFileW") - procMoveFileW = modkernel32.NewProc("MoveFileW") - procMoveFileExW = modkernel32.NewProc("MoveFileExW") - procLockFileEx = modkernel32.NewProc("LockFileEx") - procUnlockFileEx = modkernel32.NewProc("UnlockFileEx") - procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") - procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") - procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") - procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") - procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") - procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") - procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") - procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") - procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") - procCancelIo = modkernel32.NewProc("CancelIo") - procCancelIoEx = modkernel32.NewProc("CancelIoEx") - procCreateProcessW = modkernel32.NewProc("CreateProcessW") - procOpenProcess = modkernel32.NewProc("OpenProcess") - procShellExecuteW = modshell32.NewProc("ShellExecuteW") - procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") - procTerminateProcess = modkernel32.NewProc("TerminateProcess") - procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") - procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") - procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") - procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") - procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") - procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") - procGetTempPathW = modkernel32.NewProc("GetTempPathW") - procCreatePipe = modkernel32.NewProc("CreatePipe") - procGetFileType = modkernel32.NewProc("GetFileType") - procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") - procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") - procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") - procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") - procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") - procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") - procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") - procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") - procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") - procGetTickCount64 = modkernel32.NewProc("GetTickCount64") - procSetFileTime = modkernel32.NewProc("SetFileTime") - procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") - procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") - procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") - procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") - procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") - procLocalFree = modkernel32.NewProc("LocalFree") - procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") - procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") - procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") - procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") - procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") - procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") - procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") - procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") - procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") - procVirtualLock = modkernel32.NewProc("VirtualLock") - procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") - procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") - procVirtualFree = modkernel32.NewProc("VirtualFree") - procVirtualProtect = modkernel32.NewProc("VirtualProtect") - procTransmitFile = modmswsock.NewProc("TransmitFile") - procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") - procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") - procCertOpenStore = modcrypt32.NewProc("CertOpenStore") - procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") - procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") - procCertCloseStore = modcrypt32.NewProc("CertCloseStore") - procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") - procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") - procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") - procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") - procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") - procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") - procRegCloseKey = modadvapi32.NewProc("RegCloseKey") - procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") - procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") - procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") - procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") - procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") - procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") - procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") - procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") - procReadConsoleW = modkernel32.NewProc("ReadConsoleW") - procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") - procProcess32FirstW = modkernel32.NewProc("Process32FirstW") - procProcess32NextW = modkernel32.NewProc("Process32NextW") - procThread32First = modkernel32.NewProc("Thread32First") - procThread32Next = modkernel32.NewProc("Thread32Next") - procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") - procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") - procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") - procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") - procCreateEventW = modkernel32.NewProc("CreateEventW") - procCreateEventExW = modkernel32.NewProc("CreateEventExW") - procOpenEventW = modkernel32.NewProc("OpenEventW") - procSetEvent = modkernel32.NewProc("SetEvent") - procResetEvent = modkernel32.NewProc("ResetEvent") - procPulseEvent = modkernel32.NewProc("PulseEvent") - procCreateMutexW = modkernel32.NewProc("CreateMutexW") - procCreateMutexExW = modkernel32.NewProc("CreateMutexExW") - procOpenMutexW = modkernel32.NewProc("OpenMutexW") - procReleaseMutex = modkernel32.NewProc("ReleaseMutex") - procSleepEx = modkernel32.NewProc("SleepEx") - procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW") - procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") - procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") - procSetErrorMode = modkernel32.NewProc("SetErrorMode") - procResumeThread = modkernel32.NewProc("ResumeThread") - procSetPriorityClass = modkernel32.NewProc("SetPriorityClass") - procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") - procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") - procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") - procGetProcessId = modkernel32.NewProc("GetProcessId") - procOpenThread = modkernel32.NewProc("OpenThread") - procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost") - procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") - procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") - procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") - procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") - procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") - procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") - procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") - procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") - procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW") - procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") - procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") - procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") - procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") - procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") - procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") - procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") - procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") - procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") - procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") - procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") - procMessageBoxW = moduser32.NewProc("MessageBoxW") - procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") - procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW") - procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters") - procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters") - procCLSIDFromString = modole32.NewProc("CLSIDFromString") - procStringFromGUID2 = modole32.NewProc("StringFromGUID2") - procCoCreateGuid = modole32.NewProc("CoCreateGuid") - procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") - procRtlGetVersion = modntdll.NewProc("RtlGetVersion") - procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") - procEnumProcesses = modpsapi.NewProc("EnumProcesses") - procWSAStartup = modws2_32.NewProc("WSAStartup") - procWSACleanup = modws2_32.NewProc("WSACleanup") - procWSAIoctl = modws2_32.NewProc("WSAIoctl") - procsocket = modws2_32.NewProc("socket") - procsetsockopt = modws2_32.NewProc("setsockopt") - procgetsockopt = modws2_32.NewProc("getsockopt") - procbind = modws2_32.NewProc("bind") - procconnect = modws2_32.NewProc("connect") - procgetsockname = modws2_32.NewProc("getsockname") - procgetpeername = modws2_32.NewProc("getpeername") - proclisten = modws2_32.NewProc("listen") - procshutdown = modws2_32.NewProc("shutdown") - procclosesocket = modws2_32.NewProc("closesocket") - procAcceptEx = modmswsock.NewProc("AcceptEx") - procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") - procWSARecv = modws2_32.NewProc("WSARecv") - procWSASend = modws2_32.NewProc("WSASend") - procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") - procWSASendTo = modws2_32.NewProc("WSASendTo") - procgethostbyname = modws2_32.NewProc("gethostbyname") - procgetservbyname = modws2_32.NewProc("getservbyname") - procntohs = modws2_32.NewProc("ntohs") - procgetprotobyname = modws2_32.NewProc("getprotobyname") - procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") - procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") - procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") - procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") - procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") - procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") - procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") - procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") - procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") - procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") - procGetACP = modkernel32.NewProc("GetACP") - procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") - procTranslateNameW = modsecur32.NewProc("TranslateNameW") - procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") - procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") - procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") - procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") - procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") - procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") - procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") - procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") - procGetLengthSid = modadvapi32.NewProc("GetLengthSid") - procCopySid = modadvapi32.NewProc("CopySid") - procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") - procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") - procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") - procFreeSid = modadvapi32.NewProc("FreeSid") - procEqualSid = modadvapi32.NewProc("EqualSid") - procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority") - procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount") - procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority") - procIsValidSid = modadvapi32.NewProc("IsValidSid") - procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") - procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") - procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") - procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") - procRevertToSelf = modadvapi32.NewProc("RevertToSelf") - procSetThreadToken = modadvapi32.NewProc("SetThreadToken") - procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") - procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") - procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups") - procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") - procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") - procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") - procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") - procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") - procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW") - procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW") - procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") - procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") - procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") - procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo") - procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo") - procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW") - procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW") - procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW") - procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor") - procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl") - procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") - procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl") - procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner") - procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup") - procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength") - procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl") - procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor") - procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl") - procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl") - procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl") - procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner") - procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup") - procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl") - procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") - procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") - procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD") - procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD") - procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") -) - -func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DeregisterEventSource(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CloseServiceHandle(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DeleteService(service Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { - r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { - r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { - r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { - r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { - r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func GetLastError() (lasterr error) { - r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) - if r0 != 0 { - lasterr = syscall.Errno(r0) - } - return -} - -func LoadLibrary(libname string) (handle Handle, err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(libname) - if err != nil { - return - } - return _LoadLibrary(_p0) -} - -func _LoadLibrary(libname *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(libname) - if err != nil { - return - } - return _LoadLibraryEx(_p0, zero, flags) -} - -func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FreeLibrary(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(procname) - if err != nil { - return - } - return _GetProcAddress(module, _p0) -} - -func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { - r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0) - proc = uintptr(r0) - if proc == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) { - r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVersion() (ver uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) - ver = uint32(r0) - if ver == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) { - var _p0 *uint16 - if len(buf) > 0 { - _p0 = &buf[0] - } - r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ExitProcess(exitcode uint32) { - syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) - return -} - -func IsWow64Process(handle Handle, isWow64 *bool) (err error) { - var _p0 uint32 - if *isWow64 { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0) - *isWow64 = _p0 != 0 - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { - var _p0 *byte - if len(buf) > 0 { - _p0 = &buf[0] - } - r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { - var _p0 *byte - if len(buf) > 0 { - _p0 = &buf[0] - } - r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { - var _p0 uint32 - if wait { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { - r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) - newlowoffset = uint32(r0) - if newlowoffset == 0xffffffff { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CloseHandle(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetStdHandle(stdhandle uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetStdHandle(stdhandle uint32, handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func findNextFile1(handle Handle, data *win32finddata1) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindClose(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { - r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetCurrentDirectory(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { - r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func RemoveDirectory(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DeleteFile(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func MoveFile(from *uint16, to *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetComputerName(buf *uint16, n *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetEndOfFile(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetSystemTimeAsFileTime(time *Filetime) { - syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) - return -} - -func GetSystemTimePreciseAsFileTime(time *Filetime) { - syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) - return -} - -func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) - rc = uint32(r0) - if rc == 0xffffffff { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CancelIo(s Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CancelIoEx(s Handle, o *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { - var _p0 uint32 - if inheritHandles { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) { - var _p0 uint32 - if inheritHandle { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { - r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) - if r1 <= 32 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { - r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func TerminateProcess(handle Handle, exitcode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetStartupInfo(startupInfo *StartupInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { - r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { - var _p0 uint32 - if bInheritHandle { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { - r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0) - event = uint32(r0) - if event == 0xffffffff { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { - var _p0 uint32 - if waitAll { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0) - event = uint32(r0) - if event == 0xffffffff { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFileType(filehandle Handle) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { - r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetEnvironmentStrings() (envs *uint16, err error) { - r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0) - envs = (*uint16)(unsafe.Pointer(r0)) - if envs == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FreeEnvironmentStrings(envs *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { - var _p0 uint32 - if inheritExisting { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DestroyEnvironmentBlock(block *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getTickCount64() (ms uint64) { - r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0) - ms = uint64(r0) - return -} - -func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { - r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFileAttributes(name *uint16) (attrs uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) - attrs = uint32(r0) - if attrs == INVALID_FILE_ATTRIBUTES { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetFileAttributes(name *uint16, attrs uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { - r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetCommandLine() (cmd *uint16) { - r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0) - cmd = (*uint16)(unsafe.Pointer(r0)) - return -} - -func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { - r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) - argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) - if argv == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LocalFree(hmem Handle) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0) - handle = Handle(r0) - if handle != 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FlushFileBuffers(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { - r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0) - addr = uintptr(r0) - if addr == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func UnmapViewOfFile(addr uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FlushViewOfFile(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func VirtualLock(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func VirtualUnlock(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { - r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) - value = uintptr(r0) - if value == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { - var _p0 uint32 - if watchSubTree { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { - r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0) - store = Handle(r0) - if store == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { - r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) - context = (*CertContext)(unsafe.Pointer(r0)) - if context == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { - r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertCloseStore(store Handle, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { - r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertFreeCertificateChain(ctx *CertChainContext) { - syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) - return -} - -func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { - r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) - context = (*CertContext)(unsafe.Pointer(r0)) - if context == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertFreeCertificateContext(ctx *CertContext) (err error) { - r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { - r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func RegCloseKey(key Handle) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { - r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func GetCurrentProcessId() (pid uint32) { - r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) - pid = uint32(r0) - return -} - -func GetConsoleMode(console Handle, mode *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetConsoleMode(console Handle, mode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { - r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { - r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) - if r1&0xff == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) - if r1&0xff == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetCurrentThreadId() (id uint32) { - r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0) - id = uint32(r0) - return -} - -func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { - var _p0 uint32 - if inheritHandle { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ResetEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func PulseEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) { - var _p0 uint32 - if initialOwner { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { - var _p0 uint32 - if inheritHandle { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ReleaseMutex(mutex Handle) (err error) { - r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { - var _p0 uint32 - if alertable { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0) - ret = uint32(r0) - return -} - -func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func AssignProcessToJobObject(job Handle, process Handle) (err error) { - r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func TerminateJobObject(job Handle, exitCode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetErrorMode(mode uint32) (ret uint32) { - r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0) - ret = uint32(r0) - return -} - -func ResumeThread(thread Handle) (ret uint32, err error) { - r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) - ret = uint32(r0) - if ret == 0xffffffff { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetPriorityClass(process Handle, priorityClass uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetPriorityClass(process Handle) (ret uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0) - ret = uint32(r0) - if ret == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { - r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0) - ret = int(r0) - if ret == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetProcessId(process Handle) (id uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0) - id = uint32(r0) - if id == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) { - var _p0 uint32 - if inheritHandle { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) - handle = Handle(r0) - if handle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetProcessPriorityBoost(process Handle, disable bool) (err error) { - var _p0 uint32 - if disable { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindVolumeClose(findVolume Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) { - r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetDriveType(rootPathName *uint16) (driveType uint32) { - r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) - driveType = uint32(r0) - return -} - -func GetLogicalDrives() (drivesBitMask uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) - drivesBitMask = uint32(r0) - if drivesBitMask == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { - r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) - ret = int32(r0) - if ret == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ExitWindowsEx(flags uint32, reason uint32) (err error) { - r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) { - var _p0 uint32 - if forceAppsClosed { - _p0 = 1 - } else { - _p0 = 0 - } - var _p1 uint32 - if rebootAfterShutdown { - _p1 = 1 - } else { - _p1 = 0 - } - r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { - r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { - r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) - chars = int32(r0) - return -} - -func coCreateGuid(pguid *GUID) (ret error) { - r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func CoTaskMemFree(address unsafe.Pointer) { - syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0) - return -} - -func rtlGetVersion(info *OsVersionInfoEx) (ret error) { - r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { - syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) - return -} - -func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { - var _p0 *uint32 - if len(processIds) > 0 { - _p0 = &processIds[0] - } - r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(processIds)), uintptr(unsafe.Pointer(bytesReturned))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { - r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) - if r0 != 0 { - sockerr = syscall.Errno(r0) - } - return -} - -func WSACleanup() (err error) { - r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) - handle = Handle(r0) - if handle == InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { - r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { - r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func listen(s Handle, backlog int32) (err error) { - r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func shutdown(s Handle, how int32) (err error) { - r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Closesocket(s Handle) (err error) { - r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { - syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) - return -} - -func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) - if r1 == socket_error { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetHostByName(name string) (h *Hostent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return - } - return _GetHostByName(_p0) -} - -func _GetHostByName(name *byte) (h *Hostent, err error) { - r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) - h = (*Hostent)(unsafe.Pointer(r0)) - if h == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetServByName(name string, proto string) (s *Servent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(proto) - if err != nil { - return - } - return _GetServByName(_p0, _p1) -} - -func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { - r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) - s = (*Servent)(unsafe.Pointer(r0)) - if s == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func Ntohs(netshort uint16) (u uint16) { - r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) - u = uint16(r0) - return -} - -func GetProtoByName(name string) (p *Protoent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return - } - return _GetProtoByName(_p0) -} - -func _GetProtoByName(name *byte) (p *Protoent, err error) { - r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) - p = (*Protoent)(unsafe.Pointer(r0)) - if p == nil { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { - var _p0 *uint16 - _p0, status = syscall.UTF16PtrFromString(name) - if status != nil { - return - } - return _DnsQuery(_p0, qtype, options, extra, qrs, pr) -} - -func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { - r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) - if r0 != 0 { - status = syscall.Errno(r0) - } - return -} - -func DnsRecordListFree(rl *DNSRecord, freetype uint32) { - syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) - return -} - -func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { - r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) - same = r0 != 0 - return -} - -func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { - r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) - if r0 != 0 { - sockerr = syscall.Errno(r0) - } - return -} - -func FreeAddrInfoW(addrinfo *AddrinfoW) { - syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) - return -} - -func GetIfEntry(pIfRow *MibIfRow) (errcode error) { - r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) - if r0 != 0 { - errcode = syscall.Errno(r0) - } - return -} - -func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { - r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) - if r0 != 0 { - errcode = syscall.Errno(r0) - } - return -} - -func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { - r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) - n = int32(r0) - if n == -1 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { - r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) - if r0 != 0 { - errcode = syscall.Errno(r0) - } - return -} - -func GetACP() (acp uint32) { - r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) - acp = uint32(r0) - return -} - -func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { - r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) - nwrite = int32(r0) - if nwrite == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) - if r1&0xff == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) - if r1&0xff == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { - r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) - if r0 != 0 { - neterr = syscall.Errno(r0) - } - return -} - -func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { - r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) - if r0 != 0 { - neterr = syscall.Errno(r0) - } - return -} - -func NetApiBufferFree(buf *byte) (neterr error) { - r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) - if r0 != 0 { - neterr = syscall.Errno(r0) - } - return -} - -func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetLengthSid(sid *SID) (len uint32) { - r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - len = uint32(r0) - return -} - -func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { - r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0) - isWellKnown = r0 != 0 - return -} - -func FreeSid(sid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - if r1 != 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { - r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) - isEqual = r0 != 0 - return -} - -func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { - r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) - return -} - -func getSidSubAuthorityCount(sid *SID) (count *uint8) { - r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - count = (*uint8)(unsafe.Pointer(r0)) - return -} - -func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { - r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0) - subAuthority = (*uint32)(unsafe.Pointer(r0)) - return -} - -func isValidSid(sid *SID) (isValid bool) { - r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - isValid = r0 != 0 - return -} - -func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { - r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) { - var _p0 uint32 - if openAsSelf { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func ImpersonateSelf(impersonationlevel uint32) (err error) { - r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func RevertToSelf() (err error) { - r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetThreadToken(thread *Handle, token Token) (err error) { - r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { - r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) { - var _p0 uint32 - if disableAllPrivileges { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) { - var _p0 uint32 - if resetToDefault { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { - r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) - len = uint32(r0) - if len == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) - len = uint32(r0) - if len == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) - len = uint32(r0) - if len == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WTSQueryUserToken(session uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func WTSFreeMemory(ptr uintptr) { - syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0) - return -} - -func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) { - syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) - return -} - -func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { - var _p0 *uint16 - _p0, ret = syscall.UTF16PtrFromString(objectName) - if ret != nil { - return - } - return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd) -} - -func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { - var _p0 *uint16 - _p0, ret = syscall.UTF16PtrFromString(objectName) - if ret != nil { - return - } - return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl) -} - -func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { - r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) { - r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) { - var _p0 uint32 - if *daclPresent { - _p0 = 1 - } else { - _p0 = 0 - } - var _p1 uint32 - if *daclDefaulted { - _p1 = 1 - } else { - _p1 = 0 - } - r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) - *daclPresent = _p0 != 0 - *daclDefaulted = _p1 != 0 - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) { - var _p0 uint32 - if *saclPresent { - _p0 = 1 - } else { - _p0 = 0 - } - var _p1 uint32 - if *saclDefaulted { - _p1 = 1 - } else { - _p1 = 0 - } - r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) - *saclPresent = _p0 != 0 - *saclDefaulted = _p1 != 0 - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) { - var _p0 uint32 - if *ownerDefaulted { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) - *ownerDefaulted = _p0 != 0 - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) { - var _p0 uint32 - if *groupDefaulted { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) - *groupDefaulted = _p0 != 0 - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) { - r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) - len = uint32(r0) - return -} - -func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) { - r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} - -func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { - r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) - isValid = r0 != 0 - return -} - -func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) { - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) { - var _p0 uint32 - if daclPresent { - _p0 = 1 - } else { - _p0 = 0 - } - var _p1 uint32 - if daclDefaulted { - _p1 = 1 - } else { - _p1 = 0 - } - r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) { - var _p0 uint32 - if saclPresent { - _p0 = 1 - } else { - _p0 = 0 - } - var _p1 uint32 - if saclDefaulted { - _p1 = 1 - } else { - _p1 = 0 - } - r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) { - var _p0 uint32 - if ownerDefaulted { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) { - var _p0 uint32 - if groupDefaulted { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) { - syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) - return -} - -func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(str) - if err != nil { - return - } - return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size) -} - -func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) { - r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0) - if r0 != 0 { - ret = syscall.Errno(r0) - } - return -} diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE deleted file mode 100644 index 8dada3ed..00000000 --- a/vendor/gopkg.in/yaml.v2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also 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} - - 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. diff --git a/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/vendor/gopkg.in/yaml.v2/LICENSE.libyaml deleted file mode 100644 index 8da58fbf..00000000 --- a/vendor/gopkg.in/yaml.v2/LICENSE.libyaml +++ /dev/null @@ -1,31 +0,0 @@ -The following files were ported to Go from C files of libyaml, and thus -are still covered by their original copyright and license: - - apic.go - emitterc.go - parserc.go - readerc.go - scannerc.go - writerc.go - yamlh.go - yamlprivateh.go - -Copyright (c) 2006 Kirill Simonov - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/gopkg.in/yaml.v2/NOTICE b/vendor/gopkg.in/yaml.v2/NOTICE deleted file mode 100644 index 866d74a7..00000000 --- a/vendor/gopkg.in/yaml.v2/NOTICE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2011-2016 Canonical Ltd. - -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. diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md deleted file mode 100644 index b50c6e87..00000000 --- a/vendor/gopkg.in/yaml.v2/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# YAML support for the Go language - -Introduction ------------- - -The yaml package enables Go programs to comfortably encode and decode YAML -values. It was developed within [Canonical](https://www.canonical.com) as -part of the [juju](https://juju.ubuntu.com) project, and is based on a -pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) -C library to parse and generate YAML data quickly and reliably. - -Compatibility -------------- - -The yaml package supports most of YAML 1.1 and 1.2, including support for -anchors, tags, map merging, etc. Multi-document unmarshalling is not yet -implemented, and base-60 floats from YAML 1.1 are purposefully not -supported since they're a poor design and are gone in YAML 1.2. - -Installation and usage ----------------------- - -The import path for the package is *gopkg.in/yaml.v2*. - -To install it, run: - - go get gopkg.in/yaml.v2 - -API documentation ------------------ - -If opened in a browser, the import path itself leads to the API documentation: - - * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2) - -API stability -------------- - -The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in). - - -License -------- - -The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details. - - -Example -------- - -```Go -package main - -import ( - "fmt" - "log" - - "gopkg.in/yaml.v2" -) - -var data = ` -a: Easy! -b: - c: 2 - d: [3, 4] -` - -// Note: struct fields must be public in order for unmarshal to -// correctly populate the data. -type T struct { - A string - B struct { - RenamedC int `yaml:"c"` - D []int `yaml:",flow"` - } -} - -func main() { - t := T{} - - err := yaml.Unmarshal([]byte(data), &t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t:\n%v\n\n", t) - - d, err := yaml.Marshal(&t) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- t dump:\n%s\n\n", string(d)) - - m := make(map[interface{}]interface{}) - - err = yaml.Unmarshal([]byte(data), &m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m:\n%v\n\n", m) - - d, err = yaml.Marshal(&m) - if err != nil { - log.Fatalf("error: %v", err) - } - fmt.Printf("--- m dump:\n%s\n\n", string(d)) -} -``` - -This example will generate the following output: - -``` ---- t: -{Easy! {2 [3 4]}} - ---- t dump: -a: Easy! -b: - c: 2 - d: [3, 4] - - ---- m: -map[a:Easy! b:map[c:2 d:[3 4]]] - ---- m dump: -a: Easy! -b: - c: 2 - d: - - 3 - - 4 -``` - diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go deleted file mode 100644 index 1f7e87e6..00000000 --- a/vendor/gopkg.in/yaml.v2/apic.go +++ /dev/null @@ -1,739 +0,0 @@ -package yaml - -import ( - "io" -) - -func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { - //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) - - // Check if we can move the queue at the beginning of the buffer. - if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { - if parser.tokens_head != len(parser.tokens) { - copy(parser.tokens, parser.tokens[parser.tokens_head:]) - } - parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] - parser.tokens_head = 0 - } - parser.tokens = append(parser.tokens, *token) - if pos < 0 { - return - } - copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) - parser.tokens[parser.tokens_head+pos] = *token -} - -// Create a new parser object. -func yaml_parser_initialize(parser *yaml_parser_t) bool { - *parser = yaml_parser_t{ - raw_buffer: make([]byte, 0, input_raw_buffer_size), - buffer: make([]byte, 0, input_buffer_size), - } - return true -} - -// Destroy a parser object. -func yaml_parser_delete(parser *yaml_parser_t) { - *parser = yaml_parser_t{} -} - -// String read handler. -func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - if parser.input_pos == len(parser.input) { - return 0, io.EOF - } - n = copy(buffer, parser.input[parser.input_pos:]) - parser.input_pos += n - return n, nil -} - -// Reader read handler. -func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { - return parser.input_reader.Read(buffer) -} - -// Set a string input. -func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_string_read_handler - parser.input = input - parser.input_pos = 0 -} - -// Set a file input. -func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { - if parser.read_handler != nil { - panic("must set the input source only once") - } - parser.read_handler = yaml_reader_read_handler - parser.input_reader = r -} - -// Set the source encoding. -func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { - if parser.encoding != yaml_ANY_ENCODING { - panic("must set the encoding only once") - } - parser.encoding = encoding -} - -// Create a new emitter object. -func yaml_emitter_initialize(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{ - buffer: make([]byte, output_buffer_size), - raw_buffer: make([]byte, 0, output_raw_buffer_size), - states: make([]yaml_emitter_state_t, 0, initial_stack_size), - events: make([]yaml_event_t, 0, initial_queue_size), - } -} - -// Destroy an emitter object. -func yaml_emitter_delete(emitter *yaml_emitter_t) { - *emitter = yaml_emitter_t{} -} - -// String write handler. -func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - *emitter.output_buffer = append(*emitter.output_buffer, buffer...) - return nil -} - -// yaml_writer_write_handler uses emitter.output_writer to write the -// emitted text. -func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { - _, err := emitter.output_writer.Write(buffer) - return err -} - -// Set a string output. -func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_string_write_handler - emitter.output_buffer = output_buffer -} - -// Set a file output. -func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { - if emitter.write_handler != nil { - panic("must set the output target only once") - } - emitter.write_handler = yaml_writer_write_handler - emitter.output_writer = w -} - -// Set the output encoding. -func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { - if emitter.encoding != yaml_ANY_ENCODING { - panic("must set the output encoding only once") - } - emitter.encoding = encoding -} - -// Set the canonical output style. -func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { - emitter.canonical = canonical -} - -//// Set the indentation increment. -func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { - if indent < 2 || indent > 9 { - indent = 2 - } - emitter.best_indent = indent -} - -// Set the preferred line width. -func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { - if width < 0 { - width = -1 - } - emitter.best_width = width -} - -// Set if unescaped non-ASCII characters are allowed. -func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { - emitter.unicode = unicode -} - -// Set the preferred line break character. -func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { - emitter.line_break = line_break -} - -///* -// * Destroy a token object. -// */ -// -//YAML_DECLARE(void) -//yaml_token_delete(yaml_token_t *token) -//{ -// assert(token); // Non-NULL token object expected. -// -// switch (token.type) -// { -// case YAML_TAG_DIRECTIVE_TOKEN: -// yaml_free(token.data.tag_directive.handle); -// yaml_free(token.data.tag_directive.prefix); -// break; -// -// case YAML_ALIAS_TOKEN: -// yaml_free(token.data.alias.value); -// break; -// -// case YAML_ANCHOR_TOKEN: -// yaml_free(token.data.anchor.value); -// break; -// -// case YAML_TAG_TOKEN: -// yaml_free(token.data.tag.handle); -// yaml_free(token.data.tag.suffix); -// break; -// -// case YAML_SCALAR_TOKEN: -// yaml_free(token.data.scalar.value); -// break; -// -// default: -// break; -// } -// -// memset(token, 0, sizeof(yaml_token_t)); -//} -// -///* -// * Check if a string is a valid UTF-8 sequence. -// * -// * Check 'reader.c' for more details on UTF-8 encoding. -// */ -// -//static int -//yaml_check_utf8(yaml_char_t *start, size_t length) -//{ -// yaml_char_t *end = start+length; -// yaml_char_t *pointer = start; -// -// while (pointer < end) { -// unsigned char octet; -// unsigned int width; -// unsigned int value; -// size_t k; -// -// octet = pointer[0]; -// width = (octet & 0x80) == 0x00 ? 1 : -// (octet & 0xE0) == 0xC0 ? 2 : -// (octet & 0xF0) == 0xE0 ? 3 : -// (octet & 0xF8) == 0xF0 ? 4 : 0; -// value = (octet & 0x80) == 0x00 ? octet & 0x7F : -// (octet & 0xE0) == 0xC0 ? octet & 0x1F : -// (octet & 0xF0) == 0xE0 ? octet & 0x0F : -// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; -// if (!width) return 0; -// if (pointer+width > end) return 0; -// for (k = 1; k < width; k ++) { -// octet = pointer[k]; -// if ((octet & 0xC0) != 0x80) return 0; -// value = (value << 6) + (octet & 0x3F); -// } -// if (!((width == 1) || -// (width == 2 && value >= 0x80) || -// (width == 3 && value >= 0x800) || -// (width == 4 && value >= 0x10000))) return 0; -// -// pointer += width; -// } -// -// return 1; -//} -// - -// Create STREAM-START. -func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - encoding: encoding, - } -} - -// Create STREAM-END. -func yaml_stream_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - } -} - -// Create DOCUMENT-START. -func yaml_document_start_event_initialize( - event *yaml_event_t, - version_directive *yaml_version_directive_t, - tag_directives []yaml_tag_directive_t, - implicit bool, -) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: implicit, - } -} - -// Create DOCUMENT-END. -func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - implicit: implicit, - } -} - -///* -// * Create ALIAS. -// */ -// -//YAML_DECLARE(int) -//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t) -//{ -// mark yaml_mark_t = { 0, 0, 0 } -// anchor_copy *yaml_char_t = NULL -// -// assert(event) // Non-NULL event object is expected. -// assert(anchor) // Non-NULL anchor is expected. -// -// if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0 -// -// anchor_copy = yaml_strdup(anchor) -// if (!anchor_copy) -// return 0 -// -// ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark) -// -// return 1 -//} - -// Create SCALAR. -func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - anchor: anchor, - tag: tag, - value: value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-START. -func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } - return true -} - -// Create SEQUENCE-END. -func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - } - return true -} - -// Create MAPPING-START. -func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(style), - } -} - -// Create MAPPING-END. -func yaml_mapping_end_event_initialize(event *yaml_event_t) { - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - } -} - -// Destroy an event object. -func yaml_event_delete(event *yaml_event_t) { - *event = yaml_event_t{} -} - -///* -// * Create a document object. -// */ -// -//YAML_DECLARE(int) -//yaml_document_initialize(document *yaml_document_t, -// version_directive *yaml_version_directive_t, -// tag_directives_start *yaml_tag_directive_t, -// tag_directives_end *yaml_tag_directive_t, -// start_implicit int, end_implicit int) -//{ -// struct { -// error yaml_error_type_t -// } context -// struct { -// start *yaml_node_t -// end *yaml_node_t -// top *yaml_node_t -// } nodes = { NULL, NULL, NULL } -// version_directive_copy *yaml_version_directive_t = NULL -// struct { -// start *yaml_tag_directive_t -// end *yaml_tag_directive_t -// top *yaml_tag_directive_t -// } tag_directives_copy = { NULL, NULL, NULL } -// value yaml_tag_directive_t = { NULL, NULL } -// mark yaml_mark_t = { 0, 0, 0 } -// -// assert(document) // Non-NULL document object is expected. -// assert((tag_directives_start && tag_directives_end) || -// (tag_directives_start == tag_directives_end)) -// // Valid tag directives are expected. -// -// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error -// -// if (version_directive) { -// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) -// if (!version_directive_copy) goto error -// version_directive_copy.major = version_directive.major -// version_directive_copy.minor = version_directive.minor -// } -// -// if (tag_directives_start != tag_directives_end) { -// tag_directive *yaml_tag_directive_t -// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) -// goto error -// for (tag_directive = tag_directives_start -// tag_directive != tag_directives_end; tag_directive ++) { -// assert(tag_directive.handle) -// assert(tag_directive.prefix) -// if (!yaml_check_utf8(tag_directive.handle, -// strlen((char *)tag_directive.handle))) -// goto error -// if (!yaml_check_utf8(tag_directive.prefix, -// strlen((char *)tag_directive.prefix))) -// goto error -// value.handle = yaml_strdup(tag_directive.handle) -// value.prefix = yaml_strdup(tag_directive.prefix) -// if (!value.handle || !value.prefix) goto error -// if (!PUSH(&context, tag_directives_copy, value)) -// goto error -// value.handle = NULL -// value.prefix = NULL -// } -// } -// -// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, -// tag_directives_copy.start, tag_directives_copy.top, -// start_implicit, end_implicit, mark, mark) -// -// return 1 -// -//error: -// STACK_DEL(&context, nodes) -// yaml_free(version_directive_copy) -// while (!STACK_EMPTY(&context, tag_directives_copy)) { -// value yaml_tag_directive_t = POP(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// } -// STACK_DEL(&context, tag_directives_copy) -// yaml_free(value.handle) -// yaml_free(value.prefix) -// -// return 0 -//} -// -///* -// * Destroy a document object. -// */ -// -//YAML_DECLARE(void) -//yaml_document_delete(document *yaml_document_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// tag_directive *yaml_tag_directive_t -// -// context.error = YAML_NO_ERROR // Eliminate a compiler warning. -// -// assert(document) // Non-NULL document object is expected. -// -// while (!STACK_EMPTY(&context, document.nodes)) { -// node yaml_node_t = POP(&context, document.nodes) -// yaml_free(node.tag) -// switch (node.type) { -// case YAML_SCALAR_NODE: -// yaml_free(node.data.scalar.value) -// break -// case YAML_SEQUENCE_NODE: -// STACK_DEL(&context, node.data.sequence.items) -// break -// case YAML_MAPPING_NODE: -// STACK_DEL(&context, node.data.mapping.pairs) -// break -// default: -// assert(0) // Should not happen. -// } -// } -// STACK_DEL(&context, document.nodes) -// -// yaml_free(document.version_directive) -// for (tag_directive = document.tag_directives.start -// tag_directive != document.tag_directives.end -// tag_directive++) { -// yaml_free(tag_directive.handle) -// yaml_free(tag_directive.prefix) -// } -// yaml_free(document.tag_directives.start) -// -// memset(document, 0, sizeof(yaml_document_t)) -//} -// -///** -// * Get a document node. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_node(document *yaml_document_t, index int) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (index > 0 && document.nodes.start + index <= document.nodes.top) { -// return document.nodes.start + index - 1 -// } -// return NULL -//} -// -///** -// * Get the root object. -// */ -// -//YAML_DECLARE(yaml_node_t *) -//yaml_document_get_root_node(document *yaml_document_t) -//{ -// assert(document) // Non-NULL document object is expected. -// -// if (document.nodes.top != document.nodes.start) { -// return document.nodes.start -// } -// return NULL -//} -// -///* -// * Add a scalar node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_scalar(document *yaml_document_t, -// tag *yaml_char_t, value *yaml_char_t, length int, -// style yaml_scalar_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// value_copy *yaml_char_t = NULL -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// assert(value) // Non-NULL value is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (length < 0) { -// length = strlen((char *)value) -// } -// -// if (!yaml_check_utf8(value, length)) goto error -// value_copy = yaml_malloc(length+1) -// if (!value_copy) goto error -// memcpy(value_copy, value, length) -// value_copy[length] = '\0' -// -// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// yaml_free(tag_copy) -// yaml_free(value_copy) -// -// return 0 -//} -// -///* -// * Add a sequence node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_sequence(document *yaml_document_t, -// tag *yaml_char_t, style yaml_sequence_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_item_t -// end *yaml_node_item_t -// top *yaml_node_item_t -// } items = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error -// -// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, items) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Add a mapping node to a document. -// */ -// -//YAML_DECLARE(int) -//yaml_document_add_mapping(document *yaml_document_t, -// tag *yaml_char_t, style yaml_mapping_style_t) -//{ -// struct { -// error yaml_error_type_t -// } context -// mark yaml_mark_t = { 0, 0, 0 } -// tag_copy *yaml_char_t = NULL -// struct { -// start *yaml_node_pair_t -// end *yaml_node_pair_t -// top *yaml_node_pair_t -// } pairs = { NULL, NULL, NULL } -// node yaml_node_t -// -// assert(document) // Non-NULL document object is expected. -// -// if (!tag) { -// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG -// } -// -// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error -// tag_copy = yaml_strdup(tag) -// if (!tag_copy) goto error -// -// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error -// -// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, -// style, mark, mark) -// if (!PUSH(&context, document.nodes, node)) goto error -// -// return document.nodes.top - document.nodes.start -// -//error: -// STACK_DEL(&context, pairs) -// yaml_free(tag_copy) -// -// return 0 -//} -// -///* -// * Append an item to a sequence node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_sequence_item(document *yaml_document_t, -// sequence int, item int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// assert(document) // Non-NULL document is required. -// assert(sequence > 0 -// && document.nodes.start + sequence <= document.nodes.top) -// // Valid sequence id is required. -// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) -// // A sequence node is required. -// assert(item > 0 && document.nodes.start + item <= document.nodes.top) -// // Valid item id is required. -// -// if (!PUSH(&context, -// document.nodes.start[sequence-1].data.sequence.items, item)) -// return 0 -// -// return 1 -//} -// -///* -// * Append a pair of a key and a value to a mapping node. -// */ -// -//YAML_DECLARE(int) -//yaml_document_append_mapping_pair(document *yaml_document_t, -// mapping int, key int, value int) -//{ -// struct { -// error yaml_error_type_t -// } context -// -// pair yaml_node_pair_t -// -// assert(document) // Non-NULL document is required. -// assert(mapping > 0 -// && document.nodes.start + mapping <= document.nodes.top) -// // Valid mapping id is required. -// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) -// // A mapping node is required. -// assert(key > 0 && document.nodes.start + key <= document.nodes.top) -// // Valid key id is required. -// assert(value > 0 && document.nodes.start + value <= document.nodes.top) -// // Valid value id is required. -// -// pair.key = key -// pair.value = value -// -// if (!PUSH(&context, -// document.nodes.start[mapping-1].data.mapping.pairs, pair)) -// return 0 -// -// return 1 -//} -// -// diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go deleted file mode 100644 index 129bc2a9..00000000 --- a/vendor/gopkg.in/yaml.v2/decode.go +++ /dev/null @@ -1,815 +0,0 @@ -package yaml - -import ( - "encoding" - "encoding/base64" - "fmt" - "io" - "math" - "reflect" - "strconv" - "time" -) - -const ( - documentNode = 1 << iota - mappingNode - sequenceNode - scalarNode - aliasNode -) - -type node struct { - kind int - line, column int - tag string - // For an alias node, alias holds the resolved alias. - alias *node - value string - implicit bool - children []*node - anchors map[string]*node -} - -// ---------------------------------------------------------------------------- -// Parser, produces a node tree out of a libyaml event stream. - -type parser struct { - parser yaml_parser_t - event yaml_event_t - doc *node - doneInit bool -} - -func newParser(b []byte) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - if len(b) == 0 { - b = []byte{'\n'} - } - yaml_parser_set_input_string(&p.parser, b) - return &p -} - -func newParserFromReader(r io.Reader) *parser { - p := parser{} - if !yaml_parser_initialize(&p.parser) { - panic("failed to initialize YAML emitter") - } - yaml_parser_set_input_reader(&p.parser, r) - return &p -} - -func (p *parser) init() { - if p.doneInit { - return - } - p.expect(yaml_STREAM_START_EVENT) - p.doneInit = true -} - -func (p *parser) destroy() { - if p.event.typ != yaml_NO_EVENT { - yaml_event_delete(&p.event) - } - yaml_parser_delete(&p.parser) -} - -// expect consumes an event from the event stream and -// checks that it's of the expected type. -func (p *parser) expect(e yaml_event_type_t) { - if p.event.typ == yaml_NO_EVENT { - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - } - if p.event.typ == yaml_STREAM_END_EVENT { - failf("attempted to go past the end of stream; corrupted value?") - } - if p.event.typ != e { - p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) - p.fail() - } - yaml_event_delete(&p.event) - p.event.typ = yaml_NO_EVENT -} - -// peek peeks at the next event in the event stream, -// puts the results into p.event and returns the event type. -func (p *parser) peek() yaml_event_type_t { - if p.event.typ != yaml_NO_EVENT { - return p.event.typ - } - if !yaml_parser_parse(&p.parser, &p.event) { - p.fail() - } - return p.event.typ -} - -func (p *parser) fail() { - var where string - var line int - if p.parser.problem_mark.line != 0 { - line = p.parser.problem_mark.line - // Scanner errors don't iterate line before returning error - if p.parser.error == yaml_SCANNER_ERROR { - line++ - } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line - } - if line != 0 { - where = "line " + strconv.Itoa(line) + ": " - } - var msg string - if len(p.parser.problem) > 0 { - msg = p.parser.problem - } else { - msg = "unknown problem parsing YAML content" - } - failf("%s%s", where, msg) -} - -func (p *parser) anchor(n *node, anchor []byte) { - if anchor != nil { - p.doc.anchors[string(anchor)] = n - } -} - -func (p *parser) parse() *node { - p.init() - switch p.peek() { - case yaml_SCALAR_EVENT: - return p.scalar() - case yaml_ALIAS_EVENT: - return p.alias() - case yaml_MAPPING_START_EVENT: - return p.mapping() - case yaml_SEQUENCE_START_EVENT: - return p.sequence() - case yaml_DOCUMENT_START_EVENT: - return p.document() - case yaml_STREAM_END_EVENT: - // Happens when attempting to decode an empty buffer. - return nil - default: - panic("attempted to parse unknown event: " + p.event.typ.String()) - } -} - -func (p *parser) node(kind int) *node { - return &node{ - kind: kind, - line: p.event.start_mark.line, - column: p.event.start_mark.column, - } -} - -func (p *parser) document() *node { - n := p.node(documentNode) - n.anchors = make(map[string]*node) - p.doc = n - p.expect(yaml_DOCUMENT_START_EVENT) - n.children = append(n.children, p.parse()) - p.expect(yaml_DOCUMENT_END_EVENT) - return n -} - -func (p *parser) alias() *node { - n := p.node(aliasNode) - n.value = string(p.event.anchor) - n.alias = p.doc.anchors[n.value] - if n.alias == nil { - failf("unknown anchor '%s' referenced", n.value) - } - p.expect(yaml_ALIAS_EVENT) - return n -} - -func (p *parser) scalar() *node { - n := p.node(scalarNode) - n.value = string(p.event.value) - n.tag = string(p.event.tag) - n.implicit = p.event.implicit - p.anchor(n, p.event.anchor) - p.expect(yaml_SCALAR_EVENT) - return n -} - -func (p *parser) sequence() *node { - n := p.node(sequenceNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_SEQUENCE_START_EVENT) - for p.peek() != yaml_SEQUENCE_END_EVENT { - n.children = append(n.children, p.parse()) - } - p.expect(yaml_SEQUENCE_END_EVENT) - return n -} - -func (p *parser) mapping() *node { - n := p.node(mappingNode) - p.anchor(n, p.event.anchor) - p.expect(yaml_MAPPING_START_EVENT) - for p.peek() != yaml_MAPPING_END_EVENT { - n.children = append(n.children, p.parse(), p.parse()) - } - p.expect(yaml_MAPPING_END_EVENT) - return n -} - -// ---------------------------------------------------------------------------- -// Decoder, unmarshals a node into a provided value. - -type decoder struct { - doc *node - aliases map[*node]bool - mapType reflect.Type - terrors []string - strict bool - - decodeCount int - aliasCount int - aliasDepth int -} - -var ( - mapItemType = reflect.TypeOf(MapItem{}) - durationType = reflect.TypeOf(time.Duration(0)) - defaultMapType = reflect.TypeOf(map[interface{}]interface{}{}) - ifaceType = defaultMapType.Elem() - timeType = reflect.TypeOf(time.Time{}) - ptrTimeType = reflect.TypeOf(&time.Time{}) -) - -func newDecoder(strict bool) *decoder { - d := &decoder{mapType: defaultMapType, strict: strict} - d.aliases = make(map[*node]bool) - return d -} - -func (d *decoder) terror(n *node, tag string, out reflect.Value) { - if n.tag != "" { - tag = n.tag - } - value := n.value - if tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG { - if len(value) > 10 { - value = " `" + value[:7] + "...`" - } else { - value = " `" + value + "`" - } - } - d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.line+1, shortTag(tag), value, out.Type())) -} - -func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) { - terrlen := len(d.terrors) - err := u.UnmarshalYAML(func(v interface{}) (err error) { - defer handleErr(&err) - d.unmarshal(n, reflect.ValueOf(v)) - if len(d.terrors) > terrlen { - issues := d.terrors[terrlen:] - d.terrors = d.terrors[:terrlen] - return &TypeError{issues} - } - return nil - }) - if e, ok := err.(*TypeError); ok { - d.terrors = append(d.terrors, e.Errors...) - return false - } - if err != nil { - fail(err) - } - return true -} - -// d.prepare initializes and dereferences pointers and calls UnmarshalYAML -// if a value is found to implement it. -// It returns the initialized and dereferenced out value, whether -// unmarshalling was already done by UnmarshalYAML, and if so whether -// its types unmarshalled appropriately. -// -// If n holds a null value, prepare returns before doing anything. -func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { - if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "~" || n.value == "" && n.implicit) { - return out, false, false - } - again := true - for again { - again = false - if out.Kind() == reflect.Ptr { - if out.IsNil() { - out.Set(reflect.New(out.Type().Elem())) - } - out = out.Elem() - again = true - } - if out.CanAddr() { - if u, ok := out.Addr().Interface().(Unmarshaler); ok { - good = d.callUnmarshaler(n, u) - return out, true, good - } - } - } - return out, false, false -} - -const ( - // 400,000 decode operations is ~500kb of dense object declarations, or - // ~5kb of dense object declarations with 10000% alias expansion - alias_ratio_range_low = 400000 - - // 4,000,000 decode operations is ~5MB of dense object declarations, or - // ~4.5MB of dense object declarations with 10% alias expansion - alias_ratio_range_high = 4000000 - - // alias_ratio_range is the range over which we scale allowed alias ratios - alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) -) - -func allowedAliasRatio(decodeCount int) float64 { - switch { - case decodeCount <= alias_ratio_range_low: - // allow 99% to come from alias expansion for small-to-medium documents - return 0.99 - case decodeCount >= alias_ratio_range_high: - // allow 10% to come from alias expansion for very large documents - return 0.10 - default: - // scale smoothly from 99% down to 10% over the range. - // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. - // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). - return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) - } -} - -func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { - d.decodeCount++ - if d.aliasDepth > 0 { - d.aliasCount++ - } - if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { - failf("document contains excessive aliasing") - } - switch n.kind { - case documentNode: - return d.document(n, out) - case aliasNode: - return d.alias(n, out) - } - out, unmarshaled, good := d.prepare(n, out) - if unmarshaled { - return good - } - switch n.kind { - case scalarNode: - good = d.scalar(n, out) - case mappingNode: - good = d.mapping(n, out) - case sequenceNode: - good = d.sequence(n, out) - default: - panic("internal error: unknown node kind: " + strconv.Itoa(n.kind)) - } - return good -} - -func (d *decoder) document(n *node, out reflect.Value) (good bool) { - if len(n.children) == 1 { - d.doc = n - d.unmarshal(n.children[0], out) - return true - } - return false -} - -func (d *decoder) alias(n *node, out reflect.Value) (good bool) { - if d.aliases[n] { - // TODO this could actually be allowed in some circumstances. - failf("anchor '%s' value contains itself", n.value) - } - d.aliases[n] = true - d.aliasDepth++ - good = d.unmarshal(n.alias, out) - d.aliasDepth-- - delete(d.aliases, n) - return good -} - -var zeroValue reflect.Value - -func resetMap(out reflect.Value) { - for _, k := range out.MapKeys() { - out.SetMapIndex(k, zeroValue) - } -} - -func (d *decoder) scalar(n *node, out reflect.Value) bool { - var tag string - var resolved interface{} - if n.tag == "" && !n.implicit { - tag = yaml_STR_TAG - resolved = n.value - } else { - tag, resolved = resolve(n.tag, n.value) - if tag == yaml_BINARY_TAG { - data, err := base64.StdEncoding.DecodeString(resolved.(string)) - if err != nil { - failf("!!binary value contains invalid base64 data") - } - resolved = string(data) - } - } - if resolved == nil { - if out.Kind() == reflect.Map && !out.CanAddr() { - resetMap(out) - } else { - out.Set(reflect.Zero(out.Type())) - } - return true - } - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - // We've resolved to exactly the type we want, so use that. - out.Set(resolvedv) - return true - } - // Perhaps we can use the value as a TextUnmarshaler to - // set its value. - if out.CanAddr() { - u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) - if ok { - var text []byte - if tag == yaml_BINARY_TAG { - text = []byte(resolved.(string)) - } else { - // We let any value be unmarshaled into TextUnmarshaler. - // That might be more lax than we'd like, but the - // TextUnmarshaler itself should bowl out any dubious values. - text = []byte(n.value) - } - err := u.UnmarshalText(text) - if err != nil { - fail(err) - } - return true - } - } - switch out.Kind() { - case reflect.String: - if tag == yaml_BINARY_TAG { - out.SetString(resolved.(string)) - return true - } - if resolved != nil { - out.SetString(n.value) - return true - } - case reflect.Interface: - if resolved == nil { - out.Set(reflect.Zero(out.Type())) - } else if tag == yaml_TIMESTAMP_TAG { - // It looks like a timestamp but for backward compatibility - // reasons we set it as a string, so that code that unmarshals - // timestamp-like values into interface{} will continue to - // see a string and not a time.Time. - // TODO(v3) Drop this. - out.Set(reflect.ValueOf(n.value)) - } else { - out.Set(reflect.ValueOf(resolved)) - } - return true - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - switch resolved := resolved.(type) { - case int: - if !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case int64: - if !out.OverflowInt(resolved) { - out.SetInt(resolved) - return true - } - case uint64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case float64: - if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { - out.SetInt(int64(resolved)) - return true - } - case string: - if out.Type() == durationType { - d, err := time.ParseDuration(resolved) - if err == nil { - out.SetInt(int64(d)) - return true - } - } - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - switch resolved := resolved.(type) { - case int: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case int64: - if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case uint64: - if !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - case float64: - if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { - out.SetUint(uint64(resolved)) - return true - } - } - case reflect.Bool: - switch resolved := resolved.(type) { - case bool: - out.SetBool(resolved) - return true - } - case reflect.Float32, reflect.Float64: - switch resolved := resolved.(type) { - case int: - out.SetFloat(float64(resolved)) - return true - case int64: - out.SetFloat(float64(resolved)) - return true - case uint64: - out.SetFloat(float64(resolved)) - return true - case float64: - out.SetFloat(resolved) - return true - } - case reflect.Struct: - if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { - out.Set(resolvedv) - return true - } - case reflect.Ptr: - if out.Type().Elem() == reflect.TypeOf(resolved) { - // TODO DOes this make sense? When is out a Ptr except when decoding a nil value? - elem := reflect.New(out.Type().Elem()) - elem.Elem().Set(reflect.ValueOf(resolved)) - out.Set(elem) - return true - } - } - d.terror(n, tag, out) - return false -} - -func settableValueOf(i interface{}) reflect.Value { - v := reflect.ValueOf(i) - sv := reflect.New(v.Type()).Elem() - sv.Set(v) - return sv -} - -func (d *decoder) sequence(n *node, out reflect.Value) (good bool) { - l := len(n.children) - - var iface reflect.Value - switch out.Kind() { - case reflect.Slice: - out.Set(reflect.MakeSlice(out.Type(), l, l)) - case reflect.Array: - if l != out.Len() { - failf("invalid array: want %d elements but got %d", out.Len(), l) - } - case reflect.Interface: - // No type hints. Will have to use a generic sequence. - iface = out - out = settableValueOf(make([]interface{}, l)) - default: - d.terror(n, yaml_SEQ_TAG, out) - return false - } - et := out.Type().Elem() - - j := 0 - for i := 0; i < l; i++ { - e := reflect.New(et).Elem() - if ok := d.unmarshal(n.children[i], e); ok { - out.Index(j).Set(e) - j++ - } - } - if out.Kind() != reflect.Array { - out.Set(out.Slice(0, j)) - } - if iface.IsValid() { - iface.Set(out) - } - return true -} - -func (d *decoder) mapping(n *node, out reflect.Value) (good bool) { - switch out.Kind() { - case reflect.Struct: - return d.mappingStruct(n, out) - case reflect.Slice: - return d.mappingSlice(n, out) - case reflect.Map: - // okay - case reflect.Interface: - if d.mapType.Kind() == reflect.Map { - iface := out - out = reflect.MakeMap(d.mapType) - iface.Set(out) - } else { - slicev := reflect.New(d.mapType).Elem() - if !d.mappingSlice(n, slicev) { - return false - } - out.Set(slicev) - return true - } - default: - d.terror(n, yaml_MAP_TAG, out) - return false - } - outt := out.Type() - kt := outt.Key() - et := outt.Elem() - - mapType := d.mapType - if outt.Key() == ifaceType && outt.Elem() == ifaceType { - d.mapType = outt - } - - if out.IsNil() { - out.Set(reflect.MakeMap(outt)) - } - l := len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - k := reflect.New(kt).Elem() - if d.unmarshal(n.children[i], k) { - kkind := k.Kind() - if kkind == reflect.Interface { - kkind = k.Elem().Kind() - } - if kkind == reflect.Map || kkind == reflect.Slice { - failf("invalid map key: %#v", k.Interface()) - } - e := reflect.New(et).Elem() - if d.unmarshal(n.children[i+1], e) { - d.setMapIndex(n.children[i+1], out, k, e) - } - } - } - d.mapType = mapType - return true -} - -func (d *decoder) setMapIndex(n *node, out, k, v reflect.Value) { - if d.strict && out.MapIndex(k) != zeroValue { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: key %#v already set in map", n.line+1, k.Interface())) - return - } - out.SetMapIndex(k, v) -} - -func (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) { - outt := out.Type() - if outt.Elem() != mapItemType { - d.terror(n, yaml_MAP_TAG, out) - return false - } - - mapType := d.mapType - d.mapType = outt - - var slice []MapItem - var l = len(n.children) - for i := 0; i < l; i += 2 { - if isMerge(n.children[i]) { - d.merge(n.children[i+1], out) - continue - } - item := MapItem{} - k := reflect.ValueOf(&item.Key).Elem() - if d.unmarshal(n.children[i], k) { - v := reflect.ValueOf(&item.Value).Elem() - if d.unmarshal(n.children[i+1], v) { - slice = append(slice, item) - } - } - } - out.Set(reflect.ValueOf(slice)) - d.mapType = mapType - return true -} - -func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { - sinfo, err := getStructInfo(out.Type()) - if err != nil { - panic(err) - } - name := settableValueOf("") - l := len(n.children) - - var inlineMap reflect.Value - var elemType reflect.Type - if sinfo.InlineMap != -1 { - inlineMap = out.Field(sinfo.InlineMap) - inlineMap.Set(reflect.New(inlineMap.Type()).Elem()) - elemType = inlineMap.Type().Elem() - } - - var doneFields []bool - if d.strict { - doneFields = make([]bool, len(sinfo.FieldsList)) - } - for i := 0; i < l; i += 2 { - ni := n.children[i] - if isMerge(ni) { - d.merge(n.children[i+1], out) - continue - } - if !d.unmarshal(ni, name) { - continue - } - if info, ok := sinfo.FieldsMap[name.String()]; ok { - if d.strict { - if doneFields[info.Id] { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.line+1, name.String(), out.Type())) - continue - } - doneFields[info.Id] = true - } - var field reflect.Value - if info.Inline == nil { - field = out.Field(info.Num) - } else { - field = out.FieldByIndex(info.Inline) - } - d.unmarshal(n.children[i+1], field) - } else if sinfo.InlineMap != -1 { - if inlineMap.IsNil() { - inlineMap.Set(reflect.MakeMap(inlineMap.Type())) - } - value := reflect.New(elemType).Elem() - d.unmarshal(n.children[i+1], value) - d.setMapIndex(n.children[i+1], inlineMap, name, value) - } else if d.strict { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.line+1, name.String(), out.Type())) - } - } - return true -} - -func failWantMap() { - failf("map merge requires map or sequence of maps as the value") -} - -func (d *decoder) merge(n *node, out reflect.Value) { - switch n.kind { - case mappingNode: - d.unmarshal(n, out) - case aliasNode: - if n.alias != nil && n.alias.kind != mappingNode { - failWantMap() - } - d.unmarshal(n, out) - case sequenceNode: - // Step backwards as earlier nodes take precedence. - for i := len(n.children) - 1; i >= 0; i-- { - ni := n.children[i] - if ni.kind == aliasNode { - if ni.alias != nil && ni.alias.kind != mappingNode { - failWantMap() - } - } else if ni.kind != mappingNode { - failWantMap() - } - d.unmarshal(ni, out) - } - default: - failWantMap() - } -} - -func isMerge(n *node) bool { - return n.kind == scalarNode && n.value == "<<" && (n.implicit == true || n.tag == yaml_MERGE_TAG) -} diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/gopkg.in/yaml.v2/emitterc.go deleted file mode 100644 index a1c2cc52..00000000 --- a/vendor/gopkg.in/yaml.v2/emitterc.go +++ /dev/null @@ -1,1685 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Flush the buffer if needed. -func flush(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) { - return yaml_emitter_flush(emitter) - } - return true -} - -// Put a character to the output buffer. -func put(emitter *yaml_emitter_t, value byte) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - emitter.buffer[emitter.buffer_pos] = value - emitter.buffer_pos++ - emitter.column++ - return true -} - -// Put a line break to the output buffer. -func put_break(emitter *yaml_emitter_t) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - switch emitter.line_break { - case yaml_CR_BREAK: - emitter.buffer[emitter.buffer_pos] = '\r' - emitter.buffer_pos += 1 - case yaml_LN_BREAK: - emitter.buffer[emitter.buffer_pos] = '\n' - emitter.buffer_pos += 1 - case yaml_CRLN_BREAK: - emitter.buffer[emitter.buffer_pos+0] = '\r' - emitter.buffer[emitter.buffer_pos+1] = '\n' - emitter.buffer_pos += 2 - default: - panic("unknown line break setting") - } - emitter.column = 0 - emitter.line++ - return true -} - -// Copy a character from a string into buffer. -func write(emitter *yaml_emitter_t, s []byte, i *int) bool { - if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { - return false - } - p := emitter.buffer_pos - w := width(s[*i]) - switch w { - case 4: - emitter.buffer[p+3] = s[*i+3] - fallthrough - case 3: - emitter.buffer[p+2] = s[*i+2] - fallthrough - case 2: - emitter.buffer[p+1] = s[*i+1] - fallthrough - case 1: - emitter.buffer[p+0] = s[*i+0] - default: - panic("unknown character width") - } - emitter.column++ - emitter.buffer_pos += w - *i += w - return true -} - -// Write a whole string into buffer. -func write_all(emitter *yaml_emitter_t, s []byte) bool { - for i := 0; i < len(s); { - if !write(emitter, s, &i) { - return false - } - } - return true -} - -// Copy a line break character from a string into buffer. -func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { - if s[*i] == '\n' { - if !put_break(emitter) { - return false - } - *i++ - } else { - if !write(emitter, s, i) { - return false - } - emitter.column = 0 - emitter.line++ - } - return true -} - -// Set an emitter error and return false. -func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_EMITTER_ERROR - emitter.problem = problem - return false -} - -// Emit an event. -func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.events = append(emitter.events, *event) - for !yaml_emitter_need_more_events(emitter) { - event := &emitter.events[emitter.events_head] - if !yaml_emitter_analyze_event(emitter, event) { - return false - } - if !yaml_emitter_state_machine(emitter, event) { - return false - } - yaml_event_delete(event) - emitter.events_head++ - } - return true -} - -// Check if we need to accumulate more events before emitting. -// -// We accumulate extra -// - 1 event for DOCUMENT-START -// - 2 events for SEQUENCE-START -// - 3 events for MAPPING-START -// -func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { - if emitter.events_head == len(emitter.events) { - return true - } - var accumulate int - switch emitter.events[emitter.events_head].typ { - case yaml_DOCUMENT_START_EVENT: - accumulate = 1 - break - case yaml_SEQUENCE_START_EVENT: - accumulate = 2 - break - case yaml_MAPPING_START_EVENT: - accumulate = 3 - break - default: - return false - } - if len(emitter.events)-emitter.events_head > accumulate { - return false - } - var level int - for i := emitter.events_head; i < len(emitter.events); i++ { - switch emitter.events[i].typ { - case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: - level++ - case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: - level-- - } - if level == 0 { - return false - } - } - return true -} - -// Append a directive to the directives stack. -func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { - for i := 0; i < len(emitter.tag_directives); i++ { - if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") - } - } - - // [Go] Do we actually need to copy this given garbage collection - // and the lack of deallocating destructors? - tag_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(tag_copy.handle, value.handle) - copy(tag_copy.prefix, value.prefix) - emitter.tag_directives = append(emitter.tag_directives, tag_copy) - return true -} - -// Increase the indentation level. -func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { - emitter.indents = append(emitter.indents, emitter.indent) - if emitter.indent < 0 { - if flow { - emitter.indent = emitter.best_indent - } else { - emitter.indent = 0 - } - } else if !indentless { - emitter.indent += emitter.best_indent - } - return true -} - -// State dispatcher. -func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { - switch emitter.state { - default: - case yaml_EMIT_STREAM_START_STATE: - return yaml_emitter_emit_stream_start(emitter, event) - - case yaml_EMIT_FIRST_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, true) - - case yaml_EMIT_DOCUMENT_START_STATE: - return yaml_emitter_emit_document_start(emitter, event, false) - - case yaml_EMIT_DOCUMENT_CONTENT_STATE: - return yaml_emitter_emit_document_content(emitter, event) - - case yaml_EMIT_DOCUMENT_END_STATE: - return yaml_emitter_emit_document_end(emitter, event) - - case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, true) - - case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_flow_sequence_item(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_KEY_STATE: - return yaml_emitter_emit_flow_mapping_key(emitter, event, false) - - case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, true) - - case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: - return yaml_emitter_emit_flow_mapping_value(emitter, event, false) - - case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, true) - - case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: - return yaml_emitter_emit_block_sequence_item(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: - return yaml_emitter_emit_block_mapping_key(emitter, event, false) - - case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, true) - - case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: - return yaml_emitter_emit_block_mapping_value(emitter, event, false) - - case yaml_EMIT_END_STATE: - return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") - } - panic("invalid emitter state") -} - -// Expect STREAM-START. -func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_STREAM_START_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") - } - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = event.encoding - if emitter.encoding == yaml_ANY_ENCODING { - emitter.encoding = yaml_UTF8_ENCODING - } - } - if emitter.best_indent < 2 || emitter.best_indent > 9 { - emitter.best_indent = 2 - } - if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { - emitter.best_width = 80 - } - if emitter.best_width < 0 { - emitter.best_width = 1<<31 - 1 - } - if emitter.line_break == yaml_ANY_BREAK { - emitter.line_break = yaml_LN_BREAK - } - - emitter.indent = -1 - emitter.line = 0 - emitter.column = 0 - emitter.whitespace = true - emitter.indention = true - - if emitter.encoding != yaml_UTF8_ENCODING { - if !yaml_emitter_write_bom(emitter) { - return false - } - } - emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE - return true -} - -// Expect DOCUMENT-START or STREAM-END. -func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - - if event.typ == yaml_DOCUMENT_START_EVENT { - - if event.version_directive != nil { - if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { - return false - } - } - - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { - return false - } - if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { - return false - } - } - - for i := 0; i < len(default_tag_directives); i++ { - tag_directive := &default_tag_directives[i] - if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { - return false - } - } - - implicit := event.implicit - if !first || emitter.canonical { - implicit = false - } - - if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if event.version_directive != nil { - implicit = false - if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if len(event.tag_directives) > 0 { - implicit = false - for i := 0; i < len(event.tag_directives); i++ { - tag_directive := &event.tag_directives[i] - if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { - return false - } - if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - if yaml_emitter_check_empty_document(emitter) { - implicit = false - } - if !implicit { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { - return false - } - if emitter.canonical { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - } - - emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE - return true - } - - if event.typ == yaml_STREAM_END_EVENT { - if emitter.open_ended { - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_END_STATE - return true - } - - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") -} - -// Expect the root node. -func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { - emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) - return yaml_emitter_emit_node(emitter, event, true, false, false, false) -} - -// Expect DOCUMENT-END. -func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if event.typ != yaml_DOCUMENT_END_EVENT { - return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !event.implicit { - // [Go] Allocate the slice elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_flush(emitter) { - return false - } - emitter.state = yaml_EMIT_DOCUMENT_START_STATE - emitter.tag_directives = emitter.tag_directives[:0] - return true -} - -// Expect a flow item node. -func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a flow key node. -func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - emitter.flow_level++ - } - - if event.typ == yaml_MAPPING_END_EVENT { - emitter.flow_level-- - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - if emitter.canonical && !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - - if !first { - if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { - return false - } - } - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - - if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a flow value node. -func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if emitter.canonical || emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block item node. -func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) { - return false - } - } - if event.typ == yaml_SEQUENCE_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) - return yaml_emitter_emit_node(emitter, event, false, true, false, false) -} - -// Expect a block key node. -func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { - if first { - if !yaml_emitter_increase_indent(emitter, false, false) { - return false - } - } - if event.typ == yaml_MAPPING_END_EVENT { - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true - } - if !yaml_emitter_write_indent(emitter) { - return false - } - if yaml_emitter_check_simple_key(emitter) { - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, true) - } - if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { - return false - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a block value node. -func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { - if simple { - if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { - return false - } - } else { - if !yaml_emitter_write_indent(emitter) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { - return false - } - } - emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) - return yaml_emitter_emit_node(emitter, event, false, false, true, false) -} - -// Expect a node. -func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, - root bool, sequence bool, mapping bool, simple_key bool) bool { - - emitter.root_context = root - emitter.sequence_context = sequence - emitter.mapping_context = mapping - emitter.simple_key_context = simple_key - - switch event.typ { - case yaml_ALIAS_EVENT: - return yaml_emitter_emit_alias(emitter, event) - case yaml_SCALAR_EVENT: - return yaml_emitter_emit_scalar(emitter, event) - case yaml_SEQUENCE_START_EVENT: - return yaml_emitter_emit_sequence_start(emitter, event) - case yaml_MAPPING_START_EVENT: - return yaml_emitter_emit_mapping_start(emitter, event) - default: - return yaml_emitter_set_emitter_error(emitter, - fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) - } -} - -// Expect ALIAS. -func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SCALAR. -func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_select_scalar_style(emitter, event) { - return false - } - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if !yaml_emitter_increase_indent(emitter, true, false) { - return false - } - if !yaml_emitter_process_scalar(emitter) { - return false - } - emitter.indent = emitter.indents[len(emitter.indents)-1] - emitter.indents = emitter.indents[:len(emitter.indents)-1] - emitter.state = emitter.states[len(emitter.states)-1] - emitter.states = emitter.states[:len(emitter.states)-1] - return true -} - -// Expect SEQUENCE-START. -func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || - yaml_emitter_check_empty_sequence(emitter) { - emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE - } - return true -} - -// Expect MAPPING-START. -func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { - if !yaml_emitter_process_anchor(emitter) { - return false - } - if !yaml_emitter_process_tag(emitter) { - return false - } - if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || - yaml_emitter_check_empty_mapping(emitter) { - emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE - } else { - emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE - } - return true -} - -// Check if the document content is an empty scalar. -func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { - return false // [Go] Huh? -} - -// Check if the next events represent an empty sequence. -func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT -} - -// Check if the next events represent an empty mapping. -func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { - if len(emitter.events)-emitter.events_head < 2 { - return false - } - return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && - emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT -} - -// Check if the next node can be expressed as a simple key. -func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { - length := 0 - switch emitter.events[emitter.events_head].typ { - case yaml_ALIAS_EVENT: - length += len(emitter.anchor_data.anchor) - case yaml_SCALAR_EVENT: - if emitter.scalar_data.multiline { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) + - len(emitter.scalar_data.value) - case yaml_SEQUENCE_START_EVENT: - if !yaml_emitter_check_empty_sequence(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - case yaml_MAPPING_START_EVENT: - if !yaml_emitter_check_empty_mapping(emitter) { - return false - } - length += len(emitter.anchor_data.anchor) + - len(emitter.tag_data.handle) + - len(emitter.tag_data.suffix) - default: - return false - } - return length <= 128 -} - -// Determine an acceptable scalar style. -func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 - if no_tag && !event.implicit && !event.quoted_implicit { - return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") - } - - style := event.scalar_style() - if style == yaml_ANY_SCALAR_STYLE { - style = yaml_PLAIN_SCALAR_STYLE - } - if emitter.canonical { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - if emitter.simple_key_context && emitter.scalar_data.multiline { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - - if style == yaml_PLAIN_SCALAR_STYLE { - if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || - emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - if no_tag && !event.implicit { - style = yaml_SINGLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { - if !emitter.scalar_data.single_quoted_allowed { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { - if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - } - - if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { - emitter.tag_data.handle = []byte{'!'} - } - emitter.scalar_data.style = style - return true -} - -// Write an anchor. -func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { - if emitter.anchor_data.anchor == nil { - return true - } - c := []byte{'&'} - if emitter.anchor_data.alias { - c[0] = '*' - } - if !yaml_emitter_write_indicator(emitter, c, true, false, false) { - return false - } - return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) -} - -// Write a tag. -func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { - if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { - return true - } - if len(emitter.tag_data.handle) > 0 { - if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { - return false - } - if len(emitter.tag_data.suffix) > 0 { - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - } - } else { - // [Go] Allocate these slices elsewhere. - if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { - return false - } - if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { - return false - } - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { - return false - } - } - return true -} - -// Write a scalar. -func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { - switch emitter.scalar_data.style { - case yaml_PLAIN_SCALAR_STYLE: - return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_SINGLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_DOUBLE_QUOTED_SCALAR_STYLE: - return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) - - case yaml_LITERAL_SCALAR_STYLE: - return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) - - case yaml_FOLDED_SCALAR_STYLE: - return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) - } - panic("unknown scalar style") -} - -// Check if a %YAML directive is valid. -func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { - if version_directive.major != 1 || version_directive.minor != 1 { - return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") - } - return true -} - -// Check if a %TAG directive is valid. -func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { - handle := tag_directive.handle - prefix := tag_directive.prefix - if len(handle) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") - } - if handle[0] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") - } - if handle[len(handle)-1] != '!' { - return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") - } - for i := 1; i < len(handle)-1; i += width(handle[i]) { - if !is_alpha(handle, i) { - return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") - } - } - if len(prefix) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") - } - return true -} - -// Check if an anchor is valid. -func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { - if len(anchor) == 0 { - problem := "anchor value must not be empty" - if alias { - problem = "alias value must not be empty" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - for i := 0; i < len(anchor); i += width(anchor[i]) { - if !is_alpha(anchor, i) { - problem := "anchor value must contain alphanumerical characters only" - if alias { - problem = "alias value must contain alphanumerical characters only" - } - return yaml_emitter_set_emitter_error(emitter, problem) - } - } - emitter.anchor_data.anchor = anchor - emitter.anchor_data.alias = alias - return true -} - -// Check if a tag is valid. -func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { - if len(tag) == 0 { - return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") - } - for i := 0; i < len(emitter.tag_directives); i++ { - tag_directive := &emitter.tag_directives[i] - if bytes.HasPrefix(tag, tag_directive.prefix) { - emitter.tag_data.handle = tag_directive.handle - emitter.tag_data.suffix = tag[len(tag_directive.prefix):] - return true - } - } - emitter.tag_data.suffix = tag - return true -} - -// Check if a scalar is valid. -func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { - var ( - block_indicators = false - flow_indicators = false - line_breaks = false - special_characters = false - - leading_space = false - leading_break = false - trailing_space = false - trailing_break = false - break_space = false - space_break = false - - preceded_by_whitespace = false - followed_by_whitespace = false - previous_space = false - previous_break = false - ) - - emitter.scalar_data.value = value - - if len(value) == 0 { - emitter.scalar_data.multiline = false - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = false - return true - } - - if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { - block_indicators = true - flow_indicators = true - } - - preceded_by_whitespace = true - for i, w := 0, 0; i < len(value); i += w { - w = width(value[i]) - followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) - - if i == 0 { - switch value[i] { - case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': - flow_indicators = true - block_indicators = true - case '?', ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '-': - if followed_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } else { - switch value[i] { - case ',', '?', '[', ']', '{', '}': - flow_indicators = true - case ':': - flow_indicators = true - if followed_by_whitespace { - block_indicators = true - } - case '#': - if preceded_by_whitespace { - flow_indicators = true - block_indicators = true - } - } - } - - if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { - special_characters = true - } - if is_space(value, i) { - if i == 0 { - leading_space = true - } - if i+width(value[i]) == len(value) { - trailing_space = true - } - if previous_break { - break_space = true - } - previous_space = true - previous_break = false - } else if is_break(value, i) { - line_breaks = true - if i == 0 { - leading_break = true - } - if i+width(value[i]) == len(value) { - trailing_break = true - } - if previous_space { - space_break = true - } - previous_space = false - previous_break = true - } else { - previous_space = false - previous_break = false - } - - // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. - preceded_by_whitespace = is_blankz(value, i) - } - - emitter.scalar_data.multiline = line_breaks - emitter.scalar_data.flow_plain_allowed = true - emitter.scalar_data.block_plain_allowed = true - emitter.scalar_data.single_quoted_allowed = true - emitter.scalar_data.block_allowed = true - - if leading_space || leading_break || trailing_space || trailing_break { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if trailing_space { - emitter.scalar_data.block_allowed = false - } - if break_space { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - } - if space_break || special_characters { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - emitter.scalar_data.single_quoted_allowed = false - emitter.scalar_data.block_allowed = false - } - if line_breaks { - emitter.scalar_data.flow_plain_allowed = false - emitter.scalar_data.block_plain_allowed = false - } - if flow_indicators { - emitter.scalar_data.flow_plain_allowed = false - } - if block_indicators { - emitter.scalar_data.block_plain_allowed = false - } - return true -} - -// Check if the event data is valid. -func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { - - emitter.anchor_data.anchor = nil - emitter.tag_data.handle = nil - emitter.tag_data.suffix = nil - emitter.scalar_data.value = nil - - switch event.typ { - case yaml_ALIAS_EVENT: - if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { - return false - } - - case yaml_SCALAR_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - if !yaml_emitter_analyze_scalar(emitter, event.value) { - return false - } - - case yaml_SEQUENCE_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - - case yaml_MAPPING_START_EVENT: - if len(event.anchor) > 0 { - if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { - return false - } - } - if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { - if !yaml_emitter_analyze_tag(emitter, event.tag) { - return false - } - } - } - return true -} - -// Write the BOM character. -func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { - if !flush(emitter) { - return false - } - pos := emitter.buffer_pos - emitter.buffer[pos+0] = '\xEF' - emitter.buffer[pos+1] = '\xBB' - emitter.buffer[pos+2] = '\xBF' - emitter.buffer_pos += 3 - return true -} - -func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { - indent := emitter.indent - if indent < 0 { - indent = 0 - } - if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { - if !put_break(emitter) { - return false - } - } - for emitter.column < indent { - if !put(emitter, ' ') { - return false - } - } - emitter.whitespace = true - emitter.indention = true - return true -} - -func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, indicator) { - return false - } - emitter.whitespace = is_whitespace - emitter.indention = (emitter.indention && is_indention) - emitter.open_ended = false - return true -} - -func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - if !write_all(emitter, value) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { - if need_whitespace && !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - for i := 0; i < len(value); { - var must_write bool - switch value[i] { - case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': - must_write = true - default: - must_write = is_alpha(value, i) - } - if must_write { - if !write(emitter, value, &i) { - return false - } - } else { - w := width(value[i]) - for k := 0; k < w; k++ { - octet := value[i] - i++ - if !put(emitter, '%') { - return false - } - - c := octet >> 4 - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - - c = octet & 0x0f - if c < 10 { - c += '0' - } else { - c += 'A' - 10 - } - if !put(emitter, c) { - return false - } - } - } - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - if !emitter.whitespace { - if !put(emitter, ' ') { - return false - } - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - - emitter.whitespace = false - emitter.indention = false - if emitter.root_context { - emitter.open_ended = true - } - - return true -} - -func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { - return false - } - - spaces := false - breaks := false - for i := 0; i < len(value); { - if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - spaces = true - } else if is_break(value, i) { - if !breaks && value[i] == '\n' { - if !put_break(emitter) { - return false - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if value[i] == '\'' { - if !put(emitter, '\'') { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - spaces = false - breaks = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { - spaces := false - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { - return false - } - - for i := 0; i < len(value); { - if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || - is_bom(value, i) || is_break(value, i) || - value[i] == '"' || value[i] == '\\' { - - octet := value[i] - - var w int - var v rune - switch { - case octet&0x80 == 0x00: - w, v = 1, rune(octet&0x7F) - case octet&0xE0 == 0xC0: - w, v = 2, rune(octet&0x1F) - case octet&0xF0 == 0xE0: - w, v = 3, rune(octet&0x0F) - case octet&0xF8 == 0xF0: - w, v = 4, rune(octet&0x07) - } - for k := 1; k < w; k++ { - octet = value[i+k] - v = (v << 6) + (rune(octet) & 0x3F) - } - i += w - - if !put(emitter, '\\') { - return false - } - - var ok bool - switch v { - case 0x00: - ok = put(emitter, '0') - case 0x07: - ok = put(emitter, 'a') - case 0x08: - ok = put(emitter, 'b') - case 0x09: - ok = put(emitter, 't') - case 0x0A: - ok = put(emitter, 'n') - case 0x0b: - ok = put(emitter, 'v') - case 0x0c: - ok = put(emitter, 'f') - case 0x0d: - ok = put(emitter, 'r') - case 0x1b: - ok = put(emitter, 'e') - case 0x22: - ok = put(emitter, '"') - case 0x5c: - ok = put(emitter, '\\') - case 0x85: - ok = put(emitter, 'N') - case 0xA0: - ok = put(emitter, '_') - case 0x2028: - ok = put(emitter, 'L') - case 0x2029: - ok = put(emitter, 'P') - default: - if v <= 0xFF { - ok = put(emitter, 'x') - w = 2 - } else if v <= 0xFFFF { - ok = put(emitter, 'u') - w = 4 - } else { - ok = put(emitter, 'U') - w = 8 - } - for k := (w - 1) * 4; ok && k >= 0; k -= 4 { - digit := byte((v >> uint(k)) & 0x0F) - if digit < 10 { - ok = put(emitter, digit+'0') - } else { - ok = put(emitter, digit+'A'-10) - } - } - } - if !ok { - return false - } - spaces = false - } else if is_space(value, i) { - if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { - if !yaml_emitter_write_indent(emitter) { - return false - } - if is_space(value, i+1) { - if !put(emitter, '\\') { - return false - } - } - i += width(value[i]) - } else if !write(emitter, value, &i) { - return false - } - spaces = true - } else { - if !write(emitter, value, &i) { - return false - } - spaces = false - } - } - if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { - return false - } - emitter.whitespace = false - emitter.indention = false - return true -} - -func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { - if is_space(value, 0) || is_break(value, 0) { - indent_hint := []byte{'0' + byte(emitter.best_indent)} - if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { - return false - } - } - - emitter.open_ended = false - - var chomp_hint [1]byte - if len(value) == 0 { - chomp_hint[0] = '-' - } else { - i := len(value) - 1 - for value[i]&0xC0 == 0x80 { - i-- - } - if !is_break(value, i) { - chomp_hint[0] = '-' - } else if i == 0 { - chomp_hint[0] = '+' - emitter.open_ended = true - } else { - i-- - for value[i]&0xC0 == 0x80 { - i-- - } - if is_break(value, i) { - chomp_hint[0] = '+' - emitter.open_ended = true - } - } - } - if chomp_hint[0] != 0 { - if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { - return false - } - } - return true -} - -func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - breaks := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - } - if !write(emitter, value, &i) { - return false - } - emitter.indention = false - breaks = false - } - } - - return true -} - -func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { - if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { - return false - } - if !yaml_emitter_write_block_scalar_hints(emitter, value) { - return false - } - - if !put_break(emitter) { - return false - } - emitter.indention = true - emitter.whitespace = true - - breaks := true - leading_spaces := true - for i := 0; i < len(value); { - if is_break(value, i) { - if !breaks && !leading_spaces && value[i] == '\n' { - k := 0 - for is_break(value, k) { - k += width(value[k]) - } - if !is_blankz(value, k) { - if !put_break(emitter) { - return false - } - } - } - if !write_break(emitter, value, &i) { - return false - } - emitter.indention = true - breaks = true - } else { - if breaks { - if !yaml_emitter_write_indent(emitter) { - return false - } - leading_spaces = is_blank(value, i) - } - if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { - if !yaml_emitter_write_indent(emitter) { - return false - } - i += width(value[i]) - } else { - if !write(emitter, value, &i) { - return false - } - } - emitter.indention = false - breaks = false - } - } - return true -} diff --git a/vendor/gopkg.in/yaml.v2/encode.go b/vendor/gopkg.in/yaml.v2/encode.go deleted file mode 100644 index 0ee738e1..00000000 --- a/vendor/gopkg.in/yaml.v2/encode.go +++ /dev/null @@ -1,390 +0,0 @@ -package yaml - -import ( - "encoding" - "fmt" - "io" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -// jsonNumber is the interface of the encoding/json.Number datatype. -// Repeating the interface here avoids a dependency on encoding/json, and also -// supports other libraries like jsoniter, which use a similar datatype with -// the same interface. Detecting this interface is useful when dealing with -// structures containing json.Number, which is a string under the hood. The -// encoder should prefer the use of Int64(), Float64() and string(), in that -// order, when encoding this type. -type jsonNumber interface { - Float64() (float64, error) - Int64() (int64, error) - String() string -} - -type encoder struct { - emitter yaml_emitter_t - event yaml_event_t - out []byte - flow bool - // doneInit holds whether the initial stream_start_event has been - // emitted. - doneInit bool -} - -func newEncoder() *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_string(&e.emitter, &e.out) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func newEncoderWithWriter(w io.Writer) *encoder { - e := &encoder{} - yaml_emitter_initialize(&e.emitter) - yaml_emitter_set_output_writer(&e.emitter, w) - yaml_emitter_set_unicode(&e.emitter, true) - return e -} - -func (e *encoder) init() { - if e.doneInit { - return - } - yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) - e.emit() - e.doneInit = true -} - -func (e *encoder) finish() { - e.emitter.open_ended = false - yaml_stream_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) destroy() { - yaml_emitter_delete(&e.emitter) -} - -func (e *encoder) emit() { - // This will internally delete the e.event value. - e.must(yaml_emitter_emit(&e.emitter, &e.event)) -} - -func (e *encoder) must(ok bool) { - if !ok { - msg := e.emitter.problem - if msg == "" { - msg = "unknown problem generating YAML content" - } - failf("%s", msg) - } -} - -func (e *encoder) marshalDoc(tag string, in reflect.Value) { - e.init() - yaml_document_start_event_initialize(&e.event, nil, nil, true) - e.emit() - e.marshal(tag, in) - yaml_document_end_event_initialize(&e.event, true) - e.emit() -} - -func (e *encoder) marshal(tag string, in reflect.Value) { - if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { - e.nilv() - return - } - iface := in.Interface() - switch m := iface.(type) { - case jsonNumber: - integer, err := m.Int64() - if err == nil { - // In this case the json.Number is a valid int64 - in = reflect.ValueOf(integer) - break - } - float, err := m.Float64() - if err == nil { - // In this case the json.Number is a valid float64 - in = reflect.ValueOf(float) - break - } - // fallback case - no number could be obtained - in = reflect.ValueOf(m.String()) - case time.Time, *time.Time: - // Although time.Time implements TextMarshaler, - // we don't want to treat it as a string for YAML - // purposes because YAML has special support for - // timestamps. - case Marshaler: - v, err := m.MarshalYAML() - if err != nil { - fail(err) - } - if v == nil { - e.nilv() - return - } - in = reflect.ValueOf(v) - case encoding.TextMarshaler: - text, err := m.MarshalText() - if err != nil { - fail(err) - } - in = reflect.ValueOf(string(text)) - case nil: - e.nilv() - return - } - switch in.Kind() { - case reflect.Interface: - e.marshal(tag, in.Elem()) - case reflect.Map: - e.mapv(tag, in) - case reflect.Ptr: - if in.Type() == ptrTimeType { - e.timev(tag, in.Elem()) - } else { - e.marshal(tag, in.Elem()) - } - case reflect.Struct: - if in.Type() == timeType { - e.timev(tag, in) - } else { - e.structv(tag, in) - } - case reflect.Slice, reflect.Array: - if in.Type().Elem() == mapItemType { - e.itemsv(tag, in) - } else { - e.slicev(tag, in) - } - case reflect.String: - e.stringv(tag, in) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - if in.Type() == durationType { - e.stringv(tag, reflect.ValueOf(iface.(time.Duration).String())) - } else { - e.intv(tag, in) - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - e.uintv(tag, in) - case reflect.Float32, reflect.Float64: - e.floatv(tag, in) - case reflect.Bool: - e.boolv(tag, in) - default: - panic("cannot marshal type: " + in.Type().String()) - } -} - -func (e *encoder) mapv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - keys := keyList(in.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - e.marshal("", k) - e.marshal("", in.MapIndex(k)) - } - }) -} - -func (e *encoder) itemsv(tag string, in reflect.Value) { - e.mappingv(tag, func() { - slice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem) - for _, item := range slice { - e.marshal("", reflect.ValueOf(item.Key)) - e.marshal("", reflect.ValueOf(item.Value)) - } - }) -} - -func (e *encoder) structv(tag string, in reflect.Value) { - sinfo, err := getStructInfo(in.Type()) - if err != nil { - panic(err) - } - e.mappingv(tag, func() { - for _, info := range sinfo.FieldsList { - var value reflect.Value - if info.Inline == nil { - value = in.Field(info.Num) - } else { - value = in.FieldByIndex(info.Inline) - } - if info.OmitEmpty && isZero(value) { - continue - } - e.marshal("", reflect.ValueOf(info.Key)) - e.flow = info.Flow - e.marshal("", value) - } - if sinfo.InlineMap >= 0 { - m := in.Field(sinfo.InlineMap) - if m.Len() > 0 { - e.flow = false - keys := keyList(m.MapKeys()) - sort.Sort(keys) - for _, k := range keys { - if _, found := sinfo.FieldsMap[k.String()]; found { - panic(fmt.Sprintf("Can't have key %q in inlined map; conflicts with struct field", k.String())) - } - e.marshal("", k) - e.flow = false - e.marshal("", m.MapIndex(k)) - } - } - } - }) -} - -func (e *encoder) mappingv(tag string, f func()) { - implicit := tag == "" - style := yaml_BLOCK_MAPPING_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_MAPPING_STYLE - } - yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) - e.emit() - f() - yaml_mapping_end_event_initialize(&e.event) - e.emit() -} - -func (e *encoder) slicev(tag string, in reflect.Value) { - implicit := tag == "" - style := yaml_BLOCK_SEQUENCE_STYLE - if e.flow { - e.flow = false - style = yaml_FLOW_SEQUENCE_STYLE - } - e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) - e.emit() - n := in.Len() - for i := 0; i < n; i++ { - e.marshal("", in.Index(i)) - } - e.must(yaml_sequence_end_event_initialize(&e.event)) - e.emit() -} - -// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. -// -// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported -// in YAML 1.2 and by this package, but these should be marshalled quoted for -// the time being for compatibility with other parsers. -func isBase60Float(s string) (result bool) { - // Fast path. - if s == "" { - return false - } - c := s[0] - if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { - return false - } - // Do the full match. - return base60float.MatchString(s) -} - -// From http://yaml.org/type/float.html, except the regular expression there -// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. -var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) - -func (e *encoder) stringv(tag string, in reflect.Value) { - var style yaml_scalar_style_t - s := in.String() - canUsePlain := true - switch { - case !utf8.ValidString(s): - if tag == yaml_BINARY_TAG { - failf("explicitly tagged !!binary data must be base64-encoded") - } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) - } - // It can't be encoded directly as YAML so use a binary tag - // and encode it as base64. - tag = yaml_BINARY_TAG - s = encodeBase64(s) - case tag == "": - // Check to see if it would resolve to a specific - // tag when encoded unquoted. If it doesn't, - // there's no need to quote it. - rtag, _ := resolve("", s) - canUsePlain = rtag == yaml_STR_TAG && !isBase60Float(s) - } - // Note: it's possible for user code to emit invalid YAML - // if they explicitly specify a tag and a string containing - // text that's incompatible with that tag. - switch { - case strings.Contains(s, "\n"): - style = yaml_LITERAL_SCALAR_STYLE - case canUsePlain: - style = yaml_PLAIN_SCALAR_STYLE - default: - style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - e.emitScalar(s, "", tag, style) -} - -func (e *encoder) boolv(tag string, in reflect.Value) { - var s string - if in.Bool() { - s = "true" - } else { - s = "false" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) intv(tag string, in reflect.Value) { - s := strconv.FormatInt(in.Int(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) uintv(tag string, in reflect.Value) { - s := strconv.FormatUint(in.Uint(), 10) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) timev(tag string, in reflect.Value) { - t := in.Interface().(time.Time) - s := t.Format(time.RFC3339Nano) - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) floatv(tag string, in reflect.Value) { - // Issue #352: When formatting, use the precision of the underlying value - precision := 64 - if in.Kind() == reflect.Float32 { - precision = 32 - } - - s := strconv.FormatFloat(in.Float(), 'g', -1, precision) - switch s { - case "+Inf": - s = ".inf" - case "-Inf": - s = "-.inf" - case "NaN": - s = ".nan" - } - e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) nilv() { - e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE) -} - -func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) { - implicit := tag == "" - e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) - e.emit() -} diff --git a/vendor/gopkg.in/yaml.v2/go.mod b/vendor/gopkg.in/yaml.v2/go.mod deleted file mode 100644 index 1934e876..00000000 --- a/vendor/gopkg.in/yaml.v2/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module "gopkg.in/yaml.v2" - -require ( - "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 -) diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/gopkg.in/yaml.v2/parserc.go deleted file mode 100644 index 81d05dfe..00000000 --- a/vendor/gopkg.in/yaml.v2/parserc.go +++ /dev/null @@ -1,1095 +0,0 @@ -package yaml - -import ( - "bytes" -) - -// The parser implements the following grammar: -// -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// implicit_document ::= block_node DOCUMENT-END* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// block_node_or_indentless_sequence ::= -// ALIAS -// | properties (block_content | indentless_block_sequence)? -// | block_content -// | indentless_block_sequence -// block_node ::= ALIAS -// | properties block_content? -// | block_content -// flow_node ::= ALIAS -// | properties flow_content? -// | flow_content -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// block_content ::= block_collection | flow_collection | SCALAR -// flow_content ::= flow_collection | SCALAR -// block_collection ::= block_sequence | block_mapping -// flow_collection ::= flow_sequence | flow_mapping -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// block_mapping ::= BLOCK-MAPPING_START -// ((KEY block_node_or_indentless_sequence?)? -// (VALUE block_node_or_indentless_sequence?)?)* -// BLOCK-END -// flow_sequence ::= FLOW-SEQUENCE-START -// (flow_sequence_entry FLOW-ENTRY)* -// flow_sequence_entry? -// FLOW-SEQUENCE-END -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// flow_mapping ::= FLOW-MAPPING-START -// (flow_mapping_entry FLOW-ENTRY)* -// flow_mapping_entry? -// FLOW-MAPPING-END -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? - -// Peek the next token in the token queue. -func peek_token(parser *yaml_parser_t) *yaml_token_t { - if parser.token_available || yaml_parser_fetch_more_tokens(parser) { - return &parser.tokens[parser.tokens_head] - } - return nil -} - -// Remove the next token from the queue (must be called after peek_token). -func skip_token(parser *yaml_parser_t) { - parser.token_available = false - parser.tokens_parsed++ - parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN - parser.tokens_head++ -} - -// Get the next event. -func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { - // Erase the event object. - *event = yaml_event_t{} - - // No events after the end of the stream or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { - return true - } - - // Generate the next event. - return yaml_parser_state_machine(parser, event) -} - -// Set parser error. -func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { - parser.error = yaml_PARSER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = problem_mark - return false -} - -// State dispatcher. -func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { - //trace("yaml_parser_state_machine", "state:", parser.state.String()) - - switch parser.state { - case yaml_PARSE_STREAM_START_STATE: - return yaml_parser_parse_stream_start(parser, event) - - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, true) - - case yaml_PARSE_DOCUMENT_START_STATE: - return yaml_parser_parse_document_start(parser, event, false) - - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return yaml_parser_parse_document_content(parser, event) - - case yaml_PARSE_DOCUMENT_END_STATE: - return yaml_parser_parse_document_end(parser, event) - - case yaml_PARSE_BLOCK_NODE_STATE: - return yaml_parser_parse_node(parser, event, true, false) - - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return yaml_parser_parse_node(parser, event, true, true) - - case yaml_PARSE_FLOW_NODE_STATE: - return yaml_parser_parse_node(parser, event, false, false) - - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, true) - - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_block_sequence_entry(parser, event, false) - - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_indentless_sequence_entry(parser, event) - - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, true) - - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return yaml_parser_parse_block_mapping_key(parser, event, false) - - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return yaml_parser_parse_block_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, true) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return yaml_parser_parse_flow_sequence_entry(parser, event, false) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) - - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) - - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, true) - - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return yaml_parser_parse_flow_mapping_key(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, false) - - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return yaml_parser_parse_flow_mapping_value(parser, event, true) - - default: - panic("invalid parser state") - } -} - -// Parse the production: -// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END -// ************ -func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_STREAM_START_TOKEN { - return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) - } - parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - encoding: token.encoding, - } - skip_token(parser) - return true -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// * -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// ************************* -func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { - - token := peek_token(parser) - if token == nil { - return false - } - - // Parse extra document end indicators. - if !implicit { - for token.typ == yaml_DOCUMENT_END_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && - token.typ != yaml_TAG_DIRECTIVE_TOKEN && - token.typ != yaml_DOCUMENT_START_TOKEN && - token.typ != yaml_STREAM_END_TOKEN { - // Parse an implicit document. - if !yaml_parser_process_directives(parser, nil, nil) { - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_BLOCK_NODE_STATE - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - } else if token.typ != yaml_STREAM_END_TOKEN { - // Parse an explicit document. - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - start_mark := token.start_mark - if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { - return false - } - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_DOCUMENT_START_TOKEN { - yaml_parser_set_parser_error(parser, - "did not find expected ", token.start_mark) - return false - } - parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) - parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE - end_mark := token.end_mark - - *event = yaml_event_t{ - typ: yaml_DOCUMENT_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - version_directive: version_directive, - tag_directives: tag_directives, - implicit: false, - } - skip_token(parser) - - } else { - // Parse the stream end. - parser.state = yaml_PARSE_END_STATE - *event = yaml_event_t{ - typ: yaml_STREAM_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - } - - return true -} - -// Parse the productions: -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// *********** -// -func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || - token.typ == yaml_TAG_DIRECTIVE_TOKEN || - token.typ == yaml_DOCUMENT_START_TOKEN || - token.typ == yaml_DOCUMENT_END_TOKEN || - token.typ == yaml_STREAM_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - return yaml_parser_process_empty_scalar(parser, event, - token.start_mark) - } - return yaml_parser_parse_node(parser, event, true, false) -} - -// Parse the productions: -// implicit_document ::= block_node DOCUMENT-END* -// ************* -// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* -// -func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - start_mark := token.start_mark - end_mark := token.start_mark - - implicit := true - if token.typ == yaml_DOCUMENT_END_TOKEN { - end_mark = token.end_mark - skip_token(parser) - implicit = false - } - - parser.tag_directives = parser.tag_directives[:0] - - parser.state = yaml_PARSE_DOCUMENT_START_STATE - *event = yaml_event_t{ - typ: yaml_DOCUMENT_END_EVENT, - start_mark: start_mark, - end_mark: end_mark, - implicit: implicit, - } - return true -} - -// Parse the productions: -// block_node_or_indentless_sequence ::= -// ALIAS -// ***** -// | properties (block_content | indentless_block_sequence)? -// ********** * -// | block_content | indentless_block_sequence -// * -// block_node ::= ALIAS -// ***** -// | properties block_content? -// ********** * -// | block_content -// * -// flow_node ::= ALIAS -// ***** -// | properties flow_content? -// ********** * -// | flow_content -// * -// properties ::= TAG ANCHOR? | ANCHOR TAG? -// ************************* -// block_content ::= block_collection | flow_collection | SCALAR -// ****** -// flow_content ::= flow_collection | SCALAR -// ****** -func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { - //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_ALIAS_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - *event = yaml_event_t{ - typ: yaml_ALIAS_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - anchor: token.value, - } - skip_token(parser) - return true - } - - start_mark := token.start_mark - end_mark := token.start_mark - - var tag_token bool - var tag_handle, tag_suffix, anchor []byte - var tag_mark yaml_mark_t - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - start_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } else if token.typ == yaml_TAG_TOKEN { - tag_token = true - tag_handle = token.value - tag_suffix = token.suffix - start_mark = token.start_mark - tag_mark = token.start_mark - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_ANCHOR_TOKEN { - anchor = token.value - end_mark = token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - } - - var tag []byte - if tag_token { - if len(tag_handle) == 0 { - tag = tag_suffix - tag_suffix = nil - } else { - for i := range parser.tag_directives { - if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { - tag = append([]byte(nil), parser.tag_directives[i].prefix...) - tag = append(tag, tag_suffix...) - break - } - } - if len(tag) == 0 { - yaml_parser_set_parser_error_context(parser, - "while parsing a node", start_mark, - "found undefined tag handle", tag_mark) - return false - } - } - } - - implicit := len(tag) == 0 - if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_SCALAR_TOKEN { - var plain_implicit, quoted_implicit bool - end_mark = token.end_mark - if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { - plain_implicit = true - } else if len(tag) == 0 { - quoted_implicit = true - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - value: token.value, - implicit: plain_implicit, - quoted_implicit: quoted_implicit, - style: yaml_style_t(token.style), - } - skip_token(parser) - return true - } - if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { - // [Go] Some of the events below can be merged as they differ only on style. - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), - } - return true - } - if token.typ == yaml_FLOW_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_SEQUENCE_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), - } - return true - } - if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { - end_mark = token.end_mark - parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), - } - return true - } - if len(anchor) > 0 || len(tag) > 0 { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: start_mark, - end_mark: end_mark, - anchor: anchor, - tag: tag, - implicit: implicit, - quoted_implicit: false, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true - } - - context := "while parsing a flow node" - if block { - context = "while parsing a block node" - } - yaml_parser_set_parser_error_context(parser, context, start_mark, - "did not find expected node content", token.start_mark) - return false -} - -// Parse the productions: -// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END -// ******************** *********** * ********* -// -func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } else { - parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } - if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block collection", context_mark, - "did not find expected '-' indicator", token.start_mark) -} - -// Parse the productions: -// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ -// *********** * -func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_BLOCK_ENTRY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_BLOCK_ENTRY_TOKEN && - token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, true, false) - } - parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? - } - return true -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// ******************* -// ((KEY block_node_or_indentless_sequence?)? -// *** * -// (VALUE block_node_or_indentless_sequence?)?)* -// -// BLOCK-END -// ********* -// -func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ == yaml_KEY_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } else { - parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - } else if token.typ == yaml_BLOCK_END_TOKEN { - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true - } - - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a block mapping", context_mark, - "did not find expected key", token.start_mark) -} - -// Parse the productions: -// block_mapping ::= BLOCK-MAPPING_START -// -// ((KEY block_node_or_indentless_sequence?)? -// -// (VALUE block_node_or_indentless_sequence?)?)* -// ***** * -// BLOCK-END -// -// -func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - mark := token.end_mark - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_KEY_TOKEN && - token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_BLOCK_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, true, true) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) - } - parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence ::= FLOW-SEQUENCE-START -// ******************* -// (flow_sequence_entry FLOW-ENTRY)* -// * ********** -// flow_sequence_entry? -// * -// FLOW-SEQUENCE-END -// ***************** -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow sequence", context_mark, - "did not find expected ',' or ']'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_START_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - implicit: true, - style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), - } - skip_token(parser) - return true - } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - - *event = yaml_event_t{ - typ: yaml_SEQUENCE_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - - skip_token(parser) - return true -} - -// -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// *** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - mark := token.end_mark - skip_token(parser) - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// ***** * -// -func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token := peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Parse the productions: -// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * -// -func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { - token := peek_token(parser) - if token == nil { - return false - } - parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? - } - return true -} - -// Parse the productions: -// flow_mapping ::= FLOW-MAPPING-START -// ****************** -// (flow_mapping_entry FLOW-ENTRY)* -// * ********** -// flow_mapping_entry? -// ****************** -// FLOW-MAPPING-END -// **************** -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * *** * -// -func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { - if first { - token := peek_token(parser) - parser.marks = append(parser.marks, token.start_mark) - skip_token(parser) - } - - token := peek_token(parser) - if token == nil { - return false - } - - if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - if !first { - if token.typ == yaml_FLOW_ENTRY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } else { - context_mark := parser.marks[len(parser.marks)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - return yaml_parser_set_parser_error_context(parser, - "while parsing a flow mapping", context_mark, - "did not find expected ',' or '}'", token.start_mark) - } - } - - if token.typ == yaml_KEY_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_VALUE_TOKEN && - token.typ != yaml_FLOW_ENTRY_TOKEN && - token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } else { - parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - - parser.state = parser.states[len(parser.states)-1] - parser.states = parser.states[:len(parser.states)-1] - parser.marks = parser.marks[:len(parser.marks)-1] - *event = yaml_event_t{ - typ: yaml_MAPPING_END_EVENT, - start_mark: token.start_mark, - end_mark: token.end_mark, - } - skip_token(parser) - return true -} - -// Parse the productions: -// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? -// * ***** * -// -func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { - token := peek_token(parser) - if token == nil { - return false - } - if empty { - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) - } - if token.typ == yaml_VALUE_TOKEN { - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { - parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) - return yaml_parser_parse_node(parser, event, false, false) - } - } - parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE - return yaml_parser_process_empty_scalar(parser, event, token.start_mark) -} - -// Generate an empty scalar event. -func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { - *event = yaml_event_t{ - typ: yaml_SCALAR_EVENT, - start_mark: mark, - end_mark: mark, - value: nil, // Empty - implicit: true, - style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), - } - return true -} - -var default_tag_directives = []yaml_tag_directive_t{ - {[]byte("!"), []byte("!")}, - {[]byte("!!"), []byte("tag:yaml.org,2002:")}, -} - -// Parse directives. -func yaml_parser_process_directives(parser *yaml_parser_t, - version_directive_ref **yaml_version_directive_t, - tag_directives_ref *[]yaml_tag_directive_t) bool { - - var version_directive *yaml_version_directive_t - var tag_directives []yaml_tag_directive_t - - token := peek_token(parser) - if token == nil { - return false - } - - for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { - if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { - if version_directive != nil { - yaml_parser_set_parser_error(parser, - "found duplicate %YAML directive", token.start_mark) - return false - } - if token.major != 1 || token.minor != 1 { - yaml_parser_set_parser_error(parser, - "found incompatible YAML document", token.start_mark) - return false - } - version_directive = &yaml_version_directive_t{ - major: token.major, - minor: token.minor, - } - } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { - value := yaml_tag_directive_t{ - handle: token.value, - prefix: token.prefix, - } - if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { - return false - } - tag_directives = append(tag_directives, value) - } - - skip_token(parser) - token = peek_token(parser) - if token == nil { - return false - } - } - - for i := range default_tag_directives { - if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { - return false - } - } - - if version_directive_ref != nil { - *version_directive_ref = version_directive - } - if tag_directives_ref != nil { - *tag_directives_ref = tag_directives - } - return true -} - -// Append a tag directive to the directives stack. -func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { - for i := range parser.tag_directives { - if bytes.Equal(value.handle, parser.tag_directives[i].handle) { - if allow_duplicates { - return true - } - return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) - } - } - - // [Go] I suspect the copy is unnecessary. This was likely done - // because there was no way to track ownership of the data. - value_copy := yaml_tag_directive_t{ - handle: make([]byte, len(value.handle)), - prefix: make([]byte, len(value.prefix)), - } - copy(value_copy.handle, value.handle) - copy(value_copy.prefix, value.prefix) - parser.tag_directives = append(parser.tag_directives, value_copy) - return true -} diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/gopkg.in/yaml.v2/readerc.go deleted file mode 100644 index 7c1f5fac..00000000 --- a/vendor/gopkg.in/yaml.v2/readerc.go +++ /dev/null @@ -1,412 +0,0 @@ -package yaml - -import ( - "io" -) - -// Set the reader error and return 0. -func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { - parser.error = yaml_READER_ERROR - parser.problem = problem - parser.problem_offset = offset - parser.problem_value = value - return false -} - -// Byte order marks. -const ( - bom_UTF8 = "\xef\xbb\xbf" - bom_UTF16LE = "\xff\xfe" - bom_UTF16BE = "\xfe\xff" -) - -// Determine the input stream encoding by checking the BOM symbol. If no BOM is -// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. -func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { - // Ensure that we had enough bytes in the raw buffer. - for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { - if !yaml_parser_update_raw_buffer(parser) { - return false - } - } - - // Determine the encoding. - buf := parser.raw_buffer - pos := parser.raw_buffer_pos - avail := len(buf) - pos - if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { - parser.encoding = yaml_UTF16LE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { - parser.encoding = yaml_UTF16BE_ENCODING - parser.raw_buffer_pos += 2 - parser.offset += 2 - } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { - parser.encoding = yaml_UTF8_ENCODING - parser.raw_buffer_pos += 3 - parser.offset += 3 - } else { - parser.encoding = yaml_UTF8_ENCODING - } - return true -} - -// Update the raw buffer. -func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { - size_read := 0 - - // Return if the raw buffer is full. - if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { - return true - } - - // Return on EOF. - if parser.eof { - return true - } - - // Move the remaining bytes in the raw buffer to the beginning. - if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { - copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) - } - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] - parser.raw_buffer_pos = 0 - - // Call the read handler to fill the buffer. - size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) - parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] - if err == io.EOF { - parser.eof = true - } else if err != nil { - return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) - } - return true -} - -// Ensure that the buffer contains at least `length` characters. -// Return true on success, false on failure. -// -// The length is supposed to be significantly less that the buffer size. -func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { - if parser.read_handler == nil { - panic("read handler must be set") - } - - // [Go] This function was changed to guarantee the requested length size at EOF. - // The fact we need to do this is pretty awful, but the description above implies - // for that to be the case, and there are tests - - // If the EOF flag is set and the raw buffer is empty, do nothing. - if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { - // [Go] ACTUALLY! Read the documentation of this function above. - // This is just broken. To return true, we need to have the - // given length in the buffer. Not doing that means every single - // check that calls this function to make sure the buffer has a - // given length is Go) panicking; or C) accessing invalid memory. - //return true - } - - // Return if the buffer contains enough characters. - if parser.unread >= length { - return true - } - - // Determine the input encoding if it is not known yet. - if parser.encoding == yaml_ANY_ENCODING { - if !yaml_parser_determine_encoding(parser) { - return false - } - } - - // Move the unread characters to the beginning of the buffer. - buffer_len := len(parser.buffer) - if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { - copy(parser.buffer, parser.buffer[parser.buffer_pos:]) - buffer_len -= parser.buffer_pos - parser.buffer_pos = 0 - } else if parser.buffer_pos == buffer_len { - buffer_len = 0 - parser.buffer_pos = 0 - } - - // Open the whole buffer for writing, and cut it before returning. - parser.buffer = parser.buffer[:cap(parser.buffer)] - - // Fill the buffer until it has enough characters. - first := true - for parser.unread < length { - - // Fill the raw buffer if necessary. - if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { - if !yaml_parser_update_raw_buffer(parser) { - parser.buffer = parser.buffer[:buffer_len] - return false - } - } - first = false - - // Decode the raw buffer. - inner: - for parser.raw_buffer_pos != len(parser.raw_buffer) { - var value rune - var width int - - raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos - - // Decode the next character. - switch parser.encoding { - case yaml_UTF8_ENCODING: - // Decode a UTF-8 character. Check RFC 3629 - // (http://www.ietf.org/rfc/rfc3629.txt) for more details. - // - // The following table (taken from the RFC) is used for - // decoding. - // - // Char. number range | UTF-8 octet sequence - // (hexadecimal) | (binary) - // --------------------+------------------------------------ - // 0000 0000-0000 007F | 0xxxxxxx - // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx - // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx - // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - // - // Additionally, the characters in the range 0xD800-0xDFFF - // are prohibited as they are reserved for use with UTF-16 - // surrogate pairs. - - // Determine the length of the UTF-8 sequence. - octet := parser.raw_buffer[parser.raw_buffer_pos] - switch { - case octet&0x80 == 0x00: - width = 1 - case octet&0xE0 == 0xC0: - width = 2 - case octet&0xF0 == 0xE0: - width = 3 - case octet&0xF8 == 0xF0: - width = 4 - default: - // The leading octet is invalid. - return yaml_parser_set_reader_error(parser, - "invalid leading UTF-8 octet", - parser.offset, int(octet)) - } - - // Check if the raw buffer contains an incomplete character. - if width > raw_unread { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-8 octet sequence", - parser.offset, -1) - } - break inner - } - - // Decode the leading octet. - switch { - case octet&0x80 == 0x00: - value = rune(octet & 0x7F) - case octet&0xE0 == 0xC0: - value = rune(octet & 0x1F) - case octet&0xF0 == 0xE0: - value = rune(octet & 0x0F) - case octet&0xF8 == 0xF0: - value = rune(octet & 0x07) - default: - value = 0 - } - - // Check and decode the trailing octets. - for k := 1; k < width; k++ { - octet = parser.raw_buffer[parser.raw_buffer_pos+k] - - // Check if the octet is valid. - if (octet & 0xC0) != 0x80 { - return yaml_parser_set_reader_error(parser, - "invalid trailing UTF-8 octet", - parser.offset+k, int(octet)) - } - - // Decode the octet. - value = (value << 6) + rune(octet&0x3F) - } - - // Check the length of the sequence against the value. - switch { - case width == 1: - case width == 2 && value >= 0x80: - case width == 3 && value >= 0x800: - case width == 4 && value >= 0x10000: - default: - return yaml_parser_set_reader_error(parser, - "invalid length of a UTF-8 sequence", - parser.offset, -1) - } - - // Check the range of the value. - if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { - return yaml_parser_set_reader_error(parser, - "invalid Unicode character", - parser.offset, int(value)) - } - - case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: - var low, high int - if parser.encoding == yaml_UTF16LE_ENCODING { - low, high = 0, 1 - } else { - low, high = 1, 0 - } - - // The UTF-16 encoding is not as simple as one might - // naively think. Check RFC 2781 - // (http://www.ietf.org/rfc/rfc2781.txt). - // - // Normally, two subsequent bytes describe a Unicode - // character. However a special technique (called a - // surrogate pair) is used for specifying character - // values larger than 0xFFFF. - // - // A surrogate pair consists of two pseudo-characters: - // high surrogate area (0xD800-0xDBFF) - // low surrogate area (0xDC00-0xDFFF) - // - // The following formulas are used for decoding - // and encoding characters using surrogate pairs: - // - // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) - // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) - // W1 = 110110yyyyyyyyyy - // W2 = 110111xxxxxxxxxx - // - // where U is the character value, W1 is the high surrogate - // area, W2 is the low surrogate area. - - // Check for incomplete UTF-16 character. - if raw_unread < 2 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 character", - parser.offset, -1) - } - break inner - } - - // Get the character. - value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) - - // Check for unexpected low surrogate area. - if value&0xFC00 == 0xDC00 { - return yaml_parser_set_reader_error(parser, - "unexpected low surrogate area", - parser.offset, int(value)) - } - - // Check for a high surrogate area. - if value&0xFC00 == 0xD800 { - width = 4 - - // Check for incomplete surrogate pair. - if raw_unread < 4 { - if parser.eof { - return yaml_parser_set_reader_error(parser, - "incomplete UTF-16 surrogate pair", - parser.offset, -1) - } - break inner - } - - // Get the next character. - value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + - (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) - - // Check for a low surrogate area. - if value2&0xFC00 != 0xDC00 { - return yaml_parser_set_reader_error(parser, - "expected low surrogate area", - parser.offset+2, int(value2)) - } - - // Generate the value of the surrogate pair. - value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) - } else { - width = 2 - } - - default: - panic("impossible") - } - - // Check if the character is in the allowed range: - // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) - // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) - // | [#x10000-#x10FFFF] (32 bit) - switch { - case value == 0x09: - case value == 0x0A: - case value == 0x0D: - case value >= 0x20 && value <= 0x7E: - case value == 0x85: - case value >= 0xA0 && value <= 0xD7FF: - case value >= 0xE000 && value <= 0xFFFD: - case value >= 0x10000 && value <= 0x10FFFF: - default: - return yaml_parser_set_reader_error(parser, - "control characters are not allowed", - parser.offset, int(value)) - } - - // Move the raw pointers. - parser.raw_buffer_pos += width - parser.offset += width - - // Finally put the character into the buffer. - if value <= 0x7F { - // 0000 0000-0000 007F . 0xxxxxxx - parser.buffer[buffer_len+0] = byte(value) - buffer_len += 1 - } else if value <= 0x7FF { - // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) - parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) - buffer_len += 2 - } else if value <= 0xFFFF { - // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) - buffer_len += 3 - } else { - // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) - parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) - parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) - parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) - buffer_len += 4 - } - - parser.unread++ - } - - // On EOF, put NUL into the buffer and return. - if parser.eof { - parser.buffer[buffer_len] = 0 - buffer_len++ - parser.unread++ - break - } - } - // [Go] Read the documentation of this function above. To return true, - // we need to have the given length in the buffer. Not doing that means - // every single check that calls this function to make sure the buffer - // has a given length is Go) panicking; or C) accessing invalid memory. - // This happens here due to the EOF above breaking early. - for buffer_len < length { - parser.buffer[buffer_len] = 0 - buffer_len++ - } - parser.buffer = parser.buffer[:buffer_len] - return true -} diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go deleted file mode 100644 index 4120e0c9..00000000 --- a/vendor/gopkg.in/yaml.v2/resolve.go +++ /dev/null @@ -1,258 +0,0 @@ -package yaml - -import ( - "encoding/base64" - "math" - "regexp" - "strconv" - "strings" - "time" -) - -type resolveMapItem struct { - value interface{} - tag string -} - -var resolveTable = make([]byte, 256) -var resolveMap = make(map[string]resolveMapItem) - -func init() { - t := resolveTable - t[int('+')] = 'S' // Sign - t[int('-')] = 'S' - for _, c := range "0123456789" { - t[int(c)] = 'D' // Digit - } - for _, c := range "yYnNtTfFoO~" { - t[int(c)] = 'M' // In map - } - t[int('.')] = '.' // Float (potentially in map) - - var resolveMapList = []struct { - v interface{} - tag string - l []string - }{ - {true, yaml_BOOL_TAG, []string{"y", "Y", "yes", "Yes", "YES"}}, - {true, yaml_BOOL_TAG, []string{"true", "True", "TRUE"}}, - {true, yaml_BOOL_TAG, []string{"on", "On", "ON"}}, - {false, yaml_BOOL_TAG, []string{"n", "N", "no", "No", "NO"}}, - {false, yaml_BOOL_TAG, []string{"false", "False", "FALSE"}}, - {false, yaml_BOOL_TAG, []string{"off", "Off", "OFF"}}, - {nil, yaml_NULL_TAG, []string{"", "~", "null", "Null", "NULL"}}, - {math.NaN(), yaml_FLOAT_TAG, []string{".nan", ".NaN", ".NAN"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{".inf", ".Inf", ".INF"}}, - {math.Inf(+1), yaml_FLOAT_TAG, []string{"+.inf", "+.Inf", "+.INF"}}, - {math.Inf(-1), yaml_FLOAT_TAG, []string{"-.inf", "-.Inf", "-.INF"}}, - {"<<", yaml_MERGE_TAG, []string{"<<"}}, - } - - m := resolveMap - for _, item := range resolveMapList { - for _, s := range item.l { - m[s] = resolveMapItem{item.v, item.tag} - } - } -} - -const longTagPrefix = "tag:yaml.org,2002:" - -func shortTag(tag string) string { - // TODO This can easily be made faster and produce less garbage. - if strings.HasPrefix(tag, longTagPrefix) { - return "!!" + tag[len(longTagPrefix):] - } - return tag -} - -func longTag(tag string) string { - if strings.HasPrefix(tag, "!!") { - return longTagPrefix + tag[2:] - } - return tag -} - -func resolvableTag(tag string) bool { - switch tag { - case "", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG, yaml_TIMESTAMP_TAG: - return true - } - return false -} - -var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) - -func resolve(tag string, in string) (rtag string, out interface{}) { - if !resolvableTag(tag) { - return tag, in - } - - defer func() { - switch tag { - case "", rtag, yaml_STR_TAG, yaml_BINARY_TAG: - return - case yaml_FLOAT_TAG: - if rtag == yaml_INT_TAG { - switch v := out.(type) { - case int64: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - case int: - rtag = yaml_FLOAT_TAG - out = float64(v) - return - } - } - } - failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) - }() - - // Any data is accepted as a !!str or !!binary. - // Otherwise, the prefix is enough of a hint about what it might be. - hint := byte('N') - if in != "" { - hint = resolveTable[in[0]] - } - if hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG { - // Handle things we can lookup in a map. - if item, ok := resolveMap[in]; ok { - return item.tag, item.value - } - - // Base 60 floats are a bad idea, were dropped in YAML 1.2, and - // are purposefully unsupported here. They're still quoted on - // the way out for compatibility with other parser, though. - - switch hint { - case 'M': - // We've already checked the map above. - - case '.': - // Not in the map, so maybe a normal float. - floatv, err := strconv.ParseFloat(in, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - - case 'D', 'S': - // Int, float, or timestamp. - // Only try values as a timestamp if the value is unquoted or there's an explicit - // !!timestamp tag. - if tag == "" || tag == yaml_TIMESTAMP_TAG { - t, ok := parseTimestamp(in) - if ok { - return yaml_TIMESTAMP_TAG, t - } - } - - plain := strings.Replace(in, "_", "", -1) - intv, err := strconv.ParseInt(plain, 0, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain, 0, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - if yamlStyleFloat.MatchString(plain) { - floatv, err := strconv.ParseFloat(plain, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } - } - if strings.HasPrefix(plain, "0b") { - intv, err := strconv.ParseInt(plain[2:], 2, 64) - if err == nil { - if intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - uintv, err := strconv.ParseUint(plain[2:], 2, 64) - if err == nil { - return yaml_INT_TAG, uintv - } - } else if strings.HasPrefix(plain, "-0b") { - intv, err := strconv.ParseInt("-" + plain[3:], 2, 64) - if err == nil { - if true || intv == int64(int(intv)) { - return yaml_INT_TAG, int(intv) - } else { - return yaml_INT_TAG, intv - } - } - } - default: - panic("resolveTable item not yet handled: " + string(rune(hint)) + " (with " + in + ")") - } - } - return yaml_STR_TAG, in -} - -// encodeBase64 encodes s as base64 that is broken up into multiple lines -// as appropriate for the resulting length. -func encodeBase64(s string) string { - const lineLen = 70 - encLen := base64.StdEncoding.EncodedLen(len(s)) - lines := encLen/lineLen + 1 - buf := make([]byte, encLen*2+lines) - in := buf[0:encLen] - out := buf[encLen:] - base64.StdEncoding.Encode(in, []byte(s)) - k := 0 - for i := 0; i < len(in); i += lineLen { - j := i + lineLen - if j > len(in) { - j = len(in) - } - k += copy(out[k:], in[i:j]) - if lines > 1 { - out[k] = '\n' - k++ - } - } - return string(out[:k]) -} - -// This is a subset of the formats allowed by the regular expression -// defined at http://yaml.org/type/timestamp.html. -var allowedTimestampFormats = []string{ - "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. - "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". - "2006-1-2 15:4:5.999999999", // space separated with no time zone - "2006-1-2", // date only - // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" - // from the set of examples. -} - -// parseTimestamp parses s as a timestamp string and -// returns the timestamp and reports whether it succeeded. -// Timestamp formats are defined at http://yaml.org/type/timestamp.html -func parseTimestamp(s string) (time.Time, bool) { - // TODO write code to check all the formats supported by - // http://yaml.org/type/timestamp.html instead of using time.Parse. - - // Quick check: all date formats start with YYYY-. - i := 0 - for ; i < len(s); i++ { - if c := s[i]; c < '0' || c > '9' { - break - } - } - if i != 4 || i == len(s) || s[i] != '-' { - return time.Time{}, false - } - for _, format := range allowedTimestampFormats { - if t, err := time.Parse(format, s); err == nil { - return t, true - } - } - return time.Time{}, false -} diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go deleted file mode 100644 index b044a9cd..00000000 --- a/vendor/gopkg.in/yaml.v2/scannerc.go +++ /dev/null @@ -1,2713 +0,0 @@ -package yaml - -import ( - "bytes" - "fmt" -) - -// Introduction -// ************ -// -// The following notes assume that you are familiar with the YAML specification -// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in -// some cases we are less restrictive that it requires. -// -// The process of transforming a YAML stream into a sequence of events is -// divided on two steps: Scanning and Parsing. -// -// The Scanner transforms the input stream into a sequence of tokens, while the -// parser transform the sequence of tokens produced by the Scanner into a -// sequence of parsing events. -// -// The Scanner is rather clever and complicated. The Parser, on the contrary, -// is a straightforward implementation of a recursive-descendant parser (or, -// LL(1) parser, as it is usually called). -// -// Actually there are two issues of Scanning that might be called "clever", the -// rest is quite straightforward. The issues are "block collection start" and -// "simple keys". Both issues are explained below in details. -// -// Here the Scanning step is explained and implemented. We start with the list -// of all the tokens produced by the Scanner together with short descriptions. -// -// Now, tokens: -// -// STREAM-START(encoding) # The stream start. -// STREAM-END # The stream end. -// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. -// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. -// DOCUMENT-START # '---' -// DOCUMENT-END # '...' -// BLOCK-SEQUENCE-START # Indentation increase denoting a block -// BLOCK-MAPPING-START # sequence or a block mapping. -// BLOCK-END # Indentation decrease. -// FLOW-SEQUENCE-START # '[' -// FLOW-SEQUENCE-END # ']' -// BLOCK-SEQUENCE-START # '{' -// BLOCK-SEQUENCE-END # '}' -// BLOCK-ENTRY # '-' -// FLOW-ENTRY # ',' -// KEY # '?' or nothing (simple keys). -// VALUE # ':' -// ALIAS(anchor) # '*anchor' -// ANCHOR(anchor) # '&anchor' -// TAG(handle,suffix) # '!handle!suffix' -// SCALAR(value,style) # A scalar. -// -// The following two tokens are "virtual" tokens denoting the beginning and the -// end of the stream: -// -// STREAM-START(encoding) -// STREAM-END -// -// We pass the information about the input stream encoding with the -// STREAM-START token. -// -// The next two tokens are responsible for tags: -// -// VERSION-DIRECTIVE(major,minor) -// TAG-DIRECTIVE(handle,prefix) -// -// Example: -// -// %YAML 1.1 -// %TAG ! !foo -// %TAG !yaml! tag:yaml.org,2002: -// --- -// -// The correspoding sequence of tokens: -// -// STREAM-START(utf-8) -// VERSION-DIRECTIVE(1,1) -// TAG-DIRECTIVE("!","!foo") -// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") -// DOCUMENT-START -// STREAM-END -// -// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole -// line. -// -// The document start and end indicators are represented by: -// -// DOCUMENT-START -// DOCUMENT-END -// -// Note that if a YAML stream contains an implicit document (without '---' -// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be -// produced. -// -// In the following examples, we present whole documents together with the -// produced tokens. -// -// 1. An implicit document: -// -// 'a scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// STREAM-END -// -// 2. An explicit document: -// -// --- -// 'a scalar' -// ... -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// SCALAR("a scalar",single-quoted) -// DOCUMENT-END -// STREAM-END -// -// 3. Several documents in a stream: -// -// 'a scalar' -// --- -// 'another scalar' -// --- -// 'yet another scalar' -// -// Tokens: -// -// STREAM-START(utf-8) -// SCALAR("a scalar",single-quoted) -// DOCUMENT-START -// SCALAR("another scalar",single-quoted) -// DOCUMENT-START -// SCALAR("yet another scalar",single-quoted) -// STREAM-END -// -// We have already introduced the SCALAR token above. The following tokens are -// used to describe aliases, anchors, tag, and scalars: -// -// ALIAS(anchor) -// ANCHOR(anchor) -// TAG(handle,suffix) -// SCALAR(value,style) -// -// The following series of examples illustrate the usage of these tokens: -// -// 1. A recursive sequence: -// -// &A [ *A ] -// -// Tokens: -// -// STREAM-START(utf-8) -// ANCHOR("A") -// FLOW-SEQUENCE-START -// ALIAS("A") -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A tagged scalar: -// -// !!float "3.14" # A good approximation. -// -// Tokens: -// -// STREAM-START(utf-8) -// TAG("!!","float") -// SCALAR("3.14",double-quoted) -// STREAM-END -// -// 3. Various scalar styles: -// -// --- # Implicit empty plain scalars do not produce tokens. -// --- a plain scalar -// --- 'a single-quoted scalar' -// --- "a double-quoted scalar" -// --- |- -// a literal scalar -// --- >- -// a folded -// scalar -// -// Tokens: -// -// STREAM-START(utf-8) -// DOCUMENT-START -// DOCUMENT-START -// SCALAR("a plain scalar",plain) -// DOCUMENT-START -// SCALAR("a single-quoted scalar",single-quoted) -// DOCUMENT-START -// SCALAR("a double-quoted scalar",double-quoted) -// DOCUMENT-START -// SCALAR("a literal scalar",literal) -// DOCUMENT-START -// SCALAR("a folded scalar",folded) -// STREAM-END -// -// Now it's time to review collection-related tokens. We will start with -// flow collections: -// -// FLOW-SEQUENCE-START -// FLOW-SEQUENCE-END -// FLOW-MAPPING-START -// FLOW-MAPPING-END -// FLOW-ENTRY -// KEY -// VALUE -// -// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and -// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' -// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the -// indicators '?' and ':', which are used for denoting mapping keys and values, -// are represented by the KEY and VALUE tokens. -// -// The following examples show flow collections: -// -// 1. A flow sequence: -// -// [item 1, item 2, item 3] -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-SEQUENCE-START -// SCALAR("item 1",plain) -// FLOW-ENTRY -// SCALAR("item 2",plain) -// FLOW-ENTRY -// SCALAR("item 3",plain) -// FLOW-SEQUENCE-END -// STREAM-END -// -// 2. A flow mapping: -// -// { -// a simple key: a value, # Note that the KEY token is produced. -// ? a complex key: another value, -// } -// -// Tokens: -// -// STREAM-START(utf-8) -// FLOW-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// FLOW-ENTRY -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// FLOW-ENTRY -// FLOW-MAPPING-END -// STREAM-END -// -// A simple key is a key which is not denoted by the '?' indicator. Note that -// the Scanner still produce the KEY token whenever it encounters a simple key. -// -// For scanning block collections, the following tokens are used (note that we -// repeat KEY and VALUE here): -// -// BLOCK-SEQUENCE-START -// BLOCK-MAPPING-START -// BLOCK-END -// BLOCK-ENTRY -// KEY -// VALUE -// -// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation -// increase that precedes a block collection (cf. the INDENT token in Python). -// The token BLOCK-END denote indentation decrease that ends a block collection -// (cf. the DEDENT token in Python). However YAML has some syntax pecularities -// that makes detections of these tokens more complex. -// -// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators -// '-', '?', and ':' correspondingly. -// -// The following examples show how the tokens BLOCK-SEQUENCE-START, -// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: -// -// 1. Block sequences: -// -// - item 1 -// - item 2 -// - -// - item 3.1 -// - item 3.2 -// - -// key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 3.1",plain) -// BLOCK-ENTRY -// SCALAR("item 3.2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Block mappings: -// -// a simple key: a value # The KEY token is produced here. -// ? a complex key -// : another value -// a mapping: -// key 1: value 1 -// key 2: value 2 -// a sequence: -// - item 1 -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a simple key",plain) -// VALUE -// SCALAR("a value",plain) -// KEY -// SCALAR("a complex key",plain) -// VALUE -// SCALAR("another value",plain) -// KEY -// SCALAR("a mapping",plain) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML does not always require to start a new block collection from a new -// line. If the current line contains only '-', '?', and ':' indicators, a new -// block collection may start at the current line. The following examples -// illustrate this case: -// -// 1. Collections in a sequence: -// -// - - item 1 -// - item 2 -// - key 1: value 1 -// key 2: value 2 -// - ? complex key -// : complex value -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-ENTRY -// BLOCK-MAPPING-START -// KEY -// SCALAR("complex key") -// VALUE -// SCALAR("complex value") -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// 2. Collections in a mapping: -// -// ? a sequence -// : - item 1 -// - item 2 -// ? a mapping -// : key 1: value 1 -// key 2: value 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("a sequence",plain) -// VALUE -// BLOCK-SEQUENCE-START -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// KEY -// SCALAR("a mapping",plain) -// VALUE -// BLOCK-MAPPING-START -// KEY -// SCALAR("key 1",plain) -// VALUE -// SCALAR("value 1",plain) -// KEY -// SCALAR("key 2",plain) -// VALUE -// SCALAR("value 2",plain) -// BLOCK-END -// BLOCK-END -// STREAM-END -// -// YAML also permits non-indented sequences if they are included into a block -// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: -// -// key: -// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. -// - item 2 -// -// Tokens: -// -// STREAM-START(utf-8) -// BLOCK-MAPPING-START -// KEY -// SCALAR("key",plain) -// VALUE -// BLOCK-ENTRY -// SCALAR("item 1",plain) -// BLOCK-ENTRY -// SCALAR("item 2",plain) -// BLOCK-END -// - -// Ensure that the buffer contains the required number of characters. -// Return true on success, false on failure (reader error or memory error). -func cache(parser *yaml_parser_t, length int) bool { - // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) - return parser.unread >= length || yaml_parser_update_buffer(parser, length) -} - -// Advance the buffer pointer. -func skip(parser *yaml_parser_t) { - parser.mark.index++ - parser.mark.column++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) -} - -func skip_line(parser *yaml_parser_t) { - if is_crlf(parser.buffer, parser.buffer_pos) { - parser.mark.index += 2 - parser.mark.column = 0 - parser.mark.line++ - parser.unread -= 2 - parser.buffer_pos += 2 - } else if is_break(parser.buffer, parser.buffer_pos) { - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) - } -} - -// Copy a character to a string buffer and advance pointers. -func read(parser *yaml_parser_t, s []byte) []byte { - w := width(parser.buffer[parser.buffer_pos]) - if w == 0 { - panic("invalid character sequence") - } - if len(s) == 0 { - s = make([]byte, 0, 32) - } - if w == 1 && len(s)+w <= cap(s) { - s = s[:len(s)+1] - s[len(s)-1] = parser.buffer[parser.buffer_pos] - parser.buffer_pos++ - } else { - s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) - parser.buffer_pos += w - } - parser.mark.index++ - parser.mark.column++ - parser.unread-- - return s -} - -// Copy a line break character to a string buffer and advance pointers. -func read_line(parser *yaml_parser_t, s []byte) []byte { - buf := parser.buffer - pos := parser.buffer_pos - switch { - case buf[pos] == '\r' && buf[pos+1] == '\n': - // CR LF . LF - s = append(s, '\n') - parser.buffer_pos += 2 - parser.mark.index++ - parser.unread-- - case buf[pos] == '\r' || buf[pos] == '\n': - // CR|LF . LF - s = append(s, '\n') - parser.buffer_pos += 1 - case buf[pos] == '\xC2' && buf[pos+1] == '\x85': - // NEL . LF - s = append(s, '\n') - parser.buffer_pos += 2 - case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): - // LS|PS . LS|PS - s = append(s, buf[parser.buffer_pos:pos+3]...) - parser.buffer_pos += 3 - default: - return s - } - parser.mark.index++ - parser.mark.column = 0 - parser.mark.line++ - parser.unread-- - return s -} - -// Get the next token. -func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { - // Erase the token object. - *token = yaml_token_t{} // [Go] Is this necessary? - - // No tokens after STREAM-END or error. - if parser.stream_end_produced || parser.error != yaml_NO_ERROR { - return true - } - - // Ensure that the tokens queue contains enough tokens. - if !parser.token_available { - if !yaml_parser_fetch_more_tokens(parser) { - return false - } - } - - // Fetch the next token from the queue. - *token = parser.tokens[parser.tokens_head] - parser.tokens_head++ - parser.tokens_parsed++ - parser.token_available = false - - if token.typ == yaml_STREAM_END_TOKEN { - parser.stream_end_produced = true - } - return true -} - -// Set the scanner error and return false. -func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { - parser.error = yaml_SCANNER_ERROR - parser.context = context - parser.context_mark = context_mark - parser.problem = problem - parser.problem_mark = parser.mark - return false -} - -func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { - context := "while parsing a tag" - if directive { - context = "while parsing a %TAG directive" - } - return yaml_parser_set_scanner_error(parser, context, context_mark, problem) -} - -func trace(args ...interface{}) func() { - pargs := append([]interface{}{"+++"}, args...) - fmt.Println(pargs...) - pargs = append([]interface{}{"---"}, args...) - return func() { fmt.Println(pargs...) } -} - -// Ensure that the tokens queue contains at least one token which can be -// returned to the Parser. -func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { - // While we need more tokens to fetch, do it. - for { - // Check if we really need to fetch more tokens. - need_more_tokens := false - - if parser.tokens_head == len(parser.tokens) { - // Queue is empty. - need_more_tokens = true - } else { - // Check if any potential simple key may occupy the head position. - for i := len(parser.simple_keys) - 1; i >= 0; i-- { - simple_key := &parser.simple_keys[i] - if simple_key.token_number < parser.tokens_parsed { - break - } - if yaml_simple_key_is_valid(parser, simple_key) && simple_key.token_number == parser.tokens_parsed { - need_more_tokens = true - break - } - } - } - - // We are finished. - if !need_more_tokens { - break - } - // Fetch the next token. - if !yaml_parser_fetch_next_token(parser) { - return false - } - } - - parser.token_available = true - return true -} - -// The dispatcher for token fetchers. -func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { - // Ensure that the buffer is initialized. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we just started scanning. Fetch STREAM-START then. - if !parser.stream_start_produced { - return yaml_parser_fetch_stream_start(parser) - } - - // Eat whitespaces and comments until we reach the next token. - if !yaml_parser_scan_to_next_token(parser) { - return false - } - - // Check the indentation level against the current column. - if !yaml_parser_unroll_indent(parser, parser.mark.column) { - return false - } - - // Ensure that the buffer contains at least 4 characters. 4 is the length - // of the longest indicators ('--- ' and '... '). - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - // Is it the end of the stream? - if is_z(parser.buffer, parser.buffer_pos) { - return yaml_parser_fetch_stream_end(parser) - } - - // Is it a directive? - if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { - return yaml_parser_fetch_directive(parser) - } - - buf := parser.buffer - pos := parser.buffer_pos - - // Is it the document start indicator? - if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) - } - - // Is it the document end indicator? - if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { - return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) - } - - // Is it the flow sequence start indicator? - if buf[pos] == '[' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) - } - - // Is it the flow mapping start indicator? - if parser.buffer[parser.buffer_pos] == '{' { - return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) - } - - // Is it the flow sequence end indicator? - if parser.buffer[parser.buffer_pos] == ']' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_SEQUENCE_END_TOKEN) - } - - // Is it the flow mapping end indicator? - if parser.buffer[parser.buffer_pos] == '}' { - return yaml_parser_fetch_flow_collection_end(parser, - yaml_FLOW_MAPPING_END_TOKEN) - } - - // Is it the flow entry indicator? - if parser.buffer[parser.buffer_pos] == ',' { - return yaml_parser_fetch_flow_entry(parser) - } - - // Is it the block entry indicator? - if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { - return yaml_parser_fetch_block_entry(parser) - } - - // Is it the key indicator? - if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_key(parser) - } - - // Is it the value indicator? - if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_value(parser) - } - - // Is it an alias? - if parser.buffer[parser.buffer_pos] == '*' { - return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) - } - - // Is it an anchor? - if parser.buffer[parser.buffer_pos] == '&' { - return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) - } - - // Is it a tag? - if parser.buffer[parser.buffer_pos] == '!' { - return yaml_parser_fetch_tag(parser) - } - - // Is it a literal scalar? - if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, true) - } - - // Is it a folded scalar? - if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { - return yaml_parser_fetch_block_scalar(parser, false) - } - - // Is it a single-quoted scalar? - if parser.buffer[parser.buffer_pos] == '\'' { - return yaml_parser_fetch_flow_scalar(parser, true) - } - - // Is it a double-quoted scalar? - if parser.buffer[parser.buffer_pos] == '"' { - return yaml_parser_fetch_flow_scalar(parser, false) - } - - // Is it a plain scalar? - // - // A plain scalar may start with any non-blank characters except - // - // '-', '?', ':', ',', '[', ']', '{', '}', - // '#', '&', '*', '!', '|', '>', '\'', '\"', - // '%', '@', '`'. - // - // In the block context (and, for the '-' indicator, in the flow context - // too), it may also start with the characters - // - // '-', '?', ':' - // - // if it is followed by a non-space character. - // - // The last rule is more restrictive than the specification requires. - // [Go] Make this logic more reasonable. - //switch parser.buffer[parser.buffer_pos] { - //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': - //} - if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || - parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || - parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || - (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level == 0 && - (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && - !is_blankz(parser.buffer, parser.buffer_pos+1)) { - return yaml_parser_fetch_plain_scalar(parser) - } - - // If we don't determine the token type so far, it is an error. - return yaml_parser_set_scanner_error(parser, - "while scanning for the next token", parser.mark, - "found character that cannot start any token") -} - -func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) bool { - if !simple_key.possible { - return false - } - - // The 1.2 specification says: - // - // "If the ? indicator is omitted, parsing needs to see past the - // implicit key to recognize it as such. To limit the amount of - // lookahead required, the “:” indicator must appear at most 1024 - // Unicode characters beyond the start of the key. In addition, the key - // is restricted to a single line." - // - if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { - // Check if the potential simple key to be removed is required. - if simple_key.required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", simple_key.mark, - "could not find expected ':'") - } - simple_key.possible = false - return false - } - return true -} - -// Check if a simple key may start at the current position and add it if -// needed. -func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { - // A simple key is required at the current position if the scanner is in - // the block context and the current column coincides with the indentation - // level. - - required := parser.flow_level == 0 && parser.indent == parser.mark.column - - // - // If the current position may start a simple key, save it. - // - if parser.simple_key_allowed { - simple_key := yaml_simple_key_t{ - possible: true, - required: required, - token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), - mark: parser.mark, - } - - if !yaml_parser_remove_simple_key(parser) { - return false - } - parser.simple_keys[len(parser.simple_keys)-1] = simple_key - } - return true -} - -// Remove a potential simple key at the current flow level. -func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { - i := len(parser.simple_keys) - 1 - if parser.simple_keys[i].possible { - // If the key is required, it is an error. - if parser.simple_keys[i].required { - return yaml_parser_set_scanner_error(parser, - "while scanning a simple key", parser.simple_keys[i].mark, - "could not find expected ':'") - } - } - // Remove the key from the stack. - parser.simple_keys[i].possible = false - return true -} - -// max_flow_level limits the flow_level -const max_flow_level = 10000 - -// Increase the flow level and resize the simple key list if needed. -func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { - // Reset the simple key on the next level. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ - possible: false, - required: false, - token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), - mark: parser.mark, - }) - - // Increase the flow level. - parser.flow_level++ - if parser.flow_level > max_flow_level { - return yaml_parser_set_scanner_error(parser, - "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, - fmt.Sprintf("exceeded max depth of %d", max_flow_level)) - } - return true -} - -// Decrease the flow level. -func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { - if parser.flow_level > 0 { - parser.flow_level-- - parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] - } - return true -} - -// max_indents limits the indents stack size -const max_indents = 10000 - -// Push the current indentation level to the stack and set the new level -// the current column is greater than the indentation level. In this case, -// append or insert the specified token into the token queue. -func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - if parser.indent < column { - // Push the current indentation level to the stack and set the new - // indentation level. - parser.indents = append(parser.indents, parser.indent) - parser.indent = column - if len(parser.indents) > max_indents { - return yaml_parser_set_scanner_error(parser, - "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, - fmt.Sprintf("exceeded max depth of %d", max_indents)) - } - - // Create a token and insert it into the queue. - token := yaml_token_t{ - typ: typ, - start_mark: mark, - end_mark: mark, - } - if number > -1 { - number -= parser.tokens_parsed - } - yaml_insert_token(parser, number, &token) - } - return true -} - -// Pop indentation levels from the indents stack until the current level -// becomes less or equal to the column. For each indentation level, append -// the BLOCK-END token. -func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool { - // In the flow context, do nothing. - if parser.flow_level > 0 { - return true - } - - // Loop through the indentation levels in the stack. - for parser.indent > column { - // Create a token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - - // Pop the indentation level. - parser.indent = parser.indents[len(parser.indents)-1] - parser.indents = parser.indents[:len(parser.indents)-1] - } - return true -} - -// Initialize the scanner and produce the STREAM-START token. -func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { - - // Set the initial indentation. - parser.indent = -1 - - // Initialize the simple key stack. - parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) - - // A simple key is allowed at the beginning of the stream. - parser.simple_key_allowed = true - - // We have started. - parser.stream_start_produced = true - - // Create the STREAM-START token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_START_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - encoding: parser.encoding, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the STREAM-END token and shut down the scanner. -func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { - - // Force new line. - if parser.mark.column != 0 { - parser.mark.column = 0 - parser.mark.line++ - } - - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the STREAM-END token and append it to the queue. - token := yaml_token_t{ - typ: yaml_STREAM_END_TOKEN, - start_mark: parser.mark, - end_mark: parser.mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. -func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. - token := yaml_token_t{} - if !yaml_parser_scan_directive(parser, &token) { - return false - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the DOCUMENT-START or DOCUMENT-END token. -func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset the indentation level. - if !yaml_parser_unroll_indent(parser, -1) { - return false - } - - // Reset simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - parser.simple_key_allowed = false - - // Consume the token. - start_mark := parser.mark - - skip(parser) - skip(parser) - skip(parser) - - end_mark := parser.mark - - // Create the DOCUMENT-START or DOCUMENT-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. -func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // The indicators '[' and '{' may start a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // Increase the flow level. - if !yaml_parser_increase_flow_level(parser) { - return false - } - - // A simple key may follow the indicators '[' and '{'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. -func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // Reset any potential simple key on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Decrease the flow level. - if !yaml_parser_decrease_flow_level(parser) { - return false - } - - // No simple keys after the indicators ']' and '}'. - parser.simple_key_allowed = false - - // Consume the token. - - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. - token := yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - } - // Append the token to the queue. - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the FLOW-ENTRY token. -func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after ','. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the FLOW-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_FLOW_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the BLOCK-ENTRY token. -func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { - // Check if the scanner is in the block context. - if parser.flow_level == 0 { - // Check if we are allowed to start a new entry. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "block sequence entries are not allowed in this context") - } - // Add the BLOCK-SEQUENCE-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { - return false - } - } else { - // It is an error for the '-' indicator to occur in the flow context, - // but we let the Parser detect and report about it because the Parser - // is able to point to the context. - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '-'. - parser.simple_key_allowed = true - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the BLOCK-ENTRY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_BLOCK_ENTRY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the KEY token. -func yaml_parser_fetch_key(parser *yaml_parser_t) bool { - - // In the block context, additional checks are required. - if parser.flow_level == 0 { - // Check if we are allowed to start a new key (not nessesary simple). - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping keys are not allowed in this context") - } - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Reset any potential simple keys on the current flow level. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // Simple keys are allowed after '?' in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the KEY token and append it to the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the VALUE token. -func yaml_parser_fetch_value(parser *yaml_parser_t) bool { - - simple_key := &parser.simple_keys[len(parser.simple_keys)-1] - - // Have we found a simple key? - if yaml_simple_key_is_valid(parser, simple_key) { - - // Create the KEY token and insert it into the queue. - token := yaml_token_t{ - typ: yaml_KEY_TOKEN, - start_mark: simple_key.mark, - end_mark: simple_key.mark, - } - yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) - - // In the block context, we may need to add the BLOCK-MAPPING-START token. - if !yaml_parser_roll_indent(parser, simple_key.mark.column, - simple_key.token_number, - yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { - return false - } - - // Remove the simple key. - simple_key.possible = false - - // A simple key cannot follow another simple key. - parser.simple_key_allowed = false - - } else { - // The ':' indicator follows a complex key. - - // In the block context, extra checks are required. - if parser.flow_level == 0 { - - // Check if we are allowed to start a complex value. - if !parser.simple_key_allowed { - return yaml_parser_set_scanner_error(parser, "", parser.mark, - "mapping values are not allowed in this context") - } - - // Add the BLOCK-MAPPING-START token if needed. - if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { - return false - } - } - - // Simple keys after ':' are allowed in the block context. - parser.simple_key_allowed = parser.flow_level == 0 - } - - // Consume the token. - start_mark := parser.mark - skip(parser) - end_mark := parser.mark - - // Create the VALUE token and append it to the queue. - token := yaml_token_t{ - typ: yaml_VALUE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the ALIAS or ANCHOR token. -func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { - // An anchor or an alias could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow an anchor or an alias. - parser.simple_key_allowed = false - - // Create the ALIAS or ANCHOR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_anchor(parser, &token, typ) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the TAG token. -func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { - // A tag could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a tag. - parser.simple_key_allowed = false - - // Create the TAG token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_tag(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. -func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { - // Remove any potential simple keys. - if !yaml_parser_remove_simple_key(parser) { - return false - } - - // A simple key may follow a block scalar. - parser.simple_key_allowed = true - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_block_scalar(parser, &token, literal) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. -func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_flow_scalar(parser, &token, single) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Produce the SCALAR(...,plain) token. -func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { - // A plain scalar could be a simple key. - if !yaml_parser_save_simple_key(parser) { - return false - } - - // A simple key cannot follow a flow scalar. - parser.simple_key_allowed = false - - // Create the SCALAR token and append it to the queue. - var token yaml_token_t - if !yaml_parser_scan_plain_scalar(parser, &token) { - return false - } - yaml_insert_token(parser, -1, &token) - return true -} - -// Eat whitespaces and comments until the next token is found. -func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { - - // Until the next token is not found. - for { - // Allow the BOM mark to start a line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { - skip(parser) - } - - // Eat whitespaces. - // Tabs are allowed: - // - in the flow context - // - in the block context, but not at the beginning of the line or - // after '-', '?', or ':' (complex value). - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Eat a comment until a line break. - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // If it is a line break, eat it. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - - // In the block context, a new line may start a simple key. - if parser.flow_level == 0 { - parser.simple_key_allowed = true - } - } else { - break // We have found a token. - } - } - - return true -} - -// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { - // Eat '%'. - start_mark := parser.mark - skip(parser) - - // Scan the directive name. - var name []byte - if !yaml_parser_scan_directive_name(parser, start_mark, &name) { - return false - } - - // Is it a YAML directive? - if bytes.Equal(name, []byte("YAML")) { - // Scan the VERSION directive value. - var major, minor int8 - if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { - return false - } - end_mark := parser.mark - - // Create a VERSION-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_VERSION_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - major: major, - minor: minor, - } - - // Is it a TAG directive? - } else if bytes.Equal(name, []byte("TAG")) { - // Scan the TAG directive value. - var handle, prefix []byte - if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { - return false - } - end_mark := parser.mark - - // Create a TAG-DIRECTIVE token. - *token = yaml_token_t{ - typ: yaml_TAG_DIRECTIVE_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - prefix: prefix, - } - - // Unknown directive. - } else { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unknown directive name") - return false - } - - // Eat the rest of the line including any comments. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - return true -} - -// Scan the directive name. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^ -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^ -// -func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { - // Consume the directive name. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - var s []byte - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the name is empty. - if len(s) == 0 { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "could not find expected directive name") - return false - } - - // Check for an blank character after the name. - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unexpected non-alphabetical character") - return false - } - *name = s - return true -} - -// Scan the value of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^^^^^^ -func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the major version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { - return false - } - - // Eat '.'. - if parser.buffer[parser.buffer_pos] != '.' { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected digit or '.' character") - } - - skip(parser) - - // Consume the minor version number. - if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { - return false - } - return true -} - -const max_number_length = 2 - -// Scan the version number of VERSION-DIRECTIVE. -// -// Scope: -// %YAML 1.1 # a comment \n -// ^ -// %YAML 1.1 # a comment \n -// ^ -func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { - - // Repeat while the next character is digit. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var value, length int8 - for is_digit(parser.buffer, parser.buffer_pos) { - // Check if the number is too long. - length++ - if length > max_number_length { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "found extremely long version number") - } - value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the number was present. - if length == 0 { - return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", - start_mark, "did not find expected version number") - } - *number = value - return true -} - -// Scan the value of a TAG-DIRECTIVE token. -// -// Scope: -// %TAG !yaml! tag:yaml.org,2002: \n -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -// -func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { - var handle_value, prefix_value []byte - - // Eat whitespaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a handle. - if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { - return false - } - - // Expect a whitespace. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blank(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace") - return false - } - - // Eat whitespaces. - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Scan a prefix. - if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { - return false - } - - // Expect a whitespace or line break. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", - start_mark, "did not find expected whitespace or line break") - return false - } - - *handle = handle_value - *prefix = prefix_value - return true -} - -func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { - var s []byte - - // Eat the indicator character. - start_mark := parser.mark - skip(parser) - - // Consume the value. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - end_mark := parser.mark - - /* - * Check if length of the anchor is greater than 0 and it is followed by - * a whitespace character or one of the indicators: - * - * '?', ':', ',', ']', '}', '%', '@', '`'. - */ - - if len(s) == 0 || - !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || - parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '`') { - context := "while scanning an alias" - if typ == yaml_ANCHOR_TOKEN { - context = "while scanning an anchor" - } - yaml_parser_set_scanner_error(parser, context, start_mark, - "did not find expected alphabetic or numeric character") - return false - } - - // Create a token. - *token = yaml_token_t{ - typ: typ, - start_mark: start_mark, - end_mark: end_mark, - value: s, - } - - return true -} - -/* - * Scan a TAG token. - */ - -func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { - var handle, suffix []byte - - start_mark := parser.mark - - // Check if the tag is in the canonical form. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - if parser.buffer[parser.buffer_pos+1] == '<' { - // Keep the handle as '' - - // Eat '!<' - skip(parser) - skip(parser) - - // Consume the tag value. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - - // Check for '>' and eat it. - if parser.buffer[parser.buffer_pos] != '>' { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find the expected '>'") - return false - } - - skip(parser) - } else { - // The tag has either the '!suffix' or the '!handle!suffix' form. - - // First, try to scan a handle. - if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { - return false - } - - // Check if it is, indeed, handle. - if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { - // Scan the suffix now. - if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { - return false - } - } else { - // It wasn't a handle after all. Scan the rest of the tag. - if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { - return false - } - - // Set the handle to '!'. - handle = []byte{'!'} - - // A special case: the '!' tag. Set the handle to '' and the - // suffix to '!'. - if len(suffix) == 0 { - handle, suffix = suffix, handle - } - } - } - - // Check the character which ends the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if !is_blankz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a tag", - start_mark, "did not find expected whitespace or line break") - return false - } - - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_TAG_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: handle, - suffix: suffix, - } - return true -} - -// Scan a tag handle. -func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { - // Check the initial '!' character. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] != '!' { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - - var s []byte - - // Copy the '!' character. - s = read(parser, s) - - // Copy all subsequent alphabetical and numerical characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_alpha(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check if the trailing character is '!' and copy it. - if parser.buffer[parser.buffer_pos] == '!' { - s = read(parser, s) - } else { - // It's either the '!' tag or not really a tag handle. If it's a %TAG - // directive, it's an error. If it's a tag token, it must be a part of URI. - if directive && string(s) != "!" { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected '!'") - return false - } - } - - *handle = s - return true -} - -// Scan a tag. -func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { - //size_t length = head ? strlen((char *)head) : 0 - var s []byte - hasTag := len(head) > 0 - - // Copy the head if needed. - // - // Note that we don't copy the leading '!' character. - if len(head) > 1 { - s = append(s, head[1:]...) - } - - // Scan the tag. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // The set of characters that may appear in URI is as follows: - // - // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', - // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', - // '%'. - // [Go] Convert this into more reasonable logic. - for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || - parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || - parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || - parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || - parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || - parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || - parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || - parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || - parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || - parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || - parser.buffer[parser.buffer_pos] == '%' { - // Check if it is a URI-escape sequence. - if parser.buffer[parser.buffer_pos] == '%' { - if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { - return false - } - } else { - s = read(parser, s) - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - hasTag = true - } - - if !hasTag { - yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find expected tag URI") - return false - } - *uri = s - return true -} - -// Decode an URI-escape sequence corresponding to a single UTF-8 character. -func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { - - // Decode the required number of characters. - w := 1024 - for w > 0 { - // Check for a URI-escaped octet. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - - if !(parser.buffer[parser.buffer_pos] == '%' && - is_hex(parser.buffer, parser.buffer_pos+1) && - is_hex(parser.buffer, parser.buffer_pos+2)) { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "did not find URI escaped octet") - } - - // Get the octet. - octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) - - // If it is the leading octet, determine the length of the UTF-8 sequence. - if w == 1024 { - w = width(octet) - if w == 0 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect leading UTF-8 octet") - } - } else { - // Check if the trailing octet is correct. - if octet&0xC0 != 0x80 { - return yaml_parser_set_scanner_tag_error(parser, directive, - start_mark, "found an incorrect trailing UTF-8 octet") - } - } - - // Copy the octet and move the pointers. - *s = append(*s, octet) - skip(parser) - skip(parser) - skip(parser) - w-- - } - return true -} - -// Scan a block scalar. -func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { - // Eat the indicator '|' or '>'. - start_mark := parser.mark - skip(parser) - - // Scan the additional block scalar indicators. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check for a chomping indicator. - var chomping, increment int - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - // Set the chomping method and eat the indicator. - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - - // Check for an indentation indicator. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if is_digit(parser.buffer, parser.buffer_pos) { - // Check that the indentation is greater than 0. - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - - // Get the indentation level and eat the indicator. - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - } - - } else if is_digit(parser.buffer, parser.buffer_pos) { - // Do the same as above, but in the opposite order. - - if parser.buffer[parser.buffer_pos] == '0' { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found an indentation indicator equal to 0") - return false - } - increment = as_digit(parser.buffer, parser.buffer_pos) - skip(parser) - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { - if parser.buffer[parser.buffer_pos] == '+' { - chomping = +1 - } else { - chomping = -1 - } - skip(parser) - } - } - - // Eat whitespaces and comments to the end of the line. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for is_blank(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.buffer[parser.buffer_pos] == '#' { - for !is_breakz(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - } - - // Check if we are at the end of the line. - if !is_breakz(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "did not find expected comment or line break") - return false - } - - // Eat a line break. - if is_break(parser.buffer, parser.buffer_pos) { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - skip_line(parser) - } - - end_mark := parser.mark - - // Set the indentation level if it was specified. - var indent int - if increment > 0 { - if parser.indent >= 0 { - indent = parser.indent + increment - } else { - indent = increment - } - } - - // Scan the leading line breaks and determine the indentation level if needed. - var s, leading_break, trailing_breaks []byte - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - - // Scan the block scalar content. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - var leading_blank, trailing_blank bool - for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { - // We are at the beginning of a non-empty line. - - // Is it a trailing whitespace? - trailing_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Check if we need to fold the leading line break. - if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { - // Do we need to join the lines by space? - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } - } else { - s = append(s, leading_break...) - } - leading_break = leading_break[:0] - - // Append the remaining line breaks. - s = append(s, trailing_breaks...) - trailing_breaks = trailing_breaks[:0] - - // Is it a leading whitespace? - leading_blank = is_blank(parser.buffer, parser.buffer_pos) - - // Consume the current line. - for !is_breakz(parser.buffer, parser.buffer_pos) { - s = read(parser, s) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - leading_break = read_line(parser, leading_break) - - // Eat the following indentation spaces and line breaks. - if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { - return false - } - } - - // Chomp the tail. - if chomping != -1 { - s = append(s, leading_break...) - } - if chomping == 1 { - s = append(s, trailing_breaks...) - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_LITERAL_SCALAR_STYLE, - } - if !literal { - token.style = yaml_FOLDED_SCALAR_STYLE - } - return true -} - -// Scan indentation spaces and line breaks for a block scalar. Determine the -// indentation level if needed. -func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { - *end_mark = parser.mark - - // Eat the indentation spaces and line breaks. - max_indent := 0 - for { - // Eat the indentation spaces. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { - skip(parser) - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - if parser.mark.column > max_indent { - max_indent = parser.mark.column - } - - // Check for a tab character messing the indentation. - if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { - return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", - start_mark, "found a tab character where an indentation space is expected") - } - - // Have we found a non-empty line? - if !is_break(parser.buffer, parser.buffer_pos) { - break - } - - // Consume the line break. - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - // [Go] Should really be returning breaks instead. - *breaks = read_line(parser, *breaks) - *end_mark = parser.mark - } - - // Determine the indentation level if needed. - if *indent == 0 { - *indent = max_indent - if *indent < parser.indent+1 { - *indent = parser.indent + 1 - } - if *indent < 1 { - *indent = 1 - } - } - return true -} - -// Scan a quoted scalar. -func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { - // Eat the left quote. - start_mark := parser.mark - skip(parser) - - // Consume the content of the quoted scalar. - var s, leading_break, trailing_breaks, whitespaces []byte - for { - // Check that there are no document indicators at the beginning of the line. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected document indicator") - return false - } - - // Check for EOF. - if is_z(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", - start_mark, "found unexpected end of stream") - return false - } - - // Consume non-blank characters. - leading_blanks := false - for !is_blankz(parser.buffer, parser.buffer_pos) { - if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { - // Is is an escaped single quote. - s = append(s, '\'') - skip(parser) - skip(parser) - - } else if single && parser.buffer[parser.buffer_pos] == '\'' { - // It is a right single quote. - break - } else if !single && parser.buffer[parser.buffer_pos] == '"' { - // It is a right double quote. - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { - // It is an escaped line break. - if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { - return false - } - skip(parser) - skip_line(parser) - leading_blanks = true - break - - } else if !single && parser.buffer[parser.buffer_pos] == '\\' { - // It is an escape sequence. - code_length := 0 - - // Check the escape character. - switch parser.buffer[parser.buffer_pos+1] { - case '0': - s = append(s, 0) - case 'a': - s = append(s, '\x07') - case 'b': - s = append(s, '\x08') - case 't', '\t': - s = append(s, '\x09') - case 'n': - s = append(s, '\x0A') - case 'v': - s = append(s, '\x0B') - case 'f': - s = append(s, '\x0C') - case 'r': - s = append(s, '\x0D') - case 'e': - s = append(s, '\x1B') - case ' ': - s = append(s, '\x20') - case '"': - s = append(s, '"') - case '\'': - s = append(s, '\'') - case '\\': - s = append(s, '\\') - case 'N': // NEL (#x85) - s = append(s, '\xC2') - s = append(s, '\x85') - case '_': // #xA0 - s = append(s, '\xC2') - s = append(s, '\xA0') - case 'L': // LS (#x2028) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA8') - case 'P': // PS (#x2029) - s = append(s, '\xE2') - s = append(s, '\x80') - s = append(s, '\xA9') - case 'x': - code_length = 2 - case 'u': - code_length = 4 - case 'U': - code_length = 8 - default: - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found unknown escape character") - return false - } - - skip(parser) - skip(parser) - - // Consume an arbitrary escape code. - if code_length > 0 { - var value int - - // Scan the character value. - if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { - return false - } - for k := 0; k < code_length; k++ { - if !is_hex(parser.buffer, parser.buffer_pos+k) { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "did not find expected hexdecimal number") - return false - } - value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) - } - - // Check the value and write the character. - if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { - yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", - start_mark, "found invalid Unicode character escape code") - return false - } - if value <= 0x7F { - s = append(s, byte(value)) - } else if value <= 0x7FF { - s = append(s, byte(0xC0+(value>>6))) - s = append(s, byte(0x80+(value&0x3F))) - } else if value <= 0xFFFF { - s = append(s, byte(0xE0+(value>>12))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } else { - s = append(s, byte(0xF0+(value>>18))) - s = append(s, byte(0x80+((value>>12)&0x3F))) - s = append(s, byte(0x80+((value>>6)&0x3F))) - s = append(s, byte(0x80+(value&0x3F))) - } - - // Advance the pointer. - for k := 0; k < code_length; k++ { - skip(parser) - } - } - } else { - // It is a non-escaped non-blank character. - s = read(parser, s) - } - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - // Check if we are at the end of the scalar. - if single { - if parser.buffer[parser.buffer_pos] == '\'' { - break - } - } else { - if parser.buffer[parser.buffer_pos] == '"' { - break - } - } - - // Consume blank characters. - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Join the whitespaces or fold line breaks. - if leading_blanks { - // Do we need to fold line breaks? - if len(leading_break) > 0 && leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Eat the right quote. - skip(parser) - end_mark := parser.mark - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_SINGLE_QUOTED_SCALAR_STYLE, - } - if !single { - token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE - } - return true -} - -// Scan a plain scalar. -func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { - - var s, leading_break, trailing_breaks, whitespaces []byte - var leading_blanks bool - var indent = parser.indent + 1 - - start_mark := parser.mark - end_mark := parser.mark - - // Consume the content of the plain scalar. - for { - // Check for a document indicator. - if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { - return false - } - if parser.mark.column == 0 && - ((parser.buffer[parser.buffer_pos+0] == '-' && - parser.buffer[parser.buffer_pos+1] == '-' && - parser.buffer[parser.buffer_pos+2] == '-') || - (parser.buffer[parser.buffer_pos+0] == '.' && - parser.buffer[parser.buffer_pos+1] == '.' && - parser.buffer[parser.buffer_pos+2] == '.')) && - is_blankz(parser.buffer, parser.buffer_pos+3) { - break - } - - // Check for a comment. - if parser.buffer[parser.buffer_pos] == '#' { - break - } - - // Consume non-blank characters. - for !is_blankz(parser.buffer, parser.buffer_pos) { - - // Check for indicators that may end a plain scalar. - if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || - (parser.flow_level > 0 && - (parser.buffer[parser.buffer_pos] == ',' || - parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || - parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || - parser.buffer[parser.buffer_pos] == '}')) { - break - } - - // Check if we need to join whitespaces and breaks. - if leading_blanks || len(whitespaces) > 0 { - if leading_blanks { - // Do we need to fold line breaks? - if leading_break[0] == '\n' { - if len(trailing_breaks) == 0 { - s = append(s, ' ') - } else { - s = append(s, trailing_breaks...) - } - } else { - s = append(s, leading_break...) - s = append(s, trailing_breaks...) - } - trailing_breaks = trailing_breaks[:0] - leading_break = leading_break[:0] - leading_blanks = false - } else { - s = append(s, whitespaces...) - whitespaces = whitespaces[:0] - } - } - - // Copy the character. - s = read(parser, s) - - end_mark = parser.mark - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - } - - // Is it the end? - if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { - break - } - - // Consume blank characters. - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - - for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { - if is_blank(parser.buffer, parser.buffer_pos) { - - // Check for tab characters that abuse indentation. - if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { - yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", - start_mark, "found a tab character that violates indentation") - return false - } - - // Consume a space or a tab character. - if !leading_blanks { - whitespaces = read(parser, whitespaces) - } else { - skip(parser) - } - } else { - if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { - return false - } - - // Check if it is a first line break. - if !leading_blanks { - whitespaces = whitespaces[:0] - leading_break = read_line(parser, leading_break) - leading_blanks = true - } else { - trailing_breaks = read_line(parser, trailing_breaks) - } - } - if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { - return false - } - } - - // Check indentation level. - if parser.flow_level == 0 && parser.mark.column < indent { - break - } - } - - // Create a token. - *token = yaml_token_t{ - typ: yaml_SCALAR_TOKEN, - start_mark: start_mark, - end_mark: end_mark, - value: s, - style: yaml_PLAIN_SCALAR_STYLE, - } - - // Note that we change the 'simple_key_allowed' flag. - if leading_blanks { - parser.simple_key_allowed = true - } - return true -} diff --git a/vendor/gopkg.in/yaml.v2/sorter.go b/vendor/gopkg.in/yaml.v2/sorter.go deleted file mode 100644 index 4c45e660..00000000 --- a/vendor/gopkg.in/yaml.v2/sorter.go +++ /dev/null @@ -1,113 +0,0 @@ -package yaml - -import ( - "reflect" - "unicode" -) - -type keyList []reflect.Value - -func (l keyList) Len() int { return len(l) } -func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l keyList) Less(i, j int) bool { - a := l[i] - b := l[j] - ak := a.Kind() - bk := b.Kind() - for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { - a = a.Elem() - ak = a.Kind() - } - for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { - b = b.Elem() - bk = b.Kind() - } - af, aok := keyFloat(a) - bf, bok := keyFloat(b) - if aok && bok { - if af != bf { - return af < bf - } - if ak != bk { - return ak < bk - } - return numLess(a, b) - } - if ak != reflect.String || bk != reflect.String { - return ak < bk - } - ar, br := []rune(a.String()), []rune(b.String()) - for i := 0; i < len(ar) && i < len(br); i++ { - if ar[i] == br[i] { - continue - } - al := unicode.IsLetter(ar[i]) - bl := unicode.IsLetter(br[i]) - if al && bl { - return ar[i] < br[i] - } - if al || bl { - return bl - } - var ai, bi int - var an, bn int64 - if ar[i] == '0' || br[i] == '0' { - for j := i-1; j >= 0 && unicode.IsDigit(ar[j]); j-- { - if ar[j] != '0' { - an = 1 - bn = 1 - break - } - } - } - for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { - an = an*10 + int64(ar[ai]-'0') - } - for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { - bn = bn*10 + int64(br[bi]-'0') - } - if an != bn { - return an < bn - } - if ai != bi { - return ai < bi - } - return ar[i] < br[i] - } - return len(ar) < len(br) -} - -// keyFloat returns a float value for v if it is a number/bool -// and whether it is a number/bool or not. -func keyFloat(v reflect.Value) (f float64, ok bool) { - switch v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return float64(v.Int()), true - case reflect.Float32, reflect.Float64: - return v.Float(), true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return float64(v.Uint()), true - case reflect.Bool: - if v.Bool() { - return 1, true - } - return 0, true - } - return 0, false -} - -// numLess returns whether a < b. -// a and b must necessarily have the same kind. -func numLess(a, b reflect.Value) bool { - switch a.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return a.Int() < b.Int() - case reflect.Float32, reflect.Float64: - return a.Float() < b.Float() - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return a.Uint() < b.Uint() - case reflect.Bool: - return !a.Bool() && b.Bool() - } - panic("not a number") -} diff --git a/vendor/gopkg.in/yaml.v2/writerc.go b/vendor/gopkg.in/yaml.v2/writerc.go deleted file mode 100644 index a2dde608..00000000 --- a/vendor/gopkg.in/yaml.v2/writerc.go +++ /dev/null @@ -1,26 +0,0 @@ -package yaml - -// Set the writer error and return false. -func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { - emitter.error = yaml_WRITER_ERROR - emitter.problem = problem - return false -} - -// Flush the output buffer. -func yaml_emitter_flush(emitter *yaml_emitter_t) bool { - if emitter.write_handler == nil { - panic("write handler not set") - } - - // Check if the buffer is empty. - if emitter.buffer_pos == 0 { - return true - } - - if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { - return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) - } - emitter.buffer_pos = 0 - return true -} diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go deleted file mode 100644 index 89650e29..00000000 --- a/vendor/gopkg.in/yaml.v2/yaml.go +++ /dev/null @@ -1,466 +0,0 @@ -// Package yaml implements YAML support for the Go language. -// -// Source code and other details for the project are available at GitHub: -// -// https://github.com/go-yaml/yaml -// -package yaml - -import ( - "errors" - "fmt" - "io" - "reflect" - "strings" - "sync" -) - -// MapSlice encodes and decodes as a YAML map. -// The order of keys is preserved when encoding and decoding. -type MapSlice []MapItem - -// MapItem is an item in a MapSlice. -type MapItem struct { - Key, Value interface{} -} - -// The Unmarshaler interface may be implemented by types to customize their -// behavior when being unmarshaled from a YAML document. The UnmarshalYAML -// method receives a function that may be called to unmarshal the original -// YAML value into a field or variable. It is safe to call the unmarshal -// function parameter more than once if necessary. -type Unmarshaler interface { - UnmarshalYAML(unmarshal func(interface{}) error) error -} - -// The Marshaler interface may be implemented by types to customize their -// behavior when being marshaled into a YAML document. The returned value -// is marshaled in place of the original value implementing Marshaler. -// -// If an error is returned by MarshalYAML, the marshaling procedure stops -// and returns with the provided error. -type Marshaler interface { - MarshalYAML() (interface{}, error) -} - -// Unmarshal decodes the first document found within the in byte slice -// and assigns decoded values into the out value. -// -// Maps and pointers (to a struct, string, int, etc) are accepted as out -// values. If an internal pointer within a struct is not initialized, -// the yaml package will initialize it if necessary for unmarshalling -// the provided data. The out parameter must not be nil. -// -// The type of the decoded values should be compatible with the respective -// values in out. If one or more values cannot be decoded due to a type -// mismatches, decoding continues partially until the end of the YAML -// content, and a *yaml.TypeError is returned with details for all -// missed values. -// -// Struct fields are only unmarshalled if they are exported (have an -// upper case first letter), and are unmarshalled using the field name -// lowercased as the default key. Custom keys may be defined via the -// "yaml" name in the field tag: the content preceding the first comma -// is used as the key, and the following comma-separated options are -// used to tweak the marshalling process (see Marshal). -// Conflicting names result in a runtime error. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// var t T -// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) -// -// See the documentation of Marshal for the format of tags and a list of -// supported tag options. -// -func Unmarshal(in []byte, out interface{}) (err error) { - return unmarshal(in, out, false) -} - -// UnmarshalStrict is like Unmarshal except that any fields that are found -// in the data that do not have corresponding struct members, or mapping -// keys that are duplicates, will result in -// an error. -func UnmarshalStrict(in []byte, out interface{}) (err error) { - return unmarshal(in, out, true) -} - -// A Decoder reads and decodes YAML values from an input stream. -type Decoder struct { - strict bool - parser *parser -} - -// NewDecoder returns a new decoder that reads from r. -// -// The decoder introduces its own buffering and may read -// data from r beyond the YAML values requested. -func NewDecoder(r io.Reader) *Decoder { - return &Decoder{ - parser: newParserFromReader(r), - } -} - -// SetStrict sets whether strict decoding behaviour is enabled when -// decoding items in the data (see UnmarshalStrict). By default, decoding is not strict. -func (dec *Decoder) SetStrict(strict bool) { - dec.strict = strict -} - -// Decode reads the next YAML-encoded value from its input -// and stores it in the value pointed to by v. -// -// See the documentation for Unmarshal for details about the -// conversion of YAML into a Go value. -func (dec *Decoder) Decode(v interface{}) (err error) { - d := newDecoder(dec.strict) - defer handleErr(&err) - node := dec.parser.parse() - if node == nil { - return io.EOF - } - out := reflect.ValueOf(v) - if out.Kind() == reflect.Ptr && !out.IsNil() { - out = out.Elem() - } - d.unmarshal(node, out) - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -func unmarshal(in []byte, out interface{}, strict bool) (err error) { - defer handleErr(&err) - d := newDecoder(strict) - p := newParser(in) - defer p.destroy() - node := p.parse() - if node != nil { - v := reflect.ValueOf(out) - if v.Kind() == reflect.Ptr && !v.IsNil() { - v = v.Elem() - } - d.unmarshal(node, v) - } - if len(d.terrors) > 0 { - return &TypeError{d.terrors} - } - return nil -} - -// Marshal serializes the value provided into a YAML document. The structure -// of the generated document will reflect the structure of the value itself. -// Maps and pointers (to struct, string, int, etc) are accepted as the in value. -// -// Struct fields are only marshalled if they are exported (have an upper case -// first letter), and are marshalled using the field name lowercased as the -// default key. Custom keys may be defined via the "yaml" name in the field -// tag: the content preceding the first comma is used as the key, and the -// following comma-separated options are used to tweak the marshalling process. -// Conflicting names result in a runtime error. -// -// The field tag format accepted is: -// -// `(...) yaml:"[][,[,]]" (...)` -// -// The following flags are currently supported: -// -// omitempty Only include the field if it's not set to the zero -// value for the type or to empty slices or maps. -// Zero valued structs will be omitted if all their public -// fields are zero, unless they implement an IsZero -// method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. -// -// flow Marshal using a flow style (useful for structs, -// sequences and maps). -// -// inline Inline the field, which must be a struct or a map, -// causing all of its fields or keys to be processed as if -// they were part of the outer struct. For maps, keys must -// not conflict with the yaml keys of other struct fields. -// -// In addition, if the key is "-", the field is ignored. -// -// For example: -// -// type T struct { -// F int `yaml:"a,omitempty"` -// B int -// } -// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" -// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" -// -func Marshal(in interface{}) (out []byte, err error) { - defer handleErr(&err) - e := newEncoder() - defer e.destroy() - e.marshalDoc("", reflect.ValueOf(in)) - e.finish() - out = e.out - return -} - -// An Encoder writes YAML values to an output stream. -type Encoder struct { - encoder *encoder -} - -// NewEncoder returns a new encoder that writes to w. -// The Encoder should be closed after use to flush all data -// to w. -func NewEncoder(w io.Writer) *Encoder { - return &Encoder{ - encoder: newEncoderWithWriter(w), - } -} - -// Encode writes the YAML encoding of v to the stream. -// If multiple items are encoded to the stream, the -// second and subsequent document will be preceded -// with a "---" document separator, but the first will not. -// -// See the documentation for Marshal for details about the conversion of Go -// values to YAML. -func (e *Encoder) Encode(v interface{}) (err error) { - defer handleErr(&err) - e.encoder.marshalDoc("", reflect.ValueOf(v)) - return nil -} - -// Close closes the encoder by writing any remaining data. -// It does not write a stream terminating string "...". -func (e *Encoder) Close() (err error) { - defer handleErr(&err) - e.encoder.finish() - return nil -} - -func handleErr(err *error) { - if v := recover(); v != nil { - if e, ok := v.(yamlError); ok { - *err = e.err - } else { - panic(v) - } - } -} - -type yamlError struct { - err error -} - -func fail(err error) { - panic(yamlError{err}) -} - -func failf(format string, args ...interface{}) { - panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) -} - -// A TypeError is returned by Unmarshal when one or more fields in -// the YAML document cannot be properly decoded into the requested -// types. When this error is returned, the value is still -// unmarshaled partially. -type TypeError struct { - Errors []string -} - -func (e *TypeError) Error() string { - return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) -} - -// -------------------------------------------------------------------------- -// Maintain a mapping of keys to structure field indexes - -// The code in this section was copied from mgo/bson. - -// structInfo holds details for the serialization of fields of -// a given struct. -type structInfo struct { - FieldsMap map[string]fieldInfo - FieldsList []fieldInfo - - // InlineMap is the number of the field in the struct that - // contains an ,inline map, or -1 if there's none. - InlineMap int -} - -type fieldInfo struct { - Key string - Num int - OmitEmpty bool - Flow bool - // Id holds the unique field identifier, so we can cheaply - // check for field duplicates without maintaining an extra map. - Id int - - // Inline holds the field index if the field is part of an inlined struct. - Inline []int -} - -var structMap = make(map[reflect.Type]*structInfo) -var fieldMapMutex sync.RWMutex - -func getStructInfo(st reflect.Type) (*structInfo, error) { - fieldMapMutex.RLock() - sinfo, found := structMap[st] - fieldMapMutex.RUnlock() - if found { - return sinfo, nil - } - - n := st.NumField() - fieldsMap := make(map[string]fieldInfo) - fieldsList := make([]fieldInfo, 0, n) - inlineMap := -1 - for i := 0; i != n; i++ { - field := st.Field(i) - if field.PkgPath != "" && !field.Anonymous { - continue // Private field - } - - info := fieldInfo{Num: i} - - tag := field.Tag.Get("yaml") - if tag == "" && strings.Index(string(field.Tag), ":") < 0 { - tag = string(field.Tag) - } - if tag == "-" { - continue - } - - inline := false - fields := strings.Split(tag, ",") - if len(fields) > 1 { - for _, flag := range fields[1:] { - switch flag { - case "omitempty": - info.OmitEmpty = true - case "flow": - info.Flow = true - case "inline": - inline = true - default: - return nil, errors.New(fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st)) - } - } - tag = fields[0] - } - - if inline { - switch field.Type.Kind() { - case reflect.Map: - if inlineMap >= 0 { - return nil, errors.New("Multiple ,inline maps in struct " + st.String()) - } - if field.Type.Key() != reflect.TypeOf("") { - return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String()) - } - inlineMap = info.Num - case reflect.Struct: - sinfo, err := getStructInfo(field.Type) - if err != nil { - return nil, err - } - for _, finfo := range sinfo.FieldsList { - if _, found := fieldsMap[finfo.Key]; found { - msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - if finfo.Inline == nil { - finfo.Inline = []int{i, finfo.Num} - } else { - finfo.Inline = append([]int{i}, finfo.Inline...) - } - finfo.Id = len(fieldsList) - fieldsMap[finfo.Key] = finfo - fieldsList = append(fieldsList, finfo) - } - default: - //return nil, errors.New("Option ,inline needs a struct value or map field") - return nil, errors.New("Option ,inline needs a struct value field") - } - continue - } - - if tag != "" { - info.Key = tag - } else { - info.Key = strings.ToLower(field.Name) - } - - if _, found = fieldsMap[info.Key]; found { - msg := "Duplicated key '" + info.Key + "' in struct " + st.String() - return nil, errors.New(msg) - } - - info.Id = len(fieldsList) - fieldsList = append(fieldsList, info) - fieldsMap[info.Key] = info - } - - sinfo = &structInfo{ - FieldsMap: fieldsMap, - FieldsList: fieldsList, - InlineMap: inlineMap, - } - - fieldMapMutex.Lock() - structMap[st] = sinfo - fieldMapMutex.Unlock() - return sinfo, nil -} - -// IsZeroer is used to check whether an object is zero to -// determine whether it should be omitted when marshaling -// with the omitempty flag. One notable implementation -// is time.Time. -type IsZeroer interface { - IsZero() bool -} - -func isZero(v reflect.Value) bool { - kind := v.Kind() - if z, ok := v.Interface().(IsZeroer); ok { - if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { - return true - } - return z.IsZero() - } - switch kind { - case reflect.String: - return len(v.String()) == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - case reflect.Slice: - return v.Len() == 0 - case reflect.Map: - return v.Len() == 0 - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Struct: - vt := v.Type() - for i := v.NumField() - 1; i >= 0; i-- { - if vt.Field(i).PkgPath != "" { - continue // Private field - } - if !isZero(v.Field(i)) { - return false - } - } - return true - } - return false -} diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go deleted file mode 100644 index e25cee56..00000000 --- a/vendor/gopkg.in/yaml.v2/yamlh.go +++ /dev/null @@ -1,738 +0,0 @@ -package yaml - -import ( - "fmt" - "io" -) - -// The version directive data. -type yaml_version_directive_t struct { - major int8 // The major version number. - minor int8 // The minor version number. -} - -// The tag directive data. -type yaml_tag_directive_t struct { - handle []byte // The tag handle. - prefix []byte // The tag prefix. -} - -type yaml_encoding_t int - -// The stream encoding. -const ( - // Let the parser choose the encoding. - yaml_ANY_ENCODING yaml_encoding_t = iota - - yaml_UTF8_ENCODING // The default UTF-8 encoding. - yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. - yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. -) - -type yaml_break_t int - -// Line break types. -const ( - // Let the parser choose the break type. - yaml_ANY_BREAK yaml_break_t = iota - - yaml_CR_BREAK // Use CR for line breaks (Mac style). - yaml_LN_BREAK // Use LN for line breaks (Unix style). - yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). -) - -type yaml_error_type_t int - -// Many bad things could happen with the parser and emitter. -const ( - // No error is produced. - yaml_NO_ERROR yaml_error_type_t = iota - - yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. - yaml_READER_ERROR // Cannot read or decode the input stream. - yaml_SCANNER_ERROR // Cannot scan the input stream. - yaml_PARSER_ERROR // Cannot parse the input stream. - yaml_COMPOSER_ERROR // Cannot compose a YAML document. - yaml_WRITER_ERROR // Cannot write to the output stream. - yaml_EMITTER_ERROR // Cannot emit a YAML stream. -) - -// The pointer position. -type yaml_mark_t struct { - index int // The position index. - line int // The position line. - column int // The position column. -} - -// Node Styles - -type yaml_style_t int8 - -type yaml_scalar_style_t yaml_style_t - -// Scalar styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota - - yaml_PLAIN_SCALAR_STYLE // The plain scalar style. - yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. - yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. - yaml_LITERAL_SCALAR_STYLE // The literal scalar style. - yaml_FOLDED_SCALAR_STYLE // The folded scalar style. -) - -type yaml_sequence_style_t yaml_style_t - -// Sequence styles. -const ( - // Let the emitter choose the style. - yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota - - yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. - yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. -) - -type yaml_mapping_style_t yaml_style_t - -// Mapping styles. -const ( - // Let the emitter choose the style. - yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota - - yaml_BLOCK_MAPPING_STYLE // The block mapping style. - yaml_FLOW_MAPPING_STYLE // The flow mapping style. -) - -// Tokens - -type yaml_token_type_t int - -// Token types. -const ( - // An empty token. - yaml_NO_TOKEN yaml_token_type_t = iota - - yaml_STREAM_START_TOKEN // A STREAM-START token. - yaml_STREAM_END_TOKEN // A STREAM-END token. - - yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. - yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. - yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. - yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. - - yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. - yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. - yaml_BLOCK_END_TOKEN // A BLOCK-END token. - - yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. - yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. - yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. - yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. - - yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. - yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. - yaml_KEY_TOKEN // A KEY token. - yaml_VALUE_TOKEN // A VALUE token. - - yaml_ALIAS_TOKEN // An ALIAS token. - yaml_ANCHOR_TOKEN // An ANCHOR token. - yaml_TAG_TOKEN // A TAG token. - yaml_SCALAR_TOKEN // A SCALAR token. -) - -func (tt yaml_token_type_t) String() string { - switch tt { - case yaml_NO_TOKEN: - return "yaml_NO_TOKEN" - case yaml_STREAM_START_TOKEN: - return "yaml_STREAM_START_TOKEN" - case yaml_STREAM_END_TOKEN: - return "yaml_STREAM_END_TOKEN" - case yaml_VERSION_DIRECTIVE_TOKEN: - return "yaml_VERSION_DIRECTIVE_TOKEN" - case yaml_TAG_DIRECTIVE_TOKEN: - return "yaml_TAG_DIRECTIVE_TOKEN" - case yaml_DOCUMENT_START_TOKEN: - return "yaml_DOCUMENT_START_TOKEN" - case yaml_DOCUMENT_END_TOKEN: - return "yaml_DOCUMENT_END_TOKEN" - case yaml_BLOCK_SEQUENCE_START_TOKEN: - return "yaml_BLOCK_SEQUENCE_START_TOKEN" - case yaml_BLOCK_MAPPING_START_TOKEN: - return "yaml_BLOCK_MAPPING_START_TOKEN" - case yaml_BLOCK_END_TOKEN: - return "yaml_BLOCK_END_TOKEN" - case yaml_FLOW_SEQUENCE_START_TOKEN: - return "yaml_FLOW_SEQUENCE_START_TOKEN" - case yaml_FLOW_SEQUENCE_END_TOKEN: - return "yaml_FLOW_SEQUENCE_END_TOKEN" - case yaml_FLOW_MAPPING_START_TOKEN: - return "yaml_FLOW_MAPPING_START_TOKEN" - case yaml_FLOW_MAPPING_END_TOKEN: - return "yaml_FLOW_MAPPING_END_TOKEN" - case yaml_BLOCK_ENTRY_TOKEN: - return "yaml_BLOCK_ENTRY_TOKEN" - case yaml_FLOW_ENTRY_TOKEN: - return "yaml_FLOW_ENTRY_TOKEN" - case yaml_KEY_TOKEN: - return "yaml_KEY_TOKEN" - case yaml_VALUE_TOKEN: - return "yaml_VALUE_TOKEN" - case yaml_ALIAS_TOKEN: - return "yaml_ALIAS_TOKEN" - case yaml_ANCHOR_TOKEN: - return "yaml_ANCHOR_TOKEN" - case yaml_TAG_TOKEN: - return "yaml_TAG_TOKEN" - case yaml_SCALAR_TOKEN: - return "yaml_SCALAR_TOKEN" - } - return "" -} - -// The token structure. -type yaml_token_t struct { - // The token type. - typ yaml_token_type_t - - // The start/end of the token. - start_mark, end_mark yaml_mark_t - - // The stream encoding (for yaml_STREAM_START_TOKEN). - encoding yaml_encoding_t - - // The alias/anchor/scalar value or tag/tag directive handle - // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). - value []byte - - // The tag suffix (for yaml_TAG_TOKEN). - suffix []byte - - // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). - prefix []byte - - // The scalar style (for yaml_SCALAR_TOKEN). - style yaml_scalar_style_t - - // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). - major, minor int8 -} - -// Events - -type yaml_event_type_t int8 - -// Event types. -const ( - // An empty event. - yaml_NO_EVENT yaml_event_type_t = iota - - yaml_STREAM_START_EVENT // A STREAM-START event. - yaml_STREAM_END_EVENT // A STREAM-END event. - yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. - yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. - yaml_ALIAS_EVENT // An ALIAS event. - yaml_SCALAR_EVENT // A SCALAR event. - yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. - yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. - yaml_MAPPING_START_EVENT // A MAPPING-START event. - yaml_MAPPING_END_EVENT // A MAPPING-END event. -) - -var eventStrings = []string{ - yaml_NO_EVENT: "none", - yaml_STREAM_START_EVENT: "stream start", - yaml_STREAM_END_EVENT: "stream end", - yaml_DOCUMENT_START_EVENT: "document start", - yaml_DOCUMENT_END_EVENT: "document end", - yaml_ALIAS_EVENT: "alias", - yaml_SCALAR_EVENT: "scalar", - yaml_SEQUENCE_START_EVENT: "sequence start", - yaml_SEQUENCE_END_EVENT: "sequence end", - yaml_MAPPING_START_EVENT: "mapping start", - yaml_MAPPING_END_EVENT: "mapping end", -} - -func (e yaml_event_type_t) String() string { - if e < 0 || int(e) >= len(eventStrings) { - return fmt.Sprintf("unknown event %d", e) - } - return eventStrings[e] -} - -// The event structure. -type yaml_event_t struct { - - // The event type. - typ yaml_event_type_t - - // The start and end of the event. - start_mark, end_mark yaml_mark_t - - // The document encoding (for yaml_STREAM_START_EVENT). - encoding yaml_encoding_t - - // The version directive (for yaml_DOCUMENT_START_EVENT). - version_directive *yaml_version_directive_t - - // The list of tag directives (for yaml_DOCUMENT_START_EVENT). - tag_directives []yaml_tag_directive_t - - // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). - anchor []byte - - // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - tag []byte - - // The scalar value (for yaml_SCALAR_EVENT). - value []byte - - // Is the document start/end indicator implicit, or the tag optional? - // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). - implicit bool - - // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). - quoted_implicit bool - - // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). - style yaml_style_t -} - -func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } -func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } -func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } - -// Nodes - -const ( - yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. - yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. - yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. - yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. - yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. - yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. - - yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. - yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. - - // Not in original libyaml. - yaml_BINARY_TAG = "tag:yaml.org,2002:binary" - yaml_MERGE_TAG = "tag:yaml.org,2002:merge" - - yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. - yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. - yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. -) - -type yaml_node_type_t int - -// Node types. -const ( - // An empty node. - yaml_NO_NODE yaml_node_type_t = iota - - yaml_SCALAR_NODE // A scalar node. - yaml_SEQUENCE_NODE // A sequence node. - yaml_MAPPING_NODE // A mapping node. -) - -// An element of a sequence node. -type yaml_node_item_t int - -// An element of a mapping node. -type yaml_node_pair_t struct { - key int // The key of the element. - value int // The value of the element. -} - -// The node structure. -type yaml_node_t struct { - typ yaml_node_type_t // The node type. - tag []byte // The node tag. - - // The node data. - - // The scalar parameters (for yaml_SCALAR_NODE). - scalar struct { - value []byte // The scalar value. - length int // The length of the scalar value. - style yaml_scalar_style_t // The scalar style. - } - - // The sequence parameters (for YAML_SEQUENCE_NODE). - sequence struct { - items_data []yaml_node_item_t // The stack of sequence items. - style yaml_sequence_style_t // The sequence style. - } - - // The mapping parameters (for yaml_MAPPING_NODE). - mapping struct { - pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). - pairs_start *yaml_node_pair_t // The beginning of the stack. - pairs_end *yaml_node_pair_t // The end of the stack. - pairs_top *yaml_node_pair_t // The top of the stack. - style yaml_mapping_style_t // The mapping style. - } - - start_mark yaml_mark_t // The beginning of the node. - end_mark yaml_mark_t // The end of the node. - -} - -// The document structure. -type yaml_document_t struct { - - // The document nodes. - nodes []yaml_node_t - - // The version directive. - version_directive *yaml_version_directive_t - - // The list of tag directives. - tag_directives_data []yaml_tag_directive_t - tag_directives_start int // The beginning of the tag directives list. - tag_directives_end int // The end of the tag directives list. - - start_implicit int // Is the document start indicator implicit? - end_implicit int // Is the document end indicator implicit? - - // The start/end of the document. - start_mark, end_mark yaml_mark_t -} - -// The prototype of a read handler. -// -// The read handler is called when the parser needs to read more bytes from the -// source. The handler should write not more than size bytes to the buffer. -// The number of written bytes should be set to the size_read variable. -// -// [in,out] data A pointer to an application data specified by -// yaml_parser_set_input(). -// [out] buffer The buffer to write the data from the source. -// [in] size The size of the buffer. -// [out] size_read The actual number of bytes read from the source. -// -// On success, the handler should return 1. If the handler failed, -// the returned value should be 0. On EOF, the handler should set the -// size_read to 0 and return 1. -type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) - -// This structure holds information about a potential simple key. -type yaml_simple_key_t struct { - possible bool // Is a simple key possible? - required bool // Is a simple key required? - token_number int // The number of the token. - mark yaml_mark_t // The position mark. -} - -// The states of the parser. -type yaml_parser_state_t int - -const ( - yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota - - yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. - yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. - yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. - yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. - yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. - yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. - yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. - yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. - yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. - yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. - yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. - yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. - yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. - yaml_PARSE_END_STATE // Expect nothing. -) - -func (ps yaml_parser_state_t) String() string { - switch ps { - case yaml_PARSE_STREAM_START_STATE: - return "yaml_PARSE_STREAM_START_STATE" - case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: - return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_START_STATE: - return "yaml_PARSE_DOCUMENT_START_STATE" - case yaml_PARSE_DOCUMENT_CONTENT_STATE: - return "yaml_PARSE_DOCUMENT_CONTENT_STATE" - case yaml_PARSE_DOCUMENT_END_STATE: - return "yaml_PARSE_DOCUMENT_END_STATE" - case yaml_PARSE_BLOCK_NODE_STATE: - return "yaml_PARSE_BLOCK_NODE_STATE" - case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: - return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" - case yaml_PARSE_FLOW_NODE_STATE: - return "yaml_PARSE_FLOW_NODE_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: - return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" - case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: - return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: - return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" - case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_KEY_STATE: - return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" - case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" - case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: - return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" - case yaml_PARSE_END_STATE: - return "yaml_PARSE_END_STATE" - } - return "" -} - -// This structure holds aliases data. -type yaml_alias_data_t struct { - anchor []byte // The anchor. - index int // The node id. - mark yaml_mark_t // The anchor mark. -} - -// The parser structure. -// -// All members are internal. Manage the structure using the -// yaml_parser_ family of functions. -type yaml_parser_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - - problem string // Error description. - - // The byte about which the problem occurred. - problem_offset int - problem_value int - problem_mark yaml_mark_t - - // The error context. - context string - context_mark yaml_mark_t - - // Reader stuff - - read_handler yaml_read_handler_t // Read handler. - - input_reader io.Reader // File input data. - input []byte // String input data. - input_pos int - - eof bool // EOF flag - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - unread int // The number of unread characters in the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The input encoding. - - offset int // The offset of the current position (in bytes). - mark yaml_mark_t // The mark of the current position. - - // Scanner stuff - - stream_start_produced bool // Have we started to scan the input stream? - stream_end_produced bool // Have we reached the end of the input stream? - - flow_level int // The number of unclosed '[' and '{' indicators. - - tokens []yaml_token_t // The tokens queue. - tokens_head int // The head of the tokens queue. - tokens_parsed int // The number of tokens fetched from the queue. - token_available bool // Does the tokens queue contain a token ready for dequeueing. - - indent int // The current indentation level. - indents []int // The indentation levels stack. - - simple_key_allowed bool // May a simple key occur at the current position? - simple_keys []yaml_simple_key_t // The stack of simple keys. - - // Parser stuff - - state yaml_parser_state_t // The current parser state. - states []yaml_parser_state_t // The parser states stack. - marks []yaml_mark_t // The stack of marks. - tag_directives []yaml_tag_directive_t // The list of TAG directives. - - // Dumper stuff - - aliases []yaml_alias_data_t // The alias data. - - document *yaml_document_t // The currently parsed document. -} - -// Emitter Definitions - -// The prototype of a write handler. -// -// The write handler is called when the emitter needs to flush the accumulated -// characters to the output. The handler should write @a size bytes of the -// @a buffer to the output. -// -// @param[in,out] data A pointer to an application data specified by -// yaml_emitter_set_output(). -// @param[in] buffer The buffer with bytes to be written. -// @param[in] size The size of the buffer. -// -// @returns On success, the handler should return @c 1. If the handler failed, -// the returned value should be @c 0. -// -type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error - -type yaml_emitter_state_t int - -// The emitter states. -const ( - // Expect STREAM-START. - yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota - - yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. - yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. - yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. - yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. - yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. - yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. - yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. - yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. - yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. - yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. - yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. - yaml_EMIT_END_STATE // Expect nothing. -) - -// The emitter structure. -// -// All members are internal. Manage the structure using the @c yaml_emitter_ -// family of functions. -type yaml_emitter_t struct { - - // Error handling - - error yaml_error_type_t // Error type. - problem string // Error description. - - // Writer stuff - - write_handler yaml_write_handler_t // Write handler. - - output_buffer *[]byte // String output data. - output_writer io.Writer // File output data. - - buffer []byte // The working buffer. - buffer_pos int // The current position of the buffer. - - raw_buffer []byte // The raw buffer. - raw_buffer_pos int // The current position of the buffer. - - encoding yaml_encoding_t // The stream encoding. - - // Emitter stuff - - canonical bool // If the output is in the canonical style? - best_indent int // The number of indentation spaces. - best_width int // The preferred width of the output lines. - unicode bool // Allow unescaped non-ASCII characters? - line_break yaml_break_t // The preferred line break. - - state yaml_emitter_state_t // The current emitter state. - states []yaml_emitter_state_t // The stack of states. - - events []yaml_event_t // The event queue. - events_head int // The head of the event queue. - - indents []int // The stack of indentation levels. - - tag_directives []yaml_tag_directive_t // The list of tag directives. - - indent int // The current indentation level. - - flow_level int // The current flow level. - - root_context bool // Is it the document root context? - sequence_context bool // Is it a sequence context? - mapping_context bool // Is it a mapping context? - simple_key_context bool // Is it a simple mapping key context? - - line int // The current line. - column int // The current column. - whitespace bool // If the last character was a whitespace? - indention bool // If the last character was an indentation character (' ', '-', '?', ':')? - open_ended bool // If an explicit document end is required? - - // Anchor analysis. - anchor_data struct { - anchor []byte // The anchor value. - alias bool // Is it an alias? - } - - // Tag analysis. - tag_data struct { - handle []byte // The tag handle. - suffix []byte // The tag suffix. - } - - // Scalar analysis. - scalar_data struct { - value []byte // The scalar value. - multiline bool // Does the scalar contain line breaks? - flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? - block_plain_allowed bool // Can the scalar be expressed in the block plain style? - single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? - block_allowed bool // Can the scalar be expressed in the literal or folded styles? - style yaml_scalar_style_t // The output style. - } - - // Dumper stuff - - opened bool // If the stream was already opened? - closed bool // If the stream was already closed? - - // The information associated with the document nodes. - anchors *struct { - references int // The number of references. - anchor int // The anchor id. - serialized bool // If the node has been emitted? - } - - last_anchor_id int // The last assigned anchor id. - - document *yaml_document_t // The currently emitted document. -} diff --git a/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/vendor/gopkg.in/yaml.v2/yamlprivateh.go deleted file mode 100644 index 8110ce3c..00000000 --- a/vendor/gopkg.in/yaml.v2/yamlprivateh.go +++ /dev/null @@ -1,173 +0,0 @@ -package yaml - -const ( - // The size of the input raw buffer. - input_raw_buffer_size = 512 - - // The size of the input buffer. - // It should be possible to decode the whole raw buffer. - input_buffer_size = input_raw_buffer_size * 3 - - // The size of the output buffer. - output_buffer_size = 128 - - // The size of the output raw buffer. - // It should be possible to encode the whole output buffer. - output_raw_buffer_size = (output_buffer_size*2 + 2) - - // The size of other stacks and queues. - initial_stack_size = 16 - initial_queue_size = 16 - initial_string_size = 16 -) - -// Check if the character at the specified position is an alphabetical -// character, a digit, '_', or '-'. -func is_alpha(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' -} - -// Check if the character at the specified position is a digit. -func is_digit(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' -} - -// Get the value of a digit. -func as_digit(b []byte, i int) int { - return int(b[i]) - '0' -} - -// Check if the character at the specified position is a hex-digit. -func is_hex(b []byte, i int) bool { - return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' -} - -// Get the value of a hex-digit. -func as_hex(b []byte, i int) int { - bi := b[i] - if bi >= 'A' && bi <= 'F' { - return int(bi) - 'A' + 10 - } - if bi >= 'a' && bi <= 'f' { - return int(bi) - 'a' + 10 - } - return int(bi) - '0' -} - -// Check if the character is ASCII. -func is_ascii(b []byte, i int) bool { - return b[i] <= 0x7F -} - -// Check if the character at the start of the buffer can be printed unescaped. -func is_printable(b []byte, i int) bool { - return ((b[i] == 0x0A) || // . == #x0A - (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E - (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF - (b[i] > 0xC2 && b[i] < 0xED) || - (b[i] == 0xED && b[i+1] < 0xA0) || - (b[i] == 0xEE) || - (b[i] == 0xEF && // #xE000 <= . <= #xFFFD - !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF - !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) -} - -// Check if the character at the specified position is NUL. -func is_z(b []byte, i int) bool { - return b[i] == 0x00 -} - -// Check if the beginning of the buffer is a BOM. -func is_bom(b []byte, i int) bool { - return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF -} - -// Check if the character at the specified position is space. -func is_space(b []byte, i int) bool { - return b[i] == ' ' -} - -// Check if the character at the specified position is tab. -func is_tab(b []byte, i int) bool { - return b[i] == '\t' -} - -// Check if the character at the specified position is blank (space or tab). -func is_blank(b []byte, i int) bool { - //return is_space(b, i) || is_tab(b, i) - return b[i] == ' ' || b[i] == '\t' -} - -// Check if the character at the specified position is a line break. -func is_break(b []byte, i int) bool { - return (b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) -} - -func is_crlf(b []byte, i int) bool { - return b[i] == '\r' && b[i+1] == '\n' -} - -// Check if the character is a line break or NUL. -func is_breakz(b []byte, i int) bool { - //return is_break(b, i) || is_z(b, i) - return ( // is_break: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - // is_z: - b[i] == 0) -} - -// Check if the character is a line break, space, or NUL. -func is_spacez(b []byte, i int) bool { - //return is_space(b, i) || is_breakz(b, i) - return ( // is_space: - b[i] == ' ' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Check if the character is a line break, space, tab, or NUL. -func is_blankz(b []byte, i int) bool { - //return is_blank(b, i) || is_breakz(b, i) - return ( // is_blank: - b[i] == ' ' || b[i] == '\t' || - // is_breakz: - b[i] == '\r' || // CR (#xD) - b[i] == '\n' || // LF (#xA) - b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) - b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) - b[i] == 0) -} - -// Determine the width of the character. -func width(b byte) int { - // Don't replace these by a switch without first - // confirming that it is being inlined. - if b&0x80 == 0x00 { - return 1 - } - if b&0xE0 == 0xC0 { - return 2 - } - if b&0xF0 == 0xE0 { - return 3 - } - if b&0xF8 == 0xF0 { - return 4 - } - return 0 - -} diff --git a/vendor/vendor.json b/vendor/vendor.json deleted file mode 100644 index 6b62f63e..00000000 --- a/vendor/vendor.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "comment": "", - "ignore": "test appengine", - "package": [ - { - "checksumSHA1": "eXgjZrAsSlTnHXR2Ylo9z4p9w58=", - "path": "github.com/ClickHouse/clickhouse-go/lib/binary", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "XAfQByvVby6TKUmdPMqKrWa2OPU=", - "path": "github.com/ClickHouse/clickhouse-go/lib/cityhash102", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "TGxjsKmDjPFkoDCfF2+ZxOQq/8A=", - "path": "github.com/ClickHouse/clickhouse-go/lib/column", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "/puAW2VEcJWJ6l6bd0SpT1R5vNk=", - "path": "github.com/ClickHouse/clickhouse-go/lib/data", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "7Fmt5YlS2CQdGmxqxmfsd6HOl6E=", - "path": "github.com/ClickHouse/clickhouse-go/lib/leakypool", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "CcWlgXAc2GW+quy0WxBLD07VZBI=", - "path": "github.com/ClickHouse/clickhouse-go/lib/lz4", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "6kI3XMADIHpYaZQhl0+sew/fhXQ=", - "path": "github.com/ClickHouse/clickhouse-go/lib/protocol", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "wLUiUCIOrsEhLWHpHi0Hsr+o7rM=", - "path": "github.com/ClickHouse/clickhouse-go/lib/types", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "Ve71pmEcv0V5F4Kt2H4kSBuYbhI=", - "path": "github.com/ClickHouse/clickhouse-go/lib/writebuffer", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "0rido7hYHQtfq3UJzVT5LClLAWc=", - "path": "github.com/beorn7/perks/quantile", - "revision": "37c8de3658fcb183f997c4e13e8337516ab753e6", - "revisionTime": "2019-07-31T12:00:54Z" - }, - { - "checksumSHA1": "UjkDxX55CUoeGvu3x/uhfBzRaDo=", - "path": "github.com/cespare/xxhash/v2", - "revision": "d7df74196a9e781ede915320c11c378c1b2f3a1f", - "revisionTime": "2019-11-14T17:47:13Z" - }, - { - "checksumSHA1": "yV03NbQdXQW5nBxZ48zkFrWJZfU=", - "path": "github.com/clickhouse/clickhouse-go", - "revision": "6b1ba590788873fd6993f50f823bb90274a23ba5", - "revisionTime": "2019-11-11T18:17:50Z" - }, - { - "checksumSHA1": "pQdQAyva/nOnQXh4sQLui5rvsbQ=", - "path": "github.com/cloudflare/golz4", - "revision": "ef862a3cdc58a6f1fee4e3af3d44fbe279194cde", - "revisionTime": "2015-02-17T21:48:14Z" - }, - { - "checksumSHA1": "QDDeYsNxrtjwqUR1rcMYtSTSULA=", - "path": "github.com/denisenkom/go-mssqldb", - "revision": "cfbb681360f0a7de54ae77703318f0e60d422e00", - "revisionTime": "2019-10-01T01:33:58Z" - }, - { - "checksumSHA1": "wu8t19t2rmyrrfDfdu9v7f/+iag=", - "path": "github.com/denisenkom/go-mssqldb/internal/cp", - "revision": "cfbb681360f0a7de54ae77703318f0e60d422e00", - "revisionTime": "2019-10-01T01:33:58Z" - }, - { - "checksumSHA1": "Kvwtq+/9H6FYcVoYisDdj+XrHao=", - "path": "github.com/denisenkom/go-mssqldb/internal/decimal", - "revision": "cfbb681360f0a7de54ae77703318f0e60d422e00", - "revisionTime": "2019-10-01T01:33:58Z" - }, - { - "checksumSHA1": "zKX5r8sv52kDL+qQ/qb5OobqCSo=", - "path": "github.com/denisenkom/go-mssqldb/internal/querytext", - "revision": "cfbb681360f0a7de54ae77703318f0e60d422e00", - "revisionTime": "2019-10-01T01:33:58Z" - }, - { - "checksumSHA1": "Km4hczIJzag/NQ/ABuOg0bIe/SI=", - "path": "github.com/go-sql-driver/mysql", - "revision": "b4242bab7dc57d57fef955900943999b6fb34b67", - "revisionTime": "2019-11-14T11:57:53Z" - }, - { - "checksumSHA1": "ikmefTNVlcOywmKiyDHTXmr6LL4=", - "path": "github.com/golang-sql/civil", - "revision": "cb61b32ac6fe84d34b81730175f91965e43d0f90", - "revisionTime": "2019-07-19T16:38:53Z" - }, - { - "checksumSHA1": "HmbftipkadrLlCfzzVQ+iFHbl6g=", - "path": "github.com/golang/glog", - "revision": "23def4e6c14b4da8ac2ed8007337bc5eb5007998", - "revisionTime": "2016-01-25T20:49:56Z" - }, - { - "checksumSHA1": "Q3FteGbNvRRUMJqbYbmrcBd2DMo=", - "path": "github.com/golang/protobuf/proto", - "revision": "ed6926b37a637426117ccab59282c3839528a700", - "revisionTime": "2019-10-22T19:55:53Z" - }, - { - "checksumSHA1": "GKTFbGomCP1fhH7mFecvwKvh7bc=", - "path": "github.com/lib/pq", - "revision": "f91d3411e481ed313eeab65ebfe9076466c39d01", - "revisionTime": "2019-10-11T15:32:32Z" - }, - { - "checksumSHA1": "AU3fA8Sm33Vj9PBoRPSeYfxLRuE=", - "path": "github.com/lib/pq/oid", - "revision": "f91d3411e481ed313eeab65ebfe9076466c39d01", - "revisionTime": "2019-10-11T15:32:32Z" - }, - { - "checksumSHA1": "n0MMCrKKsQuuhv7vLsrtRUGJVA8=", - "path": "github.com/lib/pq/scram", - "revision": "f91d3411e481ed313eeab65ebfe9076466c39d01", - "revisionTime": "2019-10-11T15:32:32Z" - }, - { - "checksumSHA1": "bKMZjd2wPw13VwoE7mBeSv5djFA=", - "path": "github.com/matttproud/golang_protobuf_extensions/pbutil", - "revision": "c182affec369e30f25d3eb8cd8a478dee585ae7d", - "revisionTime": "2018-12-31T17:19:20Z" - }, - { - "checksumSHA1": "HquvlxEmpILGOdePiJzqL/zMvUY=", - "path": "github.com/prometheus/client_golang/prometheus", - "revision": "333f01cef0d61f9ef05ada3d94e00e69c8d5cdda", - "revisionTime": "2019-10-24T23:19:15Z" - }, - { - "checksumSHA1": "UBqhkyjCz47+S19MVTigxJ2VjVQ=", - "path": "github.com/prometheus/client_golang/prometheus/internal", - "revision": "333f01cef0d61f9ef05ada3d94e00e69c8d5cdda", - "revisionTime": "2019-10-24T23:19:15Z" - }, - { - "checksumSHA1": "UcahVbxaRZ35Wh58lM9AWEbUEts=", - "path": "github.com/prometheus/client_golang/prometheus/promhttp", - "revision": "333f01cef0d61f9ef05ada3d94e00e69c8d5cdda", - "revisionTime": "2019-10-24T23:19:15Z" - }, - { - "checksumSHA1": "V8xkqgmP66sq2ZW4QO5wi9a4oZE=", - "path": "github.com/prometheus/client_model/go", - "revision": "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016", - "revisionTime": "2019-08-12T15:41:04Z" - }, - { - "checksumSHA1": "vA545Z9FkjGvIHBTAKQOE0nap/k=", - "path": "github.com/prometheus/common/expfmt", - "revision": "b5fe7d854c42dc7842e48d1ca58f60feae09d77b", - "revisionTime": "2019-10-17T12:25:55Z" - }, - { - "checksumSHA1": "1Mhfofk+wGZ94M0+Bd98K8imPD4=", - "path": "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg", - "revision": "b5fe7d854c42dc7842e48d1ca58f60feae09d77b", - "revisionTime": "2019-10-17T12:25:55Z" - }, - { - "checksumSHA1": "ccmMs+h9Jo8kE7izqsUkWShD4d0=", - "path": "github.com/prometheus/common/model", - "revision": "b5fe7d854c42dc7842e48d1ca58f60feae09d77b", - "revisionTime": "2019-10-17T12:25:55Z" - }, - { - "checksumSHA1": "91KYK0SpvkaMJJA2+BcxbVnyRO0=", - "path": "github.com/prometheus/common/version", - "revision": "b5fe7d854c42dc7842e48d1ca58f60feae09d77b", - "revisionTime": "2019-10-17T12:25:55Z" - }, - { - "checksumSHA1": "qF73UEQ4W29Yir+nIV+ithFTteo=", - "path": "github.com/prometheus/procfs", - "revision": "3a8122e6a950185a58d8d6a909450a575602becd", - "revisionTime": "2019-11-14T08:59:18Z" - }, - { - "checksumSHA1": "ax1TLBC8m/zLs8u//UHHdFf80q4=", - "path": "github.com/prometheus/procfs/internal/fs", - "revision": "3a8122e6a950185a58d8d6a909450a575602becd", - "revisionTime": "2019-11-14T08:59:18Z" - }, - { - "checksumSHA1": "sxRjp2SwHqonjR+sHIEXCkfBglI=", - "path": "github.com/prometheus/procfs/internal/util", - "revision": "3a8122e6a950185a58d8d6a909450a575602becd", - "revisionTime": "2019-11-14T08:59:18Z" - }, - { - "checksumSHA1": "UDvj5huw3BaGehfVRCB1UGQAtP4=", - "path": "golang.org/x/crypto/md4", - "revision": "497ca9f6d64f9bb73048a960b4098309edcd2205", - "revisionTime": "2019-11-15T22:31:24Z" - }, - { - "checksumSHA1": "oaO93IKDzMBxeE73t4/qgDvqls8=", - "path": "golang.org/x/sys/windows", - "revision": "e882bf8e40c23f260d489ef820e5e8eead5e76e3", - "revisionTime": "2019-11-18T08:15:13Z" - }, - { - "checksumSHA1": "pz6JANNVJyfyaXBMD7vam/q4qaQ=", - "path": "gopkg.in/yaml.v2", - "revision": "a95acef3719e5e9f7614cc90a119dee4699291eb", - "revisionTime": "2019-11-19T11:51:43Z" - } - ], - "rootPath": "github.com/free/sql_exporter" -}